[机器学习与scikit-learn-31]:算法-回归-线性模拟拟合拟合非线性数据-概述

2023-11-18

作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客

本文网址:https://blog.csdn.net/HiWangWenBing/article/details/123555129


目录

第1章 什么是线性与非线性关系

1.1 描述对象

1.2 什么是线性与非线性关系

第2章 数据(分布)的线性与非线性

2.1 什么是线性与非线性数据(拟合、模拟回归)

2.2 什么是线性与非线性可分数据(分类、逻辑回归)

2.3 分类问题的拟合表达

第3章 模型的线性与非线性

3.1 线性模型

3.2 特定的非线性模型

3.3 通用的非线性模型:多项式非线性模型(PolynomialFeatures)

第4章 scikit-learn中选用特定模型拟合特定分布的数据

4.1 sklearn线性回归大家族

4.2 线性模型拟合线性分布数据

4.3 非线性模型拟合非线性数据

4.4 非线性模型拟合线性数据

4.5 线性模型拟合非线性数据

4.6 既是线性,也是非线性的模型

第5章 模型选择策略大汇总


第1章 什么是线性与非线性关系

1.1 描述对象

(1)线性

”线性“这个词用于描述不同事物时有着不同的含义。

线性分为数据的线性分布与模型的线性。

通常情况下,用线性模型去拟合线性分布的数据。

(2)非线性

线性分为数据的非线性分布与非线性模型。

通常情况下,用非线性模型去拟合非线性分布的数据。

也可以用非线性模型去拟合线性分布的数据。

可以通过通过一些特殊的数据预处理,把非线性数据转换线性分布,然后再用线性模型去拟合。

1.2 什么是线性与非线性关系

我们最常使用的线性是指“变量之间的线性关系(linearrelationship)”,它表示两个变量之间的关系可以展示为一条直线,即可以使用方程y=kx +b来进行拟合。

要探索两个变量之间的关系是否是线性的,最简单的方式就是绘制散点图,如果散点图能够相对均匀地分布在一条直线的两端,则说明这两个变量之间的关系是线性的。

 如下图所示:

第2章 数据(分布)的线性与非线性

数据的线性与非线性,与应用场景密切相关。对于拟合回归与分类,数据的线性与非线性的定义完全不同。

2.1 什么是线性与非线性数据(拟合、模拟回归)

从线性关系这个概念出发,我们有了一种说法叫做“线性数据”或线性分布的数据。

通常来说,一组数据由多个特征标签组成,特征为自变量,标签为因变量

当这些特征分别与标签存在线性关系的时候,我们就说这一组数据是“线性数据”

当特征矩阵中任意一个特征与标签之间的关系需要使用三角函数,指数函数等函数来定义,则我们就说这种数据叫做“非线性数据”。

在上述图形中,特征值X是X轴上连续的数值点,标签值Y是Y轴上连续的数值点。

对于回归问题,数据分布若能为一条直线,则是线性的,否则是非线性。

2.2 什么是线性与非线性可分数据(分类、逻辑回归)

在上述图形中,特征值(X1, X2) 是平面上的连续点,标签值Y是点的颜色,是离散的。

可以看得出,这些数据都不能由一条直线来进行拟合,他们也没有均匀分布在某一条线的周围

那我们怎么判断,这些数据是线性数据还是非线性数据呢?

在这里就要注意了,当我们在回归中绘制图像时,绘制的是特征与标签的关系图,横坐标是特征,纵坐标是标签,我们的标签是连续型的,所以我们可以通过是否能够使用一条直线来拟合图像判
断数据究竟属于线性还是非线性。

然而在分类中,我们绘制的是数据分布图,横坐标是其中一个特征,纵坐标是另一个特征,标签则是数据点的颜色(类别)

因此在分类数据中,我们使用“是否线性可分”(linearly separable)这个概念来划分分类数据集。当分类数据的分布上可以使用一条直线来将两类数据分开时,我们就说数据是线性可分的。反之,数据不是线性可分的。

总之:

对于分类问题,数据分布若能使用一条直线来划分或分割或隔离类别,则是线性可分的,否则数据则是线性不可分的。

2.3 分类问题的拟合表达

分类的类别,通过用离散的数值点表示,如二分类用0或1,或-1,1表示。

多分类用0,1,2,3表示。

在这种情况下,如果用拟合回归的方式表达数据分布情况,就是如下的图形:

在上述图形中,特征值(X1) 是X轴上连续的数值,标签值Y是Y轴上离散的数值。

