Stanford机器学习---第十讲. 数据降维

转自:点击打开链接

本栏目(Machine learning)包括单参数的线性回归、多参数的线性回归、Octave Tutorial、Logistic Regression、Regularization、神经网络、机器学习系统设计、SVM(Support Vector Machines 支持向量机)、聚类、降维、异常检测、大规模机器学习等章节。内容大多来自Standford公开课machine learning中Andrew老师的讲解和其他书籍的借鉴。(https://class.coursera.org/ml/class/index


PS: 盼望已久的十一长假就要到了~祝大家国庆快乐,玩的开心!(*^__^*) 


第十讲. 降维——Dimensionality Reduction


===============================

(一)、为什么要降维?

(二)、主成分分析Principal Component Analysis (PCA) 

(三)、PCA 算法流程

(四)、从压缩数据中恢复原数据

(五)、怎样决定降维个数/主成分个数

(六)、应用PCA进行降维的建议



本章主要讲述应用PCA算法进行数据降维的原理


=====================================

(一)、为什么要降维?

  • About data:
我们需要一组关于XXX的数据,定义就铺天盖地的来了,百万级个特征拿过来,我们怎么进行机器学习啊?!李航老师在他的博客《机器学习新动向:从人机交互中》中提到,学习精度越高,学习确信度越高,学习模型越复杂,所需要的样本也就越多。样本复杂度满足以下不等式

由此可见,feature太多会造成模型复杂,训练速度过慢,因此我们引入降维。
  • About Visualization:
多维数据很难进行可视化分析,因此我们需要降维分析。






=====================================

(二)、About Principal Component Analysis (PCA) 

  • PCA 目的:降维——find a low dimension surface on which to project data ~
如图所示,蓝色的点project到红色surface上得到绿点,寻找surface使得两点之间的orthogonal distance总和最小,就是PCA的任务


  • PCA 与 Linear Regression 的区别:
1. PCA衡量的是orthogonal distance, 而linear regression是所有x点对应的真实值y=g(x)与估计值f(x)之间的vertical distance距离
2. more general 的解释:PCA中为的是寻找一个surface,将各feature{x1,x2,...,xn}投影到这个surface后使得各点间variance最大(跟y没有关系,是寻找最能够表现这些feature的一个平面);而Linear Regression是给出{x1,x2,...,xn},希望根据x去预测y,所以进行回归






=====================================

(三)、PCA 算法流程 


假设有m个samples,每个数据有n维。

----------------------------------------数据预处理----------------------------------------

1. 计算各个feature的平均值,计μj ;(Xj(i)表示第i个样本的第j维特征的value)

μj = Σm Xj(i)/m


2. 将每一个feature scaling:将在不同scale上的feature进行归一化;

3. 将特征进行mean normalization
令Xj(i)= (Xj(i)j)/sj

这样呢,我们需要做的就是两件事:
第一,如何寻找这个surface?
第二,给定surface,怎样求点到surface投影的value?



--------------------------------------- PCA算法选取k个主分量----------------------------------------


4. 求n×n的协方差矩阵Σ:



5. 根据SVD求取特征值和特征向量:
[U,S,V] = SVD(Σ)
其中,SVD为奇异值分解singular value decomposition),在matlab中有函数[U,S,V] = svd(A) 返回一个与A同大小的对角矩阵S(由Σ的特征值组成),两个酉矩阵U和V,且满足= U*S*V'。若A为m×n阵,则U为m×m阵,V为n×n阵。奇异值在S的对角线上,非负且按降序排列。
那么对于方阵Σ呢,就有
Σ = USV'
ΣΣ' = USV'*VS'U' = U(ΣΣ')U'
Σ'Σ = VS'U'*USV' = V(Σ'Σ)V'
i.e. U是ΣΣ'的特征向量矩阵;V是Σ'Σ的特征向量矩阵,都是n*n的矩阵
由于方阵的SVD相当于特征值分解,所以事实上U = V, 即Σ = USU', U是特征向量组成的正交矩阵

我们的目的是,从n维降维到k维,也就是选出这n个特征中最重要的k个,也就是选出特征值最大的k个~so...goto next step


6. 按特征值从大到小排列,重新组织U
如果使用matlab的svd求得特征值,就可以直接跳过这步了,因为该函数返回值中,奇异值在S的对角线上按照降序排列。否则的话应进行排序,并按照该次序找到对应的特征向量重新排列。


7. 选择k个分量
按照第五、六步中讲的svd过后,我们得到了一个n×n的矩阵Σ和U,这时,我们就需要从U中选出k个最重要的分量;即选择前k个特征向量,即为Ureduce, 该矩阵大小为n×k

这样对于一个n维向量x,就可以降维到k维向量z了:

 



=====================================

(四)、从压缩数据中恢复原数据


我们已经知道,可以根据z(i) = Ureduce'× x(i) 将n维向量x降维到k维向量z,那么有时我们需要恢复n维向量,怎么做呢?
由于Ureduce是正交矩阵(下面Ureduce简记为U),即U' = U-1, 所以
xapprox = (U')-1×z = (U-1)-1×z = Uz 
(PS:这里的逆操作为伪逆操作)
注意:这里恢复出的xapprox并不是原先的x,而是向量x的近似值



=====================================

(五)、怎样决定降维个数/主成分个数


首先从一个general一点的思路去想呢,我们是希望,选出主成分之后进行数据分析,不会造成大量特征的丢失,也就是说可以用下式的error ratio表示经过压缩后的性能如何。
error ratio = 
然后呢,我们定义一个threshold(10% for example),如果error ratio<threshold,说明这样选取主成分是可以接受的,else not
从数学上可以证明,上面这个error ratio 可以表示为 

所以,可以用下式进行k的合理选取:







=====================================

(六)、应用PCA进行降维的建议


1. PCA可以降维,那让我们联想到了之前说过拟合问题是由维度过高或者参数过多造成的,那么可不可以用PCA解决overfitting的问题呢?

Ans:NO!应用PCA提取主成分可能会解决一些overfitting的问题,但是呢,不建议用这种方法解决overfitting问题,还是建议用第三章中讲过的加入regularization项(也称为ridge regression)来解决。


2. PCA中主成分分析应用到那部分数据呢?

Ans:Only Training Data!可以用Cross-Validation data 和 test Data进行检验,但是选择主分量的时候只应用training data.


3. 不要盲目PCA

Notice:only 当你在原数据上跑到了一个比较好的结果,又嫌它太慢的时候才采取PCA进行降维,不然降了半天白降了~


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Stanford-sentiment-treebank(斯坦福情感树库)是一个用于情感分析的数据集。这个数据集由斯坦福大学的研究人员创建,并用于训练和测试情感分析模型。 Stanford-sentiment-treebank的数据集包含了超过11,855个句子,这些句子被分为了5个情感类别:非常负面、负面、中性、正面和非常正面。每个句子都经过了人工标注和建立了情感树结构。 情感树结构是指将每个句子划分为一个树状结构,其中每个节点表示一个短语或单词,并且每个节点都有一个对应的情感标签。根节点代表整个句子的情感,而叶子节点代表具体的短语或单词的情感。 借助这个数据集,研究人员可以训练机器学习模型来识别和预测句子的情感。通过对情感树进行分析,研究人员可以了解到不同单词和短语在不同情感类别中的关联性,从而提高情感分析模型的准确性。 Stanford-sentiment-treebank的数据集被广泛用于情感分析领域的研究和实践。它为研究人员提供了一个基准数据集,用于比较不同情感分析模型的效果。此外,它也为开发者提供了一个用于训练和测试自然语言处理模型的有价值资源。 总而言之,Stanford-sentiment-treebank是一个用于情感分析研究的重要数据集。它通过情感树的结构为研究人员提供了对句子情感的深入理解,并促进了情感分析模型的开发和改进。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值