机器学习-线性回归LinearRegression
概述
今天要说一下机器学习中大多数书籍第一个讲的(有的可能是KNN)模型-线性回归。说起线性回归,首先要介绍一下机器学习中的两个常见的问题:回归任务和分类任务。那什么是回归任务和分类任务呢?简单的来说,在监督学习中(也就是有标签的数据中),标签值为连续值时是回归任务,标志值是离散值时是分类任务。而线性回归模型就是处理回归任务的最基础的模型。
形式
在只有一个变量的情况下,线性回归可以用方程:y = ax+b 表示。而如果有多个变量,也就是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回归也叫岭回归。
以下是个人所写的线性回归代码:
各个回归模型参数与结果对比以及与真实值的图像
待更新。
详细代码可参考GitHub:代码链接
转载于:https://www.cnblogs.com/hiyoung/p/9763599.html
机器学习-线性回归LinearRegression相关推荐
- 机器学习--线性回归(LinearRegression)
机器学习–线性回归 基本概念 LinearRegression 拟合一个带有系数 w=(w1,...,wp)w = (w_1, ..., w_p)w=(w1,...,wp) 的线性模型,使得数据集 ...
- 机器学习 线性回归算法_探索机器学习算法简单线性回归
机器学习 线性回归算法 As we dive into the world of Machine Learning and Data Science, one of the easiest and f ...
- 机器学习——线性回归、房价预测案例【正规方案与梯度下降】
# coding:utf-8 # 1.获取数据集 #2.数据基本处理 #2.1.数据划分 #3.特征工程--标准化 #4.机器学习(线性回归) #5.模型评估 from sklearn.dataset ...
- 多元线性回归LinearRegression
目录 1.1多元线性回归的基本原理 1.2 最小二乘法求解多元线性回归的参数 1.3 linear_model.LinearRegression 1.4 案例 1.5 多元线性回归的模型评估指标 1. ...
- 机器学习线性回归算法实验报告_机器学习之简单线性回归
为了利用机器学习进行简单的线性回归,先理解机器学习和线性回归的概念,然后通过案例进行机器学习.本文主要目录如下: 一.机器学习的概念 二.线性回归的概念 三.机器学习线性回归模型 (一)导入数据集 ( ...
- 机器学习-线性回归实验
机器学习线性回归 用scikit-learn和pandas学习线性回归 1. 获取数据,定义问题 2. 整理数据 3. 准备数据 4. 训练数据 5. 模型评价 尝试用不同的线性模型进行训练 交叉验证 ...
- 机器学习线性回归学习心得_机器学习中的线性回归
机器学习线性回归学习心得 机器学习中的线性回归 (Linear Regression in Machine Learning) There are two types of supervised ma ...
- 机器学习线性回归实践,广告投放收益预测,手写梯度下降
机器学习线性回归模型,广告投放与收益预测,梯度下降法python实现 数据集介绍 代码 数据导入 特征缩放 绘制三个不同地方广告投入与收益的散点图 数据处理 添加偏置列 定义代价函数 梯度下降 初始化 ...
- 前端机器学习——线性回归
前端机器学习--线性回归 前端机器学习--逻辑回归传送门 哈,现在我们再跳回机器学习的入门模型--线性回归,上一波我们使用逻辑回归完成了一个用户喜爱颜色预测的功能,那么我们这次就用线性回归完成一个将好 ...
最新文章
- Python里面None True False之间的区别
- 隐藏Apache Nginx PHP版本号
- Java for LeetCode 206 Reverse Linked List
- vba 当前文件名_VBA实践+批量合并pdf
- Syslog Cisco Incident
- ESP8266固件烧录
- [Reference][Castle AR] 1. Starter
- 用python制作几款简单又好玩的小游戏,找回童年的记忆
- Linux上机考试试题
- 数字图像处理课程设计
- FLV格式解析及其解析器的实现
- 关于plsqldeveloper打开报错解决方法MSVCR71.dll is missing from your compute
- 应用程序无法正常启动0xc000007b问题解决
- Groovy~Groovy运算符
- 论文阅读:基于多模态词向量的语句距离计算方法
- 宋体查询1.mysql数据库复习加强 2.mysql事务触发器 3.mysql 索引外键加强 4.zendstudio 的安装使用 5.svn版本控制器的使用-java教程...
- 爬虫_app 1.1 导学
- 设计模式04——Factory Method模式
- 计算机主机版最重要的部件,电脑配件中到底哪个最为重要
- apicloud——微信第三方登录、apple登录