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