在我的上一篇文章《机器学习的第0天入门》中,我向初学者介绍了机器学习(ML)的一些高级概念,并尽力将Supervised ML幕后的一些方法与我们许多人小时候可能学到的共同技能:学习骑自行车。
现在已经奠定了基础,让我们开始构建结构的其余部分,并深入研究典型工作流程中的流程。

当我们更详细地研究这些过程时,我有时会重新介绍我们以前学习的技能(骑自行车)的各个方面,以继续与我们已经介绍的高级概念进行比较。
最后要注意的一点:该博客主要是针对监督型ML的,但是我将尝试指出其他ML方法之间的流程共同点。
A.数据
在开始下一步工作之前,我们实际上是在需要开始处理一些数据以完全了解我们在流程各个部分中正在做什么的时候。 许多介绍型文章使用的是Iris数据集(Fisher,1936年),这就是我们将在此处使用的内容,因此,让我们从对域视图的数据更好的理解开始。

注意:对于初学者来说,这是整个ML过程中最容易被忽略的步骤之一,对于数据科学初学者来说更是如此。 始终牢记,如果可用,请确保您花时间对数据域进行自我教育(即,数据来自何处?它描述什么?)。 在项目之前了解此类信息将有助于更好地定义解决问题的方式。
根据UCI机器学习库:
这也许是模式识别文献中最著名的数据库。 费舍尔的论文是该领域的经典著作,至今仍被频繁引用。 (例如,请参见Duda&Hart。)数据集包含3类,每类50个实例,其中每个类都涉及一种鸢尾植物。 一类与另一类可线性分离;另一类可线性分离。 后者不能线性分离。 预测的属性:虹膜植物的类别。

那么,这一切意味着什么呢? 基本上,这些数据量化了三种不同类型鸢尾花的物理特性。 如下表所示,已记录了萼片和花瓣的长度和宽度 。 这些将代表我们在前面的讨论中描述的部分体验或元素-还记得学习骑自行车吗? 每次您可能尝试不同的方法以成功骑自行车或获得结果 。 对于每次迭代,您可能会在相同区域进行一些小的调整,并在每次尝试不同的操作时评估更改的影响。 这种反复试验的方法是我们学习新事物的一种常见方式,但是我们必须捕获或量化这些小的变化, 以使ML能够学习哪种特定的组合等于特定的结果。
这个问题描述了大多数受监督的ML问题的基本结构:每个观察值(数据行)都有许多不同的测量元素(通常称为特征或自变量) ,并且与每个变量都有一个单独的结果(通常称为因变量)一组测量值,如下所示。

初学者注意:在这个问题中,我们知道功能是什么,但是在更复杂的ML问题中,我们没有这种奢望。 实际上,这是整个ML过程中最重要的部分-特征选择和特征工程是一门复杂且通常是复杂的科学,应比我们在此提供的关注更多。 我的主要观点是,因为数据众所周知,这对我们来说是一件艰巨的任务-在ML或Data Science中通常不是这种情况( 请参阅上一篇文章的EDA )。
B.预处理
众所周知,机器学习过程中80%的工作都是在这一领域完成的。 底线是:如果我们没有干净的数据来处理整个ML过程,那将是错误的。 Iris数据集的一个好处是它已经被清理过,但是这里有一些示例可以说明在此阶段还可以做些什么。
B.1:缺少数据
在下表中,您可以看到有些单元格缺少数据。 这在ML和/或数据科学中通常被称为NA,尽管某些ML算法将适用于NA,但我们仍然承担着决定需要处理无价值数据的负担。 处理数据中缺失值的过程称为插补( Van Buuren,2018)。

在统计中,有许多方法可以估算缺失值,但是在ML或数据科学中,处理数字数据时最常用的方法是用数字特征的平均值替换缺失值。 这种“足够好”的方法很有帮助,但应谨慎使用,并且仅当没有足够的领域知识来进行实质性替换时才应使用。
B.2数据类型
了解不同的数据属于不同的类型是ML的基础,并且在先前的文章中都只简单地介绍了名义数据和数字数据。 初学者通常会犯一个常见的错误,那就是理所当然地认为您选择的工具将为每个变量分配所需的正确数据类型。 例如:将虹膜数据集逐字导入R中时,这就是分配给每个变量的内容:

