概述

今天要说一下机器学习中大多数书籍第一个讲的(有的可能是KNN)模型-线性回归。说起线性回归,首先要介绍一下机器学习中的两个常见的问题:回归任务和分类任务。那什么是回归任务和分类任务呢?简单的来说,在监督学习中(也就是有标签的数据中),标签值为连续值时是回归任务,标志值是离散值时是分类任务。而线性回归模型就是处理回归任务的最基础的模型。

形式

在只有一个变量的情况下,线性回归可以用方程:y = ax+b 表示。而如果有多个变量,也就是n元线性回归的形式如下:

n元线性回归

在这里我们将截断b用θ0代替,同时数据集X也需要添加一列1用于与θ0相乘,表示+b。最后写成矩阵的形式就是θ的转置乘以x。其中如果数据集有n个特征,则θ就是n+1维的向量并非矩阵,其中包括截断b。

目的

线性回归的目的就是求解出合适的θ,在一元的情况下拟合出一条直线(多元情况下是平面或者曲面),可以近似的代表各个数据样本的标签值。所以最好的直线要距离各个样本点都很接近,而如何求出这条直线就是本篇文章重点要将的内容。

一元线性回归拟合数据

最小二乘法

求解线性回归模型的方法叫做最小二乘法,最小二乘法的核心就是保证所有数据偏差的平方和最小。它的具体形式是:

其中hθ(x^(i))代表每个样本通过我们模型的预测值,y^(i)代表每个样本标签的真实值,m为样本个数。因为模型预测值和真实值间存在误差e,可以写作:

根据中心极限定理,e^(i)是独立同分布的(IID),服从均值为0,方差为某定值σ的平方的正太分布。具体推导过程如下:

最小二乘法推导

求解最小二乘法:

我们要求得就是当θ取某个值时使J(θ)最小,求解最小二乘法的方法一般有两种方法:矩阵式和梯度下降法。

矩阵式求解:

当我们的数据集含有m个样本,每个样本有n个特征时,数据x可以写成m*(n+1)维的矩阵(+1是添加一列1,用于与截断b相乘),θ则为n+1维的列向量(+1是截断b),y为m维的列向量代表每m个样本结果的预测值。则矩阵式的推导如下所示:

因为X^tX为方阵,如果X^tX是可逆的,则参数θ得解析式可以写成:

如果X的特征数n不是很大,通常情况下X^tX是可以求逆的,但是如果n非常大,X^tX不可逆,则用梯度下降法求解参数θ。

梯度下降法(GD):

在一元函数中叫做求导,在多元函数中就叫做求梯度。梯度下降是一个最优化算法,通俗的来讲也就是沿着梯度下降的方向来求出一个函数的极小值。比如一元函数中,加速度减少的方向,总会找到一个点使速度达到最小。通常情况下,数据不可能完全符合我们的要求,所以很难用矩阵去求解,所以机器学习就应该用学习的方法,因此我们采用梯度下降,不断迭代,沿着梯度下降的方向来移动,求出极小值。梯度下降法包括批量梯度下降法和随机梯度下降法(SGD)以及二者的结合mini批量下降法(通常与SGD认为是同一种,常用于深度学习中)。

梯度下降法的一般过程如下:

1)初始化θ(随机)

2)求J(θ)对θ的偏导:

3)更新θ

其中α为学习率,调节学习率这个超参数也是建模中的一个重要内容。因为J(θ)是凸函数,所以GD求出的最优解是全局最优解。

批量梯度下降法是求出整个数据集的梯度,再去更新θ,所以每次迭代都是在求全局最优解。

而随机梯度下降法是求一个样本的梯度后就去跟新θ,所以每次迭代都是求局部最优解,但是总是朝着全局最优解前进,最后总会到达全局最优解。

其他线性回归模型:

在机器学习中,有时为了防止模型太复杂容易过拟合,通常会在模型上加入正则项,抑制模型复杂度,防止过拟合。在线性回归中有两种常用的正则,一个是L1正则,一个是L2正则,加入L1正则的称为Lasso回归,加入L2正则的成为Ridge回归也叫岭回归。

Lasso回归

岭回归

以下是个人所写的线性回归代码:

各个回归模型参数与结果对比以及与真实值的图像

待更新。

详细代码可参考GitHub:代码链接

转载于:https://www.cnblogs.com/hiyoung/p/9763599.html

