当前位置: 首页 > news >正文

Scikit-Learn线性回归(一)

Scikit-Learn线性回归一

    • 1、线性回归概述
      • 1.1、回归
      • 1.2、线性
      • 1.3、线性回归
      • 1.4、线性回归的优缺点
      • 1.5、线性回归与逻辑回归
    • 2、线性回归的原理
      • 2.1、线性回归的定义与原理
      • 2.2、线性回归的损失函数
    • 3、Scikit-Learn线性回归
      • 3.1、Scikit-Learn库概述
      • 3.2、Scikit-Learn线性回归API
      • 3.3、Scikit-Learn线性回归初体验
      • 3.4、线性回归案例(波士顿房价预测)
    • 4、模型评估指标
    • 5、附录



1、线性回归概述


线性回归(Linear Regression)是很基础的机器学习算法。线性回归在机器学习知识结构中的位置如下:

在这里插入图片描述

1.1、回归


回归(Regression)是一种应用广泛的预测建模技术,这种技术的核心在于预测的结果是连续型变量

回归是监督学习中的一个重要问题,用于预测输入变量(自变量)和输出变量(因变量)之间的关系,特别是当输入变量的值发生变化时,输出变量的值随之发生的变化,回归模型正是表示从输入变量到输出变量之间映射的函数

其中,自变量表示主动操作的变量,可以看做因变量的原因。因变量因为自变量的变化而变化,可以看做自变量的结果

回归问题的学习等价于函数拟合:选择一条函数曲线,使其很好地拟合已知数据且很好地预测未知数据

回归的目的是为了预测,比如预测明天的天气温度,预测股票的走势…

回归之所以能预测是因为他通过历史数据,摸透了“套路”,然后通过这个套路来预测未来的结果

在这里插入图片描述

1.2、线性


“越…,越…”,符合这种说法的就可能是线性个关系,例如,房子越大,价格就越高

但是并非所有“越…,越…”都是线性的,例如,“充电越久,电量越高”,它就类似下面的非线性曲线:

在这里插入图片描述

线性关系不仅仅只能存在2个变量(二维平面)。3个变量时(三维空间),线性关系就是一个平面,4个变量时(四维空间),线性关系就是一个体。以此类推…

在这里插入图片描述

1.3、线性回归


线性回归本身是统计学里的概念,现在经常被用在机器学习中

在统计学中,线性回归(Linear Regression)是利用称为线性回归方程的最小平方和函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析,这种函数是一个或多个被称为回归系数的模型参数的线性组合 。只有一个自变量时称为简单回归,大于一个自变量时称为多元回归

如果2个或者多个变量之间存在“线性关系”,那么我们就可以通过历史数据,摸清变量之间的“套路”,建立一个有效的模型,来预测未来的变量结果

在这里插入图片描述

1.4、线性回归的优缺点


优点:

  • 建模速度快,不需要很复杂的计算,在数据量大的情况下依然运行速度很快
  • 可以根据系数给出每个变量的理解和解释

缺点:

  • 不能很好地拟合非线性数据。所以需要先判断变量之间是否是线性关系

为什么在深度学习大杀四方的今天还使用线性回归呢?

一方面,线性回归所能够模拟的关系其实远不止线性关系。线性回归中的“线性”指的是系数的线性,而通过对特征的非线性变换,以及广义线性模型的推广,输出和特征之间的函数关系可以是高度非线性的。另一方面,也是更为重要的一点,线性模型的易解释性使得它在物理学、经济学、商学等领域中占据了难以取代的地位

1.5、线性回归与逻辑回归


线性回归和逻辑回归是2种不同的经典算法。经常被拿来做比较,下面整理了一些两者的区别:

比较项解决问题类型变量类型线性关系表达变量关系
线性回归回归连续符合线性关系直观表达变量关系
逻辑回归分类离散可以不符合线性关系无法直观表达变量关系
  • 线性回归只能用于回归问题,逻辑回归虽然名字叫回归,但是更多用于分类问题(关于回归与分类的区别参考文章:传送门)
  • 线性回归要求因变量是连续性数值变量,而逻辑回归要求因变量是离散的变量
  • 线性回归要求自变量和因变量呈线性关系,而逻辑回归不要求自变量和因变量呈线性关系
  • 线性回归可以直观的表达自变量和因变量之间的关系,逻辑回归则无法表达变量之间的关系

