我目前正在使用一类分类 svm,并且我正在尝试通过使用多个具有不同 gamma 参数的 svm-occ 并将这些决策与多数投票相结合来提高分类结果。但是结果并不那么令人满意,因为通过仔细选择伽马参数,我可以仅使用一类 svm 获得更好的结果。所以,我只是想知道我是否也可以使用另一个一类分类器,例如 SVDD,然后将其决策与 svm-occ 结合起来。但问题是我的项目是在 python 环境中开发的,我找不到使用 sklearn 的 SVDD 实现。那么是否有任何建议使用哪些分类器以及是否存在相应的python实现或如何将它们组合以获得整体更好的分类结果?(**我在 svm-occ 上保持 nu 参数固定)
一类分类
数据挖掘
Python
分类
支持向量机
2022-03-06 13:49:26
2个回答
嗯... SVM 是一个线性模型,所以如果你对几个具有不同正则化的模型的预测进行平均,你得到的是另一个使用不同正则化的模型的相同结果。
关于你的问题背后的意图:有比 SVM 和 SVDD 更多的方法。您可以检查 PyOD 包以获取用于异常值检测的集成模型。
SVM 实际上是一个 2 层 NN。最好使用神经网络来创建嵌入。因为,你没有反面例子,你不能使用像暹罗网络这样的东西。创建这些嵌入的一种好方法是使用自动编码器的瓶颈层。或者,如果您有图像数据,请使用 ResNet 获取嵌入(倒数第二层)。或者,如果您有表格数据,请使用 TabNet 获取嵌入。
获得嵌入后,从新示例中获取嵌入的距离(或者您可以使用 K-Means 获取簇头,然后从它们获取距离)。你设置一个阈值,它的距离大于那个。然后,是的,这是一个新奇事物。您可以使用的距离是 L1、L2 或余弦。
对于上述所有技术,代码在 Python 中很容易获得。