介绍

线性回归是特征与标签之间建立一个关系来描绘特征和标签之间的关系。

预测函数的本质就是我们构建的模型,而构造的函数核心就是找出模型的参数向量w

最小二乘法(解析解)求解W

通过已知的MSE损失函数,推导出来线性回归解析解求解公式

  1. 先将损失函数换一个写法(表达形式),写成线性代数的表达形式。

2. 对表达式进行推导

梯度:某个点上切线的斜率叫做梯度(对某个驻点求一阶导就是切线的斜率)

(不管是全局最优解还是局部最优解,切线斜率为零的地方就是最优解)

那么我们就设置上式导函数为零即梯度为零,最终求得theta,那么这时就是求的就是极大值或者极小值,但是凸函数那么就有一个极值就是极小值,如果是非凸函数就有可能是极大值也有可能是极小值,但是我们基本上都是假设我们的数据是凸函数。、

机器学习是凸函数

深度学习是非凸函数。

3.对上述公式求一阶导,因为驻点的斜率时零,所以当对公式求导时结果等于零就是驻点也就是最优解。

4.进一步求出θ解析解的公式

5.那么现在将x,y带入解析解公式就可以一步求出θ的值

6.凸函数我们可以肯定的知道他的极值就是全局最优解

非凸函数有很多局部最优解,所以无法通过梯度等于0的方式将theta求解出来

7.判定凸函数的方式

用hessian matrix判定是否是半正定矩阵

目标函数在点X处的二阶偏导数组成的对称矩阵,如果特征值全是正数,那么是正定的,特征值大于等于0就是半正定的

机器学习中损失函数往往都是凸函数,到深度学习损失函数往往都是非凸函数,即找到的解未必是全局最优解,只要模型堪用就可好,不强调模型百分百正确,只要是有价值的就好!

sklearn线性回归参数

from sklearn.linear_model import LinearRegression

线性回归参数很少,用了线性回归如果预测的效果不好,基本上调不了什么参数,那就标准化试试,还不行就换个模型吧。

优点就是很简单,缺点就是没有过多可调的参数。

参数:

fit_intercept:布尔值,可不填,默认为True ,是否计算此模型的截距。如果设置为False,则不会计算截距

normalize:布尔值,可不填,默认为False

当fifit_intercept设置为False时,将忽略此参数。如果为True,则特征矩阵X在进入回归之前将
会被减去均值(中心化)并除以L2范式(缩放)。如果你希望进行标准化,请在fifit数据之前
使用preprocessing模块中的标准化专用类StandardScaler
copy_X:布尔值,可不填,默认为True,如果为真,将在X.copy()上进行操作,否则的话原本的特征矩阵X可能被线性回归影响并覆盖。
n_jobs:整数或者None,可不填,默认为None,用于计算的作业数。只在多标签的回归和数据量足够大的时候才生效。除非None在joblib.parallel_backend上下文中,否则None统一表示为1。如果输入 -1,则表示使用全部的CPU来进行计算。

属性:

coef_:线性回归方程中估计出的系数。(这个数值也就是特征对标签y的重要程度)
 
intercept_ :数组,线性回归中的截距项。

评估指标:

MSE评估指标
from sklearn.metrics import mean_squared_error as MSE
MSE(y_predict, y_test)
# 交叉验证使用负均方误差做评估指标
cross_val_score(reg, X, y, cv=10, scoring='neg_mean_squared_error')
一般算出来这个值后,拿来和测试值的均值作比较
假设这个值是0.5
y_test.mean()是2.08
那么错误率就是0.2

R平方

方差本质是任意一个y值和样本均值的差异,差异越大所带信息越多。

1-均方误差/方差(真实值所带信息两)

1-模型没有捕获到的信息量占真实标签所带的信息量比例=模型信息量所占真是标签信息量

所以R平方越接近于1越好。

所以R平方也是会归类模型的第一衡量指标。

# 两种方式使用r平方评估指标
from sklearn.metrics import r2_score
注意:使用r2_score,真实值放前面,预测值放在后面
# 所有的回归类算法模型包括回归树,回归森林,还是线性回归score默认接口都是r平方
reg.score(X_test, y_test)
# 交叉验证,corss_val_score参数scoreing='r2'
corss_val_score(lr, X, y, cv=5, scoreing='r2')

当发现R平方是负的,说明线性回归完全没有拟合到真实数据集。

多重共线性问题

解决多重共线性问题:

加上一个L2范数,让对角线变得不为零也不接近于0。让矩阵永远都是满秩矩阵

CSDN

CSDN

