0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何帮你的回归问题选择最合适的机器学习算法

lviY_AI_shequ 来源:未知 2019-05-03 09:39 次阅读

在目前的机器学习领域中,最常见的三种任务就是:回归分析、分类分析、聚类分析。在之前的文章中,我曾写过一篇<15分钟带你入门sklearn与机器学习——分类算法篇>。那么什么是回归呢?回归分析是一种预测性的建模技术,它研究的是因变量(目标)和自变量(预测器)之间的关系。回归分析在机器学习领域应用非常广泛,例如,商品的销量预测问题,交通流量预测问题。那么,如何为这些回归问题选择最合适的机器学习算法呢?这篇文章将从以下一个方面介绍:

1、常用的回归算法

2、回归竞赛问题以及解决方案

3、正在进行中的回归竞赛问题

常用的回归算法

这里介绍一些回归问题中常用的机器学习方法,sklearn作为机器学习中一个强大的算法包,内置了许多经典的回归算法,下面将一一介绍各个算法:

注:下面回归算法的代码已上传至网盘,如果有小伙伴感兴趣,后台回复"回归算法"。

1、线性回归

线性回归拟合一个带系数的线性模型,以最小化数据中的观测值与线性预测值之间的残差平方和。

sklearn中也存在线性回归的算法库的接口,代码示例如下所示:

#加载线性模型算法库fromsklearnimportlinear_model#创建线性回归模型的对象regr=linear_model.LinearRegression()#利用训练集训练线性模型regr.fit(X_train,y_train)#使用测试集做预测y_pred=regr.predict(X_test)

2、岭回归

上述的线性回归算法使用最小二乘法优化各个系数,对于岭回归来说,岭回归通过对系数进行惩罚(L2范式)来解决普通最小二乘法的一些问题,例如,当特征之间完全共线性(有解)或者说特征之间高度相关,这个时候适合用岭回归。

#加载线性模型算法库fromsklearn.linear_modelimportRidge#创建岭回归模型的对象reg=Ridge(alpha=.5)#利用训练集训练岭回归模型reg.fit([[0,0],[0,0],[1,1]],[0,.1,1])#输出各个系数reg.coef_reg.intercept_

3、Lasso回归

Lasso是一个估计稀疏稀疏的线性模型。它在某些情况下很有用,由于它倾向于选择参数值较少的解,有效地减少了给定解所依赖的变量的数量。Lasso模型在最小二乘法的基础上加入L1范式作为惩罚项。

#加载Lasso模型算法库fromsklearn.linear_modelimportLasso#创建Lasso回归模型的对象reg=Lasso(alpha=0.1)#利用训练集训练Lasso回归模型reg.fit([[0,0],[1,1]],[0,1])"""Lasso(alpha=0.1,copy_X=True,fit_intercept=True,max_iter=1000,normalize=False,positive=False,precompute=False,random_state=None,selection='cyclic',tol=0.0001,warm_start=False)"""#使用测试集做预测reg.predict([[1,1]])

4、Elastic Net回归

Elastic Net 是一个线性模型利用L1范式和L2范式共同作为惩罚项。这种组合既可以学习稀疏模型,同时可以保持岭回归的正则化属性。

#加载ElasticNet模型算法库fromsklearn.linear_modelimportElasticNet#加载数据集fromsklearn.datasetsimportmake_regressionX,y=make_regression(n_features=2,random_state=0)#创建ElasticNet回归模型的对象regr=ElasticNet(random_state=0)#利用训练集训练ElasticNet回归模型regr.fit(X,y)print(regr.coef_)print(regr.intercept_)print(regr.predict([[0,0]]))

5、贝叶斯岭回归

贝叶斯岭回归模型和岭回归类似。贝叶斯岭回归通过最大化边际对数似然来估计参数。

fromsklearn.linear_modelimportBayesianRidgeX=[[0.,0.],[1.,1.],[2.,2.],[3.,3.]]Y=[0.,1.,2.,3.]reg=BayesianRidge()reg.fit(X,Y)

6、SGD回归

上述的线性模型通过最小二乘法来优化损失函数,SGD回归也是一种线性回归,不同的是,它通过随机梯度下降最小化正则化经验损失。

importnumpyasnpfromsklearnimportlinear_modeln_samples,n_features=10,5np.random.seed(0)y=np.random.randn(n_samples)X=np.random.randn(n_samples,n_features)clf=linear_model.SGDRegressor(max_iter=1000,tol=1e-3)clf.fit(X,y)"""SGDRegressor(alpha=0.0001,average=False,early_stopping=False,epsilon=0.1,eta0=0.01,fit_intercept=True,l1_ratio=0.15,learning_rate='invscaling',loss='squared_loss',max_iter=1000,n_iter=None,n_iter_no_change=5,penalty='l2',power_t=0.25,random_state=None,shuffle=True,tol=0.001,validation_fraction=0.1,verbose=0,warm_start=False)"""

