1.特征选择
卷积解决的问题
- 卷积负责提取图像中的局部特征。
特征
- 实际问题中,我们得到的样本数据是多维的;
- 也就是一个样本是用多个特征来表征的;
- 比如房价预测问题中:
- 影响房价y的因素有房子面积x1,卧室数量x2,等;
- 我们得到的样本数据为(x1,x2);
- 这里的x1,x2被称为特征。
特征选择
为什么要做特征选择?
- 现实生活中的对象具有多个属性(特征);
- 这些特征大致可分为三个主要类型:
- 相关特征:对于学习任务有帮助,可以提升算法的效果;
- 无关特征:对算法没有任何帮助,不会给算法带来任何提升;
- 冗余特征:对算法不会带来新的信息,或者这些信息可由其他的特征推断;
- 对一个特定的学习算法,哪些特征有效是未知的;
- 因此需要选择有益于算法的特征。
进行特征选择的主要目的
- 降维
- 降低学习任务的难度
- 提升模型的效率
什么是特征选择
- 定义:从N个特征中选择M个子特征(M<=N);
- 并且在M个子特征中,准则函数达到最优解;
- 特征选择的原则:
- 选择尽可能少的子特征;
- 模型的效果不会显著下降;
- 结果的类别分布尽可能接近真实类别分布。
怎么做特征选择
- 特征选择包括四个过程:
- 生成过程:生成候选的特征子集;
- 评价函数:评价特征子集的好坏;
- 停止条件:决定什么时候停止;
- 验证过程:特征子集是否有效;
生成过程
- 是一个搜索过程;
- 主要有三个策略:
- 完全搜索:根据评价函数做完全搜索,完全搜索有两种:穷举和非穷举;
- 启发式搜索:根据启发规则决定每次迭代特征是否应该被选择,这种方法简单快速;
- 随机搜索:每次迭代设置一些参数,参数的选择会影响特征的选择。
停止条件
- 决定迭代过程何时停止;
- 生成过程和评价函数对停止条件的选择会产生影响;
- 停止条件有四种选择:
- 达到预定义的最大迭代次数;
- 达到预定义的最大特征数;
- 增加(删除)任何特征不会产生更好的特征子集;
- 根据评价函数,已产生最优特征子集;
评价函数
- 用于评价选出的特征子集的好坏;
- 特征子集的好坏相对于特定的评价函数;
- 评价函数主要用于度量特征可以区分不同类别的能力;
- 评价方法分为三类:
- 过滤式(filter):先进行特征选择,再训练学习器,特征选择的过程与学习器无关。对特征打分排序;
- 包裹式(wrapper):直接把要使用的分类器作为特征选择的评价函数,选择该分类器评价的最优特征子集,子集的选择是一个搜索寻优问题,生成不同的组合,对组合评价,这样子集的选择是一个优化问题。
- 过滤式和包裹式组合算法:先使用Filter进行特征选择,去掉不相关特征,降低维度,然后利用wrapper进行特征选择;
- 嵌入式(embedding):把特征选择的过程和分类器的学习过程融合在一起,在学习的过程中进行特征选择。
- 五种常见的评价函数:
- 距离度量:如果x在不同类别中产生比Y大的差异,那么x好于Y;
- 信息度量:计算一个特征的信息增益(度量先验和后验不确定性和期望之间的差异);
- 依赖度量:度量从一个变量值预测另一个变量值的能力,最常见的是相关系数,计算两个特征之间的依赖性,其值代表两个特征之间的冗余度;
- 一致性度量:对于两个样本,如果类别不同,但特征值相同,他们不一致,否则一致;
- 误分类率度量:主要用于wrapper式的分类方法中,用分类器的准确率来作为指标,该方法准确率较高,但计算开销大。
特征选择算法
完全搜索
- 广度优先搜索(Breath First Search):采用完全搜索策略和距离度量评价函数;
- 完全搜索和距离度量(B&B):从所有特征集开始,每次迭代去掉一个特征,每次给评价函数值一个限制条件。类似于在穷举搜索中进行剪枝。
- 定向搜索(Beam Search):采用完全搜索策略和误分类率作为评价函数,选择得分高的特征作为特征子集,加入到有限长度的队列中,每次从队列中取得得分最高的子集;
- 最优优先搜索(Best First Search):和定向搜索类似,不同点在于不限制队列的长度。
启发式搜索
- 序列前向选择(SFS:Sequential Forward Selection):使用误分类率作为评价函数,从空集开始搜索,每次加入一个特征到子集中,使得评价函数最优,如果候选则子集不如上一轮的子集,停止迭代,上一轮的子集作为最优的特征选择;
- 广义序列前向选择(GSFS:Generalized Sequential Forward Selection):该方法是SFS的加速算法,他可以一次性向特征集合加入r个特征,在候选特征子集中选择一个规模为r的特征子集,使评价函数达到最优值。
- 序列后向选择(SBS:Sequential Backward Selection):把误分类率作为评价函数。从特征的全集开始搜索,每次从子集中去掉一个特征,使得评价函数达到最优值;
- 广义序列后向选择(GSBS:Generalized Sequential Backward Selection):该方法是SBS的加速算法。可以一次性的从特征子集中去除一定数量的特征。是实际使用中的快速特征选择算法。性能相对较好,但有可能找不到最优特征子集;
- 双向搜索(BDS:Bi-directional Search):分别使用SFS和SBS同时进行搜索,当两者达到一个相同的特征子集时停止搜索,为了达到一个相同的特征子集,需要满足两个条件:
- 被SFS选中的特征不能被SBS去除;
- 被SBS去除的特征不能被SFS选择;
增L去r选择算法(LRS:Plus L Minus R Selection):
- 采用误分类率作为评价函数;
- 允许特征选择的过程中进行回溯;
- 该算法有两种形式:
- L>R,是一种自下而上的方法,从空集开始搜索,每次使用SFS增加L个特征,然后用SBS从中去掉R个特征;
- L<R,是一种自上而下的算法,从特征的全集开始搜索,每次使用SBS去除其中的R个特征,使用SFS增加L个特征;
序列浮动选择(Sequential Floating Selection):
- 和增L去R算法类似;
- 只是该算法的L和R不是固定的,每次会发生变化;
- 该算法有两种形式:
- 序列浮动前向选择;
- 序列浮动后向选择;
序列浮动前向选择(SFFS:Sequential Floating Forward Selection):
- 从空集开始搜索;
- 每次选择一个特征子集,使得评价函数达到最优;
- 再选择一个特征子集的子集并去掉,使评价函数达到最优值;
序列浮动后向选择(SFBS:Sequential Floating Backward Selection):
- 从特征全集开始搜索;
- 每次先取出一个子集;
- 再加入一个特征子集;
决策树算法(DTM:Decision Tree Method):
- 采用信息增益最为评价函数;
- 在训练集中使用C4.5算法;
- 待决策树充分增长,使用评价函数对决策树进行剪枝;
- 出现在任一叶子结点路径上的所有特征子集就是特征选择的结果;
随机搜索
LVF(Las Vegas Filter)
- 使用一致性度量作为评价函数;
- 使用拉丝维加斯算法随机搜索子集空间;
- 对每一个候选子集,计算不一致性;
- 大于阈值,去除该子集
- 小于阈值,判断候选子集中特征数量与之前最优子集特征数量的大小,若小,该子集为最优子集;
- 可在有噪声的数据集上达最优解;
- 实现简单,保证产生较好的特征子集;
- 在特定问题上,由于未使用先验知识,较启发式搜索花费更多搜索时间。
遗传算法
- 使用误分类率作为评价函数;
- 随机产生一批特征子集;
- 利用评价函数对子集评分;
- 通过选择、交叉、突变操作产生下一代特征子集;
- 得分越高的子集被选中产生下一代子集的概率越高;
- 经N代迭代后,种群会形成评价函数最高的特征子集;
- 较依赖随机性,很难复现结果;
- 算法实现过程如下:
- 随机产生初始种群;
- 非支配排序;
- 通过三个算子(选择,交叉、变异)进行操作得到第一代种群;
- 将父代种群和子代种群合并大小为N的初始化种群;
- 对含N个个体的种群进行快速非支配排序;
- 对每个非支配层中个体进行拥挤度计算;
- 根据非支配关系及个体的拥挤度选择合适的个体组成新的父代种群;
- 通过三个算子产生新的子代种群;
- 重复4到8的过程,直到满足程序结束的条件(重复的次数为进化代数)。
2.特征提取
什么是特征
- 常见特征:边缘,角,区域
特征提取
- 通过属性间的关系;
- 组合不同的属性得到新的属性;
- 改变了原来的特征空间。
特征选择
- 从原始特征集中选择子集;
- 是一种包含关系;
- 未改变原始特征空间;
图像特征提取的两种方法:
- 传统特征提取方法:基于图像本省的特征进行提取;
- 深度学习方法:基于样本自动训练出图像的特征分类器;
特征选择和特征提取都属于降维操作
特征提取的主要方法
- 主成分分析(PCA)
特征提取的目的
- 排除信息量小的特征;
- 减少计算量
3.PCA
PCA算法如何实现?
- 将数据从原始的空间中转换到新的特征空间中;
- 举例:
- 原始数据是三维的(x,y,z);
- 通过某种方法,使用新的坐标系(a,b,c)来表示原始三维数据;
- 在(a,b,c)空间中,所有的原始数据在轴c上的分量都接近于0;
- 可用(a,b)二维空间来表述原始三维数据;
- 这样就进行了降维的操作;
求新基(a,b,c)的步骤:
- 对原始数据零均值化(中心化);
- 求协方差矩阵;
- 对协方差矩阵求特征向量和特征值;
- 这些特征向量组成了新的特征空间;
零均值化(中心化):
- 中心化:变量减去他的均值,使其均值为0;
- 本质是一个平移过程,平移后所有数据的中心是(0,0);
- 中心化之后,计算得到的方向才能更好的“概括”原来的数据。
PCA降维的几何意义:
- 一组数据;
- 在某一轴上的方差越大,说明坐标点越分散;
- 该属性能很好的反应源数据;
- 方差公式:
- PCA算法的优化目标:
- 降维后同一维度的方差最大;
- 不同维度之间的相关性为0。
PCA--协方差
- 协方差是一种度量两个随机变量关系的统计量;
- 同一元素的协方差为该元素的方差;
- 不同元素之间的协方差表示他们的相关性。
- 协方差公式:
- 协方差性质:
- a,b为常数;
协方差和方差:
- 协方差公式:;
- 方差公式:;
- 由定义可以看出:
协方差的意义:
- 协方差衡量了两个属性之间的关系:
- 当cov(X,Y)>0时,表示X和Y正相关;
- 当cov(X,Y)<0时,代表X和Y负相关;
- 当cov(X,Y)=0时,表示X和Y不相关;
协方差矩阵:
- 定义:,
- 例如,三维(x,y,z)的协方差矩阵:
协方差矩阵的特点:
- 协方差矩阵计算的是不同维度之间的协方差,不是不同样本之间的协方差;
- 样本矩阵的每一行是一个样本。每一列为一个维度。要按列计算均值;
- 协方差矩阵的对角线就是各个维度上的方差;
- 如果样本室中心化了的,那么协方差矩阵为中心化矩阵的协方差矩阵,其中m为样本个数:
协方差矩阵求特征值、特征矩阵
- A 为 n 阶矩阵,若数 和 n 维非零列向量 x 满足 ,则称数 为矩阵 A 的特征值;
- x 称为矩阵 A 的对应于特征值 的特征向量;
- 式 也可写成 E 为单位矩阵, 叫做矩阵 A 的特征多项式;
- 当特征多项式等于0的时候,该式称为矩阵 A 的特征方程;
- 特征方程是一个齐次线性方程组;
- 求解特征值的过程其实就是求特征方程的解;
- 协方差矩阵 A 的特征值 的计算方法为:
- ;
数字图像矩阵求特征值
- 数字图像矩阵做特征值分解,其实是在提取图像中的特征;
- 提取出来的特征是一个个的向量,即特征向量;
- 这些特征在图像中的重要性,通过特征值来表示;
- 举例来说:
- 一个100x100的图像矩阵A分解之后;
- 得到一个100x100的特征向量组成的矩阵Q;
- 以及一个100x100的只有对角线上的元素不为零的矩阵E;
- 这个矩阵E对角线上的元素就是特征值;
- 这些特征值是按从大到小的顺序排列的;
- 特征向量反应的是矩阵 A 本身固有的一些特征;
- 一个矩阵就是一个线性变换;
- 将矩阵作用于一个向量,绝大部分向量会被这个矩阵 A 变换得 面目全非;
- 但是,偏偏存在一些向量,被矩阵A变换之后还能保持原来的样子;
- 这些向量就可以作为矩阵的核心代表了;
- 一个变换(矩阵)可以由其特征值和特征向量完全表述;
- 因为从数学上看,该矩阵的所有特征向量组成了向量空间的一个基底;
- 矩阵的本质就是把一个基底下的东西变换到另一个基底表示的空间中。
对特征值进行排序
- 将特征值按照从大到小的顺序排序,选择其中最大的k个;
- 将此k个特征值对应的特征向量作为列向量组成特征向量矩阵;
- 计算,即将数据集投影到选取的特征向量上;
- 得到我们需要的已降维的数据集;
评价模型的好坏,K值的确定
- 通过特征值的计算可以得到主成分所占百分比;
- 该百分比用于衡量模型的好坏;
- 对前k个特征值保留下的信息量计算方法如下:
sklearn库
PCA算法的优点:
- 完全无参数限制;
- 计算过程中完全不需要人为设置参数;
- 不需要根据任何经验模型对计算进行干预;
- 结果只与数据有关,与用户独立;
2.PCA技术可以对数据降维;
- 对数据降维的同时,对求出的主元向量的重要性进行排序;
- 根据需要取前面重要的部分;
- 将后面的维数省略;
- 达到降维,简化模型或是对数据压缩的效果;
- 同时最大程度保持了原有数据的信息;
3.计算方法简单,易于在计算机上实现
PCA算法的缺点:
- 如果用户有一定的先验知识;
- 掌握了数据的一些特征;
- 却无法通过参数化等方法对处理过程进行干预;
- 可能得不到预期的效果,效率也不高。