首页 > > > R语言可解释机器学习:利用控制变量法进行敏感度分析
作者:黄天元,复旦大学博士在读,热爱数据科学与开源工具(R),致力于利用数据科学迅速积累行业经验优势和科学知识发现,涉猎内容包括但不限于信息计量、机器学习、数据可视化、应用统计建模、知识图谱等,著有《R语言数据高效处理指南》。知乎专栏:R语言数据挖掘。邮箱:huang.tian-yuan@qq.com.欢迎合作交流
控制变量法,就是对于多因素问题提,通过控制所有其他因素,只改变一个因素,查看这个因素对响应变量影响的方向与程度的方法。对于一些黑箱模型,为了尝试了解其单个解释变量的效果,可以尝试把其他变量都确定起来,然后仅改变一个解释变量从而观察响应变量变化的方法来对单个解释变量进行解析。
在DALEX包中,可以用predict_profile进行实现。需要注意的是,这个方法也就是针对个体来进行的。也就是必须针对单个样本,来进行控制变量分析。这种方法便于个体之间进行比较,同时也便于不同的方法进行比较。
与此同时,在开展这个研究中需要注意以下几点(参考11 Ceteris-paribus Profiles | Explanatory Model Analysis):
1、解释变量存在相关性时,这个方法是危险的。比如用身高和体重来预测一个人的体积,严格控制身高来改变体重,是不切实际的。因为两者本来就存在一定的相关关系。
2、变量过多的情况下(特别是分类变量),那么计算量非常大,也没有必要。
3、如果变量之间具有一定的交互作用,那么这种方法就不适用(这种方法的哲学思维就是变量之间应该是独立的)。
下面举个简单例子:
library(DALEX)
# 取出一个个体
new_dragon <- data.frame(year_of_birth = 200,
height = 80,
weight = 12.5,
scars = 0,
number_of_lost_teeth = 5)
# 拟合线性模型
dragon_lm_model4 <- lm(life_length ~ year_of_birth + height +
weight + scars + number_of_lost_teeth,
data = dragons)
# 进行黑箱解析
dragon_lm_explainer4 <- explain(dragon_lm_model4, data = dragons, y = dragons$year_of_birth,
label = "model_4v")
# 对其中的三个变量进行控制变量分析
dragon_lm_predict4 <- predict_profile(dragon_lm_explainer4,
new_observation = new_dragon,
variables = c("year_of_birth", "height", "scars"))
# 可视化
plot(dragon_lm_predict4,
variables = c("year_of_birth", "height", "scars"))
我们可以判断,在scars上升的时候,响应变量也急剧上升,而其他变量也有影响,但是影响程度显然不如scars大。
原文作者:;如有侵权,请联系管理员删除。