主成分分析(PCA)

1.主成分分析的作用:

(1)  数据的降维, 通过降维可以发现更便于人类理解的特征;

(2)  可视化;

(3)  去噪;

 

2.主成分分析的原理,(以两个特征为例)

 主成分分析:一个非监督的机器学习算法


从图中可以看出,通过简单的只取一个特征来表示样本(将样本映射到特征1上,表示只取特征1;将样本映射到特征2上,表示只取特征2),往往不能很好的来表示样本。虽然达到了降维的目的,但是不能很好的将样本区分开来,使每个样本的“独特性”降低,即样本见得间距变小。

那么,如何找到让这个样本间间距最大的轴?如何定义样本间间距?

使用方差(variance)来定义样本间的间距,方差越大,样本越离散,样本间的间距越大。



由上图可以看出:将样本映射到斜线上,更符合样本以前的分布,且方差也比较大.

x(demean之后的样本)为m*n的矩阵(m为样本的数量,n为样本的特征个数)

w=(w1,w2)(我们想要求的轴的方向)为n维的列向量

目标:使得我们所有的样本映射到w以后,有:最大 (为样本映射到w后的表示)

由于是一个向量,向量的平方==向量模的平方,


所以目标函数为:

将样本映射到w方向上(w为单位的方向向量)


由于我们对所有的样本(x)进行demean处理,即,所以映射到w方向后,

所以,目标即为:


用梯度上升法,求得w=(w1,w2,……wn)使得目标函数最大,n为特征的数量;

令:



补充:向量a的平方=a点乘a=向量a的模的平方。向量的点乘可以看作是矩阵中的乘。


3.主成分分析与线性回归的区别


4.求出第一主成分以后,如何求出下一个主成分?

数据进行改变,将数据在第一个主成分上的分量去掉

在新的数据上再求第一主成分。


5.高维数据向低维数据的映射





注意这里的与前边的维度相同,但是并表示的不再是一个矩阵,因为降维的过程中,丢失掉了部分信息(但丢失掉的这部分信息很有可能是噪音)。

 

6.程序实现时注意的几个事项

mnist.ipynb 中

(1)先下载数据:

from sklearn.datasets import fetch_mldata

mnist = fetch_mldata('MNIST original')

若出现OSErroe,有可能是scikit_learn_data/mldata(默认的文件被放在了cikit_learn_data/mldata中) 中已经存在mnist-original但是被损坏的文件,将该文件删除,重现下载即可

(2)取原始数据90%的信息,可以将原始样本从784维降到87,
进行KNN分类时,运行速度从原来的51.5 s 降到了664 ms毫秒,速度得到了将近10倍的提升.
识别的准确率从 0.9688 提升到了0.9728, 丢失了一部分信息,但是识别的准确率却更高了, 这说明,数据中可能存在噪音,我们可能是将那些不重要的信息(噪音)丢掉了.
从而也说明了PCA 具有去噪的作用

 

(3)对于图像, 不用使用standardScalar, 因为只有在数据尺度不同时才使用standard Scalar,而像素点的灰度的尺度相同


(4)sklearn中的KNN算法的实现方法与我们本地封装的KNN的实现方法有略微不同.sklearnKNN对于样本量比较大的数据,会自动的使用树结构来加快KNN过程.



  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值