机器学习数据预处理—统计分析方法

数据预处理

1 数据规范化

量纲,指将一个物理导出量用若干基本量的乘方之积表示出来的表达式。数据的比较需要关注两点——绝对数值量纲,而特征间因为量纲的存在导致无法直接通过绝对数值比较大小,也就无法判断特征间的重要性。例如若某个特征的方差比其他特征大几个数量级,那么它就会在学习算法中占据主导位置而弱化了其他特征,甚至导致模型无法收敛。

无量纲化(Nondimensionalization)的数据预处理方式可以让特征间拥有相同权重——从绝对数值比较转换为相对数值比较,不再受量纲影响,从而提高模型精度、稳定性,加快收敛速度。无量纲化的主要方式是规范化(Standardization),即将不同数值变化范围的分布映射到相同的固定范围。特别地,当映射到0-1区间时称为归一化(Normalization)

1.1 最值归一化

核心是通过样本特征最值,将特征数值线性映射到0-1区间,且不破坏分布情况,转化函数如下:

x_{scale}=\frac{x-x_{min}}{x_{max}-x_{min}}

其特点是:

  • 算法过程简单直观;
  • 新数据加入可能导致最值变化,需要重新定义;
  • 奇异值(Outlier)非常敏感,因为其直接影响最值。故最值归一化只适用于数据在一个范围内分布而不会出现Outlier的情况,如人的身高数据、考试成绩数据等

1.2 Z-Score规范化

核心是将所有数据映射到均值为0,方差为1的分布中(但并不限制在区间内),转化函数如下: 

x_{scale}=\frac{x-u}{\delta }

其特点是:

  • 很好地契合本身就服从正态分布的数据;
  • 即使原数据集中有Outlier,规范化的数据集依然满足均值为0,不会形成有偏数据;
  • 对Outlier敏感度较低,但在计算方差和均值的时候Outliers仍会影响计算。所以在出现Outliers的情况下可能会出现转换后,数据的不同维度分布完全不同的情况。

2 类别平衡化

类别不平衡(class-imbalance)分类任务中不同类别的训练样本数目差别很大的情况,例如训练集中有998个反例,但正例只有2个。类别不平衡下训练处的学习器往往没有价值,因为其只需始终判断为大样本数的类别就能取得很小的训练误差。

解决类别不平衡问题的策略主要有:

2.1 阈值移动

亦称再平衡(rebalance)再缩放(rescaling)策略。设训练集中有m^{-}个正例和m^{+}个反例,学习器输出预测正例的概率为y。假设训练集是真实样本空间的采样,则对于任意测试样本,令 

\frac{y'}{1-y' }=\frac{y}{1-y}*\frac{m^{-}}{m^{+}}

通过比较y′与0.5的大小来判定正、反例。

2.2 欠采样法(undersampling)

核心原理是去除样本数较多类别中的部分样例达到类别平衡。欠采样法因丢失样例而减小了时间开销,但要注意防止欠拟合。欠采样的代表性算法是EasyEnsemble

2.3 过采样法(oversampling)

核心原理是增加样本数较少类别中的部分样例达到类别平衡。过采样法因增加样例而增大了时间开销,但要注意防止过拟合。过采样法的代表性算法是SMOTE

3 连续值离散化

连续属性离散化(Discretization of Continuous Attributes)是指将连续数据分段为一系列离散化区间,每个区间对应一个属性值。连续属性离散化的主要原因:

  • 算法要求,例如分类决策树等基于分类属性的算法;
  • 提高特征在知识层面的表达能力,例如年龄5岁和65岁两个特征,对于连续型需要进行数值层面的大小比较,但若将其映射为“幼年”和“老年”则更直观;
  • 离散化数据对异常离群值有更强的鲁棒性,能提高模型稳定性。

无监督离散方法

等距离散化,即将连续属性划分为若干有限区间,每个区间长度相等。

等频离散化,即将连续属性划分为若干有限区间,每个区间样本数相同。

有监督离散方法

信息增益法,是一种二分法(bi-partition),核心是以离散前后信息增益最大的点为二分位点。

4 缺失值处理

侦测成本过高、隐私保护、无效数据、信息遗漏等情况都会造成实际应用时数据集属性缺失,因此缺失值处理不可避免。

缺失值处理的主要方式:

  • 插值填充,即用已有数据的分布来推测缺失值。例如均值填充(主要针对连续型属性)、众数填充(主要针对离散型属性)、回归填充(基于已有属性值建立回归方程估计缺失值)等。
  • 相似填充,即用和缺失属性样本相似的若干样本推测缺失值。例如热卡填充(Hot Deck Imputation),基于某种相似度度量选择数据集中与之最相似的样本属性代替缺失值;聚类填充,基于聚类分析选择数据集中与之最相似的样本子集进行插值填充。

