机器学习中特征的处理及选择

基础概念

特征工程是通过对原始数据的处理和加工,将原始数据属性通过处理转换为数据特征的过程,属性是数据本身具有的维度,特征是数据中所呈现出来的某一种重要的特性,通常是通过属性的计算,组合或转换得到的。比如主成分分析就是将大量的数据属性转换为少数几个特征的过程。某种程度而言,好的数据以及特征往往是一个性能优秀模型的基础。

既然叫特征工程,自然涵盖了很多内容,而其中涉及到的比较重要的部分是特征的处理及选择。

特征处理包含:

  • 数据清洗
  • 数据规范化
  • 特征构造与衍生

特征选择包含:

  • 特征过滤
  • wrapper method
  • embedded method

数据清洗

数据清洗是指发现并纠正数据文件中可识别的错误以及通过处理得到建模过程需要数据的过程。

数据清洗包含:

  • 缺失值处理
  • 异常值检测与处理
  • 调配样本比例和权重

缺失值处理

缺失值是指粗糙数据中由于缺少信息而造成的数据的聚类、分组、删失或截断。它指的是现有数据集中某个或某些属性的值是不完全的。

缺失值的处理目前主要有两种方法:删除缺失值和填充缺失值

1.删除缺失值

如果一个样本或变量中所包含的缺失值超过一定的比例,比如超过样本或变量的一半,此时这个样本或变量所含有的信息是有限的,如果我们强行对数据进行填充处理,可能会加入过大的人工信息,导致建模效果打折扣,这种情况下,我们一般选择从数据中剔除整个样本或变量,即删除缺失值。

2.缺失值填充

  • 随机填充法

从字面上理解就是找一个随机数,对缺失值进行填充,这种方法没有考虑任何的数据特性,填充后可能还是会出现异常值等情况,一般情况下不建议使用。

  • 均值填充法

寻找与缺失值变量相关性最大的那个变量把数据分成几个组,然后分别计算每个组的均值,然后把均值填入缺失的位置作为它的值,如果找不到相关性较好的变量,也可以统计变量已有数据的均值,然后把它填入缺失位置。这种方法会在一定程度上改变数据的分布。

  • 最相似填充法

在数据集中找到一个与它最相似的样本,然后用这个样本的值对缺失值进行填充。

与均值填充法有点类似,寻找与缺失值变量(比如x)相关性最大的那个变量(比如y),然后按照变量y的值进行排序,然后得到相应的x的排序,最后用缺失值所在位置的前一个值来代替缺失值。

  • 回归填充法

把缺失值变量作为一个目标变量y,把缺失值变量已有部分数据作为训练集,寻找与其高度相关的变量x建立回归方程,然后把缺失值变量y所在位置对应的x作为预测集,对缺失进行预测,用预测结果来代替缺失值。

  • k近邻填充法

利用knn算法,选择缺失值的最近k个近邻点,然后根据缺失值所在的点离这几个点距离的远近进行加权平均来估计缺失值。

异常值检测与处理

异常值(outlier)是指一组测定值中与平均值的偏差超过两倍标准差的测定值,与平均值的偏差超过三倍标准差的测定值,称为高度异常的异常值。异常值的产生一般由系统误差、人为误差或数据本身的变异引起的。

  • 单变量异常值检测(格拉布斯法)

首先,将变量按照其值从小到大进行顺序排列x1,x2.....xn

其次,计算平均值x拔和标准差S,

同时计算偏离值,即平均值与最大值之差和平均值与最小值之差,然后确定一个可疑值,一般是偏离平均值较大的那个。

计算统计量gi(残差与标准差的比值),i为可疑值的序列号。

再者,将gi与格拉布斯表给出的临界值GP(n)比较,如果计算的Gi值大于表中的临界值GP(n),则能判断该测量数据是异常值,可以剔除。这里临界值GP(n)与两个参数有关:检出水平α和测量次数n 。

检出水平α:如果要求严格,检出水平α可以定得小一些,例如定α=0.01,那么置信概率P=1-α=0.99;如果要求不严格,α可以定得大一些,例如定α=0.10,即P=0.90;通常定α=0.05,P=0.95。

  • 多变量异常值检测(基于距离计算)

基于距离的多变量异常值检测类似与k近邻算法的思路,一般的思路是计算各样本点到中心点的距离,如果距离太大,则判断为异常值,这里距离的度量一般使用马氏距离(Mahalanobis Distance)。因为马氏距离不受量纲的影响,而且在多元条件下,马氏距离还考虑了变量之间的相关性,这使得它优于欧氏距离。

  • 异常值处理

单变量的情况下异常值可以考虑类似缺失值的删除法、均值填充法或回归填充法,而多变量的情况下,可以尝试用均值向量填充或者删除。

总的来说,缺失值和异常值的处理要根据实际的情况确定合适的方法,因为某些情况下异常值刚好能够反应一些现实问题。

调配样本比例和权重

当数据集中出现样本不均衡情况时,需要调配样本的比例以及权重,以便能够训练出性能更优的模型,具体方法参考上一篇文章:机器学习中的类别不均衡问题

