机器学习笔记(2)——deepfs算法学习(一种特征选择算法)

旧时模样 提交于 2019-12-01 07:33:40

RBM网络可以做特征选择,去除冗余和不相关特征,减少计算量,提高准确度

1、原理概述 

  对于已经训练完成的RBM网络,可以认为已经建立起了特征之间的相关联系。对于任意特征i,如果可以通过其他特征经由rbm网络计算得出,那么我们就可以认为这个特征i是冗余的。具体怎么计算呢?首先定义v'为v的重构(见上一篇概念理解部分),那么对任意特征i,可定义重构误差ei(也就是vi和v‘i相差多少,当然不是做简单加减,具体见下方),然后使用训练数据对RBM网络进行两次测试,第一次使用原始数据,第二次把特征i的值变成零再测试,如果两次运行的结果,变成0之后的误差不变或者更小了,那么就认为,这个特征i是冗余的。

2、具体过程

  特征选择通过三个步骤进行:1)初始训练:对包含所有特征的训练数据进行rbm训练;2)特征消除:通过初始训练的rbm去除额外特征;3)主训练:在包含选定特征的训练数据上用初始训练的rbm训练dbm

 

  1)RBM网络训练,详细见上篇,此处为方便阅读,首先把相关公式做如下处理

  

  

  即:将梯度公式直接由期望形式表达。其中Edata表示由训练数据得出的期望,Emodel表示所有可能情况下该模型的期望,其中第二项中v(上滑~)表示使用吉布斯采样得到近似数据

  2)特征消除

  该算法从所有输入特征的集合开始,利用训练后的rbm来评价每组特征的效果。

  定义重建误差

 

  

 

   从形式上看,ei就是i特征的重建相对于原始输入值的方差,也就是偏离程度,先称作原始重建误差

  然后,对某个我们想判断的特征i,设置对应单元vi=0,然后把数据输入rbm网络,并计算

  

 

   注意这里的v(上标—)是设置vi=0后得到的vi的重建。则ei(上标—)即为设置后的重建误差。先称作对比重建误差

  下面对两个重建误差作比较,如果对比重建误差<原始重建误差,就说明特征i的vi=0之后,比他原来的值得到的结果同优或更优,即此i为荣誉特征,舍弃。反之采纳。

  :个人理解标注,首先这个过程使用的是已经建立好的RBM。其次,对重建误差的计算,要使用训练集所有元素的特征i,也即ei所求是每一个训练元素输入到RBM中其i特征的重建相对于自己原始输入偏差值的加和

  3)使用选择特征和对应权重初始化RBM网络并进行训练DBM等

3、算法伪代码(两种)

  

 

  

 参考资料:

[1]  Aboozar Taherkhani, Deep-FS: A feature selection algorithm for Deep Boltzmann Machines, 2018

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!