У меня есть 3,25 года данных, основанных на времени, и я использую RandomForestClassifier от scikit-learn, чтобы попытаться классифицировать данные в реальном времени по мере их поступления. Мой набор данных имеет примерно 75 000 строк и 1100 столбцов, а мой раскол поезда/теста является первым 3 года для поездов (66 000 рядов) и последние 0,25 года (3 месяца или 9 000 рядов) для испытания.Как я могу добиться стабильности с помощью scikit-learn RandomForestClassifier?
Поскольку каждый раз, когда вы тренируетесь, изменчивость, я не всегда вижу хорошую точность при классификации тестовых данных ... но иногда я это делаю. Так что я пытался сделать повторное обучение классификатора снова и снова до тех пор, пока я не буду do видеть хорошую точность при классификации тестовых данных, а затем сохранить эту версию на диск для использования в живой классификации по мере поступления новых данных.
Некоторые могут сказать, что это переуплотняет модель тестовых данных ... что, вероятно, так и есть, но я решил, что из-за случайности в обучении найти подходящую посадку на первой итерации против 100-й не имеет значения, потому что итерация, в которой происходит хорошая подгонка, происходит случайно. Отсюда моя решимость продолжать переподготовку, пока не нахожусь в хорошей форме.
Я видел, что я могу найти подходящую, которая будет иметь хорошую/стабильную точность в течение всех трех месяцев тестового периода, но затем, когда я использую эту модель для классификации данных в реальном времени, как это происходит для 4-й месяц он нестабилен, и точность значительно хуже.
Вопрос 1. Как может модель иметь отличную/стабильную точность в течение 3 месяцев подряд, а затем камбалу в течение 4-го месяца?
Вопрос 2: как изменить или увеличить мою настройку или процесс, чтобы добиться стабильности точности передачи данных в реальном времени?
> найти хорошую подгонку на первой итерации по сравнению с 100-й не имеет никакого значения Это сильно зависит от количества тестовых данных и вообще неправы. Пожалуйста, прочитайте о нескольких испытаниях гипотез. – Alleo
Возможно, вы попросите об этом вместо http://stats.stackexchange.com/. Но вы определенно не используете тестовые данные правильно. Я бы сказал, что есть хорошие шансы, что вы переполняете свои данные, так как именно вы не должны использовать тестовый набор - вместо этого используйте CV для учебных данных, чтобы найти хорошие приемы. И в целом, чем больше вещей вы пытаетесь (например, запускайте тренировки снова и снова, пока это не неожиданно работает), тем выше вероятность того, что вы переработаете и разочаруетесь в реальных тестах. Однако есть вероятность, что ваш тестовый набор просто не отражает реальные данные. –
@ AlexA. - что касается вашего утверждения о том, что набор тестов не может быть репрезентативным для реальных данных, предложите ли вы сделать случайный разбор поезда/теста набора данных с помощью чего-то вроде sklearn.cross_validation.train_test_split, а не протягивать непрерывный период данных? – brettlyman