大家所熟悉的机器学习算法的回归结果通常就是一个变量,而最近项目中遇到一个问题,希望利用多输入变量预测多输出变量,也就是multiple input -multiple output。拿到这个问题,我的思路有两个,一个是利用神经网络算法,毕竟其自身的构造特点就是多输入多输出;另一个是对每一个输出变量构造回归模型,有几个输出就有几个回归模型,当然最好都用同一种算法。在自己思考过后,在网上查阅了资料发现,原来处理多输入多输出回归问题,还有其它高效的处理办法。
具体操作见文献1,具体操作都以python中的sklearn为例,不再赘述,这里仅将该文章中的做法进行归纳。
一、固有的多输出回归算法
以下算法(不局限于列举内容)自身支持多输出回归预测,无需改造。
1、线性回归
2、K近邻
3、随机森林
二、包装器多输出回归算法
以下方法需要对现有算法进行适当加工后,实现多输出回归。
1、每个输出的单独模型
其思想与我的第一种想法一致,直接借助python中的MultiOutputRegressor即可轻松实现。
2、每个输出的链接模型
其核心思想是创建线性模型序列,即:序列中的第一个模型使用输入并预测一个输出。第二模型使用第一模型的输入和输出进行预测;第三个模型使用前两个模型的输入和输出进行预测,依此类推。
使用scikit-learn库中的RegressorChain类来实现。
总结:
有时候当我们遇到一个问题时,我们要勤于思考,有属于自己的一个或者几个想法,之后再尝试查找资料,看别人是怎么处理同类问题的,这个过程能验证我们想法的可行性,或许还能发现更加高效的处理方法。

参考文献:
【1】https://zhuanlan.zhihu.com/p/139746972
【2】https://www.zhihu.com/question/391160005

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