北京网站制作公司兴田德润可以不,空间设计网站大全,怎样做网站的优化、排名,怎样创建网站流程目录 font colorblue size4 face楷体算法解构font colorblue size4 face楷体代码 算法解构
Permutation Importance适用于表格型数据#xff0c;其对于特征重要性的评判取决于该特征被随机重排后#xff0c;模型表现评分的下降程度… 目录 font colorblue size4 face楷体算法解构font colorblue size4 face楷体代码 算法解构
Permutation Importance适用于表格型数据其对于特征重要性的评判取决于该特征被随机重排后模型表现评分的下降程度。其数学表达式可以表示为
输入训练后的模型m训练集或验证集或测试集D模型m在数据集D上的性能评分s对于数据集D的每一个特征j 对于K次重复实验中的每一次迭代k随机重排列特征j构造一个被污染的数据集 D c k , j D c_{k, j} Dck,j计算模型m在数据集 D c k , j D c_{k, j} Dck,j上的性能评分 s k , j s_{k, j} sk,j特征j的重要性分数 i j i_{j} ij则可以记作 i j s − 1 / K ∑ k 1 K s k , j i_js-1 / K \sum_{k1}^K s_{k, j} ijs−1/Kk1∑Ksk,j L. Breiman, “Random Forests”, Machine Learning, 45(1), 5-32, 2001. 代码
from sklearn.datasets import load_diabetes
from sklearn.model_selection import train_test_split
from sklearn.linear_model import Ridge
diabetes load_diabetes()
X_train, X_val, y_train, y_val train_test_split(diabetes.data, diabetes.target, random_state0)model Ridge(alpha1e-2).fit(X_train, y_train)
model.score(X_val, y_val)scoring [r2, neg_mean_absolute_percentage_error, neg_mean_squared_error]
# scoring参数可以同时加入多个计算指标这样比重复使用permutation_importance更有效率因为预测值能被用来计算不同的指标
r_multi permutation_importance(model, X_val, y_val, n_repeats30, random_state0, scoringscoring)for metric in r_multi:print(f{metric})r r_multi[metric]for i in r.importances_mean.argsort()[::-1]:if r.importances_mean[i] - 2 * r.importances_std[i] 0:print(f {diabetes.feature_names[i]:8}f{r.importances_mean[i]:.3f}f /- {r.importances_std[i]:.3f})
输出为
r2s5 0.204 /- 0.050bmi 0.176 /- 0.048bp 0.088 /- 0.033sex 0.056 /- 0.023
neg_mean_absolute_percentage_errors5 0.081 /- 0.020bmi 0.064 /- 0.015bp 0.029 /- 0.010
neg_mean_squared_errors5 1013.903 /- 246.460bmi 872.694 /- 240.296bp 438.681 /- 163.025sex 277.382 /- 115.126相比而言树模型通常基于不纯净度的下降来判断特征重要性该重要性通常是基于训练集的当模型过拟合时特征的重要性则具有误导性。在此情况下看似重要的特征可能对于模型上线后的遇到的新数据并没有令人满意的预测能力。
同时基于不纯净度的特征重要性容易受到高数量类别属性的影响High Cardinality Features所以那些数值型变量往往排名靠前。而Permutation Importance 对模型的特征没有偏见也不局限于特定的模型类别适用性较广。请注意。如果特征有较强的多重共线性建议只取一个重要的特征方法可查看官方示例。