《Python数据分析与挖掘实战》数据挖掘算法基础-(1)分类与回归_第1页
《Python数据分析与挖掘实战》数据挖掘算法基础-(1)分类与回归_第2页
《Python数据分析与挖掘实战》数据挖掘算法基础-(1)分类与回归_第3页
《Python数据分析与挖掘实战》数据挖掘算法基础-(1)分类与回归_第4页
《Python数据分析与挖掘实战》数据挖掘算法基础-(1)分类与回归_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第5章数据挖掘算法基础数据挖掘算法基础1聚类目录分类与回归2关联规则3智能推荐4时间序列5分类算法构造一个分类模型,模型的输入为样本的属性值,输出为对应的类别,将每个样本映射到预先定义好的类别。回归算法则是建立两种或两种以上变量间相互依赖的函数模型,然后使用函数模型预测目标的值。常用的分类算法与回归算法常用的分类与回归算法:常用的分类算法与回归算法算法名称算法描述回归分析回归分析是确定预测属性(数值型)与其他变量间相互依赖的定量关系最常用的统计学方法。包括线性回归、非线性回归、Logistic回归、岭回归、主成分回归、偏最小二乘回归等模型决策树决策树采用自顶向下的递归方式,在内部结点进行属性值的比较,并根据不同的属性值从该结点向下分支,最终得到的叶结点是学习划分的类最近邻分类最近邻分类是一种典型的“懒惰学习”算法,基于指定的距离度量,找出测试样本的最近邻,并基于投票法对测试样本进行分类支持向量机支持向量机的基本思想是在样本空间或特征空间中,构造出最优超平面,使得超平面与不同类样本集之间的距离最大,从而达到最大化泛化能力的目的。人工神经网络人工神经网络是一种模仿大脑神经网络结构和功能而建立的信息处理系统,表示神经网络的输入与输出变量之间关系的模型集成学习集成算法使用多种算法的组合进行预测,比单一分类器具有更高的准确率和鲁棒性,通常分为Bagging(聚合)、Boosting(提升)和Stacking(堆叠)三种模式对于分类模型的评价,常用的模型评价指标包括了准确率、精确率、反馈率、混淆矩阵和ROC曲线等。分类与回归的模型评价分类模型的评价指标准确率准确率(Accuracy)是指预测正确的结果所占总样本的百分比:错误率

错误率(Fallibility)是指预测错误的结果所占总样本的百分比:分类与回归的模型评价精确率精确率(Precision)是指所有被预测为正的样本中实际为正的样本的概率:反馈率反馈率(Recall)是指实际为正样本预测为正样本占实际为正样本的总数概率:分类与回归的模型评价分类与回归的模型评价ROC曲线接收者操作特征曲线(ReceiverOperatingCharacteristiccurve,ROC曲线)是一种非常有效的模型评价方法,可为选定临界值给出定量提示。对于回归模型,常用的模型评价指标包括了绝对误差与相对误差、误差分析中的综合指标(平均绝对误差、均方误差、均方根误差)、平均绝对百分误差和Kappa统计量等。绝对误差(AbsoluteError):相对误差(RelativeError):平均绝对误差(MeanAbsoluteError,MAE):分类与回归的模型评价回归模型的评价指标均方误差(MeanSquaredError,MSE):均方根误差:平均绝对百分误差:分类与回归的模型评价Kappa统计Kappa统计是比较两个或多个观测者对同一事物,或观测者对同一事物的两次或多次观测结果是否一致,将由随机造成的一致性和实际观测的一致性之间的差别大小作为评价基础的统计指标。Kappa取值在区间[-1,1]内,其值的大小均有不同意义,具体如下:当Kappa=1时,说明两次判断的结果完全一致。当Kappa=-1时,说明两次判断的结果完全不一致。当Kappa=0时,说明两次判断的结果是随机造成。当Kappa<0时,说明一致程度比随机造成的还差,两次检查结果很不一致,在实际应用中无意义。当Kappa>0时,说明有意义,Kappa愈大,说明一致性愈好。当

时,说明已经取得相当满意的一致程度。当Kappa<0.4时,说明一致程度不够。分类与回归的模型评价对于由d个属性组成的样本集,其中是

在第

个属性上的取值,线性模型即通过学习得到一个属性的线性组合来预测样本标签的函数:

