非线性转化

我们之前的课程都是假设数据是线性可分的,那么我们就可以用一条直线将其分开。 
比如,想这样 
非线性转化_第1张图片 
然而现实生活中并不是这样的 
非线性转化_第2张图片  
像上面的那张图,无论我们用怎样的线性模型都无法将其很好的分开。但是我们发现一个圆可以很好的解决这个问题 
非线性转化_第3张图片 
他的分类器方程为 
非线性转化_第4张图片 
那么我们把1,x21x12x22x22设定为z0z0,z1z1,z2z2,就相当于得到了一条关于z的线性方程。 
非线性转化_第5张图片 
也就是说,我们可以通过一个函数Φ(x)Φ(x)把x映射到z上面,那么就可以把可用圆分开的数据集xn,ynxn,yn,转换成可用直线分开的数据集zn,ynzn,yn。 
非线性转化_第6张图片 
就把上面左边的图映射到右边的图了。

那具体该怎么做呢??? 
首先我们把x域的数据点{x,y}通过函数Φ(x)Φ(x)全部映射到z域,即 
非线性转化_第7张图片 
然后用z域的数据 { z , y } 训练模型,即 
非线性转化_第8张图片 
以后,每来一个新样本(x,yx,y),我们救将其转化到z域上面,得到(z,y),然后用上面的模型对该新样本(z,y)进行分类即可。 
非线性转化_第9张图片

可是,这个Φ(x)Φ(x)该怎么选呢???并不知道啊!!!求大神告知!!!(可以参考svm的核函数)

貌似,我们可以通过这种方法表示出所有的模型,但是这并不是全能的,他有很大的缺点限制这他的使用。 
当x的次数越高,模型就越复杂,就会把一些误差给记住,那么虽然EinEin此时很低,但是并不能使得EEout=EinEin。过拟合。 
当x次数太低,模型简单,虽然能保证EEout=EinEin,但是不能保证EinEin此时低。欠拟合。

还有我们怎么确定Φ(x)Φ(x),也就是x的形式是怎样的。我们之前的例子x的形式是椭圆,即有x21x12,x22x22,这样就知道了Φ(x)Φ(x)。那么问题就是,凭什么是圆,其实椭圆也是可以的。其实这是根据我们肉眼观察的,这样的做法是不科学的。首先,如果是10维的话,我们肉眼是看不出来的。即使可以看出来,由于结果是我们人脑学习出来的,所以我们计算出来的错误虽小,但是并没有把我们人脑引起的误差算进去。也就是,可能其实用椭圆比用圆更好。所以Φ(x)Φ(x)的形式,不能根据人眼观察得到。

最后一个知识点是: 
非线性转化_第10张图片  
对于上面的图形我们并不陌生。我们最终的目的是希望 out-of-sample error最小,而不是 in-sample error最小。所以,我们应该最先建立一个很简单的模型,逐渐改进;千万不要一开始就弄一个复制的模型,那样就不好评估,你估计还以为你的算法很好,其实早已经过拟合了。

版权声明:博客转载,请标注 来自 丁磊_ml博客 网址为 blog.csdn.net/MosBest http://blog.csdn.net/MosBest/article/details/52183239

你可能感兴趣的:(机器学习,机器学习)