基础算法梳理:1-线性回归梳理

**

1、 机器学习基本概念

**
监督学习:
监督学习主要有分类和回归两种,给定的训练样本都是有标记的,通过有标记的训练样本得到一个最优模型。通过这个最优的模型,我们可以对没有标记的数据进行分类、预测等。

无监督学习
相对于监督学习,给定的数据都是没有标记的,通过算法得到数据间的相似性、关联性来判断数据是否属于一个类别,主要的无监督学习为聚类算法。常见的聚类算法有:https://blog.csdn.net/Katherine_hsr/article/details/79382249

泛化能力
在机器学习方法中,泛化能力通俗来讲就是指学习到的模型对未知数据的预测能力。在实践中我们没有办法对所有的数据进行预测然后判断来计算一个模型的模型的泛华能力,所以一般还是用的测试集中的数据来近似泛化能力。对于过拟合和欠拟合都可以认为是泛化能力差的表现形式。
如果在不考虑数据量不足的情况下出现模型的泛化能力差,那么其原因基本为对损失函数的优化没有达到全局最优。泛化误差反映了学习方法的泛化能力。如果一种方法的模型比另一种方法学习的模型具有更小的泛化误差,那么这种方法就更有效。泛化误差就是所学习到的模型的期望风险。泛化能力的分析通过研究泛化误差的概率的上界进行。
提高泛化能力的方式大致有三种:1.增加数据量;2.正则化;3.凸优化。
https://segmentfault.com/a/1190000016425702

过拟合
过拟合相对于泛化能力,模型的泛化能力差可以认为是存在过拟合,增强模型的泛化能力就是降低模型的过拟合程度的过程。表现为在训练样本中表现的很好的模型,在测试集或者实际样本集中的表现很差。出现过拟合的原因主要有以下几点:
1、数据有噪声;
2、训练数据不足,有限的训练数据;
3、训练模型过度导致模型非常复杂。

欠拟合
首先欠拟合就是模型没有很好地捕捉到数据特征,不能够很好地拟合数据。

https://blog.csdn.net/willduan1/article/details/53070777
这里首先解释一下bias和variance的概念。模型的Error = Bias + Variance,Error反映的是整个模型的准确度,Bias反映的是模型在样本上的输出与真实值之间的误差,即模型本身的精准度,Variance反映的是模型每一次输出结果与模型输出期望之间的误差,即模型的稳定性。
我们可以根据j_cv 与 j_train两个来判断是处于欠拟合还是过拟合。
当观察到 J_cv 很大时,可能处在途中蓝色圆圈中的两个位置,虽然观察到的现象很相似(J_cv都很大),但这两个位置的状态是非常不同的,处理方法也完全不同。
在这里插入图片描述

  • 当cross validation error (Jcv) 跟training error(Jtrain)差不多,且Jtrain较大时,即图中标出的bias,此时 high bias low variance,当前模型更可能存在欠拟合。
  • 当Jcv >> Jtrain且Jtrain较小时,即图中标出的variance时,此时 low bias high variance,当前模型更可能存在过拟合。

交叉验证:
就是重复的使用数据,把得到的样本数据进行切分,组合为不同的训练集和测试集,用训练集来训练模型,用测试集来评估模型预测的好坏。在此基础上可以得到多组不同的训练集和测试集,某次训练集中的某样本在下次可能成为测试集中的样本,即所谓“交叉”。 有简单交叉验证,S折交叉验证,留一交叉验证。

2、线性回归原理

线性回归的前提是我们假设数据是存在线性关系的;
参考链接:https://blog.csdn.net/pxhdky/article/details/82388964

可以认为线性回归得到的结果和真实值是存在误差的,所以实际样本值和预测值可表示为:
在这里插入图片描述
我们假设误差是服从均值为0 的高斯分布,由此可以得到误差的概率密度分布函数为:
在这里插入图片描述
想要总的误差尽可能的小,就是希望误差都集中在0附近,由于误差在0附近的概率密度越大,可以转化为误差的概率密度函数尽可能的大,对离散数据来说即希望误差的最大似然函数尽可能的大;
在这里插入图片描述
在这个函数中,wT为待求的变量,x、y都是给出的训练数据;
对似然函数取对数并求导,得:
在这里插入图片描述
在这里插入图片描述
此处的J(w)是变换后的表达式,误差最小转化为求J(w)的最小值:
目标函数标为J(w),可得目标函数为凸函数,求最小值可以求导,得偏导为0时为最小值;

