一、(Week 8)内容回顾
无监督学习的两种方法或技巧:K-means算法、PCA算法
1.1 K-means(Clustering) 聚类算法
过程:1)随机初始化聚类中心,选择K个随机的点;
2)分别计算m个点的最近聚类中心点,根据各个聚类情况计算每个组的平均值,重新确定K个随机的点;
3)重复过程2直至聚类中心点不再变化
优化目标:最小化J函数,待确定的参数为c和μ。
随机初始化K个中心点的方法:重复多次随机情况,选取J函数最小时的求解参数。这种情况在K比较小时有较好的效果。
选取K的方法:Elbow method肘部方法-从小到大依次选择不同K,用J函数变化的尖端点(肘部点);根据求解模型手动确定K的大小-如衣服尺寸,设计S、M、L的K=3。
1.2 PCA(Principal Component Analysis)主成分分析算法
目的:将高维的数据投射到一组方向向量上,实现数据压缩(节省存储空间和加快收敛速度)、可视化(常为2维或3维)。
过程:1)预处理数据,包括特征缩放、均值归一化;
2)计算协方差矩阵后,通过svd奇异值分解得到矩阵的特征向量U、特征值S;
3)选取特征向量的前n个/列,作为转化矩阵,得到降维的X。
优点与缺点:过程中无参数限制,计算结果只与输入的数据有关;忽略了输入数据的差异,抛弃了一些数据。
选取降维数k的方法:从小到达手动选取k,选取下图最小的一个;数据降维前后的相对误差在某个特定范围内,如下图的0.01,保留了数据之间99%的差异。(优化目的函数也是下图的公式,尽量减小分子-平均均分误差)
应用PCA的建议:1)在有监督学习(带有标签y)也可以进行PCA降维,y不需要进行处理;
2)对训练集进行PCA降维后,得到相应的转换矩阵u,同样可继续把u用于测试集、交叉验证集的降维;
3)PCA不能用于避免过拟合,舍弃了数据之间的部分差异性,训练效果不好,改用正则项;
4)PCA不是一定要加入的步骤,只有在算法运行慢/内存空间占用大等必要情况下才需要采用。
PCA与线性回归的差异:1)PCA最小化的为投射误差,线性回归最小化为代价函数;
2)PCA与y无关,只是输入数据的转化降维,线性回归需要预测y;
3)如下图所示,在最小化的投影上,PCA为向量与点之间的距离,线性回归为向量/线与点之间的y向距离。
需要编辑以下的红色文件。(后续部分,需要填入的代码为深色框,已经提供的代码为浅色框。)
文件 | 内容 |
---|---|
ex7.m | K-means主程序 |
ex7_pca.m | PCA主程序 |
pca.m | 实现PCA主成分分析 |
projectData.m | 低维投影 |
recoverData.m | 投影数据的还原 |
findClosestCentroids.m | 寻找最近中心点 |
computeCentroids.m | 计算点中心平均值 |
kMeansInitCentroids.m | 初始化中心点 |
二、作业1- K-means Clustering 聚类
利用K均值算法进行图像压缩,使得图