机器学习教程 - 分步指南

机器学习教程 - 分步指南,第1张

机器学习教程 - 分步指南

机器学习 (ML)是技术领域最受关注的话题之一。如果你已经了解机器学习和相关技术的基础知识以及它的应用领域,本文将对这些知识进行补充。如果你还不熟悉机器学习,本教程中涵盖的基础知识会帮你快速上手。 文章较长,内容全面、实用,泡好茶,边喝边看。

目录

机器学习 vs. 无机器学习

搜索引擎 

语音和面部识别 

机器学习基础 - 在日常生活中使用机器学习

游戏世界中的虚拟现实 

网上购物 

通勤(滴滴)

什么是机器学习? 

机器学习的工作原理

机器学习的类型 

监督学习 

无监督学习

强化学习 

监督学习和无监督学习的比较

如何选择正确的机器学习解决方案?

机器学习基础算法 

分类 

回归

聚类

K-最近邻

线性回归

决策树

朴素贝叶斯 

案例分析

使用机器学习基础知识预测房价

对于此案例,我们应该使用哪种算法? 

案例数据变量

线性回归的工作原理

通过Python实现模型

总结


机器学习 vs. 无机器学习

对机器学习或人工智能不太了解的人听到这些词汇时可能只会想到机器人或机器,就像科幻电影里所描绘的那样。但是大多数人并不知道我们日常生活中使用的机器学习基础知识是多么常见,比如:

搜索引擎 

我们通常会使用搜索引擎来获取广泛的信息和答案,例如百度、谷歌。搜索引擎会根据我们的检索内容收集所有信息,并将最相关的结果展示出来。想想如果没有搜索引擎,我们的日子该有多难熬,为了解答一个问题需要浏览数十或数百本书籍或文章,寻求正解的热情瞬间要被浇灭。

语音和面部识别 

曾几何时,面部识别只是电影中展示的一个概念。但是机器学习使之成为可能,现在许多平台也在使用这个功能为我们谋福利。例如,Facebook 会自动识别照片中的人物并为我们标记出来,从而节省大量时间。如果没有机器学习,Siri、Cortana 或 Iris 将无法回答我们的问题。

机器学习基础 - 在日常生活中使用机器学习 游戏世界中的虚拟现实 

PS4 和 Xbox 推出了虚拟现实眼镜,把游戏带入全新的细节层面。我们的头部在现实世界中移动时,机器学习会对它进行复制然后在虚拟世界中做相应的移动,从而提升游戏体验。机器学习还发挥手势控制的作用,跟随身体运动在游戏中做出相应的动作。而在 FIFA 游戏中,对手往往会根据我们的策略或游戏玩法进行调整,这一切都归功于机器学习。

网上购物 

接下来要说的绝对是机器学习应用领域的一个燃点,那就是网购!有事儿没事儿就去京东、淘宝、唯品会中闲逛一圈的人都会注意到,每次我们点开购物界面,平台都会为我们推荐搭配产品。比如,我们购买了正装衬衫,淘宝会向我们推送搭配衬衫的鞋、领带、西装外套等。强大的推荐系统都要归功于机器学习。 

机器学习还在客户细分中发挥很大作用,这也是所有电子商务平台取得成功的关键所在。机器学习可帮助电子商务平台根据客户购买的产品、购买频率和评论来区分客户。这也帮助电商巨头们挖掘出客户的实际需求并能及时提供相应的产品和服务。

通勤(滴滴)

使用叫车服务的人对滴滴都不陌生,它的点点滴滴也都渗透着机器学习,例如: 

  • 建议下车和上车点:使用过滴滴软件后会看到,软件会根据我们之前的行程建议其它我们可能想去的地方。 
  • 拼车:选择拼车功能,我们就可以与沿途客户共享一辆车。滴滴会使用机器学习在车辆分配之前对各种因素进行分类,例如距离、交通和评级等。

现在我们已经了解了机器学习在日常生活中的用途,接下来让我们了解一下机器学习的基础知识。 

什么是机器学习? 

机器学习是人工智能的一种应用,它为系统提供了无需外部编程即可自行学习并从经验中不断改进的能力。如果计算机具有机器学习功能,它或许能帮我们成功拿下游戏中较为难过的一关,或者帮我们解决复杂的数学方程式。  

机器学习的工作原理

我们用一个简单的例子来解释一下机器学习。比如,手头有一个包含各种水果照片的数据包,我们希望系统根据水果的类型对数据进行分组。 