可以直接最w向量求偏导得到:
在这里插入图片描述
此时如果XtX可逆,则可直接通过矩阵求导可得w;
如果不可逆,可增加XtX扰动
在这里插入图片描述
以上两种都属于最小二乘法。

矩阵求逆的过程比较耗时,常见做法是采用梯度下降法计算w;

3、线性回归的损失函数、代价函数、目标函数

损失函数和代价函数:
是同一个东西, 目标函数是一个与他们相关但更广的概念,对于目标函数来说在有约束条件下的最小化就是损失函数(loss function)。
L(Y,f(X)) = (Y-f(X))^2 ,这个函数就称为损失函数(loss function),或者叫代价函数(cost function)。损失函数越小,就代表模型拟合的越好。
常见的损失函数
机器学习或者统计机器学习常见的损失函数如下:


逻辑回归中,采用的则是对数损失函数。如果损失函数越小,表示模型越好。

风险函数
损失函数越小,就代表模型拟合的越好。那是不是我们的目标就只是让loss function越小越好呢?还不是。这个时候还有一个概念叫风险函数(risk function)。风险函数是损失函数的期望,这是由于我们输入输出的(X,Y)遵循一个联合分布,但是这个联合分布是未知的,所以无法计算。但是我们是有历史数据的,就是我们的训练集,f(X)关于训练集的平均损失称作经验风险(empirical risk),所以我们的目标就是最小化经验风险。风险函数如下:
在这里插入图片描述
此处的风险函数和代价函数是什么关系,风险函数是否可以认为是对所有输入的误差期望;

目标函数:
到这一步我们就可以说我们最终的优化函数是,即最优化经验风险和结构风险,而这个函数就被称为目标函数。
在这里插入图片描述
对目标函数求偏导可以,由于目标函数是凸函数,在偏导为0时取得最小值,此时可以采用不断的取梯度下降的方向的w值来逼近最小值。这就转化为了梯度下降法求最小值;
采用随机梯度下降法,w的更新函数为:
在这里插入图片描述
由于增加了正则化项,w的值比原值变小了,可以说简化了模型,因为部分原来存在的项由于增加了正则化项而变的不存在了。

目标函数加正则化项:如果加L1范数则是Lasso回归,如果加L2范数,则是岭回归;

4、线性回归的优化方法:

https://www.cnblogs.com/shixiangwan/p/7532830.html
梯度下降法:
梯度下降法是最早最简单,也是最为常用的最优化方法。梯度下降法实现简单,当目标函数是凸函数时,梯度下降法的解是全局解。一般情况下,其解不保证是全局最优解,梯度下降法的速度也未必是最快的。梯度下降法的优化思想是用当前位置负梯度方向作为搜索方向,因为该方向为当前位置的最快下降方向,所以也被称为是”最速下降法“。最速下降法越接近目标值,步长越小,前进越慢。梯度下降法的搜索迭代示意图如下图所示:
梯度下降法的缺点:
(1)靠近极小值时收敛速度减慢,如下图所示;
(2)直线搜索时可能会产生一些问题;
(3)可能会“之字形”地下降。
梯度下降法可以分为随机梯度下降和批量梯度下降两种:
批量梯度下降法,目标函数求导得:
在这里插入图片描述
更新函数:
在这里插入图片描述
随机梯度下降法,只针对随机的一个样本求偏导,得到更新方向,更新函数为:
在这里插入图片描述
随机梯度下降每次迭代只使用一个样本,迭代一次计算量为n2,当样本个数m很大的时候,随机梯度下降迭代一次的速度要远高于批量梯度下降方法。两者的关系可以这样理解:随机梯度下降方法以损失很小的一部分精确度和增加一定数量的迭代次数为代价,换取了总体的优化效率的提升。增加的迭代次数远远小于样本的数量。
对批量梯度下降法和随机梯度下降法的总结:
批量梯度下降—最小化所有训练样本的损失函数,使得最终求解的是全局的最优解,即求解的参数是使得风险函数最小,但是对于大规模样本问题效率低下。
随机梯度下降—最小化每条样本的损失函数,虽然不是每次迭代得到的损失函数都向着全局最优方向, 但是大的整体的方向是向全局最优解的,最终的结果往往是在全局最优解附近,适用于大规模训练样本情况。

