python中SVM的主动学习(例如池采样)[关闭]
Posted
技术标签:
【中文标题】python中SVM的主动学习(例如池采样)[关闭]【英文标题】:Active Learning (e.g. Pool Sampling) for SVM in python [closed] 【发布时间】:2016-08-28 23:34:00 【问题描述】:我正在研究一个将从主动学习协议中受益匪浅的问题(例如,与现有模型相比,给定一组未标记数据,该算法要求未标记数据的子集由“预言机”标记)。
有没有人在 SVM(最好是在 python 中)中实现主动学习(使用池抽样、委员会查询或其他方式)的任何示例?
【问题讨论】:
【参考方案1】:在 python 中实现主动学习非常简单。对于最简单的情况,您只需选择要查询的新样本,它在您学习的 SVM(简单不确定性采样)上具有最小的 decision_function 绝对值,基本上只有一行!假设你有一个二元分类,在clf
中有训练好的 svm,在X
中有一些未标记的例子,你只需选择
sample = X[np.argmin(np.abs(clf.decision_function(X)))]
你也可以在 github 上找到许多不同的实现,比如去年 ECML 中的 AL 论文:https://github.com/gmum/mlls2015
【讨论】:
这看起来棒极了!经过一番探索之后,我似乎不明白为什么这行代码也不能解决 3+ 分类问题呢?此外,看起来交换 np.argmin(建模细化)可以换成 np.argmax(增加数据集的适用范围)。 对于更多类,decision_function 返回一个矩阵,argmin 会将其展平并返回平面向量中的索引,而您需要一个行号。因此,您将必须进行两步操作,首先将 max 置于第二个轴上(以采用最可能的类),然后 argmin 选择最不确定的。将 argmin 交换为 argmax 对于主动学习没有多大意义,因为您将查询已经完美分类的样本,这与您的任务完全相反(除非您希望您的模型过于自信并且您有时查询 argmax 以发现误报)。【参考方案2】:基于池的抽样的两种流行查询策略是不确定性抽样和委员会查询(请参阅paper 以获得广泛的评论)。以下库实现了三种常见的不确定性策略:最小置信度、最大边际和熵以及两种委员会策略:投票熵和平均 KL 散度:https://github.com/davefernig/alp
该库与 scikit-learn 兼容,可与任何分类器一起使用。它使用随机二次抽样作为衡量主动学习效益的基准。
【讨论】:
以上是关于python中SVM的主动学习(例如池采样)[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
R语言使用caret包对GBM模型参数调优SVM模型自定义参数调优RDF模型自定义参数调优(例如,ROC)重采样对多个模型的性能差异进行统计描述可视化多模型在多指标下的性能对比分析
都2021年了,不会还有人连深度学习都不了解吧-- 下采样篇
都2021年了,不会还有人连深度学习都不了解吧-- 下采样篇