首先,系统要对输入的数据进行分析。接下来,它会尝试查找模式,例如形状、大小和颜色,然后基于这些模式,尝试预测不同类型的水果并将它们分开。最后,它会跟踪自己在此过程中做出的所有决定,以确保不间断地学习。下次我们用同一个系统预测、分离不同类型的水果时,它就不用再经历整个过程。这就是机器学习的工作原理。

机器学习的类型 

在谈论机器学习基础知识时,不得不提的是它由三种不同的类型组成:

  • 监督机器学习:训练机器独立工作的同时监督机器。这需要标记训练数据 。
  • 无监督学习:有训练数据,但不用标记。
  • 强化学习:系统自行学习 
监督学习 

要了解监督学习的工作原理,请看下面的示例,我们需要训练模型或系统来识别苹果。 

首先,提供一个包含某种水果(例如苹果)图片的数据集。 

然后,提供另一个数据集,让模型知道这些是苹果的图片。这样就完成了训练阶段。 

接下来,提供一组仅包含苹果图片的新数据。这时,系统可以识别它是什么水果并记住它。

这就是监督学习的工作原理。需要我们训练模型自行执行特定 *** 作。从电子邮件帐户中过滤垃圾邮件就使用这种模型。 

无监督学习

我们把不同水果的图片集合作为一个数据集,然后将这个数据集应用到模型中,模型会对数据进行分析以识别出不同类型。最后,机器根据照片的相似性将照片分为三类,如图所示。

强化学习 

你向机器提供数据集并要求它识别特定种类的水果(在本例中为苹果)。机器告诉你它是芒果,但那是错误的答案。作为反馈,你告诉系统它是错误的;不是芒果,是苹果。然后机器从反馈中学习并记住这一点。下次你问同样的问题时,系统会给你正确的答案;它能够告诉你这是一个苹果,这是强化反应。 

这就是强化学习的工作原理,系统从错误和经验中学习。该模型用于《波斯王子》、《刺客信条》和《FIFA》等游戏中,随着游戏的深入,难度也会随之增加。 

监督学习和无监督学习的比较

监督学习和无监督学习在几个方面有所不同:

首先,对监督学习中使用的数据进行标记。在上面显示的示例中,我们向系统提供了一张苹果的照片,并让系统知道这是一个苹果。这称为标记数据。系统从标记数据中学习并做出未来预测。另一方面,无监督学习不需要任何标记数据,因为它的工作是在输入数据中寻找模式并自己学习。

其次,在监督学习的情况下,我们会得到反馈。也就是说,一旦我们收到输出,系统就会记住它并将其用于下一个 *** 作。无监督学习不会发生这种情况。

最后,监督学习主要用于预测数据,而无监督学习则用于发现数据中隐藏的模式或结构。

 

如何选择正确的机器学习解决方案?

构建机器学习模型之前需要想好这个问题,因为合适的解决方案可以避免浪费大量时间、精力和处理成本甚至更多。

综合考虑以下因素会帮我们在监督学习、无监督学习和强化学习中选出正确的机器学习解决方案:

  1. 如果你要预测未来的股票市场价格,对于一个机器学习新手来说很难找到正确的解决方案。但是时间久了,实践多了,你会发现要解决这种问题最好的方案是使用监督学习。
  2. 数据的大小、质量和性质也是必不可少的考虑因素。如果数据杂乱,你可以选择无监督。如果数据集广泛且涵盖了不同分类,要选择监督学习解决方案。

机器学习基础算法 

算法不是机器学习的类型。用最直接的语言来说,它是解决特定问题的方法。 

分类 

第一种方法是分类,属于监督学习。当我们要查找的输出内容可以用 “是”或“否”,或以“a”或“b”或“真”或“假”的形式区分时,使用分类。 

例如,如果店主想要预测某个特定顾客会不会再到他的商店买东西,可以使用分类算法。分类算法的例子包括: 

  • 决策树 (Decision tree )
  • 朴素贝叶斯(Naïve Bayes)
  • 随机森林(Random forest)
  • 逻辑回归 (Logistic regression )
  • K-最近邻 (KNN)
回归

当预测数据为数值时使用此方法。如果店主想根据需求预测产品的价格,可以选择回归算法。

聚类

聚类是一种无监督学习,需要组织数据时可以使用。Flipkart、亚马逊和其他在线零售商在他们使用的推荐系统中就使用聚类算法。搜索引擎还使用聚类来分析用户的搜索历史,以确定用户的偏好并结合这些数据提供最佳搜索结果。K-means就属于一种聚类算法。 

下面我们来了解一下最常见的机器学习算法。