5 哑言编码

哑言编码(Dummy Encode)面向离散型特征,是将一组定性离散特征的特征值以0-1方式向量化、定量化的编码方式。

哑言编码的优势在于:

  • 稀疏化数据,稀疏向量运算速度快,且优化方式多;
  • 提高模型表达能力,哑言编码相当于为模型引入非线性环节,提高模型容量;
  • 无量纲化与定量化,将不同类型特征都量化为0-1向量进行形式化表达,便于推理和演算。

哑言编码的缺点在于:由于不同特征的哑言编码相互堆叠,最终形成的特征向量会导致特征空间产生维数灾难(The Curse of Dimensionality),因此一般可用PCA降维配合哑言编码。

哑言编码有两种形式,采用N位状态寄存器来对N个状态进行编码,每个状态都有独立的寄存器位,并且在任意时候只有一位有效的编码方式称为独热编码(One-Hot Encode);否则若减少一个自由度则是一般的哑言编码。

6 正则化

正则化(Regularization)是在模型经验风险(empirical risk)最小化的基础上引入结构风险(structural risk)最小化的策略,正则化为引入领域先验知识、训练意图提供途径,也是常用避免过拟合的惩罚函数方法。正则化的一般表达式如下: 

min\lambda \Omega (f)+\sum_{i=1}^{m}\varphi (f(x_{i}),y_{i})

其中\Omega (f)为正则化项,用于描述模型的某些性质以降低结构风险;

\sum_{i=1}^{m}\varphi (f(x_{i}),y_{i})为经验风险项,用于描述模型与训练数据的契合程度;

常数λ表示对结构风险和经验风险的偏好。

6.1 L1正则

由于L^{1}范数正则下,最优解多出现于正则项的棱边棱角处产生稀疏性,故范数正则也称稀疏规则算子(Lasso Regularization),可引入对稀疏参数的偏好,有利于突出重点特征以进行特征选择。事实上,L^{0}范数也可实现特征选择和稀疏化,但其相对L^{1}范数而言不易于求解优化,因此实际应用中更倾向于使用L^{1}范数。

6.2 L2正则

L^{2}范数正则也称为权重衰减(Weight Decay),其偏好于保留更多特征,且这些特征更均匀(趋于0)。在回归分析中,L^{1}范数正则化的代价函数称为岭回归(Ridge Regression)

7 数据降维

主要是PCA降维

上图数据点大部分都分布在x_{2}方向上,在x_{1}方向上的取值近似相同,那么对于某些问题就可以直接去除x_{1}坐标,而只保留x_{2}​坐标值即可。

但是有些情况下不能直接这样处理,例如图中数据在x1x_1x1​和x2x_2x2​方向上分布较均匀,任意去除一个维度可能对结果都会有很大影响。此时需要通过PCA原理,找出某个使数据分布最分散——方差最大的维度,即图中的红色坐表系以便达到降维的目的。

从上面的实例中可以归纳出PCA算法的优化目标:

  • 选择的特征维度间相关性要尽可能小——降低计算维度,减少计算成本;
  • 保留的特征维度要尽量反映数据的本质——该维度方差最大;

这两个优化目标可以用协方差矩阵统一起来:

前者体现优化目标(a),后者体现优化目标(b)。简单推导一下PCA降维矩阵的条件:

令导数为0得到:C_{X}P^{T}=-\lambda P^{T}

降维矩阵P是以原始样本协方差阵C_{X}的前r个特征向量为行向量组的正交阵

统计分析

1、描述统计

集中趋势分析

集中趋势分析主要靠平均数、中数、众数等统计指标来表示数据的集中趋势。例如被试的平均成绩多少?是正偏分布还是负偏分布?

离中趋势分析

离中趋势分析主要靠全距、四分差、平均差、方差(协方差:用来度量两个随机变量关系的统计量)、标准差等统计指标来研究数据的离中趋势。例如,我们想知道两个教学班的语文成绩中,哪个班级内的成绩分布更分散,就可以用两个班级的四分差或百分点来比较。

相关分析

相关分析探讨数据之间是否具有统计学上的关联性。这种关系既包括两个数据之间的单一相关关系,也包括多个数据之间的多重相关关系。

推论统计

