统计中分类算法总结

9880阅读 0评论2014-07-01 joepayne
分类:信息化

数据转换

主要有两种:

 归一化处理

主要通过把数据归一到一特定的区间范围,如[0,1],便于明确样本值在指标整体中的位置.

应用场景: 归一化处理基本上是所有分析计算之前必做的一个预处理.

 标准化处理

主要是通过把数据标准到正态分布区间内,便于各FEATURE之间的计算,即考虑综合指标的之间的作用时.

应用场景: 标准化处理主要用在聚类分析中.

假设检验

主要有四种常见的检验方式:

一)   连续型指标的检验

 T检验

应用场景: 判断二分类变量对一连续型指标的显著影响

前提条件: 没有,就是针对二分类变量的

原理: 判断不同水平间目标连续指标的均值是否相等

例子: 性别对某APP访问量的影响

 单因素方差分析

应用场景: 判断多分类变量对一连续型指标的显著影响

前提条件:

1)       多分类变量

2)       各水平(分组)数据的特征:

a)         服从正态分布

b)         方差相等(方差齐次)

检验流程:

         例子: 各年龄段对某APP访问量的影响

 单因素协方差分析

应用场景: 在某一连续变量影响下,判断多分类变量对目标连续指标的显著影响

前提条件:

1)       另一连续变量对目标连续型指标有影响

2)       多分类变量

3)       各水平(分组)数据的特征:

a)         服从正态分布

b)         方差相等(方差齐次)

4)       连续变量与分类变量无交互作用

如何判断两者之间的交互作用:

1)       分别做它们与目标连续指标的回归分析, 观察斜率是否相同. 如果相同, 则无交互作用; 否则, 有交互作用

2)       直接根据AOV(Y ~ X1*X2)作回归分析, 观察综合因素X1*X2对应的概率P是否小于0.05(默认). T检验对应斜率等于0的概率.如果小于0.05, 则有交互作用; 否则, 无交互作用.

例子: 注册时间的影响下不同年龄段对某APP访问量的显著影响

二)   非连续型指标的检验

 卡方检验

应用场景: 对比分类变量在不同水平下的转换率数据是否有显著差异

前提条件:

1)       目标变量为分类变量(例如: 网站用户数可分为下订单数与非下订单数)

原理: 判断目标分类变量在不同水平下差异. 这里具体的可以参考卡方公式

例子: 网站改版前后对订单的转换有无影响(订单的转换率的显著变化)

数据定性与定量处理

说的定性就是把连续型的数据转换成分类型的数据(即离散化或者叫水平化); 定量处理就是把分类型的数据转换成连续型的数据. 这个问题在之前, 个人一直以为: 定性处理很简单, 不就是简单地分段! 但是定量怎么处理呢? 下面有讲, 这里着重提一下, 主要通过把某个变量取某个水平值的问题转换成某个变量等于某个水平值的概率的问题. 这就实现了量化处理。
定性与定量的处理一般都是针对特定的算法做的,比方说,在要用回归的方式来解决分类问题,而且此时解释变量中有分类型的变量,此时就需要做定量处理;又比方说,在某些不支持输入变量为分类型的变量的算法中,需要先做定性处理后才能使用该算法。

回归建模

需要注意以下几个细节:

l  相关参数的理解

1)        各系数对应的P

意义: 对应的系数是否有意义. 小于0.05(默认), 则有意义; 否则, 无意义

原理: 通过T检验, 判断各系数等0的概率. 即等于0与不等0两水平下,对目标连续指标是否有显著的影响. 小于0.05(默认), 则有显著影响(不可为0); 否则, 无显著影响(可以为0)

2)        调整后的卡方值, Adjusted R-squared

意义: 整体系数对目标变量的关联性

= 0 , 则完全不相关

<0.09 , 则不相关

>0.09 < 0.25, 则低度相关

>0.25 < 0.64, 则中度相关

>0.64, 则高度相关

= 1, 则完全相关

原理: 通过卡方检验, 判断整体模型的有效性

3)         F检验对应的P

意义: 检验整体模型的参数等于0的概率

原理: 通过F检验判断整体模型的有效性

l  模型的修订

1)        UPDATE方法

主要通过增加变量或者减少变量,或者对目标变量做变换(取对数或者指数等). 这是一种人为修订模型的方法.

2)        STEP

主要通过减少变量的方法来使各变量都能通过T检验. 这是一种自动修订模型的方法.

l  分类型变量在回归中的处理

主要通过将分类型变量的水平取值转换成是否等于某水平取值的模式. 可以理解为取某个水平值的概率.

几个常用的回归方法:

l  线性回归

主要是多变量回归

Logic 回归

Logic回归本质上属于分类方法, 因为它的目标变量是分类型变量, 严格上说是二分类. 只是它通过特定的公式把分类问题转换成了回归问题. 将目标变量由分类型变量转换成了连续型变量, 等于某个水平值的概率”. 由公式计算出的值大于0.5 即为正类; 否则为负类. Logic公式可以把一个线性模型的目标值归一到0-1之间.

大概步骤:

1)        目标变量的LOGIC转化. 必要时把解释变量中的分类型也转化成连续型的.

2)        模型的修订(其中的线性部分)

3)        预测和性能的衡量

l  回归树 CART

它不仅可以处理回归问题,也可以处理分类问题. 也就是说目标变量可以是分类型变量,也可以是连续型变量. 理论上它可以处理几乎所有的分类问题.

回归树主要问题在剪枝上. 通过观察每次分裂项, 选择合适的分裂次数即可. CP值的大小基本上代表了结点的混合程度, 理论上随着分裂, CP的值是越来越小的, XERR(预测的误差)是先减小后增大, XSTD代表预测误差的标准差. 一般选择CP的原则是, 选择最小XERR值正负对应的XSTD范围内, 最小的XERR对应的项.

