本文介绍了非线性变换的整体流程:通过非线性变换,将非线性模型映射到另一个空间,转换为线性模型,再来进行线性分类。
之后介绍了非线性变换存在的问题:时间复杂度和空间复杂度的增加。
最后证明了非线性变换的一般做法:尽可能使用简单的模型,而不是模型越复杂越好。


系列文章

机器学习基石01:机器学习简介
机器学习基石02:感知器算法(Perceptron Algorithm)
机器学习基石03:机器学习的类型(Types of ML)
机器学习基石04:机器学习的可行性(Feasibility of ML)
机器学习基石05:训练与测试(Training versus Testing)
机器学习基石06:泛化理论(Theory of Generalization)
机器学习基石07:VC维(The VC Dimension)
机器学习基石08:噪声和误差(Noise and Error)
机器学习基石09:线性回归(Linear Regression)
机器学习基石10:逻辑回归(Logistic Regression)
机器学习基石11:线性模型分类(Linear Models for Classification)
机器学习基石12:非线性变换(Nonlinear Transformation)
机器学习基石13:过拟合风险(Hazard of Overfitting)
机器学习基石14:正则化(Regularization)
机器学习基石15:交叉验证(Cross Validation)
机器学习基石16:三个重要原则(Three Learning Principles)


文章目录

  • 系列文章
  • 12. Nonlinear Transformation
    • 12.1 Quadratic Hypotheses
    • 12.2 Nonlinear Transform
    • 12.3 Price of Nonlinear Transform
    • 12.4 Structured Hypothesis Sets
    • summary

12. Nonlinear Transformation

12.1 Quadratic Hypotheses

在之前的章节中,学习的机器学习模型都为线性模型,即假设空间都为线性的(2D平面中为一条直线,3D空间为一个平面),使用的得分为线性得分(linear scores) s=wTxs=w^Txs=wTx。其中,xxx 为特征值向量,www 为权重。

线性模型的优点是理论上可以使用VC限制进行约束(假设是非线性的各种曲线或者超平面,则每种假设都可以完全二分,即有 2N2^N2N 种二分类。),这保证了 Ein≈EoutE_{in} \approx E_{out}Ein​≈Eout​(VC-Dimension比较小)。但是对于线性不可分(non-linear separable)的问题(如下图), EinE_{in}Ein​ 很大,从而导致 EoutE_{out}Eout​ 也很大,导致分类结果不理想。


为了解决线性模型的缺点,我们可以使用非线性模型来进行分类。基于这种非线性思想,之前讨论的PLA、Regression问题也可以通过非线性的形式进行求解。例如可以使用一个半径为 0.6\sqrt{0.6}0.6​ 圆心在原点的圆划分,它的hypotheses可以写成:

hSEP(x)=sign(−x12−x22+0.6)(12-01)h_{SEP}(x) = sign(−x^2_1−x^2_2+0.6) \tag{12-01}hSEP​(x)=sign(−x12​−x22​+0.6)(12-01)

该公式的含义为将样本点到原点距离的平方与数值0.6作比较,圆形将样本集分离,圆形内部是正类,标记为+1,外部是负类,标记为-1,此种方式称作圆形可分(circular separable)。如下图所示:


将公式(12-01)做如下转换,变为熟悉的线性模型:

原公式中,h(x)h(x)h(x) 的权重为 w0=0.6w_0 = 0.6w0​=0.6, w1=−1w_1 = -1w1​=−1,w2=−1w_2 = -1w2​=−1,但是 h(x)h(x)h(x) 的特征不是线性模型的 (1,x1,x2)(1,x_1,x_2)(1,x1​,x2​),而是 (x,x12,x22)(x,x^2_1,x^2_2)(x,x12​,x22​)。通过令 z0=1,z1=x12,z2=x22z_0 = 1, z_1 = x^2_1, z_2 = x^2_2z0​=1,z1​=x12​,z2​=x22​,h(x)h(x)h(x) 可以变成上式。

这种 xn→znx_n \rightarrow z_nxn​→zn​ 的变换可以看作将 XXX 空间中的点映射到 ZZZ 空间中去,即从 XXX 空间的圆形可分映射到 ZZZ 空间的线性可分。ZZZ 域中的直线对应于 XXX 域中的圆形。其背后的思想是通过非线性的特征变换 Φ\PhiΦ(feature transform) 将圆形可分(非线性可分)变为线性可分。

那么问题来了,已知在 XXX 域中圆形可分,在 ZZZ 域中线性可分;反过来,如果在 ZZZ 域中线性可分,是否在 XXX 域中一定圆形可分呢?

答案是否定的。由于权重向量 www 取值不同,XXX 域中的hypothesis可能是圆形、椭圆、双曲线等等多种情况。

