吴恩达机器学习课程-第九周

1.异常检测

1.1 问题定义

给定数据集 x ( 1 ) 、 x ( 2 ) 、 . . . x ( m ) x^{(1)}、x^{(2)}、...x^{(m)} x(1)x(2)...x(m),并且假设这些数据都是正常的,此时要检测新数据 x t e s t x_{test} xtest是不是异常数据。此时构建模型 p ( x ) p(x) p(x),该值表示属于正常数据的可能性:当 p ( x ) < ξ p(x) \lt \xi p(x)<ξ时,该点属于异常数据;当 p ( x ) ≥ ξ p(x) \ge \xi p(x)ξ时,该点属于正常数据

1.2 高斯分布

x x x符合高斯分布时,记为 x ∼ N ( μ , σ 2 ) x\sim N(\mu,\sigma^2) xN(μ,σ2),其概率密度函数为: p ( x , μ , σ 2 ) = 1 2 π σ e x p ( − ( x − μ ) 2 2 σ 2 ) p(x,\mu,\sigma^2)=\frac{1}{\sqrt{2\pi\sigma}}exp(-\frac{(x-\mu)^2}{2\sigma^2}) p(x,μ,σ2)=2πσ 1exp(2σ2(xμ)2),该函数的图像如下:

在这里插入图片描述

此时有数据集 x ( 1 ) 、 x ( 2 ) 、 . . . x ( m ) x^{(1)}、x^{(2)}、...x^{(m)} x(1)x(2)...x(m)(下图红点所示),要说明它们服从哪个分布,可以用高斯分布拟合,因为它们和高斯分布的概率密度函数图像类似,中间密集两边分散:

在这里插入图片描述

1.3 算法

对于数据集 x ( 1 ) 、 x ( 2 ) 、 . . . x ( m ) x^{(1)}、x^{(2)}、...x^{(m)} x(1)x(2)...x(m),要针对每个特征 j j j计算 μ \mu μ σ 2 \sigma^2 σ2的估计值: μ j = 1 m ∑ i = 1 m x j ( i ) , σ j 2 = 1 m ∑ i = 1 m ( x j ( i ) − μ j 2 ) 2 \mu_j=\frac{1}{m}\sum_{i=1}^mx_j^{(i)},\sigma^2_j=\frac{1}{m}\sum_{i=1}^m(x_j^{(i)}-\mu_j^2)^2 μj=m1i=1mxj(i),σj2=m1i=1m(xj(i)μj2)2

获取了均值和方差的估计值后,给定新训练样本。可以计算 p ( x ) = ∏ j = 1 n p ( x j ; μ j , σ j 2 ) = ∏ j = 1 1 1 2 π σ j exp ⁡ ( − ( x j − μ j ) 2 2 σ j 2 ) p(x)=\prod_{j=1}^{n} p\left(x_{j} ; \mu_{j}, \sigma_{j}^{2}\right)=\prod_{j=1}^{1} \frac{1}{\sqrt{2 \pi} \sigma_{j}} \exp \left(-\frac{\left(x_{j}-\mu_{j}\right)^{2}}{2 \sigma_{j}^{2}}\right) p(x)=j=1np(xj;μj,σj2)=j=112π σj1exp(2σj2(xjμj)2),这里假设了特征间是独立的。当计算的 p ( x ) < ξ p(x) \lt \xi p(x)<ξ时就可以认为该样本是异常的

1.4 开发和评价异常检测系统

异常检测算法是无监督学习算法,但是要检验该算法是否有效,需要使用带标记(异常或正常)的数据。首先从其中选择一部分正常数据用于构建训练集,然后用剩下的正常数据和异常数据混合的数据构成交叉检验集和测试集。假设有10000台正常引擎的数据,有20台异常引擎的数据:

  • 6000台正常引擎的数据作为训练集
  • 2000台正常引擎和10台异常引擎的数据作为交叉检验集
  • 2000台正常引擎和10台异常引擎的数据作为测试集

评价方法:

  1. 根据训练集估计特征的平均值和方差并构建函数 p ( x ) p(x) p(x)
  2. 对交叉检验集使用不同的 ξ \xi ξ作为阀值,并预测数据是否异常,根据 F 1 F1 F1值或者查准率与查全率的比例(因为数据倾斜,所以使用上述评价指标)来选择 ξ \xi ξ(也可以选择加入哪些特征)
  3. 选出 ξ \xi ξ后,针对测试集进行预测,计算 F 1 F1 F1值或者查准率与查全率之比

1.5 异常检测与监督学习对比

