非线性模型
线性模型在处理线性可分的资料时具有良好的表现,通过计算wTxw^TxwTx得到分数sss,然后进行取正负号操作也即:sign(s)sign(s)sign(s),将数据进行分类。通过不断的优化得到一个相对完美的www,就在空间中确定了一条直线,将数据进行完美的分类:
但是,这种分类方式具有一定的局限性。对于线性不可分的数据,就显得有些力不从心了:
对于上图的这种情况,无论怎么优化直线,在数据集D上的都不可能用一条直线将数据分开。这就意味着模型在训练集上会犯很大的错误,因此导致他的预测效果并不会很好。为了解决上述问题可以引入非线性模型来进行分类。
列如可以用一个圆来对数据进行分类:hSEP(x)=sign(−x12−x22+0.6)h_{SEP}(x)=sign(-x_1^2-x_2^2+0.6)hSEP(x)=sign(−x12−x22+0.6)
该公式的含义为:样本点到原点距离的平方和与0.6进行对比,换句话说也就是用一个圆形将样本进行分类,如果在圆的内部就是+1,否则就是-1,这种方式称为圆形可分:
将上面的hSEPh_{SEP}hSEP进行转化,变为熟悉的线性模型:
原公式中,h(x)h(x)h(x)的权重为:w0=0.6,w1=−1,w2=−1w_0=0.6,w_1=-1,w_2=-1w0=0.6,w1=−1,w2=−1,但是h(x)h(x)h(x)的特征不是线性模型的(1,x1,x2)(1,x_1,x_2)(1,x1,x2)而是(1,x12,x22)(1,x_1^2,x_2^2)(1,x12,x22),令z0=1,z1=x12,z2=x22z_0=1,z_1=x_1^2,z_2=x_2^2z0=1,z1=x12,z2=x22 h(x)h(x)h(x)就成为了上式:
这种令xn到znx_n到z_nxn到zn的变换可以看作将XXX空间中的点映射到ZZZ空间中去,也就是将XXX空间中的圆形映射到ZZZ空间中,使得原空间中的数据在新空间中线性可分。
如果在XXX空间中的圆形区域映射到ZZZ空间线性可分,那么在ZZZ空间中线性可分得区域映射到XXX空间中一定是一个圆形区域吗?答案是否定的。XXX空间中的分类面可能是椭圆、双曲线、等多种情况。
通过这种形式的转换ZZZ空间中的一条直线,对应XXX空间中的一个特殊的二次曲线。之所以说特殊是因为表示的圆只能是过原点的,而不能是任意的圆。如果想要表示X空间中的任意二次曲线,应该设计一个更大的Z空间:
通过上面的特征转化,Z空间中的每一个超平面就对应着X空间中的一条二次曲线,则X空间中的假设空间HHH为:
非线性变换
从X空间到Z空间的转换获得了更好的假设函数,相当于在X空间获得了好的二次曲线假设,Z空间中的线性可分,对应于X空间中的二次曲线。
利用映射变换的思想,通过映射关系,把XXX空间中的最高阶二次多项式转换为ZZZ空间中的一次向量z,从二次假设转换成了感知机问题。用z值代替x多项式,向量z的个数和X空间中的x的多项式个数相同。这样在Z空间中利用线性分类器进行训练。训练好以后,在将z替换为x的多项式即可。
- XXX空间的数据为(xn,yn)(x_n,y_n)(xn,yn),ZZZ空间的数据集为[zn=(Φ(xn),yn)z_n=(\Phi(x_n),y_n)zn=(Φ(xn),yn)],
- 通过特征变换函数Φ\PhiΦ将XXX空间线性不可分的数据集变化为Z空间中线性可分的数据集。
- 使用线性空间中表现良好的感知机模型,获得最优权重
- 最后得到最优假设函数g(x=wTΦ(x))g(x=w^T\Phi(x))g(x=wTΦ(x))
上图中就体现了这个过程,判断样本属于哪个类别,可以先将原空间中的点经过映射到另一个空间。然后对映射空间进行线性分类,最后在进行转化到原空间。这类空间的构成为: - 非线性变化函数Φ\PhiΦ:通过特征变换,将非线性问题转化为线性可分问题。
- 利用线性模型分类:包括二分类,逻辑回归等
特征转换的思想非常常见,比如之前介绍的手写数字识别问题,从原始的像素特征值转化为具体的特征,如:密度、对称性等等。
非线性变化的代价
如果X的特征维度为d维,也就是说包含d个特征,那么二次多项式的个数为,也即Z空间的维度为:
如果X为二维 (x1,x2)(x_1,x_2)(x1,x2)那么他的二次多项式就有六项(1,x1,x2,x1x2,x12,x22)(1,x_1,x_2,x_1x_2,x_1^2,x_2^2)(1,x1,x2,x1x2,x12,x22)
如果阶数为QQQ,X的空间维度为d,那么Z空间的维度为:
从上面的结果可以看出,ZZZ空间维度个数的时间复杂度是QdQ^dQd,随着Q和d的增大空间复杂度也在不断增大。
特征转换还带来了另一个问题,之前我们已经学习了,模型参数的自由度大概是模型VC维度。z域中特征个数随着Q和d增加变得很大,即自由度也会增加,VC-dimendiom增大。前面已经讨论过如果VC-dimension过大,模型的泛化能力将会变差。
下例解释了 VC-Dimension 过大,导致分类效果不佳的原因:
上图中,左边用直线进行线性分类,有部分点分类错误;右边用四次曲线进行非线性分类,所有点都分类正确,那么哪一个分类效果好呢?单从平面上这些训练数据来看,四次曲线的分类效果更好,但是四次曲线模型很容易带来过拟合的问题,虽然它的EinE_{in}Ein比较小泛化能力上,左边的分类器更好。也就是说,VC-Dimension 过大会带来过拟合问题。
那么如何选择合适的Q,避免过拟合,提高模型泛化能力呢?一般情况下,为了尽量减少特征自由度,会根据训练样本的分布情况,人为地减少、省略一些项。但是,这种人为地删减特征会带来一些“自我分析”代价,虽然对训练样本分类效果好,但是对训练样本外的样本,不一定效果好。所以,一般情况下,还是要保存所有的多项式特征,避免对训练样本的人为选择。
XXX空间到XXX多项式空间的转换
转换过程如下所示:
- 果特征维度是一维的,变换多项式只有常数项
- 如果特征维度是两维的,变换多项式包含了一维的Φ0(x)\Phi_0(x)Φ0(x)
- 如果特征维度是三维的,变换多项式包含了二维Φ1(x)\Phi_1(x)Φ1(x)
以此类推VC-Dimention 和EinE_{in}Ein满足如下关系:
从上图可明显的看出来,VC的值一定要合适,不能过大,也不能过小。否则都可能造成在实际预测时的情况不是很好。