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

下载本文档

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

文档简介

第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模块的GradientBoostingClassifier类可以建立梯度提升决策树模型,其基本使用格式和常用参数说明如下:classsklearn.ensemble.GradientBoostingClassifier(loss='deviance',learning_rate=0.1,n_estimators=100,subsample=1.0,min_samples_split=2,min_samples_leaf=1,max_depth=3)集成算法参数名称参数说明loss接收str。表示指定使用的损失函数。deviance表示使用对数损失函数;exponential表示使用指数损失函数,此时模型只能用于二分类问题。默认为deviancelearning_rate接收float。表示每一棵树的学习率,该参数设定的越小,所需要的基础决策树的数量就越多。默认为0.1n_estimators接收int。表示基础决策树数量。默认为100subsample接收float。表示用于训练基础决策树的子集占样本集的比例。默认为1.0min_samples_split接收int或float。表示每个基础决策树拆分内部结点所需的最小样本数,若是float,则表示拆分所需的最小样本数占样本数的百分比。默认为2min_samples_leaf接收int或float。表示每个基础决策树模型叶节点所包含的最小样本数,若是float,则表示叶节点最小样本数占样本数的百分比。默认为1Stacking集成学习方法是指训练一个模型用于组合其他各个模型。首先我们先训练多个不同的模型(初级学习器),然后把之前训练的各个模型的输出为输入来训练一个模型(次级学习器),以得到一个最终的输出。集成算法Stacking使用scikit-learn库中ensemble模块的StackingClassifier类可以建立Stacking分类模型,其基本使用格式和常用参数说明如下:classsklearn.ensemble.StackingClassifier(estimators,final_estimator=None,*,cv=None,stack_method='auto',n_jobs=None,passthrough=False,verbose=0)集成算法参数名称参数说明estimators接收list。表示指定初级学习器。无默认值final_estimator接收str。表示将用于组合初级学习器结果的分类器,即次级分类器。默认为Nonecv接收int或交叉验证生成器。表示用于训练final_estimator时使用的交叉验证策略。默认为Nonestack_method接收str。表示每个初级学习器所调用的方法,可选auto、predict_proba、decision_function、predict。默认为“auto”1聚类目录分类与回归2关联规则3智能推荐4时间序列5与分类不同,聚类分析是在没有给定划分类别的情况下,根据数据相似度进行样本分组的一种方法。聚类的输入是一组未被标记的样本,聚类根据数据自身的距离或相似度将他们划分为若干组,划分的原则是组内样本最小化而组间(外部)距离最大化。常见聚类算法常用聚类算法:常见聚类算法算法名称算法描述K-MeansK-Means聚类又称快速聚类法,在最小化误差函数的基础上将数据划分为预定的类数K。该算法原理简单并便于处理大量数据K-MedoidsK-Means算法对孤立点的比较敏感,K-Medoids算法不将簇中对象的平均值作为簇中心,而选用簇中离平均值最近的对象作为簇中心DBSCANDBSCAN是指带有噪声的基于密度的空间聚类算法,可查找出高密度的核心样本并从中扩展聚类,适用于包含相似密度簇的数据系统聚类系统聚类又称多层次聚类,分类的单位由高到低呈树形结构,且所处的位置越低,所包含的对象就越少,但这些对象间的共同属性越多。该聚类方法只适合在小数据量的时候使用,数据量大的时候速度会非常慢聚类分析仅根据样本数据本身将样本分组,组内的对象相互之间是相似的(相关的),而不同组中的对象是不同的(不相关的)。组内的相似性越大,组间差别越大,聚类效果就越好。

常见评价法有:purity评价法:RI评价法:F值评价法:聚类算法模型评价FM系数:Rand指数:DB指数:K-Means算法是典型的基于距离的非层次聚类算法,在最小化误差函数的基础上将数据划分为预定的类数K,采用距离作为相似性的衡量指标,即认为两个对象的距离越近,相似度就越大。K-Means聚类连续属性对于连续属性,要先对各属性值进行零-均值规范,再进行距离的计算。K-Means聚类算法中,一般需要度量样本之间的距离、样本与簇之间的距离以及簇与簇之间的距离。欧几里得距离:曼哈顿距离:闵可夫斯基距离:K-Means聚类相似度度量文档数据对于文档数据使用余弦相似性度量,先将文档数据整理成文档—词矩阵格式:两个文档之间的相似度的计算公式为式:K-Means聚类