其中,表示回归系数的集合,其中回归系数表示属性在预测目标变量时的重要性,b为常数。线性模型线性回归模型使用scikit-learn库中linear_model模块的LinearRegression类可以建立线性回归模型,其基本使用格式和常用参数描述如下:classsklearn.linear_model.LinearRegression(fit_intercept=True,normalize=False,copy_X=True,n_jobs=1)线性模型参数名称说明fit_intercept接收bool。表示是否有截据,若没有则直线过原点。默认为Truenormalize接收bool,表示是否将数据归一化,默认为Falsecopy_X接收bool,表示是否复制数据表进行运算,默认为Truen_jobs接收int,表示计算时使用的核数,默认为1

逻辑回归是一种广义的线性回归模型,但实际是逻辑回归是一个分类算法。具体的分类方法:设定一个分类阈值,将预测结果大于分类阈值的样本归为正类,反之归为反类。其中,的取值范围是,与线性模型中的一致。线性模型逻辑回归模型逻辑回归模型的建模步骤:线性模型使用scikit-learn库中linear_model模块的LogisticRegression类可以建立逻辑回归模型,其语法格式和常用参数描述如下:classsklearn.linear_model.LogisticRegression(penalty='l2',class_weight=None,random_state=None,solver='liblinear',max_iter=100)线性模型参数名称说明penalty接收str。表示正则化选择参数,可选l1或l2。默认为l2solver接收str。表示优化算法选择参数,可选参数为newton-cg,lbfg,liblinear,sag,当penalty='l2'时,4种都可选;当penalty='l1'时,只能选liblinear。默认为liblinearclass_weight接收balanced以及字典,表示类型权重参数,如对于因变量取值为0或1的二元模型,可以定义class_weight={0:0.9,1:0.1},这样类型0的权重为90%,而类型1的权重为10%。默认为None决策树是一树状结构,它的每一个叶节点对应着一个分类,非叶节点对应着在某个属性上的划分,根据样本在该属性上的不同取值将其划分成若干个子集。对于非纯的叶节点,多数类的标号给出到达这个节点的样本所属的类。决策树根部节点(rootnode)中间节点(non-leafnode)分支(branches)叶节点(leafnode)决策树问题:对于给定样本集,如何判断应该先选择在哪个属性上进行拆分?理想情况:在拆分过程中,当叶节点只拥有单一类别时,将不必继续拆分。目标是寻找较小的树,希望递归过程尽早停止较小的树意味着什么?当前最好的拆分属性产生的拆分中目标类的分布应该尽可能地单一(单纯),多数类占优。决策树算法通常按照纯度的增加来选择拆分属性。用于评价拆分分类目标变量的纯度度量包括:熵(entropy,信息量)信息增益(Gain)信息增益率基尼(Gini,总体发散性)改变拆分准则(splittingcriteria)导致树的外观互不相同。决策树纯度的度量常用的决策树算法:决策树决策树算法算法描述ID3算法其核心是在决策树的各级节点上,使用信息增益方法作为属性的选择标准,来帮助确定生成每个节点时所应采用的合适属性C4.5算法C4.5决策树生成算法相对于ID3算法的重要改进是使用信息增益率来选择节点属性。C4.5算法可以克服ID3算法存在的不足:ID3算法只适用于离散的描述属性,而C4.5算法既能够处理离散的描述属性,也可以处理连续的描述属性CART算法CART决策树是一种十分有效的非参数分类和回归方法,通过构建树、修剪树、评估树来构建一个二叉树。当终结点是连续变量时,该树为回归树;当终结点是分类变量,该树为分类树SLIQ算法SLIQ算法对C4.5决策树分类算法的实现方法进行了改进,使得其能处理比C4.5大得多的训练集,在一定范围内具有良好的可伸缩性决策树天气情况对是否打高尔夫球的影响日期天气温度(华氏度)湿度起风打球?1晴8585FNo2晴8090TNo3阴8378FYes4雨7096FYes5雨6880FYes6雨6570TNo7阴6465TYes8晴7295FNo9晴6970FYes10雨7580FYes11晴7570TYes12阴7290TYes13阴8175FYes14雨7180TNo15阴8590F?16雨8079F?17晴7870T?ID3算法简介及其原理决策树天气Yes湿度风YesNoNoYes晴阴雨>75<=75是否日期天气温度(华氏度)湿度起风打球?1Sunny8585FNo2Sunny8090TNo3Overcast8378FYes4Rainy7096FYes5Rainy6880FYes6Rainy6570TNo7Overcast6465TYes8Sunny7295FNo9Sunny6970FYes10Rainy7580FYes11Sunny7570TYes12Overcast7290TYes13Overcast8175FYes14Rainy7180TNo如果数据集D中共有N类样本,出现的概率分别为,则D的信息熵为:打球问题的信息熵为:决策树日期天气温度(华氏度)湿度起风打球?1晴8585FNo2晴8090TNo3阴8378FYes4雨7096FYes5雨6880FYes6雨6570TNo7阴6465TYes8晴7295FNo9晴6970FYes10雨7580FYes11晴7570TYes12阴7290TYes13阴8175FYes14雨7180TNo15阴8590F?16雨8079F?17晴7870T?天气属性的信息增益晴:打球记录2条,不打球记录为3条阴:打球记录4条,不打球记录0条雨:打球记录3条,不打球记录2条某属性a的信息增益为:决策树日期天气温度(华氏度)湿度起风打球?1晴8585FNo2晴8090TNo3阴8378FYes4雨7096FYes5雨6880FYes6雨6570TNo7阴6465TYes8晴7295FNo9晴6970FYes10雨7580FYes11晴7570TYes12阴7290TYes13阴8175FYes14雨7180TNo15阴8590F?16雨8079F?17晴7870T?决策树ID3算法具体流程对当前样本集合,计算所有属性的信息增益选择信息增益最大的属性作为测试属性,将测试属性中取值相同的样本划为同一个子样本集若子样本集的类别属性只含有单个类别,则分支为叶子节点,判断其属性值并标上相应的符号,然后返回调用处;否则对子样本集递归调用本算法使用scikit-learn库中tree模块的DecisionTreeClassifier类可以建立决策树模型,其语法格式和常用参数描述如下:classsklearn.tree.DecisionTreeClassifier(*,criterion='gini',splitter='best',max_depth=None,min_samples_split=2,min_samples_leaf=1,random_state=None,max_leaf_nodes=None,min_impurity_split=None,class_weight=None)决策树参数名称参数说明criterion接收gini或entropy。表示衡量分割质量的功能。默认为ginisplitter接收best或random。表示用于在每个节点上选择拆分的策略。默认为bestmax_depth接收int。表示树的最大深度。默认为Nonemin_samples_split接收int或float。表示拆分内部节点所需的最少样本数。默认为2