4 种最常见的机器学习算法

  • K-最近邻 
  • 线性回归 
  • 决策树 
  • 朴素贝叶斯
K-最近邻

K-最近邻是一种分类算法,其中相似的数据点形成集群,这些集群用于识别新的、未知的对象。在下图中,有三个不同的集群:蓝色、红色和绿色。 

如果你得到一个新的未知数据点,它会根据离它最近或与它最相似的集群进行分类。KNN 中的 K 是我们希望与未知数据进行比较的最近相邻数据点的数量。让我们来看看下边这个例子:

耐用性成本图中包含三个集群:足球、网球和篮球。从图中我们可以推断出:

  • 足球成本高,耐用度低
  • 网球成本低,耐用度高 
  • 篮球的成本与耐用性一样高

假设一个未知数据点:一个黑点,它可以是球的一种分类。

我们尝试使用 KNN 对黑点进行分类。如果取 k=5,则画一个圆,将未知数据点保留在中心,并确保该圆内有五个球。 

画一个圆圈后,里面有一个足球、一个篮球和三个网球。由于圆圈内数量最多的是网球,因此黑点将被归类为网球。这就是k-最近邻分类的完成方式。

线性回归

线性回归是一种监督学习算法,用于在变量之间建立线性关系,其中一个是相关的,另一个是独立的。如果你想根据一个人的身高来预测他的体重,那么体重就是因变量,而身高是独立的。

比如下面这个例子:

下图是显示一个人的身高和体重之间关系的图表。y 轴代表身高,x 轴代表体重。绿点是各种数据点,“d”是均方误差,即直线到数据点的垂直距离,或误差值。该误差值描述了预测值与原始值的差异程度。 

现在,忽略蓝线,让我们画一条新的回归线。你可以看到所有数据点到新线的距离。如果将新线作为回归线,预测的误差会太大。在这种情况下,模型将无法为您提供准确的预测。 

让我们用另一条回归线来演示,如下所示。即使在这种情况下,数据点与线的垂直距离也非常高,这意味着误差值仍然太高。该模型也不会为你提供准确的预测。 

最后,我们绘制一条线(蓝线)来映射数据点与线之间的距离,与之前绘制的其他两条线相比,该距离要小得多。蓝色回归线的“d”值将小得多,因此更准确。如果我们为 x 轴分配任意值,则 y 轴的相应值即为我们的预测。鉴于“d”非常低,我们的预测应该是准确的。 

这就是回归的工作原理;以“d”的值最小的方式绘制回归线,最终为我们提供准确的预测。 

决策树

决策树是一种可以关联的算法,我们通常也是用这种方式做出决策。决策树使用分支方法来理解问题并根据条件做出决策。

想象一下,坐在家里,忽然想着去游泳。你下意识地向窗外望去,看看天气是否晴朗:这是你的第一个条件。如果该条件的答案是“是”,你就去游泳。如果不是晴天,你问的下一个问题是:“下雨了吗?” 这是第二个条件。如果下雨,你会取消游泳计划呆在家里。否则,你会出去走走。这就是最终节点。 

这就是决策树算法的工作原理。我们可能每天都用它来根据多个条件做出决定。

朴素贝叶斯 

朴素贝叶斯主要用于需要基于大数据集进行预测的情况。它利用了条件概率——一个事件的概率,比如“A”,在另一个事件“B”已经发生的情况下而发生的概率。

示例 1:过滤垃圾邮件 

此算法最常用于过滤电子邮件帐户中的垃圾邮件。 

当我们收到一封电子邮件时,该模型会检查旧垃圾邮件记录。然后,它使用贝叶斯定理来预测传入的电子邮件是否是垃圾邮件。

P (C/A) 是当“A”已经发生时事件“C”发生的概率。 

P (A/C) 是当“C”已经发生时事件“A”发生的概率。 

P(C) 是事件“C”发生的概率。 

P(A) 是事件“A”发生的概率。

示例 2:预测一场板球比赛 

在另一个示例中,我们用朴素贝叶斯来确定打板球的日子。根据一天下雨、刮风或晴天的概率,该模型会告诉告诉我们当天是否可以进行板球比赛。如果我们将所有天气条件视为“事件 A”,而比赛可能发生的概率为“事件 C”,则该模型将事件 A 和 C 的概率应用到贝叶斯定理中,并预测板球比赛是否能在特定的一天进行。在这种情况下,如果 C/A 的概率大于 0.5,则可以玩板球游戏。如果它小于 0.5,游戏就玩不成了。

