关注微信公众号“百面机器学习”获得更多机器学习面试题
问题引入
笔者在所有的面试中都会被问答到项目中的具体特征的情况,包括特征是如何得到的,为啥这个特征有效,做了哪些特征筛选,特征重要性是如何看的,和线性回归、逻辑回归这种广义线性模型不一样,简单的决策树的特征重要性又没有类似线性回归的系数可以用来说明特征重要性,那么,树模型的特征重要性是怎么计算的呢?
问题解答
对于简单的的决策数,sklearn中是使用基尼指数来计算的,也就是基尼不纯度,决策数首先要构造好后才可以计算特征重要性,当然,我们在构建数的过程中已近计算好了特征重要性的一些值,如基尼指数,最后我们得到特征重要性的话,就直接将基尼指数做些操作就可以了。在sklearn中,feature_importances_应当就是这个Gini importance,也是就
N_t / N * (impurity - N_t_R / N_t * right_impurity
- N_t_L / N_t * left_impurity)
其中,N是样本的总数,N_t是当前节点的样本数目,N_t_L是结点左孩子的样本数目,N_t_R是结点右孩子的样本数目。impurity直译为不纯度(基尼指数或信息熵),这里的实现的是基尼指数。假如我们有样本如下:
X = [[1,0,0], [0,0,0], [0,0,1], [0,1,0]]
y = [1,0,1,1]
我们得到的决策数是这样子的,那么可以算出
X0 的 feature_importance = (2 / 4) * (0.5) = 0.25
X1 的 feature_importance = (3 / 4) * (0.444 - (2 / 3 * 0.5)) = 0.083
X2的feature_importance = (4 / 4) * (0.375 - (3 / 4 * 0.444)) = 0.042
上述三个值加起来不位1,所有我们再归一化就可以了
https://www.jianshu.com/p/cfd7e2d385da
https://blog.csdn.net/DKY10/article/details/84843864
网友评论