[《Interpretable Machine Learning》 Christoph Molnar](https://christophm.github.io/interpretable-ml-book/index.html)
内容围绕:对于一个训练好的线性模型,怎样去向模型使用者(客户)解释这个模型(参数含义、为什么得会得出这种预测结果)。
上图为一个线性回归的单个实例,最后一项为误差。
1. 模型是否“正确”,需要用到的数据间遵循一定假设
数据关系是线性的;训练结果分布是正态的;误差项的方差是恒定的;实例间是独立的;输入特征是真实常量,不存在误差;特征间不存在强相关性。
对于训练用的数据,可以从以上角度评估模型质量。
2. 权重β的解释——取决于对应特征的类型
线性模型中,特征可以归类为:数值特征(比如气温)、二进制特征(性别0/1)、范畴特征(天气:下雨、阴天、晴天,使用one-hot编码,让具体类别有自己的二进制选项)
截距β0:只有当特征被标准化(均值为0,标准差为1)时,截距的解释才有意义,而不应被理解为,x都为0的实例的预测结果。标准化后,截距反映了一个特征值=平均值的实例预测结果。
3. 特征x的解释
数值特征、二进制特征和范畴特征:其他特征不变的情况下,x改变一个单位,y就改变β单位,非常直观的y=β*x的线性变化。
4. R-squared measurement——衡量模型可解释程度(个人理解为模型预测结果的合理程度)
R-squared 公式
SSE:误差项平方和
SST:数据方差平方和
个人理解为,SSE越小,说明误差越小,模型越准确,R方更接近1,认为模型能够很好解释数据;反之同理。
改进后的R-squared 公式:
原公式中 R方的值会随特征数的增加而增大(数据增加,SST增大),改进为
n:实例数 p:特征数
5. 特征的重要程度
书中用到权重β的t统计量
SE为标准差;
这个公式告诉我们:一个特征的重要性随着权重的增加而增加。直观上这点就没什么问题。个人理解为,计算出的权重误差越大=对正确权值的把握越小,说明对应特征越不稳定,就越不重要。
6. 将解释可视化
6.1 权值图
上图是基于天气等特征,预测自行车出租量的线性回归模型权重图,线段代表95%置信区间内的落值。通过权图可以直观的了解特征对结果的影响,正负,强弱,稳定程度等。由于特征的单位不同,在拟合前,可以通过调整特征(均值为0和标准差=1)使权重更具可比性。
6.2 影响图
直观上,影响=w*x,理解为这个特征对结果的影响大小
上面箱型图中,中间竖线代表影响的中位数,盒子长度代表所有影响值分布的25%~75%内范围(一半数量),剩余的由水平线和点表示。
图数据中可理解为,对于自行车租借量,贡献最大的是温度特征和天数特征,它们反映了自行车租赁随时间的变化趋势。温度对预测的影响范围很广。天数特征产生从0到较大的正贡献,是因为采集数据的第一天具有非常小的影响,并且该特征的权重为正(4.93),意味着影响随着时间的推移而持续增加,并且在数据采集的最后一天达到最高。
注意,对于权值为负的特征,实例之所以产生正影响是因为特征值也是负数。分析时需要关注下符号。
7. 解释单个实例
给定一个具体实例,分别计算出每项的影响值(w*x),标在影响图中就可以啦。
下面列出这个例子的各个特征值
如何结合模型解释这个实例呢?
“训练数据预测结果的平均值是4504。相比之下,该实例的预测较小,只预测了1571辆自行车。影响图揭示了原因。箱形图显示了数据集所有实例的影响分布,叉叉显示了该实例的影响。该实例有一个低温效应,因为这一天的温度是2度,与其他大多数日子相比是低的(记住,温度特征的权重是正的)。另外,与其他数据实例相比,趋势特性“days_since_2011”的影响较小,因为该实例来自2011年初(数据第5天),而且趋势特性的权重也为正。”
8. 解释多类别(范畴)特征的影响
有多个类别的特征(天气:阴天、小雨、大雪…)要如何编码,不同的编码方式对应不同的权重解释。
假设有三种类别(A、B、C)的范畴特征,选六个实例,前两个是A类,中间两个B类,最后两个C类。
第一种:Treatment coding,这种编码方式下,每个类别的权重是对该类别与参考类别预测的差异(理解为一个普通的w,不用想太多)
每行表示一个实例,列表示特征,第一列表示截距β0,所以一直为1,第二列表示B类、第三列表示C类,B和C都为0就表示A类;如果单独增加A类的列话,线性方程就无法计算出权值唯一解。
特征矩阵:1 0 0
1 0 0
1 1 0
1 1 0
1 0 1
1 0 1
第二种:Effect coding,这种编码方式下,每个类别的权重是该类别与总体平均值的y差(假设所有其他特征为0或为参考类)。
这里理解为,此时特征矩阵中0和1代表的已经不是类别,而是差值,差几个β0,差几个β1这样。
特征矩阵:1 -1 -1
1 -1 -1
1 1 0
1 1 0
1 0 1
1 0 1
第一列代表截距β0,也是总体平均值(前面提到截距应被标准化);第二列的权重β1,代表B类和总体平均的差,所以B类的影响应为 β0+β1(B类影响比截距多出β1),同理C类的影响为β0+β2;A类对总体平均的差为 -(β1+β2),影响为β0 -(β1+β2),这里我理解为了保证β0是均值,因此A类的差值要分布在β0的另一侧,所以六个实例的特征矩阵如上
第三种:Dummy coding,忽略截距,每类的β代表该类计算出的y的平均值(假设所有其他特征为0或为参考类)
特征矩阵:1 0 0
1 0 0
0 1 0
0 1 0
0 0 1
0 0 1
很好理解 ,是哪类就给哪类标1,忽略截距是为了让权重有解
P.S 这里书中应是把每个范畴特征单独拿出来做解释,本节β0 β1等权重是针对这个范畴特征下的每个类,不是大模型的特征。
范畴特征编码更深入讨论:http://stats.idre.ucla.edu/r/library/r-library-contrast-coding-systems-for-categorical-variables/
http://heidiseibold.github.io/page7/
8. 系数线性模型(减少特征)
特征比较多的时候,如何缩减特征;
Lasso是一种将稀疏性引入线性回归模型的自动且简便的方法。Lasso表示“最小绝对收缩和选择算子”,在线性回归模型中应用时,对特征权重进行选择和正则化。
对于权值优化的最小化问题:
Lasso引入了一个正则项:
||β||1为特征向量的L1范式,对大权重惩罚,λ控制正则化的强度,通常用交叉验证调整。λ越大,越多权值为0。
对权重的压缩效果:
第一行为非0权重数量。
应用到自行车租赁的模型中:
只剩下了影响最大的两个特征。
其他的稀疏方法:
a. 预处理式:请专家筛选特征;只考虑与目标之间的相关性超过某个阈值的特征。
b. 分步式:前向筛选,每次只选择一个使模型整体工作最好的特征,一个一个添加;反向筛选,和前者相反,保证效果的前提下,从所有特征开始,逐个减少。
9. 线性模型解释性的优缺点
原文:https://christophm.github.io/interpretable-ml-book/limo.html
笔记:
优点:1.加权求和,简单透明。
2.非常普及使用方便,有许多案例。
3.能找到最优权值。
缺点:
1. 特征中的非线性关系得手动处理。
2. 过于简化复杂现实,预测性能不佳。
3. 权重的解释不直观,因为特征间会具有相关性。
来源:CSDN
作者:XAI_
链接:https://blog.csdn.net/qq_34813925/article/details/104434832