漫谈机器学习经典算法—特征提取与特征选择[通俗易懂]

漫谈机器学习经典算法—特征提取与特征选择

大家好,又见面了,我是全栈君。

更新:邮箱发只是来。此文放到了http://lanbing510.info/2014/10/22/Feature-Extraction-Selection.html。谢谢。

注:图片看不到的同学能够去以下的链接查看:http://app.yinxiang.com/l/AB8UpUaK_SBMEald_sRU-Z-xGtofVoIaxjM/

特征提取和特征选择都是从原始特征中找出最有效(同类样本的不变性、不相同本的鉴别性、对噪声的鲁棒性)的特征

特征提取:将原始特征转换为一组具有明显物理意义(Gabor、几何特征[角点、不变量]、纹理[LBP HOG])或者统计意义或核的特征
特征选择:从特征集合中挑选一组最具统计意义的特征。达到降维
两者作用:
1 降低数据存储和输入数据带宽
2 降低冗余
3 低纬上分类性往往会提高
4 能发现更有意义的潜在的变量,帮助对数据产生更深入的了解


线性特征提取

PCA-主成分分析

思想:寻找表示数据分布的最优子空间(降维,能够去相关)
事实上就是协方差矩阵前s个最大特征值相应的特征向量构成映射矩阵
以下是讲述的非常直观具体的文章






LDA-线性判别分析
思想:寻找可分性判据最大的子空间。
用到了Fisher的思想,即寻找一个向量。使得降维后类内散度最小。类间散度最大;事实上就是Sw-1Sb前s个特征值相应的特征向量构成映射矩阵
DHS的模式分类一书中96页有具体的推导,浅显易懂
參考论文1

ICA-独立成分分析
思想:PCA是将原始数据降维。并提取不相关的部分。ICA是将原始数据降维并提取出相互独立的属性;寻找一个线性变换z=Wx,使得z的各个分量间的独立性最大。I(z)=Eln(p(z)/p(z1)..p(zd))
看Machine Learning A Probabilistic Perspective的推导计算
參考论文2


注:PCA&ICA
PCA的问题事实上是一个基的变换,使得变换后的数据有着最大的方差。方差的大小描写叙述的是一个变量的信息量,我们在讲一个东西的稳定性的时候,往往说要减小方差,假设一个模型的方差非常大,那就说明模型不稳定了。

可是对于我们用于机器学习的数据(主要是训练数据)。方差大才有意义,不然输入的数据都是同一个点,那方差就为0了,这样输入的多个数据就等同于一个数据了。


漫谈机器学习经典算法—特征提取与特征选择[通俗易懂]


ICA是找出构成信号的相互独立部分(不须要正交),相应高阶统计量分析。ICA理论觉得用来观測的混合数据阵X是由独立元S经过A线性加权获得。ICA理论的目标就是通过X求得一个分离矩阵W,使得W作用在X上所获得的信号Y是独立源S的最优逼近。该关系能够通过下式表示:

Y = WX = WAS 。 A = inv(W)

ICA相比与PCA更能刻画变量的随机统计特性,且能抑制高斯噪声。

漫谈机器学习经典算法—特征提取与特征选择[通俗易懂]




二维PCA
參考论文3






CCA-Canonical Correlaton Analysis 典型相应分析
思想:找到两组基,使得两组数据在这两组基上的投影相关性最大
用来描写叙述两个高维变量之间的线性关系
用PLS(Partial Least Squares)来求解
參考论文4




非线性特征提取

Kernel PCA  參考论文5

Kernel FDA  參考论文6


Manifold Learning 流形学习
找到流行上的低维坐标
利用流行学上的局部结构进行降维的方法:ISOMAP、LLE、Laplacian Eigenmap、LPP
參考文献7 8 9 10


准则性质总结


分为三类
1 基于欧氏距离的准则(散度矩阵)
漫谈机器学习经典算法—特征提取与特征选择[通俗易懂]


漫谈机器学习经典算法—特征提取与特征选择[通俗易懂]



3 基于熵的准则
漫谈机器学习经典算法—特征提取与特征选择[通俗易懂]





相应的准则相应
漫谈机器学习经典算法—特征提取与特征选择[通俗易懂]










參考文献

