✍个人博客:https://blog.csdn.net/Newin2020?spm=1011.2415.3001.5343
📣专栏定位:为学习吴恩达机器学习视频的同学提供的随堂笔记。
📚专栏简介:在这个专栏,我将整理吴恩达机器学习视频的所有内容的笔记,方便大家参考学习。
💡专栏地址:https://blog.csdn.net/Newin2020/article/details/128125806
📝视频地址:吴恩达机器学习系列课程
❤️如果有收获的话,欢迎点赞👍收藏📁,您的支持就是我创作的最大动力💪
在进行训练开始前,我们可以通过一些算法去检测我们的数据集中是否有一些异常的数据,因为可能会因为一些异常的数据而导致我们训练的效果下降。
所以,我们会通过一个p(x)模型,对数据集进行检测,我们可以设置一个epsilon阈值,如何数据在p中的值小于这个阈值,我们就可以认为这个数据点是异常(anomalous) 点。
接下来,介绍一些关于异常检测的应用。
我们来深入了解一下高斯分布(也称正态分布),我们一般会用x来表示高斯分布。
其中我们要知道的是,σ是标准差而σ2则是方差,它决定了曲线中的宽度,而μ则决定了曲线中心的位置,上面的这个公式不要求去记住,在用到的时候随时都可以查到。
下面我们看一些关于高斯分布的例子。
通过观察可以发现,σ越小曲线越窄,σ越大曲线越宽,而μ会改变曲线中心的位置。
最后再来看看如何进行参数估计。
我们可以通过数据集中的x以及上面的式子,计算出μ和σ2从而还原正态分布图像,其中求σ2的式子中1/m在有些版本中可能会是1/(m-1),但效果都差不多,不过通常人们会使用1/m去计算。
这节课,我们来看看异常检测算法的具体步骤。
然后,再来看一个例子。
可以看到,如果给定两个特征去拟合参数,会得到一个三维的图像,在秃顶内的都是正常,在秃顶外的都是异常。
在进行算法时,如果能返回一些数值来评估好坏这会使我们的选择更加简单。
所以,我们一般会去收集一些带标签的数据,其中包含异常和正常的样本,并且令y=0时为正常,y=1时为异常。然后开始划分训练集、交叉验证集和测试集,下面就是一个例子。
假设你有10000个正常样本和20个异常样本,那么你就可以将6000个正常样本划为训练集,剩下的正常样本和异常样本对半分给交叉验证集和测试集,接下来再来看看算法评估的具体步骤。
我们首先会用上面划分出来的训练集去拟合我们的模型p,然后通过交叉验证集和训练集去预测y的值,观察预测的效果,但是这里y=0的结果会远比y=1的结果多,所以以正确率为判断标准并不合适,故我们会用到之前讲到的真假阳性与真假阴性来计算出准确率和回归率,最终算出F1的值来判断算法的好坏。
这里还有一点要注意的是对于epsilon即阈值的选取,我们可以尝试不同的epsilon来观察F1的值,然后选取F1值最大的那个epsilon作为训练的阈值。
通过上节课的学习,你可能会想已经有标签的数据集了为什么不直接使用监督学习算法进行训练,那么这节课就来讲讲什么时候用异常检测合适,什么时候用监督学习合适。
而异常检测的典型应用就是之前讲到的欺诈检测、制造领域产品检测、计算机数据管理中心等,监督学习包括垃圾邮件分类、天气预测、癌症预测等应用。
在你使用异常检测时,对于用于算法训练的数据选择,有时候也会影响算法的效果,如下:
有时候你的数据可能会像上方最上面的那个直方图一样,这时候图像接近于一个高斯分布,那么直接用于算法训练并不会造成多大影响,但是如果按照其下面这个不匀称的直方图的话,就需要先进行一次数据处理,例如加入log函数或者平方开方等操作,转化为类似于高斯分布图像,再拿去进行训练。
在进行异常检测时,我们还可能遇到正样本和负样本得出的p(x)都很大的情况,如下:
可以看到有时候如果只有一个特征,那么从高斯分布图像来看,异常点可能会夹杂在正常点中间,难以进行区分,这时候你就可以想出一个新的特征加入进去,这样很可能就能将异常点分离出来。
最后,再来介绍一下对于特征选取的一些建议。
有时候你可能发现你的一些特征处于线性关系,例如CPU负载和网络流量,并且这时候某台计算机进入一个死循环无法进行检测,是因为它的CPU负载很高但是网络流量确实正常的,所以就难以进行检测,故这时候就可以设置新的特征,例如将CPU负载与网络流量相除,或者将CPU负载的平方与网络流量相除,就能很好的解决这类问题。
有时候,如果我们单独对每个变量进行高斯分布,然后将他们用于异常检测的话,可能有些异常点的p(x)值都不会很低。
从上图可以看出,这时候我们就要引出多变量高斯分布了。
这次,我们分别对特征进行高斯分布,而是对特征整体放入p(x)模型中得到高斯分布,这时候我们的参数sigma就成为了一个对角线矩阵,接下来我们观察一下当参数变化时图像的改变,以两个特征为例。
可以发现,当对角矩阵上的值变小时,图像会变得更尖,值变大时,图像会变得更扁。
如果只改变特征中一个值的话,就只会改变那个特征上的方差大小。
如果改变sigma非对角线上的值的话,它的投影图像就会往y=x直线方向靠近。
如果将sigma非对角线的值改成负数的话,投影图像就会往上个案例的反方向靠近。
当然,你不光可以改变sigma矩阵中的值,也可以改变μ矩阵中的值,这会使分布中心发生偏移。
那么接下来,我们看看如果将多变量高斯分布用于异常检测当中。
这里参数拟合计算中的sigma与我们之前PCA的主成分分析问题规划用到的是一样的,下面是具体步骤。
我们先用训练集的数据去拟合出参数得到p(x)模型,然后将新样本带入p(x)模型中计算,从而判断是否为异常点。
我们一般会用原始模型较为多一些,接下来我们来看看原始的模型与这个多元的模型有什么区别。