lostwinteamscoremusichappysad…coach文档一142808710…6文档二113341164…7文档三96773148…5K均值算法的具体步骤如下:(1)从N个样本数据中随机选取K个对象作为初始的聚类中心。(2)分别计算每个样本到各个聚类中心的距离,将对象分配到距离最近的聚类中。(3)所有对象分配完成后,重新计算K个聚类的中心。(4)与前一次计算得到的K个聚类中心比较,如果聚类中心发生变化,转步骤(2),否则转步骤(5)。(5)当质心不发生变化时停止并输出聚类结果。K-Means聚类算法过程使用误差平方和簇内误方差(SumSquaredError,SSE)作为度量聚类质量的目标函数,对于两种不同的聚类结果,选择误差平方和较小的分类结果。连续属性的SSE计算公式为式:文档数据的SSE计算公式为式:簇的聚类中心计算公式为式:K-Means聚类目标函数使用scikit-learn库中cluster模块的KMeans类可以实现K-Means聚类算法对数据进行聚类,KMeans类的基本使用格式和常用参数说明如下:classsklearn.cluster.KMeans(n_clusters=8,*,init=‘k-means++’,n_init=10,max_iter=300,tol=0.0001)K-Means聚类具体实现参数名称参数说明n_clusters接收int。表示要形成的簇数以及生成的质心数。默认为8init接收方法名。表示所选择的初始化方法,可选'k-means++','random',ndarray,callable。默认为'k-means++'n_init接收int。表示K均值算法将在不同质心下运行的次数。默认为10max_iter接收int。表达单次运行的K均值算法的最大迭代次数。默认为300tol接收float。表示两个连续迭代的聚类中心的差异,以声明收敛。默认为1e-4基于密度的聚类算法又称为密度聚类算法。密度聚类算法的基本思想是:以样本点在空间分布上的稠密程度为依据进行聚类,若区域中的样本密度大于某个阈值,则将相应的样本点划入与之相近的簇中。具有噪声的基于密度聚类(Density-BasedSpatialClusteringofApplicationswithNoise,DBSCAN)是一种典型的密度聚类算法。该算法从样本密度的角度进行考察样本之间的可联接性,并由可联接样本不断扩展直到获得最终的聚类结果。密度聚类对于样本集,给定距离参数,数目参数,任一样本点,定义如下概念:将集合称为样本点的邻域,若,则称为一个核心对象。若样本点属于的邻域,且为一个核心对象,则称由密度直达。对于样本点和,若存在样本点序列,且由密度直达,则称由密度可达。若存在样本点,使得样本点和均由密度可达,称与密度相联。密度聚类DBSCAN算法的基本过程:(1)输入样本集合、初始化距离参数,数目参数。(2)确定核心对象集合。(3)在核心对象集合中,随机选择一个核心对象作为种子。(4)依据簇划分原则生成一个簇,并更新核心对象集合。(5)若核心对象集合为空,则算法结束,否则返回步骤(3)。(6)输出聚类结果。密度聚类使用scikit-learn库中cluster模块的DBSCAN类可以实现密度聚类算法对数据进行聚类,DBSCAN类的基本使用格式和常用参数说明如下:classsklearn.cluster.DBSCAN(eps=0.5,*,min_samples=5,metric='euclidean',metric_params=None,algorithm='auto',leaf_size=30,p=None,n_jobs=None)密度聚类参数名称参数说明eps接收float。表示邻域半径。默认为0.5min_samples接收int。表示一个点附近的样品数量(或总重量)被视为核心点。默认为5metric接收stringorcallable。表示计算要素阵列中实例之间的距离时使用的度量。默认为'euclidean'metric_params接收dict。表示度量功能的其他关键字参数。默认为Nonealgorithm接收算法名称。表示NearestNeighbors模块将使用该算法来计算逐点距离并查找最近的邻居。默认为'auto'n_jobs接收int。表示要运行的并行作业数。默认为None层次聚类法(HierarchicalClusteringMethod)又称系统聚类法,它试图在不同层次上对样本集进行划分,进而达到形成树形的聚类结构。样本集的划分方法:聚集系统法分割系统法层次聚类在运用层次聚类法时,需要对类与类之间的距离做出规定,按照规定的不同,形成了基于最短距离、最长距离和平均距离的层次聚类法。对于给定的聚类簇与,计算距离的公式为:最短距离:最长距离:平均距离:层次聚类

