码迷,mamicode.com
首页 > 其他好文 > 详细

PCA/SVD--怎样确定topNfeat(特征值数目/奇异值数目)

时间:2017-04-30 14:11:06      阅读:924      评论:0      收藏:0      [点我收藏+]

标签:其他   数据集   参考   工具   元素   selected   var   技术分享   src   

Coding by Chang, 2017/04/30

1.主成分分析(PCA)

1.1 PCA数学模型

  最大可分性出发(参考《机器学习》周志华):样本点在超平面上的投影能尽可能分开。

  即应该使投影后样本点的方差最大化:

    maxtr(WTXXTW)     s.t. WTW=I

  这个目标函数可以通过对协方差矩阵XXT做特征值分解求得转换矩阵W.

  降维原理:在W对应的开始r个主成分之后,方差就会迅速下降。这意味着数据集X中只有r个重要特征。

1.2 实践中确定topNfeat数目方法:

  在选择开始几个主成分后,方差就会迅速下降,可以通过计算方差百分比来确定topNfeat的具体数目。

  方差百分比=sum(the selected eigvals)/sum(all eigVals)

 1 #coding by C
 2 #-*- coding:utf-8 -*-
 3 
 4 sumOfEigVals=sum(eigVals)
 5 total=0.0
 6 for j in range(topNfeat):
 7     total+=eigVals[eigValInd(j)]
 8     percent=total/sumOfEigVals
 9     if percent>0.98:
10         print the number of eigVals: %d, var: %f %(j,percent)
11         print the best number of topNfeat: ,j
12         break
13     print ‘the number of %d has occupied %f‘ %(j,percent)

 

2.奇异值分解(SVD)

2.1 SVD数学模型为:

    Xm×n=Um×mΣm×nVTn×n

  Σ矩阵的对角元素称为“奇异值”。

  Σ矩阵的两个特点:只有对角元素,其他元素为0;对角元素从大到小排列;

  降维原理:在r个奇异值之后,其他的奇异值都置为0. 这意味着数据集X中只有r个重要特征。

2.2 利用python实现SVD

  依赖库:python内部线性代数工具箱 numpy.linalg

  实现方法:linalg.svd()

  技术分享

  注意:Σ是对角矩阵,但是它“只返回对角元素”,节省空间。

3,。特征值与奇异值之间的关系

  奇异值就是矩阵X*XT特征值的平方根。

PCA/SVD--怎样确定topNfeat(特征值数目/奇异值数目)

标签:其他   数据集   参考   工具   元素   selected   var   技术分享   src   

原文地址:http://www.cnblogs.com/cygalaxy/p/6789256.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!