title: 基于计量经济学研究线性回归建模的一般步骤及模型优化
date: 2018-03-31 17:05:59
password:
top:
categories:

  • 机器学习
    tags:

本文参考:

  • CDA徐杨老师授课内容梳理
  • scikit-learn 机器学习常用算法原理及编程实战 ——黄永昌
  • Python机器学习经典实例 ——[美]Prateek Joshi
    png

    明确需求

    这一步骤虽然与建模无关,但它是让数据与业务紧密结合的枢纽。因此,首先要明确需求并作出可行性判断。

数据预处理

缺失值处理

  • CC完整资料分析法
  • 加权填充法
  • 单一值插补法
  • 基于函数插值法

异常值处理

  • 切比雪夫不等式是马尔可夫不等式的特殊情况。一般商业的实际应用场景中,数据多为非正态分布。切尔雪夫不等式规定的是数据的下界。也就是在3倍标准差的范围内至少包含90%的数据。这里可以考虑在3倍标准差以外的数据作为异常值剔除。具体根据实际业务场景进行判断。
  • 对马尔可夫和切尔雪夫不等式感兴趣的同学可以参考马尔可夫不等式与年薪百万

其他:

  • 均值移除
    通常移除均值是为了保证特征均值为0(即标准化),这样做可以消除特征彼此间的偏差(bias)。
  • 范围缩放(也叫特征缩放)
    数据点中每个特征的数值范围可能变化很大,因此有时将特征数值范围缩放到合理的大小很重要。如X1的取值范围在[1,4],X2的取值范围在[1,2000]。此时就可以让X1/4和X2/2000分别作为新的X1、X2。这样做的目的是为了让算法收敛更快提高效率,但对预测准确性没有影响。
  • 归一化
    数据归一化用于需要对特征向量的值进行调整时,以保证每个特征向量的值都缩放在相同的数值范围。机器学习中最常用的归一化形式就是将特征向量调整为L1范数,是特征向量的数值之和为1.
  • 二值化
    二值化用于将数值特征向量转换为布尔类型向量。
  • 独热编码(其效果有些类似PCA)
    通常需要处理的数据都是稀疏、散乱地分布在空间中,然而我们并不需要存储这些大数值。这时就需要使用独热编码(One-Hot-Encoding),可以吧独热编码看作是一种收紧(tighten)特征向量的工具。它把特征向量的每个特征与特征的非重复综述相对应,通常one-of-k的形式对每个值进行编码。特征向量的每个特征值都按照这种方式编码,当给一个特征向量的第n个特征进行编码时,编码器会遍历每个特征向量的第n个特征,然后进行非重复计数。如果非重复计数的值时K,那么久吧这个特征转换为只有一个值是1其他值都是0的K维向量。

关于这四类数据预处理具体实现参考本站监督学习实例

相关分析

这里要养成画出相关系数矩阵的好习惯。(Python中可以直接调用pd.corr()函数查看每个变量间的交互相关性。)如果多个自变量相关性比较大可以考虑适当剔除某些自变量。(向高斯马尔可夫定理靠拢)

分测试集训练集

一般采用2/8分或者3/7分,略。

跑一次模型

F检验

F检验(F-test),最常用的别名叫做联合假设检验(英语:joint hypotheses test),此外也称方差比率检验、方差齐性检验。它是一种在零假设(null hypothesis, H0)之下,统计值服从F-分布的检验。其通常是用来分析用了超过一个参数的统计模型,以判断该模型中的全部或一部分参数是否适合用来估计母体。

T检验

t检验是用t分布理论来推论差异发生的概率,从而比较两个平均数的差异是否显著。它与f检验、卡方检验并列。

  • 单总体t检验是检验一个样本平均数与一个已知的总体平均数的差异是否显著。
  • 双总体t检验是检验两个样本平均数与其各自所代表的总体的差异是否显著。双总体t检验又分为两种情况,一是独立样本t检验,一是配对样本t检验。

R方、均方差、解释得分等

参考本站计算回归准确性

召回率、查准率、F1Score

准确率(Precision) = 预测到的相关的 / 预测到的相关的+预测到的不相关的
召回率(Recall) = 预测到的相关的 / 预测到的相关的+没有被预测到的相关的

参考本站学习曲线、查准率和召回率

残差分析

这里首先引入马尔可夫假定,后面的残差相关调整多数是为了向这一定理靠拢。高斯—马尔可夫定理(Gauss–Markov theory)是指在给定经典线性回归的假定下,最小二乘估计量是具有最小方差的线性无偏估计量的这一定理。

马尔可夫假定

高斯–马尔可夫定理的意义在于,当经典假定成立时,我们不需要再去寻找其它无偏估计量,没有一个会优于普通最小二乘估计量。也就是说,如果存在一个好的线性无偏估计量,这个估计量的方差最多与普通最小二乘估计量的方差一样小,不会小于普通最小二乘估计量的方差。

