Компании всегда стараются придумывать новые идеи и инновации, чтобы сделать свой продукт более удобным и улучшить пользовательский опыт, а также пытаются добиться максимального и приятного опыта для клиентов, использующих их продукты. Данные о том, что нужно покупателю, через что он проходит ежедневно, что нравится и не нравится покупателю, местоположение, использование, требования, подобные этим, есть N вещей, которые они рассмотрят на рынке, чтобы более тесно связать их клиент. Подобный пример я добавляю в этот блог.

Бизнес-проблема:

Talking Data — крупнейшая в Китае сторонняя платформа для мобильных данных, которая понимает, что каждый день приходится делать выбор. Это независимая платформа больших данных, ориентированная на мобильный Интернет. Это крупнейшая в Китае сторонняя мобильная платформа передачи данных. Данные, которые они получили, были собраны сторонним SDK, приложения которого обычно используются в их программном обеспечении.

Он попытался получить поведенческие данные с 70% из 500 миллионов мобильных устройств, которые активно используются в Китае, чтобы они могли помочь своим клиентам лучше понимать свою аудиторию и взаимодействовать с ней.

Задача kaggle была выпущена для прогнозирования демографических данных пользователя, таких как пол и возраст. поэтому они поставили перед собой задачу построить модель для прогнозирования пользователей и их демографических характеристик на основе использования ими приложений, географического положения и мобильных свойств.

Эта классификация является первым шагом к адаптации рекламных кампаний третьих сторон на основе использования мобильных устройств в соответствии с их возрастом и полом мобильного пользователя. Итак, у нас есть выборка населения.

изначально это было предложено для населения Китая, но его можно использовать во всем мире в качестве дальнейших исследований, которые показали, что другие операторы мобильной связи в других странах имеют доступ к таким же данным.

Источник данных:

Данные взяты со страницы Kaggle, все они в формате csv и могут быть легко загружены с веб-сайта.

Существующие подходы:

Существующие предназначены для преобразования данных в двоичную форму набора слов или в одну форму горячего кодирования. Такие функции, как марка телефона и модель устройства, преобразуются в одну форму с горячим кодированием, другие функции, такие как установленные приложения и метки для приложений, преобразуются в двоичную форму набора слов и вводятся в модель.

Мои улучшения

Из EDA я увидел некоторые интересные особенности.

  1. Местоположение, т.е. широта и долгота конкретного устройства/человека
  2. Количество событий
  3. Конкретный час, в течение которого человек использует свой телефон.

Давайте используем эти функции для прогнозирования демографии.

Данные о событиях здесь доступны только для 30% всех устройств. Так как данные сильно расходятся.

Итак, я позволяю разделить все данные на события и данные без событий и применить к ним другую модель, и это сработало хорошо.

Для одной из моделей я использовал условную вероятность для прогнозирования демографии.

Сначала мы пытаемся предсказать пол человека, а затем, используя пол в качестве дополнительного признака, предсказываем возрастную группу.

Чтобы определить, для какой демографической группы принадлежит ли использование, я использовал концепцию условной вероятности.

P(Возрастная_группа=X,пол=Y)=p(возраст=X |пол=Y)*p(пол=Y).

Я даже пытался применять ансамблевые методы, такие как штабелирование и бэггинг, в качестве разных моделей.

Источник данных:

мы можем скачать весь набор данных с Kaggle

https://www.kaggle.com/competitions/talkingdata-mobile-user-demographics/data

Исследовательский анализ данных

мы дали два файла гендер_возраст_тест.csv и гендер_возраст_поезд.csv.

Эти файлы содержат идентификатор устройства пользователя телефона.

Для файла поезда у нас есть пол, возраст и демографические данные.