http://www.cnblogs.com/wkslearner/p/8870673.html

数据规范化

在机器学习中,由于不同模型的需要,我们经常要多数据做不同的规范化处理,以便能够得到性能更优的模型。

在数据处理中,经常会接触到的数据规范化操作有:

  • 数据无量纲化
  • 连续变量离散化
  • 离散变量量化处理
  • 数据转换

数据无量纲化

无量纲化使不同规格的数据转换到同一规格,在某些比较和评价的指标处理中经常会用到,去除数据的单位限制,将其转化为无量纲的纯数值,便于不同单位或量级的指标能够进行比较和加权。

数据无量纲化常用方法有:

  • 标准化方法
  • 极值化方法
  • 均值化方法
  • 标准差化方法

1.标准化方法

标准化方法是将变量的每个值与其平均值之差除以该变量的标准差,无量纲化后变量的平均值为0,标准差为1。使用该方法无量纲化后不同变量间的均值和标准差都相同,即同时消除了变量间变异程度上的差异。

标准化公式为:

2.极值化方法

极值化方法通常是通过变量取值的最大值和最小值将原始数据转换为特定范围内的数据,从而消除量纲和数量级的影响。这种方法十分依赖两个极端值。

通常情况下极值化方法有3种方式:

第一种方法,是将变量的值除以该变量的全距,标准化后每个变量的取值范围在[-1,1]。

公式为:

第二种方法,是将变量值与最小值之差除以该变量的全距,标准化后取值范围在[0,1]。

公式为:

第三种方法,是将变量值除以该变量的最大值,标准化后变量的最大取值为1。

公式为:

3.均值化方法

均值化方法是将变量值直接除以该变量的平均值,跟标准化方法不同的是,均值化方法能够保留变量间取值差异程度的信息。

均值化方法公式:

4.标准差化方法

标准差化方法是标准化方法的一种变形,标准差化方法是直接将变量值除以标准差,而不是减去均值后再除以标准差。标准差化方法无量纲化后变量的均值为原始变量均值与标准差的比值,而不是0。

公式为:

连续变量离散化

在使用某些算法时,我们需要把连续变量转换为离散变量,在一些情况下离散变量能够简化模型计算同时能够提升模型的稳定性,比如逻辑回归经常使用离散后的变量进行训练,能够体现模型的训练速度以及提升模型的可解释性。

连续变量离散化大致有两类方法:

  • 卡方检验方法
  • 信息增益方法

1.卡方检验方法

通常情况下,将变量按照值大小进行排列,将每个值作为一个组,然后对每一对相邻的组计算卡方值,对其中最小的一对组合进行合并,接下来不断重复以上操作,直到满足我们设定的某一个条件,比如最小分组数5,即将连续变量分为5组。

卡方统计量是指数据的分布与所选择的预期或假设分布之间的差异的度量。它是由各项实际观测次数(fo )与理论分布次数(fe )之差的平方除以理论次数,然后再求和而得出的,其计算公式为:

卡方值包含两个信息:

  • 实际值与理论值偏差的绝对大小。
  • 差异程度与理论值的相对大小。

2.信息增益方法

信息增益方法是使用信息计算确定分割点的自上而下的分裂技术。

首先是把每个值看成分割点,将数据分成两个部分,在多种可能的分法中选择产生最小信息熵的分法。然后在分成的两个区间中,寻找最大熵区间,继续进行按前面的方法进行分割,直到满足条件为止,比如满足指定个数时结束过程。

数据的信息属性是与任务相关的,对于分类任务, 标签值y包含的信息量为:

其中, p(y)为y出现的概率. p(y)越小, y包含的信息量越大. 这是符合直觉的.

熵定义为信息的期望值.

一个可以分为m类的数据集S, 它的信息熵为随机得到的一个label包含的信息量的期望值:

数据集的信息熵代表这个数据集的混乱程度. 熵越大, 越混乱.

若按照某种特定的方式, 例如按照某一属性的值对S进行划分, 得到n个子集。新的子集们都有自己的信息熵, 它们的熵的和与原S的熵的差值就是这个划分操作带来的信息熵增益.

未完待续.....

原文地址:https://www.cnblogs.com/wkslearner/p/8933685.html

时间: 2024-11-07 20:16:07

机器学习中特征的处理及选择的相关文章

机器学习中正则化项L1和L2的直观理解

正则化(Regularization) 机器学习中几乎都可以看到损失函数后面会添加一个额外项,常用的额外项一般有两种,一般英文称作?1-norm和?2-norm,中文称作L1正则化和L2正则化,或者L1范数和L2范数. L1正则化和L2正则化可以看做是损失函数的惩罚项.对于线性回归模型,使用L1正则化的模型建叫做Lasso回归,使用L2正则化的模型叫做Ridge回归(岭回归).下图是Python中Lasso回归的损失函数,式中加号后面一项α||w||1即为L1正则化项. 下图是Python中Ri

机器学习中的数据清洗与特征处理综述

