Я проходил решение конкурса цен на жилье на Kaggle ( ядро Human Analog по ценам на жилье : методы предварительной регрессии ) и наткнулся на эту часть:
# Transform the skewed numeric features by taking log(feature + 1).
# This will make the features more normal.
from scipy.stats import skew
skewed = train_df_munged[numeric_features].apply(lambda x: skew(x.dropna().astype(float)))
skewed = skewed[skewed > 0.75]
skewed = skewed.index
train_df_munged[skewed] = np.log1p(train_df_munged[skewed])
test_df_munged[skewed] = np.log1p(test_df_munged[skewed])
Я не уверен в том, что нужно для преобразования искаженного распределения в нормальное распределение. Пожалуйста, может кто-нибудь объяснить подробно:
- Почему это делается здесь? или как это полезно?
- Чем это отличается от масштабирования объектов?
- Является ли это необходимым шагом для разработки функций? Что может произойти, если я пропущу этот шаг?
regression
feature-extraction
feature-engineering
kaggle
feature-scaling
Абхиджай Гилдял
источник
источник
Ответы:
Возможно, вы захотите интерпретировать ваши коэффициенты. То есть, чтобы можно было сказать что-то вроде «если я увеличу свою переменную на 1, то в среднем и при прочих равных увеличится на ».Икс1 Y β1
Чтобы ваши коэффициенты были интерпретируемыми, линейная регрессия предполагает множество вещей.
Одна из этих вещей не мультиколлинеарность. То есть ваши переменные не должны коррелироваться друг с другом.Икс
Другое - гомосцедастичность . Ошибки ваши моделей фиксации должны иметь ту же дисперсию, то есть вы должны гарантировать , что линейная регрессия не делают небольшие ошибки при малых значениях и больших ошибках для более высоких значений . Другими словами, разница между тем, что вы предсказываете и истинными значениями должна быть постоянной. Вы можете убедиться в этом, убедившись, что следует распределению Гаусса. (Доказательство очень математическое.)Икс Икс Y^ Y Y
В зависимости от ваших данных, вы можете сделать это гауссовским. Типичные преобразования принимают обратное, логарифм или квадратные корни. Конечно, существует много других, все зависит от ваших данных. Вы должны посмотреть на свои данные, а затем выполнить гистограмму или запустить тест на нормальность , такой как тест Шапиро-Уилка.
Это все методы для построения объективной оценки . Я не думаю, что это имеет какое-либо отношение к конвергенции, как говорили другие (иногда вы также можете захотеть нормализовать свои данные, но это другая тема).
Следование предположениям о линейной регрессии важно, если вы хотите либо интерпретировать коэффициенты, либо если вы хотите использовать статистические тесты в вашей модели. В противном случае забудьте об этом.
Применение логарифм или нормализации данных, также имеет важное значение , так как алгоритмы оптимизации линейной регрессии обычно минимизации , так что если у вас есть какие - то большие выбросы, ваша оценка будет очень обеспокоена минимизируя те , поскольку оно касается квадратичной ошибки, а не абсолютной ошибки. Нормализация данных имеет важное значение в тех случае , и именно поэтому scikit учиться имеет опцию в линейной регрессии конструктора.∥ у^- у∥2 Y
normalize
источник
Перекошенные данные здесь нормализуются путем добавления единицы (одна добавлена так, что нули преобразуются в единицу, так как log 0 не определено) и получения натурального log. Данные могут быть почти нормализованы с использованием методов преобразования, таких как получение квадратного корня или обратного или логарифмирования. Теперь, почему это требуется. На самом деле многие алгоритмы в данных предполагают, что наука о данных нормальна, и рассчитывают различные характеристики, исходя из этого. Таким образом, чем больше данные близки к нормальным, тем больше они соответствуют предположению.
источник
Потому что наука о данных - это просто статистика в конце дня, и одним из ключевых предположений статистики является Центральная предельная теорема . Таким образом, этот шаг выполняется, потому что на каком-то последующем шаге используются методы статистики, которые полагаются на него.
источник