Вопрос или проблема
Я пытаюсь построить простую регрессионную модель для начала, но моя переменная Y сильно смещена вправо. Моя Y представляет собой количество просмотров в день для веб-страницы, и все значения выше 0. У меня есть 4 крупных выброса со значениями выше 1000, но все еще много значений выше 50, которые искажают распределение. Я не совсем уверен, как подойти к этому; стоит ли удалить все выбросы (много данных), провести нормализацию и сначала использовать линейную регрессию? Или мне не стоит нормализовать, а использовать какую-то другую регрессию, например, Тобита для смещенных данных (я не видел, чтобы это часто использовали в машинном обучении, но я новичок). Я немного неохотно удаляю данные с большим количеством просмотров в день, потому что они могут содержать полезную информацию… Буду благодарен за любую помощь, я прикладываю гистограмму, на которой я уже удалил много данных с правой стороны, потому что в противном случае действительно нельзя увидеть распределение. Моя предсказательная переменная будет текстом (вероятно, обработанным с помощью BERT embeddings).
ИЗМЕНЕНИЕ:
Я также прикладываю гистограмму, которую я получил после удаления большого объема данных справа и использования квадратного преобразования. Она все еще довольно смещена, так что я думаю, что один из нелинейных моделей — это лучший вариант:
no_outliers_df = data[data['views_per_day'] < 50]
plt.hist(np.sqrt(no_outliers_df['views_per_day']))
plt.show()
Существует несколько способов обработки искаженных данных в регрессионном анализе:
Логарифмическое преобразование: Это распространенный метод для обработки правосторонне смещенных данных. Оно может помочь нормализовать данные и сократить влияние выбросов. В вашем случае вы можете применить логарифмическое преобразование к вашей переменной Y (количество просмотров в день). Однако имейте в виду, что интерпретация коэффициентов будет в терминах процентного изменения, а не абсолютного.
Преобразование квадратного или кубического корня: Это другие типы преобразований, которые могут помочь снизить смещение. Преобразование квадратного корня особенно полезно при работе с подсчетами, такими как ваше количество просмотров в день.
Преобразование Бокса-Кокса: Это более общая форма преобразования, которая включает логарифмические, квадратные корни и обратные преобразования как специальные случаи. Оно находит лучшее степенное преобразование данных, которое снижает смещение до целевого значения, обычно нуля для нормализации.
Нелинейные модели: Если связь между вашими предикторами и откликов не линейная, вы можете рассмотреть нелинейные регрессионные модели или другие модели машинного обучения, которые могут работать с нелинейностью.
Квантильная регрессия: Этот тип регрессии не делает никаких предположений о распределении ошибки, так что это может быть хорошим выбором при работе с искаженными данными. Он предсказывает медиану (или другие квантили) отклика, а не среднее.
Робастная регрессия: Этот тип регрессии менее чувствителен к выбросам в данных. Он использует другую функцию потерь (такую как потеря Хюбера или двухквадратная потеря Тьюки), которая придает меньший вес выбросам.
Модель Тобита: Это тип регрессионной модели, используемый, когда переменная отклика цензурирована, т.е. у нее есть нижний или верхний предел. В вашем случае, поскольку количество просмотров в день не может быть меньше нуля, модель Тобита может быть уместной. Однако модели Тобита чаще используются в эконометрике, чем в машинном обучении.
Что касается работы с выбросами, важно понять, почему они присутствуют в ваших данных. Если они вызваны ошибками или аномалиями, возможно, целесообразно удалить их. Однако, если они представляют собой законные наблюдения, они могут содержать ценную информацию и не должны быть удалены. В этом случае использование метода, устойчивого к выбросам, такого как робастная регрессия или логарифмическое преобразование, может быть лучшим подходом.
Наконец, при работе с текстовыми данными вы можете рассмотреть возможность использования метода, который может обрабатывать высокоразмерные разряженные данные, такого как регуляризованная регрессия (Lasso или Ridge) или метод на основе деревьев (Случайный лес или Градиентный бустинг). Эти методы также могут обрабатывать нелинейность и взаимодействия между предикторами, что может быть полезно при работе с текстовыми данными.
Немного смещения допустимо. В реальном мире данные не всегда нормально распределены. Все, что вы можете сделать, это проверить наличие выбросов, проведя тест на квартили или найдя z-оценку. Выберите диапазон z-оценок и посмотрите, что вы можете достичь. Кроме того, эффективность модели может зависеть не только от одной функции, но и от других, поэтому обязательно проверьте распределение других функций из набора данных. Как только у вас будет представление о распределении данных всех функций, вы можете решать, хотите ли вы стандартизировать или нормализовать ваши данные.
Ответ или решение
Конечно! Давайте рассмотрим, как подойти к задаче регрессии, когда целевая переменная (Y) имеет значительное правостороннее смещение, как в вашем случае с числом просмотров веб-страниц в день.
1. Анализ данных
Перед тем как приступить к моделированию, важно внимательно проанализировать данные и понять их распределение. Визуализация данных с помощью гистограмм, коробчатых диаграмм и других графиков помогает выявить наличие выбросов и степень смещения.
2. Работа с выбросами
Выбросы могут значительно повлиять на результаты модели. Прежде чем принимать решение о том, как их обработать, нам нужно понять, являются ли они отражением реальных явлений (например, вирусного контента) или результатом ошибок сбора данных. Определите, насколько выбросы влияют на распределение вашей Y и, в случае необходимости, рассмотрите:
- Удаление выбросов: если они не представляют собой ценные наблюдения.
- Использование методов, устойчивых к выбросам: таких как робастная регрессия, которая менее восприимчива к выбросам в данных.
3. Преобразование данных
Одним из популярных способов обработки правостороннего смещения является применение преобразований к целевой переменной:
-
Логарифмическое преобразование: может помочь нормализовать распределение, однако интерпретация коэффициентов станет в терминах процентных изменений.
-
Квадратное или Кубическое преобразование: особенно полезны для счетных данных, таких как числа просмотров в день.
-
Преобразование Бокса-Кокса: универсальный метод, который находит оптимальную степень преобразования для минимизации смещения.
4. Выбор модели
При работе со смещенными данными стоит рассмотреть несколько моделей:
-
Линейная регрессия: это хороший начальный подход, особенно если применены соответствующие преобразования.
-
Нелинейные модели: такие как деревья решений или ансамблевые методы (например, градиентный бустинг), могут лучше справляться с нелинейными зависимостями между признаками и целевой переменной.
-
Квантильная регрессия: предсказывает медиану (или другие квантильные значения) зависимой переменной, что делает ее подходящей для смещенных данных.
-
Тобит-модель: если разделение по границе (например, число просмотров не может быть отрицательным) является актуальным, эта модель может быть рациональной.
5. Нормализация и стандартизация
Нормализация или стандартизация может быть полезна, если ваши предикторы имеют разные масштабы. Это особенно важно, если вы используете методы, чувствительные к масштабу данных, такие как Lasso или Ridge регрессии.
6. Переменные из текста
В связи с вашей задачей, где предикторы будут текстовыми данными, учитывайте использование методов, таких как BERT, для представления текстов в виде числовых векторов. Это может дать лучшую основу для дальнейшего анализа.
Заключение
В реальных данных всегда можно столкнуться со смещением и выбросами. Убедитесь, что понимание данных и соответствующие действия помогут вам выбрать правильный подход, включая выбор и трансформацию вашей целевой переменной. Рекомендуется итеративно проверять и оценивать разные модели и преобразования, регулируя их в зависимости от результатов.
Если у вас есть дополнительные вопросы или вы хотите обсудить определенные аспекты более подробно, не стесняйтесь обращаться!