特征工程思路

特征工程

数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限。

拿到一份新的数据,需要对特征进行一定的处理使其变成我们可用的数据,具体应该怎么做呢?下面是我整理的分析思路。

 

特征使用方案

拿到数据之前,需要结合业务经验、市场预分析对数据里需要使用的特征进行预筛选,初步确定对因变量可能有影响的所有变量。

特征的可用性评估可以由以下几个方案进行考察:

①数据的获取难度:历史数据的获取是否花销在可控范围内,存储形式,需要考虑在预测阶段也可获得与可存储。

②覆盖率:已经获得的数据是否有较多的空缺值。

③准确率:对于已经获得的数据是否准确需要进行预判定。

综合判定数据的质量,需要从准确性、完整性、一致性、时效性、可信性、可解释性定义等角度出发进行判别。

特征处理

特征清洗:清洗异常样本(异常值处理);若数据不均衡,考虑采样:允许使用数据小得多的随机样本表示大型的数据集。

常见的数据清洗思路 填补空缺值、光滑噪声、识别离群点、纠正数据的不一致性

特征预处理:

①单项特征

常见特征有如下类型:

标称属性:与名称相关,是一些符号或者事物的名称,代表某种类别、编码或者状态,是分类的;在计算机科学中可视为枚举类型。

标称属性的数学运算没有意义,一般不定量使用;可以观察”众数“,是一种中心趋势度量。

二元属性:一种标称属性,只有两个类别或者状态:0或者1,0通常表示属性不出现,1表示出现。二元属性称为“布尔属性”,对应ture与false值。

对称的二元属性:如果两种状态具有等价值并且携带相同的权重,关键结果用0或者1编码 无偏好(如男或者女)

非对称的二元属性:状态结果不是同样重要,用1用于最重要的结果。用0编码另一个结果。

序数属性:可能的值之间具有意义的序或者秩,但是相继值之间的差未知。如:饮料店的值小、中 、大,具有有意义的先后次序;grade:A、B、C、D等,职位可以按照顺序枚举,对于教师按照列兵、军事、下士等。序数属性是有用的,一般按照顺序排列:如0-很不满意,1-不太满意,2-中性,3-满意,4-和满意。

序数属性可以通过数质量划分优先有序类别,将数值属性离散化得到。

中心趋势可以使用众数或者中位数进行表示,不能用于定义均值。

数值属性:提供对象的定量度量,属性可以以区间的标度或者比率标度的。

区间标度属性:用相等的单位尺度度量,区间属性的值有序,可以为0、或者负值,允许我们比较与定量评估值之间的差。如温度(区间标度)除了中心趋势度度量中位数与众数之外,可以计算他们的均值。

比率标度属性:比率标度:是具有固有零点的数值属性,如果度量是比率标度,可以说一个值是另一个的倍数或者比率。值是有序的,可以计算值之间的差、均值、中位数、众数。如员工工作年限、字数(有计数属性的特征)、重量、货币量等。

离散属性与连续属性:使用许多方法组织属性类型,类型不是互斥的。开发分类算法通常把属性分成离散或者连续,离散属性具有有限或者无限可数个值。如果属性不是离散的,则是连续的。经典意义下,连续值是实数,数值类型是整数或者实数。

 

对于离散型属性,根据特征特点对应进行填补空缺值、数据编码(独热编码 或者序数编码,需根据特征类型进行决策)。

对于连续性属性,根据特征需求可进行数据规约、填补空缺值、光滑噪声、离群点识别等操作进行预处理。

常见特征缺失值处理思路

1、忽略元组:缺失值超过一半,一般场景下直接整个不用。

2、人工填写缺失值:费时,缺失很多值的时候可能不好使。

3、使用一个全局常量填充:简单,但并非十分可靠。

4、使用属性的中心度量(均值或者中位数)填充缺失值:对于中心非对称的数据,可以使用中位数进行填充。

5、使用与给定元组同一类的所有样本的属性均值或者中位数:如 同一类的使用同一数据收入进行替换。

6、使用最可能的值填充缺失值:可以使用回归、贝叶斯方法基于推理工具或者决策树归纳决定。通过使用数据集中其他顾客的属性,可以构造一颗决策树,来预测缺失值。

有缺失值不一定代表有错误,在有可能一开始就存在留白的情况。

 