基于聚集系统法具体步骤如下:(1)输入样本集合、对聚类簇函数做出规定,给出聚类的簇数。(2)将每个样本点作为单独的一簇。(3)计算任何两个簇之间的距离。(4)按照距离最近原则合并簇。(5)若当前聚类簇数未到达规定的聚类簇数,则返回步骤(3),否则聚类结束。(6)输出聚类结果。层次聚类使用scikit-learn库中cluster模块的AgglomerativeClustering类可以实现层次聚类算法对数据进行聚类,AgglomerativeClustering类的基本使用格式和常用参数说明如下:classsklearn.cluster.AgglomerativeClustering(n_clusters=2,*,affinity='euclidean',memory=None,connectivity=None,compute_full_tree='auto',linkage='ward',distance_threshold=None)层次聚类参数名称参数说明n_clusters接收intorNone。表示要查找的集群数。默认为2affinity接收strorcallable。表示用于计算链接的度量。默认为'euclidean'memory接收具有joblib的内存str或对象。表示用于缓存树计算的输出。默认为Noneconnectivity接收数组或可调用的连接对象。表示连接的矩阵。默认为Nonedistance_threshold接收float。表示链接距离的阈值。默认为None1聚类目录分类与回归2关联规则3智能推荐4时间序列5关联规则分析也称为购物篮分析,目的是从大量数据中找出各项之间的关联关系,如关联规则“面包=>牛奶”,其中面包称为规则的前项,而牛奶称为后项。常用关联规则算法算法名称算法描述Apriori关联规则最常用也是最经典的挖掘频繁项集的算法,其核心思想是通过连接产生候选项,然后通过剪枝生成频繁项集FP-Growth针对Apriori算法的固有的多次扫面事务数据集的缺陷,提出的不产生候选频繁项集的方法。Apriori和FP-Growth都是寻找频繁项集的算法Eclat算法Eclat算法是一种深度优先算法,采用垂直数据表示形式,在概念和理论的基础上利用基于前缀的等价关系将搜索空间划分为较小的子空间灰色关联法分析和确定各因素之间的影响程度或是若干个子因素(子序列)对主因素(母序列)的贡献度而进行的一种分析方法支持度:项集A、B同时发生的概率称为关联规则的支持度。置信度:项集A发生,则项集B发生的概率为关联规则的置信度Apriori关联规则和频繁项集最小支持度和最小置信度支持度最小支持度是用户或专家定义的衡量支持度的一个阈值,表示项目集在统计意义上的最低重要性;最小置信度是用户或专家定义的衡量置信度的一个阈值,表示关联规则的最低可靠性。同时满足最小支持度阈值和最小置信度阈值的规则称作强规则。项集与频繁项集项集是项的集合。包含k个项的项集称为k项集,如集合{牛奶,麦片,糖}是一个3项集。项集的出现频数是所有包含项集的事务计数,又称作绝对支持度或支持度计数。如果项集I的相对支持度满足预定义的最小支持度阈值,则I是频繁项集。AprioriApriori算法的主要思想是找出存在于事务数据集中的最大的频繁项集,再利用得到的最大频繁项集与预先设定的最小置信度阈值生成强关联规则。Apriori的性质频繁项集的所有非空子集也必须是频繁项集。根据该性质可以得出:向不是频繁项集的项集中添加事务,新的项集一定也不是频繁项集。AprioriApriori算法:使用候选产生频繁项集Apriori算法实现的两个过程:找出所有的频繁项集