分类建模

几种常见的分类方法:

K邻近KNN

它适合解决分类问题,但也可以解决回归问题。即目标变量可以是分类型的也可以是连续型的。

原理:通过计算与哪K个样本点最近, 就把目标点划分到K个点中目标分类最多的分类. 因为它要跟每个点做计算, 因此计算量相当大.

l  决策树(C4.5 CART)

它适合处理多分类问题, 输入可以是连续型的变量也可以是分类型的变量.属于规则性的分类方法。

1)       C4.5 它是在最原始的决策树算法上做的一个改进方法, 仍然使用熵来评估分裂条件的贡献大小. 它根据取的每个水平值做分支条件, 因此是一种多叉树, 相比CART而言. 同样它的重点在后剪枝上面.

这种方法在WEKA里面有非常成熟的一套实现. R中可以把相应的包给IMPORT进来后, 直接调用.

2)       CART 前面已经提到后, 它在这里扮演的角色就是处理分类问题了. 它使用GINI来评估分裂条件的贡献大小. 属于二叉树, 相比 C4.5. 关于它的剪枝方法不多介绍了.

l  朴素贝叶斯分类

前提条件是各解释变量间相互独立, 因为在很多时候, 解释变量是无法做到完全独立的, 不过, 贝叶斯神经网络可以解决独立性问题, 只是相对要复杂很多.

原理:目标是计算X条件下取Y各水平值时的条件概率,选取其中条件概率最大的Y水平值。由于对于特定的X取值,本质上就是从训练集中取X Y联合概率分布中最大值。

l  支持向量机SVM

适合处理二分类问题

原理:

在样本点的特征空间中寻找一个合适的超平面, 使它的MARGIN边缘最大化. 落在边缘上的样本点即为支持向量, 计算目标分类时只需要根据这些向量计算即可, 因此计算量特别小, 如果向量越多, 就越接近于KNN算法. 因此, 可以说KNN SVM的一种特殊.

优势:

1)在高维空间中特别有效,但维度最好不要超过样本数。

2)计算时只使用支持向量,内存利用率高

劣势:

1)维度数如果过高(远远超过样本量)效果就不好

AdaBoost 和 随机森林

适合处理二分类问题

原理:

它们主要是通过把简单的分类器, 加上权重后组合成一个大的分类器, 然后用它来处理分类问题.

步骤:

1)用户指定一个迭代次数,初始化每个实例的权重。

2)选择简单分类器。每次迭代中,遍历每个属性的每个取值及每个条件(大于或者小于),根据它对样本实例进行划分,满足条件即为1;不满足条件即为-1。最后取误差率最小的组合条件作为简单分类器。

3)根据简单分类器的误差计算出该分类器的权重,然后再更新每个实例的权重。

4)将该简单分类器加入到组合分类器中,统计当前组合分类器的误差个数。如果误差个数达到0或者指定的下限值,就停止迭代。

l  人工神经网络

可以解决多分类问题

原理:主要分为三层,输入层、隐藏层、输出层,各层的数据都是以神经元的形式呈现的。输出层中的神经元对应到输入的维度,即有多个输入维度就有多少个神经元;隐藏层中神经元的个数作为参数的形式由应用传入,它跟分类的个数有关;输出层中神经元的个数对应到分类的个数,即如果是二分类,一个神经元就成(大于0.5为1,小于0.5为0),如果是多分类,几分类就对应几个神经元(每个神经元的输出对应一个分类,大于0.5为真,小于0.5为假,这也是将分类问题转化为线性问题的一个地方)。各层之间的关系通过一个一元一阶线性函数来关联的。在遍历每个实例的过程中,计算输出层中神经元的输出误差,以此,然后倒推计算出隐藏层的输出误差,分别更新隐藏层与输出层之间关联函数的系数和输出层与隐藏层之间关联函数的系数。

注意:

二分类器与多分类器本质上没有明显的界限, 可以重复利用二分类器来解决多分类问题, 所以分类问题不必在分类方法上有所顾虑, 注重的是分类的性能问题.

分类器性能评估

l  最简单的方式是直接观察分类器在测试集中的预测准确率大小

l  由于交叉验证需要做大量的计算,耗费大量的CPU,因此在机器能够承受的情况下,

通过交叉验证的方式来取平均预测准确率的大小,从而判断分类器的性能。

l  对于某些场景,比如在二分类问题中,应用比较关注预测为正例的正确率,此时,会经常用到ROC曲线及AUC面积来考证一个分类器的性能。这种方式主要应用在金融领域,对用户的信用度进行评估时。

补充:

1)ROC曲线是FPR(预测为正例,但为错误判断的概率)与TPR(预测为正例,而且也为正确判断的概率)曲线。FPR = FP/(TN+FP) 表示负例当中被错误地预测为正例的比例;查全率或者叫recall TPR = TP/(TP+FN) 表示正例当中被正确地预测为正例的比例。

2)AUC面积指的是ROC曲线下的面积,即ROC曲线与X轴(FPR)围成的面积。面积越大,分类器的性能越好。

l  对于某些场景,比如类似精准营销的问题,希望通过对全体消费者进行分类,从而得到具有较高响应率的客户群,以便实现投入产出比。这时,可以选择提升曲线或者洛伦兹曲线作为评估分类器的指标。在提升曲线中,在Y轴值尽量大的情况下X轴值不能太小。

 

上一篇:用python抓一把百度音乐的热歌榜 top500
下一篇:【原创】hadoop集群搭建