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