多个特征

特征数量比较多时,需要筛选最有用的特征进行降维或者特征挑选,常见处理思路如下。

特征降维:PCA

通过搜索k个最能代表数据的n维正交向量,k<=n,原始数投影到一个小得多的空间上,导致维归约。与属性子集选择,通过保留原属性集的一个子集来减少属性集的大小不同,PCA通过创建一个替换的,比较小的变量集来组合属性的基本要素。

PCA常常能揭示先前未察觉的联系,允许揭示不寻常的结果。

PCA处理流程如下:

(1)对输入数据规范化,每一个数据都落入相同的区间。该步骤助于确保具有较大定义域的属性不会支配具有较小定义域的属性。

(2)PCA计算k个标准正交向量,作为规范化输入数据的基。这些是单位向量,每一个都垂直于其它向量。这些向量称为主成分,输入数据是主成分的线性组合。

(3)对于主成分按照重要性强度降序排列。本质上充当新数据的新坐标系,提供关于方差的重要信息,对坐标轴进行排序,使得第一个坐标轴显示数据的最大方差,第二个显示数据的第二大方差。该信息有助于识别数据中的组群或者模式。

(4)由于主成分分析是有顺序排列,可以去掉较弱的成分来规约数据。

可以用于有序或者无序的属性,并且可以处理系数与倾斜的数据。多于二维的多维数据可以通过将问题规约为二维问题来处理,也可以做多元回归和聚类分析的输入,能更好的处理稀疏数据。

 

特征挑选

特征维度太多时,重点考虑自变量与因变量的关联。

常见的处理思路有如下几个点:

相关性分析:皮尔逊系数、卡方分析,最直接判定哪些特征与目标因变量有关系

信息增益

使用学习器进行筛选:用学习器自动学习特征,如使用Xgboost、随机森林 判断特征重要属性进行特征筛选。

xgboost和随机森林是两种常用的机器习算法,它们都可以用于特征选择和特征重要性评估。它们在特征重要性评估方面有一些区别。

对于xgboost算法,特征重要性是通过计算特征在所有决策树中被使用的次数或被用于分裂的平均增益来评估的。具体来说,xgboost会统计每个特征在所有决策树中被选择为分裂节点的次数,然后将这些次数进行归一化处理,得到特征重要性的评分。这个评分可以用来判断特征的重要性,评分越高表示特征越重要。(Gain)

而对于随机森林算法,特征重要性是通过计算特征在随机森林中被用于分裂时所带来的不纯度减少量来评估的。具体来说,随机森林会统计每个特征在所有决策树中被选择为分裂节点时所带来的不纯度减少量,并将这些减少量进行平均或加权平均,得到特征重要性的评分。同样,评分越高表示特征越重要。

在使用这两个算法时,可以根据特征重要性的评分来判定特征的重要性。一种常见的方法是选择评分较高的特征作为重要特征,可以根据评分的阈值进行筛选。另外,还可以根据特征重要性的排序来选择前几个或者一定比例的特征作为重要特征。

 

标准化:适用于需要消除不同特征之间量纲差异的情况,使得各个特征具有相同的尺度。常用于基于距离的算法(如KNN、聚类)和梯度下降优化算法(如线性回归、逻辑回归)。

归一化:适用于需要将数据映射到固定范围内的情况,保留原始数据的分布信息。常用于神经网络等对输入数据敏感的模型。

 

根据特征选择的形式又可以将特征选择方法分为3种:

Filter:过滤法,按照发散性或者相关性对各个特征进行评分,设定阈值或者待选择阈值的个数,选择特征。 Wrapper:包装法,根据目标函数(通常是预测效果评分),每次选择若干特征,或者排除若干特征。 Embedded:嵌入法,先使用某些机器学习的算法和模型进行训练,得到各个特征的权值系数,根据系数从大到小选择特征。类似于Filter方法,但是是通过训练来确定特征的优劣。

 

 

总结:现实特征处理流程

①确定特征使用方案:判断数据集里可用的部分,结合对数据质量的判断,初步筛选可用特征。

②对特征进行单项处理:根据具体的特征类型确定特征处理的方案,进行特征清洗与特征转换。

③特征筛选:结合应用场景的可行性,选择降维或筛选特征,确定最终使用的特征组。

posted @   -DP-  阅读(32)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示