通过这种形式转换的 ZZZ 空间的直线对应着原 XXX 空间中特殊的二次曲线(quadratic curves)。说“特殊”是因为表示的圆只能是圆心过原点的圆,不能随意表示各种情况的圆。如果想要表示 XXX 空间中所有的二次曲面,应设计一个更大的 ZZZ 空间,其特征转换如公式为:

通过以上特征转换,ZZZ 空间中的每个超平面就对应 XXX 空间中各种不同情况的二次曲线(圆、椭圆、双曲线)。则 XXX 空间中的假设空间H为:

上式中,h~\widetilde{h}h 表示 ZZZ 空间中的假设函数。


习题01:


12.2 Nonlinear Transform

从 XXX 空间转换到 ZZZ 空间,则在Z空间中获得的好的线性假设函数,相当于在X空间中获得了好的二次假设函数,即在 ZZZ 空间中存在线性可分的直线对应于在 XXX 中(非线性)可分的二次曲线。目标就是在 ZZZ 空间中找到一个最佳的分类线(假设函数)。

利用映射变换的思想,通过映射关系,把 XXX 空间中的最高阶二次的多项式转换为 ZZZ 空间中的一次向量 z,即从二次假设转换成了感知器问题。用 z 值代替 x 多项式,其中向量 z 的个数与 XXX 空间中 x 的多项式的个数相同(包含常数项)。这样就可以在 ZZZ 域中利用线性分类器进行训练。训练好之后,再将 z 替换为 x 的多项式即可(反变换)。具体过程如下:

  • XXX 空间中的数据为 {(xn,yn)}\{(x_n,y_n)\}{(xn​,yn​)},ZZZ 空间的数据集为 {(zn=Φ2(xn),yn)}\{(z_n= \Phi_2(x_n),y_n)\}{(zn​=Φ2​(xn​),yn​)};
  • 通过特征变换函数 Φ\PhiΦ 将 XXX 空间中线性不可分的数据集 {(xn,yn)}\{(x_n,y_n)\}{(xn​,yn​)} 变换为 ZZZ 空间中线性可分的数据集 {(zn=Φ2(xn),yn)}\{(z_n= \Phi_2(x_n),y_n)\}{(zn​=Φ2​(xn​),yn​)} ;
  • 使用线性分类算法和 ZZZ 空间的数据集 {(zn,yn)}\{(z_n,y_n)\}{(zn​,yn​)} 获得表现良好的感知器模型 (最优权重向量) w~\widetilde{w}w;
  • 最后得到最优的假设函数 g(x)=(w~TΦ(x))g(x) = (\widetilde{w}^T \ \Phi(x))g(x)=(wT Φ(x))。

上图中,最下边两幅图表达了该思路的核心思想。判断某个样本属于哪个类别,只需要将 XXX 空间中的数据变换到 ZZZ 空间;然后使用 ZZZ 空间中的假设函数(线性分类器)对样本进行分类;最后反变换到 XXX 空间,得到真实类别。

这类模型由两部分构成:

  • 非线性变换函数 Φ\PhiΦ :通过特征变换,将非线性可分问题转换为线性可分问题;
  • 线性模型:包括之前学习的二分类、线性回归和Logistic回归等;

使用以上求解非线性分类的思路可以解决二次PLA,二次回归,三次回归,…,多项式回归等多种问题。

特征变换(feature transform) 的思想非常常见,比如我们熟知的手写数字识别任务中,从原始的像素值特征转换为具体的特征,比如密度、对称性等:

习题2:


12.3 Price of Nonlinear Transform

如果 XXX 的特征维度为 ddd 维,也就是包含 ddd 个特征,那么二次多项式个数,即 ZZZ 空间的特征维度为:

d˘=1+Cd1+Cd2+d=d(d+3)2+1\breve{d} = 1 + C^1_d + C^2_d + d = \frac {d(d+3)}{2} + 1d˘=1+Cd1​+Cd2​+d=2d(d+3)​+1

如果 XXX 特征维度是2维的,即 (x1,x2)(x_1, x_2)(x1​,x2​),那么它的的二次多项式为 (1,x1,x2,x12,x1x2,x22)(1, x_1, x_2, x^2_1, x_1x_2, x^2_2)(1,x1​,x2​,x12​,x1​x2​,x22​),有六项。

如果阶数为 QQQ , XXX 空间的特征维度为 d 维,则它的 ZZZ 空间特征维度为:

d˘=CQ+dQ+CQ+dd=O(Qd)\breve{d} = C^Q_{Q+d} + C^d_{Q+d} = O(Q^d)d˘=CQ+dQ​+CQ+dd​=O(Qd)

由上式可以看出,计算 ZZZ 空间特征维度个数的时间复杂度是 QQQ 的 ddd 次方,随着 QQQ 和 ddd 的增大,计算量变大;空间复杂度也大。


