目录

  • 线性回归
    • 特点
    • 最小二乘法
    • 代码实现
  • 多项式回归
    • 特点
  • 岭回归
    • 特点:
    • 共线性collinearity
    • 优化函数
    • 代码实现
  • 套索回归Lasso
    • 岭回归和套索回归对比
    • 代码实现
  • 弹性回归网络
    • 特点:

线性回归

线性回归指的是全部由线性变量组成的回归模型

特点

建模速度快、对每个变量可以通过系数进行解释、对异常值很敏感

最小二乘法

通过数据点找到参数w和b,使得对训练集的预测值y与真实的回归目标值y’之间的MSE(均方误差)最小。

适用范围:
线性回归模型简单,但要求数据对目标变量成线性关系,所以如果面对非线性关系,需要转换非线性模型
特征变量较多的数据集

代码实现

from sklearn.linear_model import LinearRegression
reg = LinearRegression()
reg.fit(X,y)
print('直线的系数是:{:.2f}'.format(reg.coef_[0]))
print('直线的截距是:{:.2f}'.format(reg.intercept_))

多项式回归

非线性模型——多项式回归

特点

拟合非线性变量,需要一些数据的先验知识来选择指数,选择不当会产生过拟合

岭回归

L2正则化的线性模型——岭回归

L2正则化保留全部特征变量,但会降低特征的系数值来避免过拟合

特点:

1、领回归的假设和最小平方回归相同,但是在最小平方回归的时候我们假设数据服从高斯分布使用的是极大似然估计(MLE),在领回归的时候由于添加了偏差因子,即w的先验信息,使用的是极大后验估计(MAP)来得到最终的参数
2、没有特征选择功能

共线性collinearity

自变量之间存在的,近似线性的关系。

回归分析需要我们了解每个变量与目标变量之间的关系,如果有两个变量x1和x2存在高共线性,那么x1的改变会影响x2也发生改变,这样就没办法确定是否是x1单独改变而对目标变量造成了影响,因为x1改变总是会混杂x2的作用,这样就造成了分析误差,所以回归分析时需要排除高共线性的影响。
判断高共线性的存在:
1、理论上变量x1与Y高度相关,但回归系数很低,不明显,有可能是因为x2的存在
2、添加或删除x1特征变量,回归系数发生明显变化,(x2会变化明显)
3、X特征变量具有较高的成对相关性(pairwise correlations)(检查相关矩阵)>0.7
4、回归分析时,直接查看VIF值,如果全部小于10(严格是5),则说明模型没有多重共线性问题,模型构建良好;反之若VIF大于10说明模型构建较差。
解决方法:

处理原则:
1、多共线性是普遍存在的,轻微的多重共线性问题可不采取措施,如果VIF值大于10说明共线性很严重,这种情况需要处理,如果VIF值在5以下不需要处理,如果VIF介于5~ 10之间视情况而定。
2、严重的多重共线性问题,一 般可根据经验或通过分析回归结果发现。如影响系数符号,重要的解释变量t值很低。要根据不同情况采取必要措施。
3、如果模型仅用于预测,则只要拟合程度好,可不处理多重共线性问题,存在多重共线性的模型用于预测时,往往不影响预测结果。

优化函数

岭回归是针对模型中存在的共线性关系的为变量增加一个小的平方偏差因子(也就是正则项)

代码实现

from sklearn.linear_model import Ridge
ridge = Ridge(alpha=1)        #
ridge.fit(X,y)
print('岭回归的训练集得分是:{:.2f}'.format(ridge.score(X_train,y_train)))
print('岭回归的测试集得分是:{:.2f}'.format(ridge.score(X_test,y_test)))

套索回归Lasso

L1正则化的线性模型——套索回归

在回归优化函数中增加了一个偏置项以减少共线性的影响
套索回归会让模型更容易理解

岭回归和套索回归对比

岭回归和Lasso回归之间的差异可以归结为L1正则和L2正则之间的差异:
内置的特征选择(Built-in feature selection):这是L1范数很有用的一个属性,二L2范数不具有这种特性。因为L1范数倾向于产生稀疏系数。例如,模型中有100个系数,但其中只有10个系数是非零系数,也就是说只有这10个变量是有用的,其他90个都是没有用的。而L2范数产生非稀疏系数,所以没有这种属性。因此可以说Lasso回归做了一种参数选择形式,未被选中的特征变量对整体的权重为0。

稀疏性:指矩阵或向量中只有极少个非零系数。L1范数具有产生具有零值或具有很少大系数的非常小值的许多系数的属性。
计算效率:L1范数咩有解析解,但L2范数有。这使得L2范数的解可以通过计算得到。L1范数的解具有稀疏性,这使得它可以与稀疏算法一起使用,这使得在计算上更有效率。

代码实现

from sklearn.linear_model import Lasso
lasso = Lasso(alpha=0.1, max_iter=10000)     #max_iter最大迭代次数
lasso.fit(X,y)
print('Lasso回归的训练集得分是:{:.2f}'.format(lasso.score(X_train,y_train)))
print('Lasso回归的测试集得分是:{:.2f}'.format(lasso.score(X_test,y_test)))

弹性回归网络

弹性回归网络是Lesso回归和岭回归技术的混合体。它使用了L1和L2正则化

特点:

1、鼓励在高度相关变量的情况下的群体效应,而不像Lasso那样将其中一些置为0.当多个特征和另一个特征相关的时候弹性网络非常有用。Lasso倾向于随机选择其中一个,而弹性网络倾向于选择两个。
2、 对所选变量的数量没有限制。

