机器学习之特征离散化



李沐曾说过,模型是使用离散特征还是连续特征,其实是一个“海量离散特征+简单模型” 同 “少量连续特征+复杂模型”的权衡。既可以离散化用线性模型,也可以用连续特征加深度学习。就看是喜欢折腾特征还是折腾模型了。通常来说,前者容易,而且可以n个人一起并行做,有成功经验;后者目前看很赞,能走多远还须拭目以待。

1. 特征离散化的作用

在实际工作中,需要使用譬如LR这种线性分类器的时候,往往需要将特征离散化成0/1特征,之后再进行模型训练。这样的好处有以下几方面:

  1. 单变量离散化为N个后,每个变量有单独的权重,相当于为模型引入了非线性,能够提升模型表达能力,加大拟合
  2. 离散化后的特征对异常数据有很强的鲁棒性:比如一个特征是年龄>30是1,否则0。如果特征没有离散化,一个异常数据“年龄300岁”会给模型造成很大的干扰;
  3. 稀疏向量内积乘法运算速度快,计算结果方便存储,容易扩展;

2. 特征离散化可以引入非线性的证明

参考资料:https://blog.csdn.net/u011086367/article/details/52879531
注意下面的例子对于分类和回归问题都适用,回归问题时图中就不是两类分布在曲线两类的样本了,而是沿着曲线分布的样本。
假设真实的决策面为 y = x 2 y=x^2 y=x2,如下图黄色曲线所示;假设现在我们用一个线性模型去拟合数据,则得到的决策面为 y = k x + b y=kx+b y=kx+b,如下图中黑色直线所示:
在这里插入图片描述

图2.1 用线性模型去拟合非线性决策面的数据

显然上述模型不能很好地拟合数据。如果我们将特征 x x x离散化为多个0/1特征(one-hot编码):
0 < x ≤ s 1 , x 1 = 1 ; e l s e   x 1 = 0 0 < x ≤ s 2 , x 2 = 1 ; e l s e   x 2 = 0 ⋯ 0 < x ≤ s n , x n = 1 ; e l s e   x n = 0 (2-1) \begin{aligned} 0< x\leq s_1,x_1&=1;else\ x_1=0\\ 0< x\leq s_2,x_2&=1;else\ x_2=0\\ \cdots\\ 0< x\leq s_n,x_n&=1;else\ x_n=0\\ \tag{2-1} \end{aligned} 0<xs1,x10<xs2,x20<xsn,xn=1;else x1=0=1;else x2=0=1;else xn=0(2-1)
则新的模型表达式为: y = k x x 1 + k 2 x 2 + ⋯ + k n x n + b y=k_x x_1+k_2 x_2+\cdots+k_nx_n+b y=kxx1+k2x2++knxn+b。决策面变为
0 < x ≤ s 1 , y = k 1 + b 0 < x ≤ s 2 , y = k 2 + b ⋯ 0 < x ≤ s n , y = k n + b (2-2) \begin{aligned} 0< x\leq s_1,y&=k_1+b\\ 0< x\leq s_2,y&=k_2+b\\ \cdots\\ 0< x\leq s_n,y&=k_n+b\\ \tag{2-2} \end{aligned} 0<xs1,y0<xs2,y0<xsn,y=k1+b=k2+b=kn+b(2-2)
模型学习出的决策面如下图所示:
在这里插入图片描述

图2.2 特征离散化后拟合非线性决策面

由上图可见,是模型能够拟合线性不可分的数据了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值