2.1 统计分析
统计学是研究如何搜集资料、整理资料和进行量化分析、推断的一门科学,在科学计算、工业和金融等领域有着重要应用,统计分析是机器学习的基本方法。例如,确定某种癌症的诱发因素、垃圾邮件检测、财务预测、遗传学、市场分析、识别手写数字等,都与统计分析有着紧密的联系。与统计分析相关的基本概念有以下几个。
(1)总体:根据一定目的确定的所要研究事物的全体。
(2)样本:从总体中随机抽取的若干个体构成的集合。
(3)推断:以样本所包含的信息为基础,对总体的某些特征做出判断、预测和估计。
(4)推断可靠性:对推断结果从概率上的确认,是决策的重要依据。
统计分析分为描述性统计和推断性统计,描述性统计是通过对样本进行整理、分析并就数据的分布情况获取有意义的信息,从而得到结论。推断统计又分为参数估计和假设检验,参数估计是对样本整体中某个数值进行估计,如推断总体平均值等,而假设检验是通过对所做的推断进行验证,从而选择行动方案。
2.1.1 统计基础
1. 输入空间、特征空间和输出空间
向量空间模型包括输入空间、特征空间与输出空间,输入与输出所有的可能取值的集合分别称为输入空间与输出空间,每个具体的输入是一个实例,通常由特征向量表示,所有特征向量存在的空间称为特征空间。输入变量一般x表示,输出变量用y表示。
训练数据和测试数据由输入输出对组成,例如{(x1,y1),(x2,y2),…,(xn,yn)}。这些成对出现的数据称为样本,其中输入和输出变量类型可以是连续的,也可以是离散的,不同类型的样本采用不同的求解方法。例如,如果x和y均为连续变量的预测问题,则可以用回归方法来解决;如果y为离散变量的预测问题,则可以用分类算法处理。
2. 联合概率分布
联合概率表示两个或多个变量同时发生的概率,而联合概率分布是指各个变量的发生概率之间存在一定的规律,但是其分布情况未知。在监督式学习中,样本数据的训练可使各变量之间的联合概率分布情况逐渐明确。联合概率分布按变量的类型可分为离散随机变量联合分布和连续随机变量联合分布。
3. 假设空间
假设空间(Hypothesis Space)是由输入空间到输出空间的映射构成的集合,而其中每个映射对应一个模型,假设空间确定了模型预测的范围,训练过程就是从中选择最优模型。监督学习的目标是学习一个由输入到输出的映射规律,其模型包括概率模型和非概率模型,前者由条件概率分布p(y|x)表示,后者由函数y=f(x)表示,模型确认之后就可以对具体的输入进行相应的输出预测。
4. 均值、标准差、方差、协方差
首先给定一个含有n个样本的集合X={x1,…,xn},其中均值和标准差的计算方法相对简单,其计算公式如下。其中是样本集合的均值,s是样本集合的标准差。
均值描述的是样本集合的平均值,而标准差描述的是样本集合的各个样本点到均值的距离分布,描述的是样本集的分散程度,例如{0,8,12,20}和{8,9,11,12}两个集合的均值都是10,计算两者的标准差,前者是8.3,后者是1.8,显然后者较为集中,其标准差小一些。
方差是标准差的平方,其计算公式如下:
此外,在机器学习中的方差就是估计值与其期望值的统计方差,计算方法如下式,其中是模型的估计值,而期望值,期望值,是由样本的值xi与其发生概率相乘的总和表示,反映的是随机变量均值。用估计值与期望值(均值)的差的平方表示模型预测稳定性。
进行大量的重复实验,就会发现模型在样本集上的结果值并非固定唯一,模型的输出值会在一定范围内变化,这种变化的范围越大,表示其方差就越大。
标准差和方差一般用来描述一维数据。面对多个维度的数据集,需要计算不同维度之间的关系,协方差主要用来度量两个随机变量关系:
协方差的结果有什么意义呢?如果结果为正值,则说明两者是正相关的(从协方差可以引出“相关系数”的定义)。结果为负值,说明两者是负相关的。如果为0,就是统计上的“相互独立”。
协方差只能处理二维问题,如果维数增加,就需要计算它们两两之间的协方差,这时就需要使用协方差矩阵了,以三维数据为例,数据集{x,y,z}的协方差矩阵如下:
可以看到,协方差矩阵是一个对称的矩阵,而且对角线是各个变量上的方差,对应n维数据x={x1,x2,…,xn}的协方差矩阵公式如下,其中μ是x的期望值。
C=E{(x−μ)(x−μ)T}
5. 超参数
超参数是机器学习算法的调优参数(tuning parameters),常应用于估计模型参数的过程中,由用户直接指定,可以使用启发式方法来设置,并能依据给定的预测问题而调整。例如,训练神经网络的学习速率或逻辑回归损失函数中的正则化强度(regularization strength)等。需要注意,超参数与模型参数不同,模型参数是学习算法拟合训练数据获得的参数,即这些参数是作为模型本身的参数而存在的。例如,线性回归的系数是模型参数。
6. 损失函数和风险函数
损失函数是关于模型计算结果f(x)和样本实际目标结果y的非负实值函数,记作L(y,f(x)),用它来解释模型在每个样本实例上的误差。损失函数的值越小,说明预测值与实际值越接近,即模型的拟合效果越好。损失函数主要包括以下几种。
① 0-1损失函数。
0-1损失函数是一种最简单的损失函数,如果实际值y与f(x)的值不相等,则认为预测失败。反之,预测成功,损失为0。可见,该损失函数不考虑预测值和真实值的误差程度,只要预测错误,即使预测误差再小,也算预测错误。
② 平方损失函数。
L[y,f(x)]=[y−f(x)]2
平方损失函数计算的是实际目标值y与预测值f(x)之间的差的平方,其特点是非负,将差值进行放大。
③ 绝对损失函数。
L[y,f(x)]=|y−f(x)|
绝对损失函数是将实际目标值y与预测值f(x)之间的差求绝对值,损失函数的结果为非负。
④ 对数损失函数。
L[y,f(x)]=-log2 p(y|x)
对数损失函数用到了极大似然估计的思想。p(y|x)是指在当前模型的基础上,对于输入变量x,其预测值为y,也就是预测正确的概率。在公式中加负号,表示预测正确的概率越高,其损失值应该越小。
7. 训练误差
统计学习方法具体采用的训练误差评估与损失函数不一定完全相同,但两者一致会有利于模型的改进。上面的损失函数仅仅是对于一个样本而言,而模型优化目标函数应当是使全局损失函数最小,即所有样本的损失函数的均值,其中训练误差可以表示为
对于平方损失函数,就是对所有样本的误差求平方和,如下公式所示。为了求导方便,可以在前面乘以1/2。
损失函数的期望Rexp是模型关于联合分布的期望损失,可以用如下公式表示,其中F是假设空间,也称为风险函数或期望损失。
L[y,f(x)]可以认为是模型的经验风险,是模型关于训练样本集的平均损失。通常情况下,经验风险可以由训练数据集的损失函数来确定。根据大数定律,当样本容量趋于无穷时,经验风险趋向期望风险。根据经验风险最小化的策略,最优模型的经验风险最小,那么就可以将模型选择转化为求解最小经验风险的问题。这一理论的前提是训练样本的数量要足够多,但是在现实应用中,这一条件很难满足。
假如样本数量较多,通过最小化经验风险即可,但是当样本量很少时,经验信息不足,通过最小化经验风险学习效果未必很好,当模型的复杂度过大时,训练误差会逐渐减小并趋近于0;而测试误差会先减小,达到最小值后又增大。当选择的模型复杂度多大时,过拟合现象就会发生。
结构风险最小化(Structural Risk Minimization,SRM)针对经验风险最小化在小样本量时易产生过拟合问题进行了改进,增加了表示模型复杂度的正则化项,对模型复杂度进行限制。这一策略认为结构简单的模型最优,它的评估目标是模型复杂度,在其他变量都相同的情况下,模型结构风险最小化的定义如下:
其中为模型的复杂度,模型f越复杂,复杂度就越大;反之,模型f越简单,复杂度就越小。λ≥0是系数,用以权衡经验风险和模型的复杂度。结构风险小,要求经验风险与模型复杂度同时小。结构风险小的模型往往对训练数据以及未知的测试数据都有较好的预测。当模型是条件概率分布,损失函数是对数损失函数且模型复杂度由模型的先验概率表示时,结构风险最小化就等价于最大后验概率估计。监督学习问题就变成了经验风险或结构风险函数的最优化问题,这时经验或结构风险函数是最优化的目标函数。
损失函数反映了模型预测结果与实际结果之间的差距,理解损失函数的本质,有助于对算法进行优化,需要结合业务目标和数据特点对问题本质进行理解,并用数学公式进行抽象,选择较简单的实现方法应用。
8. 正则化与交叉验证
正则化和交叉验证都是为了避免过拟合,其中正则化为了结构风险最小化,在经验风险上加正则化项或惩罚项,正则化项一般是模型复杂度的单调递增函数,模型越复杂,正则化值就越大。例如正则化项可以是模型参数向量的范数。正则化包括L0、L1、L2正则化,它们也被称为范数,对应于结构化风险最小化中的,即模型复杂度的罚项,称其为正则化项(Regularizer)。
如何增加正则化项呢?首先从理论上,任何函数都可以用多项式的方式去逼近,而在下面结构化风险最小化公式中的f(X)自然就可以用f(X)=w0x0+w1x1+…+wnxn的形式来表示。
其中多项式函数中的wi就对应模型的参数,即模型训练出来的参数矩阵W。很容易理解模型越复杂,其中wi的个数就越多,所以增加规则项的任务就是减少wi的个数,而L0、L1、L2这些正则化方法的目标均是使模型参数向量简化。
(1)L0正则化
L0正则化是通过限制向量中非0的元素的个数实现模型优化,用L0来正则化一个参数矩阵W,目标是使其更稀疏,即W中的大部分元素都是0。很明显,如果通过最小化L0范数作为罚项,就是寻找最优的稀疏特征项。但L0的最小化问题在实际应用中是会出现NP难题(NP-Hard)。因此很多情况下,L0优化问题会用L1、L2代替。
(2)L1正则化
L1正则化是通过对向量中各个元素绝对值之和进行限制,任何规则化算子,如果在wi=0的地方不可微,并且可以分解为多项式的形式,那么这个规则化算子就可以实现稀疏。与L0范数相比,L1范数不仅可以实现稀疏,而且L1范数是L0范数的最优凸近似,它比L0范数容易优化求解。按照L1范数的定义,可以将结构化风险中的模型复杂度表示为,其中α表示正则化系数,m是模型的阶次,表示数据的维度。例如,m=2为二维的情况,只有两个权值w1和w2,此时L=|w1|+|w2|,如图2-1所示,其中图2-1(a)是将w1和w2分别作为x、y坐标,L作为z坐标绘制出来的,图2-1(b)是图2-1(a)的俯视图,对于梯度下降法,求解的过程可以画出等值线,如图2-1(c)所示,不同色彩的圆圈表示损失函数在寻找最小值的过程,参数矩阵W按照最小二乘法计算损失函数,不断向最小值的位置迭代,与L1交界的地方就是取得的极值点,这其实是两个曲面相交的地方。
图2-1 二维L1正则化
因为L函数有很多“突出的角”(二维情况下有4个),损失函数与这些角接触的概率会远大于与L的其他部位的接触。而在这些角上,会有很多权值等于0,这就是L1正则化可以产生稀疏模型,进而可以限制模型中参数的数量,降低模型复杂度,防止过拟合的原因。与L2相比,L1做得更彻底、更稀疏。
正则化前面的系数α,可以控制L图形的大小,α越大,L的图形就越小;而α越小,L的图形越大。同样地,损失函数的参数越多,图中的圆圈就越大。可以看到α起到平衡两者的作用,所以α也称为学习率。
(3)L2正则化
L2正则化是指向量各元素求平方和然后求平方根,用模最小化来确保w的每个元素都很小,都接近于0,但与L1范数不同,它不会等于0,而是接近于0,如图2-2(a)所示,在m为2时(数据只有2个维度),它就是一个抛物面,俯视图如图2-2(b)所示,就是一个圆,与方形相比,被磨去了棱角。
图2-2 二维L2正则化
因此损失函数与L相交时使w1或w2等于零的概率小了许多,这就是L2正则化不具有稀疏性的原因。但是,L2正则化通过将目标函数变为λ强凸函数,可以有效地加快梯度下降的收敛速度。
在算法调优时需要注意选择合适的正则化策略。L2准确度高,但是训练时间长;L1正则化可以做一定的特征选择,适合大量数据,在样本不均匀时可以调整损失函数中的权重。
拟合过程中,通常希望最后构造的模型中,所有参数都比较小。这样做可以减少模型的复杂度,适应不同的数据集,也在一定程度上避免过拟合。例如,在线性回归方程中,如果参数很大,那么只要数据偏移一点点,就会对结果造成很大的影响,即参数小表示抗扰动能力强。特别是特征数比样本数量多时,如果不加入L2正则化,会使模型的抗扰能力变差。而一旦加入正则化罚项之后,随着不断迭代,损失函数中的参数矩阵会不断减小。
在交叉验证方面,一般情况下,将数据集随机切分为训练集、验证集和测试集三部分,其中训练集用来训练模型,验证集用于训练过程中模型的验证和选择,如果有多个模型,选择其中最小预测误差的模型,而测试集用于对最终训练完成的模型进行评估。在实际应用中,数据往往并不充足,此时可以采用交叉验证的方法,将训练集切分成很多份,然后进行组合,以扩大可用训练集的数量。按照样本切分和组合方式,交叉验证分为以下几种。
① HoldOut检验。
将原始的数据集合随机分成两个集合A和B,A作为训练集,B作为测试集。先使用训练集训练模型,然后利用测试集验证模型的效果,记录最后的分类准确率作为该模型的性能指标,其准确性可以用平均绝对误差(MAE)、平均绝对百分比误差(MAPE)等统计指标来衡量。这种方法的好处是简单,只需要把原始数据分成两个部分。但是严格意义上,Hold-Out检验并不算是交叉检验。
② 简单交叉验证。
首先,随机地将数据集分成两个部分,分别用作训练和测试,然后用训练集在各种条件下训练模型,得到不同的模型,在测试集上评价各个模型的测试误差,选出测试误差最小的模型。
③ k折交叉验证。
将数据切分为k个互不相交的大小相同数据集,利用k-1个子集训练,用剩下一个子集测试,重复k次,选出平均测试误差最小的模型。显然,k取值越大,统计偏误就越小,但是需要的计算量越大。一些实验表明,当k取10时,在计算代价和性能之间能达到好的平衡。
④ 留一交叉验证。
在k折交叉验证中,当k为所有样本数N,在数据缺乏的情况下使用留一交叉验证。假设样本数据集中有N个样本。将其中一个样本单独作为测试集,其余N-1个样本作为训练集,这样得到了N个模型,用这N个模型的分类准确率的平均数作为此分类器的性能指标。留一交叉验证的优点是每一个模型都是用几乎所有的样本来训练模型,并且评估的结果比较可靠。它的缺点是计算成本高,特别是当N非常大时,计算耗时。
2.1.2 常见概率分布
常见的概率分布有连续分布和离散分布两类,其中连续分布包括均匀分布、正态分布、t-分布、卡方分布(χ2-distribution)和F-分布等,离散分布包括0-1分布、二项分布、泊松分布等。
(1)均匀分布是指概率的分布是等距的,分为连续型和离散型两种,前者可以认为是一条等距点构成的曲线,后者是独立的一个个点。
(2)正态分布即高斯分布,是自然界最常见的一种概率分布,是具有两个参数μ和σ2的连续型随机变量的分布,参数μ是遵从正态分布的随机变量的均值,参数σ2是此随机变量的方差,所以正态分布记作N(μ,σ2)。它具有以下特征。
① 集中性:正态曲线的高峰位于正中央,即均值所在的位置。
② 对称性:正态曲线以均值为中心,左右对称,曲线两端不与横轴相交。
③ 均匀变动性:正态曲线由均值所在处开始,分别向左右两侧逐渐均匀下降。
④ 均值μ决定正态曲线的中心位置,标准差σ决定正态曲线的陡峭程度。σ越小,曲线越陡峭;σ越大,曲线越扁平。
(3)t分布即学生t-分布(Student's t-distribution),用于根据小样本来估计呈正态分布且方差未知的总体的均值。它的分布曲线形态与自由度df大小有关,自由度df越小,t分布曲线越平坦,曲线中间越低,曲线双侧尾部翘得越高;而自由度df越大,t分布曲线越接近正态分布曲线,当自由度df无穷大时,t分布曲线为标准正态分布曲线。
如果总体方差已知(例如在样本数量足够多时),则应该用正态分布来估计总体均值。它是对两个样本均值差异进行显著性测试的t检验的基础。t检验改进了Z检验(Z test),不论样本数量大小都可应用。因为Z检验用在小的样本集上会产生很大的误差,所以样本很小的情况下一般用t检验。
(4)卡方分布(chi-square distribution,χ2-distribution)是指若有k个独立的标准正态分布变量,则称其平方和服从自由度为k的卡方分布,它是一种特殊的伽马分布,在假设检验和置信区间的计算中应用广泛。由卡方分布可延伸出皮尔森卡方检测,常用于以下情况。
① 样本集的某一属性分布与整体分布之间的拟合程度,例如某校区中男女比是否符合此学校整体学生的男女比例。
② 两个随机变量独立性验证,例如人的肥胖与心脏病的关联性。
(5)F-分布(F-distribution)是一种连续概率分布,但它是一种非对称分布,有两个自由度,且位置不可互换,被广泛应用于似然比率检验。
(6)二项分布(Binomial distribution)是n个独立的伯努利(是或非)试验中成功的次数的离散概率分布。实际上,当n=1时,二项分布就是0-1分布,它是统计变量中只有性质不同的两项群体的概率分布。所谓两项群体是按两种不同性质(如硬币的正面和反面)划分的统计变量,是二项试验的结果,两项分布也是两个对立事件的概率分布。它的前提条件是事件独立,单次试验为相互对立的2个结果。
(7)0-1分布是n为1的二项分布,指取值范围是0或者1的离散值,只先进行一次事件试验,该事件发生的概率为p,不发生的概率1-p。
(8)泊松分布(Poisson distribution)适合于描述单位时间内随机事件发生的次数的概率分布,例如服务器在一定时间内收到请求的次数、银行柜台接待的客户数、汽车站台的候客人数、机器出现的故障数、自然灾害发生的次数等。
2.1.3 参数估计
参数估计(parameter estimation)是统计推断的一种基本形式,它用样本统计量去估计总体的参数,即根据样本数据选择统计量去推断总体的分布或数字特征。估计参数的目的是希望用较少的样本去描述数据的总体分布,前提是要了解样本总体分布(如正态分布),这样就只需要估计其中参数的值。如果无法确认总体分布,那就要采用非参数估计的方法。
参数估计最早是在18世纪末由德国数学家高斯提出的,其中有多种方法,除了最基本的最小二乘法和极大似然法、贝叶斯估计、极大后验估计,还有矩估计、一致最小方差无偏估计、最小风险估计、最小二乘法、最小风险法和极小化极大熵法等,随着统计分析应用越来越广,参数估计有了飞速的发展。
点估计(point estimate)是用一个样本点的估计量直接作为某一参数的估计值。
区间估计(interval estimate)是在点估计的基础上,给出总体参数估计的一个估计区间,该区间由样本统计量加减估计误差而得到,区间估计就是样本统计量与总体参数的接近程度的一个概率度量,而这个区间就称为置信区间。
参数估计的目标是获取一个估计函数,向估计函数输入测量数据,输出相应参数的估计。通常希望得到的估计函数是最优的,即所有的信息都被提取出来了,最大化代表了整体数据的特征。一般来说,求解估计函数需要三步:
① 确定系统的模型,建模过程中不确定性和噪声也会混进来。
② 确定估计器及其限制条件。
③ 验证是否为最优估计器。
所谓的估计器可以理解为损失函数(cost function),上述过程不断迭代,直到找到最优估计器,此时的模型就具有最优的置信度。
下面介绍最大似然估计(Maximum Likelihood Estimation,MLE)、贝叶斯估计(Bayes)和最大后验(Maximum a posteriori)估计。假设观察的变量是x,观察的变量取值(样本)为X={x,…,xn},要估计的参数是θ,x的分布函数是p(x|θ),这里使用条件概率来说明这个分布是依赖于θ取值的。这里将其用标量表示,在实际中x和θ都可以是几个变量组成的向量。
(1)最大似然估计中的“似然”就是“事件发生的可能性”,最大似然估计就是要找到参数θ的一个估计值,使“事件发生的可能性”最大,也就是使p(X|θ)最大。一般来说,可以认为多次取样得到的x是独立分布的:
由于p(xi)一般都比较小,且n一般都比较大,因此连乘容易造成浮点运算下溢,所以通常都取最大化对应的对数形式,将公式转化为:
具体求解时,可对θ求导数,然后令导数为0,求出。
最大似然估计属于点估计,这种方法只能得到单个参数的估计值。很多时候,除了求解的值外,还需要求解θ在数据X中的概率分布情况p(θ|X)。由于最大似然估计是根据样本子集对总体分布情况进行估计,在样本子集数据量较少时结果并不准确。
(2)贝叶斯估计解决的是概率估计问题。即已知一些样本,并且它们满足某种分布,需要估计这种分布的参数或者新数据出现的概率。最大似然估计是在对被估计量没有任何先验知识的前提下求得的。使用贝叶斯公式,可以把关于θ的先验知识以及观察数据结合起来,用以确定θ的后验概率p(θ|X):
其中,是累积因子,以保证p(θ|X)的和等于1。前提条件是需要知道关于θ的先验知识,即不同取值的概率p(θ),例如θ=1表示考试及格,θ=0表示不及格,可以根据学习情况大体估计θ=1的可能性为80%,即p(θ=1)=0.8,而p(θ=0)=0.2。
在某个确定的θ取值下,事件x的概率就是p(x|θ),这是关于θ的函数,其中X集合中的各样本是相互独立的,p(X|θ)就可以展开成连乘形式,从而得到p(θ|X)的表达式,不同的θ对应不同的后验概率。这样就可以选取一个θ,使p(θ|X)的值最大。贝叶斯估计对所有θ的取值都进行了计算,有时只希望获得一个使p(θ|X)最大化的θ即可。
(3)最大后验估计(MAP)运用了贝叶斯估计的思想,从贝叶斯估计的公式可以看到ZX与θ是无关的,要得到使p(θ|X)最大的θ,等价于求解下面的式子:
与最大似然估计一样,通常最大化对应的对数形式是将上述式子转化为:
这样就可以不用计算ZX,也不需要求所有的样本概率p(θ|X)的值,就可以求得最大化的。
上述三种方法的应用场合不同,当先验概率p(θ)很确定的情况下,可以使用最大后验估计或贝叶斯估计,其中贝叶斯可以取得后验概率的分布情况,而最大后验估计只关心最大化结果的θ值。当然,如果对先验知识没有信心,可以使用最大似然估计。
2.1.4 假设检验
假设检验是先对总体的参数(或分布形式)提出某种假设,然后利用样本信息判断假设是否成立的过程。假设检验的基本思想是小概率反证法思想。所谓的小概率是指其发生的可能性低于1%或低于5%,在一次试验中基本上不会发生。反证法是先提出假设,再用统计方法确定假设成立的可能性大小,如可能性小,则认为假设不成立。
假设检验包括原假设(null hypothesis,也叫零假设)与备择假设(alternative hypothesis,也叫备选假设)。其中检验假设正确性的是原假设(null hypothesis),表明研究者对未知参数可能数值的看法;而备择假设通常反映研究者对参数可能数值对立的看法。例如,对一个人是否犯罪进行认定,如果首先假设他/她无罪,来进行无罪检验,就是原假设;如果假定这个人是有罪的,来搜集有罪证据证明他/她是有罪,这就是备择假设。检验是否有罪的过程就相当于用t检验或Z检验去检视搜集到的证据资料。
假设检验的过程是确认问题,寻找证据,基于某一标准做出结论。具体如下:首先对总体做出原假设H0和备择假设H1;确定显著性水平α;选择检验统计量并依据α确定拒绝域(拒绝H0的统计量结果区域);抽样得到样本观察值,并计算实测样本统计量的值,如果在拒绝域中,则拒绝原假设H0,反之,拒绝原假设的证据不足(并非原假设成立)。
显著性检验是先认为某一假设H0成立,然后利用样本信息验证假设。例如,首先假设人的收入是服从正态分布的,当收集了一定的收入数据后,可以评价实际数据与理论假设H0之间的偏离,如果偏离达到了“显著”的程度就拒绝H0假设,这样的检验方法称为显著性检验,如图2-3所示。
图2-3 显著性水平
显著程度从中心的H0“非常显著”开始向外不断移动,当偏离达到某一较低显著的程度α(如0.05)时,再看H0假设,已经很难证明其正确了,这时就可以认为H0假设不成立,也就是被拒绝了,它成立的概率不超过α,称α为显著性水平。这种假设检验的好处是不用考虑备择假设,只关心实验数据与理论之间拟合的程度,所以也称之为拟合优度检验。
2.1.5 线性回归
线性回归(Linear Regression)是一种通过拟合自变量与因变量之间最佳线性关系,来预测目标变量的方法。回归过程是给出一个样本集,用函数拟合这个样本集,使样本集与拟合函数间的误差最小。生物统计学家高尔顿研究父母和子女身高的关系时发现:即使父母的身高都“极端”高,其子女不见得会比父母高,而是有“衰退”(Regression)至平均身高的倾向。具体地说,回归分析包括以下内容。
(1)确定输入变量与目标变量间的回归模型,即变量间相关关系的数学表达式。
(2)根据样本估计并检验回归模型及未知参数。
(3)从众多的输入变量中,判断哪些变量对目标变量的影响是显著的。
(4)根据输入变量的已知值来估计目标变量的平均值并给出预测精度。
线性回归的类型包括简单线性回归和多元线性回归。简单线性回归使用一个自变量,通过拟合最佳线性关系来预测因变量。多元线性回归使用多个独立变量,通过拟合最佳线性关系来预测因变量。
【例2.1】已知一个贸易公司某几个月的广告费用和销售额,如表2-1所示。
表2-1 某公司的月度广告费用与销售费用
可以看到随着广告费用的增长,公司的销售额也在增加,但是它们并非是绝对的线性关系,而是趋向于平均,如图2-4所示。
图2-4 线性回归示例
上述线性回归模型的公式为:y=1.38×x+30.6,其中x表示广告费用,y表示销售额。通过线性回归的公式就可以预测企业的销售额了,例如回答“下一季度要提高销售额至200万元,那么广告费用需要投放多少”等诸如此类问题。
问题的关键是如何获得回归模型的公式?一元线性回归本质上就是一条直线y=ax+b,只要找到一条直线,所有点到这条直线的距离最小。每一个点对应(x,y)坐标,是实际的点,而通过回归公式预测的纵坐标值为y=ax+b,将所有点的预测值与实际值的差进行平方后求和,就可以算出这条直线总的误差Q(a,b):
要想求出公式中的a,b值,只需要使得Q(a,b)取极小值即可,式中的Q(a,b)为关于a和b的二元函数。
如何评价回归模型的好坏?通过统计学中的R2(Coefficient of Determination),也称为判定系数、拟合优度、决定系数等,来判断回归方程的拟合程度。R2是如何计算的?首先要明确以下几个概念。
总偏差平方和(Sum of Squares for Total,SST)是每个因变量的实际值(公式中的yi)与其平均值(公式中的)的差的平方和,反映了因变量取值的总体波动情况,其值越大说明原始数据本身具有越大的波动,其公式如下。
例如,用销售额与其平均销售额的差的平方的和来表示销售额整体的波动情况,也就是说,这种波动情况是由单个销售额与均值之间的偏差指标(SST)来表示的。
回归平方和(Sum of Squares for Regression,SSR)是因变量的回归值(由回归方程中计算取得,对应公式中的)与其均值(公式中的)的差的平方和,它反映回归直线的波动情况。
例如,回归线表示广告费这个变量对于总销售额的影响,它只能解释广告费带来的影响,这种影响的偏差由SSR来表示。
残差平方和(Sum of Squares for Error,SSE)又称误差平方和,表示因变量的实际值与回归值的差的平方和,它反映了回归方程以外因素的影响,即回归直线无法解释的因素。
例如,广告费只是影响销售额的其中一个比较重要的因素,但是除了广告费之外,还有其他因素如产品质量、客户服务水平等因素对销售额产生影响,所以销售额不能用回归线来解释的部分就由SSE来表示。
总的偏差可以用回归方程偏差加上残差偏差来表示,其公式如下,其中SST是总的偏差,SSR是回归平方和,即回归方程可以表示的偏差,SSE是回归方程不能表示的偏差。
SST=SSR+SSE
回归方程拟合程度的好坏是看这条回归线能够多大程度解释目标值(如销售额)的变化,一般采用R2指标来计算:
R2的取值为[0,1],从其定义可见,越接近1,拟合程度越好。当R2为1时表示回归方程可以完全解释因变量的变化。如果R2很低时,说明因变量和目标变量之间可能并不存在线性关系。
调整R2是指对R2进行修正后的值,对非显著性变量给出惩罚,它没有R2的统计学意义,与实际样本的数值无关,与R2相比,其误差较少,是回归分析中重要的评价指标,其值越大说明模型效果越好。
因变量预测标准误差是指因变量的实际值与预测值的标准误差,其值越小说明模型的准确性越高,代表性越强,拟合性越好。
F值在方差分析表中查看,用于检测回归方法的相关关系是否显著。如果显著性水平Sig指标大于0.05,表示相关性较弱,没有实际意义。如果发现模型的Sig指标低于0.05,但是各自变量的Sig指标均超过0.05,就需要应用t检验查看回归系数表中各变量的显著性水平,或者是自变量之间出现了共线性问题,需要通过逐步回归的方法将显著性较差的自变量剔除。
n显示的是应用于模型的实际样本数量,可能有部分数据为空值或其他异常值,导致模型的个案数少于样本数。如果发现其值较大,需要对数据重新进行预处理。
多元回归方程公式为:
y=b0+b1x1+b2x2+…+bkxk+ε
要求每个xi必须是相互独立的,其中bi表示回归系数,ε为随机误差,其评价指标主要有以下几个。
(1)非标准化系数
非标准化系数(Unstandardized Coefficients)bi在几何上表现是斜率,其数值与实际的自变量数值的单位之间无法进行比较。为了对非标准化系数的准确性进行度量,使用非标准化系数误差(SER)来对样本统计量的离散程度和误差进行衡量,也称为标准误差,它表示样本平均值作为总体平均估计值的准确度,SER值越小说明系数预测的准确性越高。
(2)标准化系数(Standardized Coefficients)
在多元回归分析中由于各自变量的单位可能不一致,就难以看出哪一个自变量的权重较高,为了比较各自变量的相对重要性,将系数进行标准化处理,标准化系数大的自变量重要性较高。
(3)t检验及其显著性水平(Sig)
t值是由系数除以标准误得到的,t值相对越大表示模型能有越高的精度估计系数,其Sig指标小于0.05说明显著性水平较高,如果t值较小且Sig指标较高,说明变量的系数难以确认,需要将其从自变量中剔除,然后继续进行分析。
(4)B的置信区间(95% Confidence Interval for B Upper/Lower Bound)
检验B的显著性水平,主要为了弥补t检验和Sig值的不足,如果B的置信区间下限和上限之间包含了0值,即下限小于0而上限大于0,则说明变量不显著。
2.1.6 逻辑回归
逻辑回归(Logistic Regression)是一种预测分析,解释因变量与一个或多个自变量之间的关系,与线性回归不同之处就是它的目标变量有几种类别,所以逻辑回归主要用于解决分类问题。与线性回归相比,它是用概率的方式,预测出属于某一分类的概率值。如果概率值超过50%,则属于某一分类。此外,它的可解释强,可控性高,并且训练速度快,特别是经过特征工程之后效果更好。
按照逻辑回归的基本原理,求解过程可以分为以下三步。
(1)找一个合适的预测分类函数,用来预测输入数据的分类结果,一般表示为h函数,需要对数据有一定的了解或分析,然后确定函数的可能形式。
(2)构造一个损失函数,该函数表示预测输出(h)与训练数据类别(y)之间的偏差,一般是预测输出与实际类别的差,可对所有样本的偏差求R2值等作为评价标准,记为J(θ)函数。
(3)找到J(θ)函数的最小值,因为值越小表示预测函数越准确。求解损失函数的最小值是采用梯度下降法(Gradient Descent)。
二分类问题中一般使用Sigmoid函数作为预测分类函数,其函数公式为,对应的函数图像是一条取值在0和1之间的S形曲线,如图2-5所示。
图2-5 Sigmoid函数
二分类问题使用概率来实现预测,首先构造h函数:
hθ(x)=g(θ0+θ1x1+θ2x2)
其中,θ0,θ1,θ2就是要求解的方程参数值,θ0为截距。假设X是自变量的矩阵,θ是线性方程系数矩阵:
X=(x1,x2)T,θ=(θ1,θ2)T
对h函数表示形式进行简化,得到如下公式:
其中,hθ(x)函数的值表示概率值,即结果取1的概率,因此,对于输入x,分类属于类别1和类别0的概率分别用如下公式表示:
p(y=1|x;θ)=hθ(x)
p(y=0|x;θ)=1−hθ(x)
当函数的结果大于50%时,可以认为属于类别1的可能性较高,当然,阈值50%可以结合实际业务进行调整。
在求解过程中,关键是如何确定θ的值?首先要定义损失函数J(θ),即误差评价指标。在逻辑回归中损失函数采用对数损失函数:
当真实值y=1时,,当预测值越接近1,就越接近值0,表示损失函数值越小,误差越小。而当预测值越接近于0时,就越接近负无穷,加上负号后就代表误差越大。
当真实值y=0时,,当预测值越接近0,也越接近0,表示损失函数值越小,误差越小。而当预测值越接近1,越接近负无穷,加上负号后就代表误差越大。
基于上述损失函数公式,计算所有样本的损失函数结果,并采用梯度下降法不断迭代求偏导,逐渐逼近θ的最佳值,使损失函数取得极小值。其中损失函数一般采用最大似然估计或对数似然函数来代替。对逻辑回归算法的效果评估,一般采用曲线下面积(Area Under the Curve,AUC)指标来评价。
2.1.7 判别分析
判别分析是通过对类别已知的样本进行判别模型,从而实现对新样本的类别进行判断。它包括线性判别分析(Linear Discriminant Analysis,LDA)和二次判别分析(Quadratic Discriminant Analysis,QDA)两种类型。其中LDA会在2.2节进行详细说明,下面介绍二次判别分析。
二次判别分析是针对那些服从高斯分布,且均值不同,方差也不同的样本数据而设计的。它对高斯分布的协方差矩阵不做任何假设,直接使用每个分类下的协方差矩阵,因为数据方差相同的时候,一次判别就可以,但如果类别间的方差相差较大时,就变成了一个关于x的二次函数,就需要使用二次决策平面。
【例2.2】通过实例比较LDA和QDA的区别和分类效果。基于sklearn开源库中的discriminant_analysis模块内置LDA和QDA算法类,对随机生成的高斯分布的样本数据集进行分类,数据集的样本数为50,生成的数据集中一半是具有相同协方差矩阵的,另一半的协方差矩阵不相同。
LDA和QDA的预测过程均很简单,核心代码如下所示。
#LDA预测 lda = LinearDiscriminantAnalysis(solver="svd", store_covariance=True) y_pred = lda.fit(X, y).predict(X) splot = plot_data(lda, X, y, y_pred, fig_index=2 * i + 1) #QDA预测 qda = QuadraticDiscriminantAnalysis(store_covariances=True) y_pred = qda.fit(X, y).predict(X) splot = plot_data(qda, X, y, y_pred, fig_index=2 * i + 2)
其中plot_data()方法为自定义可视化函数,主要包括绘制分类区域和样本的预测结果等,对于预测错误的样本用五角星显示,两种算法的效果比较如图2-6所示。第一行的样本数据具有相同协方差矩阵,对于这类数据,LDA和QDA两种方法都可以预测正确。
图2-6(c)和图2-6(d)是针对具有不同协方差矩阵的样本进行的分类,可见,线性判别分析只能学习到线性边界,而二次判别分析可以学到二次边界,所以更加灵活。
图2-6 二次判别决策面运行效果
QDA和LDA的算法相似,它们之间的区别主要受方差和偏差两个因素的影响。模型的预测值和实际值之间的差异可以分解为方差和偏差的综合,对于方差较高、误差较低的模型通常比较灵敏,这种情况的模型并没有变化,只是样本数据改变,其预测结果会产生较大的变化。反之,误差较高、方差较低的模型一般会比较迟钝,即使模型发生变化,依然不会使预测值改变。因此在其中如何取舍,就成了一个很重要的问题。
LDA的结果中方差较低,而QDA算法的相对误差更低。因此,在对协方差矩阵很难估计准确时(例如在样本集比较少的情况下)适合采用LDA算法。而当样本集很大,或者类间协方差矩阵差异比较大的时候,采用QDA更加合适。
2.1.8 非线性模型
在统计学中,非线性回归是回归分析的一种形式,非线性模型是由一个或多个自变量非线性组合而成的。以下是一些常见的非线性模型。
1. 阶跃函数
阶跃函数的变量是实数,阶跃函数就是一个分段函数。
2. 分段函数
分段函数是一个函数,不同的自变量取值区间分别对应不同的子函数,分段是一种函数表达方式,用来描述函数在不同子域区间上的性质。不同子函数的性质不能代表整个函数的性质,在离散性较强的系统中,用分段函数表示不同状态下模型的输出。
3. 样条曲线
样条曲线是由多项式定义的分段函数。在计算机图形学中,样条曲线是指一个分段多项式参数曲线。其结构简单、精度高,可通过曲线拟合复杂形状。
4. 广义加性模型
广义加性模型(GAM)是一种广义线性模型,其中线性预测因子线性地依赖于某些自变量的未知平滑函数。可对部分或全部的自变量采用平滑函数的方法建立模型。