第3章 模型的线性与非线性

3.1 线性模型

(1)数学表达式

特点:其自变量Xi的个数多个,每个Xi都是一次项。

(2)线性模型的线性拟合作用

上述的数学表达式,也称为线性回归的方程。

根据线性回归的方程原理,我们可以拟合出一组Wi的参数 ,在这一组固定的参数下,我们可以建立一个模型,而这个模型就被我们称之为是线性回归模型。所以建模的过程就是寻找参数的过程。

此时此刻我们建立的线性回归模型:是一个用于拟合线性数据线性模型

(3)线性模型对非线性数据的直接拟合效果

那线性回归在非线性数据上的表现如何呢?

 橘色为拟合模型,蓝色为样本数据。

从图中可以看出,通过线性模型去拟合非线性数据的效果是不好的。 

3.2 特定的非线性模型

通常来说,使用如下方程的线性叠加出来的方程都非线性模型。

不同的数据分布,可以选择特定的与之对应的非线性模型与之对应。

3.3 通用的非线性模型:多项式非线性模型(PolynomialFeatures)

有没有一种通用的非线性模型,可以拟合多种情形下的非线性数据分布,同时也能拟合线性数据分布呢?

答案是:有的,线性多项式模型。

(1)多项式模型的数据表达式

(2)多项式模型的理论基础

我们说,多项式模型,可以拟合多种情形下的非线性分布的数据,也可以拟合线性数据,这里面的理论基础是:泰勒级数展开公式。

用大白话说:

任何非线性函数,都可以使用多项式来进行逼近,这就体现了多项式神奇的拟合能力,只要多项式的次数足够高,几乎可以拟合全部的非线性函数。

第4章 scikit-learn中选用特定模型拟合特定分布的数据

4.1 sklearn线性回归大家族

klearn中的线性模型模块在linear_model模块中,linear_model包含了多种多样的类和函数。

包括:逻辑回归、普通线性回归,多项式回归,岭回归,LASSO,以及弹性网。

 

 

 

 

 

 

4.2 线性模型拟合线性分布数据

这种情况比较简单,可以选择线性模型:

  • 线性回归模型:LinearRegression
  • 决策树回归模型:DecisionTreeRegressor

4.3 非线性模型拟合非线性数据

选用特定的非线性模型:如决策树、随机森林对非线性数据进行拟合。

4.4 非线性模型拟合线性数据

非线性模型能够拟合或处理线性数据的例子非常多:

(1)线性可分数据的分类

如非线性模型:决策树,随机森林等算法在分类中处理线性可分的数据的效果。

无一例外的,这些非线性模型们几乎都可以在线性可分数据上有不逊于线性模型的表现。

(2)线性拟合

同样的,如果使用随机森林(非线性模型)来拟合一条直线,那随机森林毫无疑问会过拟合,因为线性数据对于非线性模型来说太过简单,很容易就把训练集上的 训练得很高,MSE训练的很低。

4.5 线性模型拟合非线性数据

(1)线性模型直接拟合非线性数据:效果差

线性模型若用来拟合非线性数据或者对非线性可分的数据进行分类,那通常都会表现糟糕。

 通常如果我们已经发现数据属于非线性数据,或者数据非线性可分的数据,则通常我们不会选择使用线性模型来进行建模,除非我们需要对数据进行特殊的处理。

在没有其他算法或者预处理帮忙的情况下,线性模型在非线性数据上的表现时很糟糕的。

从上面的图中,我们可以观察出一个特性:

  • 线性模型们的决策边界都是一条条平行直线
  • 而非线性模型们的决策边界是交互的直线(格子),曲线,环形等等。

对于分类模型来说,这是我们判断模型是线性还是非线性的重要评判因素:

  • 线性模型的决策边界是平行的直线,
  • 非线性模型的决策边界是曲线或者交叉的直线。

模型上如果自变量上的最高次方为1,则模型是线性的,但这种方式只适用于回归问题。

分类模型中,我们很少讨论模型是否线性,因为我们很少使用线性模型来执行分类任务(逻辑回归是一个特例)。但从上面我们总结出的结果来看,我们可以认为对分类问题而言,如果一个分类模型的决策边界上自变量的最高次方为1,则我们称这个模型是线性模型。

(2)数据预处理:分箱数据预处理

改善线性模型在非线性数据上的效果的方法之一时进行分箱,并且从下图来看分箱的效果不是一般的好,甚至高过一些非线性模型。

分箱让线性回归在非线性数据上表现提升的核心方法之一是对数据进行分箱,也就是离散化。