7、SVR

众所周知,支持向量机在分类领域应用非常广泛,支持向量机的分类方法可以被推广到解决回归问题,这个就称为支持向量回归。支持向量回归算法生成的模型同样地只依赖训练数据集中的一个子集(和支持向量分类算法类似)。

#加载SVR模型算法库fromsklearn.svmimportSVR#训练集X=[[0,0],[2,2]]y=[0.5,2.5]#创建SVR回归模型的对象clf=SVR()#利用训练集训练SVR回归模型clf.fit(X,y)"""SVR(C=1.0,cache_size=200,coef0=0.0,degree=3,epsilon=0.1,gamma='auto_deprecated',kernel='rbf',max_iter=-1,shrinking=True,tol=0.001,verbose=False)"""clf.predict([[1,1]])

8、KNN回归

在数据标签是连续变量而不是离散变量的情况下,可以使用KNN回归。分配给查询点的标签是根据其最近邻居标签的平均值计算的。

X=[[0],[1],[2],[3]]y=[0,0,1,1]fromsklearn.neighborsimportKNeighborsRegressorneigh=KNeighborsRegressor(n_neighbors=2)neigh.fit(X,y)print(neigh.predict([[1.5]]))

9、决策树回归

决策树也可以应用于回归问题,使用sklearn的DecisionTreeRegressor类。

fromsklearn.treeimportDecisionTreeRegressorX=[[0,0],[2,2]]y=[0.5,2.5]clf=DecisionTreeRegressor()clf=clf.fit(X,y)clf.predict([[1,1]])

10、神经网络

神经网络使用slearn中MLPRegressor类实现了一个多层感知器(MLP),它使用在输出层中没有激活函数的反向传播进行训练,也可以将衡等函数视为激活函数。因此,它使用平方误差作为损失函数,输出是一组连续的值。

fromsklearn.neural_networkimportMLPRegressormlp=MLPRegressor()mlp.fit(X_train,y_train)"""MLPRegressor(activation='relu',alpha=0.0001,batch_size='auto',beta_1=0.9,beta_2=0.999,early_stopping=False,epsilon=1e-08,hidden_layer_sizes=(100,),learning_rate='constant',learning_rate_init=0.001,max_iter=200,momentum=0.9,n_iter_no_change=10,nesterovs_momentum=True,power_t=0.5,random_state=None,shuffle=True,solver='adam',tol=0.0001,validation_fraction=0.1,verbose=False,warm_start=False)"""y_pred=mlp.predict(X_test)

11.RandomForest回归

RamdomForest回归也是一种经典的集成算法之一。

fromsklearn.ensembleimportRandomForestRegressorfromsklearn.datasetsimportmake_regressionX,y=make_regression(n_features=4,n_informative=2,random_state=0,shuffle=False)regr=RandomForestRegressor(max_depth=2,random_state=0,n_estimators=100)regr.fit(X,y)print(regr.feature_importances_)print(regr.predict([[0,0,0,0]]))

12、XGBoost回归

XGBoost近些年在学术界取得的成果连连捷报,基本所有的机器学习比赛的冠军方案都使用了XGBoost算法,对于XGBoost的算法接口有两种,这里我仅介绍XGBoost的sklearn接口。更多请参考:

https://xgboost.readthedocs.io/en/latest/python/index.html

importxgboostasxgbxgb_model=xgb.XGBRegressor(max_depth=3,learning_rate=0.1,n_estimators=100,objective='reg:linear',n_jobs=-1)xgb_model.fit(X_train,y_train,eval_set=[(X_train,y_train)],eval_metric='logloss',verbose=100)y_pred=xgb_model.predict(X_test)print(mean_squared_error(y_test,y_pred))

13、LightGBM回归

LightGBM作为另一个使用基于树的学习算法的梯度增强框架。在算法竞赛也是每逢必用的神器,且要想在竞赛取得好成绩,LightGBM是一个不可或缺的神器。相比于XGBoost,LightGBM有如下优点,训练速度更快,效率更高效;低内存的使用量。对于LightGBM的算法接口有两种,这里我同样介绍LightGBM的sklearn接口。更多请参考:https://lightgbm.readthedocs.io/en/latest/

