本周内容较多,故分为上下两篇文章。

一、内容概要

1. Anomaly Detection

  • Density Estimation

    • Problem Motivation
    • Gaussian Distribution
    • Algorithm
  • Building an Anomaly Detection System(创建异常检测系统)
    • Developing and Evaluating an Anomaly Detection System
    • Anomaly Detection vs. Supervised Learning
    • Choosing What Features to Use
  • Multivariate Gaussion Distribution(多元高斯分布)
    • Multivariate Gaussion Distribution
    • Anomaly Detection using the Multivariate Gaussion Distribution

      2. Recommender System

  • Predicting Movie
    • Problem Formulation
    • Content Based Recommendations
  • Collaborative Filtering(协同过滤)
    • Collaborative Filtering
    • Collaborative Filtering Algorithm
  • Low Rank Matrix Factorization(低秩矩阵分解)
    • Vectorization(向量化): Low Rank Matrix Factorization
    • Implementational Detail:Mean Normalization

二、 重点&难点

Anomaly Detection

1. Density Estimation

1) Problem Motivation

假设我们生产了若干产品,现在通过两个特征来衡量产品是否合格,下面表示的是合格产品的分布图。



现在有两个新生产的产品,分布如下(绿色×



上面我们构建的模型(即蓝色同心圆)能根据测试数据告诉我们其属于一组数据的可能性p(x).上图中,在蓝色圈内的数据属于该组数据的可能性较高,而越是偏远的数据,其属于该组数据的可能性就越低。

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

\[if \quad p(x)≤ε,则为anomaly(异常)\]

\[if \quad p(x)>ε,则为normal(正常)\]

2) Gaussian Distribution

3) Algorithm

还是以上面产品检测为例,我们先得到如下图左边的样品特征分布,然后根据分布图分别画出x1和x2的高斯分布图



下面的三维图表表示的是密度估计函数,z 轴为根据两个特征的值所估计 p(x)值:



我们选择一个 ε,将 p(x)=ε 作为我们的判定边界,当 p(x)>ε 时预测数据为正常数据,否则则为异常。

2. Building an Anomaly Detection System(创建异常检测系统)

1) Developing and Evaluating an Anomaly Detection System

异常检测算法是一个非监督学习算法,意味着我们无法根据结果变量 y 的值来告诉我

们数据是否真的是异常的。我们需要另一种方法来帮助检验算法是否有效。当我们开发一个

异常检测系统时,我们从带标记(异常或正常)的数据着手,我们从其中选择一部分正常数

据用于构建训练集,然后用剩下的正常数据和异常数据混合的数据构成交叉检验集和测试

集。

例如:我们有 10000 台正常引擎的数据,有 20 台异常引擎的数据。 我们这样分配数

据:

6000 台正常引擎的数据作为训练集

2000 台正常引擎和 10 台异常引擎的数据作为交叉检验集

2000 台正常引擎和 10 台异常引擎的数据作为测试集

具体的评价方法如下:

  1. 根据测试集数据,我们估计特征的平均值和方差并构建 p(x)函数
  2. 对交叉检验集,我们尝试使用不同的 ε 值作为阀值,并预测数据是否异常,根据 F 1

    值或者查准率与查全率的比例来选择 ε
  3. 选出 ε 后,针对测试集进行预测,计算异常检验系统的 F 1 值,或者查准率与查全

    率之比

2) Anomaly Detection vs. Supervised Learning

异常检测和监督学习的确有几分相似,但是还是有区别的,整理如下:

异常检测 监督学习
非常少量的正向类(异常数据 y=1),大量的负向类(y=0) 同时有大量的正向类和负类
许多不同种类的异常,非常难。根据非常少量的正向类数据来训练算法。 有足够多的正向类实例,足够用于训练算法,未来遇到的正向类实例可能与训练集中的非常近似。
未来遇到的异常可能与已掌握的异常、非常的不同。
例如:
1. 欺诈行为检测
2. 生产(例如飞机引擎)
3. 检测数据中心的计算机运行状况
例如:
1. 邮件过滤器
2. 天气预报
3. 肿瘤分类

