机器学习基础专题:主成分分析技术PCA
主成分分析技术
全称是Principal component analysis (PCA)。将原始数据从p个特征维度降低到d个维度。
原理
对原始特征空间进行重构。需要最大投影方差,尽可能保留数据在原空间的信息。投影就是xTwx^TwxTw,我们必须规定∣w∣=1|w| = 1∣w∣=1,否则可以通过增大www来增大投影方差,失去了意义。具体可以参见损失函数部分。
从另外一个角度理解,就是需要最小化重构数据和原数据之间的距离。
输入
训练集数据D=(x1,y1)...(xM,yM)D = {(x_1,y_1) ... (x_M,y_M)}D=(x1,y1)...(xM,yM),xi∈X⊆Rpx_i \in \mathcal{X} \subseteq R^pxi∈X⊆Rp,yi∈Ry_i \in Ryi∈R
X=(x1x2...xM)T∈RM∗pX = (x_1\ x_2\ ...\ x_M)^T \in R^{M*p}X=(x1 x2 ... xM)T∈RM∗p
同时,我们可以得到数据均值和方差。让我们用1M1_M1M表示一个长度为M,值全为1的列向量。用HHH表示中心矩阵。H=IM−1M1M1MTH = I_M - \frac 1 M 1_M 1_M^TH=IM−M11M1MT。通过计算我们可以得到Hn=HH^n = HHn=H。
xˉ=1M∑i=1Mxi=1MXT1M\bar x = \frac{1}{M} \sum_{i=1}^M x_i = \frac{1}{M} X^T 1_Mxˉ=M1∑i=1Mxi=M1XT1M
S=1M∑i=1M(xi−xˉ)T(xi−xˉ)=1MXTHXS = \frac{1}{M} \sum_{i=1}^M (x_i - \bar x)^T(x_i - \bar x) = \frac{1}{M} X^T H XS=M1∑i=1M(xi−xˉ)T(xi−xˉ)=M1XTHX
输出
X′=(x1′x2′...xM′)T∈RM∗dX' = (x_1'\ x_2'\ ...\ x_M')^T \in R^{M*d}X′=(x1′ x2′ ... xM′)T∈RM∗d
损失函数
因为数据是ppp维的,我们让uiu_iui当作每一个维度上的www,仍然满足∣ui∣=1|u_i| = 1∣ui∣=1。我们的目标是根据投影方差定义的。
J=1M∑i=1M((xi−xˉ)u1)2=1M∑i=1Mu1T(xi−xˉ)(xi−xˉ)Tu1=u1T1M∑i=1M(xi−xˉ)(xi−xˉ)Tu1=u1TSu1J = \frac 1 M \sum_{i=1}^M ((x_i - \bar x)u_1)^2 \\\\ = \frac 1 M \sum_{i=1}^M u_1^T (x_i - \bar x) (x_i - \bar x)^T u_1\\\\ = u_1^T \frac 1 M \sum_{i=1}^M (x_i - \bar x) (x_i - \bar x)^T u_1\\\\ = u_1^T S u_1 J=M1i=1∑M((xi−xˉ)u1)2=M1i=1∑Mu1T(xi−xˉ)(xi−xˉ)Tu1=u1TM1i=1∑M(xi−xˉ)(xi−xˉ)Tu1=u1TSu1
那么我们可以得到u1∗=argmaxuu1TSu1u_1^* = argmax_u\ u_1^T S u_1u1∗=argmaxu u1TSu1且满足∣ui∣=1|u_i| = 1∣ui∣=1。
为了体现出∣ui∣=1|u_i| = 1∣ui∣=1的特点,我们对损失函数进行重构。
L(u1,λ)=u1TSu1+λ(1−u1Tu1)L(u_1, \lambda) = u_1^T S u_1 + \lambda(1 - u_1^T u_1)L(u1,λ)=u1TSu1+λ(1−u1Tu1)
接下来对uiu_iui进行求导,
∂L∂u1=2Su1−2λu1=0Su1=λu1\frac {\partial L} {\partial u_1} = 2Su_1 - 2\lambda u_1 = 0 \\\\ Su_1 = \lambda u_1 ∂u1∂L=2Su1−2λu1=0Su1=λu1
这里我们可以发现u1u_1u1是S的eigen vector,λ\lambdaλ是对应的eigen value。
其他uiu_iui通过相同过程求解,只需要满足uiu_iui之间是互相垂直的即可。
步骤
(1)将样本矩阵中心化得到X′X'X′,即每一维度减去该维度的均值,使维度上的均值为0
(2)计算样本协方差矩阵S=1M−1X′TX′S = \frac{1}{M-1} X^{'T}X'S=M−11X′TX′
(3)寻找协方差矩阵的eigen values和eigen vectors
降维之后对原始数据进行还原
X^=∑j=1d(X′Tuj)uj\hat X = \sum_{j=1}^d (X'^T u_j)u_jX^=∑j=1d(X′Tuj)uj
适用场景
原始数据特征过于庞大且特征有明显的相关性。
优点
- 计算简单,容易实现
- 在一定程度上起到降噪效果
- 无参数限制
缺点
- 降维之后的数据缺乏解释性
Reference
- CS540 Intro to AI, UW Madison, Jerry Zhu
- 白板推导系列,shuhuai007
机器学习基础专题:主成分分析技术PCA相关推荐
- 机器学习:基于主成分分析(PCA)对数据降维
机器学习:基于主成分分析(PCA)对数据降维 作者:AOAIYI 作者简介:Python领域新星作者.多项比赛获奖者:AOAIYI首页
- 机器学习基础专题:特征工程
特征工程 特征提取 将原始数据转化为实向量之后,为了让模型更好地学习规律,对特征做进一步的变换.首先,要理解业务数据和业务逻辑. 其次,要理解模型和算法,清楚模型需要什么样的输入才能有精确的结果. 探 ...
- 机器学习基础专题:分类
线性分类 分类方式 硬分类 使用的是非概率模型,分类结果是决策函数的决策结果. 代表:线性判别分析.感知机 软分类 分类结果是属于不同类别的概率. 生成式 通过贝叶斯定理,使用MAP比较P(Y=0∣X ...
- 机器学习非监督分类之主成分分析(PCA)
主成分分析是非监督分类中基础的算法,应用于降低特征的维度. 在介绍主成分分析之前,我们要先介绍一下特征值和特征向量,因为在后面我们要用到. 一.特征值和特征向量 特征值 如果有 此时γ为矩阵A的特征值 ...
- 机器学习基础专题:高斯混合模型和最大期望EM算法以及代码实现
高斯混合模型 混合模型是潜变量模型的一种,是最常见的形式之一.而高斯混合模型(Gaussian Mixture Models, GMM)是混合模型中最常见的一种.zzz代表该数据点是由某一个高斯分布产 ...
- 机器学习基础专题:逻辑回归
逻辑回归 广义线性模型. 原理 输入 训练集数据T=(x1,y1)...(xM,yM)T = {(x_1,y_1) ... (x_M,y_M)}T=(x1,y1)...(xM,yM),xi∈X ...
- 机器学习基础专题:感知机
感知机 原理 思想是错误驱动.一开始赋予w一个初始值,通过计算被错误分类的样本不断移动分类边界. 输入 训练集数据D=(x1,y1)...(xM,yM)D = {(x_1,y_1) ... (x_M, ...
- 机器学习基础专题:线性判别器
线性判别分析 全称是Linear Discriminant Analysis (LDA). 原理 给定训练样例集,通过降维的思路进行分类.将样例投影到一条直线上,使得同类样例的投影点接近,异类样例的投 ...
- 机器学习基础专题:样本选择
样本选择 选择最少量的训练集S⊂\sub⊂完整训练集T,模型效果不会变差. 优势: 缩减模型计算时间 相关性太低的数据对解决问题没有帮助,直接剔除 去除噪声 数据去噪 噪声数据 特征值不对(缺失.超出 ...
最新文章
- 业余学python数据挖掘怎么赚钱_0基础转行学Python,学到什么地步能拿到月薪15k+?...
- 使用Visual Studio实现WinForm多语言版本实例
- 周易的含义_朱熹与《周易本义》
- 基于DirectShow的局域网内音视频流的多机共享
- 向左向右向后转python_Turbot与python教程-实现左向旋转
- Linux MTD子系统 _从模型分析到Flash驱动模板
- 分布式 开源_3个开源分布式跟踪工具
- Ubuntu 16.04启用 TCP 拥塞控制之 BBR
- Bailian2721 忽略大小写比较字符串大小(POJ NOI0107-16)【字符串】
- 02-微信小程序商城 顶部广告图片(微信小程序商城开发、小程序毕业设计、小程序源代码)(黄菊华-微信小程序开发教程)
- 基于Python的COVID-19背景下的网络社会心态变化数据分析
- 一文搞明白DNS缓存投毒
- Enovia 用户操作手册
- web项目上云_联想Filez携手浙江中烟,发力“云”端,打造“烟草上云”新势能...
- 一招教你学会如何用excel求重复项最大值
- 小米手机比较 联通、移动、电信 3G 支持比较
- python语言发展历史
- 关于手机输入法的一些点子
- 2.4.2 死锁的处理策略-预防死锁(破坏互斥条件、破坏不可剥夺条件、破坏请求和保持条件、破坏循环等待条件)
- 面试题--maven和tomcat篇
热门文章
- 『参考』使用.net CF自带库判断设备的连接状态
- unity 游戏第一次安装完之后运行,切出来,点击桌面图标后黑屏问题
- 小程序 - 效果处理之技巧合集(更新中...)
- 多态指针访问虚函数不能被继承的类快速排序N皇后问题插入排序堆排序merge归并排序栈上生成对象两个栈实现一个队列...
- tomcat jsvc 调优及JMX监控
- R710后台更新网卡驱动
- vivado----fpga硬件调试 (五) ----找不到ila核问题及解决
- 键盘输入_键盘输入技巧
- 谭浩强C程序设计第四版答案
- python re.match、re.search以及re.findall的区别