在2010年的一篇博文中,Hilary Mason和Chris Wiggins将OSEMN过程描述为数据科学家应该熟悉的一系列任务。
这篇博文的标题是“数据科学的分类法”,发表在现已失效的dataists博客上。这个过程也被用作一本近期书籍的结构,特别是Jeroen Janssens由O’Reilly出版的《命令行数据科学:用久经考验的工具面对未来》。
在这篇文章中,我们将仔细研究OSEMN过程,以解决数据问题。

像数据科学家一样解决问题
照片作者:美国陆军RDECOM,保留部分权利
OSEMN过程
OSEMN是一个押韵的缩写,听起来像“possum”或“awesome”,代表获取(Obtain)、清理(Scrub)、探索(Explore)、建模(Model)和解释(iNterpret)。
它是一个数据科学家应该熟悉和舒适处理的任务列表。尽管如此,作者指出,没有一个数据科学家能在所有这些任务上都成为专家。
除了任务列表之外,OSEMN还可以作为使用机器学习工具解决数据问题的蓝图。
作者指出,数据破解(data hacking)属于“O”和“S”任务,机器学习属于“E”和“M”任务,而数据科学则需要所有元素的结合。
1. 获取数据
作者指出,手动收集数据的方法无法扩展,因此你必须学会如何自动获取特定问题所需的数据。
他们提到了手动操作,例如用鼠标点击和从文档中复制粘贴数据。
作者建议你采用一系列工具,并使用最适合当前任务的工具。他们提到了Unix命令行工具、数据库中的SQL、网络抓取以及使用Python和shell脚本进行编程。
最后,作者强调了使用API访问数据的重要性,API可以是公共的,也可以是组织内部的。数据通常以JSON格式呈现,而Python等脚本语言可以使数据检索更加容易。
2. 清理数据
你获取的数据将会是杂乱的。
真实的数据可能存在不一致、缺失值以及各种其他形式的损坏。如果数据是从困难的数据源抓取的,可能需要进行精细的处理和清理。即使是干净的数据,也可能需要进行后处理才能使其统一和一致。
数据清理或整理需要“命令行技巧”和简单的脚本编写。
作者指出,数据清理是处理数据问题中最不吸引人的部分,但良好的数据清理可能在你可以实现的结果方面提供最大的收益。
对干净数据的简单分析可能比对嘈杂且不规则数据的复杂分析更有成效。
作者提到了简单的命令行工具,如sed、awk、grep,以及Python和Perl等脚本语言。
有关更多信息,请参阅数据准备过程。
3. 探索数据
这里的探索指的是探索性数据分析。
这是在没有检验假设或评估预测的情况下进行的。
数据探索有助于了解你的数据,建立对其形式的直觉,并获得数据转换甚至预测模型的使用想法。
作者列出了一些可能有助于此任务的方法:
- 用于检查数据的命令行工具,如more、less、head、tail等。
- 直方图,用于总结单个数据属性的分布。
- 成对直方图,用于绘制属性之间的关系,并突出显示它们之间的关系和异常值。
- 降维方法,用于创建数据的低维图和模型。
- 聚类,用于发现数据中的自然分组。
有关更多信息,请参阅 探索性数据分析。
4. 建模数据
模型准确性通常是特定数据问题的最终目标。这意味着最具预测性的模型是选择模型的过滤器。
通常“最佳”模型是最具预测性的模型
通常,目标是使用模型进行预测和解释。预测可以通过量化评估,而解释则更软性且定性。
模型的可预测准确性可以通过其在未见过的数据上的表现来评估。可以使用交叉验证等方法进行估计。
你尝试的算法以及你对可能构建的模型的假设空间进行限制和偏见。明智地选择。
5. 解释结果
计算的目的是获得洞察,而不是数字
— Richard Hamming
作者以手写数字识别为例。他们指出,这个问题的一个模型并没有每个数字的理论,而是一种区分数字的机制。
这个例子突出表明,预测问题可能与模型解释问题不同。事实上,它们可能发生冲突。一个复杂的模型可能具有高度的预测性,但其术语数量或进行的数据转换可能使得在领域上下文中理解为什么做出特定预测几乎不可能。
模型的预测能力取决于其泛化能力。作者认为,模型的解释能力在于其能够建议下一步执行最有趣实验的能力。它提供了对问题和领域的洞察。
作者指出,在选择模型以平衡预测性和模型可解释性时,有三个关键考虑因素:
- 选择良好的表示形式,即你获取的数据的形式,大多数数据都很混乱。
- 选择良好的特征,即你选择用于建模的数据属性。
- 选择良好的假设空间,受限于你选择的模型和数据转换。
有关更多信息,请参阅 如何使用机器学习结果。
总结
在这篇文章中,你了解了Hilary Mason和Chris Wiggins提出的OSEMN。
OSEMN代表获取、清理、探索、建模和解释。
非常棒的文章,我非常喜欢,也从中获得了一些有用的笔记<3 继续保持,亲爱的Jason
谢谢!