机器学习(6)- 无监督学习
根据Andrew Ng在斯坦福的《机器学习》视频做笔记,已经通过李航《统计学习方法》获得的知识不赘述,仅列出提纲。
1 聚类算法
1.1 K-Means算法
步骤
随机初始化k个簇类中心(cluster centroids)[n维向量],然后迭代
- 簇分配:遍历样本,判断其距离哪个簇类中心更近,然后分配
- 移动簇类中心:计算每个簇的样本均值,然后更新簇类中心的位置(如果簇内没有样本,则移除该簇;如果确实需要,则随机初始化)
直至簇类中心不再改变
可以用于分类不佳的簇
优化目标
\(c^{(i)}\):样本\(x^{(i)}\)所属的簇类index
\(\mu_k\):簇类中心k
\(\mu_{c^{(i)}}\):样本\(x^{(i)}\)所属的簇类中心
随机初始化:随机选择K个训练样本
↓
局部最优:多次运行K-means算法(对于K值较小的聚类效果较好)
K值的选择
- “肘部法则”:绘制J-K曲线(实际并不好用)
- 根据后续目的选择
1.2 降维
1.2.1 目标Ⅰ:数据压缩
问题:数据冗余/特征高度相关
1.2.2 目标Ⅱ:可视化数据
问题:高维度数据无法绘制
1.2.3 主成分分析PCA(Principal Component Analysis)
试图找到一个低维的平面来最小化投射误差
2D→1D:找到一个向量能够最小化投射误差
nD→kD:找到k个向量能够最小化投射误差
PCA vs. 线性回归
PCA:最小化投射误差,不预测
线性回归:x→y,最小化预测误差,预测结果
数据预处理
特征缩放/均值归一化
计算协方差矩阵
\(\Sigma=\frac{1}{m}\sum_{i=1}^n(x^{(i)})(x^{(i)})^T=\frac{1}{m}X^TX\)
计算协方差矩阵\(\Sigma\)的特征向量
\([U,S,V]=svd(Sigma)\)
U:n×n矩阵,即\([u^{(1)} \ u^{(2)} \ u^{(3)} \ \cdots \ u^{(m)}]\),取前k列,得到n×k的矩阵
\(z^{(i)}=U_{reduce}^Tx^{(i)}=[u^{(1)} \ u^{(2)} \ \cdots \ u^{(k)}]^Tx^{(i)}\),是k维向量
选择主成分的数量
比例:\(\frac{\frac{1}{m}\sum_{i=1}^m||x^{(i)}-x_{approx}^{(i)}||^2}{\frac{1}{m}\sum_{i=1}^m||x^{(i)}||^2}\)
分子表示原始点与投影点之间的距离之和。
误差越小,说明降维后的数据越能完整表示降维前的数据。
如果比例小于0.01,说明降维后的数据能保留99%的信息。
实际应用中,选择能使误差小于0.01(99%的信息都被保留)或0.05(95%的信息都被保留)的k值。
对于可视化数据,通常选择k=2或k=3
压缩重现
\(x_{approx}^{(i)}=U_{reduce}z^{(i)}\)
应用建议
加速学习算法:提取输入\(x^{(i)}\)→PCA→低维表示\(z^{(i)}\)→新训练集
防止过拟合:Bad!
设计机器学习系统:只有在不用PCA但是不行的时候,才考虑。
本文来自博客园,作者:白芷呀,转载请注明原文链接:https://www.cnblogs.com/angelica-duhurica/p/10958085.html