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 条评论
登录 后参与评论

相关文章

来自专栏机器之心

教程 | 通过可视化隐藏表示,更好地理解神经网络

将神经网络可视化是非常有趣的。对于监督学习而言,神经网络的训练过程可以看做是学习如何将一组输入数据点转换为可由线性分类器进行分类的表示。本文我想利用这些(隐藏)...

691
来自专栏AI科技评论

干货 | 让算法解放算法工程师——NAS 综述

AutoML(automated machine learning)是模型选择、特征抽取和超参数调优的一系列自动化方法,可以实现自动训练有价值的模型。AutoM...

1741
来自专栏机器之心

索尼大法好,224秒在ImageNet上搞定ResNet-50

随着数据集和深度学习模型的规模持续增长,训练模型所需的时间也不断增加,大规模分布式深度学习结合数据并行化是大幅减少训练时间的明智选择。然而,在大规模 GPU 集...

924
来自专栏专知

【干货】首次使用分层强化学习框架进行视频描述生成,王威廉组最新工作

【导读】加州大学-圣塔芭芭拉计算王威廉组最新工作Video Captioning via Hierarchical Reinforcement Learning...

7064
来自专栏机器之心

从三大神经网络,测试对比TensorFlow、MXNet、CNTK、Theano四个框架

选自data science central 机器之心编译 参与:蒋思源 本文比较了 Keras 支持的主流深度学习框架性能,包括 TensorFlow、CNT...

2987

支持向量机简介

在Statsbot团队发布关于时间序列异常检测的帖子之后,许多读者要求我们向他们介绍支持向量机的方法。现在是向您介绍SVM(支持向量机)的时候了,而不用您辛苦的...

2137
来自专栏机器学习算法与Python学习

机器学习(6)之朴素贝叶斯NB及实例

关键字全网搜索最新排名 【机器学习算法】:排名第一 【机器学习】:排名第二 【Python】:排名第三 【算法】:排名第四 贝叶斯定理是以英国数学家贝叶斯命名...

4457
来自专栏机器之心

资源 | 下一代PS工具:Adobe照片级图像风格转换的Torch实现

选自arxiv 作者:栾福军等 机器之心编译 参与:李泽南、微胖 康奈尔大学与 Adobe 的研究者们最近发布了一项通过卷积神经网络进行照片风格迁移的研究。随后...

35611
来自专栏CSDN技术头条

8个深度学习方面的最佳实践

【摘要】本文介绍了作者在深度学习的课程中学到的八个非常有用的技巧。以下是译文。 我很开心自己在过去的2017年中在人工智能领域获得的成就。我也学了不少数学方面的...

2438
来自专栏新智元

【新式DNN】CortexNet模拟视觉系统,预测视频下一帧

【新智元导读】受到人类视觉系统的启发,普渡大学的研究人员提出了深度神经网络 CortexNet,它不仅具有自下而上的前馈连接,而且还模拟了我们视觉皮层中存在的丰...

4016

扫码关注云+社区