【Machine Learning】笔记:无监督学习
来源:互联网 发布:java学生管理系统集合 编辑:程序博客网 时间:2024/05/17 04:36
课程来自 Coursera 上 Andrew Ng 的 machine learning第8周的内容。
Clustering
K-均值聚类算法
比如要分成两类,就先随便选两个 cluster centroid 聚类中心,整个聚类算法是一个迭代过程,它分为两步:
- cluster assignment,聚类分配
- move centroid,移动聚类中心
具体来说,随便分配
小问题:如果在某次分配之后,某个聚类中没有任何数据点,那该怎么办?
一般来说,这样就直接去掉该聚类,最后会得到
如果数据比较集中或本身没有显著聚成块,那也没事,仍然可以划分出需要的聚类。
最优化目标
监督学习都有优化目标,那无监督学习有吗?自然是有的。
先明确一些记号。
聚类算法的优化目标是:
其中,
该代价函数有时也叫 distortion cost function(失真代价函数)。
在定义了 distortion cost function 之后,回过头看迭代那两步,其实第一步就是保持
随机初始化
在最开始的时候,该如何随机选取一些点作为 cluster centroid 呢?
在
不同的初始化形式,可能会得到不同的最终结果,可能会陷入局部最优解。那该怎么办呢?
一般的做法是,多尝试几次随机初始化,并执行算法,比较它们最终得到的 distortion cost function,选择最小的那个。事实证明,当
怎样选择 K ?
这个问题没有一个清晰的答案。一般来说,比较好的办法仍然是通过可视化等手段来手动选择。以下是两个比较常用的办法:
- Elbow method(肘部法则),画出
J 随K 的增加而变化的图,一般这样的图必定是呈下降趋势的,通过观察,可以看出在某个K 之后,它每一次的下降不再像之前那么多了(斜率绝对值突然变小了)。但常见情况是,画出的图很平滑,看不出哪里有 elbow,这时就无法根据它来作出判断了。但它仍不失为一个值得尝试的方法。 - 一般来说,使用聚类算法是为了后续对数据的应用,那就可以看一下不同的聚类数目能对下游的应用产生多好的效果。从应用的角度来决定
K .
Dimensionality Reduction
Motivation
为什么要做维数缩减?有两个原因:
- 为了数据压缩(data compression)。可能有高度相关的冗余的特征,做了数据压缩之后,可以减少特征数量,这样做既可以减少存储空间,又可以提高算法速度。
- 为了可视化,如果降到二维或者三维,我们就可以画出来,来进行肉眼观察。
Principal Component Analysis
在使用 PCA 之前,通常需要先进行 mean normalization 和 feature scaling,使各个特征的均值为零,且数值在可比较的范围之内。
注意,PCA 和线性回归尽管看起来有一些相似,但它们要最小化的函数不同。一元线性回归要最小化的是预测值和实际值之间差距的平方和,而将二维数据降到一维的 PCA 要最小化的是点到直线的距离。
PCA 算法实现
首先对数据进行 mean normalization 和 feature scaling.
比如要把
将
- 计算协方差矩阵
Σ=1m∑i=1n(x(i))(x(i))T ,并将它存为 Matlab/Octave 中的Sigma
变量,如果m 个数据已经表示为m×n 的矩阵X
了,可以直接用Sigma = (1/m)*X'*X;
来得到结果。 - 计算
Σ 的特征值(eigenvectors),用[U,S,V] = SVD(Sigma);
,SVD 是进行奇异值分解(singular value decomposition)的函数,另外还有一个eig()
函数也可以计算特征值,但SVD()
更加稳定一些,对于计算的对象是协方差矩阵来说,因为它是对称正定(symmetric positive definite)的矩阵,两个函数得到的结果是一样的。执行之后的输出结果是三个矩阵,我们需要的是U
矩阵,U
和Sigma
一样,都是n×n 的矩阵,U
的列向量,就是我们要求的u(i) ,也就是要投影到的向量。 - 因为我们要投影到
k 维,因此,只需取出U
矩阵的前k 列u(1),u(2),…,u(k) 即可。
接下来要找出x(i) 对应的z(i) ,先将上一步中取出的k 个向量拼成新的n×k 的矩阵[u(1)u(2)…u(k)] ,记为Ureduce ,则有z(i)=UTreducex(i) .
如果用代码,就是:
Sigma = (1/m)*X'*X;[U,S,V] = SVD(Sigma);Ureduce = U(:,1:k);z = Ureduce'*x;
能把数据还原吗?
在经过了
确实可以,可以用
选择保留多少个主成份?
怎样选择保留主成份的个数
先定义两个量。Average squared projection error 平均平方映射误差,
这个条件说明,99% 的特性被保留了。告诉别人选择了多少
如果
当用 [U,S,V] = SVD(Sigma);
时,返回的 S
是一个
PCA 给算法提速
PCA 可以给监督学习算法提速。如果输入数据的特征数太多,可以先将其降维。
但需要注意,降维所用的矩阵
PCA 的使用误区
老师讲了两个误区:
- 很多人认为,降维之后,特征数减少了,这可以用来防止过拟合,这是不对的!因为它本质上只是丢弃了一些信息而已。就算它有用,最好还是用 regularization 来防止过拟合。
- 在设计机器学习系统时,很多人会直接上来就进行一步 PCA,老师建议先试一下在原始数据上做,只有在学习算法很慢,或者很占用存储空间时,才考虑使用 PCA. 老师自己使用得比较频繁,一般都用来加速学习算法。
- 【Machine Learning】笔记:无监督学习
- 【Machine Learning】笔记:无监督学习之 Neighbor Embedding
- 【Machine Learning】笔记:无监督学习之 Deep Generative Model
- Machine Learning机器学习课堂笔记2(监督学习与无监督学习)
- Machine Learning(Stanford)| 斯坦福大学机器学习笔记--第一周(1.监督学习与无监督学习的介绍)
- Machine learning 监督与无监督
- 周志华《Machine Learning》学习笔记(15)--半监督学习
- 周志华《Machine Learning》学习笔记(15)--半监督学习
- Machine Learning Algorithms Study Notes(4)—无监督学习(unsupervised learning)
- Machine Learning自学笔记(1)—监督学习和非监督学习
- 无监督学习(Unsupervised Learning)
- 无监督学习(unsupervised learning)
- 监督学习(supervised learning)和无监督学习(unsupervised learning)
- Machine Learning(一) 监督学习初探
- Andrew Ng 《Machine Learning》第八讲——无监督学习(K-Means & PCA)
- Machine Learning 1 (监督学习与非监督学习)
- 监督学习和非监督学习(Machine learning)
- 《Machine Learning》第一讲 监督/非监督学习
- 原地交换两个变量的值
- def自定函数 和参数顺序
- 敌兵布阵(线段树)
- MySQL的相关应用
- 欢迎使用CSDN-markdown编辑器
- 【Machine Learning】笔记:无监督学习
- 左移动运算符
- Git相关概念及操作以及与SVN的区别
- 效率清单
- 设计模式-命令模式
- Gym
- Linux故障
- 『机器学习算法』集成学习——AdaBoost
- UVA 11020 Efficient Solutions (用multiset实现BST)