Вопрос или проблема
Мой набор данных содержит следующие две характеристики: “длительность фильма” (минуты) и “длительность телешоу” (сезоны). Если определенный пример имеет тип “фильм”, его длительность будет отображаться в характеристике “длительность фильма”, в то время как характеристика “длительность телешоу” будет равна нулю.
Теперь длительность фильмов распределена нормально, а длительность телешоу имеет экспоненциальное распределение. Для их масштабирования я использовал sklearn.preprocessing.MinMaxScaler для экспоненциального распределения “длительности телешоу” и sklearn.preprocessing.StandardScaler для нормально распределенной характеристики “длительность фильма”. Проблема заключается в том, что при применении обоих масштабаторов нули в характеристике “длительность фильма” получают ненулевое значение (что не происходит с характеристикой “длительность телешоу”). Таким образом, телешоу содержат значения в обеих характеристиках, в то время как фильмы имеют значения только в характеристике “длительность фильма”.
Пример: это-
'тип' 'длительность фильма' 'длительность телешоу'
фильм 103 0
телешоу 0 1
Становится таким-
'тип' 'длительность фильма' 'длительность телешоу'
фильм 0.6331993973 0
телешоу -1.333985768 0.0588235294
Во-первых, мне интересно, является ли это фактической проблемой (потому что это может создать ложную зависимость между характеристиками). Мне пришла идея использовать только ненулевые значения распределения для стандартного скалера, а затем вручную вставить нули обратно, но это также может создать ложную зависимость, так как результирующее распределение будет между -1 и 1.
Можете ли вы подумать о другом решении?
Примечание: Это часть алгоритма без учителя. (вероятно, k-средние), который будет использоваться для создания характеристик для классификации с учителем (нейронная сеть).
Есть несколько замечаний:
Ложные зависимости
Я не уверен, какие ложные зависимости вы ожидаете увидеть. Такая ложная зависимость каким-то образом должна была бы рассматривать 0 по-другому, чем другие значения.
Имейте в виду, что для многих алгоритмов значение характеристики 0 является просто другим значением. Это определенно так для двух упомянутых вами алгоритмов (k-средние и нейронные сети).
Влияние на нейронные сети и k-средние
И нейронные сети, и k-средние основаны на мерах расстояния. Чтобы понять влияние предварительной обработки на эти алгоритмы, начнем с двух характеристик, скажем $x=(x_1,x_2)^T$. Оба, MinMaxScaler и StandardScaler, являются аффинными преобразованиями, то есть:
$$x_i\mapsto r_ix_i+s_1\quad(i=1,2)$$
Таким образом, преобразованный вход $\tilde{x}$ дается как
$$\tilde{x} = Rx+s = (r_1x_1+s_1,r_2x_2+s_2)^T,\qquad R=\left(\begin{array}{cc}r_1 & 0\\ 0 & r_2\end{array}\right)$$
Таким образом, евклидово расстояние между двумя образцами $X^A$ и $x^B$ задается как:
$$d(\tilde{x}^A,\tilde{x}^B)=\|\tilde{x}^A-\tilde{x}^B\|_2=\|R(x^A-x^B)\|_2=\sqrt{r_1^2(x_1^A-x_1^B)^2+r_2^2(x_2^A-x_2^B)^2}$$
Таким образом, по сути вы выполняете пересчет весов характеристик. Как видите, смещения $s_1$ и $s_2$, которые заставляют $0$ отображаться на какое-то другое значение, не оказывают никакого влияния. Тем не менее, масштабирование min-max имеет более сильный эффект сжатия, чем стандартное масштабирование. Таким образом, в действительности вы придаете больший вес “длительности телешоу” с помощью этих различных масштабаторов.
Предложение
Я бы предложил использовать один и тот же масштабатор для обеих характеристик. Здесь стандартный масштабатор более устойчив к выбросам, так что я бы выбрал именно его.
Таким образом, евклидово расстояние между преобразованными характеристиками будет равно расстоянию Махаланобиса между оригинальными характеристиками (предполагая, что нет корреляции между этими двумя характеристиками). Конечно, вы могли бы пропустить преобразование и напрямую применять нейронные сети и k-средние, используя расстояние Махаланобиса вместо евклидова.
Еще некоторые замечания
- Я предполагаю, что вы только приближаете “длительность фильмов” к нормальному распределению. Поскольку вероятность для отрицательных значений длительности будет больше нуля, реальное распределение будет немного другим.
- StandardScaler не приведет к значениям между -1 и 1, но нормализует дисперсию до 1. Можно по-прежнему наблюдать значения произвольного размера.
- Другие алгоритмы (например, модели гауссовских смесей) также зависят от разности между двумя точками и следуют той же аргументации. Для многих других аффинное преобразование входных характеристик в основном оказывает влияние на скорость сходимости.
- Также для других расстояний (например, основанных на норме Манхэттена, p-норме, максимальной норме) результат будет тем же.
Ответ или решение
Когда вы применяете разные методы масштабирования к различным признакам в вашем наборе данных, это может привести к ложной зависимости между этими признаками. Давайте разберем эту проблему и предложим решение.
1. Проблема с масштабированием
У вас есть два признака: "длительность фильма" и "длительность телешоу". Длительность фильма распределена нормально, тогда как длительность телешоу подчиняется экспоненциальному распределению. Вы применили MinMaxScaler
для "длительности телешоу" и StandardScaler
для "длительности фильма". Хотя это может показаться разумным исходя из распределений, такой подход создает проблему: значения нуля в "длительности фильма" оказываются преобразованными в ненулевые значения.
В результате вы получаете следующие данные после применения масштабирования:
'тип' 'длительность фильма' 'длительность телешоу'
movie 0.6331993973 0
tv show -1.333985768 0.0588235294
2. Ложная зависимость
Ложная зависимость возникает, когда одно значение (в данном случае ноль) интерпретируется по-разному в зависимости от выбранного метода масштабирования. Это может создать иллюзию зависимости между признаками, хотя на самом деле они не коррелированы.
Почему это важно? Для алгоритмов, таких как K-Means и нейронные сети, 0 может восприниматься как любое другое значение. Однако разные масштабы и влияние на расстояния между объектами могут искажать реальные паттерны данных, что негативно сказываются на результатах, особенно в процессе кластеризации и классификации.
3. Влияние на алгоритмы
Как уже было упомянуто, и K-Means, и нейронные сети основаны на мерах расстояния. Разные скалеры приводят к различной весомости признаков. Например, MinMaxScaler
может сделать "длительность телешоу" более значимой, чем "длительность фильма". Это может привести к нежелательным результатам в кластеризации, где объекты на самом деле не имеют сходства.
4. Рекомендации по масштабированию
-
Единый метод масштабирования: Я рекомендую использовать единую стратегию масштабирования для обоих признаков. Например, вы можете выбрать
StandardScaler
, который хорошо справляется с выбросами и сохраняет информацию об относительных масштабах данных. -
Моделирование: Если вы хотите избежать проблем с нулевыми значениями, можете принять решение о замене 0 на небольшое положительное значение перед масштабированием, но только если это логически оправдано в контексте вашей задачи.
-
Несоотношения различных методов: Возможно использование других методов, таких как нормированные расстояния или методы, которые не полагаются на эвклидово расстояние.
5. Заключение
Ваша задача состоит в том, чтобы обеспечить правильное представление данных для успешного обучения модели. С удовольствием предложу дополнительные варианты для улучшения вашего анализа данных, которые помогут избежать ложных зависимостей и улучшить качество ваших прогнозов. Необходимо придерживаться стандартов хорошей практики в обработке данных и анализе, чтобы гарантировать, что ваши алгоритмы обучения не будут искажены неправильными предположениями.