#python #machine-learning #scikit-learn #pipeline #scaling
#python #машинное обучение #scikit-learn #конвейер #масштабирование
Вопрос:
В машинном обучении вы разделяете данные на обучающие данные и тестовые данные.
При перекрестной проверке вы разделяете обучающие данные на обучающие наборы и набор проверки.
«И если требуется масштабирование, на каждой итерации CV вычисляются средние значения и стандартные отклонения обучающих наборов (не всех обучающих данных), исключая набор проверки, и используются для масштабирования набора проверки, так что часть масштабирования никогда не включает информацию из набора проверки «.
Мой вопрос в том, когда я включаю масштабирование в конвейер, на каждой итерации CV вычисляется ли масштабирование из меньших обучающих наборов (исключая набор проверки) или из всех обучающих данных (включая набор проверки)? Потому что, если он вычисляет средние и стандартные значения из всех обучающих данных, это приведет к смещению оценки в наборе проверки.
Комментарии:
1. Утечки нет, если ваше масштабирование является частью конвейера, который подходит для обучения и протестирован при проверке.
2. итак, средние значения и std вычисляются из обучающего набора, исключая набор проверки на каждой итерации, я прав?
3. Да, так и должно быть. Если у вас есть сомнения, вы всегда можете это проверить
Ответ №1:
Я тоже думал об этом, и хотя я думаю, что масштабирование с полными данными приводит к утечке некоторой информации из обучающих данных в данные проверки, я не думаю, что это так серьезно.
С одной стороны, вы все равно перетасовываете данные и предполагаете, что распределения во всех наборах одинаковы, и поэтому вы ожидаете, что средние значения и стандартные отклонения будут одинаковыми. (Конечно, это только теоретически (закон больших чисел).)
С другой стороны, даже если средства и ЗППП разные, эта разница не будет существенной.
На мой взгляд, да, у вас может быть некоторая предвзятость, но она должна быть незначительной.