[1] Hua Yu and  JieYang, A direct LDA algorithm for high – dimensional data with application to face recognition, Pattern Recognition Volume 34, Issue 10, October 2001,pp.2067- 2070
[2] A. Hyvarinenand E.  Oja. Independent Component Analysis: Algorithms and Applications.  Neural Networks, 13(4- 5):411 -430, 200
[3] J. Yang, D. Zhang, A.F.  Frangi , and J.Y. Yang, Two – dimensional PCA: a new approach to appearance – based face representation and recognition, IEEE Trans. on Pattern Analysis and Machine Intelligence, vol. 26, no. 1, pp. 131- 137, Jan. 2004
[4] R. H. David, S.  Sandor and S.- T.   John,Canonical correlation analysis: An overview with application to learning methods, Technical Report, CSD – TR- 03-02,2003
[5] B. Scholkopf , A.  Smola , and K.R. Muller. Nonlinear component analysis as a kernel eigenvalue problem, Neural Computation, 10(5): 1299- 1319, 1998
[6] Mika, S., Ratsch , G., Weston, J.,   Scholkopf , B.,  Mullers, K.R., Fisher discriminantanalysis with kernels, Neural Networks for Signal Processing IX, Proceedings of the IEEE Signal Processing Society Workshop, pp. 41  – 48, 1999
[7] J. B.  Tenenbaum , V. de Silva, and J. C. Langford, A global geometric framework for nonlinear dimensionality reduction, Science, 290, pp. 2319 – 2323, 2000
[8] Sam T.  Roweis , and Lawrence K. Saul, Nonlinear Dimensionality Reduction by Locally Linear Embedding,Science 22 December 2000
[9] Mikhail Belkin ,   Partha Niyogi ,Laplacian Eigenmaps for Dimensionality Reduction and Data Representation , Computation , 200
[10] Xiaofei He, Partha Niyogi, Locality Preserving Projections, Advances in Neural Information Processing Systems 16 (NIPS 2003), Vancouver, Canada, 2003
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115668.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Java 构造函数特点「建议收藏」

    Java 构造函数特点「建议收藏」(1).一般函数是用于定义对象应该具备的功能。而构造函数定义的是,对象在调用功能之前,在建立时,应该具备的一些内容。也就是对象的初始化内容。(2).构造函数是在对象建立时由jvm调用,给对象初始化。一般函数是对象建立后,当对象调用该功能时才会执行。(3).普通函数可以使用对象多次调用,构造函数就在创建对象时调用。(4).构造函数的函数名要与类名一样,而普通的函数只要符合标识符的命名…

    2022年6月17日
    18
  • 论如何用cmd命令做出数字雨特效「建议收藏」

    论如何用cmd命令做出数字雨特效「建议收藏」大家应该都看过《黑客帝国》这部电影,当时我就震惊了,那个数字雨特效做的太牛逼了!所以我趁着周末的休闲时间,略加研究,找到了用cmd做数字雨特效的方法,只需要三步:Step1首先,我们新建一个后缀名为.txt的文本文档,然后命名(其实命名都无所谓,你高兴就好),双击进入:Step2在里面编写代码:@echooff//这段代码是用来关闭后面的提示语句的titleqwedsazx890//这段代码是设置访问用户的,大可不必,写上也可以,”title”后面的

    2022年5月9日
    178
  • docker镜像操作_docker主要特性

    docker镜像操作_docker主要特性前言Docker的三大核心概念:镜像、容器、仓库。初学者对镜像和容器往往分不清楚,学过面向对象的应该知道类和实例,这跟面向对象里面的概念很相似我们可以把镜像看作类,把容器看作类实例化后的对象。|

    2022年7月29日
    3
  • 转:CCriticalSection「建议收藏」

    转:CCriticalSection「建议收藏」类CCriticalSection的对象表示一个“临界区”,它是一个用于同步的对象,同一时刻只允许一个线程存取资源或代码区。临界区在控制一次只能有一个线程修改数据或其它的控制资源时非常有用。例如在链表中增加一个节点就中允许一次一个线程进行。通过使用CCriticalSection对象来控制链表,就可以达到这个目的。在运行性能比较重要而且资源不会跨进程使用时,建议采用临界区代替信号灯。有关在MF…

    2022年7月20日
    13
  • linux进入命令行模式_pycharm的terminal

    linux进入命令行模式_pycharm的terminalPyCharm终端设置cmd

    2022年10月23日
    0
  • java怎样调用oracle存储函数_oracle如何调用存储过程

    java怎样调用oracle存储函数_oracle如何调用存储过程之前给大家介绍了java代码调用存储过程,下面要给大家介绍的就是java当中调用oracle存储过程,一起来看看吧。首先来看一下项目结构:在数据库创建存储过程的脚本,假如,使用的是本地的oracle数据库,那么,就需要开启服务-OracleOraDb11g_home1TNSListener和OracleServiceORCL。实现:输入用户的工号,输出用户名字、薪水以及工作:createorr…

    2022年10月20日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号