至于,如何分箱,后续章节有专门的探讨。

(3)数据预处理:样本数据的升维度

除了分箱之外,另一种更普遍的用于解决”线性回归只能处理线性数据“问题的手段,就是使用多项式回归对线性回归进行改进。

这样的手法是机器学习研究者们从支持向量机中获得的:支持向量机通过升维可以将非线性可分数据转化为线性可分,然后使用核函数在低维空间中进行计算,这是一种“高维呈现,低维解释”的思维。

基于上述思想,也可以通过升维,把低维度的非线性分布的数据转换成高纬度的线性可分的数据。

sklearn的多项式预处理就具备这样的能力:

lass sklearn.preprocessing.PolynomialFeatures (degree=2, interaction_only=False, include_bias=True)

4.6 既是线性,也是非线性的模型

对于有一些模型来说,他们既可以处理线性模型又可以处理非线性模型,比如说强大的支持向量机。支持向量机的原理,后续会有专门的文章探讨。

支持向量机的前身是感知机模型,朴实的感知机模型是实打实的线性模型(其决策边界是直线),在线性可分数据上表现优秀,但在非线性可分的数据上基本属于无法使用状态。

支持向量机就不一样了。支持向量机本身也是处理线性可分数据的,但却可以通过对数据进行升维(将数据 转移到高维空间 中),将非线性可分数据变成高维空间中的线性可分数据,然后使用相应的“核函数”来求解。当我们选用线性核函数"linear"的时候,数据没有进行变换,支持向量机中就是线性模型,此时它的决策边界是直线。而当我们选用非线性核函数比如高斯径向基核函数的时候,数据进行了升维变化,此时支持向量机就是非线性模型,此时它的决策边界在二维空间中是曲线。所以这个模型可以在线性和非线性之间自由切换,一切取决于它的核函数。

第5章 模型选择策略大汇总

模型在线性和非线性数据集上的表现为我们选择模型提供了一个思路和步骤:

(1)先尝试线性模型

当我们获取数据时,我们往往希望使用线性模型来对数据进行最初的拟合(线性回归用于回归,逻辑回归用于分类),

(2)确定线性模型

如果线性模型表现良好,则说明数据本身很可能是线性的或者线性可分的

(3)更换非线性模型

如果线性模型表现糟糕,那毫无疑问我们会投入决策树,随机森林这些模型的怀抱,就不必浪费时间在线性模型上了。

不过这并不代表着我们就完全不能使用线性模型来处理非线性数据了。

(4)结合数据预处理,使用线性模型,处理非线性数据

在现实中,线性模型有着不可替代的优势:计算速度异常快速。

所以也还是存在着我们无论如何也希望使用线性回归的情况。

因此,我们有多种手段来处理线性回归无法拟合非线性问题的问题:

  • 分箱 --后续单独详细介绍
  • 使用多项式对样本特征进行升维--后续单独详细介绍

(5)根据算法树的推荐选择模型

[机器学习与scikit-learn-3]:scikit-learn模型地图与模型选择_文火冰糖的硅基工坊的博客-CSDN博客


作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客

本文网址:https://blog.csdn.net/HiWangWenBing/article/details/123555129

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[机器学习与scikit-learn-31]:算法-回归-线性模拟拟合拟合非线性数据-概述 的相关文章

