本节书摘来自异步社区《数据科学与大数据分析——数据的发现 分析 可视化与表示》一书中的第2章,第2.5节,作者【美】EMC Education Services(EMC教育服务团队),更多章节内容可以访问云栖社区“异步社区”公众号查看
2.5 第4阶段:模型建立
在第4阶段,数据科学团队需要创建用于训练、测试和生产环境的数据集。这些数据集中有一部分“训练数据”被数据科学家用于训练分析模型,另一部分“留存数据”或“测试数据”用于测试分析模型(具体细节将在第3章详细讨论)。在这个过程中,需要确保用于模型和分析的训练和测试数据集足够健壮。可以简单地认为,训练数据集用于运行模型的初始实验,然后测试数据集用于验证模型方法。
在建模阶段,如图2.6所示,一个分析模型是基于训练数据开发的,并用测试数据进行评估。模型规划和模型构建这两个阶段可能稍微重叠,并且在实践中可能在这两个阶段间来回反复,直到确定最终模型。
虽然开发模型所需要的建模技术和逻辑可能非常复杂,但是与准备数据和定义方法相比,该阶段花费的时间可能会较短。一般来说,更多的时间会花费在准备、学习数据(第1阶段和第2阶段)和演示结果(第5阶段)上。虽然看起来更加复杂,相比而言第3阶段和第4阶段一般较为短暂。
在这个阶段,数据科学团队需要运行在第3阶段定义的模型。
在此阶段,用户运行分析软件包(如R或SAS)中的模型来测试文件提取和小数据集,以此评估模型在小规模数据上的有效性和结果。例如,确定模型是否适用于大部分数据并具有健壮的预测能力。这时可以通过改进模型来优化结果,比如适当修改变量输入或减少关联变量。在第3阶段,团队可能对关联变量或有问题的数据属性已经有所认知,并将在模型实际运行后对其予以证实或否定。当深入到构建模型和转换数据的细节时,常常需要做很多与建模的数据和方法相关的小决策。项目完成后这些细节很容易被忘记。因此,在这个阶段记录模型的结果和逻辑至关重要。此外,在建模过程中所做的任何有关数据或背景的假设也必须被悉心地记录。
为了创建用于特定场景的的健壮模型,需要深思熟虑,以确保开发的模型最终能够满足第1阶段提出的目标。需要考虑的问题包括下面这些。
- 模型是否在测试数据上有效且准确?
- 在领域专家看来,模型的输出和行为是否有意义?也就是说,模型给出的答案是否说得通?
- 模型的参数值在业务背景下是否有意义?
- 模型是否足够精确?
- 模型是否避免了不可容忍的错误?例如,取决于场景,误报可能比漏报更严重,或者反过来(误报和漏报将在第3章和第7章进一步讲解)。
- 是否需要更多输入数据?是否有输入需要进行转换或删减?
所选择的模型是否满足运行要求? - 是否需要用模型的另一种形式来解决业务问题?如果是,回到模型计划阶段,修改建模方法。
一旦数据科学团队可以判断出模型已经足够健壮,或者团队已经失败,就可以进入数据分析生命周期的下一个阶段。
2.5.1 模型构建阶段中的常用工具
在这个阶段有许多工具可以使用,主要侧重于统计分析或者数据挖掘软件。在这个阶段中常用的工具包括(但不限制于)下面几种。
商业工具。
SAS Enterprise Miner[17]允许用户在大量企业数据上运行预测性和描述性模型。它可以与其他大型数据存储相通,能与许多工具配合使用,适合企业级计算和分析。
SPSS Modeler[18](IBM公司出品,现在称为IBM SPSS Modeler)通过GUI探索和分析数据。
Matlab[19]提供了一种高级语言来运行各种数据分析、算法和数据探索。
Alpine Miner[11]为用户提供了GUI前端来开发分析工作流程,并在后端与大数据工具和平台进行交互。
STATISTICA[20]和Mathematica[21]是一种颇受欢迎且评价甚高的数据挖掘和分析工具。
免费或开源工具。
R和PL/R[14],R 在模型计划阶段描述过,PL/R是一种过程型语言,用于R和PostgreSQL的交互,即在数据库中执行R的命令。与在内存中运行R相比,这种技术提供了更高的性能和更好的可扩展性。
Octava[22],用于计算机建模的一款免费软件,能实现部分Matlab的功能。因为免费,它被用于许多大学的机器学习教学中。
WEKA[23]是一个带有分析工作台的免费数据挖掘软件包。WEKA中创建的函数可以在Java中运行。
Python是一种编程语言,提供了机器学习和分析工具包,比如scikit-learn、numpy、scipy、pandas和相关的数据可视化(基于matplotlib)。
SQL数据库内应用,比如MADlib[24],提供了一种内存桌面分析工具的替代方案。MADlib提供了一套开源的机器学习算法库,可运行在PostgreSQL或GreenPlum数据库系统内。