推论统计是统计学乃至于心理统计学中较为年轻的一部分内容。它以统计结果为依据,来证明或推翻某个命题。通过分析样本与样本分布的差异,来估算样本与总体、同一样本的前后是否具有显著性差异。

正态性检验

很多统计方法都要求数值服从或近似服从正态分布,所以之前需要进行正态性检验。

常用方法:非参数检验的K-量检验、P-P图、Q-Q图、W检验、动差法。

2、假设检验

参数检验

参数检验是在已知总体分布的条件下(一股要求总体服从正态分布)对一些主要的参数(如均值、百分数、方差、相关系数等)进行的检验。

(1)U验 :使用条件:当样本含量n较大时,样本值符合正态分布

(2)T检验:使用条件:当样本含量n较小时,样本值符合正态分布

A 单样本t检验:推断该样本来自的总体均数μ与已知的某一总体均数μ0 (常为理论值或标准值)有无差别;

B 配对样本t检验:当总体均数未知时,且两个样本可以配对,同对中的两者在可能会影响处理效果的各种条件方面扱为相似;

C 两独立样本t检验:无法找到在各方面极为相似的两样本作配对比较时使用。

非参数检验

非参数检验则不考虑总体分布是否已知,常常也不是针对总体参数,而是针对总体的某些一股性假设(如总体分布的位罝是否相同,总体分布是否正态)进行检验。

适用情况:顺序类型的数据资料,这类数据的分布形态一般是未知的。

A 虽然是连续数据,但总体分布形态未知或者非正态;

B 体分布虽然正态,数据也是连续类型,但样本容量极小,如10以下;

主要方法包括:卡方检验、秩和检验、二项检验、游程检验、K-量检验等。

3、信度分析

信度(Reliability)即可靠性,它是指采用同样的方法对同一对象重复测量时所得结果的一致性程度。信度指标多以相关系数表示,大致可分为三类:稳定系数(跨时间的一致性),等值系数(跨形式的一致性)和内在一致性系数(跨项目的一致性)。

信度分析的方法主要有以下:重测信度法、复本信度法、折半信度法、α信度系数法。

重测信度法:这一方法是用同样的问卷对同一组被调查者间隔一定时间重复施测,计算两次施测结果的相关系数。显然,重测信度属于稳定系数。

复本信度法:让同一组被调查者一次填答两份问卷复本,计算两个复本的相关系数。复本信度属于等值系数。

折半信度法:折半信度法是将调查项目分为两半,计算两半得分的相关系数,进而估计整个量表的信度。折半信度属于内在一致性系数,测量的是两半题项得分间的一致性。

α信度系数法:α信度系数是目前最常用的信度系数,\alpha =\frac{k}{k-1}*\frac{\sum {(\delta _{i})^{2}}}{(\delta _{T})^{2}},α系数评价的是量表中各题项得分间的一致性,属于内在一致性系数。

总量表的信度系数最好在0.8以上,0.7-0.8之间可以接受;分量表的信度系数最好在0.7以上,0.6-0.7还可以接受。

分类

(1)外在信度:不同时间测量时量表的一致性程度,常用方法重测信度。

(2)内在信度:每个量表是否测量到单一的概念,同时组成两表的内在体项一致性如何,常用方法分半信度。

4、列联表分析

列联表是观测数据按两个或更多属性(定性变量)分类时所列出的频数表。

若总体中的个体可按两个属性A、B分类,A有r个等级A_{1},A_{2},A_{3},...,A_{r},B有c个等级B_{1},B_{2},B_{3},...,B_{c},从总体中抽取大小为n的样本,设其中有n_{ij}个个体的属性属于等级A_{i} , B_{j}n_{ij}称为频数,将r×c个n_{ij}排列为一个r行c列的二维列联表,简称r×c表。若所考虑的属性多于两个,也可按类似的方式作出列联表,称为多维列联表。(独立性检验)

列联表又称交互分类表,所谓交互分类,是指同时依据两个变量的值,将所研究的个案分类。交互分类的目的是将两变量分组,然后比较各组的分布状况,以寻找变量间的关系。用于分析离散变量或定型变量之间是否存在相关。

对于二维表,可进行卡方检验,对于三维表,可作Mentel-Hanszel分层分析。

5、相关分析

研究现象之间是否存在某种依存关系,对具体有依存关系的现象探讨相关方向及相关程度。

(1)单相关:两个因素之间的相关关系叫单相关,即研究时只涉及一个自变量和一个因变量;

(2)复相关 :三个或三个以上因素的相关关系叫复相关,即研究时涉及两个或两个以上的自变量和因变量相关;

