【第九周:异常检测与推荐系统】


协同过滤涉及的公式较多,不用细究,只是方便清楚协同过滤的来源列出。想知道更多网易云课堂可以搜索吴恩达机器学习。

一、异常检测

异常检测模型根据测试样本的位置密度信息告诉我们其属于一组数据的可能性,是一种密度估计的方法。
eg:有2个黄色测试样本,其中在蓝色圈(高斯分布模型获得的判定边界)内的数据属于该组数据的可能性较高,而越是偏远的数据,其属于该组数据的可能性就越低。
在这里插入图片描述
建立密度估计模型𝑝(𝑥),𝑝(𝑥) < 𝜀就表示数据更偏远,更异常,𝑝(𝑥) > 𝜀表示数据与大部分正常数据相似。
在这里插入图片描述

高斯分布(正态分布)

如果数据x服从正态分布,其密度估计为:
在这里插入图片描述
其中𝜇是平均值,σ²代表方差,σ是标准差:
在这里插入图片描述
在这里插入图片描述
平均值决定中心轴,标准差决定了正态曲线的形状:
在这里插入图片描述
补充:
标准差越小,数据越集中,标准差越大,数据越分散
[-σ,σ]内的数据占整体数据的68%,[-2σ,2σ]内的数据占整体样本的95%,[-3σ,3σ]内的数据占整体样本的99.7%

建立密度估计模型𝑝(𝑥)

应用高斯分布开发异常检测密度估计模型𝑝(𝑥)。

  1. 对于给定的数据集,先针对每一个特征计算 𝜇 和 σ²的估计值
    在这里插入图片描述

  2. 有了平均值和方差,就可以对测试样本计算𝑝(𝑥),当𝑝(𝑥)<𝜀时,为异常
    在这里插入图片描述
    eg:下图是一个有两个特征的训练集,以及特征的正态分布情况:
    在这里插入图片描述
    下面的三维图表示的是密度估计函数,x轴、y轴分别是两个特征的密度估计,z轴为𝑝(𝑥),
    在这里插入图片描述

多元高斯分布

引入

在上一个例子中,样本分布比较集中,或者说特征x1和x2之间无相关性。当样本分布如下图所示时,x1是计算机CPU负荷,x2是计算机内存使用量,因为x1负荷增加,x2内存使用量也会随着增加,所以说这两个特征是正相关的。
在这里插入图片描述
若此时用一元高斯分布来建立密度估计模型𝑝(𝑥),将会得到粉色的圆型密度边界,则会将箭头指向的绿色测试样本判定为正常。所以一元高斯分布不适用于这种带有相关性的数据集,多元高斯分布将创建像图中蓝色曲线所示的判定边界。
在这里插入图片描述

多元高斯分布建立密度估计模型𝑝(𝑥)

在一元高斯分布模型中,我们计算 𝑝(𝑥) 的方法是: 通过分别计算每个特征对应的几率然后将其累乘起来,在多元高斯分布模型中,我们将构建特征的协方差矩阵,用所有的特征一起来计算 𝑝(𝑥)。

  1. 计算所有特征的平均值组成一个向量u,再计算协方差矩阵Σ
    在这里插入图片描述
  2. 计算多元高斯分布的𝑝(𝑥)
    在这里插入图片描述
    其中,涉及到求协方差矩阵的逆矩阵,当n很大时,计算量很大,则不适用;或者当m<n,特征之间有冗余时,导致协方差矩阵不可逆,则也不适用。

协方差矩阵Σ与相关性

协方差矩阵Σ的主对角线元素代表的是方差σ²,其余元素是两两随机特征之间的协方差,协方差刻画了特征与特征之间的相关性,所以多元高斯分布可以来处理带有相关性的数据集。
下面是一些二维样本的多元高斯分布的例子:
在这里插入图片描述
一元高斯分布模型是多元高斯分布模型的一个子集,当Σ只有主对角线上有元素时,就是一元高斯分布模型(如上)。eg:当x2的方差从1变为0.6时,在x2的正态分布更窄,所以从等高图中会看到一个横着的椭圆。
在这里插入图片描述
当Σ非对角线上有正值,则表示x1与x2正相关,当协方差从0.5增大到0.8,说明相关性更强,得到一个更窄的正态分布。
在这里插入图片描述
当Σ非对角线上有负值,则表示x1与x2负相关,当协方差从-0.5减小到-0.8,说明负的相关性更强,也得到一个更窄的正态分布。

