700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 吴恩达《Machine Learning》精炼笔记 9:PCA 及其 Python 实现

吴恩达《Machine Learning》精炼笔记 9:PCA 及其 Python 实现

时间:2020-04-18 07:30:09

相关推荐

吴恩达《Machine Learning》精炼笔记 9:PCA 及其 Python 实现

作者 | Peter

编辑 |AI有道

系列文章:

吴恩达《Machine Learning》精炼笔记 1:监督学习与非监督学习

吴恩达《Machine Learning》精炼笔记 2:梯度下降与正规方程

吴恩达《Machine Learning》精炼笔记 3:回归问题和正则化

吴恩达《Machine Learning》精炼笔记 4:神经网络基础

吴恩达《Machine Learning》精炼笔记 5:神经网络

吴恩达《Machine Learning》精炼笔记 6:关于机器学习的建议

吴恩达《Machine Learning》精炼笔记 7:支持向量机 SVM

吴恩达《Machine Learning》精炼笔记 8:聚类 KMeans 及其 Python实现

在本文中主要介绍的是数据降维相关的内容,重点讲解了PCA算法

为什么要实施降维

数据压缩

数据可视化

PCA算法

PCA和线性回归算法的区别

PCA算法特点

Python实现PCA

sklearn中实现PCA

为何降维

在现实高维数据情况下,会有数据样本稀疏、距离计算困难等问题,被称为维数灾难。

解决的方法就是降维,也称之为“维数约简”,即通过某种数据方法将原始高维属性空间转成一个低维“子空间”。在这个子空间中,样本密度大大提高,将高维空间中的一个低维“嵌入”。

降维Dimensionality Reduction

数据降维主要是有两个动机:

数据压缩Data Compression

数据可视化Data Visualization

数据压缩Data Compression

上图解释:

在一个三维空间中的特征向量降至二维的特征向量。

将三维投影到一个二维的平面上,迫使所有的数据都在同一个平面上。

这样的处理过程可以被用于把任何维度的数据降到任何想要的维度,例如将1000维的特征降至100维。

数据可视化Data Visualization

降维能够帮助我们进行数据的可视化工作。

上面图的解释:

假设给定数据,具有多个不同的属性

某些属性表示的含义可能相同,在图形中可以放到同一个轴上,进行数据的降维

PCA- Principal Component Analysis

在PCA中,要做的是找到一个方向向量(Vector direction),当把所有的数据都投射到该向量上时,PCA的关键点就是找到一个投影平面使得投影误差最小化。

方向向量是一个经过原点的向量,而投射误差是从特征向量向该方向向量作垂线的长度。

PCA与线性回归的区别

线性回归中的纵轴是预测值,PCA中是特征属性

误差不同:PCA是投射误差,线性回归是尝试最小化预测误差。

线性回归的目的是预测结果,`PCA·是不做任何分析。

PCA算法

主成分分析中,首先对给定数据进行规范化,使得数据每一变量的平均值为0,方差为1。

之后对数据进行正交变换,用来由线性相关表示的数据,通过正交变换变成若干个线性无关的新变量表示的数据。

新变量是可能的正交变换中变量的方差和(信息保存)最大的,方差表示在新变量上信息的大小。将新变量一次成为第一主成分,第二主成分等。通过主成分分析,可以利用主成分近似地表示原始数据,便是对数据降维。

PCA算法中从n维到k维的过程是

均值归一化。计算所有特征的均值,令xj=xj−μj,如果特征不在一个数量级上,需要除以标准差

计算协方差矩阵 covariance matrix

计算协方差矩阵∑的特征向量 eigenvectors

在西瓜书中的描述为

主成分个数确定

关于PCA算法中主成分个数k的确定,一般是根据公式:

不等式右边的0.01可以是0.05,或者0.1等,都是比较常见的。当为0.01的时候,表示保留了99%的方差数据,即大部分的数据特征被保留了。

当给定了个数k,协方差矩阵S中求解出来的各个特征值满足公式:

也就是满足:

这个和上面的公式是等价的。

重建的压缩表示

重建的压缩表示Reconstruction from Compressed Representation指的是将数据从低维还原到高维的过程。

将指定的点位置映射到一个三维曲面,反解前面的方程:

PCA特点

PCA本质上是将方差最大的方向作为主要特征,让这些特征在不同正交方向上没有相关性。

PCA是一种无参数技术,不需要进行任何参数的调节

Python实现PCA

利用numpy、pandas、matplotlib库实现PCA算法

sklearn中实现PCA

Linear dimensionality reduction using Singular Value Decomposition of the data to project it to a lower dimensional space. The input data is centered but not scaled for each feature before applying the SVD.

用sklearn学习PCA:

/pinard/p/6243025.html

实现模块

在scikit-learn中,与PCA相关的类都在sklearn.decomposition包中。最常用的PCA类就是sklearn.decomposition.PCA。

白化:对降维后的数据的每个特征进行归一化,让方差都为1

class sklearn.decomposition.PCA(n_components=None, # 降维后的特征数目,直接指定一个整数copy=True,whiten=False, # 判断是否进行白化,默认是不白化svd_solver='auto', # 指定奇异值分解SVD的方法tol=0.0,iterated_power='auto',random_state=None)

demo

在这里讲解一个例子,利用PCA算法来进行IRIS数据的分类

推荐阅读

(点击标题可跳转阅读)

干货 | 公众号历史文章精选

我的深度学习入门路线

我的机器学习入门路线图

重磅

AI有道年度技术文章电子版PDF来啦!

扫描下方二维码,添加AI有道小助手微信,可申请入群,并获得完整技术文章合集PDF(一定要备注:入群+ 地点 + 学校/公司。例如:入群+上海+复旦

长按扫码,申请入群

(添加人数较多,请耐心等待)

感谢你的分享,点赞,在看三

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。