背景 随着美团交易规模的逐步增大,积累下来的业务数据和交易数据越来越多,这些数据是美团做为一个团购平台最宝贵的财富.通过对这些数据的分析和挖掘,不仅能给美团业务发展方向提供决策支持,也为业务的迭代指明了方向.目前在美团的团购系统中大量地应用到了机器学习和数据挖掘技术,例如个性化推荐.筛选排序.搜索排序.用户建模等等,为公司创造了巨大的价值.本文主要介绍在美团的推荐与个性化团队实践中的数据清洗与特征挖掘方法.主要内容已经在内部公开课"机器学习InAction系列"讲过,本博客的内容主要是

机器学习中如何选择分类器

在机器学习中,分类器作用是在标记好类别的训练数据基础上判断一个新的观察样本所属的类别.分类器依据学习的方式可以分为非监督学习和监督学习.非监督学习顾名思义指的是给予分类器学习的样本但没有相对应类别标签,主要是寻找未标记数据中的隐藏结构.,监督学习通过标记的训练数据推断出分类函数,分类函数可以用来将新样本映射到对应的标签.在监督学习方式中,每个训练样本包括训练样本的特征和相对应的标签.监督学习的流程包括确定训练样本的类型.收集训练样本集.确定学习函数的输入特征表示.确定学习函数的结构和对应的学习算

机器学习中的范数规则化 L0、L1与L2范数 核范数与规则项参数选择

http://blog.csdn.net/zouxy09/article/details/24971995 机器学习中的范数规则化之(一)L0.L1与L2范数 [email protected] http://blog.csdn.net/zouxy09 今天我们聊聊机器学习中出现的非常频繁的问题:过拟合与规则化.我们先简单的来理解下常用的L0.L1.L2和核范数规则化.最后聊下规则化项参数的选择问题.这里因为篇幅比较庞大,为了不吓到大家,我将这个五个部分分成两篇博文.知识有限,以下都是我一些浅显

paper 27:机器学习中的范数规则化之(二)核范数与规则项参数选择

机器学习中的范数规则化之(二)核范数与规则项参数选择 [email protected] http://blog.csdn.net/zouxy09 上一篇博文,我们聊到了L0,L1和L2范数,这篇我们絮叨絮叨下核范数和规则项参数选择.知识有限,以下都是我一些浅显的看法,如果理解存在错误,希望大家不吝指正.谢谢. 三.核范数 核范数||W||*是指矩阵奇异值的和,英文称呼叫Nuclear Norm.这个相对于上面火热的L1和L2来说,可能大家就会陌生点.那它是干嘛用的呢?霸气登场:约束Low-Ra

机器学习中的范数规则化之(二)核范数与规则项参数选择 非常好,必看

机器学习中的范数规则化之(二)核范数与规则项参数选择 [email protected] http://blog.csdn.net/zouxy09 上一篇博文,我们聊到了L0,L1和L2范数,这篇我们絮叨絮叨下核范数和规则项参数选择.知识有限,以下都是我一些浅显的看法,如果理解存在错误,希望大家不吝指正.谢谢. 三.核范数 核范数||W||*是指矩阵奇异值的和,英文称呼叫Nuclear Norm.这个相对于上面火热的L1和L2来说,可能大家就会陌生点.那它是干嘛用的呢?霸气登场:约束Low-Ra

机器学习中的范数规则化之(一)L0、L1与L2范数

机器学习中的范数规则化之(一)L0.L1与L2范数 [email protected] http://blog.csdn.net/zouxy09 转自:http://blog.csdn.net/zouxy09/article/details/24971995 今天我们聊聊机器学习中出现的非常频繁的问题:过拟合与规则化.我们先简单的来理解下常用的L0.L1.L2和核范数规则化.最后聊下规则化项参数的选择问题.这里因为篇幅比较庞大,为了不吓到大家,我将这个五个部分分成两篇博文.知识有限,以下都是我一

机器学习中的矩阵方法04:SVD 分解

机器学习中的矩阵方法04:SVD 分解 前面我们讲了 QR 分解有一些优良的特性,但是 QR 分解仅仅是对矩阵的行进行操作(左乘一个酉矩阵),可以得到列空间.这一小节的 SVD 分解则是将行与列同等看待,既左乘酉矩阵,又右乘酉矩阵,可以得出更有意思的信息.奇异值分解( SVD, Singular Value Decomposition ) 在计算矩阵的伪逆( pseudoinverse ),最小二乘法最优解,矩阵近似,确定矩阵的列向量空间,秩以及线性系统的解集空间都有应用. 1. SVD 的形式

机器学习中的范数规则化

机器学习中的范数规则化之(一)L0.L1与L2范数 [email protected] http://blog.csdn.net/zouxy09 今天我们聊聊机器学习中出现的非常频繁的问题:过拟合与规则化.我们先简单的来理解下常用的L0.L1.L2和核范数规则化.最后聊下规则化项参数的选择问题.这里因为篇幅比较庞大,为了不吓到大家,我将这个五个部分分成两篇博文.知识有限,以下都是我一些浅显的看法,如果理解存在错误,希望大家不吝指正.谢谢. 监督机器学习问题无非就是"minimizeyour er