吴恩达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)就是建立一个独立假设(也称为密度估计问题,好熟悉的概率论与数理统计)其算法就是独立假设问题求概率
开发评估异常检测系统:设定一个ε,对特征进行异常检测算法评估,判定这个特征是否稳定需要,假设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的小数次方等,调整参数使分布更接近正态分布)
多元高斯分布:当多元分布时,其实概率密度对应的是一层层圆形(如下图,根本原因是特征与特征之间独立),所以需要改良p(x;μ,∑),∑是协方差矩阵。
改变协方差矩阵对角线元素,改变在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,一是特征冗余,相当于矩阵相关,导致不可逆)
写在最后:提供了一种检测异常的手段,但是好像没有具体的特别多的用处,记录下来以供之后参考吧