coursera机器学习算法课: 异常检测 & 推荐系统

这部分内容来源于Andrew NG老师讲解的 machine learning课程,包括异常检测算法以及推荐系统设计。异常检测是一个非监督学习算法,用于发现系统中的异常数据。推荐系统在生活中也是随处可见,如购物推荐、影视推荐等。课程链接为: https://www.coursera.org/course/ml。

(一)异常检测(Anomaly Detection)

举个例子:

我们有一些飞机发动机特征的sample: {x (1) ,x (2) ,...,x (m) } ,对于一个新的样本x test ,那么它是异常数据么(这个数据不属于该组的几率怎样)?我们可以构建一个模型 p(x) ,来计算测试数据是否为异常数据.从图中可见,若数据落在蓝色圈内,则属于该组的可能性较高,若落于蓝色圈外,则属于该组的几率较低。

这种方法为密度估计,表达式如下:

if p(x test ) ≤ ε → anomaly

if p(x test ) > ε → normal

异常检测应用:

可以用来识别欺骗。例如在online采集的数据中,特征向量可能包括:用户多久登陆一次,点击过的页面,发帖数量,打字速度等。我们可以根据这些特征来构建模型,用来识别不符合该模式的用户;再者在数据中心里,特征向量可能包括:内存使用情况、CPU负载、被访问的磁盘数、网络通信量等。构建模型从而判断计算机是否出错。

下面是几个高斯分布的例子:

例如,若训练集又两维特征 x 1 ,x 2 组成,其中 x 1 和 x 2 的 μ 和 σ 2 分别为:μ1=5,σ 1 =2;μ2=3,σ 2 =1。分布情况如下所示。

则模型 p(x) 函数如下图的三围图像所示, z 轴为估计的 p(x) 值:

异常检测系统评价:

和我们之前学习的监督学习一样,我们需要评估该异常检测系统,但是异常检测算法是 unsupervised ,即我们无法根据y值来评估预测数据。那么我们就从带标记的(异常或正常)数据入手,假设给定一些有label的数据(若是正常数据则y=0,异常数据则y=1),从中选择一部分正常数据来构成 Training set ,用剩余的正常数据和异常数据来构成 Cross validation set 和 test set 。

例如:在飞机引擎的问题中,我们有10000台正常引擎和20台异常引擎。我们这样分配:

  • Training set :6000台正常引擎
  • CV :2000台正常引擎和10台异常引擎
  • Test set :2000台正常引擎和10台异常引擎

评价方法:

1.根据 Training set ,估计特征的 μ 和 σ 2 ,构建 p(x) 函数;

2.在 CV/Test set 上面使用不同的 ε 作为阈值,预测数据,并根据 F1 值(或查准率与查全率比值)来选择合适的 ε 。

异常检测 vs 监督学习

特征选择

对于异常检测,特征选择至关重要。之前我们假

误差分析:

  • 我们通常希望:对于 normalp(x) 较大;对于 anomalousp(x) 较小。

而一个常见的问题是 p(x) 对于 normal 或者 anomalous 都比较大,那么如何解决呢?

我们可以增加一些特征,或者将一些相关的特征进行组合,这些新的他正可以帮助我们进行更好的异常检测。例如,在数据中心检测计算机状况的问题中,我们可以使用cpu负载与网络通信量之比作为新的特征,若该值特别大则可能说明计算机出现了异常。

多元高斯分布(Mul-variate Gaussian distribution)

在使用高斯分布模型进行异常检测时,可能会出现这样的情况:假设我们有两个特征 x 1 和 x 2 ,这两个特征的值域范围较大,而一般的高斯分布模型会尝试同时抓住两个特征,从而创造出一个更大的边界,如图中紫色所示边界,可以看出绿色的样本点可能是异常数据,但是它却处于正常的范围内。那么多元高斯分布会构建蓝色所示的边界。

  • 通常的高斯分布模型中,我们计算 p(x) 的方法是分别计算每个特征对应的几率累乘起来:

在多元高斯分布中,我们将构建特征协方差矩阵,即所有特征放在一起计算 p(x)

原高斯分布模型与多元高斯分布模型的关系:

显而易见,当协方差矩阵只在对角线上有非零的值时,即为原高斯分布模型,所以原高斯分布模型是多元高斯分布模型的一个子集。

PS:

  • 原高斯分布模型被广泛使用,若特征之间存在关联,则可以通过构造新的特征来解决;
  • 如果训练集不是太大,且没有太多的特征,我们可以使用多元高斯分布模型;

(二)推荐系统(Recommender Systems)

问题描述

基于内容的推荐系统(Content-based recommendations)

现在我们假设每部电影有两个特征: x 1 代表浪漫程度, x 2 代表动作程度。

假设我们现在有 5 部电影和 4 个用户,以及这四个用户对看过电影的评分。前三部是爱情片,后两部是动作片。从表格中我们可以看出 Alice 和 Bob 似乎喜欢看爱情片,而 Carol 和 Dave 似乎喜欢动作片。我们可以根据一些算法来预测他们会给没看过的电影打多少份,作为推荐的依据。

