Coursera机器学习(Andrew Ng)笔记:异常检测与推荐系统

异常检测(Anomaly Detection)

机器学习初学者,原本是写来自己看的,写的比较随意。难免有错误,还请大家批评指正!对其中不清楚的地方可以留言,我会及时更正修改

[参考请点击这里]

异常检测是机器学习算法的常见应用,它主要用于非监督学习问题,但从某些角度看,又十分类似一些监督学习问题。
假设我们有m个样本 x(1)x(m) 都是正常的,我们需要一个算法告诉我们,新样本 xtest 是不是正常的,即这个新样本是否异常。这里使用的方式是对已有的无标签样本数据进行建模 p(x) ,也可以理解成是对x的分布概率进行建模。模型建立之后,对于新样本 xtest ,如果它的概率 p 小于某个阈值ϵ,它就被标记为异常。
异常检测可以应用在欺诈检测,飞机引擎参数检测,数据中心的计算机监控等。

高斯分布Gaussian Distribution

又常称作正太分布Normal Distribution,其分布函数可以描述为 xN(μ,σ2) ,其中 μ 称作均值,是曲线的中心, σ2 称作方差,亦即 σ 是标准差。完整的分布函数描述为:

p(x;μ,σ2)=1σ(2π)e12(xμσ)2

μ=1mi=1mx(i)

σ2=1mi=1m(x(i)μ)2

算法

给定训练集 {x(1),,x(m)} ,每个样本是一个向量,即 xRn 。则异常检测算法的模型表示为:

p(x)=p(x1;μ1,σ21)p(x2;μ2,σ22)p(xn;μn,σ2n)=j=1np(xj;μj,σ2j)

其中, μj=1mi=1mx(i)j,σ2j=1mi=1m(x(i)jμj)2 。因此, p(x) 也可以写作
p(x)=j=1np(xj;μj,σ2j)=j=1n12πσjexp((xjμj)22σ2j)

当计算出的 p(x)<ϵ 时,标记为异常。这种估计 p(x) 分布的问题,通常被称作密度估计问题。
这里写图片描述

开发和评估异常检测系统

评估我们的学习算法,首先要获得一些标记好的数据,将其分成异常样本( y=1 )和非异常样本( y=0 )。在进行训练时,使用大量的正常样本,剩余的正常样本和异常样本供交叉验证集和测试集使用。通常,将正常样本按照6:2:2的比例进行分配,异常样本按照1:1的比例分到交叉验证机和训练集中。如下图:
这里写图片描述
由于我们的样本是偏斜的(如单独预测y=0就可以得到很高的准确率),因此,这里常使用精确率、召回率、 F1 值等方法进行算法评估(详见“机器学习系统设计”章节)。
注:我们使用交叉验证集来选择阈值 ϵ

异常检测VS监督学习

使用异常检测
- 样本中有很少的正样本即异常样本(0-20),和大量的负样本。
- 异常类型比较多样,对于任何机器学习算法,都很难从正样本中学习得到出现异常的规律,亦即很难预测异常的产生。未来的样本参数规律可能跟训练样本的任何一个都不相似。

使用监督学习
- 有大量的正负样本,训练集可以被均匀的分成两类
- 有足够的正样本可以帮助我们对正样本的产生和规律有一定了解。未来的样本可能跟训练样本的某一个非常相似。

选择合适的特征

特征的选择对异常检测算法的影响很大,由于我们的算法使用的是高斯分布模型,因此我们希望选取的特征也能够满足高斯分布。可以通过绘制特征的直方图来判断特征的分布情况,对于不满足高斯分布的特征,可以进行 log(x+c),x1/2 等方式进行变换,使其满足高斯分布。
通常,我们希望 p(x) 对异常样本给出一个较低的概率,对正常样本给出一个较高的概率,但当 p(x) 对这两种样本给出的概率差不多时,就需要仔细检查那些给出较高概率的异常样本,找出一些新的特征能够区分两种数据。
在选择特征的过程中,通常选择那些值不太大,也不太小的特征。

多元高斯分布

与之前分别建模 p(x1),p(x2) 不同,我们直接对 p(x) 进行建模:

p(x;μ,Σ)=1(2π)n/2|Σ|1/2exp(12(xμ)TΣ1(xμ))

其中 μRn,ΣRn×n ,这个模型可以建模椭圆形高斯曲线轮廓。 μ 决定了图形的中心, Σ 决定了图形的形状,宽度,及轴线的方向等参数。
之前的模型只是该模型的一个特例,它的轴线方向与坐标轴平行。
多元高斯分布可以自动捕捉不同特征之间的相互关系。

推荐系统(Recommender System)

[参考请点击这里]