模型评估

当我们开发一个异常检测系统时,我们从带标记(异常或正常)的数据着手,我们从其中选择60%正常数据用于构建训练集,然后用20%的正常数据和50%的异常数据作为交叉验证集,再用20%的正常数据和50%的异常数据作为测试集。
具体的评价方法如下:

  1. 根据测试集数据构建𝑝(𝑥)函数
  2. 对交叉检验集,我们尝试使用不同的𝜀值作为阀值,并预测数据是否异常,根据 F1 值或者查准率与查全率的比例来选择 𝜀。link【类偏斜的误差度量】
  3. 选出 𝜀 后,针对测试集进行预测,计算异常检验系统的𝐹1值,或者查准率与查全率之比评估预测效果。

异常检测与监督学习对比

在模型评估中,我们从带标记(异常或正常)的数据着手,与监督学习有些相似,下面的对比有助于选择采用监督学习还是异常检测:
在这里插入图片描述

二、推荐系统

以电影推荐系统为例:我们希望构建一个算法来预测他们每个人可能会给他们没看过的电影打多少分。
在这里插入图片描述

基于内容的推荐系统(利用线性回归)

基于内容的推荐系统:对于每一部电影,我们都有了可用的特征,使用这些特征可以训练出每一个用户的参数。
对于上述两类电影,我们可以假设每部电影都有两个特征,如x1代表电影的浪漫程度,x2代表电影的动作程度。所以每部电影都有一个特征向量[x0,x1,x2]。x0=1是偏执项,所以对每个用户要学习3个参数θ。
引入一些标记:
在这里插入图片描述
利用线性回归,对于用户 𝑗 和电影 𝑖,我们预测评分为:
在这里插入图片描述
并通过以下目标函数来训练第j个用户的参数 θ:
在这里插入图片描述
其中𝑖: 𝑟(𝑖,𝑗)表示我们只计算那些用户 𝑗 评过分的电影。
为了学习所有用户的参数,我们将所有用户的代价函数求和:

若利用梯度下降法来求解最优解:
在这里插入图片描述

基于用户的推荐系统

前面我们拥有每一部电影的可用特征,使用这些特征可以训练出每一个用户的参数。
如果我们拥有用户的参数,我们也可以通过上述方法学习得出电影的特征,从而预测评分,优化目标如下:
在这里插入图片描述

协同过滤

如果我们既没有用户的参数,也没有电影的特征,前面两种方法都不可行。则需要引入协同过滤算法,协同过滤算法可以同时学习这两者。协同过滤的优化目标函数就是上面两个目标函数的结合。

步骤

  1. 初始 𝑥(1)…𝑥(𝑛𝑚), 𝜃(1)…𝜃(𝑛𝑢)为一些随机小值
  2. 使用梯度下降算法最小化代价函数
    在这里插入图片描述
    在这里插入图片描述
  3. 在训练完算法后,我们预测𝜃(𝑗)𝑥(𝑖)为用户 𝑗 给电影 𝑖 的评分

均值归一化

除了给未打分的电影评分,假设有一个没有打过分的新用户eva,如何预测他的打分来推荐电影呢:平均分。
在这里插入图片描述
我们首先需要对𝑌矩阵进行均值归一化处理,将每一个用户对某一部电影的评分减去所有用户对该电影评分的平均值:
在这里插入图片描述
然后我们利用这个新的 𝑌 矩阵来进行协同过滤,因为新的矩阵是减过平均值的,所以预测出的结果再加上平均值𝜃(𝑗)𝑥(𝑖) + 𝜇(𝑖)。
观察优化目标函数有关θ的部分,因为eva没有评过分,所以第一项不会影响eva的参数θ,所以就看第三项,要最小化,则会得到0值的θ,所以评分𝜃(𝑗)𝑥(𝑖) =0,𝜃(𝑗)𝑥(𝑖) + 𝜇(𝑖)=𝜇(𝑖),所以eva的评分是平均分,电影网站推给新用户的电影是平均高分电影也符合现实逻辑。
在这里插入图片描述

  • 28
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值