10种机器学习算法介绍2853.pptx
《10种机器学习算法介绍2853.pptx》由会员分享,可在线阅读,更多相关《10种机器学习算法介绍2853.pptx(69页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、机器学习算法介绍基本概念分类监督式学习 多轮学习以达到目的:实现回归或分类非监督式学习 特定方法实现聚类。(由于目的性不明确,所以一般没有多轮)强化学习 不断学习,永无止境分类算法 适用因变量为离散变量回归算法 适用因变量为连续变量聚类和分类的差别聚类:无限种类别可能分类:有限种类别可能监督式学习工作机制这个算法由一个目标变量或结果变量(或因变量)组成。此变量由已知的一系列预示变量(自变量)预测而来。利用这一系列变量,我们生成一个将输入值映射到期望输出值的函数。这个训练过程会一直持续,直到模型在训练数据上获得期望的精确度。例子线性回归,决策树,SVM,K近邻算法,逻辑回归等非监督式学习工作机制
2、没有任何目标变量或结果变量要预测或估计。用在不同的组内聚类分析。例子关联算法,K均值算法强化学习工作机制训练机器进行决策。机器被放在一个能让它通过反复试错来训练自己的环境中。机器从过去的经验中进行学习,并且尝试利用了解最透彻的知识作出精确的判断。例子马尔可夫决策过程十大机器学习算法1、线性回归2、逻辑回归3、决策树4、SVM5、朴素贝叶斯6、k-Means算法7、kNN算法8、Apriori算法9、最大期望算法(EM)10、PageRank监督式学习与非监督式学习的差别监督式学习方法,要求:事先明确知道各个类别的信息 所有待分类项都有一个类别与之对应如果不能满足上述两个条件(例如有海量数据),
3、则需适用聚类算法,即非监督式学习。监督式学习监督式学习非监督式学习非监督式学习线性回归逻辑回归决策树朴素贝叶斯SVM KNNK-meansAprioriEMPageRank线性回归适用场景 根据连续变量估计实际数值(房价、呼叫次数、总销售额等)。原理 可通过拟合最佳直线来建立自变量和因变量的关系。拟合结果是条直线 Y=a*X+b:其中Y是因变量,a是斜率,x是自变量,b是截距 最佳直线叫做回归线。系数 a 和 b 通过最小二乘法获得。Python代码fromsklearnimportlinear_modelx_train=input_variables_values_training_data
4、setsy_train=target_variables_values_training_datasetsx_test=input_variables_values_test_datasetslinear=linear_model.LinearRegression()linear.fit(x_train,y_train)linear.score(x_train,y_train)线性回归针对线性回归容易出现欠拟合的问题,采取局部加权线性回归。在该算法中,赋予预测点附近每一个点以一定的权值,在这上面基于波长函数来进行普通的线性回归.可以实现对临近点的精确拟合同时忽略那些距离较远的点的贡献,即近点的
5、权值大,远点的权值小,k为波长参数,控制了权值随距离下降的速度,越大下降的越快。线性回归针对数据的特征比样本点多的问题:一、岭回归二、前向逐步回归逻辑回归#Import Libraryfromsklearn.linear_modelimportLogisticRegression#Assumed you have,X(predictor)and Y(target)for training data set and x_test(predictor)of test_dataset#Create logistic regression objectmodel=LogisticRegression(
6、)#Train the model using the training sets and check scoremodel.fit(X,y)model.score(X,y)#Predict Outputpredicted=model.predict(x_test)逻辑回归基于最优化方法的最佳回归系数确定:梯度下降法-随机梯度下降法(根据梯度更新权重)牛顿法或拟牛顿法(最大熵模型)决策树使用场景 这个监督式学习算法通常被用于分类问题。它同时适用于分类变量和连续因变量。原理 在这个算法中,我们将总体分成两个或更多的同类群。这是根据最重要的属性或者自变量来分成尽可能不同的组别。回归树预测值为叶节点
7、目标变量的加权均值 分类树某叶节点预测的分类值应是造成错判损失最小的分类值。细说决策树(1)混乱度判断熵 熵:E=sum(-p(I)*log(p(I),I=1:N(N类结果,如客户是否流失)所有样本都属于一个类别I(最整齐),那么熵为0,如果样本完全随机,那么熵为1 信息增益 信息增益:原样本的熵-sum(区分后的各部分熵),增益越大表示区分的方法越好 Gain(Sample,Action)=E(sample)-sum(|Sample(v)|/Sample*E(Sample(v)除了熵以外,还有GINI不纯度,错误率两种计算混乱度的方法,定义不同但效果类似。细说决策树(2)建构树生成树(1)从
8、根节点t=1开始,从所有可能候选S集合中搜索使不纯性降低最大的划分S;(2)使用划分S将节点1(t=1)划分成两个节点t=2和t=3;(3)在t=2和t=3上分别重复划分搜索过程终止树(1)节点达到完全纯性;(2)树的深度达到用户指定的深度;(3)节点中样本的个数少于用户指定的个数;(4)异质性指标下降的最大幅度小于用户指定的幅度。细说决策树(3)剪枝prune当分类回归树划分得太细时,会对噪声数据产生过拟合作用。因此我们要通过剪枝来解决。剪枝又分为前剪枝和后剪枝:前剪枝:在构造树的过程中就知道那些节点需要减掉,及早的停止树增长。后剪枝:在构造出完整树之后再按照一定方法进行剪枝,方法有:代价复
9、杂性剪枝、最小误差剪枝、悲观误差剪枝等等。决策树代码 defcreateTree(dataSet,labels):classList=example-1forexampleindataSet#将最后一行的数据放到classList中ifclassList.count(classList0)=len(classList):returnclassList0iflen(dataSet0)=1:#这里为什么是1呢?就是说特征数为1的时候returnmajorityCnt(classList)bestFeat=chooseBestFeatureToSplit(dataSet)print(bestFeat
10、)bestFeatLabel=labelsbestFeat#运行结果nosurfacingmyTree=bestFeatLabel:#运行结果nosurfacing:del(labelsbestFeat)featValues=examplebestFeatforexampleindataSet#第0个特征值uniqueVals=set(featValues)forvalueinuniqueVals:subLabels=labels:myTreebestFeatLabelvalue=createTree(splitDataSet(dataSet,bestFeat,value),subLabels
11、)returnmyTreePython代码支持向量机适用场景 这是一种统计分类及回归分析方法算法 支持向量机将向量映射到一个更高维的空间里,在这个空间里建立有一个最大间隔超平面。在分开数据的超平面的两边建有两个互相平行的超平面,分隔超平面使两个平行超平面的距离最大化。假定平行超平面间的距离或差距越大,分类器的总误差越小。支持向量机支持向量机优缺点优点:(1)非线性映射是SVM方法的理论基础,SVM利用内积核函数代替向高维空间的非线性映射;(2)对特征空间划分的最优超平面是SVM的目标,最大化分类边际的思想是SVM方法的核心;(3)支持向量是SVM的训练结果,在SVM分类决策中起决定性作用。因此
12、,模型需要存储空间小,算法鲁棒性(Robust)强。缺点:(1)SVM算法对大规模训练样本难以实施(2)用SVM解决多分类问题存在困难经典的支持向量机算法只给出了二类分类的算法,而在数据挖掘的实际应用中,一般要解决多类的分类问题。朴素贝叶斯#ImportLibraryfromsklearn.naive_bayesimportGaussianNB#Assumedyouhave,X(predictor)andY(target)fortrainingdatasetandx_test(predictor)oftest_dataset#CreateSVMclassificationobjectmodel
13、=GaussianNB()#thereisotherdistributionformultinomialclasseslikeBernoulliNaiveBayes,Referlink#Trainthemodelusingthetrainingsetsandcheckscoremodel.fit(X,y)#PredictOutputpredicted=model.predict(x_test)朴素贝叶斯算法 对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,哪个最大,就认为此待分类项属于哪个类别。自变量:x=a1,a2,.,an 因变量:假设我们的结论有True/False两种 根
14、据样本可得到p(a1|T),p(a2|T),.,p(an|T),p(a1|F),p(a2|F),.,p(an|F)我们想比较p(T|x)和p(F|x),则根据贝叶斯定理:p(T|x)=p(x|T)p(x|T)*p(T)/p(x)=p(a1|T)*p(a2|T)*.*p(an|T)p(a1|T)*p(a2|T)*.*p(an|T)*p(T)/p(x)p(T|x)*p(x)=p(x|T)p(x|T)*p(T)=p(a1|T)*p(a2|T)*.*p(an|T)p(a1|T)*p(a2|T)*.*p(an|T)*p(T)p(F|x)*p(x)=p(x|F)p(x|F)*p(T)=p(a1|F)*p(
15、a2|F)*.*p(an|F)p(a1|F)*p(a2|F)*.*p(an|F)*p(F)由此得出x情况下T的概率和F的概率。KNN(K最邻近算法)适用场景 该算法可用于分类问题和回归问题。然而,在业界内,K最近邻算法更常用于分类问题。原理 K最近邻算法是一个简单的算法。它储存所有的案例,通过周围k个案例中的大多数情况划分新的案例。根据一个距离函数,新案例会被分配到它的 K 个近邻中最普遍的类别中去。这些距离函数可以是欧式距离、曼哈顿距离、明式距离或者是汉明距离。前三个距离函数用于连续函数,第四个函数(汉明函数)则被用于分类变量。KNN(K最邻近算法)实现流程(1)计算已知类别数据集中的点与当
16、前点之间的距离(2)按照距离递增次序排序(3)选取与当前点距离最近的k个点(4)确定前k个点所在类别的出现频率(5)返回前k个点出现频率最高的类别作为当前点的预测分类Python代码#Import Libraryfromsklearn.neighborsimportKNeighborsClassifier#Assumed you have,X(predictor)and Y(target)for training data set and x_test(predictor)of test_dataset#Create KNeighbors classifier object model KNe
17、ighborsClassifier(n_neighbors=6)#default value for n_neighbors is 5#Train the model using the training sets and check scoremodel.fit(X,y)#Predict Outputpredicted=model.predict(x_test)KNN(K最邻近算法)补充说明 KNN算法不仅可以用于分类,还可以用于回归。通过找出一个样本的k个最近邻居,将这些邻居的属性的平均值赋给该样本,就可以得到该样本的属性。更有用的方法是将不同距离的邻居对该样本产生的影响给予不同的权值(w
18、eight),如权值与距离成反比。K均值算法使用场景 K均值算法是一种非监督式学习算法,它能解决聚类问题。使用 K均值算法来将一个数据归入一定数量的集群(假设有 k 个集群)的过程是简单的。一个集群内的数据点是均匀齐次的,并且异于别的集群。算法 1、从D中随机取k个元素,作为k个簇的各自的中心。2、分别计算剩下的元素到k个簇中心的相异度,将这些元素分别划归到相异度最低的簇。3、根据聚类结果,重新计算k个簇各自的中心,计算方法是取簇中所有元素各自维度的算术平均数。4、将D中全部元素按照新的中心重新聚类。5、重复第4步,直到聚类结果不再变化。6、将结果输出。K均值算法如何确定K值 K 均值算法涉及
19、到集群,每个集群有自己的质心。一个集群内的质心和各数据点之间距离的平方和形成了这个集群的平方值之和。同时,当所有集群的平方值之和加起来的时候,就组成了集群方案的平方值之和。我们知道,当集群的数量增加时,所有集群平方和之和会持续下降。但是,如果你将结果用图表来表示,你会看到距离的平方总和快速减少。到某个值 k 之后,减少的速度就大大下降了。在此,我们可以找到集群数量的最优值。工作流程#k-means聚类算法defkMeans(dataSet,k,distMeans=distEclud,createCent=randCent):m=shape(dataSet)0clusterAssment=mat
20、(zeros(m,2)centroids=createCent(dataSet,k)clusterChanged=TruewhileclusterChanged:clusterChanged=False;foriinrange(m):minDist=inf;minIndex=-1;forjinrange(k):distJI=distMeans(centroidsj,:,dataSeti,:)ifdistJIminDist:minDist=distJI;minIndex=jifclusterAssmenti,0!=minIndex:clusterChanged=True;clusterAssme
21、nti,:=minIndex,minDist*2printcentroidsforcentinrange(k):ptsInClust=dataSetnonzero(clusterAssment:,0.A=cent)0centroidscent,:=mean(ptsInClust,axis=0)returncentroids,clusterAssment创建k个点作为起始质心,可以随机选择(位于数据边界内)当任意一个点的簇分配结果发生改变时 对数据集中的每一个点对每个质心计算质心与数据点之间的距离将数据点分配到距其最近的簇对每个簇,计算簇中所有点的均值并将均值作为质心Pyhton代码K-MEAN
22、S性能分析优点(1)是解决聚类问题的一种经典算法,简单、快速。(2)当结果簇是密集的,而簇与簇之间区别明显时,它的效果较好。缺点(1)在簇的平均值被定义的情况下才能使用,这对于处理符号属性的数据不适用。(2)要求用户必须事先给出要生成的簇的数目k。(3)对初值敏感,对于不同的初始值,可能会导致不同的聚类结果。(4)不适合于发现非凸面形状的簇,或者大小差别很大的簇。(5)对于噪声和孤立点数据敏感,少量的该类数据能够对平均值产生极大影响。K-MEANS性能分析改进:(1)对于离群点和孤立点敏感:离群点检测的LOF算法,通过去除离群点后再聚类,可以减少离群点和孤立点对于聚类效果的影响。(2)k值选择
23、:开始设定k值,每跑一次K-means,根据k个聚类的距离情况,合并距离最近的类,不断重复,最终得到合适数目的聚类数。可以通过一个评判值E来确定聚类数得到一个合适的位置停下来,而不继续合并聚类中心。(3)初始聚类中心的选择:选择批次距离尽可能远的K个点(首先随机选择一个点作为第一个初始类簇中心点,然后选择距离该点最远的那个点作为第二个初始类簇中心点,然后再选择距离前两个点的最近距离最大的点作为第三个初始类簇的中心点,以此类推,直至选出K个初始类簇中心点。)(4)只能发现球状簇:如果数据集中有不规则的数据,往往通过基于密度的聚类算法更加适合,比如DESCAN算法K-MEANS补充相异度 相异度就
24、是两个东西差别有多大(例如用什么来说明人类与章鱼的相异度明显大于人类与黑猩猩的相异度)欧式距离,曼哈顿距离,闵科夫斯基距离什么叫聚类 所谓聚类问题,就是给定一个元素集合D,其中每个元素具有n个可观察属性,使用某种算法将D划分成k个子集,要求每个子集内部的元素之间相异度尽可能低,而不同子集的元素相异度尽可能高。其中每个子集叫做一个簇。AdaBoost算法原理(1)针对同一个训练集训练不同的分类器(弱分类器),然后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类器)。(2)算法本身是通过改变数据分布来实现的,根据每次训练集中每个样本的分类是否正确,以及上次的总体分类的准确率,来确定每个样本
25、的权值。(3)将修改过权值的新数据集送给下层分类器进行训练,最后将每次训练得到的分类器融合起来,作为最终的决策分类器Python代码#Import Libraryfromsklearn.ensembleimportGradientBoostingClassifier#Assumed you have,X(predictor)and Y(target)for training data set and x_test(predictor)of test_dataset#Create Gradient Boosting Classifier objectmodel=GradientBoostingC
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 10 机器 学习 算法 介绍 2853
限制150内