线性回归算法梳理

1. 机器学习的一些概念

监督学习

监督:数据集包含标签,即数据集包括特征和标签
监督学习:用有标签的数据集进行推断/建模的机器学习。例如分类、回归。
常用算法:
支持向量机(Support Vector Machines)
线性回归(linear regression)
逻辑回归(logistic regression)
朴素贝叶斯(naive Bayes)
线性判别分析(linear discriminant analysis)
决策树(decision trees)
K-近邻(k-nearest neighbor algorithm)
多层感知机(Multilayer perceptron)

无监督学习

无监督:数据集无标签。
无监督学习;直接对数据集进行建模。例如聚类。
常用算法:
主成分分析方法PCA
等距映射方法
局部线性嵌入方法
拉普拉斯特征映射方法
黑塞局部线性嵌入方法
局部切空间排列方法

泛化能力

是指一个机器学习算法扩展到新样本的适应能力。通俗来讲就是指学习到的模型对未知数据的预测能力,即举一反三的能力。

过拟合

模型对已知数据预测得很好, 但对未知数据预测得很差的现象。(过于精细)
解决方法:
重新清洗数据
减少模型所包含的参数
降低模型的复杂度
增加训练数据量
正则化
减少训练步数

欠拟合

没有很好的学习到数据背后的规律,即设定的条件过于粗略。
模型没有很好地捕捉到数据特征,不能够很好地拟合数据的情况(过于粗糙)
解决方法:
添加特征项
增加模型的复杂度

在这里插入图片描述

(方差和偏差以及各自解决办法)
方差:
模型每一次输出结果与模型输出期望之间的误差,即模型的稳定性。反应预测的波动情况。

偏差:
模型在样本上的输出与真实值之间的误差,即模型本身的精准度,即算法本身的拟合能力。

在这里插入图片描述
红色是真实值,蓝色是预测值

交叉验证
数据分为训练集和验证集,计算平均的模型性能指标。如5折交叉验证,将数据集分成5份,每次选取1份作为验证集,共进行5次训练和验证,平均5次预测的结果。
在这里插入图片描述

2. 线性回归的原理

线性回归在假设特证满足线性关系,根据给定的训练数据训练一个模型,并用此模型进行预测。训练模型即求解线性方程系数。
在这里插入图片描述

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

损失函数(Loss Function )是定义在单个样本上的,算的是一个样本的误差
代价函数(Cost Function )是定义在整个训练集上的,是所有样本误差的平均,也就是损失函数的平均。
目标函数(Object Function):最终在约束条件下需要优化的函数,即代价函数 + 正则化项。

4. 优化方法(梯度下降法、牛顿法、拟牛顿法等)

梯度下降法:当目标函数是凸函数时,梯度下降法的解是全局解。梯度下降法的优化思想是用当前位置负梯度方向作为搜索方向,因为该方向为当前位置的最快下降方向,所以也被称为是”最速下降法“。
在这里插入图片描述
牛顿法:一种在实数域和复数域上近似求解方程的方法。方法使用函数f (x)的泰勒级数的前面几项来寻找方程f (x) = 0的根。
在这里插入图片描述

拟牛顿法:改善牛顿法每次需要求解复杂的Hessian矩阵的逆矩阵的缺陷,它使用正定矩阵来近似Hessian矩阵的逆,从而简化了运算的复杂度。

5. 线性回归的评估指标

残差估计:计算实际值与预测值间的差值简称残差。
在这里插入图片描述
均方误差(MSE):预测数据和原始数据对应点误差的平方和的均值。
在这里插入图片描述
均方根(RMSE):MSE的平方根
在这里插入图片描述
R-square:解决了RMSE和MSE量纲不一样的问题。

SSR:Sum of squares of the regression,即预测数据与原始数据均值之差的平方和。
SST:Total sum of squares,即原始数据和均值之差的平方和。
R-square越大,说明预测出来的数据可以通过模型的解释性就越强。

6. sklearn参数详解

from sklearn.linear_model import LinearRegression
linreg = LinearRegression()
#拟合训练集
linreg.fit(train_X, train_Y)
#打印模型的系数
print linreg.intercept_
print linreg.coef_
#线性模型 Y = theta0 + theta1 * x1 + theta2 * x2 + theta3 * x3 + theta4 * x4
#对于线性回归模型, 使用均方误差(Mean Squared Error,MSE)或均方根误差(Root Mean Squared Error,RMSE)在测试集上的表现来评该价模型的好坏.
test_Y_pred = linreg.predict(test_X)
print “测试集MSE:”, mean_squared_error(test_Y, test_Y_pred)
print “测试集RMSE:”, np.sqrt(mean_squared_error(test_Y, test_Y_pred))

#可以通过交叉验证来持续优化模型, 下面采用的是5折交叉验证
from sklearn.model_selection import cross_val_predict
Y_pred = cross_val_predict(linreg, X, Y, cv=5)
print “5折交叉验证MSE:”, mean_squared_error(Y, Y_pred)
print “5折交叉验证RMSE:”, np.sqrt(mean_squared_error(Y, Y_pred))

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值