3) Choosing What Features to Use

异常检测假设特征符合高斯分布,如果数据的分布不是高斯分布,异常检测算法也能够

工作,但是最好还是将数据转换成高斯分布,例如使用对数函数:x = log(x+c),其中 c 为非

负常数; 或者 x=xc ,c 为 0-1 之间的一个分数,等方法。

3. Multivariate Gaussion Distribution(多元高斯分布)

1) Multivariate Gaussion Distribution

假使我们有两个相关的特征,而且这两个特征的值域范围比较宽,这种情况下,一般的

高斯分布模型可能不能很好地识别异常数据。其原因在于,一般的高斯分布模型尝试的是去

同时抓住两个特征的偏差,因此创造出一个比较大的判定边界。

下图中是两个相关特征,洋红色的线(根据 ε 的不同其范围可大可小)是一般的高斯分

布模型获得的判定边界,很明显绿色的 X 所代表的数据点很可能是异常值,但是其 p(x)值却

仍然在正常范围内。多元高斯分布将创建像图中蓝色曲线所示的判定边界

  • 一般的高斯分布模型

    我们计算 p(x)的方法是: 通过分别计算每个特征对应的几

    率然后将其累乘起来,在多元高斯分布模型中,我们将构建特征的协方差矩阵,用所有的特

    征一起来计算 p(x)。

\[p(x)=∏_{j=1}^{n}p(x_j;μ_j,σ^2_j)=∏_{j=1}^{n}\frac{1}{\sqrt{2π}σ_j}exp(-\frac{(x_j-μ_j)^2}{2σ_j^2})\]

\[μ=\frac{1}{m}\sum_{i=1}^{m}x^{(i)} \]

  • 多元高斯分布

\[p(x)=\frac{1}{(2π)^{\frac{n}{2}} |Σ|^{\frac{1}{2}}}exp(-\frac{1}{2}(x-μ)^TΣ^{-1}(x-μ))\]

\[Σ=\frac{1}{m}(X-μ)^T(X-μ)\]

μ和Σ对模型的影响



上图是 5 个不同的模型,从左往右依次分析:

  1. 是一个一般的高斯分布模型
  2. 通过协方差矩阵,令特征 1 拥有较小的偏差,同时保持特征 2 的偏差
  3. 通过协方差矩阵,令特征 2 拥有较大的偏差,同时保持特征 1 的偏差
  4. 通过协方差矩阵,在不改变两个特征的原有偏差的基础上,增加两者之间的正相关

  5. 通过协方差矩阵,在不改变两个特征的原有偏差的基础上,增加两者之间的负相关

    2) Anomaly Detection using the Multivariate Gaussion Distribution



通过使用多元高斯分布异常检测,可以更好的拟合数据,不再是画同心圆了,2333~~。


MARSGGBO♥原创







2017-8-14