特征转换还带来另一个问题。在前面的章节中讲述过,模型参数的自由度大概是该模型的VC维度。z域中特征个数随着Q和d增加变得很大,同时权重w也会增大,即自由度增加,VC-Dimension 增大。令z域中的特征维度为 d˘+1\breve{d} + 1d˘+1 ,在 ZZZ 域中,任何 d˘+2\breve{d} + 2d˘+2 的输入都不能被 shattered,同样,在 XXX 域中,任何 d˘+2\breve{d} + 2d˘+2 的输入也不能被 shattered;d˘+1\breve{d} + 1d˘+1 是 VC-Dimension 的上界,如果 d˘+1\breve{d} + 1d˘+1 很大,相应的 VC-Dimension 也会很大。根据之前章节课程的讨论,VC-Dimenslon 过大,模型的泛化能力会比较差。

下例解释了 VC-Dimension 过大,导致分类效果不佳的原因:

上图中,左边用直线进行线性分类,有部分点分类错误;右边用四次曲线进行非线性分类,所有点都分类正确,那么哪一个分类效果好呢?单从平面上这些训练数据来看,四次曲线的分类效果更好,但是四次曲线模型很容易带来过拟合的问题,虽然它的 EinE_{in}Ein​ 比较小;泛化能力上,左边的分类器更好。也就是说,VC-Dimension 过大会带来过拟合问题,d˘+1\breve{d} + 1d˘+1 不能过大。

那么如何选择合适的Q,避免过拟合,提高模型泛化能力呢?一般情况下,为了尽量减少特征自由度,会根据训练样本的分布情况,人为地减少、省略一些项。但是,这种人为地删减特征会带来一些“自我分析”代价,虽然对训练样本分类效果好,但是对训练样本外的样本,不一定效果好。所以,一般情况下,还是要保存所有的多项式特征,避免对训练样本的人为选择。


习题3:


12.4 Structured Hypothesis Sets

下面讨论 XXX 空间到 XXX 空间的多项式变换。

如果特征维度是一维的,变换多项式只有常数项:

Φ0(x)=(1)Φ_0(x) =(1)Φ0​(x)=(1)

如果特征维度是两维的,变换多项式包含了一维的 Φ0(x)Φ_0(x)Φ0​(x):

Φ1(x)=(Φ0(x),x1,x2,...,xd)Φ_1(x) = (Φ_0(x), x_1,x_2, . . . ,x_d)Φ1​(x)=(Φ0​(x),x1​,x2​,...,xd​)

如果特征维度是三维的,变换多项式包含了二维的 Φ1(x)Φ_1(x)Φ1​(x):

Φ2(x)=(Φ1(x),x12,x1x2,...,xd2)Φ2(x) = (Φ_1(x), x^2_1,x1x2, . . . ,x^2_d)Φ2(x)=(Φ1​(x),x12​,x1x2,...,xd2​)

以此类推,如果特征维度是Q维的,则它的变换多项式为:

ΦQ(x)=(ΦQ−1(x),x1Q,x1Q−1x2,...,xdQ)Φ_Q(x) = (Φ_{Q−1}(x), x^Q_1,x^{Q−1}_1x2, . . . ,x^Q_d)ΦQ​(x)=(ΦQ−1​(x),x1Q​,x1Q−1​x2,...,xdQ​)

这种结构称为 Structured Hypothesis Sets

对于这种 Structured Hypothesis Sets ,VC-Dimention 和 EinE_{in}Ein​ 满足如下关系:

VC-Dimention 与错误率之间的关系如下:

由上图易知,随着变换多项式的阶数增大,虽然 EinE_{in}Ein​ 逐渐减小,但模型复杂度会逐渐增大,造成 EoutE_{out}Eout​ 很大,所以阶数不能太高。

如果选择的阶数很大,能使 Ein≈0E_{in} \approx 0Ein​≈0 ,但泛化能力很差,这种情况叫做tempting sin。所以,一般做法是先从低阶开始,如先选择一阶假设,看看EinE_{in}Ein​ 是否很小,如果 EinE_{in}Ein​ 足够小就选择一阶,如果很大就逐渐增加阶数,直到满足要求为止。也就是说,尽量选择低阶的假设,这样才能得到泛化能力较强的模型。


习题4:


summary

