4.1 线性回归
线性回归模型是什么:
将目标预测为特征输入的加权和
i.e.
表示截距,不与特征相乘
表示误差,即预测结果与真实结果直接的差,一般假设这些差服从高斯分布
我们可以使用各种方法来估计最佳权重,常用的方法有最小二乘法
线性回归的最大优点是线性:他使估计过程变得简单
最重要的是,这些线性方程在模块化水平(即权重)上易于理解。
估计的权重是带有置信区间的
模型是否为“正确”模型取决于以下方面
- 线性:
- 正态性:
- 同方差性
- 独立性
- 固定特征
- 不存在多重共线性
4.1.1解释
线性回归模型中权重的解释取决于相应特征的类型:
- 数值特征:将数值特征增加一个单位会根据权重直接改变估计结果。e.g 房屋面积大小
- 二分类特征:每个实例都有两个可能的值。e.g 房子有没有花园
- 具有多个类别的分类特征:具有固定数量的可能值的特征。一种处理多种类别的解决方案是one-hot encoding。
- 截距项:截距是“常量特征”的特征权重,对于所有实例都是1。解释为:所有数值特征为0,分类特征为参照类别下的实例。它通常没有意义,只有当特征标准化(均值为0,标准差为1)时, 才有意义。在这种情况下,截距反映当所有特征都处于其均值的时候instance的预测结果。
数值特征的解释
当其他特征保持不变的时候,特征增加一个单位,预测结果增加。
分类特征的解释
当其他特征保持不变的时候,特征从参照类别改变为其他类别,预测结果会增加。
R-squared Measurement
R-squared Measurement是另一个解释线性模型的重要度量。
他告诉你模型解释了目标结果的总方差为多少。R-squared越高,模型对数据的解释性就越好。计算公式如下:
的取值范围为,对于根本无法解释数据的模型,,对于能够完美解释数据的模型,
但有一个问题,随模型中的特征数量增加而增加,所以,最好使用调整过后的:
特征重要性
在线性回归模型中,某个特征的重要性可以用它的t-statistic的绝对值来衡量。
它是以标准差为尺度的估计权重:
i.e. 特征的重要性随着权重的增加而增加,随着估计权重的方差增加而减小。
4.1.3 可视化解释
几种可视化解释的方法:
-
权重图
在拟合线性模型前,也可以通过特征放缩来使权重更具可比性
-
效应图
当权重与实际特征值直接相乘时,值会更有意义更值得分析。比如说,一个特征身高的单位从米变成厘米,权重会改变,但在数据中的实际效应基本不变。特征效应的公式:
特征效应的可视化分析可以用箱线图:
4.1.4解释单个实例预测
将特征相应画在对应的效应图上
4.1.5
分类特征的编码
线性回归的标准是Treatment coding
常用的编码:
- Treatment coding
- Effect coding
- Dummy coding
4.1.7稀疏线性模型(解决特征太多的办法)
-
Lasso
Lasso:least absolute shrinkage and selection operator
原来的线性模型,优化权重:
Lasso:
即添加了惩罚项,对大权重进行惩罚 - 线性模型稀疏性的其他办法:
1.预处理办法:
(1)手动选择特征
(2)单变量选择
2.分步方法:
(1)向前选择:用一个特征拟合线性模型,对所有特征进行这个操作,选择最有效的模型(比如最大),然后对其他特征继续重复上述操作。直到达到某个条件,比如预定的特征数目(类似贪心法)
(2)向后选择:和向前选择类似,区别是先把所有特征全加上,逐步删除
线性模型的优点
- 将预测建模为一个加权和,比较透明。Lasso可以确保特征数目仍然很小
- 很多领域,线性回归模型的预测都被接受,知识体系也较为成熟
- 我们可以保证找到最佳权重
- 除了权重还可以得到置信区间,检验和可靠的统计理论。线性模型也有很多拓展(GLM,GAM等)
线性模型的缺点
- 每一个非线性或交互都必须人工构成,并作为input提供给模型
- 性能通常不是那么好
- 权重的解释可能不直观,因为一个特征可能与另一个特征存在某种关系。
e.g. 房屋面积大小和房间数目高度相关。如果这两个features都纳入线性模型,可能:房屋大小获得很大的正权重,房间的数量获得一个负权重。因为房屋面积大小相等时,房间增多,价格通常降低。但这显然与房间数目这一个单一特征不符。因为这两个特征高度相关。
4.2逻辑回归
不同特征类型的逻辑回归模型的解释
:
- 数值特征:特征增加一个单位,估计的概率乘以因子
- 二分类特征:从参照类别变为另一类别,估计的概率乘以因子
- 多分类特征:解决方案是one-hot编码
- 截距:所有数值特征为0,分类特征为参照类别,。截距的解释通常不相关
优缺点:
- advantage:
不仅分类,还给出概率,这是一个优势。比如说,某个instance属于某个类的还是的区别是很大的 - disadvantage
(1)必须手动添加交互
(2)解释更困难,因为权重的解释是乘法而非加法
(3)逻辑回归会收到完全分离的影响。如果某个Feature将两个类完全分开,模型就不能训练了,因为该特征的权重无法收敛,他是无限的。(可以引入权重惩罚和定义权重的先验概率分布来解决)
4.3GLM,GAM和其他模型
对于许多现实问题来说,简单的加权和太过严格。
经典线性模型的三个问题:
(1)给定特征的目标结果不遵循高斯分布
例子:高斯分布会有负值。如果我想预测我在某天骑自行车的时间,他可以预测出负的时间。
解决方案:GLM(广义线性模型)
(2)特征交互
例子:小雨会让我不想骑车。但如果大热天交通高峰期,我希望下雨并骑车,因为这样跟我一起骑车的人会变少,自行车道会更空旷。这种特征的交互,无法由纯加性模型获得
解决方案:手动添加交互
(3)特征和之间的真实关系不是线性的
例子:℃间,温度对我骑车欲望影响是线性的。但超过二十五度时,可能不是线性的了(太热了不想骑车了)
解决方案:GAM(广义加性模型);特征转换
GLM
- GLM的核心概念:保留特征的加权和,但是允许非高斯结果分布
GLM由三个部分组成:连接函数,加权和,定义指数族的概率分布
对不同的预测方向,选择合适的指数族,比方说:
- 预测家里孩子的个数:泊松分布
- 结果一直是正的:指数分布
经典线性模型可以看作GLM的一个特例。经典线性模型中高斯分布的连接函数是一个简单的恒等函数。连接函数会连接特征加权和and高斯分布的均值
例子:
预测喝咖啡的数量:
用高斯分布(经典线性模型):
高斯分布明显不符合实际。
用GLM泊松分布:
符合实际
对GLM权重的解释
假设分布和连接函数共同决定了如何解释估计的权重特征
在咖啡计数的例子中:
我们使用了带有泊松分布和对数连接的GLM,即
为了解释权重,对连接函数取逆
特征影响的解释是乘性的,而不是加性的,因为
解释的最后一个成分是虚构样本的实际权重
交互
线性回归模型假设之一是feature的效应是保持相同的,即与其他特征无关(=没有交互),但这显然与实际情况不符。
那么,如何获得包含交互作用的线性模型呢?
在拟合线性模型之前,在特征矩阵中添加一列表示特征的交互作用
例子:温度和(y/n)工作日的交互作用
GAM
在简单的线性模型中,温度增加一摄氏度,对于人们是否租赁自行车的影响是相同的。e.g.从10℃-11℃,和从40℃-41℃的影响是一样的。但实际上,我们希望前者是正影响,后者是负影响,这样更加符合实际。
线性模型不关心这个,它只是尽力找到最佳的现形平面(利用最小欧氏距离)
对非线性模型建模的方法:
- 特征的简单转换
- 特征分类
-
广义加性模型(GAM)
先上一张图,里面是传统线性模型和以上三种方法,对一个只用温度特征来预测自行车租赁数量的模型。
特征转换
常用的有将特征的对数用作转换。假设函数为fun(x),i.e.用fun(x)代替x作为特征,并照常拟合线性模型。特征的解释也会随之改变
特征分类
实现非线性效应的另一种可能方法是离散化特征,将其转化成分类特征。比如可以将温度feature分箱。
当使用分类温度而不是线性温度时,线性模型will estimate step function(阶跃函数),因为each level gets its own estimate。
特征分类的问题在于:他需要更多的数据,也更容易过拟合。Moreover,我们通常不清楚如何有意义的进行分箱(等距还是等频,分成多少类?)只有有很强的理由情况下,我们才会选择离散化特征
GAM
GAM即广义线性模型,GAM放宽了限制:关系必须是一个简单的加权和。
在GAM中,每一项可以是特征的任意函数。i.e.
即,线性项被取代。
那么如何学习非线性函数呢?
答案是使用样条函数(spline function)
样条曲线是可以组合以近似任意函数的函数(就是用多个函数拼成一个函数的近似函数)
用上面的温度特征预测模型来举例,删除温度特征,并将其替换成4列,每一列代表一个样条函数(通常会有超过4个样条函数,这里只是为了简单表示)
这些新样条特征的每个实例的值取决于实测的温度值,GAM还将估计这些样条权重,并为权重引入惩罚项,以使他们接近0。这有效的降低了样条的灵活性,减少了过拟合。然后通过交叉验证来调整通常用于控制曲线灵活度的平滑度参数
下图表示这些样条函数的外观:
并分配权重:
实际函数由估计权重加权的样条函数之和得到,如图所示:
优点
- 大多数拓展的线性模型非常成熟
- 还可以根据模型进行推断,获得权重的置信区间,显著性检验,预测区间等数据
- 线性模型通常不符合实际,这些拓展的线性模型在过渡到更灵活的模型的同时,保留了一定的可解释性。
缺点
- 线性模型的大多数修改都会降低模型的可解释性
(1)不是恒等函数的任何连接函数(在GAM中)都会使解释复杂化
(2)交互也会使解释复杂化
(3)非线性特征效应:要么不太直观(对数转换),要么不能由单个数字解释(样条函数)
(4)GLM,GAM依赖有关数据生成过程的假设
(5)许多情况下,随机森林和梯度生成树等基于树的集成方法的性能比最复杂的线性模型好。
4.4决策树Decision Tree
树模型可以用来分类或者回归,CART算法(分类与回归树)是最流行的树归纳算法。
优点
- 树结构非常适合捕获数据中特征之间的交互
- 这些数据最终分成不同的组,通常比线性回归中的多维超平面更容易理解,即更容易解释
- 树结构本来也就有一个自然的可视化,直接看结点和边即可
- 不需要特征转换
缺点
- 树不能处理线性关系:在树中,和之间的的任何线性关系,都需要通过分割来近似,这会创建一个阶跃函数,这不是一个practical的方法。因为这会缺乏平滑度,即的一个微小变化,可能会导致的巨大变化。
- 树相当不稳定,training dataset的的一些更改会导致创建一个完全不一样的树。因为每一个分割都依赖于父分割。比方说,将树的根节点换成其他特征,整个树的结构会完全改变,人们很难对结构如此容易发生改变的模型产生信心。
- 虽然Depth比较小的决策树很好理解,但随着深度增加,终端节点的数量成指数倍增长,这会让决策树越来越难理解。
4.5决策规则
决策规则是一个简单的语句,由条件和预测组成,比如:
IF 今天下雨 AND 今天是四月(条件),THEN 明天下雨(预测)
我们可以使用单个决策规则或者多个规则的组合进行预测
决策规则可能是最容易理解的预测模型
决策规则的usefulness通常概括成两个数字:支持度(Support)和准确性(Accuracy)。
- 支持度:规则条件适用的实例所占的百分比称为支持度。
例如,IF size=big AND location=good THEN value=high
用于进行房价预测。假设1000个房屋中有100个满足size=big AND location=good,则规则的支持度为10%。 - 准确度:规则的准确性是衡量规则在规则条件中适用的实例预测正确类别时的准确性的指标。比如说,IF size=big AND location=good THEN value=high适用的100个房屋中,有85个value=high,其余为medium或者low,那么预测的准确度为85%。
人们通常需要在Support和Accuracy中做一个trade-off:通过在条件中添加更多的特征,我们可以获得更高的准确性,但会失去支持度。
组合多种规则的两种主要策略:决策列表(有序)、决策集(无序),这两种方法隐含了对重叠规则问题的两种不同的解决方案
- 决策列表向决策规则引入order
- 决策集类似于决策的民主,某些规则有更高的投票权
有很多种方法可以从数据中学习规则,这里展示三个:
- OneR(从单个特征学习规则):简单性,可解释性
- 顺序覆盖:迭代地学习规则并删除新规则覆盖的数据点
- 贝叶斯规则列表:使用贝叶斯统计将预先挖掘的频繁模式组合到决策列表中。
4.5.1OneR
Definition:从所有特征中,OneR选择一个包含有关感兴趣结果的最多信息的特征,从该特征创建决策规则
尽管OneR代表一个规则,但实际上算法生成多种规则,实际上是所选最佳特征的每个特征值的一个规则。
算法简单快捷:
- 通过选择适当的间隔来离散化连续特征
- 对于每个特征:
(1)在特征值和分类结果之间创建交叉表
(2)对于特征的每个值,创建一个规则,预测具有此特定特征值(可以从交叉表读取)的实例的最常见类别
(3)计算特征规则的总误差 - 选择总误差最小的特征
OneR模型是只有一个分割的决策树,分割不一定像CART一样是二分叉的,而是取决于特征值的数量。
4.5.2顺序覆盖
Definition:重复学习单一规则以创建一个决策列表(或集合),该决策列表(或集合)按照规则覆盖整个数据集。
这边读的不太懂
4.5.3贝叶斯规则列表
频繁模式的预先挖掘
我们使用特征并提取出频繁出现的模式
模式可以是单个特征值size=medium,也可以是特征值的组合size=medium AND location=bad
模式的频率是通过其在数据集中的支持度来测量:
许多算法可以找到这种频繁模式的大致想法,比如Apriori,或FP-Growth
xxxx
优点
很容易解释;有像决策树一样的表达能力,同时更紧凑;预测很快;鲁棒性高;仅为模型选择相关特征;OneR可以作为更复杂算法的基线
缺点
几乎完全忽略回归;特征通常也必须是分类的;在描述特征和输出之间的线性关系时,决策规则是不好的
4.6 RuleFit
RuleFit由两个部分组成:
- 从决策树创建规则
- 用原始特征和新规则作为Input用线性模型拟合
怎么生成规则?
通过分解决策树来构造规则:到树中节点的任何路径都可以转换成决策规则。
梯度提升用于通过用原始特征对进行回归或分类来拟合决策树的集成。
我们从集成的所有树中创建规则
xxxxx
优点
- RuleFit自动将特征交互添加到线性模型。因此,它解决了必须手动添加交互作用项的线性模型问题,对建模非常有帮助
- RuleFit可以处理分类和回归任务
- 创建的规则易于解释(二进制决策规则)
- 即使模型有许多规则,对于单一实例,只有少数规则适用(具有非0的权重)。这提高了局部可解释性
- RuleFit有许多有用的诊断工具:特征重要性、部分依赖图、特征交互。
缺点
作为线性模型,也需要:假设所有其他特征已固定
当有规则重叠时,会变得tricky。
例如:1个规则temp>10,第二个规则temp>15&weather='GOOD',满足第二个规则的情况下,一定满足第一个规则。这种情况下,假设其他特征都以固定是无意义的。