机器学习模型——回归模型相关推荐

  1. R语言使用xgboost构建回归模型:vtreat包为xgboost回归模型进行数据预处理(缺失值填充、缺失值标识、离散变量独热onehot编码)、构建出生体重的xgboost模型回归模型

    R语言使用xgboost构建回归模型:vtreat包为xgboost回归模型进行数据预处理(缺失值填充.缺失值标识.离散变量独热onehot编码).构建出生体重的xgboost模型回归模型 目录

  2. R语言使用mgcv包的gam函数拟合广义加性模型回归模型:使用predict函数和训练好的模型进行预测推理、使用ggplot2可视化预测值和实际值的曲线进行对比分析

    R语言使用mgcv包的gam函数拟合广义加性模型回归模型:使用predict函数和训练好的模型进行预测推理.使用ggplot2可视化预测值和实际值的曲线进行对比分析 目录

  3. 【Python机器学习】回归模型:推土机售价预测

    文章目录 使用机器学习预测推土机的售价 零.导入模块 一.EDA 1.1 查看基本信息 1.2 特征类型转换 1.3 联表+特征初筛 1.3.1 删除包含重复信息的特征 1.3.2 fiBaseMod ...

  4. 机器学习--逻辑回归模型(Logistic Regression)

    1.逻辑回归 逻辑回归(Logistic Regression)是一种用于二元分类问题的机器学习算法.逻辑回归的目的是基于输入特征预测一个样本属于某个特定的类别的概率. 逻辑回归的核心思想是将线性回归 ...

  5. 学习机器学习四 回归模型——线性回归、L1正则化(Lasso回归)、L2正则化(ridge回归)

    还记得什么是回归吗?回忆下回归就是连续的输出,分类是离散的. 回归模型一般分为:①线性回归--就是线性方程,类似为一元一次方程(y=wx+b),比如你的年龄: ②逻辑回归(类似为曲线方程) 线性回归 ...

  6. 【机器学习】回归模型评价指标原理与基于sklearn的实现

    1 前言 回归任务是机器学习中常见的任务,特别是涉及到具体的发电量预测.风力预测等工业任务时,有非常多的应用场景.回归任务不同于分类任务,回归任务的预测值一般是连续的数,分类任务的预测值则是离散的值( ...

  7. 二、机器学习之回归模型分析

    文章目录 一.回归模型 1.1 回归模型定义 1.2 回归模型分析方法 二.回归分析 2.1 线性回归和多项式回归 2.1.1 线性回归定义 2.2.2 代码实现分析: 2.2 逻辑回归 2.2.1 ...

  8. 机器学习对回归模型的评价指标:均方误差、可解释方差和R方值

    学习过概率与统计的同学们都知道,对于线性回归及其他的回归模型来说,评价连续性可拟合的数据就不能使用离散二分类器的评价指标对回归模型进行评价.因此我们引入了均方误差(mean squared error ...

  9. 图解机器学习之回归模型性能评估指标

    一个房价预测的任务,老板说你看看这个模型咋样? 我们先绘制一个坐标轴: Y 轴为房价,X 轴为年份.将过去房价数据绘制为绿色,回归模型绘制为蓝色. 关键问题是,怎么知道这个模型的好坏呢? 为了评估该模 ...

最新文章

  1. android中menu菜单扩增_【已解决】Android添加Menu菜单
  2. html分页首页上一页下一页,HTML静态分页(形如:首页,上一页,下一页,尾页)...
  3. nodejs环境搭建与express安装配置
  4. Linux cJSON库的使用、编译为cJSON动态库
  5. spring boot—自定义logback日志配置
  6. 【晨读】热爱 ▪ 英语 @ 热爱 ▪ 晨读
  7. 数据集:各地区化妆品销量、人口数量和人均收入
  8. 基于遗传算法的TSP算法
  9. 区分iphone和ipad 函数sysctlbyname 来获取设备名称
  10. 小学计算机表格课件,小学信息技术级轻松做表格Word表格制作PPT课件.ppt
  11. 小程序顶部标题栏的背景图片设置
  12. 年终盘点:2021年中国科技的重大突破
  13. 微信扫码下载APK解决方案
  14. 删除表字段的sql语句
  15. arm_neon.h文件ABI说明
  16. AliMe Chat: A Sequence to Sequence and Rerank based Chatbot Engine论文笔记
  17. PAD智龙迷城(puzzle and dragon)辅助转珠算法思路和python实现
  18. dbk-5/Empf/CEE/O/M30技术文章dbk-5/Sender/M30/k1
  19. 挑战UnityShader学习之八——用最简单的方法实现下雨天积水效果
  20. vw8000_汽车电子国际测试标准iso16750和VW8000

热门文章

  1. Rtools 环境变量设置-windows
  2. sas数据操作update、modify by ke=、控制modify的更新、datasets添加约束条件、操作文件变动aduit trail...
  3. conda安装cv2库
  4. 编译原理—x86汇编指令
  5. 路径规划的二次规划方法-知识总结
  6. 基于zynq的SGMII调试
  7. 自然语言处理研究报告
  8. InnoSetup制作补丁包替换文件操作
  9. 【整理】getopt和getopt_long函数
  10. 最大后验估计(Maximum-a-Posteriori (MAP) Estimation) 【转】