统计学是研究如何收集资料,整理资料和进行量化分析,判断的一门学科。在科学计算,金融等领域有着重要的地位,统计分析是机器学习的重要方法。其相关概念有:
总体:根据一定的目的确定的所要研究的全体集合
样本:总体随机抽取的若干个个体构成的集合
推断:以样本为基础,对总体的某些特征做出的判断,预测和估计
推断可靠性:对推断的结果概率上的确认,是决策的重要依据
统计分析包括:描述性统计 和推断性统计。
描述性统计:通过对样本整理,分析,就数据的分布获取有意义的信息,做出推断
推断性统计:分为参数估计和假设检验。参数估计:样本整体中某个数值的估计,假设检验,通过对推断验证,选择合适的方案。
此外,在机器学习中的方差是估计值与期望值的统计方差计算方法如下:其中 E [ β ^ ] E[\hatβ] E[β^]是期望值, β ^ \hatβ β^是模型的估计值,期望值 E ( x ) = ∑ i = 1 n x i ∗ p i E(x)= \sum_{i=1}^n{x_i*p_i} E(x)=i=1∑nxi∗pi 由xi和其发生的概率的总和表示,反应的是随机变量的均值。用估计值和期望值的差的 平方表示模型的预测的稳定性。
v a r i a n c e = E [ ( β ^ − E [ β ^ ] ) 2 ] variance= E[(\hatβ-E[\hatβ])^2] \quad variance=E[(β^−E[β^])2]
协方差:用于度量两个随机变量的关系。
c o v ( x , y ) = ∑ i = 1 n ( x i − x ˉ ) ( y i − y ˉ ) n − 1 cov(x,y)=\frac{\sum_{i=1}^n{( {x_i - \bar x})(y_i-\bar y)}}{n-1} \quad cov(x,y)=n−1∑i=1n(xi−xˉ)(yi−yˉ)
协方差的结果的意义:结果为正值表示正相关,负值表示负相关,结果为零,表示相互独立。协方差只能处理二维数据,如果维度增加了,就要计算他们两两之间的协方差,这时候就需要协方差矩阵,
0-1损失函数是最简单的损失函数,如果实际值和预测值不相等则认为预测失败,反之,预测成功,损失值为零,不考虑误差。
平方损失函数: L ( y , f ( x ) ) = [ y − f ( x ) ] 2 L(y,f(x))= [y-f(x)]^2 \quad L(y,f(x))=[y−f(x)]2
平方损失函数计算的是实际目标值y与预测值f(x)之间的差的平方,其特点是非负,将差值放大。
绝对损失函数: L ( y , f ( x ) ) = ∣ y − f ( x ) ∣ L(y,f(x))= |y-f(x)| \quad L(y,f(x))=∣y−f(x)∣
对数损失函数: L ( y , f ( x ) ) = − l o g 2 p ( y ∣ x ) L(y,f(x))= -log_2 p(y|x) \quad L(y,f(x))=−log2p(y∣x)
损失函数可以认为是模型的经验风险,是模型关于训练样本的平均损失。通常情况下,可以根据样本的损失函数来确定,根据大数定律,当样本容量趋于无穷时,经验风险趋向于期望风险,假设样本量足够多,通过最小化经验风险即可,但是样本很少的时候,经验信息不足,通过最小化经验风险学习效果未必好,当模型的复杂度足够大的时候,训练误差会逐渐减少趋于零,但是测试误差会先减小,达到最小值后由增大,产生过拟合效果,
**结构风险最小化针对经验风险最小化在小样本量时候容易产生过拟合问题进行改进,增加了表示模型复杂度的正则化项,对模型复杂度进行改进,对模型复杂度进行限制。
(1)L0正则化
L0正则化是通过限制向量中非零的元素的个数实现模型的优化,用L0来正则化一个参数矩阵w,目标是使其更加的稀疏,通过L0来正则化就是寻找最稀疏的特征项。但L0的最小化问题在实际应用中是会出现NP难题(NP-Hard)。因此很多情况下,L0优化问题会用L1、L2代替。
(2)L1正则化
通过对向量中各个元素绝对值之和进行限制,任何规则化算子,如果在wi=0的地方不可微,并且可以分解为多项式的形式,那么这个规则化算子就可以实现稀疏。可以将结构化风险中的模型复杂度表示为 L = α ∑ i = 1 m ∣ w i ∣ L=α\sum_{i=1}^m{|w_i|} L=α∑i=1m∣wi∣其中α表示正则化系数,m是模型的阶次,i表示数据的维度。
正则化前面的系数α,可以控制L图形的大小,α越大,L的图形就越小;而α越小,L的图形越大。同样地,损失函数的参数越多,图中的圆圈就越大。可以看到α起到平衡两者的作用,所以α也称为学习率。
(3)L2正则化
L2正则化是指向量各元素求平方和然后求平方根,用模最小化来确保w的每个元素都很小,都接近于0,但与L1范数不同,它不会等于0,而是接近于0。L2正则化不具有稀疏性,但是,L2正则化通过将目标函数变为λ强凸函数,可以有效地加快梯度下降的收敛速度。
在算法调优时需要注意选择合适的正则化策略。L2准确度高,但是训练时间长;L1正则化可以做一定的特征选择,适合大量数据,在样本不均匀时可以调整损失函数中的权重。
参数小表示抗扰动能力强。特别是特征数比样本数量多时,如果不加入L2正则化,会使模型的抗扰能力变差。而一旦加入正则化罚项之后,随着不断迭代,损失函数中的参数矩阵会不断减小。
在交叉检验方面,一般将数据集随机切分为训练集、验证集和测试集三部分,其中训练集用来训练模型,验证集用于训练过程中模型的验证和选择,而测试集用于对最终训练完成的模型进行评估。在实际应用中,数据往往并不充足,此时可以采用交叉验证的方法,将训练集切分成很多份,然后进行组合,以扩大可用训练集的数量。按照样本切分和组合方式,交叉验证分为以下几种。
① HoldOut检验:
将原始的数据集合随机分成两个集合A和B,A作为训练集,B作为测试集。先使用训练集训练模型,然后利用测试集验证模型的效果,记录最后的分类准确率作为该模型的性能指标,其准确性可以用平均绝对误差(MAE)、平均绝对百分比误差(MAPE)等统计指标来衡量。这种方法的好处是简单,只需要把原始数据分成两个部分。但是严格意义上,Hold-Out检验并不算是交叉检验。
② 简单交叉验证
首先,随机地将数据集分成两个部分,分别用作训练和测试,然后用训练集在各种条件下训练模型,得到不同的模型,在测试集上评价各个模型的测试误差,选出测试误差最小的模型。
③ k折交叉验证:
将数据切分为k个互不相交的大小相同数据集,利用k-1个子集训练,用剩下一个子集测试,重复k次,选出平均测试误差最小的模型。显然,k取值越大,统计偏误就越小,但是需要的计算量越大。一些实验表明,当k取10时,在计算代价和性能之间能达到好的平衡。
④ 留一交叉验证。
假设样本数据集中有N个样本。将其中一个样本单独作为测试集,其余N-1个样本作为训练集,这样得到了N个模型,用这N个模型的分类准确率的平均数作为此分类器的性能指标。留一交叉验证的优点是每一个模型都是用几乎所有的样本来训练模型,并且评估的结果比较可靠。它的缺点是计算成本高,特别是当N非常大时,计算耗时。
常见的概率分布有连续分布和离散分布两类,其中连续分布包括均匀分布、正态分布、t-分布、卡方分布(χ2-distribution)和F-分布等,离散分布包括0-1分布、二项分布、泊松分布等。
① 集中性:正态曲线的高峰位于正中央,即均值所在的位置。
② 对称性:正态曲线以均值为中心,左右对称,曲线两端不与横轴相交。
③ 均匀变动性:正态曲线由均值所在处开始,分别向左右两侧逐渐均匀下降。
④ 均值μ决定正态曲线的中心位置,标准差σ决定正态曲线的陡峭程度。σ越小,曲线越陡峭;σ越大,曲线越扁平。
① 样本集的某一属性分布与整体分布之间的拟合程度,例如某校区中男女比是否符合此学校整体学生的男女比例。
② 两个随机变量独立性验证,例如人的肥胖与心脏病的关联性。
参数估计是用样本统计量去估计总体的参数,即根据样本数据选择统计量去推断总体的分布或数字特征。目的是希望用较少的样本去描述数据的总体分布,前提是要了解样本总体分布(如正态分布),这样就只需要估计其中参数的值。如果无法确认总体分布,那就要采用非参数估计的方法。
最大似然估计就是找参数θ的估计值,使事件发生的可能性最大也就是使p(X|θ)最大,其中 p ( X ∣ θ ) = ∏ i = 1 n p ( x i ∣ θ ) p(X|θ)=\prod_{i=1}^n{p(x_i|\theta)} p(X∣θ)=i=1∏np(xi∣θ)
但是由于p(xi)一般都比较小,n比较大,所以容易造成浮点预算下溢,所以要最大化相应的对数形式,将公式转化为:
θ M L ∗ = a r g m a x { ∑ i = 1 n l o g 2 p ( x i ∣ θ ) } \theta_{ML}^*=arg max{\lbrace\sum_{i=1}^nlog_2{p(x_i|\theta)}}\rbrace θML∗=argmax{i=1∑nlog2p(xi∣θ)}
对 θ \theta θ求导数,然后令导数为零,求出 θ M L ∗ \theta_{ML}^* θML∗。最大似然估计属于点估计,所以只能用于单个参数的估计。由于最大似然估计是根据样本子集对总体分布情况进行估计,在样本子集数据量较少时结果并不准确。
贝叶斯估计是已经知道一些样本,并且满足某种分布,需要估计的这种分布的参数或者是新数据出现的概率。使用贝叶斯公式,可以把关于θ的先验知识以及观察数据结合起来,用以确定θ的后验概率p(θ|X):
p ( θ ∣ X ) = p ( X ∣ θ ) p ( θ ) Z x p(θ|X)=\frac{p(X|θ)p(\theta)}{Z_x} p(θ∣X)=Zxp(X∣θ)p(θ)
其中 Z x = ∫ p ( X ∣ θ ) p ( θ ) d θ Z_x= \int {p(X|θ)p(\theta)} \,{\rm d}\theta Zx=∫p(X∣θ)p(θ)dθ是积累因子,用来保证p(θ|X)的和等于1。
最大后验概率运用了贝叶斯估计的思想,从贝叶斯估计的公式可以看到ZX与θ是无关的,要得到使p(θ|X)最大的θ,等价于求解下面的式子:
θ M A P ∗ = a r g m a x θ { p ( θ ∣ x ) } = a r g m a x θ { p ( x ∣ θ ) p ( θ ) } = a r g m a x θ { p ( x ∣ θ ) } + l o g 2 p ( θ ) \theta_{MAP}^* =arg \, max_\theta\lbrace p(\theta|x)\rbrace\\ \qquad \qquad \; =arg \, max_\theta\lbrace p(x|\theta)p(\theta)\rbrace\\ \qquad \qquad \qquad \;\;\;=arg \, max_\theta\lbrace p(x|\theta)\rbrace+log_2p(\theta)\\ θMAP∗=argmaxθ{p(θ∣x)}=argmaxθ{p(x∣θ)p(θ)}=argmaxθ{p(x∣θ)}+log2p(θ)
当先验概率p(θ)很确定的情况下,可以使用最大后验估计或贝叶斯估计,其中贝叶斯可以取得后验概率的分布情况,而最大后验估计只关心最大化结果的θ值。当然,如果对先验知识没有信心,可以使用最大似然估计。
假设检验是先对参数提出假设,然后利用样本信息判断假设是否成立的过程。假设检验的基本思想是小概率反证法。小概率:发生的可能性低于1%~5%,方法是:先提出假设,再用统计方法确认事件成立的可能性,如果可能性小的话,假设不成立。
假设检验分为原假设(零假设)和备择假设(备选假设)。检验假设正确性的是原假设,表明研究者对未知参数可能数值的看法,备择假设通常反映研究者对参数可能数值对立的看法。
假设检验的过程是:首先对总体做出原假设H0和备择假设H1;确定显著性水平α;选择检验统计量并依据α确定拒绝域(拒绝H0的统计量结果区域);抽样得到样本观察值,并计算实测样本统计量的值,如果在拒绝域中,则拒绝原假设H0,反之,拒绝原假设的证据不足(并非原假设成立)。
显著性检验:先确认某一假设成立,然后利用样本信息确认假设。例如,首先假设人的收入是服从正态分布的,当收集了一定的收入数据后,可以评价实际数据与理论假设H0之间的偏离,如果偏离达到了“显著”的程度就拒绝H0假设,这样的检验方法称为显著性检验。如图所示
显著程度从中心的H0“非常显著”开始不断向外移动,当偏离了某一个较低的显著程度的时候,再看H0假设,已经很难确定其准确度了,这时候就可以认为H0假设不成立,也就是被拒绝了
线性回归是通过拟合自变量和应变量之间的最佳线性关系,来预测目标变量的方法。回归过程就是给出一个样本集,用函数来拟合这个样本集,使这个样本集和拟合函数间的误差最小。回归的具体包括:
(1)确定输入变量与目标变量间的回归模型,即变量间相关关系的数学表达式。
(2)根据样本估计并检验回归模型及未知参数。
(3)从众多的输入变量中,判断哪些变量对目标变量的影响是显著的。
(4)根据输入变量的已知值来估计目标变量的平均值并给出预测精度。
线性回归包括简单线性回归和多元线性回归。简单线性回归:一个自变量,拟合最佳线性关系来预测因变量,多元线性回归是有多个独立的自变量,也是拟合最佳线性关系来预测因变量。
获取回归模型公式简单线性回归的本质y=ax+b,所有点到这个直线距离最小。通过回归公式预测纵坐标
y=ax+b。
Q ( a , b ) = ∑ i = 1 n { y i − ( a x i + b ) } Q(a,b)=\sum_{i=1}^n \lbrace {y_i-(ax_i+b)} \rbrace Q(a,b)=i=1∑n{yi−(axi+b)}
** 判断模型的好坏**
R 2 R^2 R2是判定系数,拟合优度和决定系数,
总偏差和(SST)
反应了因变量的总体波动,数值越大波动越大。是每个因变量的实际值(yi)与其平均值( y ˉ \bar y yˉ)的差的平方和,反映了因变量取值的总体波动情况,其值越大说明原始数据本身具有越大的波动,其公式如下。
S S T = ∑ i = 1 n ( y i − y ˉ ) 2 SST=\sum_{i=1}^n(y_i-\bar y)^2 SST=i=1∑n(yi−yˉ)2
回归平方和(SSR)
是因变量的回归值( y i ^ \hat{y_i} yi^)与其均值( y ˉ \bar y yˉ)的差的平方和,它反映回归直线的波动情况。
S S R = ∑ i = 1 n ( y i ^ − y ˉ ) 2 SSR=\sum_{i=1}^n(\hat{y_i}-\bar y)^2 SSR=i=1∑n(yi^−yˉ)2
残差平方和(SSE)
表示因变量的实际值和回归值的差的平方和反映了回归方程以外的因素的影响,
S S E = ∑ i = 1 n ( y i ^ − y i ) 2 SSE=\sum_{i=1}^n(\hat{y_i}- y_i)^2 SSE=i=1∑n(yi^−yi)2
回归方程拟合程度的好坏是看这条回归线能够多大程度的解释目标值的变化,一般用 R 2 R^2 R2表示,公式为 R 2 = S S R S S T = 1 − S S E S S T R^2=\frac{SSR}{SST}=1-\frac{SSE}{SST} R2=SSTSSR=1−SSTSSE
R2的取值为[0,1],从其定义可见,越接近1,拟合程度越好。当R2为1时表示回归方程可以完全解释因变量的变化。如果R2很低时,说明因变量和目标变量之间可能并不存在线性关系。
因变量预测标准误差是因变量的实际值和预测值的标准误差,值越小说明模型越高,代表性越强,拟合效果越好。 F值如果显著性水平Sig指标大于0.05,表示相关性较弱,没有实际意义。如果发现模型的Sig指标低于0.05,但是各自变量的Sig指标均超过0.05,就需要应用t检验查看回归系数表中各变量的显著性水平,或者是自变量之间出现了共线性问题,需要通过逐步回归的方法将显著性较差的自变量剔除。
多元线性回归方程是 y = b 0 + b 1 x 1 + b 2 x 2 + … + b k x k + ξ y=b_0+b_1x_1+b_2x_2+\ldots+b_kx_k+\xi y=b0+b1x1+b2x2+…+bkxk+ξ
要求每个xi必须是相互独立的,其中bi表示回归系数,ε为随机误差,其评价指标主要有以下几个。
逻辑回归是一种预测分析,解释自变量和因变量和多个自变量之间的关系,与逻辑回归不同的是它的目标变量有几种类别,所有主要是解决分类问题。他是用概率的方式,预测出某一分类的概率问题,如果概率超过50%,则属于某一分类。主要是分为三步:
例子:
二分类一般用Sigmoid函数作为预测函数,公式表示为 ψ ( z ) = 1 1 + e − z \psi(z)=\frac{1}{1+e^{-z}} ψ(z)=1+e−z1
首先构造h函数: h ( θ ) = g ( θ 0 + θ 1 x 1 + θ 2 x 2 ) h(\theta)=g(\theta_0+\theta_1x_1+\theta_2x_2) h(θ)=g(θ0+θ1x1+θ2x2)
对函数化简为: h θ ( x ) = g ( θ T X ) = 1 1 + e − θ T X h_\theta(x)=g(\theta^TX)=\frac{1}{1+e^{-\theta^TX}} hθ(x)=g(θTX)=1+e−θTX1
接着是定义损失函数J(θ),在逻辑回归中损失函数采用对数损失函数:
L ( y ^ , y ) = − [ y l o g 2 y ^ + ( 1 − y ) l o g 2 ( 1 − y ^ ) ] L(\hat y,y)=-[ylog_2\hat y+(1-y)log_2(1-\hat y)] L(y^,y)=−[ylog2y^+(1−y)log2(1−y^)]
当y=1时,当预测值 y ^ \hat y y^也接近与1,损失函数就接近于0,表示损失函数值越小,误差越小。相反则反之。
计算所有样本的损失函数结果,并采用梯度下降法不断迭代求偏导,逐渐逼近θ的最佳值,使损失函数取得极小值
判别分析是通过对类别已知的样本进行判别模型,从而实现对新样本的类别进行判断。包括线性判别分析(LDA)和二次判别分析(QDA)两种类型。
二次判别分析
是针对高斯分布,且均值不同,方差也不同的数据,他对高斯分布的协方差矩阵不做任何假设,直接使用每个分类下的协方差矩阵,如果数据方差相同的时候,判别一次就好了,但是如果不同的话,就可以变成关于x的二次函数,使用二次决策树判别
例题
通过实验比较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)
其中polt_data()方法用于自定义可视化函数,主要包括绘制分类区域和样本的预测结果等,对于预测错误的样本用五角星显示,
可见,线性判别分析只能学习到线性边界,而二次判别分析可以学到二次边界,所以更加灵活。
QDA和LDA的算法相似,它们之间的区别主要受方差和偏差两个因素的影响。模型的预测值和实际值之间的差异可以分解为方差和偏差的综合,对于方差较高、误差较低的模型通常比较灵敏,这种情况的模型并没有变化,只是样本数据改变,其预测结果会产生较大的变化。反之,误差较高、方差较低的模型一般会比较迟钝,即使模型发生变化,依然不会使预测值改变。因此在其中如何取舍,就成了一个很重要的问题。
LDA的结果中方差较低,而QDA算法的相对误差更低。因此,在对协方差矩阵很难估计准确时(例如在样本集比较少的情况下)适合采用LDA算法。而当样本集很大,或者类间协方差矩阵差异比较大的时候,采用QDA更加合适。