Python社区  »  机器学习算法

如何为回归问题,选择最合适的机器学习方法?

人工智能头条 • 1 年前 • 734 次点击  


在目前的机器学习领域中,最常见的三种任务就是:回归分析、分类分析、聚类分析。在之前的文章中,我曾写过一篇sklearn 与分类算法。那么什么是回归呢?

回归分析是一种预测性的建模技术,它研究的是因变量(目标)和自变量(预测器)之间的关系。

回归分析在机器学习领域应用非常广泛,例如,商品的销量预测问题,交通流量预测问题。那么,如何为这些回归问题选择最合适的机器学习算法呢?

01

常用回归算法

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

1. 线性回归

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

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

2. 岭回归

上述的线性回归算法使用最小二乘法优化各个系数,对于岭回归来说,岭回归通过对系数进行惩罚(L2范式)来解决普通最小二乘法的一些问题。

例如,当特征之间完全共线性(有解)或者说特征之间高度相关,这个时候适合用岭回归。

3. Lasso 回归

Lasso 是一个估计稀疏稀疏的线性模型。它在某些情况下很有用,由于它倾向于选择参数值较少的解,有效地减少了给定解所依赖的变量的数量。

Lasso 模型在最小二乘法的基础上加入L1范式作为惩罚项。

4. Elastic Net 回归

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

5. 贝叶斯岭回归

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

6. SGD 回归

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

7. SVR

众所周知,支持向量机在分类领域应用非常广泛,支持向量机的分类方法可以被推广到解决回归问题,这个就称为支持向量回归。

支持向量回归算法生成的模型同样地只依赖训练数据集中的一个子集(和支持向量分类算法类似)。

8. KNN 回归

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

9. 决策树回归

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

10. 神经网络

神经网络使用 slearn 中 MLPRegressor 类实现了一个多层感知器(MLP),它使用在输出层中没有激活函数的反向传播进行训练,也可以将衡等函数视为激活函数。

因此,它使用平方误差作为损失函数,输出是一组连续的值。

11. RandomForest 回归

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

12. XGBoost 回归

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

更多请参考: 

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

13. LightGBM 回归

LightGBM 作为另一个使用基于树的学习算法的梯度增强框架。在算法竞赛也是每逢必用的神器,且要想在竞赛取得好成绩,LightGBM是一个不可或缺的神器。

相比于 XGBoost,LightGBM 有如下优点,训练速度更快,效率更高效;低内存的使用量。

对于 LightGBM 的算法接口有两种,这里我同样介绍 LightGBM 的 sklearn 接口。

更多请参考:

https://lightgbm.readthedocs.io/en/latest/

02

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

为了方便小伙伴们练习机器学习中的相关项目,这里整理一些回归竞赛问题,帮助入门机器学习的小伙伴们更加深入的掌握机器学习中的回归问题。

入门级比赛:

1. Kaggle——房价预测

这个比赛作为最基础的回归问题之一,很适合入门机器学习的小伙伴们。

网址:

https://www.kaggle.com/c/house-prices-advanced-regression-techniques

经典解决方案: 

1. XGBoost 解决方案:

 https://www.kaggle.com/dansbecker/xgboost

2. Lasso 解决方案: 

https://www.kaggle.com/mymkyt/simple-lasso-public-score-0-12102

进阶比赛:

1. Kaggle——销售量预测

这个比赛作为经典的时间序列问题之一,目标是为了预测下个月每种产品和商店的总销售额。

网址:

https://www.kaggle.com/c/competitive-data-science-predict-future-sales

经典解决方案:

LightGBM: 

https://www.kaggle.com/sanket30/predicting-sales-using-lightgbm

XGBoost:

https://www.kaggle.com/fabianaboldrin/eda-xgboost

第一名解决方案:

https://www.kaggle.com/c/competitive-data-science-predict-future-sales/discussion/74835#latest-503740

TOP 比赛方案:

1. Kaggle——餐厅访客预测

网址:

https://www.kaggle.com/c/recruit-restaurant-visitor-forecasting

解决方案:

1st 方案:

https://www.kaggle.com/plantsgo/solution-public-0-471-private-0-505

7th 方案:

https://www.kaggle.com/c/recruit-restaurant-visitor-forecasting/discussion/49259#latest-284437

8th 方案:

https://github.com/MaxHalford/kaggle-recruit-restaurant

12th 方案:

https://www.kaggle.com/c/recruit-restaurant-visitor-forecasting/discussion/49251#latest-282765

2. Kaggle——CorporaciónFavoritaGrocery 销售预测

网址:

https://www.kaggle.com/c/favorita-grocery-sales-forecasting

解决方案:

1st 方案: 

https://www.kaggle.com/c/favorita-grocery-sales-forecasting/discussion/47582#latest-360306

2st 方案:

https://www.kaggle.com/c/favorita-grocery-sales-forecasting/discussion/47568#latest-278474

3st 方案:

https://www.kaggle.com/c/favorita-grocery-sales-forecasting/discussion/47560#latest-302253

4st 方案:

https://www.kaggle.com/c/favorita-grocery-sales-forecasting/discussion/47529#latest-271077

5st 方案:

https://www.kaggle.com/c/favorita-grocery-sales-forecasting/discussion/47556#latest-270515

6st 方案:

https://www.kaggle.com/c/favorita-grocery-sales-forecasting/discussion/47575#latest-269568

作者:何从庆,湖南大学计算机硕士,主要研究方向:机器学习与法律智能。 

Github主页:

https://github.com/hecongqing 

微信公众号:  AI算法之心


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/31696
 
734 次点击  
分享到微博