高斯-马尔可夫定理总共分为对OLS(Ordinary least square)普通线性方程有5个假设。

  1. Assumption MLR.1(linear in parameters): 假设一要求所有的母集团参数(population parameters)为常数,用来保证模型为线性关系。即如果母集团方程为y=a+b1x1+b2x2+…+bkxk+u, 所有的a, b1,b2…bk必须为常数。同时u为无法检测的误差项,即实验过程中模型没有包含的因素。
  2. Assumption MLR.2 (Random sampling)假设二: 假设我们有n个调查的样本,那么这n个样本必须是从母集团里面随机抽样得出的。以假设一的方程为例,{(xi1,xi2, xi3…..xik,yi): i=1,2,3…n}
  3. Assumption MLR.3 (No perfect collinearity)假设三:在样本(母集团)中, 没有独立变量(independent variable)是常数,并且独立变量之间不能有完全共线性。(根据矩阵方程的定义,方程会无解)
  4. Assumption MLR.4 (Zero conditional mean)假设四: 母集团方程的误差项的均值为 0,并且均值不受到独立变量的影响,可以表示为:E(U/ X1, X2…Xk)=0
    5.Assumption MLR.5 (Homoscedasticity): 假设五:同方差性, 误差项u的方差不受到独立变量的影响为一个固定不变的值,可以表示为: Var(u/X1,X2…Xk)=σ [1]

正态性

在R中可以画出QQPlot图
P-P图是根据变量的累积概率对应于所指定的理论分布累积概率绘制的散点图,用于直观地检测样本数据是否符合某一概率分布。如果被检验的数据符合所指定的分布,则代表样本数据的点应当基本在代表理论分布的对角线上。
Q-Q图的结果与P-P图非常相似,只是P-P图是用分布的累计比,而Q-Q图用的是分布的分位数来做检验。和P-P图一样,如果数据为正态分布,则在Q-Q正态分布图中,数据点应基本在图中对角线上。

异方差性

异方差性是计量经济学术语,是相对于同方差而言的。所谓同方差,是为了保证回归参数估计量具有良好的统计性质,经典线性回归模型的一个重要假定:总体回归函数中的随机误差项满足同方差性,即它们都有相同的方差。如果这一假定不满足,即:随机误差项具有不同的方差,则称线性回归模型存在异方差性。这里的目的是排除样本自变量之间的共线性。常用的解决办法有:

  • BP检验
  • White检验(精度更高,但需要花费大量自由度,因此更适合样本数据量大的数据集)
  • 加权最小二乘

共线性

共线性,即同线性或同线型。统计学中,共线性即多重共线性。
多重共线性(Multicollinearity)是指线性回归模型中的解释变量之间由于存在精确相关关系或高度相关关系而使模型估计失真或难以估计准确。
一般来说,由于经济数据的限制使得模型设计不当,导致设计矩阵中解释变量间存在普遍的相关关系。完全共线性的情况并不多见,一般出现的是在一定程度上的共线性,即近似共线性。
VIF 查看方差膨胀因子
多重共线性使参数估计值的方差增大,1/(1-r2)为方差膨胀因子(Variance Inflation Factor, VIF)如果方差膨胀因子值越大,说明共线性越强。
解决办法

  • 排除引起共线性的变量
    • 主成分分析法可以完全消灭共线性,但缺点是无法保留现有自变量的属性,即标签会丢失。
  • 减小参数估计量的方差:缺点是一定会让模型有偏
    • 岭回归
    • Lasso
    • 弹性网络(以上两者的结合)

内生性

内生性就是模型中的一个或多个解释变量与随机扰动项相关。
导致原因为:
1:遗漏变量,且遗漏变量与引入模型的其他变量相关。
2:解释变量和被解释变量相互作用,相互影响,互为因果。

解决办法:工具变量估计

异常值二次处理

略。

参数的调优

利用梯度下降算法对参数进行调优,后续补充。

自变量优化

这里自变量优化的核心思想是:让各个自变量的变化趋势保持其“独立和准确性“。

  • 多分类自变量的因子变换:保持各自变量截距的独立性
  • 交互项:保持各自变量斜率的独立性
  • 高次项:保持各自变量曲率的独立性

在sklearn中,PolynomialFeatures算法包即是这里交互项和高次项的算法实现。
具体交互项和高次项中如何取参,或可参考杜宾两步法?
参考本站监督学习:创建多项式回归器

验证模型

逐步回归

逐步回归的基本思想是将变量逐个引入模型,每引入一个解释变量后都要进行F检验,并对已经选入的解释变量逐个进行t检验,当原来引入的解释变量由于后面解释变量的引入变得不再显著时,则将其删除。这是一个反复的过程,直到既没有显著的解释变量选入回归方程,也没有不显著的解释变量从回归方程中剔除为止。以保证最后所得到的解释变量集是最优的。
依据上述思想,可利用逐步回归筛选并剔除引起多重共线性的变量,其具体步骤如下:先用被解释变量对每一个所考虑的解释变量做简单回归,然后以对被解释变量贡献最大的解释变量所对应的回归方程为基础,再逐步引入其余解释变量。经过逐步回归,使得最后保留在模型中的解释变量既是重要的,又没有严重多重共线性。

交叉验证

交叉验证(K-fold cross-validation)的基本思想是把在某种意义下将原始数据(dataset)进行分组,一部分做为训练集(train set),另一部分做为验证集(validation set or test set),首先用训练集对分类器进行训练,再利用验证集来测试训练得到的模型(model),以此来做为评价分类器的性能指标。

Python的sklearn中有Kfold可以直接调用进行交叉验证

学习曲线

参考本站学习曲线、查准率和召回率

模型测试

最后一步,模型测试。拿之前切割出来的测试集Just Run It!