БИЗНЕС-ПРОБЛЕМА:
Нет ничего более утешительного, чем приветствовать вас любимым напитком, когда вы входите в дверь углового кафе. В то время как вдумчивый бариста знает, что вы берете макиато каждую среду утром в 8:15, в цифровом пространстве вашим любимым брендам гораздо сложнее персонализировать ваш опыт.
Talking Data, крупнейшая сторонняя платформа мобильных данных в Китае, понимает, что повседневный выбор и поведение рисуют картину того, кто мы есть и что мы ценим. В настоящее время Talking Data стремится использовать поведенческие данные с более чем 70% из 500 миллионов мобильных устройств, ежедневно используемых в Китае, чтобы помочь своим клиентам лучше понимать свою аудиторию и взаимодействовать с ней.
Таким образом, бизнес-задача состоит в том, чтобы предсказать демографические характеристики пользователей, используя их использование приложений, географическое положение и свойства устройств.
Итак, этапы решения этой проблемы таковы:
1. Источник данных
2. Исследовательский анализ данных
3. Моделирование
4. Результаты
5. Будущая работа
6. Ссылки
1.ДАННЫЕ:
Данные можно скачать с kaggle
Данные состоят из 7 CSV-файлов с различной информацией, относящейся к идентификаторам устройств, моделям устройств, приложениям, событиям и категории, к которой принадлежит приложение.
1.gender age train: этот файл содержит идентификатор устройства и их демографические данные, принадлежащие 75 тысячам пользователей. Мы будем использовать эти данные для обучения моделей.
2.gender age test: этот файл содержит идентификаторы устройств, которые мы должны предсказать.
3. Модель устройства марки телефона. Этот файл содержит информацию об устройстве, такую как марка и модель.
4. Метки приложений: этот файл содержит информацию, относящуюся к приложению и соответствующей категории, к которой оно принадлежит.
5.Events: этот файл содержит информацию, связанную с событиями, основанную на использовании приложения, широте и долготе события, а также отметке времени события.
6. Категория метки: этот файл содержит идентификатор метки и соответствующую ему категорию.
ПОКАЗАТЕЛЬ ЭФФЕКТИВНОСТИ:
Данные относятся к 12 различным классам в зависимости от возраста и пола. Мы должны предсказать вероятность принадлежности идентификатора устройства к каждому классу. Так как это многоклассовая классификация, и каждый идентификатор устройства имеет только один истинный класс, мы должны уменьшить ошибка его принадлежности к другим классам. Поэтому мы используем многоклассовые потери в журнале в качестве метрики.
2. АНАЛИЗ ИССЛЕДОВАТЕЛЬСКИХ ДАННЫХ:
Исследовательский анализ данных относится к базовому анализу данных, чтобы найти какие-либо закономерности в данных. Этот шаг помогает нам определить, какие функции полезны для прогнозирования демографических данных пользователя.
Поскольку существуют различные файлы csv, мы объединяем их, чтобы получить окончательную матрицу данных. Мы объединяем поезд пола и возраста и тестируем модель устройства марки телефона.
Из этой круговой диаграммы мы узнали, что около 2/3 данных принадлежат пользователям-мужчинам и 1/3 — пользователям-женщинам.
Нам нужно количество пользователей, принадлежащих к каждой группе.
. Из этого мы видим, что пользователи-мужчины больше, чем пользователи-женщины.
Отсюда делаем вывод, что только на 20 брендов приходится более 90% пользователей.
Из файла событий приложения мы хотим проверить, сколько приложений активно.
Из этого графика мы знаем, что большинство приложений неактивны.
Мы объединяем полосы поезда с файлом событий на идентификаторе устройства, а затем с событиями приложения. Окончательная матрица данных выглядит так, и у нас есть много пропущенных значений. Мы заполнили эти пропущенные значения нулями.
мы построили блочную диаграмму, чтобы проверить, есть ли закономерность в использовании по дням, часам, возрасту, полу и группе.
Из приведенных выше графиков мы не делаем никаких выводов, поскольку большая часть данных перекрывается.
3.МОДЕЛИРОВАНИЕ:
Из данных, которые мы получили путем слияния и кодирования меток модели устройства, марки и категории этикетки, а также применили группировку по идентификатору устройства.
На полученных нами данных мы случайным образом разделили данные и применили к ним линейный svc.
После настройки гиперпараметров для тестовых данных было предсказано лучшее значение, и после отправки в kaggle он получил оценку 2,42.
Все идентификаторы устройств не содержат информацию о событиях приложений. Поэтому мы разделяем их на основе данных с событиями и без них. Поскольку у нас есть два типа данных, мы прогнозируем их отдельно и объединяем.
Для устройств без событий:
Для устройств без информации о событиях мы используем только характеристики бренда и модели. Мы берем данные поезда и тестовые данные без событий и находим разреженную матрицу для марки и модели устройства.
Мы обучаем модели, используя полные данные поезда, но прогнозируем только для устройств без информации о событиях.
Мы объединяем эти характеристики бренда и модели csr, разделяем данные и применяем к ним логистическую регрессию.
После настройки гиперпараметров и получения наилучшего значения c мы получили потери при обучении и проверке, равные 2,36 и 2,38. Мы попробовали модель нейронной сети, поскольку оценка для логистической регрессии недостаточно хороша.
Мы взяли архитектуру модели со страницы обсуждения kaggle. Это последовательная модель с плотным слоем, за которым следует параметрический Relu и слой пакетной нормализации.
Входная форма здесь относится к форме функций, которые мы получили, объединив функции csr бренда и модели.
model_list содержит 5 моделей, обученных на разных версиях разделения данных x_tr с использованием разных случайных начальных значений. Я использовал каждую модель в model_list и сделал прогноз вероятностей на тестовых данных (test_1) и взял среднее значение всех прогнозов.
Мы попробовали другую архитектуру с плотным слоем и параметрическим Relu и отсевом. Мы использовали равномерную и нулевую инициализацию и активацию soft max и оптимизатор Adagrad.
Здесь также мы взяли 5 моделей, обученных на разных версиях данных поезда, разделенных с использованием разных случайных начальных чисел, и сделали прогнозы, используя все модели, и взяли среднее значение.
УСТРОЙСТВА С СОБЫТИЯМИ:
На устройствах с информацией о событиях мы использовали одно горячее кодирование марки устройства, модели, приложений устройства, меток и кластерных функций. широта и долгота и сложены все функции.
Затем мы применили 2 модели глубокого обучения со слоями отсева, плотными и параметрическими Relu, и мы берем список случайных семян и берем среднее значение во время тестирования. Мы использовали равномерную и нулевую инициализацию и оптимизатор Adagrad в первой модели и adadelta в модели 2.
Здесь также мы взяли 5 моделей для обеих архитектур, обученных на разных версиях данных поезда, разделенных с использованием разных случайных начальных чисел, и сделали прогнозы, используя все модели, и взяли среднее значение.
Мы получили потери при обучении и проверке 1,54 и 1,90 для модели 1 и 1,7068 и 1,9012 для модели 2.
Мы применили xg-boost и логистическую регрессию, но не получили лучших результатов.
Я использовал c = 0,02 после настройки гиперпараметров и калиброванного классификатора для обучения модели и прогнозирования вероятностей.
АНСАМБЛЬ НЕЙРОСЕТЕВЫХ МОДЕЛЕЙ:
Таким образом, при отправке в kaggle мы использовали в среднем 2 модели на устройствах с событиями и только модель 1 для устройств без событий и оценку 2,23, которая входит в 10% лучших в таблице лидеров.
4.РЕЗУЛЬТАТЫ:
Окончательные результаты различных моделей показаны ниже:
5.БУДУЩАЯ РАБОТА:
1. Мы можем попробовать новые функции, такие как tfidf векторизация кластеризованных функций и часовой интервал.
2. Мы можем попробовать разные веса вместо того, чтобы брать среднее из двух моделей.
3. Мы можем попробовать разные входные единицы, слои, показатели отсева, пакетную нормализацию в модели глубокого обучения.
ссылка в профиле
Полный код можно найти здесь