Andrew Ng机器学习课程笔记--week9(上)(异常检测&推荐系统)的更多相关文章

  1. Andrew Ng机器学习课程笔记--week9(下)(推荐系统&协同过滤)

    本周内容较多,故分为上下两篇文章. 本文为下篇. 一.内容概要 1. Anomaly Detection Density Estimation Problem Motivation Gaussian ...

  2. Andrew Ng机器学习课程笔记--week5(上)

    Neural Networks: Learning 内容较多,故分成上下两篇文章. 一.内容概要 Cost Function and Backpropagation Cost Function Bac ...

  3. 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 16—Recommender Systems 推荐系统

    Lecture 16 Recommender Systems 推荐系统 16.1 问题形式化 Problem Formulation 在机器学习领域,对于一些问题存在一些算法, 能试图自动地替你学习到 ...

  4. Andrew Ng机器学习课程笔记--汇总

    笔记总结,各章节主要内容已总结在标题之中 Andrew Ng机器学习课程笔记–week1(机器学习简介&线性回归模型) Andrew Ng机器学习课程笔记--week2(多元线性回归& ...

  5. Andrew Ng机器学习课程笔记(五)之应用机器学习的建议

    Andrew Ng机器学习课程笔记(五)之 应用机器学习的建议 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7368472.h ...

  6. Andrew Ng机器学习课程笔记(六)之 机器学习系统的设计

    Andrew Ng机器学习课程笔记(六)之 机器学习系统的设计 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7392408.h ...

  7. Andrew Ng机器学习课程笔记(四)之神经网络

    Andrew Ng机器学习课程笔记(四)之神经网络 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7365730.html 前言 ...

  8. Andrew Ng机器学习课程笔记(三)之正则化

    Andrew Ng机器学习课程笔记(三)之正则化 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7365475.html 前言 ...

  9. Andrew Ng机器学习课程笔记(二)之逻辑回归

    Andrew Ng机器学习课程笔记(二)之逻辑回归 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7364636.html 前言 ...

随机推荐

  1. centos中-hadoop单机安装及伪分布式运行实例

    创建用户并加入授权 1,创建hadoop用户 sudo useradd -m hadoop -s /bin/bash 2,修改sudo的配置文件,位于/etc/sudoers,需要root权限才可以读 ...

  2. Spring源码情操陶冶-AbstractApplicationContext#invokeBeanFactoryPostProcessors

    阅读源码有利于陶冶情操,承接前文Spring源码情操陶冶-AbstractApplicationContext#postProcessBeanFactory 约定:web.xml中配置的context ...

  3. ASPCMS改造中

    10月中旬的时候,芹芹大神给我接了个做网站的活,一番商量过后,我以低得说出来丢人TT的价格接了.主要是想借此摸清网站制作的一条龙服务. 目前根据ASPCMS开源管理系统,做了个大致的构架,下面上草图: ...

  4. ubuntu中vim下按上下左右键时输入A、B、C、D的问题

    ubuntu下使用vi 进行编辑文件时,按上下左右键时,会输入A.B.C.D,这个用起来很不方便.网上查得此问题的原因是: ubuntu系统自带的 vi 不完整导致,解决方法:安装完整的vi $ su ...

  5. HDU1035 Robot Motion

    Problem Description A robot has been programmed to follow the instructions in its path. Instructions ...

  6. jsp 之 解决 Mysql net start mysql启动,提示发生系统错误 5 拒绝访问的问题

    在dos下运行net start mysql时 !!!提示发生系统错误 5:拒绝访问!只要切换到管理员模式就可以启动了. 所以我们要以管理员身份来运行cmd程序来启动mysql. 1.在开始菜单的搜索 ...

  7. 虚拟机下克隆3个centos系统并配置IP访问网络(转载)

    此文是保证linux系统能够上网 先查看本机的IP 打开虚拟机,更改虚拟机为桥接方式 在第一个虚拟机上打开终端,在命令行输入setup,选择NETWORK CONFIGRATION 回车后, 配置IP ...

  8. NOIP 2014 提高组 题解

    NOIP 2014 提高组 题解 No 1. 生活大爆炸版石头剪刀布 http://www.luogu.org/problem/show?pid=1328 这是道大水题,我都在想怎么会有人错了,没算法 ...

  9. NYOJ--491--dfs(打表水过)--幸运三角形

    /* Name: NYOJ--491--幸运三角形 Author: shen_渊 Date: 15/04/17 16:26 Description: DFS超时,深搜出第一行的所有情况,计算之后打表水 ...

  10. Python模块----linecache

    Python标准库提供了一个有趣的模块:linecache模块.该模块用来从文件中读取任何的行,并且将这些lines使用缓存进行优化,常见的情况是从个大文件中读取指定的行.不过由于此模块使用内存进行缓 ...