由频繁项集产生强关联规则Apriori客户ID转换后的商品ID101a,c,e102b,d103b,c104a,b,c,d105a,b106b,c107a,b108a,b,c,e109a,b,c110a,c,eAprioriApriori1聚类目录分类与回归2关联规则3智能推荐4时间序列5智能推荐用于联系用户和信息,并利用信息分析用户的兴趣偏好,为用户推荐感兴趣信息。常用智能推荐算法算法类型说明优点缺点基于内容推荐建立在项目的内容信息上做出推荐的,而不需要依据用户对项目的评价意见(1)推荐结果直观,容易解释(2)不需要领域知识(1)新用户问题(2)复杂属性不好处理(3)要有足够数据构造分类器协同过滤推荐它一般采用最近邻技术,利用用户的历史喜好信息计算用户之间的距离,然后利用目标用户的最近邻居用户对商品评价的加权评价值来预测目标用户对特定商品的喜好程度,从而根据这一喜好程度来对目标用户进行推荐(1)新异兴趣发现、不需要领域知识(2)随着时间推移性能提高(3)推荐个性化、自动化程度高(4)能处理复杂的非结构化对象(1)稀疏问题(2)可扩展性问题(3)新用户问题(4)质量取决于历史数据集(5)系统开始时推荐质量差基于关联规则推荐以关联规则为基础,将已购商品作为规则头,规则体为推荐对象(1)能发现新兴趣点(2)不要领域知识(1)规则抽取难、耗时(2)产品名同义性问题(3)个性化程度低常用智能推荐算法算法类型说明优点缺点基于效用推荐建立在对用户使用项目的效用情况上计算的,其核心问题是怎样为每一个用户去创建一个效用函数,因此,用户资料模型很大程度上是由系统所采用的效用函数决定的(1)无冷开始和稀疏问题(2)对用户偏好变化敏感(3)能考虑非产品特性(1)用户必须输入效用函数(2)推荐是静态的,灵活性差(3)属性重叠问题基于知识推荐在某种程度是可以看成是一种推理(Inference)技术,它不是建立在用户需要和偏好基础上推荐的(1)能将用户需求映射到产品上(2)能考虑非产品属性(1)知识难获得(2)推荐是静态的流行度推荐将最热门的产品直接推荐给客户,建立在大众喜好的平均水平上(1)适合历史数据较少的用户(2)推荐效果较差体现不出个性化的特点常用智能推荐算法通常网站给用户进行推荐时,针对每个用户提供的是一个个性化的推荐列表,也称为TopN推荐。TopN推荐最常用的评价指标是精确率、召回率和F1值。精确率

精确率表示推荐列表中用户喜欢的物品所占的比例。单个用户的推荐精确率定义如下:整个推荐系统的精确率定义如下:智能推荐模型评价推荐列表评价指标召回率

召回率表示测试集中用户喜欢的物品出现在推荐列表中的比例。单个用户的推荐召回率定义如下:整个推荐系统的召回率定义如下:F1值(F1score)F1值是综合了精确率(P)和召回率(R)的评价方法,F1值取值越高表明推荐算法越有效,F1值定义如下:智能推荐模型评价评分预测是指预测一个用户对推荐的物品的评分。评分预测的预测准确度通过均方根误差(RMSE)和平均绝对误差(MAE)进行评价。对于测试集中的用户和物品,定义用户对物品的实际评分为,推荐算法的预测评分为,则RMSE的定义如下:MAE使用绝对值计算,定义如下:智能推荐模型评价评分预测评价指标基于用户的协同过滤算法的基本思想是基于用户对物品的偏好找到相邻用户,然后将邻居用户喜欢的物品推荐给当前用户。协同过滤推荐算法基于用户的协同过滤算法协同过滤推荐算法算法步骤:方法说明公式皮尔逊相关系数皮尔逊相关系数一般用于计算两个定距变量间联系的紧密程度,它的取值在[-1,+1]区间内。皮尔森相关系数等于两个变量的协方差除于两个变量的标准差。欧几里得相似度欧几里得距离相似度以经过人们一致评价的物品为坐标轴,然后将参与评价的人绘制到坐标系上,并计算这些人彼此之间的直线距离

