Что такое мета-классификатор в функции StackingClassifier в mlxtend?
В библиотеке mlxtend есть мета-классификатор для обучения ансамблю, который называется "StackingClassifier".
Вот пример вызова функции StackingClassifier:
sclf = StackingClassifier(classifiers=[clf1, clf2, clf3],
meta_classifier=lr)
Что такое meta_classifier здесь? Для чего его используют?
1 ответ
Что такое укладка?
Укладка - это метод обучения ансамбля, объединяющий несколько моделей классификации с помощью мета-классификатора. Индивидуальные модели классификации обучаются на основе полного учебного набора; затем метаклассификатор подбирается на основе результатов - мета-признаков - отдельных моделей классификации в ансамбле.
Источник: StackingClassifier-mlxtend
Так meta_classifier
Параметр помогает нам выбрать classifier
чтобы соответствовать выходу отдельных моделей.
Пример:
Предположим, что вы использовали 3 бинарные модели классификации говорят LogisticRegression, DT & KNN
для укладки. Допустим 0, 0, 1
быть классами, предсказанными моделями. Теперь нам нужно classifier
который будет делать большинство голосов по прогнозируемым значениям. И этот классификатор является meta_classifier
, И в этом примере он выбрал бы 0
как предсказанный класс.
Вы можете продлить это для prob
значения также.
Обратитесь к mlxtend-API для получения дополнительной информации
Мета -классификатор - это тот, который принимает все предсказанные значения ваших моделей. Как и в вашем примере, у вас есть три классификатора clf1, clf2, clf3, скажем, clf1 - это наивный байес, clf2 - это случайный лес, clf3 - svm. Теперь для каждой точки данных x_i в вашем наборе данных все ваши три модели будут запускать h_1(x_i), h_2(x_i), h_3(x_i), где h_1,h_2,h_3 соответствует функции clf1, clf2, clf3. Теперь эти три модели дадут три прогнозируемых значения y_i, и все они будут работать параллельно. Теперь с этими предсказанными значениями обучается модель, известная как метаклассификатор, и в вашем случае это логистическая регрессия.
Таким образом, для новой точки запроса (x_q) она будет вычисляться как h^'(h_1(x_q),h_2(x_q),h_3(x_q)), где h^'(h dash) - это функция, которая вычисляет y_q.
Преимущество мета-классификаторов или ансамблевых моделей заключается в том, что предположим, что ваш clf1 дает точность 90%, clf2 дает точность 92%, clf3 дает точность 93%. Таким образом, конечная модель даст точность более 93%, которая обучается с использованием метаклассификатора. Эти классификаторы стека широко используются при заканчивании в режиме kaggle.
meta_classifier - это просто классификатор, который делает окончательный прогноз среди всех прогнозов, используя эти прогнозы как функции. Итак, он берет классы, предсказанные различными классификаторами, и выбирает последний из них, который вам нужен.
Вот красивая и простая презентация StackingClassifier: