【吴恩达机器学习笔记】十三、异常检测

简介: 【吴恩达机器学习笔记】十三、异常检测

十三、异常检测


1. 问题动机

在进行训练开始前,我们可以通过一些算法去检测我们的数据集中是否有一些异常的数据,因为可能会因为一些异常的数据而导致我们训练的效果下降。


c3c91a2898d642d182323d71a35d9431.png


所以,我们会通过一个p(x)模型,对数据集进行检测,我们可以设置一个epsilon阈值,如何数据在p中的值小于这个阈值,我们就可以认为这个数据点是异常(anomalous) 点。


接下来,介绍一些关于异常检测的应用。


欺诈检测

可以通过获取用户的各个特征来判断其是否为异常用户,可以适用于各个网站。

机械生产

例如可以用于飞机引擎,通过各个特征在p模型中得到的值去判断是否发生故障。

计算机数据管理中心

同样可以通过计算机的各个特征去判断计算机是否异常,从而可以及时停机避免造成意外。

93c163abf2f443d18ea196859b62d8d1.png


2. 高斯分布

我们来深入了解一下高斯分布(也称正态分布),我们一般会用x来表示高斯分布。



4fd7be06247d4e56ad582d1ef98cfc9d.png

其中我们要知道的是,σ是标准差而σ2则是方差,它决定了曲线中的宽度,而μ则决定了曲线中心的位置,上面的这个公式不要求去记住,在用到的时候随时都可以查到。


下面我们看一些关于高斯分布的例子。


72842884d977489eb49bbd775df6bc3e.png


通过观察可以发现,σ越小曲线越窄,σ越大曲线越宽,而μ会改变曲线中心的位置。


最后再来看看如何进行参数估计。

242a24c15fa6451796995c0ac3259139.png



我们可以通过数据集中的x以及上面的式子,计算出μ和σ2从而还原正态分布图像,其中求σ2的式子中1/m在有些版本中可能会是1/(m-1),但效果都差不多,不过通常人们会使用1/m去计算。


3. 算法

这节课,我们来看看异常检测算法的具体步骤。


首先,我们会选择一些能够代表你数据的特征。

然后,用这些训练集特征去拟合参数。

最后,给定新的特征x,带入p中计算与epsilon比大小判断是否异常。


a4f36fc6bd40408f83d7be0ec2ea095d.png

然后,再来看一个例子。


00674a3c8dba46f3be141d949ec63e13.png


可以看到,如果给定两个特征去拟合参数,会得到一个三维的图像,在秃顶内的都是正常,在秃顶外的都是异常。


4. 开发和评估异常监测系统

在进行算法时,如果能返回一些数值来评估好坏这会使我们的选择更加简单。

272c09785b914d668ef5700d246ce436.png



所以,我们一般会去收集一些带标签的数据,其中包含异常和正常的样本,并且令y=0时为正常,y=1时为异常。然后开始划分训练集、交叉验证集和测试集,下面就是一个例子。


5c88e11988ee4615ba83abeb91aef05a.png


假设你有10000个正常样本和20个异常样本,那么你就可以将6000个正常样本划为训练集,剩下的正常样本和异常样本对半分给交叉验证集和测试集,接下来再来看看算法评估的具体步骤。

144ff4f27c9d4394818e02495e4545d8.png



我们首先会用上面划分出来的训练集去拟合我们的模型p,然后通过交叉验证集和训练集去预测y的值,观察预测的效果,但是这里y=0的结果会远比y=1的结果多,所以以正确率为判断标准并不合适,故我们会用到之前讲到的真假阳性与真假阴性来计算出准确率和回归率,最终算出F1的值来判断算法的好坏。


这里还有一点要注意的是对于epsilon即阈值的选取,我们可以尝试不同的epsilon来观察F1的值,然后选取F1值最大的那个epsilon作为训练的阈值。


5. 异常检测和监督学习

通过上节课的学习,你可能会想已经有标签的数据集了为什么不直接使用监督学习算法进行训练,那么这节课就来讲讲什么时候用异常检测合适,什么时候用监督学习合适。


异常检测

负样本数量一般会比正样本数量多很多,导致监督学习算法无法从正样本中学习到很多知识,所以无法很好区分正负样本,这时候异常检测会对负样本进行建模,可以更容易检测出正样本情况,例如飞机引擎的例子。

异常的类型一般会比较多样,所以监督学习无法从少有的正样本中了解各种异常的真面目,而且也无法去预测未来新类型的异常会使怎么样的,而异常检测只是检测出异常情况,并不用对异常的类型给出判断,故异常检测在此时就会派上用场。

监督学习

正样本和负样本数量一般都很大,所以监督学习有足够的数据去了解正样本和负样本的真实面目,从而很好的进行正负结果的划分。

一般使用监督学习的情况对于未来出现的新样本类型是已知的,它与训练集里的样本类似,所以可以通过前面训练集中的样本训练出来的模型对新样本进行判断。

而异常检测的典型应用就是之前讲到的欺诈检测、制造领域产品检测、计算机数据管理中心等,监督学习包括垃圾邮件分类、天气预测、癌症预测等应用。


6. 选择要使用的功能

在你使用异常检测时,对于用于算法训练的数据选择,有时候也会影响算法的效果,如下:


1e63cf6fe75d45c1bf1bd96b4649cdc5.png


有时候你的数据可能会像上方最上面的那个直方图一样,这时候图像接近于一个高斯分布,那么直接用于算法训练并不会造成多大影响,但是如果按照其下面这个不匀称的直方图的话,就需要先进行一次数据处理,例如加入log函数或者平方开方等操作,转化为类似于高斯分布图像,再拿去进行训练。


在进行异常检测时,我们还可能遇到正样本和负样本得出的p(x)都很大的情况,如下:

71b0983cbc374086b3e3286e6375cdf1.png



可以看到有时候如果只有一个特征,那么从高斯分布图像来看,异常点可能会夹杂在正常点中间,难以进行区分,这时候你就可以想出一个新的特征加入进去,这样很可能就能将异常点分离出来。


最后,再来介绍一下对于特征选取的一些建议。


88d9c07fc09a4c369deae67f6305bb0b.png


有时候你可能发现你的一些特征处于线性关系,例如CPU负载和网络流量,并且这时候某台计算机进入一个死循环无法进行检测,是因为它的CPU负载很高但是网络流量确实正常的,所以就难以进行检测,故这时候就可以设置新的特征,例如将CPU负载与网络流量相除,或者将CPU负载的平方与网络流量相除,就能很好的解决这类问题。


7. 多变量高斯分布的异常检测

有时候,如果我们单独对每个变量进行高斯分布,然后将他们用于异常检测的话,可能有些异常点的p(x)值都不会很低。


0dddd2dd396849979c4e984fd0afc5e6.png


从上图可以看出,这时候我们就要引出多变量高斯分布了。

23e84dd54a51484aa00e777db874dd42.png



这次,我们分别对特征进行高斯分布,而是对特征整体放入p(x)模型中得到高斯分布,这时候我们的参数sigma就成为了一个对角线矩阵,接下来我们观察一下当参数变化时图像的改变,以两个特征为例。


73474f2a2d12419a8b2479d49ebf43f8.png


可以发现,当对角矩阵上的值变小时,图像会变得更尖,值变大时,图像会变得更扁。

dded274767ea4218ac7fd0931c7bc83d.png



如果只改变特征中一个值的话,就只会改变那个特征上的方差大小。


52601ae843fd4daa8436ccdd5f3944d5.png


如果改变sigma非对角线上的值的话,它的投影图像就会往y=x直线方向靠近。


75db6ebda9ae47cbb19298b83f03658c.png


如果将sigma非对角线的值改成负数的话,投影图像就会往上个案例的反方向靠近。


a89113150cd842a2b54b2a06a6303aef.png


当然,你不光可以改变sigma矩阵中的值,也可以改变μ矩阵中的值,这会使分布中心发生偏移。


那么接下来,我们看看如果将多变量高斯分布用于异常检测当中。


26f82cacfb6c4d45a443c37d4655cc54.png


这里参数拟合计算中的sigma与我们之前PCA的主成分分析问题规划用到的是一样的,下面是具体步骤。


183a63d0d2834767a955cb4cec5eae27.png


我们先用训练集的数据去拟合出参数得到p(x)模型,然后将新样本带入p(x)模型中计算,从而判断是否为异常点。


我们一般会用原始模型较为多一些,接下来我们来看看原始的模型与这个多元的模型有什么区别。

8735e365c7ee4873966e29a6b337dc4f.png



在原始模型中,你可以手动创建特征来捕获某些异常,其中创建的特征是由某些特征组合而成的,而多元高斯分布在这种情况下,会自动获取特征之间的关系。

原始模型在特征数量非常大的情况下,开销也不会特别大并且运行的效果也能不错,而多元高斯分布如果特征数量非常大的话,需要计算其逆矩阵的开销就会非常大。

原始模型允许训练集数据量比较小的情况下进行训练,而多元高斯分布则必须要训练样本数量要大于特征数量才能进行训练,因为如果样本数量少于特征数量的话,上面公式中计算的逆矩阵就会不可逆,一般会要求训练样本数量大于等于特征数量的十倍情况下才可以用多元高斯分布进行训练。


