利用概率的异常检测算法
异常检测可以作为离群分析的统计任务来对待。 但是,如果我们开发一个机器学习模型,它可以自动化,并且像往常一样可以节省大量时间。 有很多异常检测用例。 信用卡欺诈检测,故障机器检测或基于其异常功能的硬件系统检测,基于病历的疾病检测都是很好的例子。 还有更多用例。 并且异常检测的使用只会增加。
在本文中,我将解释从头开始用Python开发异常检测算法的过程。
公式和过程
与我之前解释的其他机器学习算法相比,这将简单得多。 该算法将使用均值和方差来计算每个训练数据的概率。
如果一个训练示例的概率很高,那是正常的。 如果某个训练示例的概率较低,则为异常示例。 对于不同的训练集,高概率和低概率的定义将有所不同。 稍后我们将讨论如何确定。
如果我必须解释异常检测的工作过程,那非常简单。
· 使用以下公式计算平均值:
这里m是数据集的长度或训练数据的数量,xi是一个训练示例。 如果您拥有多个训练功能,那么大多数时候您将需要为每个功能计算平均值。
2.使用以下公式计算方差:
此处,mu是从上一步计算得出的平均值。
3.现在,使用此概率公式计算每个训练示例的概率。
不要为这个公式中的加号感到困惑! 这实际上是对角线形状的变化。
稍后我们将实现算法时,您将看到它的外观。
4.我们现在需要找到概率的阈值。 正如我之前提到的,如果训练示例的概率较低,那么这就是一个异常示例。
低概率是多少概率?
没有通用的限制。 我们需要为我们的训练数据集找到答案。
我们从步骤3中获得的输出中获取一系列概率值。对于每种概率,如果数据是异常或正常的,请找到标签。
然后计算一系列概率的精度,召回率和f1分数。
可以使用以下公式计算精度
召回率可以通过以下公式计算:
在此,"正肯定"是指算法将示例检测为异常并且实际上是异常的情况下的数量。
当算法将示例检测