余弦相似度余弦相似度用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小,如图所示。杰卡德相似系数分母

表示喜欢物品

或喜欢物品

的用户总数,分子

表示同时喜欢物品

和物品

的用户数计算用户之间的相似度协同过滤推荐算法预测评分首先根据上一步中的相似度计算,寻找用户的邻居集,其中表示邻居集,表示用户集。然后结合用户评分数据集,预测用户对项的评分,计算公式如下:其中,

表示用户和用户的相似度。最后,对未评分商品的预测分值排序,得到推荐商品列表。基于物品的协同过滤算法的原理和基于用户的协同过滤类似,只是在计算邻居时采用物品本身,而不是从用户的角度,即基于用户对物品的偏好找到相似的物品,再根据用户的历史偏好,推荐相似的物品给用户。协同过滤推荐算法基于物品的协同过滤算法协同过滤推荐算法算法步骤:方法说明公式皮尔逊相关系数皮尔逊相关系数一般用于计算两个定距变量间联系的紧密程度,它的取值在[-1,+1]区间内。皮尔森相关系数等于两个变量的协方差除于两个变量的标准差。欧几里得相似度欧几里得距离相似度以经过人们一致评价的物品为坐标轴,然后将参与评价的人绘制到坐标系上,并计算这些人彼此之间的直线距离

余弦相似度余弦相似度用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小,如图所示。杰卡德相似系数分母

表示喜欢物品

或喜欢物品

的用户总数,分子

表示同时喜欢物品

和物品

的用户数计算物品之间的相似度基于物品的协同过滤算法中用户对所有物品的感兴趣程度计算公式为:其中,R表示用户对物品的兴趣,表示所有物品之间的相似度,P为用户对物品感兴趣的程度。

最后,根据用户对物品的感兴趣程度排序,得到推荐商品列表。协同过滤推荐算法对于用户行为数据信息过少的用户,可以使用基于流行度的推荐算法;为这些用户推荐最热门的前N个新闻,等信息数据收集到一定数量时,再切换为个性化推荐。基于流行度的推荐算法1聚类目录分类与回归2关联规则3智能推荐4时间序列5时间序列是按照时间排序的一组随机变量,它通常是在相等间隔的时间段内依照给定的采样率对某种潜在过程进行观测的结果,是一种动态数据处理的统计方法,主要研究随机数据序列所遵从的统计规律。常用的时间序列模型:时间序列算法模型名称描述平滑法平滑法常用于趋势分析和预测,利用修匀技术,削弱短期随机波动对序列的影响,使序列平滑化。根据所用平滑技术的不同,可具体分为移动平均法和指数平滑法趋势拟合法趋势拟合法将时间作为自变量,相应的序列观察值作为因变量,建立回归模型。根据序列的特征,可具体分为线性拟合和曲线拟合组合模型时间序列的变化主要受到长期趋势(T)、季节变动(S)、周期变动(C)和不规则变动()这4个因素的影响。根据序列的特点,可以构建加法模型和乘法模型加法模型:

;乘法模型:

时间序列算法模型名称描述AR模型以前

期的序列值

为自变量、随机变量

的取值

为因变量建立线性回归模型MA模型随机变量

的取值

与以前各期的序列值无关,

建立

与前

期的随机扰动

的线性回归模型ARMA模型

随机变量

的取值

不仅与以前

期的序列值有关,还与前