Групповая переменная имеет 12 значений ['M32-38', 'M29-31', 'F24-26', 'F33-42', 'F27-28', 'M39+', 'M23-26', 'M27- 28", "M22-", "F43+", "F23-", "F29–32"].

Что касается телефона, у нас есть файл, содержащий марку и модель устройства.

Я решил удалить эти значения из фрейма данных телефона.

Файл событий содержит идентификатор события. Он включает в себя отметку времени, когда происходит событие, и местоположение пользователя в соответствии с широтой и долготой, когда он использует свой телефон.

Файл appevents содержит все приложения, которые установлены или активны при возникновении события.

Файл applabels содержит категорию приложения. Чтобы создать функции из этих данных, мы должны объединить эти файлы и выполнить преобразование функций.

Поскольку существуют различные файлы csv, мы объединяем их, чтобы получить окончательную матрицу данных. Мы объединяем поезд пола и возраста и тестируем модель устройства марки телефона.

Наблюдение: около 2/3 данных принадлежат пользователям-мужчинам и 1/3 — пользователям-женщинам.

Из этой круговой диаграммы мы узнали, что около 2/3 данных принадлежат пользователям-мужчинам и 1/3 — пользователям-женщинам.

Нам нужно количество пользователей, принадлежащих к каждой группе.

Наблюдение. Исходя из этого, мы видим, что пользователи-мужчины чаще, чем пользователи-женщины.

Наблюдение. Из этого мы делаем вывод, что только на 20 брендов приходится более 90 % пользователей.

Из файла событий приложения мы хотим проверить, сколько приложений активно.

неактивные приложения 0 19740071 активные приложения 1 12732996

Наблюдение. Из этого графика мы знаем, что большинство приложений неактивны.

Мы объединяем полосы поезда с файлом событий на идентификаторе устройства, а затем с событиями приложения. Окончательная матрица данных выглядит так, и у нас есть много пропущенных значений. Мы заполнили эти пропущенные значения нулями.

мы построили блочную диаграмму, чтобы проверить, есть ли закономерность в использовании по дням, часам, возрасту, полу и группе.

Наблюдение: распределение женщин в каждой группе также несбалансировано

ГРАФИК ОТ ЧАСА СОБЫТИЯ И ВОЗРАСТА ПОЛЬЗОВАТЕЛЯ

ГРАФИК МЕЖДУ ЧАСОМ МЕРОПРИЯТИЯ И ГРУППОЙ

Наблюдение: в зависимости от дня распределение самцов и самок почти одинаково в течение большинства дней.

СХЕМА МЕЖДУ ДНЕМ МЕРОПРИЯТИЯ И ГРУППОЙ

Наблюдение: разница в зависимости от дня недели невелика, но мы можем попробовать эту функцию.

ГРАФИК МЕЖДУ ПОЛОМ И ЧАСОМ СОБЫТИЯ

Наблюдение: есть значительные изменения для разных групп, так что это полезная функция.

Решение для первого разреза

После проведения исследовательского анализа данных я понял, что марка телефона, модель устройства, идентификатор приложения и метки приложения являются наиболее важными функциями, поэтому я преобразовал эти функции для ввода в модель, я преобразовал марку телефона и модель устройства в форму с горячим кодированием и хранил их в формате разреженной матрицы.

Функция идентификатора приложения и ярлыков приложений была преобразована в формат набора слов путем слияния различных таблиц и поиска всех приложений и ярлыков, связанных с одним устройством, а затем преобразования в пакет слов и сохранения их в формате разреженной матрицы, я подключил их функции в модель логистической регрессии и выполнили настройку гиперпараметров.

Из данных, которые мы получили путем слияния и кодирования меток модели устройства, марки и категории этикетки, а также применили группировку по идентификатору устройства.

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

Здесь также мы взяли 5 моделей для обеих архитектур, обученных на разных версиях данных поезда, разделенных с использованием разных случайных начальных чисел, и сделали прогнозы, используя все модели, и взяли среднее значение.

Мы получили потери при обучении и проверке 1,54 и 1,90 для модели 1 и 1,7068 и 1,9012 для модели 2.

Мы применили xg-boost и логистическую регрессию, но не получили лучших результатов.

Я использовал c = 0,02 после настройки гиперпараметров и калиброванного классификатора для обучения модели и прогнозирования вероятностей.

Модели Пояснение

а).Логистическая регрессия

Я использовал основные функции бренда телефона, модели устройства, идентификаторов приложений, ярлыков приложений. попробовал настройку гиперпараметров с помощью GridsearchCV, чтобы найти оптимальные параметры

б). Дерево решений

Результаты несколько хороши по сравнению с логистической регрессией, я попытался настроить гиперпараметры max_depth и min_sample_split и использовал те же функции, что и в логистической регрессии.

в). Xgboost

Для xgboost использовались три типа функций:

  1. подсчитайте, как обычно каждая категория отображается в списке приложений (все приложения на устройстве)
  2. количество появления приложения в списке событий
  3. подсчитайте, в какой час и в какой день недели произошли события. А также медианная широта и долгота событий и кодировка меток для марки телефона и модели устройства.

Пытался применить настройку гиперпараметров к таким параметрам, как max_depth, min_child_weight и количество деревьев. Я использовал условную вероятность, в которой я сначала предсказал пол, а затем использовал этот пол в качестве дополнительной функции для предсказания возрастной группы.

Пробовал обучать разные модели устройства с событиями и без событий. Поскольку из данных только 30 процентов устройств имели события для остальных устройств, я использовал для прогнозирования только марку телефона и модель устройства. попытался применить перекрестную проверку K Fold для обучения моих моделей, а также упаковал их, взяв средний прогноз 5 моделей для каждого сгиба.

Керас NN Модель 1

Экспериментировал с разными моделями keras и изначально применял базовые функции, такие как марка телефона, метка приложения, идентификатор приложения. Я использовал мешки для обучения своей модели, и это улучшило мой результат. Обучено на 18 эпохах и 175 партиях на эпоху

Keras NN, модель 2

Экспериментировал с разными моделями устройств с событиями и без событий, используя те же функции для устройств с событиями, что и в предыдущей модели, и только марку телефона и модель устройства для устройств без событий.

Обучение проводилось на 80 эпохах для данных о событиях и на 30 эпохах для данных без событий.

Keras NN, модель 3

В этой модели обучено более 200 эпох, но выбрано только 5 пакетов данных, архитектура такая же, как и в более ранних моделях.

Модель ансамбля

Пытался применять ансамблевые модели, такие как стекирование, использовал метод метаобучения для стекирования. Я использовал прогнозы на наборе поездов для разных моделей. Сначала сделал xgboost и keras, а затем применил логистическую регрессию поверх него. Использовал обученный классификатор на тестовом наборе данных для всех разных моделей, просто объединив их, и попытался получить для него прогноз.

ПОЛУЧЕННЫЕ РЕЗУЛЬТАТЫ:

Окончательные результаты различных моделей показаны ниже:

Будущая работа

Использование большего количества моделей для сборки может дать лучший результат, чем то, что мы имеем сейчас. добавление более релевантных функций и применение ансамблевых методов может повысить оценку.

Ссылки



https://nonsensical.in/datascience/talking-data-kaggle/

https://www.kaggle.com/code/kylingu/talkingdata-learning

Гитхаб



LinkedIn

https://www.linkedin.com/in/vamshi-pallapu-851517165/