БИЗНЕС-ПРОБЛЕМА:

Нет ничего более утешительного, чем приветствовать вас любимым напитком, когда вы входите в дверь углового кафе. В то время как вдумчивый бариста знает, что вы берете макиато каждую среду утром в 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. Мы можем попробовать разные входные единицы, слои, показатели отсева, пакетную нормализацию в модели глубокого обучения.

ссылка в профиле

Полный код можно найти здесь

6.Ссылки:

  1. https://www.aaai.org/ocs/index.php/ICWSM/ICWSM16/paper/viewPaper/13047
  2. https://www.appliedaicourse.com/
  3. https://www.kaggle.com/c/talkingdata-mobile-user-demographics/discussion/23424