假设有一些与数据相关的难题需要您解决。您之前听说过机器学习算法的强大之处,因此您想借此机会亲自尝试一下——但您没有该领域的经验或知识。所以你开始谷歌搜索“机器学习模型”和“机器学习方法”等术语,但过了一段时间你发现自己完全迷失在不同的算法之间,于是你开始放弃。坚持就是胜利!幸运的是,我将在本文中介绍三种主要的机器学习算法。了解了这些之后,相信对于大多数数据科学问题,你都可以自信解决。在接下来的文章中,我们将讨论决策树、聚类算法和回归,指出它们之间的区别,并找出如何为不同的情况选择最合适的模型。监督学习VS无监督学习理解机器学习的基础是如何划分监督学习和无监督学习两大类,因为机器学习中的任何问题归根结底都是这两类问题。之一。在监督学习的情况下,我们有某些算法作为输入的数据集。前提是我们已经知道正确的输出格式应该是什么样的(假设输入和输出之间存在某种关系)。我们后面会看到的回归和分类问题就属于这一类。另一方面,无监督学习适用于我们不确定或不知道正确输出应该是什么样子的情况。事实上,我们需要根据数据推导出正确的结构应该是什么样子。聚类问题是这一类的主要代表。为了使上述分类更加清晰,我将列举一些现实世界中的问题并尝试对其进行分类。示例1假设您经营一家房地产公司。考虑到新房子的特点,你想根据之前记录的其他房子的销量,预测这套房子的售价应该是多少。输入数据集包含多个房屋特征,例如浴室的数量和大小,以及您要预测的变量,通常称为目标变量,在本例中为价格。由于我们已经知道数据集中房屋的销售价格,因此这是一个监督学习问题,更具体地说,是一个回归问题。示例2假设您做了一个实验,根据某些身体测量值和遗传因素来推断某人是否会近视。在这种情况下,输入数据集由人类医学特征组成,目标变量是双重的:1代表可能患近视的人,0代表不会成为近视的人。由于参与者的目标变量值是提前知道的(即您已经知道他们是否近视),这又是一个监督学习问题——更具体地说,是一个分类问题。示例3假设您负责的公司有很多客户。根据他们最近与公司互动的结果、最近的购买以及他们的人口统计数据,您希望将相似的客户归为一组并区别对待他们——例如,通过向他们提供独家折扣券。在这种情况下,上面提到的一些特征将被用作算法的输入,算法将决定应有的客户群的数量或类型。这是无监督学习最典型的例子,因为我们事先并不知道输出应该是什么。话虽如此,现在是履行我的诺言并介绍一些更具体的算法的时候了……回归首先,回归不是一种单一的监督学习技术,而是许多技术都属于的一个完整类别。回归的主要思想是给定一些输入变量,我们要预测目标变量的值会是什么。在回归的情况下,目标变量是连续的——这意味着它可以在指定范围内取任意值。另一方面,输入变量可以是离散的或连续的。在回归技术中,最广为人知的是线性回归和逻辑回归。让我们仔细看看这项研究。线性回归在线性回归中,我们试图建立输入变量和目标变量之间的关系,这种关系用一条直线表示,通常称为回归线。例如,假设我们有两个输入变量X1和X2以及一个目标变量Y,这个关系可以用数学表示:Y=a*X1+b*X2+c假设已经提供了X1和X2的值,我们的目标是调整a、b、c三个参数,使Y尽可能接近实际值。花点时间讲个例子吧!假设我们已经有了鸢尾花数据集,其中已经包含不同类型花朵的萼片和花瓣大小数据,例如:Setosa、Versicolor和Virginica。使用R软件,我们需要实施线性回归来预测萼片的长度,假设已提供花瓣的宽度和长度。在数学上,我们会通过以下关系得到a和b的值:SepalLength=a*PetalWidth+b*PetalLength+c对应的代码如下:#Loadrequiredpackageslibrary(ggplot2)#Loadirisdatasetdata(iris)#Havealookatthefirst10observationsofthedatasethead(iris)#Fittheressionlinefitted_model<-lm(Sepal.Length~Petal.Width+Petal.Length,data=iris)#Getdetailsabouttheparametersofttheselectedmodelsummary(fitted_model)#Plotthedatapointsalongtheregressionlineggplot(iris,aes(x=Petal.Width,y=Petal.Length,color=物种))+geom_point(alpha=6/10)+stat_smooth(method="lm",fill="blue",colour="grey50",size=0.5,alpha=0.1)线性回归结果如图下面,黑点表示初始数据点在蓝线上拟合回归线,所以有估计结果,a=-0.31955,b=0.54178,c=4.19058。这个结果可能是最接近实际情况的,也就是花萼的长度。从现在开始,我们还可以通过将花瓣长度和花瓣宽度的值应用于定义的线性关系来预测出现的新数据点的长度。逻辑回归的主要思想与线性回归完全相同。最大的区别是回归线不再是直的。相反,我们试图建立的数学关系类似于以下内容:Y=g(a*X1+b*X2)其中g()是逻辑函数。由于逻辑函数的性质,Y是连续的,在[0,1]范围内,可以理解为事件发生的概率。我知道你喜欢例子,所以我再给你看一个!这次,我们将在mtcars数据集上进行实验,其中包括油耗和汽车设计的10个方面,以及1973-1974年生产的32辆汽车的性能。使用R,我们将根据V/S和英里/(美国)加仑的测量结果预测自动变速器(am=0)或手动变速器(am=1)的汽车的概率。am=g(a*mpg+b*vs+c):#Loadrequiredpackageslibrary(ggplot2)#Loaddatadata(mtcars)#Keepasubsetofthedatafeaturesthatincludeonthemeasurementweareinterestedincars<-子集(mtcars,select=c(mpg,am,vs))#Fitthelogisticregressionlinefitted_model<-glm(am~mpg+vs,data=cars,family=binomial(link="logit"))#Plottheresultsggplot(cars,aes(x=mpg,y=vs,colour=am))+geom_point(alpha=6/10)+stat_smooth(method="glm",fill="blue",colour="grey50",size=0.5,alpha=0.1,method.args=list(family="binomial"))结果如下图,其中黑色圆点代表数据集的初始点,蓝色线代表拟合逻辑回归线为a=0.5359,b=-2.7957,c=-9.9183。如前所述,我们可以观察到由于回归线的形式,逻辑回归输出值仅在[0,1]范围内。对于以V/S和英里/(美国)加仑为单位的任何新车,我们现在可以预测该车配备自动变速器的概率。决策树决策树是我们要研究的第二种机器学习算法。决策树最终分裂为回归树和分类树,因此它们可用于监督学习问题。诚然,决策树是最直观的算法之一,它们模仿人们在大多数情况下的决策方式。他们所做的基本上是绘制所有可能路径的“地图”,并在每种情况下绘制相应的结果。图形表示将有助于更好地理解我们在说什么。基于这样一棵树,算法可以根据相应的标准值来决定每一步要走哪条路径。算法在每个级别选择分割标准和相应阈值的方式取决于候选变量对目标变量的信息量,以及哪种设置可以最大限度地减少所产生的预测误差。这里还有一个例子!这次讨论的数据集是readingSkills。它包括学生的考试成绩和成绩。我们将根据各种指标将学生分为母语为英语的人(nativeSpeaker=1)或外国人(nativeSpeaker=0),包括他们的考试成绩、鞋码和年龄。对于R中的实现,我们首先需要安装party包。#Includererequiredpackageslibrary(party)library(partykit)#Havealookatthefirsttenobservationsofthedatasetprint(head(readingSkills))input.dat<-readingSkills[c(1:105),]#Growthedecisiontreeoutput.tree<-ctree(nativeSpeaker~age+shoeSize+score,数据=input.dat)#Plottheresultsplot(as.simpleparty(output.tree))我们可以看到,首先使用的分裂标准是分数,因为它对预测目标变量非常重要,而没有考虑鞋码,因为它不不提供有关该语言的任何有用信息。现在,如果我们有一个新学生,并且知道他们的年龄和成绩,我们就可以预测他们是否是母语人士!聚类算法到目前为止,我们只讨论了一些关于监督学习的事情。现在,我们继续讨论聚类算法,它是无监督学习方法的一个子集。所以,稍微修改一下......对于聚类,如果有一些初始数据要支配,我们希望形成组,使得一些组的数据点与其他组的数据点相似和不同。我们要学习的算法称为k-means,其中k是生成的聚类数,它是最流行的聚类方法之一。还记得我们之前使用的Iris数据集吗?我们将再次使用它。在研究中,我们使用花瓣度量方法绘制了数据集的所有数据点,如下图所示:基于花瓣度量,我们将使用3均值聚类方法将数据点聚类为3组。那么3均值或k均值算法是如何工作的呢?整个过程可以概括为几个简单的步骤:初始化步骤:对于k=3个簇,算法为每个簇中心点随机选择3个点。聚类分配步骤:算法遍历剩余的数据点并将每个数据点分配给最近的聚类。质心移动步骤:聚类分配后,将每个聚类的中心点移动到属于该聚类的所有点的平均值。步骤2和3重复多次,直到集群分配没有变化。k-means算法在R中的实现非常简单,可以用下面的代码实现:#Loadrequiredpackageslibrary(ggplot2)library(datasets)#Loaddatadata(iris)#Setseedtomakeresultsreproducibleset.seed(20)#Implementk-meanswith3clustersiris_cl<-kmeans(iris[,3:4],3,nstart=20)iris_cl$cluster<-as.factor(iris_cl$cluster)#Plotpointcoloredbypredictedclusterggplot(iris,aes(Petal.Length,Petal.Width,color=iris_cl$cluster))+geom_point()from从结果可以看出,该算法将数据分为三组,分别用三种不同的颜色表示。我们还可以观察到这些簇是根据花瓣的大小形成的。更具体地说,红色表示花瓣较小,绿色表示花瓣较大,蓝色表示花瓣中等。值得注意的是,在任何聚类中,对形成的组的解释都需要该领域的一些专家知识。在我们的示例中,如果您不是植物学家,您可能没有意识到k-means所做的是将鸢尾聚合成不同的类型,例如Setosa、Versicolor和Virginica,而对它们一无所知!因此,如果我们再次绘制数据,这次按物种着色,我们将看到集群中的相似性。总结我们从一开始就走了很长一段路。我们讨论了回归(线性和逻辑)和决策树,最后是k-means聚类。我们也在R中实现了一些简单但强大的方法。那么,每种算法的优点是什么?在现实生活中,你应该选择哪一个?首先,提出的方法不是一些不合适的算法——它们在全世界的生产系统中被广泛使用,所以你需要根据不同的任务来选择,如果你选对了,它会变得相当强大。其次,为了回答上面的问题,你必须清楚你所说的优势是什么意思,因为每种方法在不同的环境中表现出不同的优势,比如可解释性、鲁棒性、计算时间等。现在,我们终于可以自信地应用这个了一些实际问题的知识!