基于内容的推荐系统(Content-based recommendations)

现在我们假设每部电影有两个特征: x 1 代表浪漫程度, x 2 代表动作程度。

  • θ (j) : 用户j的参数向量
  • x (i) :电影i的特征向量

我们预测用户j对电影i的评分为: (θ (j) ) T (x (i) )

其中 i:r(i,j)=1 表示我们只计算那些用户j评分过的电影,在一般的 linear regression 模型中,误差项和归一项都应乘以 1/2m ,这里我们统一将 m 去掉,并且不对 θ 0 进行归一化。

协同过滤算法(Collaborative filtering algorithm)

对协同过滤,这里有一个比较全面的说明,可供参考:

http://www.ibm.com/developerworks/cn/web/1103_zhaoct_recommstudy2/index.html

在之前的基于内容的推荐系统中我们知道,如果我们掌握电影的可用特征,则可以训练出每个用户的参数;相反如果我们掌握了用户参数,则可以训练出电影的特征。

那么如果我们既没有用户参数也没有电影特征,可以使用协同过滤算法来同时学习两者。我们的优化目标同时针对 x 和 θ 进行。

PS :在协同过滤中,通常不加 bias 项 x 0 和 θ 0 ,如果需要,算法会自动获得。

协同过滤算法步骤:

  • x (1) ,x (2) ,...,x (nm) ,θ (1) ,θ (2) ,...,θ (nu) 初始化为随机小值;
  • 使用梯度下降法最小化 cost function ,训练得到 θx
  • 对用户 j ,我们预测他对电影 i 的评分为: (θ (j) ) T (x (i) )

PS: 协同过滤算法获得的特征矩阵包含了电影的相关数据,这些数据不总是人能读懂的,但我们可以用这些数据作为给用户推荐电影的依据,如一位用户看了电影 x (i),如果对于另一部电影 x (j) , ||x (i) -x (j) || 很小,我们可以为他推荐电影 x (j) 。

均值归一化(Mean normalization)

现在我们新增一个用户 Eve , Eve 没有为电影做出任何评分,那么如何为 Eve 推荐电影呢

原文发布于微信公众号 - 大数据挖掘DT数据分析(datadw)

原文发表时间:2015-07-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏量化投资与机器学习

【Matlab量化投资】支持向量机择时策略

推出【Matlab量化投资系列】 机器学习 所谓机器学习,其实就是根据样本数据寻找规律,然后再利用这些规律来预测未来的数据(结果)。 但是,直到今天,机器学习...

1976
来自专栏ATYUN订阅号

【学术】手把手教你解决90%的自然语言处理问题

无论你是成熟的公司,还是想要推出一个新服务,都可以利用文本数据来验证、改进和扩展产品的功能。科学的从文本数据中提取语义并学习是自然语言处理(NLP)研究的一个课...

3395
来自专栏人工智能头条

写给大家看的机器学习书【Part2】训练数据长什么样?机器学到的模型是什么?

1383
来自专栏CVer

[计算机论文速递] 2018-03-23

通知:这篇文章有15篇论文速递信息,涉及目标检测、目标跟踪、姿态估计、SLAM、GAN、行为识别、去雾、网络优化等方向 创办CVer公众号,渐渐半个多月了,很感...

36317
来自专栏AI科技大本营的专栏

【AI 技术精选】神经网络结构深入分析和比较

作者 | Eugenio Culurciello 翻译 | AI科技大本营(rgznai100) 深度神经网络和深度学习是既强大又受欢迎的算法。这两种算法取得的...

3196
来自专栏专知

【AAAI2018】预测你的下一步-动态网络节点表示学习,浙江大学和南加州大学团队工作,代码已开源

【导读】以往的网络表示学习模型只会为固定的网络节点学习表示向量,而实际上,网络节点会根据时间的变化通过节点间的交互呈现出不同的网络结构特性。浙江大学和南加州大学...

3308
来自专栏AI研习社

如何解决自然语言处理中 90% 的问题

本文为雷锋字幕组编译的技术博客,原标题How to solve 90% of NLP problems: a step-by-step guide,作者Emm...

2586
来自专栏量子位

大神Hinton的Capsule论文终于公开,神经网络迎来新探索

夏乙 问耕 编译整理 量子位 出品 | 公众号 QbitAI ? “我的观点是把它全部抛掉,重头再来。” 今年9月的一次大会上,大神Geoffrey Hinto...

3235
来自专栏新智元

谷歌发布迄今最大注释图像数据集,190万图像目标检测挑战赛启动

1939
来自专栏CSDN技术头条

解密最接近人脑的智能学习机器 ——深度学习及并行化实现

训练深层模型是长期以来的难题,近年来以层次化、逐层初始化为代表的一系列方法的提出给训练深层模型带来了希望,并在多个应用领域获得了成功。深层模型的并行化框架和训练...

1915

扫描关注云+社区