文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

干货!机器学习中 5 种必知必会的回归算法!

2024-12-03 06:30

关注

实际上,它只是经常用作评估和研究新方法时进行比较的基准模型。在现实场景中我们经常遇到回归预测问题,今天我就给大家总结分享 5 种回归算法。

1、神经网络回归

理论

神经网络的强大令人难以置信的,但它们通常用于分类。信号通过神经元层,并被概括为几个类。但是,通过更改最后的激活功能,它们可以非常快速地适应回归模型。

每个神经元通过激活功能传递以前连接的值,达到泛化和非线性的目的。常用的激活函数:Sigmoid 或 ReLU 函数。

 

 

通过将最后一个激活函数(输出神经元)替换为线性激活函数,可以将输出映射到固定类别之外的各种值。这样,输出不是将输入分类到任何一个类别中的可能性,而是神经网络将观测值置于其上的连续值。从这个意义上讲,它就像是线性回归的神经网络的补充。

 

 

神经网络回归具有非线性(除了复杂性)的优点,可以在神经网络中较早地通过S型和其他非线性激活函数引入神经网络。但是,由于 ReLU 忽略了负值之间的相对差异,因此过度使用 ReLU 作为激活函数可能意味着该模型倾向于避免输出负值。这可以通过限制 ReLU 的使用并添加更多的负值适当的激活函数来解决,也可以通过在训练之前将数据标准化为严格的正范围来解决。

实现

使用Keras,我们构建了以下人工神经网络结构,只要最后一层是具有线性激活层的密集层或简单地是线性激活层即可。

 

  1. model = Sequential() 
  2. model.add(Dense(100, input_dim=3, activation='sigmoid')) 
  3. model.add(ReLU(alpha=1.0)) 
  4. model.add(Dense(50, activation='sigmoid')) 
  5. model.add(ReLU(alpha=1.0)) 
  6. model.add(Dense(25, activation='softmax')) 
  7. #IMPORTANT PART 
  8. model.add(Dense(1, activation='linear')) 

神经网络的问题一直是其高方差和过度拟合的趋势。在上面的代码示例中,有许多非线性源,例如SoftMax或Sigmoid。如果你的神经网络在纯线性结构的训练数据上表现良好,则最好使用修剪后的决策树回归法,该方法可以模拟神经网络的线性和高变异性,但可以让数据科学家更好地控制深度、宽度和其他属性以控制过度拟合。

2、决策树回归

理论

在决策树中分类和回归非常相似,因为两者都通过构造是/否节点的树来工作。虽然分类结束节点导致单个类值(例如,对于二进制分类问题为1或0),但是回归树以连续值(例如4593.49或10.98)结尾。

 

 

 

由于回归作为机器学习任务的特殊性和高差异性,因此需要仔细修剪决策树回归器。但是,它进行回归的方式是不规则的,而不是连续地计算值。因此,应该修剪决策树,使其具有最大的自由度。

实现

决策树回归可以很容易地在 sklearn 创建:

 

  1. from sklearn.tree import DecisionTreeRegressor 
  2. model = DecisionTreeRegressor() 
  3. model.fit(X_train, y_train) 

由于决策树回归参数非常重要,因此建议使用sklearn的GridCV参数搜索优化工具来找到模型的正确准则。在正式评估性能时,请使用K折检验而不是标准的训练分割,以避免后者的随机性干扰高方差模型的精细结果。

3、LASSO 回归

理论

LASSO回归是线性回归的一种变体,特别适合于多重共线性(要素彼此之间具有很强的相关性)的数据。它可以自动执行部分模型选择,例如变量选择或参数消除。

 

 

 

缩小的过程为回归模型增加了许多好处:

LASSO并没有像神经网络的高方差方法和决策树回归那样通过调整模型的复杂性来补偿数据的复杂性,而是试图通过变形空间来降低数据的复杂性,从而能够通过简单的回归技术来处理。在此过程中,LASSO自动以低方差方法帮助消除或扭曲高度相关和冗余的特征。

LASSO回归使用L1正则化,这意味着它按绝对值加权误差。这种正则化通常会导致具有较少系数的稀疏模型,这使得它具有可解释性。

实现

在sklearn中,LASSO回归附带了一个交叉验证模型,该模型可以选择许多具有不同基本参数和训练路径的训练模型中表现最佳的模型,从而使需要手动完成的任务实现自动化。

 

  1. from sklearn.linear_model import LassoCV 
  2. model = LassoCV() 
  3. model.fit(X_train, y_train) 

4、Ridge回归

理论

Ridge回归与LASSO回归非常相似,因为它适用于收缩。Ridge和LASSO回归都非常适用于具有大量彼此不独立(共线性)的特征的数据集,但是两者之间最大的区别是Ridge利用L2正则化,由于L2正则化的性质,系数越来越接近零,但是无法达到零。

 

正因为如此,如果你希望对每个变量的优先级产生小的影响进行优先级排序,则 Ridge 是更好的选择。如果希望在模型中考虑几个变量,每个变量具有中等到较大的影响,则 LASSO 是更好的选择。

 

 

实现

Ridge回归可以在sklearn中实现,如下所示。像 LASSO 回归一样,sklearn可以实现交叉验证选择许多受过训练的模型中最好的模型的实现。

 

  1. from sklearn.linear_model import RidgeCV 
  2. model = Ridge() 
  3. model.fit(X_train, y_train) 

5、ElasticNet 回归

理论

ElasticNet 试图通过结合L1和L2正则化来利用 Ridge 回归和 LASSOb回归中的最佳方法。

LASSO和Ridge提出了两种不同的正则化方法。λ是控制惩罚强度的转折因子。

除了λ参数之外,ElasticNet还添加了一个附加参数α,用于衡量L1和L2正则化应该如何"混合":

“混合因子”α只是确定在损失函数中应考虑多少L1和L2正则化。

实现

可以使用 sklearn 的交叉验证模型来实现ElasticNet:

 

  1. from sklearn.linear_model import ElasticNetCV 
  2. model = ElasticNetCV() 
  3. model.fit(X_train, y_train) 

 

来源:机器学习社区内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