(3)偏相关:在某一现象与多种现象相关的场合,当假定其他变量不变时,其中两个变量之间的相关关系称为偏相关。

6、方差分析

使用条件:各样本须是相互独立的随机样本;各样本来自正态分布总体;各总体方差相等。

(1)单因素方差分析:一项试验只有一个影响因素,或者存在多个影响因素时,只分析一个因素与响应变量的关系

(2)多因素有交互方差分析:一顼实验有多个影响因素,分析多个影响因素与响应变量的关系,同时考虑多个影响因素之间的关系

(3)多因素无交互方差分析:分析多个影响因素与响应变量的关系,但是影响因素之间没有影响关系或忽略影响关系

(4)协方差分析:传统的方差分析存在明显的弊端,无法控制分析中存在的某些随机因素,使之影响了分析结果的准确度。协方差分析主要是在排除了协变量的影响后再对修正后的主效应进行方差分析,是将线性回归与方差分析结合起来的一种分析方法,

7、回归分析

一元线性回归分析:

只有一个自变量X与因变量Y有关,X与Y都必须是连续型变量,因变量y或其残差必须服从正态分布。

多元线性回归分析:

使用条件:分析多个自变量与因变量Y的关系,X与Y都必须是连续型变量,因变量y或其残差必须服从正态分布 。

(1)变呈筛选方式选择最优回归方程的变里筛选法包括全横型法(CP法)、逐步回归法,向前引入法和向后剔除法

(2)横型诊断方法

A 残差检验:观测值与估计值的差值要艰从正态分布

B 强影响点判断:寻找方式一般分为标准误差法、Mahalanobis距离法

C 共线性诊断:• 诊断方式:容忍度、方差扩大因子法(又称膨胀系数VIF)、特征根判定法、条件指针CI、方差比例

• 处理方法:增加样本容量或选取另外的回归如主成分回归、岭回归等

8、Logistic回归分析

线性回归模型要求因变量是连续的正态分布变里,且自变量和因变量呈线性关系,而Logistic回归模型对因变量的分布没有要求,是研究因变量为二项分类或多项分类结果与某些影响因素之间关系的一种多重回归分析方法。

Logistic回归模型有条件与非条件之分,条件Logistic回归模型和非条件Logistic回归模型的区别在于参数的估计是否用到了条件概率。

逻辑回归是一种广义线性回归模型,是Sigmoid函数归一化后的线性回归模型,常用来解决二元分类问题,可解释性强。它假设数据服从伯努利分布,通过梯度下降法对其损失函数(极大似然函数)求解,以达到数据二分类的目的。

逻辑回归是用来计算"事件=Success""事件=Failure"的概率。逻辑回归不要求自变量和因变量是线性关系。它可以处理各种类型的关系,因为它对预测的相对风险指数或使用了一个非线性的log转换。它广泛的用于分类问题。

基本原理是其函数表达式为对数几率函数,通过Sigmoid函数将线性回归方程转化,将任何实数映射到(0,1)之间

 激活函数对应图像为:

优化目标是通过观测样本的极大似然估计值来选择参数。

损失函数表征模型预测值与真实值的不一致程度。LR损失函数为负的对数损失函数。逻辑回归,假设样本服从伯努利分布(0-1分布),然后求得满足该分布的似然函数,接着取对数求极值最小化负的似然函数。应用极大似然估计法估计模型参数,从而得到逻辑回归模型。逻辑回归的损失函数求最小值,就是根据最大似然估计的方法来的。并使用梯度下降法求解损失函数。

参数选择:

原理:

为什么选择Sigmoid函数函数:梯度下降!要使用梯度下降,就存在一个前提,即损失函数可导。而以 Sign函数为假设函数列出来的损失函数明显在出不可导(左导 = 0,右导 = 1)。而反观 Sigmoid函数,在x轴内均有导数存在,于是只能跟 Sign函数说再见了。在深度学习中,激活函数的选取也是这个道理,简单来说,就是在0这个点上,Sign函数会发生梯度消失的情况。

9、聚类分析

聚类与分类的不同在于,聚类所要求划分的类是未知的。

聚类分析是一种探索性的分析,在分类的过程中,人们不必事先给出一个分类的标准,聚类分析能够从样本数据出发,自动进行分类。聚类分析所使用方法的不同,常常会得到不同的结论。

不同研究者对于同一组数据进行聚类分析,所得到的聚类数未必一致。

从实际应用的角度看,聚类分析是数据挖掘的主要任务之一。而且聚类能够作为一个独立的工具获得数据的分布状况,观察每一簇数据的特征,集中对特定的聚簇集合作进一步地分析。聚类分析还可以作为其他算法(如分类和定性归纳算法)的预处理步骤。