期的随机扰动有关ARIMA模型许多非平稳序列差分后会显示出平稳序列的性质,称这个非平稳序列为差分平稳序列。对差分平稳序列可以使用ARIMA模型进行拟合。ARCH模型ARCH模型能准确地模拟时间序列变量的波动性的变化,适用于序列具有异方差性并且异方差函数短期自相关GARCH模型及其衍生模型GARCH模型称为广义ARCH模型,是ARCH模型的拓展。相比于ARCH模型,GARCH模型及其衍生模型更能反映实际序列中的长期记忆性、信息的非对称性等性质针对一个观察值序列后,首先要对它的白噪声和平稳性进行检验,这两个重要的检验称为序列的预处理。根据检验结果可以将序列分为不同的类型:时间序列的预处理序列的各项之间没有任何相关关系,序列在进行完全无序的随机波动白噪声序列均值和方差是常数,通常是建立一个线性模型来拟合该序列的发展,借此提取该序列的有用信息。平稳非白噪声序列均值和方差不稳定,处理方法一般是将其转变为平稳序列,再应用有关平稳时间序列的分析方法非平稳序列平稳时间序列的定义如果时间序列在某一常数附近波动且波动范围有限,即有常数均值和常数方差,并且延迟期的序列变量的自协方差和自相关系数是相等的或者说延迟期的序列变量之间的影响程度是一样的,则称此序列为平稳序列。时间序列的预处理平稳性检验平稳性检验时间序列的预处理时序图检验根据平稳时间序列的均值和方差都为常数的性质,平稳序列的时序图显示该序列值始终在一个常数附近随机波动,而且波动的范围有界;如果有明显的趋势性或者周期性那它通常不是平稳序列。自相关图检验随着延迟期数的增加,平稳序列的自相关系数(延迟期)会比较快地衰减趋向于零,并在零附近随机波动,而非平稳序列的自相关系数衰减的速度比较慢单位根检验单位根检验是指检验序列中是否存在单位根,存在单位根就是非平稳时间序列白噪声检验也称纯随机性检验,一般是构造检验统计量来检验序列的白噪声;常用的检验统计量有Q统计量和LB统计量,计算出统计量后再计算出对应的值,如果值显著大于显著性水平,则表示该序列不能拒绝纯随机的原假设,可以停止对该序列的分析。时间序列的预处理白噪声检验自相关系数(ACF)平稳AR(p)模型的自相关系数呈指数的速度衰减,始终有非零取值,不会在大于某个常数之后就恒等于零,这个性质就是平稳AR(p)模型的自相关系数具有拖尾性。偏自相关系数(PACF)对于一个平稳AR(p)模型,求出延迟期自相关系数时,实际上的得到的并不是与之间单纯的相关关系,因为同时还会受到中间个随机变量的影响,所以自相关系数里实际上掺杂了其他变量对与的相关影响,为了单纯地测度对的影响,引进偏自相关系数的概念。拖尾与截尾截尾是指时间序列的ACF或PACF在某阶后均为0的性质;

拖尾是ACF或PACF并不在某阶后均为0的性质。平稳时间序列分析基本性质具有结构的模型称为阶自回归模型,简记为AR(p)。即在t时刻的随机变量的取值是前p期的多元线性回归,认为主要是受过去p期的序列值的影响。误差项是当期的随机干扰,为零均值白噪声序列。平稳AR(p)模型的性质如下表所示:平稳时间序列分析AR模型统计量性质统计量性质均值常数均值自相关系数(ACF)拖尾方差常数方差偏自相关系数(PACF)阶截尾具有结构的模型称为q阶移动平均模型,简记为MA(q)。即在t时刻的随机变量的取值是前q期的随机扰动的多元线性函数,误差项是当期的随机干扰,为零均值白噪声序列,是序列的均值。认为主要是受过去q期的误差项的影响。平稳MA(q)模型的性质如下表所示:平稳时间序列分析MA模型统计量性质统计量性质均值常数均值自相关系数(ACF)阶截尾方差常数方差偏自相关系数(PACF)拖尾具有结构的模型称为自回归移动平均模型,简记为ARMA(p,q)。即在t时刻的随机变量的取值是前p期和前q期的多元线性函数,误差项是

温馨提示

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

评论

0/150

提交评论