Какие модели можно обучать на новых данных?
Какие модели можно обучать на новых данных? Какие нельзя? Почему?
Как я понимаю, если мы обучаем модель градиентным спуском, то мы можем использовать дообученение
Ответы (1 шт):
С инженерной точки зрения, дообучать можно те модели, которые поддерживают инкрементальное обучение, в библиотеке Sklearn это проверяется наличием метода partial_fit. Список таких моделей из документации по Sklearn:
Classification
- sklearn.naive_bayes.MultinomialNB
- sklearn.naive_bayes.BernoulliNB
- sklearn.linear_model.Perceptron
- sklearn.linear_model.SGDClassifier
- sklearn.linear_model.PassiveAggressiveClassifier
Regression
- sklearn.linear_model.SGDRegressor
- sklearn.linear_model.PassiveAggressiveRegressor
Clustering
- sklearn.cluster.MiniBatchKMeans
Decomposition / feature Extraction
- sklearn.decomposition.MiniBatchDictionaryLearning
- sklearn.cluster.MiniBatchKMeans
Насколько я помню, популярные бустинги XGBoost и LightGBM тоже поддерживают дообучение.
Что же касается именно теории, то там глубже нужно копать, но на первый взгляд по идее ничего не мешает дообучить градиентный спуск, бустинги и нейросети - они ведь по сути своих алгоритмов постепенно доучиваются и могут это делать и на новых данных, почему бы и нет. Только почему можно дообучать Naive Bayes я не в курсе - я не настолько хорошо его понимаю.
А вот с решающими деревьями, линейной регрессией, SVM и т.п. такой фокус не прокатит, там по самой сути моделей обучать их нужно на всех данных, непонятно, как их можно было бы дообучить. Они как бы "усредняют" данные, чтобы найти решение, поэтому как в них учесть дополнительные данные, не обрабатывая заново основные данные наравне с новыми - не очень понятно.