线性回归

  • 简单的线性回归
  • 概述
  • 一元线性回归
  • 多元线性回归
  • 损失函数
  • 平方损失函数
  • 绝对损失函数
  • 对数损失函数
  • 0-1损失函数
  • 方程解
  • 评估性能指标(来源:[头歌](https://www.educoder.net/))


简单的线性回归

概述

在生活中,我们常常能碰到这么一种情况,一个变量会跟着另一个变量的变化而变化,如圆的面积与半径的关系,当圆的半径确定了,那么面积也就确定了。还有一种情况就是,两个变量之间虽然存在某种关系,但又会因为某些因素而影响着。例如:人的高考成绩=人每分钟的可以拿到的分数*时长+临场发挥程度,但是每个人的临场发挥程度是不一样的,因此最后的高考成绩都是不一样的。只能说每个人的高考成绩和每分钟可以拿到的分数都存在这么一种近似的线性关系,这就是简单的线性回归

abap 线性回归的代码 线性回归方程ab怎么读_abap 线性回归的代码


简单的线性回归模型如下:

y=wx+b

其中x表示特征值,w表示权重,b表示偏置,y表示标签(如:最后的高考成绩)

一元线性回归

先来说说一元线性回归吧。
① 自变量:预测或解释因变量的一个或多个变量,用x表示;
② 因变量:被预测或被解释的变量,用y表示;
③ 可用一个方程来表示两个变量之间的线性关系;
④ 秒速因变量y如何依赖于自变量和误差项(反映除了x,y之间的线性关系之外的随机因素对y的影响)模型为

y=w0+w1*x+e
y为因变量或者被解释变量,x自变量或解释变量,w0截距,w1斜率,e误差项

会发现最主要的线性回归模型是为了解决参数,求出参数便可得到预测模型——使用最小二乘法求解。

多元线性回归

一个因变量和几个自变量有依存关系的情况

y=w0+w1x1+w2x2+w3x3+…wnxn

为了便于计算,我们在第一项添加一个全为1的x0列,这样w0乘以1还是w0,结果不会改变。这时可以列为:

Y=theta·X
其中theta=(w0,w1,w2…wn),X=(x0,x1,x2…xn)

而我们的目的就是找出能够正确预测的多元线性回归模型,即找出正确的参数w。那么如何寻找呢?通常在监督学习里面都会使用这么一个套路,构造一个损失函数用来衡量真实值与预测值之间的差异,然后将问题转化为最优化损失函数

损失函数

机器学习中一共有4中损失函数的计算方法

平方损失函数

预测值与真实值的差的平方。预测误差越大,损失越大。

abap 线性回归的代码 线性回归方程ab怎么读_机器学习_02

绝对损失函数

预测值与真实值的差的绝对值

abap 线性回归的代码 线性回归方程ab怎么读_python_03

对数损失函数

对于预测值是概率的情况,取对数损失。因为概率范围[0, 1] 所以对数值是(-∞, 0) ,为了让损失大于0 所以取对数的负值。

abap 线性回归的代码 线性回归方程ab怎么读_python_04

0-1损失函数

二类分类任务中,预测值与真实值不同,就是预测错误,则损失是1;预测值与真实值相等,就是预测正确,损失是 0,就是没有损失。

既然损失函数是用来衡量真实值与预测值之间的差异那么很多人自然而然的想到了用所有真实值与预测值的差的绝对值来表示损失函数。不过带绝对值的函数不容易求导,所以采用MSE(均方误差)作为损失函数,公式如下:

abap 线性回归的代码 线性回归方程ab怎么读_损失函数_05


其中p表示预测值,y表示真实值,m为样本总个数,i表示第i个样本。最后,我们再使用正规方程解来求得我们所需要的参数。

方程解

对线性回归模型,假设训练集中m个训练样本,每个训练样本中有n个特征,可以使用矩阵的表示方法,预测函数可以写为:

y=theta·X

参数最优解为:

abap 线性回归的代码 线性回归方程ab怎么读_损失函数_06


这个就是正规方程解,我们可以通过最优方程解直接求得我们所需要的参数。

评估性能指标

大家知道已经,机器学习通常都是将训练集上的数据对模型进行训练,然后再将测试集上的数据给训练好的模型进行预测,最后根据模型性能的好坏选择模型,对于分类问题,大家很容易想到,可以使用正确率来评估模型的性能,那么回归问题可以使用哪些指标用来评估呢?
MSE
MSE (Mean Squared Error)叫做均方误差,公式如下:

abap 线性回归的代码 线性回归方程ab怎么读_python_07


其中yi 表示第i个样本的真实标签,pi 表示模型对第i个样本的预测标签。线性回归的目的就是让损失函数最小。那么模型训练出来了,我们在测试集上用损失函数来评估模型就行了。RMSE

RMSE(Root Mean Squard Error)均方根误差,公式如下:

abap 线性回归的代码 线性回归方程ab怎么读_损失函数_08

RMSE其实就是MSE开个根号。有什么意义呢?其实实质是一样的。只不过用于数据更好的描述。
例如:要做房价预测,每平方是万元,我们预测结果也是万元。那么差值的平方单位应该是千万级别的。那我们不太好描述自己做的模型效果。怎么说呢?我们的模型误差是多少千万?于是干脆就开个根号就好了。我们误差的结果就跟我们数据是一个级别的了,在描述模型的时候就说,我们模型的误差是多少万元。

MAE
MAE(平均绝对误差),公式如下:

abap 线性回归的代码 线性回归方程ab怎么读_python_09

MAE虽然不作为损失函数,确是一个非常直观的评估指标,它表示每个样本的预测标签值与真实标签值的L1距离。

R-Squared

上面的几种衡量标准针对不同的模型会有不同的值。比如说预测房价 那么误差单位就是万元。数子可能是3,4,5之类的。那么预测身高就可能是0.1,0.6之类的。没有什么可读性,到底多少才算好呢?不知道,那要根据模型的应用场景来。 看看分类算法的衡量标准就是正确率,而正确率又在0~1之间,最高百分之百。最低0。如果是负数,则考虑非线性相关。很直观,而且不同模型一样的。那么线性回归有没有这样的衡量标准呢?R-Squared就是这么一个指标,公式如下:

abap 线性回归的代码 线性回归方程ab怎么读_损失函数_10


其实分子表示的是模型预测时产生的误差,分母表示的是对任意样本都预测为所有标签均值时产生的误差,由此可知:

leq1,当我们的模型不犯任何错误时,取最大值1;

当我们的模型性能跟基模型性能相同时,取0;

如果为负数,则说明我们训练出来的模型还不如基准模型,此时,很有可能我们的数据不存在任何线性关系。

实例:

abap 线性回归的代码 线性回归方程ab怎么读_abap 线性回归的代码_11


abap 线性回归的代码 线性回归方程ab怎么读_损失函数_12


abap 线性回归的代码 线性回归方程ab怎么读_线性回归_13


abap 线性回归的代码 线性回归方程ab怎么读_机器学习_14


利用机器学习中的方法来得出权重项和偏置项

abap 线性回归的代码 线性回归方程ab怎么读_python_15


(下面文章将讲解如何将参数进行优化,以及对数据进行处理)