特征工程——categorical特征 和 continuous特征

看到有些介绍,“特征分为categorical特征 和 continuous特征“不解,查资料得

单个原始特征(或称为变量)通常属于以下几类之一:

  • 连续(continuous)特征;
  • 无序类别(categorical)特征;
  • 有序类别(ordinal)特征。

##连续特征 除了归一化(去中心,方差归一),不用做太多特殊处理,可以直接把连续特征扔到模型里使用。

##无序特征 可以使用One-hot(也叫One-of-k)的方法把每个无序特征转化为一个数值向量。比如一个无序特征color有三种取值:redgreenblue。那么可以用一个长度为3的向量来表示它,向量中的各个值分别对应于redgreenblue。如:

color取值 向量表示
red (1, 0, 0)
green (0, 1, 0)
blue (0, 0, 1)
##有序特征 有些特征虽然也像无序特征那样只取限定的几个值,但是这些值之间有顺序的含义。例如一个人的状态 status 有三种取值: bad normal good ,显然 bad  <  normal  <  good

当然有些问题里有序可能会很重要,这时候就不应该把其中的顺序关系丢掉。一般的表达方式如下:

status取值 向量表示
bad (1, 0, 0)
normal (1, 1, 0)
good (1, 1, 1)

上面这种表达方式很巧妙地利用递进表达了值之间的顺序关系。

——————————————————————

以线性分类器Linear Regression (LinearReg)为例,它是通过特征的线性加权来预测因变量 y y

y=wTx

但大部分实际情况下, y y x x都不会是这么简单的线性关系,甚至连单调关系都不会有。那么直接把 x x扔进LinearReg模型是怎么也得不到好结果的。很多人会想着既然线性分类器搞不定,那就直接找个非线性的好了,比如高斯核的SVM。我们确实可以通过这种简单换算法的方式解决这个简单的问题。但对于很多实际问题(如广告点击率预测),往往特征非常多,这时候时间约束通常不允许我们使用很复杂的非线性分类器。这也是为什么算法发展这么多年,广告点击率预测最常用的方法还是Logistic Regression (LogisticReg)

【上述问题的解决办法】——就是对原始特征 x x做转化,把原来的非线性关系转化为线性关系

方法一:离散化 

最常用的转化方式是对 x x离散化(discretization),也就是把原来的值分段,转化成一个取值为0或1的向量。原始值落在某个段里,向量中此段对应的元素就为1,否则为0。

离散化的目标是 y y与转化后向量里的每个元素都保持比较好的线性关系。

  比如取离散点{0.5,1.5,2.5},通过判断

x x属于 (−∞,0.5), [0.5,1.5)[1.5,2.5)[2.5,+∞)中哪段来把它离散化为4维的向量。下面是一些例子的离散结果:

原始值 x x 离散化后的值
0.1 (1, 0, 0, 0)
1.3 (0, 1, 0, 0)
3.2 (0, 0, 0, 1)
5.8 (0, 0, 0, 1)

离散化方法的关键是怎么确定分段中的离散点。下面是常用的选取离散点的方法:

【1】等距离离散:顾名思义,就是离散点选取等距点。我们上面对 x x取离散点{0.5,1.5,2.5}就是一种等距离散

【2】等样本点离散:选取的离散点保证落在每段里的样本点数量大致相同

【3】画图观察趋势:以 x x为横坐标, y y为纵坐标,画图,看曲线的趋势和拐点。通过观察下面的图我们发现可以利用3条直线(红色直线)来逐段近似原来的曲线。把离散点设为两条直线相交的各个点,我们就可以把 x x离散化为长度为3的向量

方法二:函数变换

函数变换直接把原来的特征通过非线性函数做变换,然后把原来的特征,以及变换后的特征一起加入模型进行训练。常用的变换函数见下表,不过其实你可以尝试任何函数。

常用非线性函数 f(x) f(x) x x的取值范围
xα α(,+) α∈(−∞,+∞) (,+) (−∞,+∞)
log(x) log⁡(x) (0,+) (0,+∞)
log(x1x) log⁡(x1−x) (0,1) (0,1)

这个方法操作起来很简单,但记得对新加入的特征做归一化。

方法三:决策树离散法

大白话说决策树模型就是一大堆的if else。它天生就可以对连续特征分段,所以把它用于离散化连续特征合情合理。我称这种方法为决策树离散化方法。例如Gmail在对信件做重要性排序时就使用了决策树离散化方法2

决策树离散化方法通常也是每次离散化一个连续特征,做法如下:

单独用此特征和目标值 y y训练一个决策树模型,然后把训练获得的模型内的特征分割点作为离散化的离散点。

这种方法当然也可以同时离散化多个连续特征,但是操作起来就更复杂了,实际用的不多。

方法四:核方法

核方法经常作为线性模型的一种推广出现。以线性回归模型为例,它对应的核方法如下:

fθ(x)=i=1nθiK(x,xi)   fθ(x)=∑i=1nθiK(x,xi)  ,

其中 {xi}ni=1 {xi}i=1n为训练样本点, K(xi,xj) K(xi,xj)为核函数,比如常用的高斯核函数为:

K(xi,xj)=exp(xixj222h2)   K(xi,xj)=exp⁡(−‖xi−xj‖222h2)  。

如果我们把上面模型里的 {K(x,xi)}ni=1 {K(x,xi)}i=1n看成特征,而 θ θ看成模型参数的话,上面的模型仍旧是个线性模型。所以可以认为核方法只是特征函数变换的一种方式。

当然,如果把核函数 K(xi,xj) K(xi,xj)看成一种相似度的话,那上面的模型就是kNN模型了,或者叫做加权平均模型也可以。




参考博文:http://breezedeus.github.io/2014/11/15/breezedeus-feature-processing.html

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值