我目前正在设计文本文章的推荐系统(“有趣”或“不有趣”的二进制情况)。我的规范之一是它应该不断更新以适应不断变化的趋势。
据我所知,最好的方法是利用支持增量/在线学习的机器学习算法。
Perceptron和Winnow之类的算法支持在线学习,但是我对支持向量机并不完全确定。scikit-learn python库是否支持在线学习,如果支持,支持向量机是可以利用它的算法之一吗?
我显然并不完全依赖于使用支持向量机,但是由于它们的全面性能,它们通常是二进制分类算法。最后,我愿意改变为最合适的方式。
尽管确实存在用于SVM的在线算法,但是指定要内核还是线性SVM变得很重要,因为针对线性SVM的特殊情况已经开发了许多有效的算法。
对于线性情况,如果您在scikit-learn中将SGD分类器与铰链损耗和L2正则化配合使用,您将获得一个可以在线/增量更新的SVM。您可以将其与近似于内核的特征转换结合使用,以类似于在线内核SVM。
我的规范之一是它应该不断更新以适应不断变化的趋势。
这被称为 概念漂移, 不能通过简单的在线SVM很好地处理。使用PassiveAggresive分类器可能会给您带来更好的结果,因为它的学习率不会随着时间而降低。
假设您在训练/跑步时获得了反馈,则可以尝试检测准确性随时间的降低,并在准确性开始下降时开始训练新模型(并在您认为新模型变得更准确时切换到新模型)。JSAT有2种漂移检测方法(请参阅jsat.driftdetectors),可用于跟踪准确性并在准确性发生变化时向您发出警报。
它还具有更多在线线性和核方法。
(偏见:我是JSAT的作者)。