![[ML] 特征提取3种基本方法,第1张 [ML] 特征提取3种基本方法,第1张](/aiimages/%5BML%5D+%E7%89%B9%E5%BE%81%E6%8F%90%E5%8F%963%E7%A7%8D%E5%9F%BA%E6%9C%AC%E6%96%B9%E6%B3%95.png)
嵌入(embed) :学习 算法 中本来就包含有特征选择的过程,例如决策树一类的分类器,它们在决定分枝点时就会选择最有效的特征来对数据进行划分。但这种方法是在局部空间中进行优选,效果相对有限。
封装(Wrapper): 特征选择过程与训练过程整合在一起,以模型的预测能力作为衡量特征子集的选择标准,例如分类精度,有时也可加入复杂度惩罚因子。多元线性回归中的前向搜索和后向搜索可以说是封装方法的一种简单实现。不同的学习算法要搭配不同的封装方法,如果是线性分类器,可以采用之前博文谈到的 LASSO方法 (glmnet包)。如果是非线性分类器,如树模型则可以采用随机森林封装(RRF包)。封装法可以选择出高质量的子集,但速度会比较慢。
过滤(Filter): 特征选择过程独立于训练过程,以分析特征子集内部特点来预先筛选,与学习器的选择无关。过滤器的评价函数通常包括了相关性、距离、信息增益等。在数据预处理过程中删除那些取值为常数的特征就是过滤方法的一种。过滤法速度快但有可能删除有用的特征。
在实务中进行特征选择可以先借由专家知识来初步筛选,再用过滤法快速筛选无关变量,最后采用封装法得到最优子集和模型结果。
这是BP神经网络的特征维和样本输入建立关系;1 for hh=1:30
p((hh-1)*30+1:(hh-1)*30+30,pcolum+1)=p1(hh,1:30)
end
//总共有pcolum个样本,每个样本有30维特征值;依次循环送入记录特征值的矩阵p中,
2 switch pcolum 用于把样本的值送入教师矩阵t中;样本按0~49顺序输入;对应5组0~9,比方第一个case中告诉t在0~49中那些属于“数字0”;
总的来说t值对应不同的p取1~9
也就是说这段程序的中心目的是把p( 特征维,pcolum)与对应的输出t(pcolum)对应起来,之后再把p和t送入BP网络中训练
主要看你p1是怎么来的;估计是把原始手写体分成粗网格;即p1是一个30×30的矩阵,p是一个900×50的矩阵;其列为输入的50个手写体;行为900个网格的值;
for hh=1:30
p((hh-1)*30+1:(hh-1)*30+30,pcolum+1)=p1(hh,1:30)
end
这段程序其实就是把2维的p1放入到p的一行里面去;把30×30的矩阵换成900×1
的形式。
你去搜索下 粗网格/BP神经 ,具体看你前面的p1是怎么来的;可能你这30×30的矩阵就是30×30大小的手写体二值化图像每个像素上的值
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)