定义

依据研究对象(样品或指标)的特征,对其进行分类的方法,减少研究对象的数目。

各类事物缺乏可靠的历史资料,无法确定共有多少类别,目的是将性质相近事物归入一类。各指标之间具有一定的相关关系。

变量类型:定类变量、定量(离散和连续)变量

样本个体或指标变量按其具有的特性进行分类,寻找合理的度量事物相似性的统计量。

性质分类

Q型聚类分析:对样本进行分类处理,又称样本聚类分析使用距离系数作为统计量衡量相似度,如欧式距离、极端距离、绝对距离等。

R型聚类分析:对指标进行分类处理,又称指标聚类分析使用相似系数作为统计量衡量相似度,相关系数、列联系数等。

方法分类

(1)系统聚类法:适用于小样本的样本聚类或指标聚类,一般用系统聚类法来聚类指标,又称分层聚类。

(2)逐步聚类法:适用于大样本的样本聚类。

(3)其他聚类法:两步聚类、K均值聚类等。

10、判别分析

根据已掌握的一批分类明确的样品建立判别函数,使产生错判的事例最少,进而对给定的一个新样品,判断它来自哪个总体。

与聚类分析区别

(1)聚类分析可以对样本逬行分类,也可以对指标进行分类;而判别分析只能对样本。

(2)聚类分析事先不知道事物的类别,也不知道分几类;而判别分析必须事先知道事物的类别,也知道分几类。

(3)聚类分析不需要分类的历史资料,而直接对样本进行分类;而判别分析需要分类历史资料去建立判别函数,然后才能对样本进行分类。

分类

(1)Fisher判别分析法

以距离为判别准则来分类,即样本与哪个类的距离最短就分到哪一类,适用于两类判别;以概率为判别准则来分类,即样本属于哪一类的概率最大就分到哪一类,适用于多类判别。

(2)BAYES判别分析法

BAYES判别分析法比FISHER判别分析法更加完善和先进,它不仅能解决多类判别分析,而且分析时考虑了数据的分布状态,所以一般较多使用;

11、主成分PCA分析

通过正交变换将一组可能存在相关性的变量转换为一组线性不相关的变量,转换后的这组变量叫主成分。主成分分析首先是由K.皮尔森(Karl Pearson)对非随机变量引入的,而后H.霍特林将此方法推广到随机向量的情形。信息的大小通常用离差平方和或方差来衡量。

原理

        在用统计分析方法研究多变量的课题时,变量个数太多就会增加课题的复杂性。人们自然希望变量个数较少而得到的信息较多。

        在很多情形,变量之间是有一定的相关关系的,当两个变量之间有一定相关关系时,可以解释为这两个变量反映此课题的信息有一定的重叠。主成分分析是对于原先提出的所有变量,将重复的变量(关系紧密的变量)删去多余,建立尽可能少的新变量,使得这些新变量是两两不相关的,而且这些新变量在反映课题的信息方面尽可能保持原有的信息。

        设法将原来变量重新组合成一组新的互相无关的几个综合变量,同时根据实际需要从中可以取出几个较少的综合变量尽可能多地反映原来变量的信息的统计方法叫做主成分分析或称主分量分析,也是数学上用来降维的一种方法。

        PCA的主要思想是将n维特征映射到k维上,这k维是全新的正交特征也被称为主成分,是在原有n维特征的基础上重新构造出来的k维特征。PCA的工作就是从原始的空间中顺序地找一组相互正交的坐标轴,新的坐标轴的选择与数据本身是密切相关的。其中,第一个新坐标轴选择是原始数据中方差最大的方向,第二个新坐标轴选取是与第一个坐标轴正交的平面中使得方差最大的,第三个轴是与第1,2个轴正交的平面中方差最大的。依次类推,可以得到n个这样的坐标轴。通过这种方式获得的新的坐标轴,我们发现,大部分方差都包含在前面k个坐标轴中,后面的坐标轴所含的方差几乎为0。于是,我们可以忽略余下的坐标轴,只保留前面k个含有绝大部分方差的坐标轴。事实上,这相当于只保留包含绝大部分方差的维度特征,而忽略包含方差几乎为0的特征维度,实现对数据特征的降维处理。

        如何得到这些包含最大差异性的主成分方向呢?事实上,通过计算数据矩阵的协方差矩阵,然后得到协方差矩阵的特征值特征向量,选择特征值最大(即方差最大)的k个特征所对应的特征向量组成的矩阵。这样就可以将数据矩阵转换到新的空间当中,实现数据特征的降维。

        由于得到协方差矩阵的特征值特征向量有两种方法:特征值分解协方差矩阵、奇异值分解协方差矩阵,所以PCA算法有两种实现方法:基于特征值分解协方差矩阵实现PCA算法、基于SVD分解协方差矩阵实现PCA算法。