注意,是否将“ species”作为“ chr”数据类型导入? 尽管这在技术上是正确的,但从ML方面来看,这对我们没有好处,因为在诸如使用标称因变量的分类等有监督ML方法中,我们无法使用“ chr”。 请注意,将变量转换为因子(R中的标称数据)后,R现在可以找到特定类别(每种鸢尾花类型),如下所示为“等级”或“物种”中的类别或类别:

C.EDA
在我们之前的文章中,此部分描述如下: 尽可能多地了解数据的过程称为探索性数据分析或EDA。 我们使用各种可视化和工具可以帮助我们完成此任务,但是就目前而言,只知道我们为什么这样做-了解我们不知道的内容。
我们已经对数据的域空间以及有关该数据的任何高级相关信息进行了自我教育。 在EDA中,我们将深入研究数据的统计信息,以便我们可以更好地展开定量信息,并开始设计定义和最终解决问题的正确方法。
有两种主要方法可以深入到这一部分:功能和视觉。 几乎所有用于ML或Data Science的工具或语言都提供了功能性方法,这些方法可提供对数据中主要描述性统计信息的高级理解。 例如:R使用summary()提供高级细节,如下所示:

pandas Python库使用类似的函数describe()来完成类似的任务,如下所示(请注意,没有Nominal变量):

可视化方法对于更好地理解数据也非常有用,并且我们可以轻松地使用几乎所有ML包中可用的更典型的工具来绘制数据的不同元素。 例如,“虹膜数据集”描述描述了以下内容:“ 一类可与其他2类线性分离;另一类可线性分离。 如果我们想“了解”这可能如何影响其他功能,我们可以创建一个散点图,显示如下所示的相互作用。
请注意, Setosa花是完全分离的,其余两朵花的特征不仅重叠,这传达了某种相似性(不是因果关系,请注意不要假定这一点) ,而且它们的大小在某种程度上呈正相关。

那么,为什么所有这些都很重要? 让我们回到自行车的例子来结束这个循环。
每次尝试学习骑自行车时,都会学到一些新知识,很可能会在下一次迭代中应用。 也许这是尝试的新事物,或者是您需要停止做的事情– 此处的要点是您每次尝试都在获取有关该问题的新知识–这就是您最终制定解决该问题的方法的方式一次是一次小小的胜利。
这就是我们使用EDA所做的工作-我们正在尝试收集有关数据的所有必要详细信息,因此我们可以: A.做出有关创建特征空间的明智决定(我们已经在此问题中知道这一点),以及B我们可以决定问题的类型以及解决的方式(哪种方法可能效果最好)。
D.建模
现在我们已经从域和统计两方面对数据有了更好的了解,我们可以开始尝试一些模型。 作为初学者,最好遵循我喜欢的“推并转”方法。 如果您像我一样,当您获得新的东西或尝试新的东西时,您可以“按下并旋转”每个按钮或尝试每次迭代以查看每次结果的不同(即,当我“按下或旋转”时会发生什么?)
尽管这在ML中似乎显得有些矫kill过正,但它是学习时遵循的一种好方法,因此您可以体验不同的算法如何处理相同类型的数据。
下面,我在数据上同时尝试了MLP和KNN,发现KNN对数据的敏感性要比基本神经网络高,精确度为.980。 (这比我在这里讲的要多得多,我们将在下一篇文章中更深入地探讨)。


快速检查后,将经过训练的KNN模型所作的预测与测试集中的地面真实情况进行比较,我可以轻松地检查过拟合并确保模型可以根据需要进行泛化。
初学者的最后注意事项:这篇文章是针对您的 ,我希望您能从中学到东西,但是请记住,这是一个非常基本的学习目的,毕竟这只是您的第二天 ! 在下一篇博客文章中,Ill深入研究ML的核心,并更详细地讨论模型训练,测试和部署。
在此视频中还可以看到此博客文章的某些部分:
参考文献
Duda,RO,&Hart,PE(1973)模式分类和场景分析。 (Q327.D83)约翰·威利父子(John Wiley&Sons)。 ISBN 0–471–22361–1。 请参阅第218页。
费舍尔(1936)。 UCI机器学习存储库[http://archive.ics.uci.edu/ml]。 加州尔湾市:加利福尼亚大学信息与计算机科学学院。
Van Buuren,S.(2018年)。 灵活估算丢失的数据。 查普曼和霍尔/ CRC。