Shashank Prasanna,Mathworks
机器学习无处不在。从医疗诊断,演讲和手写识别到自动交易和电影建议,正在使用机器学习技术,以便在一天中的每一刻做出关键的业务和生命决策。每台机器学习问题都是唯一的,因此管理原始数据可能具有挑战性,识别影响您的模型,培训多个模型以及执行模型评估的关键功能。
在本次会议中,我们探讨了Matlab机器学习的基础。通过几个例子,我们审查了监督学习(分类)和无监督学习(聚类)的典型工作流程。
亮点包括
关于演示者:Shashank Prasanna是MathWorks的产品营销经理,在那里他专注于Matlab和附加产品,用于统计,机器学习和数据分析。下载188bet金宝搏在加入Mathworks之前,Shashank在Oracle上致力于软件设计和开发。莎兰克拥有一个M.S.在亚利桑那州立大学的电气工程中。
录音时间:2015年3月19日
你好,欢迎来到机器学习方便。我的名字是普什南普拉斯坦尼亚。我是MathWorks统计和机器学习产品的产品经理。下载188bet金宝搏
这是今天其余的演示文稿的议程。我会开始使用什么机器学习以及为什么您想考虑的高级概述。然后,我们将在机器学习中看到一些关键挑战。
接下来,通过解决一个涉及真实世界数据的有趣问题,我将深入潜入机器学习。为了解决这个问题,我将介绍一个典型的工作流程,通常可以用于解决机器学习问题。然后,我们将通过另一个涉及图像数据的有趣示例。我将向您展示一个使用来自网络摄像头的视频来识别对象的现场演示。我们将在摘要和一些指导下填写会议以及何时考虑机器学习的指导。
由于这是一个很容易的主题,因此没有先决条件。与MATLAB的基本熟悉是有帮助的,但不是必需的。机器学习无处不在。这些技术越来越多地用于今天的世界,以制定关键的业务和生命决策。今天,通过机器学习,我们能够解决汽车,金融,计算机愿景和其他几个领域的问题,这些领域以前认为是不可能的。
那么机器学习是什么?让我们花一分钟快速地走上机器学习的高级概念。即使您熟悉了这一主题,这应该是快速提醒,何时实际上是为了追求机器学习。
我们可以将机器学习定义为使用数据的技术,并生成程序执行任务。让我在一个例子的上下文中解释。考虑一项涉及使用来自移动电话的传感器数据来检测人员活动的任务;例如,如果这个人行走,坐着,站立等等。解决此类任务的标准方法是分析信号并用一组精心设计的规则写下程序,或者您可以知道先验一组方程或使用输入的公式并预测输出。
机器学习方法是直接从数据中学习这样一个程序。在这种情况下,我们给算法提供输入和输出数据,并让它学习程序来解决这个任务。这个步骤通常称为训练。输出是一个模型,现在可以用来从新的传感器数据中检测活动。
注意我没有明确提及特定机器学习算法,因为有很多算法可以选择,每个算法都有自己的优势和劣势。当我们详细介绍这个特定的示例时,我们会看到。如果有两件事,我希望您能够带走这款幻灯片,即一个,你需要数据。如果您没有数据,则无法进行机器学习。这是一个很强的要求。
二,只有在任务复杂时才考虑机器学习,并且没有魔法方程或公式来解决它。如果您有公式,您可以继续实施它。机器学习将起作用,但在这种情况下,这不是推荐的方法。
让我们进入MATLAB看看机器学习方法是什么样的。我们正在处理的数据由6个输入组成,3个来自加速度计,3个来自手机的陀螺仪。响应或输出是执行的活动。包括行走、站立、跑步、爬楼梯和躺着。
这就是分类学习者。它是一种交互式工具,可以让您执行常见的机器学习任务,例如交互式地探索数据、选择特征、指定验证方案、训练模型和评估结果。在我的左边,我有几个不同的机器学习模型,它们已经在传感器数据上训练过了。每个模型旁边都有一个百分比数字,表示所选分类器在单独验证集上的准确率。我可以使用右边的可视化来探索我的数据,以搜索模式和趋势。
培训一个新的模型很容易。我只需导航到分类器库,选择一个感兴趣的分类器,然后点击火车。一旦培训完成,您可以在历史记录中看到新模型以及模型的性能准确性。这个数字越高,模型可以在新数据上执行越好。我会选择我最好的性能模型,然后单击“导出”以在MATLAB中使用我的模型开始,我可以看到导出的型号在工作区中就在这里。
我现在想使用这个模型,以及一些测试数据,以可视化模型的预测结果。这是一个绘图,其绘制了两秒钟的流速加速度计和陀螺数据。顶部的绿色栏显示实际的活动,该人在此处对应于传感器信号进行对应。如果模型能够成功预测该人的实际活动,则底部条是绿色的,如果它是 - 如果它未能预测实际活动,则为红色。你看,这款模型往往会在散步和攀爬楼梯之间混淆。
让我们快速回顾我们刚刚实现的东西。我们使用数据使用分类学习者适合几种不同的型号。然后,我们选择了一个展现出良好结果的人,我们测试了它,以确保它正在做它应该做的事情。那似乎很简单,为什么机器学习有令人难以置信的声誉?
要回答这个问题,我想使用一个着名的统计学家的报价,曾经在教科书中写道,“所有型号都是错误的,但有些是有用的。”为什么?因为模型是近似值。不仅仅是机器学习模型 - 所有模型都是基于多个假设的近似,但这不会使它们不那么有用。机器学习模型可以解释数据的复杂模式,但要成功应用机器学习,您需要找到有用的模型,这可能是一个具有挑战性的任务。
实际上,机器学习工作流的每一步都有很多挑战。数据有各种各样的形状和大小。它可以是简单的数字数据,比如来自金融数据或传感器信号,也可以是来自相机的流式图像或文本数据。真实世界的数据集通常是杂乱的,而且不总是表格化的。
预处理数据需要特定于域的算法和工具。例如,需要信号或图像处理算法以从信号和图像数据中提取有用的特征。特征选择和功能转换需要统计算法。我们经常需要来自多个域的工具,并且在使用多台机器学习算法时,搜索最佳模型可能是令人生畏和耗时的任务。
在它的核心,选择最好的机器学习模型是一种平衡行为。高度灵活的型号可能是准确的,但也可能会过度使用您的数据并在新数据上执行差。在另一个极端,简单的模型可能会对数据占用太多。速度,准确性和模型复杂性之间总是有权衡。
最后,机器学习工作流程从来都不是一个方便的线性工作流程。在我们收敛到解决方案之前,我们总是不断地前来,迭代并尝试不同的想法。我今天的目标:向您介绍一套常见的工具和策略,以解决这些挑战。
这是一个简单的两步工作流,我们喜欢在解决机器学习任务方面遵循。第一步是训练你的模型。我们首先引入数据,这将来自各种不同的来源,例如数据库,流式设备等。接下来,我们使用特征提取或其他统计工具预处理数据。此步骤对于将数据转换为机器学习算法可以使用的格式至关重要。
之后,我们已准备好从数据中学习。如果任务是预测标签或类别,我们选择分类方法。如果任务是预测连续值,那么我们选择回归方法,然后我们继续构建模型。当然,这是一个迭代过程,需要以预处理步骤来回,尝试不同的机器学习算法,调整不同的参数等。
这个工作流的第二步是实际使用模型,所以在左边,我有新的数据,在右边,我需要做出预测。那么我们需要从数据到预测需要什么?首先,我们需要为新数据使用所有预处理步骤,因此这里没有涉及的其他工作。我们只是重复使用我们在培训阶段花费的所有努力工作。
接下来,我们使用培训阶段的模型并进行预测。对于若干工程问题,第二步通常部署或集成到生产环境中,例如,在使用机器学习执行自动特征的服务器上。现在让我们使用此工作流程通过Matlab中的一个示例。
此示例的目的是训练分类器以基于传感器测量自动识别人类活动。数据由六个输入组成,来自加速度计和三个来自陀螺仪。输出的响应是执行的活动:行走,站立,跑步,攀爬楼梯和铺设。
我们将采取的方法如下。首先,我们将从传感器信号中提取基本特征。然后我们将使用分类学习器来训练和比较几个不同的分类器,最后,在看不见的传感器数据上测试结果。
所以这是matlab。我们将在此处从当前文件夹窗口开始。由于工作流的第一步是带入数据,我将加载一些在垫文件中的原始传感器数据。要导入此数据,我必须做的就是拖放到工作区窗口中。Workspace窗口可帮助您跟踪MATLAB中的所有变量,无论是我们在移动时都会创建的现有变量或新变量。
我的数据由七个变量组成。前6个变量是传感器输入变量,3个用于陀螺仪,3个用于加速度计x、y和z。最后一个变量TrainActivity包含传感器测量的每个观测的活动标签。注意,所有的变量都有大约7000个观测值。让我们来看看个体的感官输入是什么样的。
如果我绘制一排X轴陀螺数据,我们认为它有大约128分。现在,这就是数据所代表的。传感器数据通常收集并用窗口帧固定。每行具有128个读数,对应于传感器数据的两个和半秒。
现在,此数据不属于可用于机器学习的形式。我必须首先处理所有这些输入,以提取这128个点或两倍窗口中的每一个的特征,我必须为所有六个传感器输入执行此操作。但在我们从功能提取开始之前,让我们来看看原始传感器数据的样子。
我这里有一个自定义的图显示了三个加速度计的原始传感器数据,它们有不同的颜色对应于人正在执行的活动。MATLAB中的绘图具有相当的交互性。我可以放大看是否有任何视觉模式或者是否有趋势可以帮助我们识别这个人的活动。
在快速一瞥,我们可以看到传感器值看起来不同的每一种颜色。例如,橙色的值对应的是爬楼梯,而紫色的值对应的是站着。然而,与此同时,很难从视觉上区分步行和攀登,因为两者都涉及大量的运动。像这样的问题是机器学习的好候选对象,因为我们并不总是能够为每一个活动定义规则。
在我们从功能提取步骤开始之前,我将从这六个传感器输入中创建一个表。表是用于保持混合型数据的优秀工具,这在机器学习中很常见。在此示例中,我们具有传感器测量,这是数字的数字,并且是一种分类值的标签。
我现在在我的工作区中有一个表变量,包括所有六个单独的传感器变量。使用针对机器学习表的另一个优点是我可以使用单行代码将单个特征提取功能应用于此表中的所有变量。我所要做的就是呼叫varfun,它代表变量函数,并通过我的功能提取功能。WMEAN以下是计算传感器变量中每行的平均值的函数。在这种情况下,我计算了传感器值的两个和半第二帧的平均值。
WMEAN是我当前文件夹浏览器中的函数,正如您所看到的,这是一个相当简单的功能。但根据您的应用程序和您要提取的功能,这可能会像您一样复杂。除了平均值外,我想提取另外两个特征,这是每个帧的标准偏差,以及PCA代表主成分分析,我想仅保留第一个主成分。由于表格可以保存混合类型数据,因此我将把标签活动分配为表中称为活动的新变量。
让我们来看看人类活动数据表的样子。我总共有19列,前六个对应于帧的平均值。接下来的六个是框架的标准偏差,最终六个是PCA输出。我的最后一列是对应于每个观察的活动,可以铺设,坐着,爬楼梯,站立或行走。
现在我们已经准备好了数据,让我们移动分类学习器来训练我们的模型。分类学习器是统计和机器学习工具箱的一部分,你可以通过在MATLAB命令行上输入分类学习器启动它。或者你可以在MAT统计和优化的AppStat下找到它。
我们首先从Matlab工作区导入我们的数据。在“导入”对话框的步骤之一,我们从MATLAB工作区中选择我们的数据集。在步骤二,请注意,应用程序自动选择变量是预测器或响应。
该应用程序根据数据类型决定此功能。但是,您也可以选择更改其角色或完全删除变量。目前,我们将其留下。
在第三步骤中,我们可以选择我们的验证方法。验证可以防止超接收的问题。当您具有相对较小的数据集时,选择交叉验证,因为它有效地使用所有数据。如果有足够的数据,请选择撤销。
自从我们有很多数据点以来,我将为我们的问题选择此选项。将我的保持百分比设置为20%指示应用程序使用80%的数据进行培训,20%用于验证模型的性能。通常不建议使用最后一个选项。由于所有数据都用于培训以及测试,因此这导致了模型准确性的偏见估计。
分类学习者是一个相当互动的环境,具有许多不同的窗口和组件,我保证我们会在他们变得相关时经历其中的每一个人。顶部的ToolStrip显示一直从导入数据以导出模型的左右工作流程。在这里,这里是由响应变量分组的成对散点图。
此曲线可用于查找模式。例如,这对预测因子,我们注意到铺设似乎与其他活动分开了很好。坐着也很好地分开,但有一些重叠。ToolStrip上的功能选择选项允许您从模型中排除预测器。对于这个例子,由于我们没有太多的预测因子,我们将在它之后留下这一点。
在解决分类问题时,没有一种尺寸适合所有。不同的分类器最适合不同类型的数据和问题。分类学习者可让您从决策树中选择,支持向量机,最近的邻居和集合分类器,以及每个分类器类型,有几个预设是一系列分类问题的出色金宝app起点。如果您不确定选择哪种选择,则弹出工具提示为您提供了分类器的简要说明。
使用MATLAB时,帮助总是点击。有关进一步的帮助,只需单击右上角的问号,即可为应用程序打开文档。您可以在此处找到您在此处需要对应用程序所需的所有信息。目前,让我们转到以下有关选择分类器的指导的部分。
这是一个很好的表,它为您提供了哪些分类器选择的指导,具体取决于您想要的权衡。例如,决策树快速适合,但具有媒体预测精度。另一方面,最近的邻居具有高预测精度,用于较小的问题,但也具有高内存使用率。让我们从文档中使用此技巧并首先从决策树开始。
培训一个模型很容易。只需从画廊选择预设并点击火车,这将在模型历史中产生火车模型,以及其预测准确性。让我们训练中等树和一棵复杂的树。在验证集上执行最佳的模型始终由绿色框显示。
除了预测准确率百分比外,还有其他有用的诊断工具。混淆矩阵是一个很棒的工具,它可以告诉你一个分类器是如何执行的,所以这就是你如何阅读混淆矩阵。对角线上的任何东西都是正确分类的。任何非对角线的东西都被错分类了。一个完美的分类器在对角线上100%,其他地方0%。
让我们仔细看看一个活动:爬楼梯。89.1%的情况下,模型成功预测了活动。然而,10.9%的情况下,模型认为爬楼梯是步行,换句话说,模型误将爬楼梯定义为步行。在现代历史中,我们总是可以在不同的模型之间切换,以比较混淆矩阵。
应用程序中可用的另一个诊断工具是Auto C曲线。自动C曲线用于描述二进制分类器的灵敏度。曲线的形状显示了灵敏度和特异性之间的权衡。当我们向上移动和曲线的右侧移动时,我们增加了真实阳性的可能性,但也增加了误报的可能性。
在我看来,使用应用程序而不是编写代码的最大优势之一是能够训练多个模型。除了决策树,我现在要训练最近邻分类器因为我知道它们训练和预测都很快。当训练多个模型时,你不必局限于这些预设。
如果您是高级用户,则可以始终将高级弹出窗口调整为调整分类器参数。为方便起见,这些更改也显示在模型历史中。我们现在有大约八种型号左右的模型历史,而且我在几秒钟内训练了所有这些历史,而不撰写单行的Matlab代码。
有两种模式可以导出分析。您可以将模型直接导出到MATLAB中,或者您可以选择生成MATLAB代码,该代码可让您自动执行我们在构建此模型的所有步骤,而无需编写任何代码。让我选择这个选项来向您展示生成的代码看起来像什么。
我在Matlab中有什么,是一个评论的完全自动化的matlab代码。我们还可以看到代码捕获的工作流中的不同步骤。例如,提取预测器和响应,使用KNN分类器训练分类器,并设置保持验证等。您可以始终自定义此生成的代码以将其集成到您的应用程序中。
让我们回到Classification Learner并导出一个模型,我们可以看到这个模型现在在MATLAB工作空间中可用。现在,我们可以在新数据上测试模型了。首先,我们从MAT文件中加载一些新的传感器数据。然后我们使用与之前相同的特征提取步骤。然后我们使用导出的模型对新的传感器数据进行测试。
正如我们之前所看到的,顶部绿色栏显示了该人正在执行的实际活动,以及当模型成功检测到活动时的底部绿杆。如果犯错误,它是红色的。如果您想尝试新型号,您只需返回分类学习者,直接导出模型或生成MATLAB代码并培训新模型以预测新数据。
让我们快速看看我们的工作流程来总结我们所做的事情。我们的训练数据是从手机传感器获得的传感器信号。我们应用了基本的预处理技术以提取平均标准偏差和PCA等特征。然后,我们使用分类学习者应用程序根据持续验证准确性来到我们最好的模型。
为了用新数据预测,我们在新数据上应用了相同的预处理步骤,然后我们使用训练有素的模型来进行预测,然后可视化结果。让我们通过另一个例子,我们将使用图像数据训练机器学习模型。此示例的目的是训练分类器以自动从网络摄像头视频中检测汽车。数据包括四个不同玩具车的几个图像。输出的响应是这四辆汽车中的每一个的标签。
我们将采取的方法如下。首先,我们将使用词汇袋技术从这些图像中提取特征。然后我们使用这些特征来使用分类学习器训练和分类几个不同的分类器。最后——这是有趣的部分——我们将看到我们训练的模型的现场演示,通过我办公室的网络摄像头实时识别汽车。
所以让我们切换到Matlab。我要清除我的工作区并开始清洁的平板。所以让我们来看看我们的数据。所以这里有一堆图像和文件夹,每个文件夹名称是该文件夹中的图像集的标签。让我们来看看Matlab的图像看起来像什么。
因此,这里有一系列用于从几种不同的角度和不同的照明条件采取的沙丘的图像,并且我有几辆汽车的几种图像。使用图像时,请在循环中加载所有图像并跟踪所有文件和文件夹,标签可能是痛苦的。计算机视觉系统工具箱具有方便的工具,如图像集,使此任务简单。我只需提供具有拥有所有图像的文件夹并指示查看所有子文件夹的文件夹。图像集的另一个重要优势在于它不会将所有图像加载到内存中,因此当您有很多图像和大量图像时,它很容易使用。
要预先处理我的数据并提取功能,我将使用一个名为袋子的方法。这是一种相当复杂的技术,可以从图像中提取功能提取并特别好。如果您有兴趣了解函数的更多信息,那么计算机视觉系统工具箱文档有关轨道下方的算法在引擎盖下方的详细说明。现在,让我们将此功能视为我们将用于从图像中提取功能的功能提取工具。
就像我们在前面的例子中所做的那样,让我们创建一个表并将标签分配给该表。让我们直接进入分类学习者,开始训练我们的模型。让我们快速看一下我们的数据。我们从图像中提取了200个新特征,最后一个变量是响应。我将再次选择holdout作为我的验证,现在我准备开始训练模型了。
从最近的邻居和支持向量机开始,我将快速训练少量模型。金宝app现在我有几个或更少训练,让我们使用混淆矩阵进行快速的视觉诊断。困惑矩阵大多是对角线,所以这是一件好事,我们将迅速出口其中一个模型,并了解它如何在实际流媒体图像上执行。
在我运行此功能之前,我想向您展示代码以及获取流映射图像的简单性,并实时对它们进行分类。该函数采用两个输入。首先是列车模型,第二个是一个功能袋对象,我将用于从新图像中提取功能。
启动网络摄像头很容易。我需要做的就是致电网络摄像头命令。在连续运行的循环中,首先,我从网络摄像头中获取快照,然后将其转换为灰度,这意味着模型应该能够识别没有颜色信息的汽车。下一步是从此新图像中提取功能,最后使用预测功能和训练模型来对新图像进行预测。让我们回去运行此功能。
此处的顶部绘图显示了来自我的网络摄像头的图像,这里的绿色栏是模型对该图像的预测的结果。这是我正在使用的分类器,这条条形图显示了对分类器是多么自信,即这辆汽车属于闪电,母体,奈杰尔或沙丘。所以让我们移动相机,看看模型如何以不同的角度和方向执行。
因此,该模型主要得到闪电,但随着我们搬到奈杰尔,你会发现该模型并不完全有信心。底部的概率绘图显示了该模型在预测这是多么自信。这是沙丘,最后的母体。
让我们从分类学习者出口另一个模型,看看两款模型如何并排执行。所以我将使用线性SVM,然后选择带有默认名称的导出。所以我现在有两个分类器,或者在我的工作空间中有两个模型。一个是knn。另一个是支持向量机。金宝app
现在让我运行这段代码,比较这两个分类器的性能。我们在这里再次看到一个视频,比较两个分类器并排的性能。左上角红色的是我们的SVM分类器的性能,右下角是KNN分类器的性能。这里需要注意的重要一点是,不仅在Classification Learner中比较和测试模型很容易,而且将这些模型导出到MATLAB并实时测试也很容易。
我们的演示到此结束。现在让我们回到我们的演讲。让我们再用我们熟悉的工作流图总结一下我们刚刚完成的工作。
我们的投入由磁盘上的几个标记图像组成。我们使用文字袋方法来生成新功能。然后我们使用分类学习者应用程序到达我们最好的模型。对于预测步骤,我们从网络摄像头获取新数据,编码图像和新功能,并使用经过培训的模型来进行实时预测。
这将我们带到了摘要和关键的外卖。总结我们到目前为止所见的内容,让我回到在这个演示文稿开始时设置的挑战。希望你今天见过Matlab如何能够解决这些挑战。
对于数据多样性的第一个挑战,我们看到了MATLAB如何处理不同类型的数据。MATLAB还可以访问和下载金融数据提要,处理文本、地理空间数据和其他几种数据格式。MATLAB还拥有经过审查的行业标准算法和函数库。MATLAB还为金融、信号处理、图像处理等具体工程流程提供了额外的工具。
我们还看到了如何快速构建和原型解决方案,这些解决方案与应用驱动的工作流相互作用,让你专注于机器学习,而不是金宝搏官方网站编程和调试。机器学习的最佳实践,如交叉验证和模型评估工具,被集成到应用程序和功能中。正如我们所看到的,MATLAB也有丰富的文档,其中有一些指导方针,可以帮助您选择合适的工具。最后,MATLAB本质上是一个灵活的建模环境和完整的编程语言,对您可以进行的定制分析没有任何限制。这使得MATLAB成为一个优秀的机器学习平台。
这将我们带到了我们的演示文稿结束,我会尽力保持这种简短。我想与你分享一些准则,你应该考虑机器学习。如果您正在进行手写规则和方程式太复杂或不可能制定的问题,请考虑机器学习。或者,当您的任务规则不断变化时,由于您的任务是移动目标,您的程序或模型需要不断调整。或者数据变化的性质,程序需要不断适应。
希望,我已经能够说服你们MATLAB是一个强大的平台对于机器学习工作流的每一步。我们一直有兴趣听取您的意见,您可以在统计和机器学习工具箱产品页面找到我的联系信息。如果您有兴趣了解更多,请查看产品文档。这里有大量的示例和概念页面,不仅可以帮助您入门,还可以指导您掌握这些工具。
要了解有关与机器学习相关的算法,应用领域,示例和网络研讨会,请随时访问机器学习页面。这将我们带到了本届会议结束。谢谢大家听。
特色产品
你也可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。