由上面的公式,我们可以得到以下结论:

(1) 方差的计算公式是针对一维特征,即针对同一特征不同样本的取值来进行计算得到;而协方差则必须要求至少满足二维特征;方差是协方差的特殊情况。

(2) 方差和协方差的除数是n-1,这是为了得到方差和协方差的无偏估计。

协方差为正时,说明X和Y是正相关关系;协方差为负时,说明X和Y是负相关关系;协方差为0时,说明X和Y是相互独立。Cov(X,X)就是X的方差。当样本是n维数据时,它们的协方差实际上是协方差矩阵(对称方阵)。例如,对于3维数据(x,y,z),计算它的协方差就是:

散度矩阵定义为:

S=\sum_{k=1}^{n}(x_{k}-m)(x_{k}-m)^{T},where m is m=\frac{\sum_{k=1}^{n}(x_{k})}{n}

对于数据X的散度矩阵为XX^{T}  。其实协方差矩阵和散度矩阵关系密切,散度矩阵就是协方差矩阵乘以(总数据量-1)。因此它们的特征值特征向量是一样的。这里值得注意的是,散度矩阵是SVD奇异值分解的一步,因此PCA和SVD是有很大联系。

如果一个向量v是矩阵A的特征向量,将一定可以表示成下面的形式:

𝐴𝑣=𝜆𝑣

其中,λ是特征向量v对应的特征值,一个矩阵的一组特征向量是一组正交向量。

对于矩阵A,有一组特征向量v,将这组向量进行正交化单位化,就能得到一组正交单位向量。特征值分解,就是将矩阵A分解为如下式:

A=Q\sum Q^{-1}

其中,Q是矩阵A的特征向量组成的矩阵,Σ则是一个对角阵,对角线上的元素就是特征值。

基于特征值分解协方差矩阵实现PCA算法

输入:数据集 𝑋={𝑥1,𝑥2,𝑥3,...,𝑥𝑛} ,需要降到k维。

1) 去平均值(即去中心化),即每一位特征减去各自的平均值。

2) 计算协方差矩阵\frac{1}{n}XX^{T} ,注:这里除或不除样本数量n或n-1,其实对求出的特征向量没有影响。

3) 用特征值分解方法求协方差矩阵\frac{1}{n}XX^{T} 的特征值与特征向量。

4) 对特征值从大到小排序,选择其中最大的k个。然后将其对应的k个特征向量分别作为行向量组成特征向量矩阵P。

5) 将数据转换到k个特征向量构建的新空间中,即Y=PX。

关于为什么用特征值分解矩阵,是因为\frac{1}{n}XX^{T}是方阵,能很轻松的求出特征值与特征向量。当然,用SVD也可以,是求特征值与特征向量的另一种方法。

exp:

以X为例,我们用PCA方法将这两行数据降到一行。

1)因为X矩阵的每行已经是零均值,所以不需要去平均值。

2)求协方差矩阵:\frac{1}{n}XX^{T}

3)求协方差矩阵的特征值与特征向量。

求解后的特征值为:

𝜆1=2,𝜆2=25

对应的特征向量为:

秩为2,对应的特征向量可以构成通解,标准化后的特征向量为:

4)矩阵P为

5)最后我们用P的第一行乘以数据矩阵X,就得到了降维后的表示:

如果我们通过特征值分解协方差矩阵,那么我们只能得到一个方向的PCA降维。这个方向就是对数据矩阵X从行(或列)方向上压缩降维。

##Python实现PCA
import numpy as np
def pca(X,k):#k is the components you want
  #mean of each feature
  n_samples, n_features = X.shape
  mean=np.array([np.mean(X[:,i]) for i in range(n_features)])
  #normalization
  norm_X=X-mean
  #scatter matrix
  scatter_matrix=np.dot(np.transpose(norm_X),norm_X)
  #Calculate the eigenvectors and eigenvalues
  eig_val, eig_vec = np.linalg.eig(scatter_matrix)
  eig_pairs = [(np.abs(eig_val[i]), eig_vec[:,i]) for i in range(n_features)]
  # sort eig_vec based on eig_val from highest to lowest
  eig_pairs.sort(reverse=True)
  # select the top k eig_vec
  feature=np.array([ele[1] for ele in eig_pairs[:k]])
  #get new data
  data=np.dot(norm_X,np.transpose(feature))
  return data

