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

相关文章

来自专栏数说工作室

最重要的一集 | 【SAS Says·扩展篇】IML:6.作业

咱们的SAS矩阵交互语言IML就要完结了,本文将会用IML编一个回归程序。无论你需要一元的还是多元的回归模型,该程序都能计算出模型的系数、t检验以及t检验的p值...

3338
来自专栏ATYUN订阅号

使用p值进行统计假设检验的简介

我们可以通过假定具体结构来解释数据,并使用统计方法来确认或否定假设。这种假定被称为假设(hypothesis),用于此目的的统计检验被称为统计假设检验(stat...

974
来自专栏贾志刚-OpenCV学堂

谷歌机器学习速成课程系列三

谷歌tensorflow官方推出了免费的机器学习视频课,总计25个课时,支持中英文语言播放、大量练习、实例代码学习,是初学tensorflow不机器学习爱好者必...

1472
来自专栏专知

【专知-Java Deeplearning4j深度学习教程05】无监督特征提取神器—AutoEncoder:图文+代码

【导读】主题链路知识是我们专知的核心功能之一,为用户提供AI领域系统性的知识学习服务,一站式学习人工智能的知识,包含人工智能( 机器学习、自然语言处理、计算机视...

41111
来自专栏大数据文摘

主成分分析(PCA)在R 及 Python中的实战指南

2938
来自专栏AI研习社

基于 Tensorflow eager 的文本生成,注意力,图像注释的完整代码

我总是发现生成和序列模型令人着迷:他们提出的问题与我们刚开始学习机器学习时常遇到的问题不同。当我第一次开始学习ML时,我学了分类和回归(和大多数人一样)。这些帮...

902
来自专栏深度学习那些事儿

浅谈深度学习中超参数调整策略

深度学习中,设计模型以及保证模型的正确性是首要需要考虑的。当模型设置完成时,理论上模型不存在问题,实现效果也通过计算可以复现出来。一切准备就绪后,那么接下来需要...

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

AI 技术讲座精选:如何创建简易且能分辨垃圾邮件的ML分类器

在本篇教程中,我们会先提出要解决的问题,然后再利用名为朴素贝叶斯分类器(NaiveBayes Classifier)的机器学习技术解决相应的问题,非常简单。本篇...

2983
来自专栏木东居士的专栏

机器学习经典开源数据集

"数据为王,使用相同机器学习算法,不同质量的数据能训练出不同效果的模型。本文将分享数据科学领域中经典的几个开源数据集。

3689
来自专栏小小詹同学

人脸识别(一)——从零说起

这是关于人脸的第①篇原创!(源码在第三篇)

36010

扫码关注云+社区