随机推荐

  • QT QLabel样式设置

    需要设置error的样式 设置样式 color rgb 255 0 0 font size 12pt font family Microsoft YaHei 字体 颜色也可通过富文本设置在程序中设置 emit LoginError QStr
  • 一文带你了解如何编写自动化测试用例

    自动化测试脚本 什么是自动化测试 自动化测试是验证和验证软件是否满足所有用户需求 并使用自动化工具按预期运行 它检查在产品开发阶段期间和之后出现的错误 问题和其他类型的缺陷 这种类型的软件测试运行在由测试工具处理的编程脚本上 有多种测试工具
  • 关于rider引入使用nuget无法加载包的解决方式

    关于rider引入使用nuget无法加载包的解决方式 这个问题已经是困扰我三天了 因为C 使用rider开发的人相对较少 也可能是我自身遇到这个问题比较特殊 终于找到了nuget无法引入包的解决方案 首先看图 我在Nuget下面查找Nuni
  • 蓝桥杯基础练习VIP——矩阵乘法——快速幂

    题目https www dotcpp com oj problem1472 html 1 普通做法 循环嵌套 n m list map int input split mat for i in range n row list map in
  • uniapp 仿网易云音乐播放器 微信小程序

    效果视频 uniapp 仿照网易云播放器功能 效果截图 上代码
  • pxe无盘服务器教程,[教程]Synology+PXE挂载iSCSI网络无盘启动Win7(08.04更新)

    本帖最后由 shuaiking 于 2020 5 16 09 32 编辑 前言 之前发了一篇关于 synology部署无盘win7的帖子https www chiphell com thread 823492 1 1 html 教程本想找个
  • Android Studio 从安装到第一个Android 应用Demo

    安装Android Studio 安装需要 上网 我这挺顺利的 就是在官网下载安装包 一路 Next 大概连下载总共半个小时 第一个应用 参考官方教程 https developer android com codelabs basic a
  • 智能指针的deleter机制

    一 介绍 智能指针的deleter机制是指 当智能指针的引用计数降为0时 智能指针会自动调用一个指定的析构函数 deleter 来释放所管理的内存 这个析构函数通常是一个函数对象 可以是一个函数指针 一个lambda表达式或者一个重载了函数
  • 基于模型的六轴机器人阻抗力控制算法(matlab simscape,机器人模型可换)

    基于模型的六轴机器人阻抗力控制算法 matlab simscape 机器人模型可换 视频中红色为期望轨迹 黑色为实际轨迹 工程可一键运行 可学到机器人阻抗力控制算法以及通过m文件设置simulink参数及调用simulink的方法 ID 4
  • FutureWarning: Criterion ‘mse‘ was deprecated in v1.0 and will be removed in version 1.2.

    出现FutureWarning Criterion mse was deprecated in v1 0 and will be removed in version 1 2 Use criterion squared error whic
  • c++如何按照空格分割字符串

    我们经常会需要在txt文本或csv中提取字符串 例如 调用了一次readline 之后 我们得到了如下一行string id 1 name 345 size 728 632 value 3 1415926 我们想把这行字符串按照空格进行分割
  • 【TypeScript】断言

    目录 概念 用法 实例 总结 概念 TypeScript类型断言是一个编译时语法 用于告诉编译器用户比编译器更加确定变量的类型 进而解除编译错误 类型断言有点类似于其他语言的类型转换 但它没有运行时的影响 只是在编译阶段起作用 所以 即使通
  • 树莓派下opencv3.4.0的安装与错误处理

    1 opencv3 4 0的下载 1 可以在树莓派的终端界面通过wegt命令下载 但下载速度可能很慢 终端输入下列代码进行下载 cd home pi Downloads wget https github com Itseez opencv
  • 【ElementUI组件】视频上传+计算视频时长

    效果如下 实现步骤 1 首先先安装官网的操作步骤安装elementui 或者 不安装直接引入 安装指令 npm i element ui S 引入方式 2 以下是参考代码 HTML代码 div div
  • 内网端口转发及穿透-

    转 内网端口转发及穿透 最近尝试了一些内网端口的转发和内网穿透 现在一起总结一下 0x01 正向和反向代理 正向代理中 proxy和client同属一个LAN 对server透明 反向代理中 proxy和server同属一个LAN 对cli
  • 执行npm install 时报错 Host key verification failed

    问题 安装依赖的时候出现Host key verification failed问题 整理了一下解决流程 1 要在git设置一下身份的名字和邮箱 git config global user name yourname gt 用户名 git
  • Unity中自定义协程函数

    Unity中提供了协程的方法 在处理一些需要异步的函数时非常方便 尤其是在处理网络请求响应的时候 但是协程函数有些时候需要自定义 这就需要自己实现满足条件的协程函数了 好在Unity提供了这样的类来帮助我们实现相关的功能 通过继承Custo
  • Springboot2.0中webflux到底优秀在哪里

    Spring boot webflux中所说的反应堆式编程reactor到底优秀在哪里 小编的Springboot2 0的课程已经快全部写完了 总结来看 对于有基础的同学学习难度不是很大 一周内就能上手 但是在小编看来编程如果说只会用 而不
  • 记一次wwwscan目录扫描后获取敏感目录登录后台

    1 开启wwwscan工具 2 配置信息 目标域名不要带协议头 直接www xxx com或者192 168 67 xxx 3 点击 扫描 等待扫描之后会在wwwscan的同级目录下生成结果文件 4 打开第三个文件 5 点击访问 说明 tx
  • [机器学习与scikit-learn-31]:算法-回归-线性模拟拟合拟合非线性数据-概述

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 123555129 目录 第1章 什么是