首页 > 代码库 > 【机器学习基础】非线性变换
【机器学习基础】非线性变换
引言
在之前介绍的分类问题中,所涉及的分类的模型都是线性的,在非线性变换这一节中,我们将模型延伸到非线性的情况下来进行数据的分类。
二次假设(Quadratic Hypotheses)
我们看到上面的例子,在左图中,圆圈和红叉的数据无法用一条直线将其分成两类,那么这这个例子中,我们其实可以用一个大圆圈将数据分类,所以现在我们考虑假设,该假设hSEP(x)是一个过原点的圆圈,这启示我们可以用系统化的方法结合之前我们学习的线性分类的方法,来解决更加广泛的问题。
还是拿上面的这个圆圈的Φ假设为例,h(x)=sign(0.6·1 + (-1) ·x1^2 + (-1) ·x2^2)。我们令w0=0.6,w1=-1,w2=-1;而z0=1,z1=x1^2,z2=x2^2。通过这种方式我们就可以将之前的h(x)变化成sign(wT * z),这个熟悉的形式就是我们之前学习的线性分类的形式,我们唯一做的不同的事情就是将之前的x的空间转换成新的z的空间。我们把x空间的每一个点转换到z空间的每一个点的过程称作特征转换(Feature Transform)。这里值得一提的是,x空间里用二次假设可分的情况,可以得到在z空间的 线性可分,但是反过来则不可以,因为在z空间里的直线不见得在x空间里都是正圆形,还有可能是双曲线之类的二次曲线,所以在z空间使得数据线性可分的直线对应x空间的特定的曲线。
我们可以考虑一个更加广泛的二次假设,这个假设是使得在z空间里让数据线性可分的假设,那其中的转换函数如下图定义。
非线性变换(Nonlinear Transform)
我们可以总结这个非线性转换的步骤,即先通过Φ(x)将x空间的点转换成z空间的点,而在z空间上得到一个线性的假设,再恢复到原来的x空间中得到一个二次的假设(这个反运算的过程不一定存在)。
其实这个特征转换是非常重要的,比如在手写数字分类的案例中,我们将原始的像素的特征数据转换到更加具体的、具有物理意义的特征上去,进而进行分类的求解。这个例子其实就是在新的特征空间中做线性分类,而对于原始的像素空间里其实是一个非线性的假设。
非线性变换的代价(Price of Nonlinear Transform)
计算/存储的代价(Computation/Storage Price)
现在我们考虑一个很一般化(general)的非线性变换,将刚才的二次变成Q次的多项式转换。
我们用d来表示在z空间的维度,我们需要得到d维的不同的组合方法,复杂度是O(Q^d)。
这个数字代表我们需要这样的计算复杂度来计算Φ(x)变换、计算参数w(因为一些训练算法的时间复杂度和数据的维度是有关的),还有存储w的话也需要付出代价。
模型复杂度(Model Complexity Price)
我们知道这个z空间的模型的参数是1+d个,这个相当于是z空间的vc维,所以当Q变大的时候,vc维也变大了。
泛化问题(Generalization Issue)
我们再回到机器学习的一个基本都是平衡折中问题上,如果d(Q)大的时候,我们可以让Ein很小,但是这会导致Ein和Eout差别很大;当d(Q)小的时候,可以使得Ein和Eout差别小,但是又不能保证Ein很小。
转载请注明作者Jason Ding及其出处
Github主页(http://jasonding1354.github.io/)
CSDN博客(http://blog.csdn.net/jasonding1354)
简书主页(http://www.jianshu.com/users/2bd9b48f6ea8/latest_articles)
【机器学习基础】非线性变换