作者:邵可佳( 墨迹天气 算法专家 )
大家好,上次我们探索了一下和决策树模型相关的话题,但都没有深入展开去讲
今天闲来无事,和大家再聊聊决策树模型,这次谈论的话题稍微复杂一点
不要说什么决策树out之类的话,我可是不赞同的哦
也同时给大家分享几点工作中的心得,希望对大家研究算法带来新的启发和思路。
01 决策树的目标函数
通常我们在设定机器学习任务的时候,只需要使用已知的几种决策树框架,使用系统自带的目标函数即可,例如xgboost回归任务时就可以选用reg:squarederror
但有时候我们会面临一些较复杂的任务,目标函数也会变得很复杂(例如不是线性变化的loss),这时候就可以通过自定义目标函数的方式实现
相信XGBoost自定义目标函数就难倒了一批人:
一是大家很少会用到自定义目标函数的场景
二是xgboost自定义目标函数的门槛要高
神经网络自定义lossXGBoost的官方文档说明,目标函数中必须提供两个输出:grad 和 hess
https://xgboost.readthedocs.io/en/stable/tutorials/custom_metric_obj.html
grad代表梯度,hess代表grad的偏导数
注意:这里国内大部分文章将偏导和偏导数混淆不清,很容易误导人,一字之差含义却大不相同
我们一定要注意区分导数和导函数,有的文章甚至堂而皇之说导函数简称导数,简直给本已非常模糊的概念变得更加难懂,真是一场英文知识到中文知识翻译的重大车祸现场
这里明确下:
导数英文 Derivative
导函数英文 Derivative function (function一字之差,万万不能少)
偏导默认是偏导函数,求出来的结果是一个表达式,而偏导数是一个数值,所以求偏导数的方式也是不同的:
scipy.misc.derivative 用于求解导函数值 (简称导数)
sympy.diff 用于取得代数形式的导函数
<