1.5 数据分析方法的选择
数据分析方法要从业务的角度分析其目标,并对现有的数据进行探查,发现其中的规律,大胆假设并进行验证,依据各模型算法的特点选择合适的模型进行测试验证,分析并对比各模型的结果,最终选择合适的模型进行应用。
理解目标要求是分析方法选择的关键,首先对要解决的问题进行分类,如果数据集中有标签,则可进行监督式学习,反之可应用无监督学习方法。在监督式学习中对定性问题可用分类算法,对定量分析可用回归方法,如逻辑回归或回归树等;在无监督式学习中,如果有样本细分,则可应用聚类算法,如需找出各数据项之间的内在联系,可应用关联分析。
熟悉各类分析方法的特性是分析方法选择的基础,不仅需要了解如何使用各类分析算法,还要了解其实现的原理,这样,在参数优化和模型改进时可减少无效的调整。在分析方法的选择过程中,由于分析目标的业务要求及数据支持程度差别较大,很难一开始就确认哪种分析方法效果最佳,需要对多种算法进行尝试和调优,尽可能提高准确性和区分度。
在选择模型之前,要对数据进行探索性分析,了解数据类型和数据特点,发现各自变量之间的关系,以及自变量与因变量的关系,特别注意在维度较多时容易出现变量的多重共现性问题,可应用箱图、直方图、散点图查找其中的规律性信息。
模型选择过程中先提出多个可能的模型,然后对其进行详细分析,并选择可用于分析的模型,在自变量选择时,大多数情况下需要结合业务手动选择自变量。选择模型后,比较不同模型的拟合程度,可统计显著性参数、R方、调整R方、最小信息标准、BIC和误差准则、Mallow’s Cp准则等。在单个模型中可将数据分为训练集和测试集,用来做交叉验证和分析结果的稳定性。反复调整参数,使模型结果趋于稳定。
1.5.1 分类算法
分类算法是应用规则对记录进行目标映射,将其划分到不同的分类中,构建具有泛化能力的算法模型,即构建映射规则来预测未知样本的类别。一般情况下,由于映射规则是基于经验的,所以其准确率一般不会达到100%,只能获得一定概率的准确率,准确率与其结构、数据特征、样本的数量相关。
分类模型包括预测和描述两种。经过训练集学习的预测模型在遇到未知记录时,应用规则对其进行类别划分,而描述型的分类主要是对现有数据集中的特征进行解释并区分,其应用场景如对动植物的各项特征进行描述,并进行标记分类,由这些特征来决定其属于哪一类目。
主要的分类算法包括决策树、支持向量机(Support Vector Machine,SVM)、最近邻(K-Nearest Neighbors,KNN)、贝叶斯网络(Bayes Network)、神经网络等。
1.决策树
正如其名,决策树是一种用于决策的树,目标类别作为叶子节点,特征属性的验证作为非叶子节点,而每个分支是特征属性的输出结果。决策过程是从根节点出发,测试不同的特征属性,按照结果的不同选择分支,最终转到某一叶子节点,获得分类结果。主要的决策树算法有ID3、C4.5、C5.0、CART(可简写为CART)、CHAID、SLIQ、SPRINT。图1.11是C5.0决策树算法应用实例,分析目标是信用卡申请是否成功的主要影响因素。
决策树的构建过程不需要业务领域的知识支撑,其构建过程是按照属性特征的优先级或重要性来逐渐确定树的层次结构,分支分裂的关键是要使其叶子节点尽可能“纯净”,尽可能属于同一类别,一般采用局部最优的贪心策略来构建决策树,即Hunt算法。决策树算法特点比较见表1.1。
图1.11 C5.0决策树算法应用实例
表1.1 决策树算法特点比较
2.支持向量机
支持向量机是由Vapnik等人设计的一种线性分类器准则,其主要思想是将低维特征空间中的线性不可分进行非线性映射转化为高维空间,使其线性可分。另外,应用结构风险最小理论在特征空间最优分割超平面,可以找到尽可能宽的分类边界,特别适合两个分类不容易分开的情况。例如,在二维平面图中某些点是杂乱排列的,无法用一条直线分为两类,但是在三维空间中,通过一个平面可以将其完美划分。
为了避免在低维空间向高维空间转化过程中增加计算复杂性和“维数灾难”,SVM通过应用核函数的展开原理,不需要关心非线性映射的显式表达式,直接在高维空间建立线性分类器,极大优化了计算复杂度。SVM常见的核心函数有4种,分别是线性核函数、多项式核函数、径向基函数、二层神经网络核函数。
SVM的目标变量以二分类最佳,虽然可以用于多分类,但效果不好。相较于其他分类算法,在小样本数据集中其效果更好。由其原理可知,SVM擅长处理线性不可分的数据,并且在处理高维数据集时具有优势。
3.最近邻
通过在样本实例之间应用向量空间模型,将相似度高的样本分为一类,应用训练得到的模型对新样本计算与之距离最近(最相似)的k个样本的类别,那么新样本就属于k个样本中的类别最多的那一类。可以看出,影响分类结果的3个因素分别为距离计算方法、最近的样本数量k值、距离范围。
KNN支持多种相似度距离计算方法:欧式距离(Euclidean Distance)、曼哈顿距离(Manhattan Distance)、切比雪夫距离、闵可夫斯基距离(Minkowski Distance)、标准化欧氏距离(Standardized Euclidean Distance)、马氏距离(Mahalanobis Distance)、巴氏距离(Bhattacharyya Distance)、汉明距离(Hamming Distance)、夹角余弦(Cosine)、杰卡德相似系数(Jaccard Similarity Coefficient)、皮尔逊相关系数(Pearson Correlation Coefficient)。
在k值选择中,如果设置较小的k值,说明在较小的范围中进行训练和统计,误差较大且容易产生过拟合的情况;k值较大时意味着在较大的范围中学习,可以减少学习的误差,但是在其统计范围变大了,说明模型变得简单了,容易在预测的时候发生分类错误。
KNN算法的主要缺点是:在各分类样本数量不平衡时误差较大;由于其每次比较要遍历整个训练样本集来计算相似度,所以分类的效率较低,时间和空间复杂度较高;k值的选择不合理,可能会导致结果的误差较大;在原始KNN模型中没有权重的概念,所有特征采用相同的权重参数,这样计算出来的相似度易产生误差。
4.贝叶斯网络
贝叶斯(Bayesian)网络又称为置信网络(Belief Network),是基于贝叶斯方法绘制的、具有概率分布的有向弧段图形化网络,其理论基础是贝叶斯公式,网络中的每个点表示变量,有向弧段表示两者间的概率关系。
相较于神经网络,网络中的节点都具有实际的含义,节点之间的关系比较明确,可以从贝叶斯网络中直观看到各变量之间的条件独立和依赖关系,可以进行结果和原因的双向推理。图1.12是贝叶斯网络的一个示例网络结构,分析信用卡成功申请的影响因素。其中,“是否申请成功→年收入”表示:P(年收入|是否申请成功=Yes),即在申请成功的情况下,客户年收入的概率。
图1.12 贝叶斯网络分析成功申请信用卡的影响因素
贝叶斯网络分类算法分为简单(朴素)贝叶斯算法和精确贝叶斯算法。在节点数较少的网络结构中,可选精确贝叶斯算法,以提高精确概率。在节点数较多的网络结构中,为减少推理过程和降低复杂性,一般选择简单贝叶斯算法。
5.神经网络
传统的神经网络为BP(Back Propagation)神经网络,目前的递归神经网络(RNN)、卷积神经网络(CNN)等均为神经网络在深度学习方面的变种,其基础还是由多层感知器(MLP)的神经元构成,这里仅介绍BP神经网络的特点,基本的网络中包括输入层、隐藏层、输出层,每一个节点代表一个神经元,节点之间的连线代表了权重值,输入变量经过神经元时会运行激活函数,对输入值按照权重和偏置进行计算,将输出结果传递到下一层中的神经元,而权重值和偏置是在神经网络训练过程中不断修正得到的。
神经网络的训练过程主要包括前向传输和逆向反馈,前者是将输入变量逐层向下传递,最后得到一个输出结果,并对比实际的结果,如果发现预测结果与实际结果不符,则逐层逆向反馈,对神经元中的权重值和偏置进行修正,然后重新进行前向传递结果,以此反复迭代,直到最终预测结果与实际结果一致。
BP神经网络的结果准确性与训练集的样本数量和分类质量有关,如果样本数量过少,可能会出现过拟合的问题,无法泛化新样本;对训练集中的异常点比较敏感,需要分析人员对数据做好预处理,如数据标准化、去除重复数据、移除异常数据,从而提高BP神经网络的性能。
由于模型结果神经网络是基于历史的数据构建的分析模型,如果是新数据产生的新规则,则可能出现不稳定的情况,需要进行动态优化。例如,随着时间变化,应用新的数据对模型进行重新训练,来调整网络的结构和参数值。
1.5.2 聚类算法
聚类是基于无监督学习的分析模型,不需要对原始数据进行标记,按照数据的内在结构特征进行聚集形成簇群,从而实现数据的分离,其中聚集的方法就是记录之间的区分规则。聚类与分类的主要区别是其并不关心数据是什么类别,而是把相似结构的数据聚集起来形成某一类簇。
在聚类的过程中,首先选择有效特征存于向量中,必要时将特征进行提取和转换,获得更加突出的特征,然后按照欧式距离或其他距离函数进行相似度计算,并划分聚类,通过对聚类结果进行评估,逐渐迭代生成新的聚类。
聚类应用领域广泛,可用于企业发现不同的客户群体特征、消费者行为分析、市场细分、交易数据分析等,也可用于生物学的动植物种群分类、医疗领域的疾病诊断、环境质量检测等,还可用于互联网和电商领域的客户分析、行为特征分类等。在数据分析过程中可以先用聚类对数据进行探索,发现其中蕴含的类别特征,然后再用其他方法对样本进一步分析。
按照聚类方法分类,可分为基于层次的聚类(Hierarchical Method)、基于划分的聚类(PArtitioning Method,PAM)、基于密度的聚类、基于机器学习的聚类、基于约束的聚类、基于网络的聚类等。
基于层次的聚类是将数据集分为不同的层次,并将其按照分解或合并的操作方式进行聚类,主要包括BIRCH(Balanced Iterative Reducing and Clustering Using Hierarchies)、CURE(Clustering Using Representatives)等。
基于划分的聚类是将数据集划分为k个簇,并对其中的样本计算距离,以获得簇中心点,然后以簇的中心点重新迭代计算新的中心点,直到k个簇的中心点收敛为止。基于划分的聚类包括K均值(K-Means)等。
基于密度的聚类是根据样本的密度不断增长聚类,最终形成一组“密度连接”的点集,其核心思想是,只要聚类簇之间的密度低于阈值,就将其合并成一个簇,它可以过滤噪声,聚类结果可以是任何形状,不必为球形,主要包括DBSCAN(Density-Based Spatial Clustering of Application with Noise)、OPTICS(Ordering Points To Identify the Clustering Structure)等。
1.BIRCH算法
BIRCH算法是指利用层次方法来平衡迭代规则和聚类,它只需要扫描数据集一次,便可实现聚类,它利用了类似B+树的结构对样本集进行划分,叶子节点之间用双向链表进行链接,逐渐对树的结构进行优化获得聚类。
其主要优点是空间复杂度低,内存占用少,效率较高,能够对噪声点进行滤除,缺点是其树中节点的聚类特征树有个数限制,可能会产生与实际类别个数不一致的情况;对样本有一定的限制,要求数据集的样本是超球体,否则聚类的效果不佳。
2.CURE算法
传统的基于层次聚类的方法得到的是球形的聚类,对异常数据较敏感,而CURE算法是使用多个代表点来替换层次聚类中的单个点,算法更加健壮,并且在处理大数据时采用分区和随机取样,使其处理大数据量的样本集时效率更高,且不会降低聚类质量。
3.K均值算法
传统的K-Means算法的聚类过程是在样本集中随机选择k个聚类质心点,对每个样本计算其应属于的类,在得到类簇之后重新计算类簇的质心,循环迭代,直到质心不变或收敛。K-Means存在较多变体和改进算法,如初始化优化K-Means++算法、距离优化Elkan K-Means算法、K-Prototype算法等。
K-Means算法的主要优点是:可以简单快速处理大数据集,并且是可伸缩的,当数据集中结果聚类之间是密集且区分明显时,聚类效果最好。缺点是:必须先给定k值,即聚类的数目,大部分时间分析人员并不知道应该设置多少个聚类。另外,K-Means算法对k值较敏感,如果k值不合理,可能会导致结果局部最优(不能保证全局最优)。
4.DBSCAN算法
DBSCAN算法的目标是:过滤低密度区域,发现稠密度样本点。与传统的基于层次的聚类和划分聚类的凸形聚类簇不同,其输出的聚类结果可以是任意形状的聚类。主要优点是:与传统的K-Means相比,是不需要输入要划分的聚类个数;聚类结果的形状没有偏倚;支持输入过滤噪声的参数。
DBSCAN的主要缺点是:当数据量增大时,会产生较大的空间复杂度;当空间聚类的密度不均匀、聚类间距差很大时,聚类质量较差。
5.OPTICS算法
在DBSCAN算法中,初始参数E(邻域半径)和minPts(E邻域最小点数)需要用户手动设置,这两个参数较关键,不同的取值将产生不同的结果。而OPTICS克服了上述问题,为聚类分析生成一个增广的簇排序,代表了各样本点基于密度的聚类结构。
1.5.3 关联分析
关联分析(Associative Analysis)通过对数据集中某些属性同时出现的规律和模式来发现其中的属性之间的关联、相关、因果等关系,其典型的应用是购物篮分析,通过分析购物篮中不同商品之间的关联,分析消费者的购买行为习惯,从而制定相应的营销策略,为商品促销、产品定价、位置摆放等提供支持,并且可用于不同消费者群体的划分。关联分析主要包括Apriori算法和FP-growth算法。
1.Apriori算法
Apriori算法的主要实现过程是:首先生成所有频繁项集,然后由频繁项集构造出满足最小信任度的规则。Apriori算法依赖的重要性质是频繁项集的非空子集也是频繁项集。
由于Apriori算法要多次扫描样本集,需要由候选频繁项集生成频繁项集,在处理大数据量数据时效率较低,其只能处理分类变量,无法处理数值型变量。
2.FP-growth算法
为了改进Apriori算法,Jiawei Han等人提出基于FP树生成频繁项集的FP-growth算法,该算法只进行两次数据集扫描,且不使用候选项集,直接按照支持度构造出一个频繁模式树,用这棵树生成关联规则,在处理大数据集时效率比用Apriori算法大约快一个数量级,对于海量数据,可以通过数据划分、样本采样等方法进行再次改进和优化。
1.5.4 回归分析
回归分析是一种研究自变量和因变量之间关系的预测模型,用于分析当自变量发生变化时,因变量的变化值。要求自变量不能为随机变量,需要具有一定的相关性。可以将回归分析用于定性预测分析,也可以用于定量分析各变量之间的相关关系。
1.线性回归
应用线性回归进行分析时,要求自变量是连续型或离散型的,因变量则为连续型的,线性回归用最适直线(回归线)去建立因变量Y和一个或多个自变量X之间的关系。
其主要的特点是:
(1)自变量与因变量之间必须有线性关系。
(2)多重共线性、自相关和异方差对多元线性回归的影响很大。
(3)线性回归对异常值非常敏感,其能严重影响回归线,最终影响预测值。
(4)在多元的自变量中,可以通过前进法、后退法和逐步法去选择最显著的自变量。
图1.13是上海私家车车牌拍卖中,竞拍警示价和最后平均成交价之间的关系。由于参与沪牌额度拍卖的人数较多,警示价人为干预了最终的竞拍价格,所以呈现出极强的线性关系。
图1.13 沪牌拍卖警示价与平均成交价呈线性关系
虽然其线性回归的结果准确率达到98%以上,但是实际应用中依然无法准确预测最终的平均成交价格,原因是成交价格的预测误差范围要求在300元以内,说明在实际分析中要与目标问题的环境要求相符合,而不是一味追求高准确率。
2.逻辑回归
逻辑回归一般应用在分类问题中,如果因变量类型为序数型的,则称为序数型逻辑回归,如果因变量为多个,则称为多项逻辑回归。逻辑回归的主要特点是:
相较于线性回归,逻辑回归应用非线性对数转换,使自变量与因变量之间不一定具有线性关系才可以分析。
为防止模型过拟合,要求自变量是显著的,且自变量之间不能存在共线性。可以使用逐步回归法筛选出显著性变量,然后再应用到逻辑回归模型中。
逻辑回归需要大样本量,在低样本量的情况下效果不佳,因为最大似然估计在低样本数量时其统计结果误差较大。
3.多项式回归
在回归分析中,有时会遇到线性回归的直线拟合效果不佳,如果发现散点图中数据点呈曲线状态显示时,可以考虑使用多项式回归来分析。使用多项式回归可以降低模型的误差,从理论上多项式可以完全拟合曲线,但是如果处理不当,易造成模型结果过拟合,在分析完成之后需要对结果进行分析,并将结果可视化,以查看其拟合程度。
4.逐步回归
处理多个自变量时,需要用逐步回归的方法自动选择显著性变量,不需要人工干预,其思想是:将自变量逐个引入模型中,并进行F检验、t检验等来筛选变量,当新引入的变量对模型结果没有改进时,将其剔除,直到模型结果稳定。
逐步回归的目的是保证所有自变量集为最优的。用最少的变量去最大化模型的预测能力,它也是一种降维技术。主要的方法有前进法和后退法,前者以最显著的变量开始,逐渐增加次显著变量。后者是逐渐剔除不显著的变量。
5.岭回归
岭回归又称为脊回归,在共线性数据分析中应用较多,是一种有偏估计的回归方法,在最小二乘估计法的基础上做了改进,通过舍弃最小二乘法的无偏性,以损失部分信息为代价使得回归系数更稳定和可靠。其R方值会稍低于普通回归分析方法,但其回归系数更加显著,主要用于变量之间存在共线性和数据点较少时的情况。
6.LASSO回归
LASSO回归的特点与岭回归类似,在拟合模型的同时进行变量筛选和复杂度调整。变量筛选是逐渐把变量放入模型,从而得到更好的自变量组合。复杂度调整是通过参数调整来控制模型的复杂度,如减少自变量数量等,从而避免过度拟合。
LASSO回归也是擅长处理多重共线性或存在一定噪声和冗余的数据。可以支持连续型因变量,二元、多元离散变量的分析。
7.ElasticNet回归
ElasticNet回归结合了LASSO回归和岭回归的优点,同时训练L1和L2作为惩罚项在目标函数中对系统约束进行约束,所以其模型的表示系数既有稀疏性,又有正则化约束,特别适用于许多自变量是相关的情况,这时,LASSO回归会随机选择其中一个变量,而ElasticNet回归则会选择两个变量。相较于LASSO回归和岭回归,ElasticNet回归更稳定,且在选择自变量的数量上没有限制。
1.5.5 深度学习
深度学习方法是通过构建多个隐藏层和大量数据来学习特征,从而提升分类或预测的准确性,与传统的神经网络相比,不仅在层数上更多,而且采用了逐层训练的机制来训练整个网络,以防出现梯度扩散。深度学习包括了卷积神经网络(CNN)、深度神经网络(DNN)、循环神经网络(RNN)、对抗神经网络(GAN)以及各种变种网络结构。其本质是对训练集数据进行模式识别及特征提取和选择,然后应用于样本的分类。
目前,深度学习的方法在图像和音视频的识别、分类和模式检测等领域已经非常成熟,除此之外,还可以用于衍生成新的训练数据,以构建对抗网络(GAN),从而利用两个模型之间互相对抗提高模型的性能。
在数据量较多时可考虑采用这一算法,应用深度学习的方法进行分析时,需注意训练集(用于训练模型)、开发集(用于在开发过程中调参和验证)、测试集的样本比例,一般以6∶2∶2的比例进行分配。另外,采用深度学习进行分析时对数据量有一定的要求,如果数据量只有几千或几百条,极易出现过拟合的情况,其效果不如使用SVM等分类算法。
常见的权重更新方式为SGD和Momentum。参数初始值设置不当容易引起梯度消失或梯度爆炸问题;随着训练时间的推移,可以逐渐减少学习率。
1.5.6 统计方法
统计方法是在基于传统的统计学、概率学知识对样本集数据进行统计分类,是数据分析的基本方法,如对基于性别的数据进行分类、对年龄分段统计等。统计方法虽然看起来比较简单,但是在数据探索阶段尤其重要,可以发现一些基本的数据特征。分析技术并没有高深简易之分,与业务相结合、实用方便才是关键,所以不要小看传统的统计方法。经过认真细致的分析探索,一样可以发现数据中蕴藏的有价值的规律。
统计方法源于用小样本集来获得整体值集的各种特征,主要的统计方法或指标包括频率度量(如众数指标)、位置度量(如均值或中位数)、散度度量(如极差、方差、标准差等)、数据分布情况度量(如频率表和直方图)、多元汇总统计(如相关矩阵和协方差矩阵)。
根据汇总统计中置信度的计算方法,置信度达到95%以上,误差为—2.5%~2.5%,即置信区间宽度为5%,在汇总统计中需要的样本数至少为1000个,样本数量越多,其误差越小,所以在此类分析中要尽可能多地收集数据。
在描述统计分析时,往往会对不同维度进行样本分拆,划分越细,样本的纯度越高,信息就更有效,所以其结论的准确率就会越高,但是需要注意,分拆之后子维度的样本数量不能过少,否则结论过低会失去统计意义。