2、线性回归的原理

2.1、线性回归的定义与原理


线性回归的定义及原理推导详见文章:传送门

2.2、线性回归的损失函数


损失函数(Loss Function),也称成本函数(Cost Function),描述的是模型的预测值与真实值的差异,并将这种差异映射为非负实数以表示模型可能带来的“风险”或“损失”。机器学习中将损失函数作为模型拟合好坏的评判准则,并通过最小化损失函数求解和评估模型

在多元线性回归中,其损失函数定义如下:
L = ∑ i = 1 m ( y i − f ( x i ) ) 2 L=\sum_{i=1}^m(y_i-f(x_i))^2 L=i=1m(yif(xi))2

其中 y i y_i yi是样本 i i i对应的真实值, y = f ( x i ) y=f(x_i) y=f(xi)表示样本 i i i的预测值

线性回归的损失函数是最小二乘法(Ordinary Least Squares,OLS),具体原理及推导详见文章:传送门

该损失函数表示向量 y i − y y_i-y

相关文章:

  • 数据挖掘 聚类度量
  • macos下转换.dmg文件为 .iso .cdr文件的简单方法
  • 虚拟化技术和云计算的关系
  • CSS之元素转换
  • 【Flink-Kafka-To-Mysql】使用 Flink 实现 Kafka 数据写入 Mysql(根据对应操作类型进行增、删、改操作)
  • Java关键字(1)
  • MathType 运行时错误‘53’:文件未找到:MathPage.WLL_文件未找到mathpage.wll
  • 【Matlab】CNN卷积神经网络时序预测算法
  • 八皇后问题(C语言)
  • Tg5032smn:高稳定性105℃高温
  • 【数据结构】六、树和二叉树
  • JavaScript原型,原型链
  • Android studio 使用greenDao根据实体类生成dao类
  • SpringMVC源码解析——DispatcherServlet初始化
  • 深入理解WPF MVVM:探索数据绑定与命令的优雅之道
  • HTTP 简介
  • JavaScript类型识别
  • Java的Interrupt与线程中断
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • Solarized Scheme
  • SpringCloud集成分布式事务LCN (一)
  • 包装类对象
  • 关于字符编码你应该知道的事情
  • 基于组件的设计工作流与界面抽象
  • 写代码的正确姿势
  • - 转 Ext2.0 form使用实例
  • kubernetes资源对象--ingress
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • ​第20课 在Android Native开发中加入新的C++类
  • (02)Cartographer源码无死角解析-(03) 新数据运行与地图保存、加载地图启动仅定位模式
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (Python第六天)文件处理
  • (Redis使用系列) Springboot 实现Redis消息的订阅与分布 四
  • (安卓)跳转应用市场APP详情页的方式
  • (一)u-boot-nand.bin的下载
  • (转)iOS字体
  • (转)Mysql的优化设置
  • .bat批处理(六):替换字符串中匹配的子串
  • .java 9 找不到符号_java找不到符号
  • .net core webapi 大文件上传到wwwroot文件夹
  • .net framwork4.6操作MySQL报错Character set ‘utf8mb3‘ is not supported 解决方法
  • .NET6使用MiniExcel根据数据源横向导出头部标题及数据
  • .so文件(linux系统)
  • @ConditionalOnProperty注解使用说明
  • @EnableAsync和@Async开始异步任务支持
  • [ web基础篇 ] Burp Suite 爆破 Basic 认证密码
  • [android] 请求码和结果码的作用
  • [corCTF 2022] CoRJail: From Null Byte Overflow To Docker Escape
  • [git]git命令如何取消先前的配置
  • [HackMyVM]靶场 Quick3
  • [Hive] 常见函数
  • [LeetCode]-225. 用队列实现栈
  • [Machine Learning] 领域适应和迁移学习
  • [MAT]使用MAT比較多个heap dump文件