原文:http://blog.sina.com.cn/s/blog_818f5fde0102vxf7.html
之前实习,公司团队用LR进行推荐排序的时候,都会将所有特征离散成非常高维的0/1特征(千万维级别),然后再进行模型训练。大牛说这样可以解决模型的非线性问题。因为逻辑回归只能拟合线性分类问题,也不能像SVM那样利用核函数(之前在博文http://blog.sina.com.cn/s/blog_818f5fde0102vvpy.html里已经讲过,因为这样做会造成非常大的计算开销),如果遇到非线性问题,效果会不好。但是如果对特征进行布尔化处理,则可以消除非线性影响,提高准确率。当时似懂非懂,也没有追问为什么离散化特征可以解决非线性问题。最近想到这个问题,加以推敲,突然搞明白了,所以写下博文mark一下。纯属个人推敲结果,如果不对,敬请指出。
为了更清晰地说明问题,作如下几点假设:
(1)假设现在的分类问题里只有一维连续特征(即x为单维向量)
(2)假设真实决策面为简单二次函数,即
那么,真实的决策面应该是这样的:
很显然,如果就拿x进行训练,训练出的模型只能是一维线性模型,形式如下
这样的模型效果肯定是不好的,因为它长成这个样子:
但是,如题目所说,如果我们将x进行分段处理,将x离散成高维的0/1向量(x1,x2,x3,……,xn),利用新的特征向量(x1,x2,x3,……,xn)训练得到模型将会有如下形式:
首先,离散过程如下:
注意:(x1,x2,x3,……,xn)的值中只可能有一个为1,其它都为0。
那么,决策面将会是一个分段函数(一个尽量拟合抛物线的分段函数):
新的模型在原来的坐标轴下会长成这个样子:
图画得不好,但是大概是这个意思,
如果将x作最大程度地细分,则可以对抛物线拟合得很好哦!!!
这下完全搞清楚了,就是因为这样,所以在实际操作中,将特征离散成高维的布尔特征可以解决逻辑回归中的非线性问题。