10种机器学习算法介绍

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

10种机器学习算法介绍基本概念分类监督式学习多轮学习以达到目的:实现回归或分类非监督式学习特定方法实现聚类。(由于目的性不明确,所以一般没有多轮)强化学习不断学习,永无止境分类算法适用因变量为连续变量回归算法适用因变量为离散变量聚类和分类的差别聚类:无限种类别可能分类:有限种类别可能监督式学习工作机制这个算法由一个目标变量或结果变量(或因变量)组成。此变量由已知的一系列预示变量(自变量)预测而来。利用这一系列变量,我们生成一个将输入值映射到期望输出值的函数。这个训练过程会一直持续,直到模型在训练数据上获得期望的精确度。例子回归,决策树,随机森林,K–近邻算法,逻辑回归等非监督式学习工作机制在这个算法中,没有任何目标变量或结果变量要预测或估计。这个算法用在不同的组内聚类分析。这种分析方式被广泛地用来细分客户,根据干预的方式分为不同的用户组。例子关联算法,K–均值算法强化学习工作机制这个算法训练机器进行决策。机器被放在一个能让它通过反复试错来训练自己的环境中。机器从过去的经验中进行学习,并且尝试利用了解最透彻的知识作出精确的商业判断。(好虚。。。。)例子马尔可夫决策过程监督式学习与非监督式学习的差别监督式学习方法,要求:事先明确知道各个类别的信息所有待分类项都有一个类别与之对应如果不能满足上述两个条件(例如有海量数据),则需适用聚类算法,即非监督式学习。监督式学习非监督式学习线性回归逻辑回归决策树朴素贝叶斯SVMKNNK-MEANS随机森林降维算法GradientBoosting和AdaBoost算法大数据线性回归适用场景根据连续变量估计实际数值(房价、呼叫次数、总销售额等)。原理可通过拟合最佳直线来建立自变量和因变量的关系。拟合结果是条直线Y=a*X+b:其中Y是因变量,a是斜率,x是自变量,b是截距最佳直线叫做回归线。系数a和b通过最小二乘法获得。R语言代码#Trainthemodelusingthetrainingsetsandcheckscorelinear-lm(y_train~x_train)summary(linear)#PredictOutputpredicted=predict(linear,x_test)假设在不问对方体重的情况下,让一个五年级的孩子按体重从轻到重的顺序对班上的同学排序,你觉得这个孩子会怎么做?他(她)很可能会目测人们的身高和体型,综合这些可见的参数来排列他们。这是现实生活中使用线性回归的例子。逻辑回归适用场景该算法可根据已知的一系列因变量估计离散数值的出现概率。原理这是一个分类算法而不是一个回归算法。从数学上看,在结果中,几率的对数使用的是预测变量的线性组合模型。ln(p/(1-p))=b0+b1*X1+b2*X2+b3*X3....+bk*XkR语言代码假设你的朋友让你解开一个谜题。这只会有两个结果:你解开了或是你没有解开。想象你要解答很多道题来找出你所擅长的主题。这个研究的结果就会像是这样:假设题目是一道十年级的三角函数题,你有70%的可能会解开这道题。然而,若题目是个五年级的历史题,你只有30%的可能性回答正确。这就是逻辑回归能提供给你的信息。#Trainthemodelusingthetrainingsetsandcheckscorelogistic-glm(y_train~.,data=x,family='binomial')summary(logistic)#PredictOutputpredicted=predict(logistic,x_test)决策树使用场景这个监督式学习算法通常被用于分类问题。它同时适用于分类变量和连续因变量。原理在这个算法中,我们将总体分成两个或更多的同类群。这是根据最重要的属性或者自变量来分成尽可能不同的组别。R语言代码library(rpart)x-cbind(x_train,y_train)#growtreefit-rpart(y_train~.,data=x,method=class)summary(fit)#PredictOutputpredicted=predict(fit,x_test)library(rpart.plot)rpart.plot(fit)细说决策树(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)——rpart参数详解生成树rpart(formula,data,weights,subset,na.action=na.rpart,method,model=FALSE,x=FALSE,y=TRUE,parms,control,cost,...)主要参数说明method:根据树末端的数据类型选择相应变量分割方法,本参数有四种取值:连续型“anova”;离散型“class”;计数型(泊松过程)“poisson”;生存分析型“exp”。程序会根据因变量的类型自动选择方法,但一般情况下最好还是指明本参数,以便让程序清楚做哪一种树模型。parms:用来设置三个参数:先验概率、损失矩阵、分类纯度的度量方法。control:控制每个节点上的最小样本量、交叉验证的次数、复杂性参量:即cp:complexitypamemeter,这个参数意味着对每一步拆分,模型的拟合优度必须提高的程度,等等。……细说决策树(3)——剪枝prune复杂度complexityparameter对于连续性因变量而言,可能存在分割过细的情况,可以通过复杂度来看是否还有必要存在。fit$cptable,可以看出每个节点的复杂度。fit2-prune(fit,cp=0.01)表示修剪复杂度在0.01以下的节点。支持向量机适用场景这是一种分类方法。算法我们将每个数据在N维空间中用点标出(N是你所有的特征总数),每个特征的值是一个坐标的值。然后想办法找到将两组不同数据分开的一条直线。两个分组中距离最近的两个点到这条线的距离同时最优化。测试数据落到直线的哪一边,我们就将它分到哪一类去。library(e1071)x-cbind(x_train,y_train)#Fittingmodelfit-svm(y_train~.,data=x)summary(fit)#PredictOutputpredicted=predict(fit,x_test)朴素贝叶斯适用场景在预示变量间相互独立的前提下,根据贝叶斯定理可以得到朴素贝叶斯这个分类方法。预测结果为离散型因变量的出现概率。R语言代码(e1071)x-cbind(x_train,y_train)#Fittingmodelfit-naiveBayes(y_train~.,data=x)summary(fit)#PredictOutputpredicted=predict(fit,x_test)朴素贝叶斯算法对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,哪个最大,就认为此待分类项属于哪个类别。自变量:x={a1,a2,...,an}因变量:假设我们的结论有True/False两种根据样本可得到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(T)/p(x)=p(a1|T)*p(a2|T)*...*p(an|T)*p(T)/p(x)p(T|x)*p(x)=p(x|T)*p(T)=p(a1|T)*p(a2|T)*...*p(an|T)*p(T)p(F|x)*p(x)=p(x|F)*p(T)=p(a1|F)*p(a2|F)*...*p(an|F)*p(F)由此得出x情况下T的概率和F的概率。(K最邻近算法)适用场景该算法可用于分类问题和回归问题。然而,在业界内,K–最近邻算法更常用于分类问题。原理K–最近邻算法是一个简单的算法。它储存所有的案例,通过周围k个案例中的大多数情况划分新的案例。根据一个距离函数,新案例会被分配到它的K个近邻中最普遍的类别中去。这些距离函数可以是欧式距离、曼哈顿距离、明式距离或者是汉明距离。前三个距离函数用于连续函数,第四个函数(汉明函数)则被用于分类变量。KNN(K最邻近算法)举例右图中,绿色圆要被决定赋予哪个类,是红色三角形还是蓝色四方形?如果K=3,由于红色三角形所占比例为2/3,绿色圆将被赋予红色三角形那个类,如果K=5,由于蓝色四方形比例为3/5,因此绿色圆被赋予蓝色四方形类。补充说明KNN算法不仅可以用于分类,还可以用于回归。通过找出一个样本的k个最近邻居,将这些邻居的属性的平均值赋给该样本,就可以得到该样本的属性。更有用的方法是将不同距离的邻居对该样本产生的影响给予不同的权值(weight),如权值与距离成反比。library(knn)x-cbind(x_train,y_train)#Fittingmodelfit-knn(y_train~.,data=x,k=5)summary(fit)#PredictOutputpredicted=predict(fit,x_test)K均值算法使用场景K–均值算法是一种非监督式学习算法,它能解决聚类问题。使用K–均值算法来将一个数据归入一定数量的集群(假设有k个集群)的过程是简单的。一个集群内的数据点是均匀齐次的,并且异于别的集群。算法1、从D中随机取k个元素,作为k个簇的各自的中心。2、分别计算剩下的元素到k个簇中心的相异度,将这些元素分别划归到相异度最低的簇。3、根据聚类结果,重新计算k个簇各自的中心,计算方法是取簇中所有元素各自维度的算术平均数。4、将D中全部元素按照新的中心重新聚类。5、重复第4步,直到聚类结果不再变化。6、将结果输出。K均值算法如何确定K值K–均值算法涉及到集群,每个集群有自己的质心。一个集群内的质心和各数据点之间距离的平方和形成了这个集群的平方值之和。同时,当所有集群的平方值之和加起来的时候,就组成了集群方案的平方值之和。我们知道,当集群的数量增加时,所有集群平方和之和会持续下降。但是,如果你将结果用图表来表示,你会看到距离的平方总和快速减少。到某个值k之后,减少的速度就大大下降了。在此,我们可以找到集群数量的最优值。K-MEANS补充相异度相异度就是两个东西差别有多大(例如用什么来说明人类与章鱼的相异度明显大于人类与黑猩猩的相异度)欧式距离,曼哈顿距离,闵科夫斯基距离什么叫聚类所谓聚类问题,就是给定一个元素集合D,其中每个元素具有n个可观察属性,使用某种算法将D划分成k个子集,要求每个子集内部的元素之间相异度尽可能低,而不同子集的元素相异度尽可能高。其中每个子集叫做一个簇。国足排序的案例缺随机森林降维算法GradientBoosting和AdaBoost算法

1 / 21
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功