​在1.4节中提到异常检测系统使用了带标记的数据,为什么不直接将异常检测视为监督学习,然后采用神经网络或逻辑回归进行预测?此时需要了解这两者间的使用场景:

异常检测监督学习
通常有非常少量的正类(即异常数据)和大量的负类(即正常数据),说明使用负类可以很好拟合 p ( x ) p(x) p(x)的值一般同时有大量的正类(即异常数据)和负类(即正常数据)
存在许多不同种类的异常,但是只有少量的正类数据(即异常数据)来训练算法有足够多的正类(即异常数据)实用于训练算法
未来遇到的异常可能与已掌握的异常非常的不同未来遇到的正类实例(即异常数据)可能与训练集中的非常近似
欺诈行为检测、数据中心的计算机运行状况邮件过滤器、天气预报、肿瘤分类

1.6 特征选择

异常检测假设特征符合高斯分布,如果数据的分布不是高斯分布,异常检测算法也能够工作,但为了算法的有效性需要进行转换,下图令 x 1 = l o g ( x 1 ) x_1=log(x_1) x1=log(x1),将非高斯分布数据转换为高斯分布:

在这里插入图片描述

通常情况下,更加某个或某些特征可能很难区分去异常和正常数据,如下面左子图的绿色点,它是异常点但是计算出的 p ( x ) p(x) p(x)值较大,最后可能被视为正常点。此时可以将一些相关的特征进行组合,来获得一些新的更好的特征,如下面右子图的 x 2 x_2 x2,在 x 1 x_1 x1值接近的情况下,由于异常点的 x 2 x_2 x2值较大,计算出的 p ( x ) p(x) p(x)小于某阈值(在图中体现出离正常点较远),就可以正确地进行判断;

在这里插入图片描述

1.7 多元高斯分布

假设数据有两个特征,在下图中绿色点属于异常点,但是由于该点处于紫红色区域内,最终会被视为正常点,如果采用多元高斯模型(判定边界变为蓝色曲线)可以很好将异常点分出来:

在这里插入图片描述

出现上述问题是因为一般高斯分布模型尝试的是去同时抓住这两个特征的偏差(因为计算了每个特征对应的几率然后将其累乘),所以创造出一个比较大的判定边界。在多元高斯分布模型中将构建特征的协方差矩阵,用所有的特征一起来计算 p ( x ) p(x) p(x)

μ = 1 m ∑ i = 1 m x ( i ) Σ = 1 m ∑ i = 1 m ( x ( i ) − μ ) ( x ( i ) − μ ) T = 1 m ( X − μ ) T ( X − μ ) \begin{aligned} \mu &=\frac{1}{m} \sum_{i=1}^{m} x^{(i)} \\ \Sigma &=\frac{1}{m} \sum_{i=1}^{m}\left(x^{(i)}-\mu\right)\left(x^{(i)}-\mu\right)^{T}=\frac{1}{m}(X-\mu)^{T}(X-\mu) \end{aligned} μΣ=m1i=1mx(i)=m1i=1m(x(i)μ)(x(i)μ)T=m1(Xμ)T(Xμ)

p ( x ) = 1 ( 2 π ) n 2 ∣ Σ ∣ 1 2 exp ⁡ ( − 1 2 ( x − μ ) T Σ − 1 ( x − μ ) ) p(x)=\frac{1}{(2 \pi)^{\frac{n}{2}}|\Sigma|^{\frac{1}{2}}} \exp \left(-\frac{1}{2}(x-\mu)^{T} \Sigma^{-1}(x-\mu)\right) p(x)=(2π)2nΣ211exp(21(xμ)TΣ1(xμ))

​其中, μ \mu μ n n n维向量, ∑ \sum n × n n×n n×n的正定矩阵。下图为不同的协方差矩阵对应的不同模型图,如果协方差矩阵只在对角线的单位上有非零的值时,该模型为原高斯分布模型(即前面三个子图):

在这里插入图片描述

  • 保持特征1和特征2的偏差
  • 特征1有较小的偏差,保持特征2的偏差
  • 特征2有较大的偏差,保持特征1的偏差
  • 不改变两个特征的原有偏差,增加两者之间的正相关性
  • 不改变两个特征的原有偏差,增加两者之间的负相关性
原高斯分布模型多元高斯分布模型
不能捕捉特征之间的相关性,需要通过将特征进行组合自动捕捉特征之间的相关性
计算代价低,能适应大规模的特征训练集较大时计算代价高(计算协方差矩阵代价高)
必须保证协方差矩阵可逆(即保证 m > n m>n m>n且特征不冗余)

2.推荐系统

2.1 基于内容的推荐系统

