机器学习:非线性模型解决分类问题

本文介绍了线性模型在处理线性可分数据时的优势,但面对线性不可分数据时的局限性。为解决这一问题,引入了非线性模型,通过特征转换将非线性问题转化为线性可分问题,例如使用圆形分类。通过映射变换,将数据从原始空间转换到高维空间,使得在新空间中数据线性可分。然而,高维空间的复杂度和模型的VC-Dimension可能导致过拟合,影响泛化能力。因此,需要找到合适的特征转换和模型复杂度平衡,以提高模型的预测性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

非线性模型

线性模型在处理线性可分的资料时具有良好的表现,通过计算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(x12x22+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_nxnzn的变换可以看作将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的值一定要合适,不能过大,也不能过小。否则都可能造成在实际预测时的情况不是很好。

matlab中的线条颜色可以通过指定RGB数值或使用预定义的颜色名称来设置。预定义的颜色名称包括:'r'代表红色,'g'代表绿色,'b'代表蓝色,'y'代表黄色,'m'代表品红色,'c'代表青色,'k'代表黑色,'w'代表白色。此外,还可以使用十六进制的RGB值来指定颜色。例如,'#FF0000'代表红色,'#00FF00'代表绿色,'#0000FF'代表蓝色。 在matlab中,你可以使用'plot'函数来绘制线条。你可以在'plot'函数中使用'color'参数来指定线条的颜色。例如,使用'red'作为参数将线条设置为红色。 除了预定义的颜色,你还可以使用其他自定义的颜色。你可以使用RGB数值来指定颜色,这些数值表示红色、绿色和蓝色在每个点上的色彩强度。这些数值的范围通常是0到1,其中0表示最暗,1表示最亮。 总结一下,matlab中的线条颜色可以通过预定义的颜色名称、RGB数值或十六进制RGB值来设置。使用'plot'函数并在参数中指定颜色即可绘制相应颜色的线条。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [matlab颜色选取与绘制?(附有颜色全表)](https://blog.youkuaiyun.com/weixin_47502228/article/details/124410538)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [matlab线条颜色](https://download.youkuaiyun.com/download/u013040413/6655175)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值