目录
相关文章
|
2月前
|
机器学习/深度学习 计算机视觉 Python
模型预测笔记(三):通过交叉验证网格搜索机器学习的最优参数
本文介绍了网格搜索(Grid Search)在机器学习中用于优化模型超参数的方法,包括定义超参数范围、创建参数网格、选择评估指标、构建模型和交叉验证策略、执行网格搜索、选择最佳超参数组合,并使用这些参数重新训练模型。文中还讨论了GridSearchCV的参数和不同机器学习问题适用的评分指标。最后提供了使用决策树分类器进行网格搜索的Python代码示例。
154 1
|
4月前
|
机器学习/深度学习 运维
【阿里天池-医学影像报告异常检测】4 机器学习模型调参
本文提供了对医学影像报告异常检测任务中使用的机器学习模型(如XGBoost和LightGBM)进行参数调整的方法,并分享了特征提取和模型调优的最佳实践。
62 13
|
4月前
|
机器学习/深度学习 运维 算法
【阿里天池-医学影像报告异常检测】3 机器学习模型训练及集成学习Baseline开源
本文介绍了一个基于XGBoost、LightGBM和逻辑回归的集成学习模型,用于医学影像报告异常检测任务,并公开了达到0.83+准确率的基线代码。
79 9
|
6月前
|
机器学习/深度学习 人工智能 自然语言处理
算法金 | 吴恩达:机器学习的六个核心算法!
吴恩达教授在《The Batch》周报中介绍了机器学习领域的六个基础算法:线性回归、逻辑回归、梯度下降、神经网络、决策树和k均值聚类。这些算法是现代AI的基石,涵盖了从简单的统计建模到复杂的深度学习。线性回归用于连续变量预测,逻辑回归用于二分类,梯度下降用于优化模型参数,神经网络处理非线性关系,决策树提供直观的分类规则,而k均值聚类则用于无监督学习中的数据分组。这些算法各有优缺点,广泛应用于经济学、金融、医学、市场营销等多个领域。通过不断学习和实践,我们可以更好地掌握这些工具,发掘智能的乐趣。
124 1
算法金 | 吴恩达:机器学习的六个核心算法!
|
6月前
|
机器学习/深度学习 算法 BI
机器学习笔记(一) 感知机算法 之 原理篇
机器学习笔记(一) 感知机算法 之 原理篇
|
6月前
|
机器学习/深度学习 数据采集 运维
构建基于机器学习的异常检测系统
【6月更文挑战第7天】构建基于机器学习的异常检测系统,通过收集和预处理数据,进行特征提取和选择,然后选择SVM、随机森林等算法训练模型。评估指标包括准确率、召回率、F1值,旨在识别安全威胁、系统故障等异常,保障系统稳定。未来将持续优化性能并探索新技术。
|
6月前
|
机器学习/深度学习 算法 数据可视化
技术心得记录:机器学习笔记之聚类算法层次聚类HierarchicalClustering
技术心得记录:机器学习笔记之聚类算法层次聚类HierarchicalClustering
69 0
|
6月前
|
机器学习/深度学习 分布式计算 API
技术好文:Spark机器学习笔记一
技术好文:Spark机器学习笔记一
48 0
|
7月前
|
机器学习/深度学习 运维 算法
利用机器学习进行异常检测的技术实践
【5月更文挑战第16天】本文探讨了利用机器学习进行异常检测的技术实践,强调了在大数据时代异常检测的重要性。机器学习通过无监督、有监督和半监督学习方法自动识别异常,常见算法包括KNN、LOF、K-means和GMM等。异常检测流程包括数据准备、特征工程、选择算法、训练模型、评估优化及部署。机器学习为异常检测提供了灵活性和准确性,但需结合具体问题选择合适方法。
|
7月前
|
机器学习/深度学习 人工智能 运维
人工智能平台PAI 操作报错合集之请问Alink的算法中的序列异常检测组件,是对数据进行分组后分别在每个组中执行异常检测,而不是将数据看作时序数据进行异常检测吧
阿里云人工智能平台PAI (Platform for Artificial Intelligence) 是阿里云推出的一套全面、易用的机器学习和深度学习平台,旨在帮助企业、开发者和数据科学家快速构建、训练、部署和管理人工智能模型。在使用阿里云人工智能平台PAI进行操作时,可能会遇到各种类型的错误。以下列举了一些常见的报错情况及其可能的原因和解决方法。

热门文章

最新文章