线性回归最小二乘法计算步骤以及sklearn参数介绍相关推荐

  1. 样本轮廓系数(原理、sklearn.metrics.silhouette_score、silhouette_samples参数介绍)

    一.轮廓系数含义: 轮廓系数(Silhouette Coefficient),是聚类效果好坏的一种评价方式. 最佳值为1,最差值为-1.接近0的值表示重叠的群集.负值通常表示样本已分配给错误的聚类,因 ...

  2. sklearn.cluster.KMeans 参数介绍

    sklearn.cluster.KMeans 参数介绍 为什么要介绍sklearn这个库里的kmeans? 这个是现在python机器学习最流行的集成库,同时由于要用这个方法,直接去看英文文档既累又浪 ...

  3. sklearn.cluster.KMeans参数介绍

    转载自:https://blog.csdn.net/weixin_41724761/article/details/89786414,本文只做个人记录学习使用,版权归原作者所有. sklearn.cl ...

  4. 【数据挖掘】高斯混合模型 ( 与 K-Means 每个步骤对比 | 初始参数设置 | 计算概率 | 计算平均值参数 | 计算方差参数 | 计算高斯分布概率参数 | 算法终止条件 )

    文章目录 I . 高斯混合模型 ( 样本 -> 模型 ) II . 高斯混合模型 ( 模型 -> 样本 ) III . 高斯混合模型 与 K-Means 迭代过程对比 IV . 高斯混合模 ...

  5. rsync的介绍及参数详解,配置步骤,工作模式介绍

    rsync的介绍及参数详解,配置步骤,工作模式介绍 rsync是类unix系统下的数据镜像备份工具.它是快速增量备份.全量备份工具. Sync可以远程同步,支持本地复制,或者与其他SSH.rsync主 ...

  6. 根据经纬度计算地球上两点之间的距离——Haversine公式介绍及计算步骤

    目录 摘要 1.半正矢公式(Haversine Formula)介绍 2.半正矢公式应用 3.半正矢公式计算 3.1 主要思路 3.2 计算步骤 3.2.1 平面向量计算方法 3.2.2 空间向量计算 ...

  7. Lesson 8.3Lesson 8.4 ID3、C4.5决策树的建模流程CART回归树的建模流程与sklearn参数详解

    Lesson 8.3 ID3.C4.5决策树的建模流程 ID3和C4.5作为的经典决策树算法,尽管无法通过sklearn来进行建模,但其基本原理仍然值得讨论与学习.接下来我们详细介绍关于ID3和C4. ...

  8. [机器学习-原理及实现篇]线性回归-最小二乘法

    线性回归到底要干什么,顾名思义很简单,即在已有数据集上通过构建一个线性的模型来拟合该数据集特征向量的各个分量之间的关系,对于需要预测结果的新数据,我们利用已经拟合好的线性模型来预测其结果.关于线性回归 ...

  9. XGBoost的参数介绍及调参

    XGBoost的参数介绍及调参 XGBoost参数解释 一.通用参数 二.Booster参数 二.学习目标函数 三.XGBoost调参 XGBoost参数解释 XGBoost的参数分为三大类: 通用参 ...

最新文章

  1. python 64位程序 打包用于32位系统_python分别打包出32位和64位应用程序
  2. AI一分钟|腾讯与三星结盟,以对抗苹果和谷歌;亚马逊回应“AI误将国会议员标记为罪犯”...
  3. java远程调用笔记
  4. 应用Druid监控SQL语句的执行情况--转载
  5. matlab绘制三维图形现状,MATLAB绘制三维图形
  6. 字典类型处理函数及方法实例解析
  7. 单位阶跃信号是周期信号吗_手机信号变成“HD”,是代表没有信号吗?你的手机正在被扣费...
  8. ---WebCam网络摄像头6 编译WebCam
  9. JS高效关键字搜索---转
  10. OpenCV:使用 随机森林与GBDT
  11. 在php里让字体划过变色,鼠标划过字体时如何用css来实现字体变色?(代码实测)...
  12. php5.3 gd库,php5.3动态编译gd库 zlib扩展 mcrypt扩展 mysqli扩展
  13. Homebrew基本命令
  14. IDEA报Unable to save settings: Failed to save settings. Please restart IntelliJ IDEA
  15. 【转载】使用Lucene.NET实现数据检索功能
  16. Nginx动静分离经典案例配置
  17. 博客在微博中怎么添加html,新浪微博怎么进博客
  18. TexturePacker 图片加密
  19. 百度Android在线语音识别SDK使用方法
  20. 华三防火墙三层逻辑子接口对接华三交换机

热门文章

  1. ## Overlay 是什么
  2. 关于jacoco的学习
  3. Python错误集锦:matplotlib legend提示:ValueError: Unrecognized location ‘upper’. Valid locations are
  4. 用手机计算机计算三次根号,手机自带计算器不行求推荐一个能开3次根号的 – 手机爱问...
  5. 静态全局变量和全局变量的区别
  6. 【科创人南京行】西祠胡同创始人“响马”刘琥:一生寻找精神绿林,减区块链也许是正确方向...
  7. 【填坑日记】list集合的remove方法移除不了?!
  8. 如何使用python视频_如何使用python网络爬虫抓取视频?
  9. 我的阿里春招之路:历时14天,五轮面试后终于拿到Android岗offer,原来大厂都是从这几个方面问问题
  10. 浅谈MYSQL之级联复制(附带实验)