如下图所示,假设每个电影由一个特征向量表示,其中 x 1 x_1 x1表示电影的浪漫程度, x 2 x_2 x2表示电影的动作程度:

在这里插入图片描述

此时要预测用户 j j j对于电影 i i i的评分,可以采用线性回归模型,评分为 ( θ ( j ) ) T x ( i ) (\theta^{(j)})^Tx^{(i)} (θ(j))Tx(i),其中 θ ( j ) \theta^{(j)} θ(j)为用户 j j j的特征向量, x ( i ) x^{(i)} x(i)为电影 i i i的特征向量。对于所有用户,代价函数如下,其中 i : r ( i , j ) i:r(i,j) i:r(i,j)表示只计算用户 j j j评过分的电影, y i , j y^{i,j} yi,j表示用户 j j j对电影 i i i的评分:

min ⁡ θ ( 1 ) 、 θ ( 2 ) 、 . . . θ ( n u ) 1 2 ∑ j = 1 n u ∑ i : r ( i , j ) = 1 ( ( θ ( j ) ) T x ( i ) − y ( i , j ) ) 2 + λ 2 ∑ j = 1 n u ∑ k = 1 n ( θ k ( j ) ) 2 \min\limits_{\theta^{(1)}、\theta^{(2)}、...\theta^{(n^u)}}\frac{1}{2}\sum_{j=1}^{n^u}\sum_{i:r(i,j)=1}((\theta^{(j)})^Tx^{(i)}-y^{(i,j)})^2+\frac{\lambda}{2}\sum_{j=1}^{n^u}\sum_{k=1}^{n}(\theta_k^{(j)})^2 θ(1)θ(2)...θ(nu)min21j=1nui:r(i,j)=1((θ(j))Tx(i)y(i,j))2+2λj=1nuk=1n(θk(j))2

2.2 协同过滤

在基于内容的推荐系统中,假设每一部电影的特征是已知的,则可以通过目标函数计算出用户的特征向量;假设每一个用户的特征是已知的,则可以通过目标函数计算出电影的特征向量。但是如果即没有电影的特征也没有用户的特征,该如何计算评分?

  1. 随机初始化所有电影的特征 x ( 1 ) 、 x ( 2 ) 、 . . . x ( n m ) x^{(1)}、x^{(2)}、...x^{(n_m)} x(1)x(2)...x(nm)和所有用户的特征 θ ( 1 ) 、 θ ( 2 ) 、 . . . θ ( n u ) \theta^{(1)}、\theta^{(2)}、...\theta^{(n_u)} θ(1)θ(2)...θ(nu)
  2. 构建以下目标函数并进行梯度更新:

在这里插入图片描述

  1. 通过更新完毕后的 θ \theta θ x x x计算评分

2.3 低秩矩阵分解

并不是说将原矩阵分解后,形成的两个矩阵的秩是比原矩阵的秩低就称为低秩矩阵分解。如果 X X X是一个 m ∗ n m*n mn的数值矩阵, r a n k ( X ) rank(X) rank(X) X X X的秩,假如 r a n k ( X ) rank(X) rank(X)远小于 m m m n n n,则称 X X X是低秩矩阵。低秩矩阵特性如下:

  • 每行或每列都可以用其他的行或列线性表出,即它包含大量的冗余信息
  • 利用冗余信息,可以对缺失数据进行恢复,也可以对数据进行特征提取

2.4 均值归一化

在下面数据,用户EVe没有对任何电影评分,如果采用2.2节中的目标函数,则前面一项为0(因为没有 ( i , j ) : r ( i , j ) = 1 (i,j):r(i,j)=1 (i,j):r(i,j)=1),为了最小化目标函数,只能最小化正则项,所以最终计算出的 θ ( E v e ) \theta^{(Eve)} θ(Eve)接近了0,最终计算出该用户对所有电影的评分也就为0:

在这里插入图片描述

对于这种情况,需要对矩阵 Y Y Y进行均值归一化处理,即计算出矩阵中每一行的均值(只计算有数值的部分),并将每一个用户对某一部电影的评分减去所有用户对该电影评分的平均值,将新的矩阵 Y Y Y用于训练,但是最终的评分需要重新加上均值 ( θ ( E v e ) ) T x ( i ) + μ i (\theta^{(Eve)})^Tx^{(i)}+\mu_i (θ(Eve))Tx(i)+μi,意味着最后即使用户没有对任何电影评分,该用户的预测评分也是该电影的平均分:

在这里插入图片描述

3.参考

https://www.bilibili.com/video/BV164411b7dx?p=88-101

http://www.ai-start.com/ml2014/html/week9.html

低秩矩阵分解博文

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值