机器学习 - 一类分类/新奇检测/异常评估?

时间:2016-06-12 14:38:11

标签: machine-learning unsupervised-learning novelty-detection anomaly-detection

我需要一种能满足以下要求的机器学习算法:

  • 训练数据是一组特征向量,都属于同一个,"肯定" class(因为我不能生成负数据样本)。
  • 测试数据是一些特征向量,可能属于或可能不属于正类。
  • 预测应该是一个连续的值,它应该表示"距离"来自阳性样本(即0表示测试样本明显属于阳性类,1表示明显为阴性,但0.3表示有点阳性)

一个例子: 让我们说特征向量是2D特征向量。

积极的培训数据:

  • (0,1),(0,2),(0,3)

测试数据:

  • (0,10)应该是一个异常,但不是一个明显的
  • (1,0)应该是一个异常,但具有更高的等级"比(0,10)
  • (1,10)应该是异常,具有更高的异常度" rank"

1 个答案:

答案 0 :(得分:2)

您描述的问题通常被称为异常值,异常或新奇检测。有许多技术可以应用于这个问题。可以找到一个关于新颖性检测技术的很好的调查here。本文对技术进行了全面分类,并对每种技术进行了简要描述,但首先,我将列出一些标准技术:

  • K-nearest neighbors - 一种简单的基于距离的方法,假设正常数据样本接近其他正常数据样本,而新样本远离正常点。可以在ScikitLearn中找到KNN的Python实现。
  • Mixture models(例如高斯混合模型) - 建模数据的生成概率密度函数的概率模型,例如使用高斯分布的混合。给定一组正常数据样本,目标是找到概率分布的参数,以便最佳地描述样本。然后,使用新样本的概率来确定它是属于分布还是异常值。 ScikitLearn实现Gaussian Mixture Models并使用期望最大化算法来学习它们。
  • 一类支持向量机(SVM) - 标准SVM classifier的扩展,试图找到将正常样本与未知新颖样本分开的边界(在经典方法中,边界由最大化正常样本和空间原点之间的边距,投射到所谓的特征空间")。 ScikitLearn的实现为one-class SVM,允许您轻松使用它,并且example很好。我附上该示例的图表来说明一类SVM找到的边界"周围"正常的数据样本: enter image description here