Graphviz是一款由AT&TResearch和LucentBell实验室开源的可视化图形工具,可以很方便的用来绘制结构化的图形网络,支持多种格式输出。用graphviz可视化决策树的步骤如下:下载并安装graphviz:/设置字体:edge[fontname="SimHei"];node[fontname="SimHei"];生成pdf:dot-Tpdf路径\tree.dot-o路径\tree.pdf决策树K近邻(K-NearestNeighbor,KNN)算法是一种常用的监督学习方法。其原理非常简单:对于给定测试样本,基于指定的距离度量找出训练集中与其最近的k个样本,然后基于这k个“邻居”的信息来进行预测。距离度量一般采用欧式距离,对于维欧式空间的两点、,两点间的欧式距离计算为:最近邻分类确定预测样本类别:投票法平均法最近邻分类使用scikit-learn库中neighbors模块的KNeighborsClassifier类可以实现K近邻算法对数据进行分类,KNeighborsClassifier类的基本使用格式和常用参数说明如下:classsklearn.neighbors.KNeighborsClassifier(n_neighbors=5,*,weights='uniform',algorithm='auto',p=2,metric='minkowski',metric_params=None,n_jobs=None,**kwargs)最近邻分类参数名称说明n_neighbors接收int。表示“邻居”数。默认为5weights接收str。表示分类判断时最近邻的权重,可选参数为uniform和distance,uniform表示权重相等,distance表示按距离的倒数赋予权重。默认为uniformalgorithm接收str。表示分类时采取的算法,可选参数为auto、ball_tree、kd_tree和brute,一般选择auto自动选择最优的算法。默认为autop接收int。表示Minkowski指标的功率参数,p=1表示曼哈顿距离,p=2表示欧式距离。默认为2metric接收str。表示距离度量。默认为minkowskin_jobs接收int。表示计算时使用的核数。默认为None支持向量机(SupportVectorMachines,SVM)的思想是在样本空间中找到一个划分超平面,将不同类别的样本分开。支持向量机支持向量机简介在样本空间中,划分超平面可通过线性方程来描述:其中,为法向量,决定了超平面的方向;b为位移项,决定了超平面与原点之间的距离。支持向量机线性支持向量机的基本步骤:将原问题转化为凸优化问题:

原问题:凸优化问题:支持向量机线性支持向量机通过构建拉格朗日函数,将原问题对偶化。构造拉格朗日函数:对偶问题:支持向量机对对偶化后的问题进行求解。KKT条件:于是,对于训练样本 ,有或;若 ,则该样本不会在 中出现,也就是不会对目标函数有任何影响;若,则必有 ,所对应的样本点位于最大间隔边界上,是一个支持向量。支持向量机SMO算法的思路是先固定

之外的所有参数,然后求

的极值。由于存在约束条件

,只更新一个

会不满足约束条件。于是,SMO每次选择两个变量

,固定其他参数。这样,在参数初始化后,SMO算法不断地执行以下两个步骤:(1)

选择一对需要更新的变量

;(2)

固定

以外的参数,求解下式获得更新后的

。循环执行这过程,直到求出所有的

其中

是一个常数。支持向量机SMO算法求解:(1)通过 可解出。(2)对任意的支持向量,都有 。假设有S个支持向量,可求出对应S个,取平均值作为最终的结果:支持向量机求解偏移项:而在现实场景应用中,样本空间很可能不存在一个能正确划分样本的超平面。对于这类问题的常用解决方法:将样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内线性可分。然而由于映射后的特征空间维数可能很高,直接计算通常是很困难的,为了避开这个障碍,会利用已知的核函数直接进行计算:支持向量机非线性支持向量机核函数名称表达式说明线性核k为核函数,和为样本多项式核为多项式次数高斯核为高斯核的带宽(width)拉普拉斯核Sigmoid核为双曲正切函数,,

使用scikit-learn库中svm模块的SVC类可以实现支持向量机算法对数据进行分类,SVC类的基本使用格式和常用参数说明如下:classsklearn.svm.SVC(*,C=1.0,kernel=‘rbf’,degree=3,gamma=‘scale’,coef0=0.0,tol=0.001,max_iter=-1,random_state=None)支持向量机参数名称说明C接收float。表示对误分类的惩罚参数。默认为1.0kernel接收str。表示核函数,可选参数为linear、poly、rbf、sigmoid、precomputed。默认为rbfdegree接收int。表示多项式核函数poly的维度。默认为3gamma接收str。表示rbf、poly、sigmoid核函数的参数,若是auto,则自动设置参数。默认为autocoef0接收int或float。表示核函数的常数项,对poly和sigmoid有效,默认为0.0tol接收float。表示停止训练的误差大小。默认为0.001max_iter接受int。表示最大迭代次数,-1表示无限制。默认为-1神经网络(NeuralNetworks)能在外界信息的基础上改变内部结构,是一个具备学习功能的自适应系统。神经网络神经网络介绍常用于实现分类和回归的神经网络算法:神经网络算法名称算法描述BP神经网络是一种按误差逆传播算法训练的多层前馈网络,学习算法是δ学习规则,是目前应用最广泛的神经网络模型之一LM神经网络是基于梯度下降法和牛顿法结合的多层前馈网络,特点:迭代次数少,收敛速度快,精确度高RBF径向基神经网络RBF网络能够以任意精度逼近任意连续函数,从输人层到隐含层的变换是非线性的,而从隐含层到输出层的变换是线性的,特别适合于解决分类问题FNN模糊神经网络FNN模糊神经网络是具有模糊权系数或者输入信号是模糊量的神经网络,是模糊系统与神经网络相结合的产物,它汇聚了神经网络与模糊系统的优点,集联想、识别、自适应及模糊信息处理于一体GMDH神经网络GMDH网络也称为多项式网络,它是前馈神经网络中常用的一种用于预测的神经网络。它的特点是网络结构不固定,而且在训练过程中不断改变ANFIS自适应神经网络神经网络镶嵌在一个全部模糊的结构之中,在不知不觉中向训练数据学习,自动产生、修正并高度概括出最佳的输入与输出变量的隶属函数以及模糊规则;另外神经网络的各层结构与参数也都具有了明确的、易于理解的物理意义BP神经网络,是指采用误差逆传播(BackPropagation,BP)算法训练的多层前馈网络。神经网络BP神经网络输出层隐层输入层x1xixdb1b2bhbqy1yjylw2jv1hvihvdhwqjwhjw1j第j个输出层神经元的输入:第h个隐层神经元的输出:第h个隐层神经元的输入:第j个输出层神经元的输出:BP神经网络算法的学习过程:神经网络使用scikit-learn库中neural_network模块的MLPClassifier类可以建立多层感知器分类模型,其使用格式和常用参数说明如下:classsklearn.neural_network.MLPClassifier(hidden_layer_sizes=100,activation=’relu’,solver=’adam’,alpha=0.0001,learning_rate_init=0.001,max_iter=200,tol=0.0001)神经网络参数名称说明hidden_layer_sizes接收tuple。表示隐层结构,其长度表示隐层层数,元素表示每一个隐层的神经元个数。如(80,90)表示包含两个隐层,第一个隐层有80个神经元,第2个隐层有90个神经元。默认为100activation接收str。表示激活函数,可选参数有identity、logistics、tanh、relu,默认为relusolver接收str。表示优化算法的类型,可选参数有lbfgs、sgd、adam,默认为adammax_iter接收int。表示最大迭代次数。默认为200tol接收float。表示优化过程的收敛性阈值。默认为0.0001learning_rate_init接收float。表示初始学习率,默认为0.001集成学习算法通过组合多种学习算法来获得比任何单独的学习算法具有更好的预测性能的估计器。对于训练集数据,我们通过训练若干个个体学习器(individuallearner),通过一定的结合策略,就可以最终形成一个强学习器,以达到博采众长的目的。集成算法Bagging的个体弱学习器的训练集是通过随机采样得到的。通过T次的随机采样,我们就可以得到T个采样集,对于这T个采样集,我们可以分别独立的训练出T个弱学习器,再对这T个弱学习器通过集合策略来得到最终的强学习器。集成算法Bagging随机森林(RandomForest,RF)是Bagging的一个拓展,RF在以决策树为基分类器构建Bagging学习器的基础上,进一步在决策树的训练过程中引入了随机属性选择。集成算法使用scikit-learn库中ensemble模块的RandomForestClassifier类可以建立随机森林模型,其基本使用格和常用参数说明式如下:classsklearn.ensemble.RandomForestClassifier(n_estimators=100,criterion=’gini’,max_depth=None,min_samples_split=2,min_samples_leaf=1,max_leaf_nodes=None)集成算法参数名称参数说明n_estimators接收int。表示随机森林中决策树数量。默认为100criterion接收str。表示决策树进行属性选择时的评价标准,可选参数为gini、entropy。默认为ginimax_depth接收int或None。表示决策树划分时考虑的最大特征数。默认为Nonemin_samples_split接收int或float。表示内部结点最小的样本数,若是float,则表示百分数。默认为2min_samples_leaf接收int或float。表示叶结点最小的样本数,若是float,则表示百分数。默认为1max_leaf_nodes接受in-t或None。表示最大的叶结点数。默认为NoneBoosting(提升)是一个可将弱学习器提升为强学习器的算法。这个算法的工作机制为:赋予一个相等的初始权重给每个训练样本;迭代地学习k个分类器,学习得到弱学习器1之后,更新权重,使得后面的分类器更关注误分类的训练样本;最后的分类器组合每个个体分类器的表决结果。集成算法Boosting梯度提升机(GradientBoostingMachine,GBM)是一种Boosting的方法,其提高模型精度的方法与传统Boosting对正确、错误样本进行加权不同,该模型通过在残差减少的梯度(Gradient)方向上建立一个新的模型,从而降低新模型的残差(Residual)。即每个新模型的建立是为了使得之前模型的残差往梯度方向减少。集成算法使用scikit-learn库中ensemble模块的Grad

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论