X = np.array([[-1, 1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])

print(pca(X,1))

(2)用sklearn的PCA与我们的PCA做个比较:

##用sklearn的PCA
from sklearn.decomposition import PCA
import numpy as np
X = np.array([[-1, 1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])
pca=PCA(n_components=1)
pca.fit(X)
print(pca.transform(X))

结果发现是取反的, sklearn中的PCA是通过svd_flip函数实现的,sklearn对奇异值分解结果进行了一个处理,因为u_{i}*\delta _{i}*v_{i} = -u_{i}*\delta _{i}*(-v_{i}),也就是u和v同时取反得到的结果是一样的,而这会导致通过PCA降维得到不一样的结果(虽然都是正确的)。

PCA有两种通俗易懂的解释:(1)最大方差理论;(2)最小化降维造成的损失。

信号处理中认为信号具有较大的方差,噪声有较小的方差,信噪比就是信号与噪声的方差比,越大越好。样本在u1上的投影方差较大,在u2上的投影方差较小,那么可认为u2上的投影是由噪声引起的。因此我们认为,最好的k维特征是将n维样本点转换为k维后,每一维上的样本方差都很大。

缺点

1、在主成分分析中,我们首先应保证所提取的前几个主成分的累计贡献率达到一个较高的水平(即变量降维后的信息量须保持在一个较高水平上),其次对这些被提取的主成分必须都能够给出符合实际背景和意义的解释(否则主成分将空有信息量而无实际含义)。

2、主成分的解释其含义一般多少带有点模糊性,不像原始变量的含义那么清楚、确切,这是变量降维过程中不得不付出的代价。因此,提取的主成分个数m通常应明显小于原始变量个数p(除非p本身较小),否则维数降低的“利”可能抵不过主成分含义不如原始变量清楚的“弊”。

12、因子分析

一种旨在寻找隐藏在多变量数据中、无法直接观察到却影响或支配可测变量的潜在因子、并估计潜在因子对可测变量的影响程度以及潜在因子之间的相关性的一种多元统计分析方法。

与主成分分析比较:

相同:都能够起到治理多个原始变量内在结构关系的作用

不同:主成分分析重在综合原始变适的信息.而因子分析重在解释原始变量间的关系,是比主成分分析更深入的一种多元统计方法

用途:

(1)减少分析变量个数

(2)通过对变量间相关关系探测,将原始变量进行分类

13、时间序列分析

动态数据处理的统计方法,研究随机数据序列所遵从的统计规律,以用于解决实际问题;时间序列通常由4种要素组成:趋势、季节变动、循环波动和不规则波动。

时间序列预测法的应用

系统描述:根据对系统进行观测得到的时间序列数据,用曲线拟合方法对系统进行客观的描述;

系统分析:当观测值取自两个以上变量时,可用一个时间序列中的变化去说明另一个时间序列中的变化,从而深入了解给定时间序列产生的机理;

预测未来:一般用ARMA模型拟合时间序列,预测该时间序列未来值;

决策和控制:根据时间序列模型可调整输入变量使系统发展过程保持在目标值上,即预测到过程要偏离目标时便可进行必要的控制。

14、生存分析

用来研究生存时间的分布规律以及生存时间和相关因索之间关系的一种统计分析方法

包含内容

(1)描述生存过程,即研究生存时间的分布规律

(2)比较生存过程,即研究两组或多组生存时间的分布规律,并进行比较

(3)分析危险因素,即研究危险因素对生存过程的影响

(4)建立数学模型,即将生存时间与相关危险因素的依存关系用一个数学式子表示出来。

方法

(1)统计描述:包括求生存时间的分位数、中数生存期、平均数、生存函数的估计、判断生存时间的图示法,不对所分析的数据作出任何统计推断结论

(2)非参数检验:检验分组变量各水平所对应的生存曲线是否一致,对生存时间的分布没有要求,并且检验危险因素对生存时间的影响。

A 乘积极限法(PL法)

B 寿命表法(LT法)

(3)半参数横型回归分析:在特定的假设之下,建立生存时间随多个危险因素变化的回归方程,这种方法的代表是Cox比例风险回归分析法

(4)参数模型回归分析:已知生存时间服从特定的参数横型时,拟合相应的参数模型,更准确地分析确定变量之间的变化规律

15、ROC分析

ROC曲线是根据一系列不同的二分类方式(分界值或决定阈),以真阳性率(灵敏度)为纵坐标,假阳性率(1-特异度)为横坐标绘制的曲线。经常用于评估机器学习模型的性能(模型的泛化能力)。

ROC:展示在不同的分类阈值下,模型的真正类率(True Positive Rate, TPR)和假正类率(False Positive Rate, FPR)之间的关系。通常与ROC曲线一起使用的还有AUC(Area Under the Curve)值,用以量化ROC曲线下的面积,进而给出一个关于模型性能的单一指标。

混淆矩阵

在介绍各个率之前,先来介绍一下混淆矩阵。如果我们用的是个二分类的模型,那么把预测情况与实际情况的所有结果两两混合,结果就会出现以下4种情况,就组成了混淆矩阵

由于1和0是数字,阅读性不好,所以我们分别用P和N表示1和0两种结果。变换之后为PP,PN,NP,NN,阅读性也很差,我并不能轻易地看出来预测的正确性与否。因此,为了能够更清楚地分辨各种预测情况是否正确,我们将其中一个符号修改为T和F,以便于分辨出结果。

P(Positive):代表1

N(Negative):代表0

T(True):代表预测正确

F(False):代表错误

按照上面的字符表示重新分配矩阵,混淆矩阵就变成了下面这样:

于是就有了:

因此对于这种表示方法可以这么简单的理解:先看 ①预测结果(P/N),再根据②实际表现对比预测结果,给出判断结果(T/F)。按这个顺序理解,这四种情况就很好记住了。

TP:预测为1,预测正确,即实际1

FP:预测为1,预测错误,即实际0

FN:预测为0,预测错误,即实际1

TN:预测为0,预测正确,即实际0

准确率

既然是个分类指标,我们可以很自然的想到准确率,准确率的定义是预测正确的结果占总样本的百分比,其公式如下:准确率=(TP+TN)/(TP+TN+FP+FN)

但是由于可能样本不平衡的问题,导致了得到的高准确率结果含有很大的水分。即如果样本不平衡,准确率就会失效。衍生出了其它两种指标:精准率和召回率。

精准率

精准率(Precision)又叫查准率,它是针对预测结果而言的,它的含义是在所有被预测为正的样本中实际为正的样本的概率,意思就是在预测为正样本的结果中,我们有多少把握可以预测正确,其公式如下:精准率=TP/(TP+FP)

召回率

召回率(Recall)又叫查全率,它是针对原样本而言的,它的含义是在实际为正的样本中被预测为正样本的概率,其公式如下:召回率=TP/(TP+FN)

F1分数

F1分数同时考虑了查准率和查全率,让二者同时达到最高,取一个平衡。F1分数的公式为 = 2*查准率*查全率 / (查准率 + 查全率)。

有两个指标的选择是ROC和AUC可以无视样本不平衡的原因。这两个指标分别是:灵敏度和(1-特异度),也叫做真正率(TPR)和假正率(FPR)

真正率(TPR) = 灵敏度(Sensitivity) = TP/(TP+FN)

由于我们比较关心正样本,所以需要查看有多少负样本被错误地预测为正样本,所以使用(1-特异度)

假正率(FPR) = 1 - 特异度(Specificity) = TN/(FP+TN)

用条件概率表示,假设X为预测值,Y为真实值。那么就可以将这些指标按条件概率表示:

精准率 = P(Y=1 | X=1)

召回率 = 灵敏度 = P(X=1 | Y=1)

特异度 = P(X=0 | Y=0)

ROC曲线中的主要两个指标就是真正率假正率,上面也解释了这么选择的好处所在。其中横坐标为假正率(FPR),纵坐标为真正率(TPR),下面就是一个标准的ROC曲线图。

TPR越高,同时FPR越低(即ROC曲线越陡),那么模型的性能就越好。

AUC(曲线下的面积)

为了计算 ROC 曲线上的点,可以使用不同的分类阈值多次评估逻辑回归模型,但这样做效率非常低。幸运的是,有一种基于排序的高效算法可以提供此类信息,这种算法称为曲线下面积(Area Under Curve)

如果连接对角线,它的面积正好是0.5。对角线的实际含义是:随机判断响应与不响应,正负样本覆盖率应该都是50%,表示随机效果。ROC曲线越陡越好,所以理想值就是1,一个正方形,而最差的随机判断都有0.5,所以一般AUC的值是介于0.5到1之间的。

其他

多重响应分析、距离分析、项目分析、对应分析、决策树分析、神经网络、系统方程、蒙特卡洛模拟等。

  • 25
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值