3

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

  • 训练数据是一组特征向量,都属于同一个“正”类(因为我不能产生负数据样本)。
  • 测试数据是一些可能属于或不属于正类的特征向量。
  • 预测应该是一个连续值,应该表示与正样本的“距离”(即0表示测试样本明显属于正类,1表示明显负,但0.3表示有点正)

一个例子:假设特征向量是二维特征向量。

正向训练数据:

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

测试数据:

  • (0, 10) 应该是一个异常,但不是一个明显的异常
  • (1, 0) 应该是异常,但“等级”高于 (0, 10)
  • (1, 10) 应该是一个异常,具有更高的异常“等级”
4

1 回答 1

2

您描述的问题通常被称为异常值、异常或新奇检测。有许多技术可以应用于这个问题。可以在这里找到对新颖性检测技术的一个很好的调查。这篇文章对这些技术进行了彻底的分类并对每种技术进行了简要描述,但作为开始,我将列出一些标准技术:

  • K-最近邻——一种简单的基于距离的方法,它假设正常数据样本靠近其他正常数据样本,而新样本远离正常点。KNN的 Python 实现可以在 ScikitLearn 中找到。
  • 混合模型(例如高斯混合模型) - 对数据的生成概率密度函数建模的概率模型,例如使用高斯分布的混合。给定一组正常数据样本,目标是找到概率分布的参数,以便最好地描述样本。然后,使用新样本的概率来判断它是属于分布还是异常值。ScikitLearn 实现了高斯混合模型并使用期望最大化算法来学习它们。
  • 一类支持向量机 (SVM) - 标准SVM 分类器的扩展,它试图找到将正常样本与未知新样本分开的边界(在经典方法中,通过最大化正常样本之间的边距来找到边界样本和空间的原点,投影到所谓的“特征空间”)。ScikitLearn 有一个类 SVM的实现,它允许您轻松使用它,并且是一个很好的示例。我附上了那个例子的图来说明边界一类 SVM 发现“围绕”正常数据样本: 在此处输入图像描述
于 2016-06-12T23:03:58.060 回答