importlightgbmaslgbgbm=lgb.LGBMRegressor(num_leaves=31,learning_rate=0.05,n_estimators=20)gbm.fit(X_train,y_train,eval_set=[(X_train,y_train)],eval_metric='logloss',verbose=100)y_pred=gbm.predict(X_test)print(mean_squared_error(y_test,y_pred))

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 算法
    +关注

    关注

    23

    文章

    4448

    浏览量

    90720
  • 机器学习
    +关注

    关注

    66

    文章

    8095

    浏览量

    130515

原文标题:入门 | 如何为你的回归问题选择最合适的机器学习方法?

文章出处:【微信号:AI_shequ,微信公众号:人工智能爱好者社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    机器学习算法概念介绍及选用建议

    在从事数据科学工作的时候,经常会遇到为具体问题选择最合适算法的问题。虽然有很多有关机器学习算法
    的头像 发表于 01-14 13:49 3572次阅读
    <b class='flag-5'>机器</b><b class='flag-5'>学习</b><b class='flag-5'>算法</b>概念介绍及选用建议

    【下载】《机器学习》+《机器学习实战》

    ]目录:第一部分 分类第1章 机器学习基础  2第2章 k-近邻算法   15第3章 决策树   32第4章 基于概率论的分类方法:朴素贝叶斯   53第5章 Logistic回归  
    发表于 06-01 15:49

    【阿里云大学免费精品课】机器学习入门:概念原理及常用算法

    的周围环境的反馈来做出判断。课程大纲如下:第1 章 : 机器学习概念、原理和应用场景•机器学习基础概念•机器
    发表于 06-23 13:51

    如何选择机器学习的各种方法

    的这篇博客,讲述了如何选择机器学习的各种方法。 另外,Scikit-learn 也提供了一幅清晰的路线图给大家选择:其实机器学习的基本
    发表于 03-07 20:18

    干货 | 这些机器学习算法,你了解几个?

    优胜者。 当然,你尝试的算法必须适合你的问题,这就是选择正确的机器学习算法的重要性之所在。打个比方,如果你需要清理你的房子,你可以使用真空吸
    发表于 09-22 08:30

    机器学习回归任务

    常见线性回归理论与算法实现
    发表于 10-29 11:09

    说说如何选择最合适你的ARM开发板7.13

    说说如何选择最合适你的ARM开发板7.13
    发表于 10-09 14:53 7次下载

    人工智能 | 深度学习涉足美妆领域,网红博主要失业?

    AI 帮你选择最合适的眼妆
    的头像 发表于 05-27 17:22 3035次阅读

    怎么选择最合适的预测性维护传感器?

    时,需选择最合适的传感器,以确保能够检测、诊断甚至预测故障,这点至关重要。 目前有许多传感器被用于检测旋转机器及其负载中的故障,从而避免意外停机。由于许多旋转机器(电机、齿轮、泵和涡轮
    的头像 发表于 05-24 10:08 1883次阅读
    怎么<b class='flag-5'>选择</b><b class='flag-5'>最合适</b>的预测性维护传感器?

    17个机器学习的常用算法

    根据数据类型的不同,对一个问题的建模有不同的方式。在机器学习或者人工智能领域,人们首先会考虑算法学习方式。在机器
    的头像 发表于 08-11 11:20 1498次阅读

    17个机器学习的常用算法

    的想法,这样可以让人们在建模和算法选择的时候考虑能根据输入数据来选择最合适算法来获得最好的结果。 1.监督式
    的头像 发表于 08-22 09:57 1536次阅读
    17个<b class='flag-5'>机器</b><b class='flag-5'>学习</b>的常用<b class='flag-5'>算法</b>!

    机器学习领域将算法按照学习方式分类进行问题解决

    根据数据类型的不同,对一个问题的建模有不同的方式。在机器学习或者人工智能领域,人们首先会考虑算法学习方式。在机器
    的头像 发表于 11-22 10:40 630次阅读

    选择最合适的预测性维护传感器

    选择最合适的预测性维护传感器
    的头像 发表于 12-29 10:02 639次阅读
    <b class='flag-5'>选择</b><b class='flag-5'>最合适</b>的预测性维护传感器

    机器学习算法总结 机器学习算法是什么 机器学习算法优缺点

    机器学习算法总结 机器学习算法是什么?机器
    的头像 发表于 08-17 16:11 1026次阅读

    PCB表面处理的选择和优化,如何选择最合适的工艺?

    PCB表面处理的选择和优化,如何选择最合适的工艺?
    的头像 发表于 11-24 17:16 351次阅读