MachineLearning特征工程之特征选择.docx
- 文档编号:3321331
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:13
- 大小:26KB
MachineLearning特征工程之特征选择.docx
《MachineLearning特征工程之特征选择.docx》由会员分享,可在线阅读,更多相关《MachineLearning特征工程之特征选择.docx(13页珍藏版)》请在冰豆网上搜索。
MachineLearning特征工程之特征选择
MachineLearning-特征工程之特征选择
特征工程之特征选择
简介
1Filter(过滤式选择)
1.1移除低方差特征(variancethreshold)
1.2信息增益(informationgain)
1.3单变量特征选择(Univariatefeatureselection)
1.3.1卡方检验(chi-squaretest)
1.3.2Pearson相关系数(PearsonCorrelation)
1.3.3费雪分数(fisherscore)
1.4Relief(RelevantFeatures)
2Wrapper(包裹式选择)
2.1递归特征消除(recursivefeatureelimination)
2.2遗传算法(geneticalgorithms)
2.3拉斯维加斯方法(LasVegasWrapper)
3Embedded(嵌入式选择)
3.1LI(LASSO)
3.2决策树、随机森林、极限树
简介
随着科技的发展,数据量越来越大,在建立模型时,考虑的数据维度越来越广,所以建里模型前的降维越来越重要,降温的方式一般有两种,其一是用原始的维度合成新的重要维度,例如SVD和PCA,其二是在原始的维度中保留
重要维度,剔除次要维度。
笫一种降维方式的优点是可以简单高效的合成重要维度,缺点是合成的维度失去其现实中的可解释性。
笫二种降维方式的优点是保持其原始的可解释性,缺点是计算比第一种相对复杂。
所以在图片识别,声音识别等不需要解释中间变量的模型领域经常采用第一种建模方式,在金融领域往往需要追求变量的可解释性,所以经常采用第二种降维方式。
本文主要采用第二种降维方式,也就是在原有的特征中进行特征选择。
这种降维的方法其关键分为两大步:
笫一步:
如何遍历所有特征。
笫二步:
如何判断特征的重要性。
如何遍历所有特征。
在笫一步中可使用前向搜索,后向搜索和双向搜索方法遍历所有特征,这三种遍历方法全部是贪心算法,最求每一步最优,不是全局最优。
1、前向搜索:
首先对单特征进行遍历,找到此次遍历中最重要的特征,然后保留这个特征,遍历这个特征和其他任一特征的组合的主要性,找到笫二重要的特征,保留这两个特征,遍历这个两个特征和其他任一特征的组合的重要性,找到第三个特征,保留着三个特征,以次下去,即可对全部特征进行重要性排序。
2、后向搜索:
与前向搜索相反,开始在全部特征中遍历剔除一个特征,找到影响重要性最小的特征,将其剔除,然后,在剩下的n-1个特征中遍历剔除一个特征,找到影响重要性最小的特征,以此下去,即可对全部特征进行重要性排序。
3、双向搜索:
同时进行向前和向后搜索,但是一定要注意,向后搜索一定不要剔除向前搜索选中的特征。
如何判断特征的重要性。
如何判断特征的重要性,有很多方法,如:
信息嫡、相关系数、信息价值(InformationValue),具体方法下面会具体介绍。
主要方法分类
特征筛选降维的方法主要分为三大类:
过滤法(Filter)、包裹法
(Wrapper)>嵌入法(Embedded)。
这三者的区别和具体算法下面进行具体介绍。
Filter(过滤法)
Filter的思想是,特征筛选和模型建立完全隔离开,筛选特征时,不考虑具体什么模型,只看特征对目标变量影响。
这种方法包括:
移除低方差特征(variancethreshold)、信息增益
(informationgain)、卡方检验(chi-squaretest)、Pearson相关系数
(PearsonCorrelation)^费雪分数(fisherscore)
移除低方差特征(variancethreshold)
其思想是,剔除方差小的特征,方差小的特征其值变化较小,认为区别力度不大,但是该方法只适用于离散型随机变量,若是连续性随机变脸需要进行woe封箱。
给出如下例子,可以看到第一个维度的取值为(0,0,1,0,0,0)其波动率非常小,所以认为这个特征应该清楚。
信息增益(informationgain)
这里先给出信息燔的公式如下:
其中:
D是一个集合,
是集合D的信息爛,
是集合D中k类的比例。
对于集合D,考虑样本的属性factorl,在属性factor1±,可将集合D划分为
),所以,这个属性将集合划分的信息增益为:
特征划分带来的信息增益值越大,其这个特征对结果影响越大,所以我们可以通过信息增益来判断特征的重要性,结合上面特征遍历的方法,我们就可以得到筛选特征的方法。
下面给出信息增益结合前向搜索的python例子:
上面给出了,前向搜索结合信息增益筛选特征的例子。
在很多情况下为了简化,只进行单变量特征选择。
单变量特征选择(Univariatefeatureselection)
单变量特征选择不进行前向、后向或者双向搜索,只进行单一变量的影响排
名。
常用的方法有卡方检验,相关系数和费雪分数。
卡方检验(chi-squaretest)
我们在讲解卡方检验以前,先来推导卡方分布。
卡方分布
是独立的服从
的随机变量,构造新的统计量:
侧
的密度函数为:
其中:
函数。
以上分布被称为卡方分布。
证明:
对于统计量
有:
使用极坐标变换:
\begin{cases}x_l=rcos\theta_l\x_2=rcos\theta_2sin\theta_1\...\x_{n-
1}=rcos\theta_{n-l}sin\theta_{n-2}...sin\theta_l\x_n=rsin\theta_{n-
1}sin\theta_{n-2)...sin\theta_lWend{cases}
\begin{cases}x_l=rcos\theta_l\x_2=rcos\theta_2sin\theta_1\...\x_{n-
1}=rcos\theta_{n-l}sin\theta_{n-2}...sin\theta_1\x_n=rsin\theta_{n-
1}sin\theta_{n-2)...sin\theta_1\\end{cases)
所以:
所以:
P(\chiA2
P(\chiA2 因为 得到 所以: P(\chi2 P(\chi2 当x趋于正无穷大时,有: 解得: 所以得到: 上面我们推导出来卡方分布,在推导的过程中,我们看到n个服从相同独立的正太分布随机变量的平方和服从卡方分布。 所以当我们构造的检验的统计量的表达形式是n个服从相同独立的正太分布随机变量的平方和时,这种检验方式称为卡方检验。 卡方统计量 卡方统计量的山来: 皮尔逊在衡量数据的分布与所选择的预期或假设分布之间的差异是,需要构造一个统计量,对这个统计量进行假设检验,皮尔逊首先考虑所有数据分布的频数 和对饮的假设分布的频率 的差的和: 但是他发现不同数据的频数可能大于假设的分布的频率,也可能小于假设的分布的频率。 所以不同数据的频率差之间会相互抵消。 从而失去本来想衡量数据分布和假设分布差异的意义。 针对这一问题,皮尔逊引入了平方的概念,即把上面的和变成了: .虽然解决了上面的问题,但是还有一个问题,就是数量级的问题,即 之间都是相差10,但是明显后面一种比前面一种更准确。 所以,皮尔逊在这个公式上又做了改变为: 所以上面的统讣量就是最终的卡方统汁量。 但是值得注意的是,这个统计量并不严格服从卡方分布。 理论次数 越大,该分布与卡方分布越接近,当理论次数 时,与卡方分布符合较好。 当超过20%的理论次数小于5,或至少有一个理论次数小于1时,公式右边的表达式与卡方分布偏离较大。 因此,其应用条件为至少有80%的理论次数不小于5,并且每个理论次数都不小于1。 上面的条件也就是进行卡方检验的条件。 当不符合上面的条件时,我们可以进行适当的处理,来使用卡方检验,这的处理方式不是本文重点,不展开讲述。 卡方检验 上面构造出了卡方统计量,对这个统计量进行检验的话,就是卡方检验, 卡方检验就是统计样本的实际观测值与理论推断值之间的偏离程度,实际观测值与理论推断值之间的偏离程度就决定卡方值的大小,卡方值越大,越不符合;卡方值越小,偏差越小,越趋于符合,若两个值完全相等时,卡方值就为0,表明理论值完全符合。 注意: 卡方检验针对分类变量,没如果是连续变量,则要分组离散化。 卡方检验的原假设 一般是数据的分布符合某一预期的分布。 备择假设一般为预期分布不符合某一预期分布。 卡方检验的用处主要有以下儿种: 1、检验某个连续变量的分布是否与某种理论分布相一致。 如是否符合正态分布、是否服从均匀分布、是否服从Poisson分布等。 2、检验某个分类变量各类的出现概率是否等于指定概率。 如在36选7的彩票抽奖中,每个数字出现的概率是否各为1/36;掷硬币时,正反两面出现的概率是否均为0.5。 3、检验某两个分类变量是否相互独立。 如吸烟(二分类变量: 是、否)是否与呼吸道疾病(二分类变量: 是、否)有关;产品原料种类(多分类变量)是否与产品合格 是第i个特征在第j个类里面的值, 所以上面构造的这个fisherscore越大,组内方差越小,组间的方差越大,也就是这个特征的效果越好。 相比于信息增益,fisherscore计算更简单,且跟准确。 所以这种方法相对更好。 下面我们给出python例子: Relief(RelevantFeatures) Relief(RelevantFeatures)是一种著名的过滤式特征选择方法,该方法设讣了一个“相关统计量”来度量特征的重要性,该统计量是一个向量,其每个分量分别对应一个初始特征,而特征子集的重要性则是由子集中每个特征对应的相关统计量分量之和来决定,于是,最终只需要指定一个阈值p,然后选择比p大的相关统计量分量对应的特征即可。 相关统讣量向量 在上面的描述中,可以看出,这个相关统计量的构造及其重要,我们下面介绍其是怎么构造的。 Relief 使用Relief进行特征选择,可以处理二分类问题。 我们先给出以下两个定义: 1、猜中近邻: 对应一个样本 ,我们找到距离这个样本最近的同类样本,就是猜中近临,记做 2、猜错近邻: 对应一个样本 ,我们找到距离这个样本最近的异类样本,就是猜错近临,记做 我们定义这个相关统计量向量的笫j个分量为: 其中: j为样本的第j个特征, ,当j属性离散时,其值要么为0,要么为1。 注: 其对连续的使用这个公式前,必须先线性映射到区间[0,1]。 为什么这样构造这个统讣量向量。 其实可以这样理解,对于属性j,当样本i与猜中近临的距离小于猜错近临的距离时,说明这个属性对分类是有正向帮助的,此时公式中 是正的。 也就意味着这个 变大。 这样 越大,说明属性对分类的影响越大。 Relief-F 上面给出的是二分类问题时Relief的原理,对于多分类问题,一般使用Relief-F,其思想和方法和ReliefJL乎一摸一样,就是在相关统计量分量的构造上有一点一点区别,如下: 其中: 为笫1类样本在数据集中所占的比例。 k为 所在的类。 在1类里面的猜错近邻。 下面是python的一个例子: Wrapper(包裹法) Wrapper(包裹法)的主要思想是选择特征时,会考虑接下来具体使用什么模型,不会像过滤法一样,将模型和特征选择完全分离开。 这种方法主要包括: 递归特征消除(recursivefeatureelimination)、序列特征选择(sequentialfeatureselectionalgorithms)、遗传算法(geneticalgorithms) 递归特征消除(RFE) 这种算法的做法是,使用前向或者后向遍历特征,这里判断特征重要性,不是通过某一个值,而是对这些特征直接进行模型训练,用贪心算法找到每一步重要的特征或者剔除不重要的特征。 这种做法的缺点是效果的稳定性完全取决于模型的稳定性,像线性回归这种不稳定的模型,RFE的效果不是很稳定。 下面给出RFE的python例子: 遗传算法(geneticalgorithms) 遗传算法(GeneticAlgorithm)是一种启发式的智能优化算法,其是模拟达尔文生物进化论中的自然选择和遗传学机理,实现了一种通过模拟自然进化的过程搜索最优解的方法。 因为是模拟达尔文自然进化的过程,所以其主要特点是直接对结构对象进行建模操作,不存在求导和函数连续性的限定;且采用概率化的寻优方法,不需要确定的规则就能自动获取和指导优化的搜索空间,自适应地调整搜索方向。 可以看到,遗传算法的优点很多,但是因为遗传算法是一种启发式的优化算法,所以他有点像我们初中学习儿何问题时使用的辅助线,极具艺术性,在编码、适应性函数、交义和变异时,需要些灵感性的构造,使用的好了非常简单高效的解决问题,使用不好根本解决不了问题。 遗传算法(GA)数学理论 遗传算法虽然是模拟的自然选择,但是其数学理论很简单,主要包括两部分: 模式定理和积木块假设(buildingblockhypochesis)。 模式定理: 其给出了遗传算法在优化问题和搜索问题里面的数学有效性。 但是此定理并没有在数学上给岀其收敛性。 积木块假设: 在给定的前提下,可以假设满足特定条件的遗传算法问题可以收敛到全局最优解。 注意这是个假设。 模式定理 在介绍模式定理前,我们先介绍编码和儿个概念。 1、编码: 在使用遗传算法时,我们首先要对问题中的特征进行01编码。 把特征特征映射成一个个只有01的字符串,这里的映射方式不唯一,含有灵感的艺术成分,有的人选取的01映射好,就可以很简单的解决问题,有的人选取的不恰当,就根本解决不了问题。 具体映射要看具体问题。 每个特征映射成一个只含有01的字符串后,将每个样本点的这些字符串拼接起来,就成了一个很长的字符串,这样原始的样本空间就映射成为了01编码空间里的点。 这些01组成的小字符串就是基因,一个样本的长串就是染色体。 如0001010111,这个就是一个染色体。 有了01编码后,我们就可以定义模式。 2、模式: 我们将种群中的个体即染色体字符串中的相似样板称为“模式”,模式表示染色体串中某些特征位相同的结构。 如 两个染色体, 就是一个共有的模式。 其中代表不确定是0还是通常模式用B来表示。 3、模式阶: 模式H中确定位置的个数称为模式B的模式阶,记作0但)。 如 0111的模式阶 4、定义矩: 模式中第一个确定位置和最后一个确定位置之间的距离,记作 o如 0111的模式阶 5、模式匹配: 如果一个模式 包含另一个模式 ,若 ,则称模式 与模式 匹配。 如: 模式匹配。 有了上面的定义,我们就可以引出模式定理的内容。 如下: 表示遗传算法在第t步时的种群,遗传算法中交叉概率和变异概率分别是 •H为任意一种模式,M但,乜約涝t步种群中与模式H匹配个体的个数,则具有低模式阶、短定义距以及平均适应度拓于种群平均适应度的模式,在子代中呈指数级增长,具体有以下估计公式: 其中: 为个体(染色体)的编码长度, 为笫弋步群体中个体的平均适应值。 为与模式H匹配的所有个体的平均适应值。 证明: 对于模式E,在第t步中与模式H匹配的个体数量为: 这些个体在进行交义和变异前被选作父体的数学期望为: N血cf\5um_{v\hH|P(t)}f(v)}{\gum_{v\hP(t)}f&)}二M(H,t) 低c{\&ac{Eum_{v\hHP(t)}f&)}颌 M(H,廿血c{f(H,£}{^pverlhe{f©}} N^achum_{v\hHP(t)}f(y)}{\gum_&\hP(t)}f&)}二M \&ac{\ftac{\gum_{v\hHP(t)}f(v)}01 M(H,t)血c{f(H,»}Opverlhe{f(t)}} 所以,若不进行交义和变异,有: 考虑交义,在交义时,可以证明模式H被破坏的概率为: 所以模式保留的概率为: 所以上面©\步时不考虑变异,有: 考虑变异,在交义的基础上,規式H某个位置上不被变异的概率为: 所以模式B不被变异影响的概率为: 由泰勒展开得到: 所以将交义和变异考虑在一起就有: M二H(Hjt){f(H,t)}Cpverlhe{f(t)}}Q-p_c^ac{\deita pverlhe{f(t)}}Q.-p_c\ftacMelta(H)}t1}][1-O(H)p_m] M(H,t+l)=M(H.t)\frac{f(H,t)}{\overline{f(t)}}[1-p_c\frac{\delta(H)){1-1}](1-p_m)A{O(H))\\approxM(H,t)\frac{f(H.t)){\overline{f(t)))[l-p_c\frac{\delta(H)}{l-1}][1-O(H)*p_m] 所以去掉右侧展开式中正的混合项,哟 当模式H具有低模式阶、短定义距以及平均适应度高于种群平均适应度。 此时,有: 当模式阶很低,定义距很短,平均适应度高于种群平均适应度时,会有所以 所以在子代中呈指数级增长。 所以模式定理得到证明。 可以看出,模式定理值证明了遗传算法的有效性,并没有给出算法最终会收敛到最优值。 所以这里有个积木块假设。 积木块假i5(buildingblockhypothesis): 遗传算法中,分别具有高适应值、短定义矩或低阶的模式(积木块)在遗传算子的作用下相互结合,形式同时具有高适应值、短定义矩和低阶的更优秀的模式,最终接近全局最优解。 积木块假设是基于以下两个基本前提的: 1、表现型相近的个体具有相近的基因型;2、遗传算子间相对独立,相关性低。 其中: 表现型的意思就是在没进行01编码映射前的样子,基因型就是编码后的样子。 有了上面的理论基础,我们给出遗传算法的流程如下。 遗传算法的流程图和流程如下: 截屏2020-09-24下午8.49.52.png 1、对原始问题编码 原始问题描述的一般是一些现实问题的数学模型,这些模型大部分是一般的最优化模型,我们要对这个问题的可行域里面的数据进行01编码,做一个映射,将可行域里面的特征数据映射成含有01的字符串,具体怎么映射是不固定的,这里很具有艺术和灵感的成分,映射的好坏直接决定是否能解决问题。 2、产生初始种群 一般要解决的优化问题可行域都是连续的,所以,对于连续的可行域我们不可能进行遍历,只能先进行离散化,这里离散化的方法很多,一般釆用随机的方式,也就是在连续的区间随机产生数据,这就是随机产生初始种群,当然这里也可以不随机。 需要注意的是,这里产生的初始种群是在原始问题里面产生的,需要将其映射到编码空间。 3、计算适应性函数值 对于初始种群,我们要讣算这些种群中所含染色体模式H的适应性函数值,这样用来判断,那些个体保留,那些个体被淘汰,所以这里的适应值函数是和LI标函数挂钩的,但是,两者有一个区别,适应值函数一般都是正的,訂标函数不一定为正。 还有要注意的计算适应值函数值时,是在原始问题空间里面计 算,不是在编码空间计算。 4、选择 设置一个适应值阈值,选择大于这个域字的个体作为接下来遗传的父体,淘汰小于这个域值的个体。 5、遗传运算 这里包括两部分,交义和变异,交义就是山上一步选择得到的父体,随机两两间进行k点交义,这一步类似染色体的交义遗传,得到新的个体染色体,对这个新的个体染色体,随机的对01字符串上的某一个节点进行变化,就是变异。 这样就完成了遗传运算。 6、更新种群 进行完上面遗传运算后,原始的个体淘汰了一部分,且剩下的个体变成父体进行遗传运算,变成了新的种群。 此时判读是否满足停止条件,若满足则停止,如不满足则进入第3步。 7、判断新种群是否满足停止条件 上面给出了整个遗传算法的步骤,但是遗传算法不能判断是否到达最优点附件,也就是说遗传算法不能判断是否收敛,那怎么才能停止运算呢,一般满足下面两个条件之一即可停止运算。 1、循环次数达到指定次数。 2、最大适应度值和平均适应度值变化不大、趋于稳定。 以上是对遗传算法的介绍,下面是遗传算法应用在特征选择上。 遗传算法进行特征选择 遗传算法特征选择的基本原理是用遗传算法寻找一个最优的二进制编码,码中的每一位对应一个特征,若笫i位为“1”,则表明对应特征被选取,该特征将出现在估计器中,为“0”,则表明对应特征未被选取,该特征将不出现在分类器中。 其基本步骤为: 1、编码。 釆用二进制编码方法,二进制码的每一位的值,“0”表示特征未被选中;“1”表示特征被选中。 2、初始群体的生成。 随机产生N个初始串构成初始种群,通常种群数确定
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MachineLearning 特征 工程 选择
![提示](https://static.bdocx.com/images/bang_tan.gif)