机器学习(9)--异常检测(多元高斯分布等)

吴恩达ML课程课后总结,以供复习、总结、温故知新,也欢迎诸位评论讨论分享,一起探讨一起进步:


上一篇:机器学习(8)--PCA算法及python中sklearn模块实现https://blog.csdn.net/qq_36187544/article/details/88394909

下一篇:机器学习(10)--推荐系统https://blog.csdn.net/qq_36187544/article/details/88529608


异常检测:什么叫异常,偏离过大的数据称之为异常。
构造模型p(x),当p<ε可能就存在异常。应用举例,网购网站,判定用户是否存在异常可以验证其身份防止欺诈行为,在工业界中找到异常数据进行剖析。

恕我目光短浅,感觉一般存在异常不用算法去检测吧,比如如果流量异常,直接监控就行了,把异常的提出来就好了。工业界数据都有标准值的,如果异常直接就有答案结果。。。不管怎样还是看看这异常检测算法吧


首先得介绍下高斯分布,高斯分布(正态分布):X~N(μ,σ^2)特征X服从正态分布

异常检测算法:是看到得最简单得一个算法,第一步求均值和方差,第二步求p(x)。p(x)就是建立一个独立假设(也称为密度估计问题,好熟悉的概率论与数理统计)其算法就是独立假设问题求概率

机器学习(9)--异常检测(多元高斯分布等)_第1张图片

开发评估异常检测系统:设定一个ε,对特征进行异常检测算法评估,判定这个特征是否稳定需要,假设10000正确数据,20异常数据,训练集为6000正确数据,验证集为2000正确+10异常数据,测试集为2000正确+10异常数据,这样划分比较科学(注意这里使用的是监督学习的数据即划分了y=1还是y=0的数据)


从异常检测系统发现,好像是与监督学习算法差不多,比如线性回归,某些点与回归曲线差距过大,异常。对比下异常检测和监督学习算法:

异常检测  监督学习算法
如果y=1阳性样本很少,y=0阴性样本很多 大量的阴性阳性样本
大量的原因导致y=1异常,且得到的异常数量很少(因为异常假设是独立假设问题,这里是正态分布连乘得到,所以每一项因子都可能导致异常,如果采用监督学习算法侦测不出这些因子),异常原因可能改变,未来的异常样本可能截然不同
 
得到y=1负样本的原因差不多,监督学习算法会得到更准确的结果,未来的负样本也是相似的
                                                                                             应用举例
欺诈行为检测,制造业问题产品没那么多问题样本 垃圾邮件(样本数量足够多),天气预报,癌症预测等(正负样本足够多)
                                                         (根本原因在于监督学习不可能从极少的负样本中学习到足够的内容)

建议:进行异常检测算法前,建议把数据转换为正态分布(log(x+C)转换,C为常数或者x^1/2,x^1/3,x的小数次方等,调整参数使分布更接近正态分布)

机器学习(9)--异常检测(多元高斯分布等)_第2张图片


多元高斯分布:当多元分布时,其实概率密度对应的是一层层圆形(如下图,根本原因是特征与特征之间独立),所以需要改良p(x;μ,∑),∑是协方差矩阵

机器学习(9)--异常检测(多元高斯分布等)_第3张图片机器学习(9)--异常检测(多元高斯分布等)_第4张图片机器学习(9)--异常检测(多元高斯分布等)_第5张图片
改变协方差矩阵对角线元素,改变在x1,x2方向上的延展或收缩,改变非对角线上的元素,改变y=x方向的延展(值为正时正相关,若非对角线元素值为负则负相关,y=-x方向延展)。改变μ就是改变中心点
最终的数学思想就是X1,X2两个参数是否独立分布,不独立就是多元正态分布

多元正态分布公式为,若p(x)<ε则异常:

求参数均值μ和协方差矩阵Σ:


注意事项:如果训练集大小m很小还是采用普通高斯模型(如果x1,x2相关,就新建一个参数x1/x2这样就能得到同样的结果),如果m>n(n特征数量)最好m>10*n就用多元高斯,因为不需要手动取添加x1/x2这样的特征。如果∑奇异也不能用多元高斯(可能原因一是m没有远大于n,一是特征冗余,相当于矩阵相关,导致不可逆)

 

写在最后:提供了一种检测异常的手段,但是好像没有具体的特别多的用处,记录下来以供之后参考吧

你可能感兴趣的:(#,机器学习,异常检测,机器学习,高斯分布,多元高斯分布,协方差矩阵)