案例分析 使用机器学习基础知识预测房价

在这个例子中,一个人计划出售他的房子,但无法决定售价。

问题陈述 - “使用机器学习基础知识预测房子的价格,用 Python 实现。” 

对于此案例,我们应该使用哪种算法? 

对于这个问题,我们使用线性回归,这是一种监督学习方法。与其他算法相比,线性回归更为合适,因为:  

  • 输出是定量的并且与变量成正比。如前所述,如果预测是定量的,线性回归是最好的选择。
  • 第二个原因是计算成本低。如果使用一种涉及到大量方程求解的算法,那我们需要配置一个强大的系统,而这么做无疑会增加成本。但是,线性回归就不一样了,这是一种非常简单的算法,可以在任何普通系统中完成。
  • 最后,线性回归很容易理解。
案例数据变量

数据集具有以下特征,我们需要综合考虑这些因素然后预测房屋的价格: 

  • 该地区人口情况
  • 该地区所有房屋的平均价格
  • 家庭人口年龄
  • 税率
  • 每套房的平均房间数
  • 与五个波士顿公司之间的距离
  • 能不能走高速
  • 人均犯罪率 
线性回归的工作原理

这是线性回归的工作原理: 

我们为模型(计算机)提供训练数据(所有特征/数据变量),从而训练模型进行学习。然后,为模型提供测试数据,即它需要预测的特定值。从获得的训练数据中,它就能够预测出房屋的价格。 

通过Python实现模型

要在 Python 上实现整个模型,我们使用: 

  • 运行代码的 Jupyter Notebook
  • 通过Scikit-learn 加载所有数据和库。Scikit-learn 是一个专门用于机器学习的库,如果你正在使用 Python 编程 
  1. 首先从 scikit-learn 导入模型所需的库。 

首先是 NumPy,它支持大型数组,以及我们稍后会在这个案例中使用的矩阵。 

然后是 Pandas,一个容易处理关系数据的包。

接下来是我们会用到的回归模型。 

为了检查模型的准确性,我们导入了训练测试拆分。 

现在按 Shift + Enter 运行单元格。

2. 从 scikit-learn 加载波士顿数据集 

按 Shift + Enter 运行单元格。

3.查看数据集 

输入“boston”并按回车键,就能看到整个数据集。 

4.将数据分成两个不同的数据框 

这时就需要 Pandas 库发挥作用了。所有目标值都将加载到 df_y 数据框中。运行单元格。 

5. 描述数据

此表为我们提供每个特征的计数、每个特征的平均值和标准偏差。  

6. 应用线性回归 

按 shift + enter 

7. 将数据拆分为训练和测试数据以验证模型 

注意:大小等于 0.2,这意味着 20% 是测试数据,其余是训练数据。在多次运行和验证模型时需要随机状态。

8. 将数据拟合到回归函数中

按 Shift+Enter

我们可以看到数据集适合之前调用的函数(我们插图中的第 14 行)。  

9. 检查系数

按 Shift+Enter,会得到这个输出

这些系数让我们知道如果自变量值增加 1,因变量会增加多少。例如,采用直线方程,假设回归直线 y= mx+c,在这种情况下,C 是常数,M 是系数。

10. 预测价格 

变量“a”是预测价格。它将根据数组预测价格。按 Shift+Enter。 

接下来,输入阵列编号。括号中的数字(下图中的第 19 行)指定数组编号。在这个例子中,数组是三个。按回车后,返回的数组值为18.15。接下来,检查测试数据以确认数组3 的值。在这种情况下,它是 19.3。可以看到预测值和原始值变化不大;预测相当不错。 

让我们测试另一个数组,在本例中,我们将使用数字 5。在测试表中,数组编号为 24.2,预测编号为 25.4。预测仍然很完美,所以模型运行良好。 

11.找出错误 

变量“a”是预测值,“y”是测试值。由此我们可以得出误差。如果对这个值进行平方,就会得到均方误差。

按 Shift+Enter 得出显示值。从该图中看出,均方误差值为 25.4。 

至此,我们就成功创建了一个线性回归模型。如果对数据进行处理,那么在预测中得到的误差值可以得到改善。均方误差越小,我们得到的预测就越准确。 

总结

希望这篇机器学习教程文章对你有所帮助。多加练习,你会熟练应用监督、无监督和强化机器学习方法,对不同类型的数据进行预测。如果你想成为一名机器学习工程师,就必须要掌握这些方法。做一个有规划的人,学习一些有真材实料的机器学习课程,这才是为自己做的最好投资。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5659861.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存