有时候特征x和目标y不呈线性关系,线性模型y=wx+b不能很好地反映事物的规律或者无法对事物进行有效分类,因此此时我们需要使用非线性模型。

(x=([x1,x2,...,xn])T,w=([w1,w2,...,wn])T

比如说下图的分类问题,显然无论用什么样的直线都很难把圈圈和叉叉很好地分隔开来,但是用一个大圆圈却能很好地进行分隔。

这个大圆圈就是使用了非线性模型拟合的结果,以往线性模型中的分类超平面(这里是直线)变成了圆:−x12​−x22​+0.6=0。

可以看到,此时假设函数的特征不是线性模型的(x1,x2),而是变成了(x1^2,x2^2)。我们通过映射关系z=x2,就可以把特征变为(z1,z2)。此时就相当于把x域中的二次式转换为z域中的一次式,得到线性组合

我们把xn​→zn​这个转换过程称之为特征变换(Feature Transform)(这里是非线性变换)。通过特征的非线性变换,可以将非线性模型转换为另一个域中的线性模型来求解。具体过程如下:把原始x值通过映射关系转换成z值,数据由(xn​,yn)变为(zn​,yn);在z域中用线性算法对转换后的数据进行训练,得到最佳w值;训练好线性模型之后,再将z替换为x的映射关系。

需要注意的是:特征变换只是得到新特征的一种方式,可以和任何线性模型结合使用。将线性模型变为非线性模型,并不需要改变模型本身,只需要改变特征输入即可。比如原本线性模型有一个特征x1,其有两个输入值:

[[2]
[3]]

变换为二次模型(quadratic model)后,新的特征输入就变为:

[[4]
[9]]

上面的例子是将原始特征x转变为二次式x2,也可以将x转变为其他形式,例如:可以将特征x变为log(x),exp(x),x0.5,sin(x),cos(x),等等。

下面再来说一下结构化的变换方式:多项式变换(Polynomial Transformation)

如果原本的特征x是2维的,即有2个特征:(x1,x2),那么它的二次多项式为:(x1,x2,x1^2,x1x2,x2^2,1),一共有6项。

如果原本的特征x是d维的,即有d个特征:(x1,x2,…,xd),那么做一个完全的二次变换(其包含所有的二次项、一次项和常数项,此时得到非线性组合:C*d^1+C*d^2+1)后得到的特征维度是:d(d+3)​/2+1。

 

如果变换的阶数更高呢?推广上面的结论,假设阶数为Q,那么对于d维的特征x,将其变换为Q次多项式后,对应的z域的特征维度大约为:

由上图可以看到,将特征x进行多项式变换后,计算和储存新特征的时间复杂度和空间复杂度是O(Qd)---Q的d次方。随着Q和d的增大,计算量和储存量都会变得很大。这就是线性模型变为多项式非线性模型所要付出的代价。

另一个所要付出的代价则更严重,那就是模型复杂度会变高(假设空间的VC维近似等于特征的个数)。我们知道,模型复杂度越高,我们所需要的训练数据也就越多,否则将很容易发生过拟合现象。因此,应先从阶数低的变换开始做起,以防止过拟合问题的发生。

附注:如果特征输入值很小,那么应变换为勒让德多项式(Legendre polynomials)。

特征的非线性变换(Feature Non-linear Transformation)的更多相关文章

  1. 第三讲_图像特征与描述Image Feature Descriptor

    第三讲_图像特征与描述Image Feature Descriptor 概要 特征提取方法 直方图 对图片数据/特征分布的一种统计:对不同量进行直方图统计:可以表示灰度,颜色,梯度,边缘,形状,纹理, ...

  2. RBF神经网络——直接看公式,本质上就是非线性变换后的线性变化(RBF神经网络的思想是将低维空间非线性不可分问题转换成高维空间线性可分问题)

    Deeplearning Algorithms tutorial 谷歌的人工智能位于全球前列,在图像识别.语音识别.无人驾驶等技术上都已经落地.而百度实质意义上扛起了国内的人工智能的大旗,覆盖无人驾驶 ...

  3. 【线性代数】7-2:线性变化的矩阵(The Matrix of a Linear Transformation)

    title: [线性代数]7-2:线性变化的矩阵(The Matrix of a Linear Transformation) categories: Mathematic Linear Algebr ...

  4. 为什么我们喜欢用 sigmoid 这类 S 型非线性变换?

    本文整理自 @老师木 的一条图片新浪微博,从另一个角度给出为何采用 sigmoid 函数作非线性变换的解释. 为什么我们喜欢用 sigmoid 这类 S 型非线性变换?

  5. CNN卷积神经网络_深度残差网络 ResNet——解决神经网络过深反而引起误差增加的根本问题,Highway NetWork 则允许保留一定比例的原始输入 x。(这种思想在inception模型也有,例如卷积是concat并行,而不是串行)这样前面一层的信息,有一定比例可以不经过矩阵乘法和非线性变换,直接传输到下一层,仿佛一条信息高速公路,因此得名Highway Network

    from:https://blog.csdn.net/diamonjoy_zone/article/details/70904212 环境:Win8.1 TensorFlow1.0.1 软件:Anac ...

  6. 深度学习——无监督,自动编码器——尽管自动编码器与 PCA 很相似,but自动编码器既能表征线性变换,也能表征非线性变换;而 PCA 只能执行线性变换

    自动编码器是一种有三层的神经网络:输入层.隐藏层(编码层)和解码层.该网络的目的是重构其输入,使其隐藏层学习到该输入的良好表征. 自动编码器神经网络是一种无监督机器学习算法,其应用了反向传播,可将目标 ...

  7. 【线性代数】7-1:线性变换思想(The Idea of a Linear Transformation)

    title: [线性代数]7-1:线性变换思想(The Idea of a Linear Transformation) categories: Mathematic Linear Algebra k ...

  8. OpenCV计算机视觉学习(3)——图像灰度线性变换与非线性变换(对数变换,伽马变换)

    如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice 下面 ...

  9. 跟我学Python图像处理丨何为图像的灰度非线性变换

    摘要:本文主要讲解灰度线性变换,基础性知识希望对您有所帮助. 本文分享自华为云社区<[Python图像处理] 十六.图像的灰度非线性变换之对数变换.伽马变换>,作者:eastmount . ...

随机推荐

  1. 【leetcode-78 dfs+回溯】 子集

    子集 给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集). 说明:解集不能包含重复的子集. 示例: 输入: nums = [1,2,3] 输出: [ [3],   [1],   ...

  2. linux 释放系统内存命令

    1.sync 因为系统在操作的过程当中,会把你的操作到的文件资料先保存到buffer中去,因为怕你在操作的过程中因为断电等原因遗失数据,所以在你操作过程中会把文件资料先缓存.所以我们执行sync命令, ...

  3. 在linux系统下安装两个nginx以及启动、停止、重起

    如果没有安装过nginx请看:linux下nginx部署以及配置详解 1.第一个nginx已经安装完成后,现在安装第二个nginx 启动:sudo /usr/sbin/nginx3 重起:sudo / ...

  4. Java ClassLoader 学习理解

    /** * <html> * <body> * <P> Copyright 1994 JsonInternational</p> * <p> ...

  5. .Net Core WepApi-JWT认证

    JWT 介绍 JWT(Json Web Token)是一种开放标准,已Json对象的方式在各方之间安全地传输信息 JWT登陆状态不在服务器端进行存储,而是通过秘钥生成一个具有有效时间的Token返回给 ...

  6. 在Linux系统中创建SSH服务器别名

    如果你经常通过 SSH 访问许多不同的远程系统,这个技巧将为你节省一些时间.你可以通过 SSH 为频繁访问的系统创建 SSH 别名,这样你就不必记住所有不同的用户名.主机名.SSH 端口号和 IP 地 ...

  7. css3 text-fill-color属性

    text-fill-color是什么意思呢?单单从字面上来看就是“文本填充颜色”,不过它实际也是设置对象中文字的填充颜色,和color的效果很相似.如果同时设置text-fill-color和colo ...

  8. JavaScript中setInterval函数应用常见问题之一(第一个参数不加引号与加引号的区别)

    学过JavaScript 脚本语言的都应该接触过setInterval 函数.如何使用我想大家都知道,但是有时候对于刚刚接触JavaScript的朋友来讲,还是会在使用的时候碰到这样或那样的问题而感到 ...

  9. JS中的七大数据类型

    js中有7种数据类型,包括五种基本数据类型(Number,String,Boolean,Undefined,Null),和一种复杂数据类型(Object)以及es6语法新增的Symbol数据类型 es ...

  10. 英语wacche腕表

    手表 (戴在手腕上的计时仪器) 手表,或称为腕表,是指戴在手腕上,用以计时/显示时间的仪器,手表在英语里watch源自中世纪wacche这一词汇. 手表通常是利用皮革.橡胶.尼龙布.不锈钢等材料,制成 ...