首页 > 其他 > 详细

特征的非线性变换(Feature Non-linear Transformation)

时间:2019-07-02 17:47:45      阅读:688      评论:0      收藏:0      [点我收藏+]

有时候特征x和目标y不呈线性关系,线性模型中的线性组合wx不能很好地反映事物的规律或者无法对事物进行有效分类,因此我们需要使用非线性组合来描述,此时模型为非线性模型。

(x=([x1,x2,...,xn,1])T,w=([w1,w2,...,wn,b])T

 

比如说下图的分类问题,显然无论用什么样的直线都很难把圈圈和叉叉很好地分隔开来,但是用一个大圆圈却能很好地进行分隔。

技术分享图片

 

这个大圆圈就是使用了非线性模型拟合的结果,以往线性模型中的分类超平面(这里是直线)变成了圆:−x12?x22?+0.6=0。

 

可以看到,此时假设函数的特征不是线性模型的(x1,x2,1),而是变成了(x1^2,x2^2,1)。然后我们通过映射关系z=x2,就可以把特征变为(z1,z2,1)。此时就相当于把x域中的二次式转换为z域中的一次式,原本的非线性组合wx2变为线性组合技术分享图片

 

我们把xn?zn?这个转换过程称之为特征变换(Feature Transform)。通过特征变换,可以将非线性模型转换为另一个域中的线性模型来求解。具体过程如下:把原始x值通过映射关系转换成z值,数据由(xn?,yn)变为(zn?,yn);在z域中用线性算法对转换后的数据进行训练,得到最佳w值;训练好线性模型之后,再将z替换为x的映射关系。

 

需要注意的是:特征变换只是得到新特征的一种方式,可以和任何线性模型结合使用。

 

其次,如果想把原有的线性模型变为非线性模型,并不需要改变模型本身,只需要改变特征输入即可,比如原本线性模型有一个特征x1,其有两个输入值:

[[2]
 [3]]

转变为二次模型(quadratic model)后,特征输入就变成:

[[4]
 [9]]

 

上面举的例子是将特征x转变为了二次式x2。同理,还可以将x转变为其他形式,例如:可以将特征x变为log(x),exp(x)等等。

 

下面再来说一下结构化的转变方式:多项式转变(Polynomial Transformation)

 

如果原本的线性模型的特征x是2维的,即有2个特征:(x1x2?),再加上一个常数项就是:(x1x2?,1),那么它的二次多项式为:(x1,x2,x1^2,x1x2,x2^2,1),一共有6项。

 

假设原本的线性模型的特征x是d维的,即有d个特征:(x1x2xd),再加上一个常数项就是:(x1x2xd?,1),那么做一个完全的二次转换(即其包含所有的二次项、一次项和常数项,此时得到非线性组合:C*d^1+C*d^2+1后得到的特征维度是:d(d+3)?/2+1。

 

如果转换的阶数更高呢?推广上面的结论,假设阶数为Q,那么对于d维的特征x,其转变为Q次多项式后的特征维度大约为:技术分享图片

 

技术分享图片

 

技术分享图片

 

由上图可以看到,将线性模型的特征x进行多项式转换后,计算和储存其新特征的时间复杂度和空间复杂度是O(Qd)---Q的d次方。随着Q和d的增大,计算量和储存量都会变得很大

 

另一个所要付出的代价则是模型复杂度会变高(假设空间的VC维近似等于特征的个数),因此,应先从阶数低的转变开始做起,以防止过拟合问题的发生。

 

特征的非线性变换(Feature Non-linear Transformation)

原文:https://www.cnblogs.com/HuZihu/p/10144425.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!