ITPub博客

首页 > 人工智能 > 机器学习 > 哪些特征对我的机器学习模型影响最大?

哪些特征对我的机器学习模型影响最大?

机器学习 作者:dicksonjyl560101 时间:2018-12-14 14:55:10 0 删除 编辑

哪些特征对我的机器学习模型影响最大?

 

 

http://blog.sina.com.cn/s/blog_cfa68e330102zelh.html

 

 

测量特征重要性没有灵丹妙药,排列重要性是常用的方法之一。与其他技术相比,它具有以下优点。

  • 快速计算

  • 易于使用和理解

  • 它具有我们想要的特征重要性度量的属性。

 

它是如何工作的 ?

在训练机器学习模型之后计算置换重要性。这种技术向训练有素的模型提出问题,如果我们在保留目标和所有其他列的同时随机打乱一列验证数据,那将如何影响预测机器学习模型的准确性呢?

对单个列的随机打乱应该会导致预测不那么准确,并且我们远不及任何实际数据。因此,对于一个具有高度重要性的特征,这种 random-reshuffle会对机器学习模型预测的准确性造成更大的损害。

Fig.1 Random shuffle of 'Height at age 10(cm)' col

如图1所示,只有“10岁(cm)时的高度”这一列的值被reshuffled ,而其他列中的值与之前一样。如果这一列对训练后的模型非常重要那么这种reshuffle会严重影响性能。

 

Python 代码示例

示例数据集是FIFA 2018 Statistics(https://www.kaggle.com/mathan/fifa-2018-match-statistics#FIFA%202018%20Statistics.csv),下面你可以看到一个简单的RandomForestClassifier正在训练,以预测来自球队的球员是否赢得了“Man of the match”奖。Python代码如下:


import numpy as np

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
 
df = pd.read_csv('FIFA 2018 Statistics.csv')
y = df['Man of the Match']=='Yes'
features = [i for i in df.columns if df[i].dtype in [np.int64]]
X = df[features]
train_X, val_X, train_y, val_y = train_test_split(X, y, random_state=1)
model = RandomForestClassifier(random_state=0).fit(train_X, train_y)

然后我们使用'eli5'库来计算排列重要性,Python代码如下:


import eli5

from eli5.sklearn import PermutationImportance
 
perm = PermutationImportance(model, random_state=1).fit(val_X, val_y)
eli5.show_weights(perm, feature_names=val_X.columns.tolist())

 

 

解释结果

特征从上到下依次降低。每行中的第一个数字表示通过该特征的reshuffle 减少了模型性能。第二个数字是特征列的不同reshuffle 的性能降低的随机性的度量。

 

 

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29829936/viewspace-2285277/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
行万里路,读万卷书,阅无数人。 吃货一枚,爱吃湘菜,川菜,粤菜与杭帮菜,尝遍天下美食。 摄影爱好者,游遍名川大山,江河胡海,赏遍人间春色。 爱看影,尤其是港片,好莱坞大片。英文名:DicksonJin, 网名:风一样的BOY。精通SAP供应链咨询。2017年开始研习人工智能。

注册时间:2014-08-27

  • 博文量
    2302
  • 访问量
    3466149