机器学习-线性回归LinearRegression相关推荐

  1. 机器学习--线性回归(LinearRegression)

    机器学习–线性回归 基本概念 LinearRegression 拟合一个带有系数 w=(w1,...,wp)w = (w_1, ..., w_p)w=(w1​,...,wp​) 的线性模型,使得数据集 ...

  2. 机器学习 线性回归算法_探索机器学习算法简单线性回归

    机器学习 线性回归算法 As we dive into the world of Machine Learning and Data Science, one of the easiest and f ...

  3. 机器学习——线性回归、房价预测案例【正规方案与梯度下降】

    # coding:utf-8 # 1.获取数据集 #2.数据基本处理 #2.1.数据划分 #3.特征工程--标准化 #4.机器学习(线性回归) #5.模型评估 from sklearn.dataset ...

  4. 多元线性回归LinearRegression

    目录 1.1多元线性回归的基本原理 1.2 最小二乘法求解多元线性回归的参数 1.3 linear_model.LinearRegression 1.4 案例 1.5 多元线性回归的模型评估指标 1. ...

  5. 机器学习线性回归算法实验报告_机器学习之简单线性回归

    为了利用机器学习进行简单的线性回归,先理解机器学习和线性回归的概念,然后通过案例进行机器学习.本文主要目录如下: 一.机器学习的概念 二.线性回归的概念 三.机器学习线性回归模型 (一)导入数据集 ( ...

  6. 机器学习-线性回归实验

    机器学习线性回归 用scikit-learn和pandas学习线性回归 1. 获取数据,定义问题 2. 整理数据 3. 准备数据 4. 训练数据 5. 模型评价 尝试用不同的线性模型进行训练 交叉验证 ...

  7. 机器学习线性回归学习心得_机器学习中的线性回归

    机器学习线性回归学习心得 机器学习中的线性回归 (Linear Regression in Machine Learning) There are two types of supervised ma ...

  8. 机器学习线性回归实践,广告投放收益预测,手写梯度下降

    机器学习线性回归模型,广告投放与收益预测,梯度下降法python实现 数据集介绍 代码 数据导入 特征缩放 绘制三个不同地方广告投入与收益的散点图 数据处理 添加偏置列 定义代价函数 梯度下降 初始化 ...

  9. 前端机器学习——线性回归

    前端机器学习--线性回归 前端机器学习--逻辑回归传送门 哈,现在我们再跳回机器学习的入门模型--线性回归,上一波我们使用逻辑回归完成了一个用户喜爱颜色预测的功能,那么我们这次就用线性回归完成一个将好 ...

最新文章

  1. Python里面None True False之间的区别
  2. 隐藏Apache Nginx PHP版本号
  3. Java for LeetCode 206 Reverse Linked List
  4. vba 当前文件名_VBA实践+批量合并pdf
  5. Syslog Cisco Incident
  6. ESP8266固件烧录
  7. [Reference][Castle AR] 1. Starter
  8. 用python制作几款简单又好玩的小游戏,找回童年的记忆
  9. Linux上机考试试题
  10. 数字图像处理课程设计
  11. FLV格式解析及其解析器的实现
  12. 关于plsqldeveloper打开报错解决方法MSVCR71.dll is missing from your compute
  13. 应用程序无法正常启动0xc000007b问题解决
  14. Groovy~Groovy运算符
  15. 论文阅读:基于多模态词向量的语句距离计算方法
  16. 宋体查询1.mysql数据库复习加强 2.mysql事务触发器 3.mysql 索引外键加强 4.zendstudio 的安装使用 5.svn版本控制器的使用-java教程...
  17. 爬虫_app 1.1 导学
  18. 设计模式04——Factory Method模式
  19. 计算机主机版最重要的部件,电脑配件中到底哪个最为重要
  20. apicloud——微信第三方登录、apple登录

热门文章

  1. 每天一个linux命令(10):cat 命令
  2. TCP/IP基础概念及通信过程举例
  3. c# unity PlayerPrefs 游戏存档,直白点就是讲游戏数据本地保存下来
  4. 常用rsync命令操作梳理
  5. linux 安装输入法
  6. ios(iphone/ipad)开发笔记(1)
  7. SQL SERVER 2000写存储过程出现列名无效的解决方法
  8. 明朝是中国历史上最有骨气的王朝?【ZZ】
  9. #pragma pack(n) 的作用
  10. 如何检查当TextBox设置为多行时是不是超长了?