特征工程——二手车交易预测

一、 特征工程的重要性和处理

1. 特征工程一般包括特征使用、特征获取、特征处理、特征选择和特征监控。

业界广泛流传着这样的一句话:“数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。”具体而言:特征越好,灵活性越强。构建的模型越简单,模型的性能就越出色。好特征的灵活性在于允许你选择不复杂的模型,同时运行速度也更快,更容易理解和维护。好的特征,不需要花太多的时间去寻找最有效的参数,这大大降低了模型的复杂度。

特征工程的处理流程为首先去掉无用特征,接着去掉冗余的特征,如共线特征,并利用存在的特征、转换特征、内容中的特征一起其他数据源生成新特征,然后对特征进行转换(数值化、类别转换、归一化等),最后对特征进行处理(异常值、最大值、最小值、缺失值等),以符合模型的使用。

二、数据预处理和特征工程

2.1数据预处理

1.数据采集

例如预测二手车的价格,那我们需要搜集什么样的信息呢?
4S店:店铺等级、服务质量、业界口碑…
车:价格、购买人数、颜色、质量、发动机、速度…
用户:消费能力、偏好…

2.数据清洗

数据清洗就是要去除“脏”的数据。那么如何判断“脏”的数据呢?
简单属性判定:如身高三米多的人,一个人每个月购买10万元的美发卡
组合或统计属性判定:如号称在美国却一直都是在国内的新闻阅读用户
补齐可对应的缺省值:将不可信的样本丢掉,不用缺省值极多的字段。

3.数据采样

采样的方法有随机采样和分层抽样,但由于随机采样存在隐患,可能某次随机采样得到的数据恨不均匀,因此更多地是根据特征进行分层抽样。

2.2特征处理

这里仅介绍标准化、区间缩放法和归一化。

1.标准化

标准化是依照特征矩阵的列处理数据,即通过求标准分数的方法,将特征转换为标准正态分布,并和整体样本分布相关。每个样本点都能对标准化产生影响。
标准化需要计算特征的均值和方差,公式如下:
x ′ = x − X ˉ S x'=\frac{x-\bar{X}}{S} x=SxXˉ
例如使用preprocessing库的StandardScaler类对iris数据及进行标准化,代码如下:

from sklearn.preprocessing import StandardScaler
from sklearn.datasets import load_iris
iris = load_iris()
StandardScaler().fit_transform(iris.data)
2.区间缩放法

常见的一种是利用两个最值(最大值和最小值)进行缩放。公式如下:
x ′ = x − M i n M a x − M i n x'=\frac{x-Min}{Max-Min} x=MaxMinxMin
例如,使用preprocessing库的MInMaxScaler类对iris数据及进行区间缩放,代码如下:

from sklearn.preprocessing import MinMaxScaler
MinMaxScaler().fit_transform(iris.data)
3.归一化

归一化是将样本的特征值转换到同一量纲下,把数据映射到[0,1]或者[a,b]区间内,由于其仅由变量的极值决定,因此区间缩放法是归一化法的一种。
诡异区间会改变数据的原始距离、分布和信息,但标准化一般不会。
规则为L2的归一化公式如下:
x ′ = x ∑ j m x [ j ] 2 x'=\frac{x}{\sqrt{\sum_{j}^mx[j]^2}} x=jmx[j]2 x
例如,使用preprocessing库的Nromalizer类对iris数据集进行归一化,代码如下:

from sklearn.preprocessing import Normalizer
Normalizer().fir_transform(iris.data)

3.特征降维

降维指的是采用某种映射方法,将高维向量空间的数据点映射到低维的空间中。将为的本质是学习一个映射函数 f : x → y f:x\rightarrow y f:xy,其中, x x x是原始数据点的表达,通常 y y y的维度小于 x x x的维度(当然提高纬度也是可以的)。 f f f函数的定义比较灵活,可以是显示或隐式的,也可以是线性或非线性的。
特征降维的常用方法有特征选择和线性降维。

3.1特征选择
1.特征选择的定义:

特征选择实在数据分析和简单建模当中最常用的特征降维手段。即映射函数将不重要的特征删除,不过这样会造成特征信息的丢失,不利于模型的精度。

特征选择的目标说明
特征是否发散如果一个特征不发散,如方差接近于0,就说明样本在这个特征上基本没有差异,这个特征对于样本的区分没有作用
特征与目标的相关性与目标相关性的特征应当优先选择
2.特征选择的方法:

特征选择的方法有过滤法、包装法和嵌入法

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

线性降维的方法主要有主成分分析法和线性判别分析法

1.主成分分析法

主要原理是通过某种线性投影,将高维的数据映射到低维的空间中表示,并期望在所投影的维度上数据的方差最大,以此达到使用较少的数据维度来保留较多的原数据点特性的效果。
以iris数据集为例,使用decomposition库的PCA类选择特征的代码如下:

from sklearn.decomposition import PCA
PCA(n_components=2).fit_transform(iris_data)
2.线性判别分析法(LDA)

Linear Discriminant Analysis也叫作Fisher线性判别(Fisher Linear Discriminant, FLD),是一种有监督的线性降维算法。与PCA尽可能多地保留数据信息不同,LDA的目标是是将尾喉的数据点尽可能地容易被区分,并利用了其标签的信息。
假设原始线性数据为 X X X,我们希望能找到映射向量 a a a,使得 a X aX aX后的数据点能够保持以下两种性质:
1、同类的数据点尽可能的接近;
2、不同类的数据点尽可能的分开。
以iris数据集为例,使用lda库的LDA类选择特征的代码如下:

from sklearn.discriminant_analysis import LinearDiscriminantAnalysis as LDA
LDA(n_components=2).fit_transform(iris.data,iris.target)

[1].阿里云天池大赛——机器学习篇

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

homer_of

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值