1、多目标融合简介
将多个推荐/优化算法通过特定的方式组合,得到综合模型。
相关概念:模型集成、集成学习
融合方法总结
- 线性加权融合法
- 交叉融合法
又被称为Blending方法,不同算法的结果着眼点不同,能满足不同用户的需求,直接穿插在一起进行展示。这种融合方式适用于同时能够展示较多条结果的推荐场景,并且往往用于算法间区别较大,如分别基于用户长期兴趣和短期兴趣计算获得的结果。
使用blending进行ensemble代码:https://github.com/emanuele/kaggle_pbr - 瀑布融合法
多个模型串联,上一个模型的输出作为这个模型的输入;相当于把每一个模型当作一个过滤器; - 特征融合法
通过使用不同的数据来源,抽取不同的特征,输入到推荐模型中进行训练,然后将结果合并。 - 数据预测法
预测算法:SVM,随机森林,决策树和GDBT等
对每个预测算法再进行一次预测,即对不同的算法的预测结果,训练第二层的预测算法再次进行预测,并生成最终的预测结果。 - 分类器Boosting思想
既是多个预测器,下一个预测器着重预测上一个预测器的预测错误的样本,然后把上一个预测器和他的预测权重保留 - Stacking堆叠法
相对比较高级的模型融合法,也是本文的重点。Stacking的思路是基于原始数据,训练出多个基学习器,然后将基学习器的预测结果组合成新的训练集,去训练一个新的学习器。 - 非线性的树模型Additive Groves(AG)
据描述为很棒的idea
2、GDBT算法
算法实现和实例应用还需再进一步学习
# Sklearn 实现 GBDT 可视化
import numpy as np
import pydotplus
from sklearn.ensemble import GradientBoostingRegressor
X = np.arange(1, 11).reshape(-1, 1)
y = np.array([5.56, 5.70, 5.91, 6.40, 6.80, 7.05, 8.90, 8.70, 9.00, 9.05])
gbdt = GradientBoostingRegressor(max_depth=4, criterion ='mse').fit(X, y)
# import os
# os.environ["PATH"] += os.pathsep + 'C:/Program Files/Graphviz 2.44.1/bin/'
from IPython.display import Image
from pydotplus import graph_from_dot_data
from sklearn.tree import export_graphviz
# 拟合训练6棵树
sub_tree = gbdt.estimators_[5, 0]
dot_data = export_graphviz(sub_tree, out_file=None, filled=True, rounded=True, special_characters=True, precision=2)
graph = pydotplus.graph_from_dot_data(dot_data)
Image(graph.create_png())
2019年研究生数模优秀论文中多目标融合的实现:
GBDT模型和原有特征拼接起来,输入到一个基于 TensorFlow 的多层神经网络模型。
神经网络代码参考:https://github.com/aymericdamien/TensorFlow-Examples/tree/master
多目标融合参考资料:
1、多模型融合推荐算法——从原理到实践
2、多任务模型融合如何平衡?
3、多目标建模总结
4、模型融合方法最全总结!——提及Stacking堆叠法
5、模型融合——提及AG模型
GBDT参考资料: