沙善人员Prasanna,MathWorks公司
机器学习无处不在。从医疗诊断、语音、手写识别到自动交易和电影推荐,机器学习技术每时每刻都被用于做出重要的商业和生活决策。每个机器学习问题都是独特的,因此管理原始数据、识别影响模型的关键特性、培训多个模型和执行模型评估都是很有挑战性的。
在这节课中,我们将探讨使用MATLAB进行机器学习的基本原理。通过几个例子,我们回顾了监督学习(分类)和非监督学习(集群)的典型工作流。
亮点包括
的主持人字体Shashank Prasanna是MathWorks的产品营销经理,他的工作重点是MATLAB和用于统计、机器学习和数据分析的附加产品。下载188bet金宝搏在加入MathWorks之前,Shashank在甲骨文从事软件设计和开发工作。Shashank拥有亚利桑那州立大学电气工程硕士学位。
您好,欢迎机器学习变得容易。我的名字是沙善人员Prasanna。我在MathWorks公司的统计和机器学习产品的产品经理。下载188bet金宝搏
下面是今天的演讲其余议程。我会用什么机器学习是一种高层次的概述开始,为什么你可能要考虑它。然后,我们会看到在机器学习的一些关键挑战。
接下来,我将通过解决一个涉及真实数据的有趣问题来更深入地研究机器学习。为了解决这个问题,我将介绍一个通常用于解决机器学习问题的典型工作流。然后,我们将讨论另一个涉及图像数据的有趣示例。我将向您展示一个使用网络摄像头视频来识别对象的现场演示。我们将用一个总结和一些关于何时考虑机器学习的指导来结束这个会议。
由于这是一个简单的主题,所以没有先决条件。基本熟悉MATLAB是有帮助的,但不是必需的。机器学习无处不在。这些技术越来越多地用于当今世界的关键业务和生活决策。今天,有了机器学习,我们能够解决汽车、金融、计算机视觉和其他几个以前认为不可能解决的领域的问题。
那么什么是机器学习呢?让我们花一分钟快速复习一下机器学习的高级概念。即使您熟悉这个主题,这也可以作为一个快速提醒,告诉您什么时候进行机器学习是真正有用的。
我们可以将机器学习定义为一种使用数据并生成程序来执行任务的技术。让我用一个例子来解释一下。考虑一个任务,其中涉及到使用来自移动电话的传感器数据来检测一个人的活动;例如,如果这个人在走路,坐着,站着,等等。解决这类任务的标准方法是,要么分析信号,用一组精心设计的规则写下一个程序,要么你可能预先知道一组使用输入和预测输出的方程或公式。
机器学习方法是直接从数据中学习这样一个程序。在这种情况下,我们为算法提供输入和输出数据,并让它学习解决这个任务的程序。这一步通常被称为训练。输出是一个模型,现在可以用来检测来自新传感器数据的活动。
请注意,我没有明确地提到特定的机器学习算法,因为有大量的算法可供选择,每种算法都有自己的优缺点。当我们详细讨论这个特殊的例子时,我们会看到这一点。如果有两件事我想让你们从这张幻灯片中了解,那就是,第一,你们需要数据。如果你没有数据,你就无法进行机器学习。这是一个强有力的要求。
第二,只有在任务复杂的时候才考虑机器学习,而且没有神奇的方程或公式来解决它。如果你有一个公式,你可以去实现它。机器学习是可行的,但在这种情况下不推荐使用这种方法。
让我们用MATLAB来看看机器学习方法是什么样的。我们正在处理的数据包括6个输入,3个来自加速度计,3个来自移动电话的陀螺仪。响应或输出是执行的活动。这些包括走路、站立、跑步、爬楼梯和躺着。
这是分类学习。这是一个互动的工具,可以让您执行常见的机器学习任务,如交互式探索您的数据,选择功能,指定验证方案,培训模式,并评估结果。在我离开这里,我已经被训练的传感器数据几个不同的机器学习模型。紧挨着每个模型是一个百分比数字,指示所选择的分类器的一个单独的验证集的精确度。我可以用可视化的就在这里探索我的数据,以寻找模式和趋势。
训练一个新模型很容易。我简单地导航到分类器库,选择一个感兴趣的分类器,然后点击Train。一旦训练完成,您可以在历史记录列表中看到新模型以及模型的性能准确性。这个数字越大,模型对新数据的执行就越好。我将选择性能最好的模型,然后单击Export开始在MATLAB中使用我的模型,我可以看到导出的模型就在工作区中。
我现在想使用这个模型,用一些测试数据一起,可视化模型的预测结果。这是一个阴谋昭示着两个流媒体加速计和陀螺仪数据的一半秒。绿色条这里的顶部显示实际活动的人被执行相应感应信号就在这里。底部栏为绿色,如果该模型能够成功地预测人的实际活动,如果是,如果它不能预测实际活动是红色的。你看,模型常常会行走和爬楼梯之间的混淆。
让我们快速回顾一下我们刚刚实现的。我们用数据来使用分类学习适应几种不同的模式。然后,我们选择了一个显示效果不错,而且我们测试它,以确保它在做什么,它应该。这似乎很简单,所以为什么机器学习有这么硬的声誉?
为了回答这个问题,我想引用一位著名统计学家的话,他曾在一本教科书中写道:“所有的模型都是错误的,但有些模型是有用的。”Why? Because models are approximations. Not just machine learning models—all models are approximations based on several assumptions, but that doesn't make them any less useful. Machine learning models can explain complex patterns in data, but to apply machine learning successfully, you need to find useful models, and that can be a challenging task.
实际上,在机器学习工作流程的每个步骤中都存在多个挑战。数据有各种形状和大小。它可以是简单的数字数据,例如来自财务数据或传感器信号,也可以是来自摄像机或文本数据的流式图像。真实世界的数据集通常是混乱的,并不总是表格式的。
预处理数据需要特定于领域的算法和工具。例如,信号或图像处理算法需要从信号和图像数据中提取有用的特征。特征选择和特征转换需要统计算法。我们经常需要来自多个领域的工具,而且在使用多个机器学习算法时,寻找最佳模型可能是一项艰巨而耗时的任务。
在它的心脏,选择最好的机器学习模型是一个平衡的行为。高度灵活的模型可能是准确的,但也可能过度拟合您的数据和新的数据表现不佳。在另一个极端,简单的模型可以假定太多的数据。总有速度,精度和模型复杂度之间的权衡。
最后,机器学习的工作流程是从来没有一个方便的线性工作流程。我们总是不停得来回走,迭代,并尝试不同的想法之前,我们会聚到一个解决方案。我今天的目标:为您介绍一套通用的工具和策略来应对这些挑战。
这里有一个简单的两步流程,我们愿意在解决机器学习任务跟踪。第一步是培养你的模型。我们通过引进一个数据,这将来自各种不同的来源,如数据库,流媒体设备,等等开始。接下来,我们预处理使用特征提取或其他统计工具的数据。这一步很关键,以你的数据转换为一种格式,机器学习算法可以工作。
在那之后,我们准备从数据中学习。如果任务是预测标签或类别,我们选择的分类方法。如果任务是预测连续的值,然后我们选择回归方法,然后我们继续前进,建立一个模型。这当然是一个需要来回的预处理步骤,尝试不同的机器学习算法,调整不同的参数,等等一个反复的过程。
这个工作流程的第二步是实际使用模型,所以在左边,我有新的数据,并在右边,我需要做出预测。那么,我们需要从数据去预测?首先,我们需要使用所有新数据的预处理步骤,所以没有这里涉及额外的工作。我们只是重复使用我们都在训练阶段所花费的心血。
接下来,我们使用训练阶段的模型进行预测。对于一些工程问题,第二步通常部署或集成到生产环境中,例如,部署到使用机器学习执行自动特征的服务器上。现在让我们使用这个工作流在MATLAB中完成一个示例。
这个例子的目标是训练一个分类器来自动识别基于传感器测量的人类活动。数据由6个输入组成,3个来自加速度计,3个来自陀螺仪。输出的响应是执行的活动:步行、站立、跑步、爬楼梯和铺设。
我们将采取的方法如下。首先,我们要提取传感器的信号基本特征。然后,我们将使用分类学习培训和比较几种不同的分类,并最终测试上看不见的传感器数据的结果。
这是MATLAB。我们将从当前文件夹窗口开始。由于工作流程的第一步是引入数据,所以我将加载一些原始传感器数据,这些数据存在一个MAT文件中。要导入这些数据,我所要做的就是将其拖放到workspace窗口中。workspace窗口可以帮助您跟踪MATLAB中的所有变量,无论它们是现有的变量还是我们在前进过程中创建的新变量。
我的数据由7个变量。前六个是感觉输入变量,三为陀螺仪和三个加速计的x,y和z。最后一个变量,TrainActivity,包含用于传感器测量的每个观测活性标签。通知所有的变量具有约7,000意见。让我们来看看有哪些个人感觉输的样子。
如果我绘制x轴陀螺仪数据的单行,我们看到它有大约128点。现在,这是该数据表示。传感器数据经常收集和固定窗的帧。每一行,具有128点的读数,对应于两个和传感器数据的一半秒。
现在,这些数据的形式还不能用于机器学习。我必须首先处理所有这些输入来提取这128个点或2。5秒窗口的特征,我必须对所有6个传感器输入都这样做。但是在我们开始特征提取之前,让我们先看看原始传感器数据是什么样子的。
我这里有一个自定义图表,其显示了三个加速度传感器的原始数据,他们有相应的人被执行活动不同的颜色。在MATLAB情节是相当的互动。我可以放大,看看是否有任何视觉模式或者有趋势,可以帮助我们确定的人的活动。
快速一瞥,我们可以看到每个颜色的传感器值看起来都不一样。例如,这里代表爬楼梯的橙色值与代表站着的紫色值有很大的不同。然而,与此同时,很难在视觉上区分行走和攀登,因为两者都涉及大量的动作。诸如此类的问题是机器学习的良好候选,因为我们并不总是能够为这些活动定义规则。
在我们开始与特征提取步骤,我要这6个传感器输入创建一个表。表是用于保持混合类型的数据,这是在机器学习共同优良工具。在这个例子中,我们有传感器测量,这是数字,和标签它们是分类值。
我现在在我的工作区一个表变量,它包含了所有六个独立传感器的变量。使用表机器学习的另一个优点是,我可以将单个的特征提取功能,所有的变量在此表的一行代码。我所要做的就是打电话VarFun,代表变量功能,并通过我的特征提取功能。WMean这里是计算在传感器变量的每一行的平均值的函数。在这种情况下,我计算两个和一个半第二传感器值的帧的平均。
WMean是我当前文件夹的浏览器功能,并且你可以看到,这是一个相当简单的功能。但是,这取决于你的应用程序,并要提取的特征,这可能是因为复杂的,都可以。除了均值,我想提取其他两个特征,也就是对于每个帧的标准偏差,和PCA,它代表主成分分析,我想只保留第一主成分。由于表可以容纳混合型数据,我打算将标签分配活动在表一个新的变量称为活动。
让我们运行这个部分,看看人工活动数据表是什么样子的。总共有19列,前6列对应于框架的平均值。接下来的6个是帧的标准偏差,最后的6个是PCA输出。我的最后一栏是与每个观察相对应的活动,可以是躺着,坐着,爬楼梯,站着,或者走路。
现在我们已经准备好了数据,让我们移动分类学习器来训练我们的模型。分类学习器是统计和机器学习工具箱的一部分,您可以通过在MATLAB命令行中键入分类学习器来启动它。或者您可以在AppStat的MAT Statistics和Optimization下找到它。
我们首先从MATLAB工作空间导入数据。在import对话框的第一步中,我们从MATLAB工作空间中选择数据集。在第二步中,请注意,应用程序会自动选择某个变量是预测器还是响应。
应用程序根据数据类型决定。但是,您也可以选择更改其角色或完全删除该变量。现在,我们让它保持原样。
在第三步,我们可以选择我们的验证方法。验证防止类似的过度拟合问题。选择交叉验证,当你有一个规模相对较小的数据集,因为它有效地利用所有的数据。选择持币观望,如果你有足够的数据。
我要去,因为我们有很多的数据点来选择此选项对我们的问题。退房率设置我保留20%指示该应用使用训练数据的80%和20%的模型性能的验证。通常不建议使用的最后一个选项。由于所有的数据被用于训练和测试,这导致了模型的准确性的偏估计。
分类学习者与许多不同的窗口和组件的相当互动的环境,我保证我们将通过他们每一个人,当他们成为相关。在顶部显示工具条左到右的工作流程全部由导入数据到导出模型的方式。在这里的中心是响应变量进行分组配对散点图。
此图可用于寻找模式非常有用。例如,这对预测的,我们注意到,铺设似乎也从活动的其余部分分开。还坐在似乎很好地分离,但是有一些重叠。在工具条的功能选择选项允许您从模型中排除的预测。在这个例子中,因为我们没有太多的预测,我们要离开这个,因为它是。
在解决分类问题时,没有一种放之四海而皆准的方法。不同的分类器最适合不同类型的数据和问题。分类学习器允许您从决策树、支持向量机、最近邻和集成分类器中进行选择,对于每种分类器类型,都有一些预置,它们是解决一系列分金宝app类问题的最佳起点。如果您不确定要选择哪一个,弹出工具提示将为您提供分类器的简要描述。
使用MATLAB时,帮助总是只需单击一下鼠标。要获得进一步的帮助,只需点击右上角的问号,这将打开该应用程序的文档。您将在这里找到有关该应用程序的所有信息。现在,让我们进入下面的小节,该小节提供了选择分类器的指导。
这里有一个很好的表,根据您想要做出的权衡,它可以指导您选择哪个分类器。例如,决策树的拟合速度很快,但具有中等的预测精度。另一方面,最近邻对于较小的问题有较高的预测精度,但也有较高的内存使用量。让我们使用文档中的这个技巧,首先从决策树开始。
训练模式很容易。只需选择从画廊和命中火车预设,这将在模型历史中产生的火车模型,其预测精度一起。让我们也培养中等树和复杂的树。该模型表现最好的验证集总是由一个绿色方框所示。
除了预测准确率,但是也有一些其他有用的诊断工具。混淆矩阵是一个伟大的工具,它可以告诉你一个分类广告的效果如何快速浏览,所以你这是怎么读混淆矩阵。对角线上的东西是正确分类。任何关对角线已经被错误分类。一个完美的分类会对对角线100%和0%,其他任何地方。
让我们在一个活动定睛一看:爬楼梯。阅读这个问题的方法是时间89.1%,模型成功预测了活动。然而,时间的10.9%,该模型认为爬楼梯走,或者换句话说,该模型误判爬楼梯如散步。我们可以在现代历史上不同型号之间随时切换到比较混淆矩阵。
另一个可用的诊断工具是自动C曲线。自动C曲线用于描述二元分类器的灵敏度。曲线的形状显示了敏感性和特异性之间的权衡。当我们向上和向右移动时,我们增加了真阳性的机会,但也增加了假阳性的机会。
在我看来,使用应用程序而不是编写代码的最大优势之一是能够训练多个模型。除了决策树之外,我现在还要训练最近邻分类器,因为我知道它们训练起来很快,预测起来也很快。当训练多个模型时,您不必局限于这些预设。
如果你是高级用户,你可以随时调出高级弹出来调整分类参数。这些变化也显示为了方便模型历史。我们现在有大约八款左右,在模型的历史,我训练都掌握在几秒钟之内,而无需编写的MATLAB一行代码。
有些情况下,您可以导出分析两种模式。您可以导出模型直接进入MATLAB,或者你可以选择生成MATLAB代码,可以让你自动完成所有我们采取了在建立这个模型,而无需编写任何代码的步骤。让我选择此选项,告诉你什么是生成的代码是什么样子。
我在这里的MATLAB是一种良好注释,完全自动生成MATLAB代码。我们还可以看到由代码捕获的工作流程的不同步骤。例如,提取的预测和响应,使用KNN分类训练分类,并设置一个持币观望的验证等等。您可以随时自定义生成的代码将它集成到您的应用程序。
让我们回到分类学习器并导出一个模型,我们可以看到该模型现在可以在MATLAB工作空间中使用。我们现在准备在新数据上测试模型。首先,我们从MAT文件中加载一些新的传感器数据。然后应用与前面相同的特征提取步骤。然后我们使用导出的模型对这个新的传感器数据进行测试。
正如我们前面所看到的,上面绿色条显示的是实际活动的人在表演,底部绿色条,当模型成功地检测活动。如果它犯错是红色的。如果你想尝试一种新的模式,你可以简单地回去分类学习者和直接导出模型或生成MATLAB代码和培训新模式与新的数据来预测。
让我们快速浏览一下我们的工作流程来总结一下,我们只是做了。我们的训练数据是从移动电话传感器获得的传感器信号。我们应用基础前处理技术来提取比如平均标准偏差和PCA功能。然后,我们使用的分类学习应用基础上,抵抗验证精度在我们最好的模式到达。
对于新数据的预测中,我们采用新的数据相同的前处理步骤,然后我们使用训练模型进行预测,然后可视化的结果。让我们通过一个实例,在我们训练机器使用的图像数据学习的楷模。这个例子的目的是训练分类从网络摄像头视频自动检测汽车。该数据由四个不同的玩具汽车的几个图像。输出的响应是这四个车的标签。
我们将采取的方法如下。首先,我们将使用一种称为单词袋的技术从这些图像中提取特征。然后我们使用这些特征来训练和分类几个不同的分类器使用分类学习者。最后——这是有趣的部分——我们将看到一个我们训练的模型的现场演示,通过我办公室的网络摄像头实时识别汽车。
我们转到MATLAB。我要清理一下我的工作空间,重新开始。让我们看看我们的数据。这里有一堆图像和文件夹,每个文件夹名都是该文件夹中图像集的标签。让我们来看看MATLAB之外的图像是什么样的。
这里有一组沙丘的图片是从不同的角度和不同的光照条件下拍摄的,我有几张这四辆车的图片。在处理图像时,在循环中加载所有的图像并跟踪所有的文件和文件夹以及标签可能是痛苦的。计算机视觉系统工具箱中有图像集等方便的工具,使这一任务变得容易。我只是提供了一个文件夹的图像集,其中有我所有的图像,并指示查看所有的子文件夹以及。Image Set的另一个重要的优点是它不会把所有的图像都加载到内存中,所以当你有很多很多的图像时,它很容易处理。
预先处理我的数据和提取特征,我将使用名为一袋功能的方法。这是一个相当复杂的技术,从图像做特征提取和工作得特别好。如果你有兴趣学习更多关于函数做什么,在计算机视觉系统工具箱文档有详细的算法确实罩盖下方作何解释。现在,让我们把这个功能作为特征提取工具,我们将使用从图像中提取的特征。
就像我们在前面的例子中所做的那样,让我们创建一个表并将标签分配给该表。让我们直接进入分类学习器并开始训练我们的模型。让我们快速查看一下我们的数据。我们从图像中提取了200个新的特征,最后一个变量是响应。我将再次选择holdout作为我的验证,现在我已经准备好开始训练模型了。
我将快速地训练一些模型,从最近的邻居和支持向量机开始。金宝app现在我已经或多或少地训练了一些,让我们使用混乱矩阵做一个快速的可视化诊断。混乱矩阵大部分是对角的,所以这是一件好事,我们将很快导出其中一个模型,看看它在真实的流图像上的表现。
在我运行这个功能,我想向你展示的代码,是多么容易获得流媒体图像,并实时分类。该函数在两个输入。第一是火车模型,第二是袋的-设有一个对象,我将用于提取从新的图像的功能。
启动摄像头很容易。所有我需要做的是调用摄像头命令。内连续运行的循环中,首先,我获得来自网络摄像头快照,然后将其转换为灰度,这意味着模型应该能够识别汽车而没有色彩信息。下一步是从这个新的图像中提取的特征,最后,用一个预测函数和训练模型,使新的图像上的预测。让我们回过头来运行该功能。
顶部的图显示了我的网络摄像头拍摄的图像,这里的绿色条是模型对这幅图像进行预测的结果。这是我正在使用的分类器,这个柱状图显示了分类器对这辆车是属于闪电、脱线、奈杰尔还是沙丘的信心有多大。让我们移动相机,看看模型在不同角度和方向下的表现。
因此,该模型主要是得到闪电正确的,但随着我们向奈杰尔,你会看到,该模型并不完全确信它是汽车。在底部显示概率图你如何确信该模型在预测哪辆车,这是。这是沙丘,最后母校。
让我们从分类学习器中导出另一个模型,看看两个模型是如何并行执行的。因此,我将使用线性支持向量机,并选择具有默认名称的导出。现在我的工作空间中有两个分类器,或者两个模型。一个是资讯。另一个是支持向量机。金宝app
现在让我来运行这段代码用于比较的方面,这两个分类侧的性能。我们再次在这里看到的是比较两个分类并排性能的视频。左红顶是我们的SVM分类的性能,并在右下角是KNN分类器的性能。这里要注意的重要一点是它不仅是简单的比较和测试模型的分类学习,但这些模型导出到MATLAB和测试他们在现实时间,它是很容易。
我们的演示到此结束。现在回到我们的演讲。让我们再次总结一下我们刚刚使用我们熟悉的工作流图完成的工作。
我们的投入包括在磁盘上的几个标记的图像。我们用一袋字的方法来生成新的功能。然后,我们使用分类学习应用在我们的最好的模式到达。对于预测步骤,我们获得一个摄像头的新数据,编码后的图像和新的功能,并使用训练模型进行实时预测。
这把我们带到了总结和关键的结论。总结一下我们到目前为止所看到的,让我回到我在这次演讲开始时设置的挑战。希望您今天已经看到MATLAB是如何解决这些挑战的。
对于数据多样性的第一个挑战,我们看到了如何MATLAB可以与不同类型的数据的工作。MATLAB还可以访问并下载财务数据饲料,以文字,地理空间数据和其它多种数据格式的工作。MATLAB也有审核行业标准算法和功能库。MATLAB还提供了额外的工具,在金融工程的具体工作流程,信号处理,图像处理,和其他几个人。
我们也看到我们如何能够快速构建和样机解决方案,您专注于机器学习,它们相互作用,以应用为导向的工作流程,让不金宝搏官方网站编程和调试。最佳做法机器学习,如交叉验证和模型评估工具,被集成到应用程序和功能。正如我们看到的,MATLAB也有有一些准则,帮助您选择适合工作的正确的工具,丰富的文档。最后,MATLAB本质上是一种灵活的建模环境,并没有限制,你可以让你的分析,自定义一个完整的编程语言。这使MATLAB进行机器学习的优秀平台。
这给我们带来了我们的演示结束时,我会尽量保持这种短期和简单。我想与大家分享的时候,你应该考虑机器学习上的一些准则。考虑机器学习,如果你在哪里手写规则和公式过于复杂或不可能制定一个问题工作。或者当你的任务的规则是不断变化的,你的程序或模型需要不断适应,因为你的任务是一个移动的目标。或者当你的数据变化的性质,程序需要不断适应。
我也希望,我已经能够说服你,MATLAB是机器学习工作流程的每一步一个强大的平台。我们总是希望从你的来信,你可以找到我的信息的统计和机器学习工具箱产品页面上的接触。如果你想了解更多,请看看产品文档。有很多例子和概念的网页,不仅可以帮助你上手,还指导你掌握的工具。
要了解更多关于算法,应用领域,示例和网络研讨会涉及到机器学习,随时访问该机器学习页面。这给我们带来了本次会议结束。谢谢大家的聆听。
记录:2015年3月19日