почему масштабирование объектов перед вменением отсутствующего значения дает более точный прогноз с помощью SVM? - PullRequest
0 голосов
/ 10 мая 2019

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

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

Я воспроизвел этот кусок кода (назовите его code_snippet_1) и изменил это немного (назовите его code_snippet_2).

единственная разница между code_snippet_1 и code_snippet_2 - это порядок вменения и масштабирования.

code_snippet_1 выполняет масштабирование до вменения, что приводит кAcc 77,6%,

, в то время как code_snippet_2 выполняет вменение до масштабирования с Acc 67,2%.

Вопрос в том, почему?

1 Ответ

0 голосов
/ 10 мая 2019

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

Масштабирование объектов перед вменением всегда лучше, потому что в ваших реальных данных, если большая часть ваших данных находится в диапазоне 0-10, но есть некоторые значения в диапазоне 1000-10000, это повлияет на среднее значение ваших неверные данные, так как вы будете заполнять свои нулевые значения данными, на которые влияет проблема диапазона.

Например:

from sklearn import preprocessing
import numpy as np
X_train = np.array([[ 1., -1., 2.], [ 2., 0., 0.], [ 0., 1., -1000.]])
X_train.mean()
scaler = preprocessing.StandardScaler()
X_train_standard_scaled = scaler.fit_transform(X_train)
X_train_standard_scaled.mean()

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

Думайте об этом так, поскольку большинство ваших данных находятся в диапазоне 0-10, а некоторые точки данных выше 10000. В этом случае возможно, что вышеупомянутые 10000 точек данных являются аномалиями. Если вы не масштабируете данные заранее, вы также принимаете аномалии, чтобы вменять свои недостающие данные, в итоге вы создаете больше неверных данных, что влияет на точность ваших моделей.

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