Python机器学习笔记:One Class SVM
前言 最近老板有一个需求,做单样本检测,也就是说只有一个类别的数据集与标签,因为在工厂设备中,控制系统的任务是判断是是否有意外情况出现,例如产品质量过低,机器产生奇怪的震动或者机器零件脱落等。相对来说容易得到正常场景下的训练数据,但故障系统状态的收集示例数据可能相当昂贵,或者根本不可能。如果可以模拟一个错误的系统状态,问题就好解决多了,但无法保证所有的错误状态都被模拟到,所以只能寻找单样本检测相关的算法。 所幸了解到一些单样本检测的算法,比如Isolation Forest,One-Class Classification,所以这篇文章就记录一下自己做的关于One-Class SVM 的笔记。 一,单分类算法简介 One Class Learning 比较经典的算法是One-Class-SVM,这个算法的思路非常简单,就是寻找一个超平面将样本中的正例圈出来,预测就是用这个超平面做决策,在圈内的样本就认为是正样本。由于核函数计算比较耗时,在海量数据的场景用的并不多; 另一个算法是基于神经网络的算法,在深度学习中广泛使用的自编码算法可以应用在单分类的问题上,自编码是一个BP神经网络,网络输入层和输出层是一样,中间层数可以有多层,中间层的节点个数比输出层少,最简单的情况就是中间只有一个隐藏层,如下图所示,由于中间层的节点数较少,这样中间层相当于是对数据进行了压缩和抽象