推荐是机器学习的一个很流行的应用,我们考虑用户给电影进行评分的案例,每个用户都会对一部分电影进行评分,我们根据已评的分数来推测该用户对其他电影的评分,进而给用户进行电影推荐。
这里写图片描述
先定义以下参数:
nu= 用户总数
nm= 电影总数
r(i,j)=1 如果用户 j 对电影i进行了评分
y(i,j)= 用户 j 对电影i评的分数( r(i,j)=1 时)

基于文本的推荐Content Based Recommendations

我们引入两个特征 x1,x2 ,分别代表电影是爱情片或动作片的程度,取值0-1。一个方法就是我们对每个没用进行线性回归,得到参数 θ(j)R3 ,预测用户 j 对电影i的评分 (θ(j))Tx(i)
学习 θ(j) ,与线性回归类似,有下式:
minθ(j)=12i:r(i,j)=1((θ(j))T(x(i))y(i,j))2+λ2k=1n(θ(j)k)2
得到所有用户的参数,参考下式:
minθ(1),,θ(nu)=12j=1nui:r(i,j)=1((θ(j))T(x(i))y(i,j))2+λ2j=1nuk=1n(θ(j)k)2
我们可以使用之前学过的梯度下降算法优化上式。

协同过滤Collaborative Filtering

很多时候,我们很难对一部电影给出一个爱情程度或动作程度的参数。为解决这个问题,我们可以让用户告诉我们他们喜欢那些种类的电影,直接提供参数向量。从给定的参数中推测特征,我们对所有用户使用正则化的平方误差函数:
minx(1),,x(nm)12i=1nmj:r(i,j)=1((θ(j))Tx(i)y(i,j))2+λ2i=1nmk=1n(x(i)k)2
也可以随机猜测用户的特征参数,对该参数进行迭代优化,最终收敛到一组很好的特征。

算法实现

根据前两节的内容,我们知道,如果给定电影特征,我们可以使用这个资料去获得用户参数;相反,如果给定用户参数数据,我们也可以使用这些资料获得电影特征。将这些概念合并,就形成了我们的协同过滤算法。其模型如下:
J(x,θ)=12(i,j):r(i,j)=1((θ(j))Tx(i)y(i,j))2+λ2i=1nmk=1n(x(i)k)2+λ2j=1nuk=1n(θ(j)k)2
通过比较可以明显看出,这个模型只是上两节模型的组合。这个模型可以自己学习。在该模型中,偏差单元 x0=1 这一项被移除,因此有 xRn,θRn
算法执行步骤如下:
1 将 x(i),...,x(nm),θ(1),...,θ(nu) 初始化成较小的随机值。随机初始化可以打破对称,保证算法学习到彼此不同的特征。
2 使用梯度下降(或其他优化算法)最小化代价函数 J(x(i),...,x(nm),θ(1),...,θ(nu)) ,即前述的 j(x,θ) ,对每个 j=1,...,nu,i=1,...nm
x(i)k:=x(i)kαj:r(i,j)=1((θ(j))Tx(i)y(i,j))θ(j)k+λx(i)k
θ(j)k:=θ(j)kαi:r(i,j)=1((θ(j))Tx(i)y(i,j))x(i)k+λθ(j)k
3 对参数为 θ 的用户,和特征为 x 的电影,预测评分θTx

向量化:低秩矩阵分解Low Rank Matrix Factorization

给定矩阵 X (每行包含电影特征)和Θ(每行包含用户特征),则预测矩阵 Y 可以表示成Y=XΘT,如下图
这里写图片描述
预测产品 i j的相似程度,可以使用它们之间的欧式距离来衡量,亦即我们要寻找 ||x(i)x(j)|| 的较小值。

均值归一化Mean Normalization

我们考虑一个用户没有给任何电影评分的例子,回头看我们的协同过滤算法,为了使正则项最小化,它会使这个用户的参数 θ 变成一个零向量,显然,这不是我们想要的结果。使用均值归一化可以帮助解决类似的问题。
首先,我们使用矩阵 Y 表示先前的评分矩阵,定义向量μ=[μ1,μ2,,μnm],其中 μi=j:r(i,j)=1Yi,jjr(i,j)
其实就是对每行的评分进行了均值,如下例:
Y=54005?000?550040
μ=2.522.251.25
Y=Yμ=2.52.2.251.252.5?2.251.252.5?3.753.752.521.251.25
上述预处理过称完毕后,我们新的预测函数变成: (θ(j))Tx(i)+μi 。回到我们之前说的没有打分的例子,通过新的预测函数处理后,预测出来的评分就等于向量 μ 。相当于使用已有数据的均值对未知用户进行了预测。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值