本节课介绍了非线性变换的整体流程(通过非线性变换,将非线性模型映射到另一个空间,转换为线性模型,再来进行线性分类。

之后介绍了非线性变换存在的问题:时间复杂度和空间复杂度的增加。

最后介绍了在付出代价的情况下,使用非线性变换的最安全做法:尽可能使用简单的模型,而不是模型越复杂越好。


参考:
https://www.cnblogs.com/ymingjingr/p/4306666.html
https://github.com/RedstoneWill/HsuanTienLin_MachineLearning

机器学习基石12:非线性变换(Nonlinear Transformation)相关推荐

  1. 机器学习基石 之 非线性转换(Nonlinear Transformation)

    非线性转换(Nonlinear Transformation) 前面讲了许多线性模型,但是假如数据并不是线性可分的,该如何处理呢?基本思路是将数据样本(特征)空间 X\mathcal{X}X 映射到 ...

  2. 《机器学习基石》第12节课学习笔记

    第12节课  Nonlinear Transformation 这节课主要介绍了非线性分类模型,通过非线性变换,将非线性模型映射到另一个空间,转换为线性模型,再来进行线性分类.本节课完整学习了非线性变 ...

  3. 机器学习基石06:泛化理论(Theory of Generalization)

    本文介绍了机器学习的泛化理论,包括突破点的限制,上限函数的基本情形,上限函数的归纳情形以及形象化的证明. 系列文章 机器学习基石01:机器学习简介 机器学习基石02:感知器算法(Perceptron ...

  4. 机器学习基石13:过拟合风险(Hazard of Overfitting)

    本文详细介绍了过拟合的概念,造成过拟合的原因以及过拟合的解决方案. 系列文章 机器学习基石01:机器学习简介 机器学习基石02:感知器算法(Perceptron Algorithm) 机器学习基石03 ...

  5. 机器学习基石05:训练与测试(Training versus Testing)

    上一篇文章介绍了机器学习的可行性.本文将讨论机器学习的核心问题,严格证明为什么机器可以学习. 系列文章 机器学习基石01:机器学习简介 机器学习基石02:感知器算法(Perceptron Algori ...

  6. 台湾大学林轩田机器学习基石课程学习笔记12 -- Nonlinear Transformation

    红色石头的个人网站:redstonewill.com 上一节课,我们介绍了分类问题的三种线性模型,可以用来解决binary classification和multiclass classificati ...

  7. 机器学习 | 台大林轩田机器学习基石课程笔记12 --- Nonlinear Transformation

    课程主页 课程视频和PPT 上一节课,我们介绍了分类问题的三种线性模型,可以用来解决binary classification和multiclass classification问题.本节课主要介绍非 ...

  8. Lecture 12 : Nonlinear Transformation

    Lecture 12 : Nonlinear Transformation [参考]https://redstonewill.com/246/ [概括] 主要介绍了非线性分类模型: 通过非线性变换,将 ...

  9. 机器学习基石12-Nonlinear Transformation

    注: 文章中所有的图片均来自台湾大学林轩田<机器学习基石>课程. 笔记原作者:红色石头 微信公众号:AI有道 上一节课介绍了分类问题的三种线性模型,可以用来解决binary classif ...

最新文章

  1. 私钥设置_私钥忘了怎么办,还能找回来吗?能
  2. .net WCF简单实例
  3. Eclipse error: “The import XXX cannot be resolved”
  4. Centos下Linux下解决root用户Operation not permitted
  5. SAP Cloud for Customer移动端应用SAP推荐的网络时延参数
  6. P1072-Hankson的趣味题【数论,gcd】
  7. 【基础】【后台】 微信小程序 - 腾讯云 - wafer2 - PHP - DEMO - 003 - 源码分析 - 02 - 路由
  8. HTML中的表格和表单控件详解
  9. 英伟达 VS. 英特尔:后浪来袭!
  10. 真5G尚需时日,滑稽的假5G营销已经上演
  11. 基于SPSS的正态性检验方法汇总——以个股收益率为例(超详细)
  12. oracle 按汉字拼音顺序排序
  13. [生存志] 第91节 鬼谷捭阖之策
  14. 超简单集成华为HMS Scankit 扫码SDK实现扫一扫二维码
  15. android 查看路由器ip,如何查看路由器ip地址进入登录页面
  16. java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.c
  17. mysql产品分类_MySQL习题1 一对多实例 产品和分类
  18. QScrollArea手指触摸屏滑动
  19. 叮!丰巢智能柜那些贴心服务的正确打开方式
  20. 推荐算法最前沿|CIKM2020推荐系统论文一览

热门文章

  1. 优秀的程序员热爱偷懒
  2. arduion控制42步进电机
  3. 一键转发工具share.js
  4. 贝加莱ACOPOSACOPOS1022,1010,1045,1022,1090,1180,1320系列伺服驱动器故障号,故障信息及解决方法
  5. opencv色彩空间类型转换(python)
  6. 很抱歉,由于您访问的URL有可能对网站造成安全威胁,您的访问被阻断
  7. OpenRA-RA2编译指南
  8. Oracle中安全库存设定和更新,轻松管控仓库的秘密 - 合理设定安全库存和最大库存量...
  9. Word制作倒福实例教程
  10. 农村电子商务的发展思路ppt