关于PCA算法的一点学习总结
本文出处:http://blog.csdn.net/xizhibei
=============================
PCA,也就是PrincipalComponents Analysis,主成份分析,是个非常优秀的算法,依照书上的说法:
寻找最小均方意义下,最能代表原始数据的投影方法
然后自己的说法就是:主要用于特征的降维
另外,这个算法也有一个经典的应用:人脸识别。这里略微扯一下,无非是把处理好的人脸图片的每一行凑一起作为特征向量,然后用PAC算法降维搞定之。
PCA的主要思想是寻找到数据的主轴方向,由主轴构成一个新的坐标系,这里的维数能够比原维数低,然后数据由原坐标系向新的坐标系投影,这个投影的过程就能够是降维的过程。
推导过程神马的就不扯了,推荐一个课件:http://www.cs.otago.ac.nz/cosc453/student_tutorials/principal_components.pdf,讲得挺具体的
然后说下算法的步骤
1.计算全部样本的均值m和散布矩阵S,所谓散布矩阵同协方差矩阵;
2.计算S的特征值,然后由大到小排序;
3.选择前n'个特征值相应的特征矢量作成一个变换矩阵E=[e1, e2, …, en’];
4.最后,对于之前每个n维的特征矢量x能够转换为n’维的新特征矢量y:
y = transpose(E)(x-m)
最后还得亲自做下才干记得住:用Python的numpy做的,用C做的话那就是没事找事,太费事了,由于对numpy不熟,以下可能有错误,望各位大大指正
mat = np.load("data.npy")#每一行一个类别数字标记与一个特征向量 data = np.matrix(mat[:,1:]) avg = np.average(data,0) means = data - avg tmp = np.transpose(means) * means / N #N为特征数量 D,V = np.linalg.eig(tmp)#DV分别相应特征值与特征向量组成的向量,须要注意下的是,结果是自己主动排好序的,再次膜拜numpy OTL #print V #print D E = V[0:100,:]#这里仅仅是简单取前100维数据,实际情况能够考虑取前80%之类的 y = np.matrix(E) * np.transpose(means)#得到降维后的特征向量 np.save("final",y)
另外,须要提一下的是OpenCV(无所不能的OpenCV啊OTL)中有PCA的实现:
void cvCalcPCA( const CvArr* data,//输入数据 CvArr* avg, //平均(输出) CvArr* eigenvalues, //特征值(输出) CvArr* eigenvectors, //特征向量(输出) int flags );//输入数据中的特征向量是怎么放的,比方CV_PCA_DATA_AS_ROW
最后,说下PCA的缺点:PCA将全部的样本(特征向量集合)作为一个总体对待,去寻找一个均方误差最小意义下的最优线性映射投影,而忽略了类别属性,而它所忽略的投影方向有可能刚好包括了重要的可分性信息
嗯,最后的最后——好了,没了,的确是最后了
强烈推荐:一篇能把PAC说得非常透彻的文章《特征向量物理意义》:http://blog.sina.com.cn/s/blog_49a1f42e0100fvdu.html
相关文章
- 机器学习算法总结(二)
- java实现 蓝桥杯 算法提高 盾神与条状项链
- Java实现 蓝桥杯算法提高金明的预算方案
- 机器学习之决策树(ID3)算法与Python实现
- 机器学习从入门到放弃之决策树算法
- 数据结构和算法学习二,之循环和递归
- 【学习总结】java数据结构和算法-第二章-数据结构和算法概述
- 【学习总结】小象学院-算法面试课程10-动态规划
- 【学习总结】小象学院-算法面试课程1-链表
- 深入浅出交换类排序算法
- 数据结构与算法--链表
- 【学习总结】java数据结构和算法-第三章-稀疏数组和队列
- 【学习总结】小象学院-算法面试课程
- PCL Super4PCS算法实现点云粗配准(版本二)
- 【机器学习】机器学习算法总结
- 几种java线程池的实现算法分析
- DL之随机性:理解和探究采用深度学习算法预测时导致多次运行结果不一致的问题
- AI公开课:19.05.29 浣军-百度大数据实验室主任《AutoDL 自动化深度学习建模的算法和应用》课堂笔记以及个人感悟
- AI之DS:人工智能领域之数据科学领域六大实践场景(金融信用违约、反欺诈模型、客户偏好洞察、智能推荐、精准营销、客户流失管理)所对应的机器学习算法总结(持续更新)
- DL:深度学习算法(神经网络模型集合)概览之《THE NEURAL NETWORK ZOO》的中文解释和感悟(五)
- DL:深度学习(神经网络)的简介、基础知识(神经元/感知机、训练策略、预测原理)、算法分类、经典案例应用之详细攻略
- 机器学习算法集成系统
- 数学建模学习(86):蜻蜓算法(DA)求解多元函数最值
- 如何将Mish函数用到深度学习算法中
- 机器学习中常用的分类算法总结
- bellman-ford算法
- 关于PCA算法的一点学习总结
- 学习算法笔记(6)
- Keras之TCN:基于keras框架利用时间卷积网络TCN算法对上海最高气温实现回归预测(把时间序列数据集转化为有监督学习数据集)案例
- Pytorch总结十六之优化算法:图像增广训练模型、微调(迁移学习)实现热狗识别
- 强化学习之Grid World的Monte Carlo算法解析【MiniWorld】SYSU_2023SpringRL