Когда разделять данные на обучающий и тестовый наборы данных

#machine-learning

#машинное обучение

Вопрос:

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

Это то, что я делал

 standardized_X = preprocessing.scale(x_data) 

X_train_std, X_test_std, y_train_std, y_test_std = train_test_split(standardized_X, df_breast.CLASS.values, test_size=0.3, random_state=0)
  

В то время как мне сообщили, что последовательность должна быть

 X_train_std, X_test_std, y_train_std, y_test_std = train_test_split(standardized_X, df_breast.CLASS.values, test_size=0.3, random_state=0)

standardized_X = preprocessing.scale(x_data)
  

Кроме того, если вы можете, пожалуйста, привести аргументы, это было бы здорово.

Ответ №1:

Во-первых, и обучающий набор, и тестовый тест должны быть в некоторой степени хорошими представителями генеральной совокупности (объединенный набор). Во многих случаях это может быть не так.

Масштабирование в основном стандартизирует данные, используя среднее значение и стандартное отклонение выборки. Часто используемая формула называется масштабированием по z-баллам [(x-среднее значение) / (стандартное отклонение)].

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