Coursera机器学习 Week9 笔记
来源:互联网 发布:淘宝香港代购好的店铺 编辑:程序博客网 时间:2024/06/01 08:27
编程作业放到了github上:coursera_machine_learning
1. Anomaly Detection (异常检测)
当一堆数据集中出现少个别几个异常数据时,需要检测出这几个异常数据。
1.1 异常检测算法概述
用一个分布
而异常检测算法要做的,就是从现有的训练集中训练出这个分布
异常检测是一个“无监督学习”模型。
1.2 单元高斯分布
异常检测中我们使用“高斯分布”。因此只要通过训练集计算出“高斯分布”中的参数
对于其中一条数据
于是对于特征
至此,通过计算得到了
但是目前为止,必须保证features是满足“高斯分布”的。至于如何选择这样子的特征以及当特征不满足高斯分布时怎么处理。
1.3 模型评估
1.4 特征选择
首先需要保证选择的数据是满足高斯分布的。判断的依旧就是将这个特征进行可视化,如果这个特征不是高斯分布,那么就需要通过各种变换将其转换成高斯分布。
比如说,下面这个特征的分布是一个“长尾分布”,则可以通过“取对数
其次,通过一个“误差分析”来选择特征。
先用算法跑出一个模型来,然后预测错误的数据 – 应为异常被判断成了正常 所对应的特征。该数据所对应的特征的概率是否符合一般情况,如果
在异常检测中,一般选择那些在异常和正常数据间变化特别大的特征。
1.5 异常检测 Vs 监督学习
可以看到异常检测其实也是将数据集分成两类数据 – 正常数据和异常数据,那么为什么不采用监督学习呢?
第一种情况:当数据集中两类数据分布极其不均匀时,如异常数据只有“几十个”而正常数据远远多于异常数据时,应当采用“异常检测”。
[因为从这么少的异常数据中,是无法学习到符合异常数据的特征的,所以应该用异常检测去学习正常数据的特征(即所服从的高斯分布)]
第二种情况:当异常数据的种类太多,而给出的数据集中没有完全包括时,应采用“异常检测”。
[因为监督学习只能学习到现有种类的特征,无法对未知种类进行学习。所以应使用异常检测算法学习现有正常数据的特征,然后才能对异常数据进行区分。或者说无监督学习可以学到数据本身所具有的特性,而监督学习学到的只是数据对于当前任务的特性。]
监督学习的一个重要前提是各类数据的量要均匀。
1.6 多元高斯分布
之前的单元高斯分布中,要求各特征之间没有关联,独立同分布,也就是说,单元高斯分布只能学习各特征的分布,没法学习到特征之间的关联性。如果想要引入特征之间的关联性,需要自己手动构造新的特征来表示其他特征之间的关联。
而多元高斯分布可以直接通过一个“协方差矩阵”来检测到各特征之间的关联性。
多元高斯分布的计算公式如下:
与“单元高斯分布”相比:
- “多元高斯分布”能够学习到特征之间的关联性
- 但是当特征数量特别大的时候,“单元高斯分布”的计算速度要比“多元高斯分布”快。因为
Σ−1 的计算量很大。 - 另外,“多元高斯分布”需要保证
Σ 可逆,否则无法计算。保证可逆的一个条件就是m>n ,最好保证m⩾10n 。这里的n 是指互相之间非线性相关的特征的数量。 综合来说,还是“单元高斯分布”的使用更佳普遍。
在一种情况下,“多元高斯分布”和“单元高斯分布”可以等同,即当各特征之间没有相关性,数学表现就是:
2. Recommender System (推荐系统)
2.1 预测用户的评分
数据:
令电影数据表示为为
令用户的偏好数据表示为
假设用户j给电影i的评分为:
所以模型中的参数为
算法过程如下:
步骤一:随机初始化
步骤二:根据cost function,使用梯度下降不断迭代调整参数:
最后就学习到了所有的
想知道未知的用户j给电影i的评分直接计算
在实际操作中,会把这个过程向量化,令:
因为
所以
2.2 寻找相关电影
经过上面的任务,已经得到了
判断电影i和电影j是否类似,只要计算一下它们的向量之间的距离就行了。
找到最相关电影的数学表达如下:
2.3 给新用户推荐电影
数据:
可见新用户对于所有电影的评分都是未知的,所以无法根据评分高低来推荐电影给他。一个最简单的处理方式就是把,该电影下其他用户评分的平均值赋给新用户,然后再通过
赋值之后的数据:
来看一下,如果不给赋平均值,直接计算的话会有什么情况发生。因为:
所以当
2.4 推荐算法类型
主要分成:
- “product-based” :知道产品的特征向量,通过学习用户的偏好向量来求未知评分;
- “user-based”:知道用户的偏好向量,通过学习产品的特征向量来求未知评分;
- 协同过滤算法:以上两个向量都不知道的时候,先随机初始化两个向量,然后先固定
θ(1),θ(2),...,θ(4) ,然后最小化J(x(1),x(2),...,x(5))=12∑5i=1∑r(i,j)=1((θ(j))Tx(i)−y(i,j))2+λ2∑5i=1(x(i))2 ;再固定x(1),x(2),...,x(5) ,最小化J(θ(1),θ(2),...,θ(4))=12∑4j=1∑r(i,j)=1((θ(j))Tx(i)−y(i,j))2+λ2∑5j=1(θ(j))2 ;就这样循环交替着更新,直至收敛。 - 上面介绍的,相当于“同步”协同过滤算法。
- Coursera机器学习 Week9 笔记
- Coursera机器学习 week9 assignment
- Stanford 机器学习笔记 Week9 Anomaly Detection
- Stanford 机器学习笔记 Week9 Recommender Systems
- Coursera机器学习笔记
- [Coursera机器学习]Anomaly Detection and Recommender Systems WEEK9编程作业
- COURSERA机器学习笔记1
- COURSERA机器学习笔记2
- Coursera机器学习 Week1 笔记
- Coursera机器学习 Week2 笔记
- Coursera机器学习 Week3 笔记
- Coursera机器学习 Week4 笔记
- Coursera机器学习 Week5 笔记
- Coursera机器学习 Week6 笔记
- Coursera机器学习 Week7 笔记
- Coursera机器学习 Week8 笔记
- Coursera机器学习 Week10 笔记
- [机器学习] Coursera ML笔记
- Springboot引用外部配置文件
- 常用生命周期函数总结
- 教你怎么快速创建字体图标
- 定时器--Spring--SpringBoot
- Android中利用VideoView播放网络上视频的基础用法
- Coursera机器学习 Week9 笔记
- 实现智能家居必不可少的五种无线通讯技术
- 笔记-java线程基础
- 测试主机的信息
- 在C++ 程序中调用被 C 编译器编译后的函数库,为什么要加 extern “C”声明?
- 如何随机打乱DataFrame
- Makefile了解Android.mk
- sas数据直接相加空值对结果的影响及解决办法
- windows CMD 命令