牛顿法
牛顿法是一种在实数域和复数域上近似求解方程的方法。方法使用函数f (x)的泰勒级数的前面几项来寻找方程f (x) = 0的根。牛顿法最大的特点就在于它的收敛速度很快,常用于非线性优化问题。
针对线性回归,我们求目标函数的最小值,转化为求目标函数的一阶偏导为0,此时就可以利用牛顿法来实现了,但是线性回归中我们的变量是多维一阶函数,所以线性回归中并不采用牛顿法实现;
如求解的目标函数如下,此目标函数一般为实际目标函数的一阶偏导:
在这里插入图片描述
我们将新求得的点的 x 坐标命名为x1,通常x1会比x0更接近方程f (x) = 0的解。因此我们现在可以利用x1开始下一轮迭代。迭代公式可化简为如下所示:
在这里插入图片描述
此x如果是多维的,且样本数较大的情况下,求解会很复杂,所以提出了拟牛顿法:

拟牛顿法
拟牛顿法是求解非线性优化问题最有效的方法之一,于20世纪50年代由美国Argonne国家实验室的物理学家W.C.Davidon所提出来。Davidon设计的这种算法在当时看来是非线性优化领域最具创造性的发明之一。不久R. Fletcher和M. J. D. Powell证实了这种新的算法远比其他方法快速和可靠,使得非线性优化这门学科在一夜之间突飞猛进。

拟牛顿法的本质思想是改善牛顿法每次需要求解复杂的Hessian矩阵的逆矩阵的缺陷,它使用正定矩阵来近似Hessian矩阵的逆,从而简化了运算的复杂度。拟牛顿法和最速下降法一样只要求每一步迭代时知道目标函数的梯度。通过测量梯度的变化,构造一个目标函数的模型使之足以产生超线性收敛性。这类方法大大优于最速下降法,尤其对于困难的问题。另外,因为拟牛顿法不需要二阶导数的信息,所以有时比牛顿法更为有效。如今,优化软件中包含了大量的拟牛顿算法用来解决无约束,约束,和大规模的优化问题。

5、 线性回归的评价准则

MSE (Mean Squared Error)叫做均方误差,对应的实际就是代价函数,公式如下:
在这里插入图片描述
由于均方误差将误差值取了平方,所以结果存在量纲问题,所以引入:
均方根误差(RMSE)
均方根误差将均方误差取了开方,所以得到的评价标准和实际误差在一个量纲上。
在这里插入图片描述绝对值误差(MAE)
对误差取绝对值求均值,得到的就是绝对值误差;
在这里插入图片描述
R平方模型
R平方模型衡量的是我们训练出的模型对比y等于y的均值这个基准模型的效果是怎么样;实际就是评价我们得到的模型得到的误差相对于我们将所有的样本预测为样本均值的误差效果:
在这里插入图片描述
模型为均值的误差函数实在这里插入图片描述际表示的就是方差,推导后可得:
在这里插入图片描述

6、线性回归参数解析

1、sklearn.linear_model.LinearRegression(fit_intercept=True, normalize=False, copy_X=True, n_jobs=None)
fit_intercept:boolean,default true:
是否计算模型的截距,即拟合函数中x0=1的那个值,常见为w0;

normalize:标准化,默认为false;如果设置为true,这会对训练样本做标准化操作:对每个特征的值减去对应特征样本的均值并除以它的L2范数。采用默认值的花,需要先调用sklearn.preprocessing.StandardScaler做预处理,然后再调用fit函数。

copy_X :默认为true,是否对传入的样本数据做备份,不做备份的话,训练过程中样本数据可能被修改;

n_jobs:训练模型采用的线程数,这个只对足够大的目标且多个类别的情况下才生效。

2、fit(X, y[, sample_weight]) Fit linear model. 返回线性回归的实例,由样本训练得到的模型
X : array-like or sparse matrix, shape (n_samples, m_features)
Training data,形式为n行样本,m个特征 X[n,m];
y : array_like, shape (n_samples, m_targets)
Target values. Will be cast to X’s dtype if necessary
形式为n个样本的属于m个类别的矩阵;Y[n,m];一般此处的m=1;
sample_weight : numpy array of shape [n_samples]
Individual weights for each sample;
标志不同样本权重的向量,和样本数维度一致;

3、predict(X)[source]:返回由训练的模型预测的结果集
X : array_like or sparse matrix, shape (n_samples, n_features)
测试集或者实际需要预测的无标记样本集,

4、score(X, y, sample_weight=None)[source]
Returns the coefficient of determination R^2 of the prediction.
X , y为训练样本,sample_weight:为样本权重,针对已经训练出的模型求R方评价值,返回评价后得到的值;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值