数据与建模工程技术

数据存储

机器学习的整个流程几乎都会产生数据。除了数据采集阶段的原始数据,还有加工后的中间数据、训练好的模型等。除了传统的关系型数据库,各种各样的NoSQL数据库(如列式数数据库、K-V数据库、文档型数据库、全文搜索引擎、图数据库等)系统也应用广泛。

  • 关系型数据库(如PostgreSQL )适用于存储元数据(文件路径、标签、用户行为等)。除了支持SQL,它对非结构化JSON格式也支持良好。
  • 列式数据库是以列相关存储架构方式进行数据存储的数据库,主要适合批量数据的处理和即时查询。基于列式数据库的列存储特性,可以解决某些特定场景下关系型数据库中高I/O的问题。常见的列式数据库有HBase、BigTable 等。
  • K-V数据库指的是使用键值( key-value )存储的数据库,其数据按照键值对的形式进行组织、索引和存储。K-V存储非常适合不涉及过多数据关系的数据。它能够有效减少读写磁盘的次数,比SQL数据库存储拥有更好的读写性能。常见的K-V数据库有Redis、Apache Cassandra、Memcached 等。
  • 文档型数据库指用于将半结构化数据存储为文档的一种数据库。文档型数据库通常以JSON或XML格式存储数据。由于文档数据库的no schema特性,它可以存储和读取任意数据。常见的文档型数据库有MongoDB、CouchDB等。
  • 全文搜索引擎用于解决关系型数据库中全文搜索较弱的问题。常见的全文搜索引擎有ElasticSearch、Solr等。
  • 图数据库应用图形理论存储实体之间的关系信息,常见的例子就是社交网络中人与人之间的关系。常见的图数据库有Neo4j、Arango DB等。

实际上,选择以上多种存储方案时,要基于业务需求和技术架构,多方面权衡并进行综合性评估。常见的衡量因素包括数据量、并发量、实时性、一致性要求、 读写分布、数据类型、安全性和运维成本等。

此外,数据的版本管理也至关重要。版本控制表示哪个版本的数据会被使用。对于已部署的机器学习模型,必须要有对应的训练数据版本。已部罢的机器学习模型是由数据和代码共同组成的。没有数据版本的管理,就意味着没有模型版本的管理,这会带来各种问题。数据版本管理平台有DVC (针对机器学习项目的开源版本管理系统)、Pachyderm (针对数据的版本管理)、Dolt (针对SQL数据库的版本管理)。

数据加工

数据加工用来描述数据从生产源到最终存储之间的一系列处理过程,一般经过数据抽取 、转换、加载3个阶段。其中,数据抽取是指将数据从已有的数据源中提取出来,例如,通过JDBC/Binlog等方式获取MySQL数据库中的增量数据; 数据转换是指对原始数据进行处理,例如,将用户属性中的手机号替换为匿名的唯一ID, 计算每个用户对商品的平均打分,计算每个商品的购买数量,将B表中的数据填充到A表中形成新的宽表等; 数据加载是指将数据写入最终的存储目的地,如数据仓库、关系型数据库、K-V型NoSQL等.

为了实现ETL (抽取、转换和加载)过程,各个ETL工具一般还会进行一些功能上的补充,如工作流、调度引擎、规则引擎、脚本支持、统计信息等。成熟的ETL工具(系统)可以提供大量的组件以适配多种异构数据源,支持丰富的数据变换操作,并且处理速度快等。选择合适的ETL系统可以达到事半功倍的效果。一方面, 企业可以尝试组装开源ETL工具以节省成本,同时自定义需要的功能可提供更多的灵活性和支持。另-方面, 也可以选择商用解决方案来获得更好的服务。

当前流行的开源ETL工具有Apache Airflow、Apache Kafka、CloverETL、ApacheNiFi、Pentaho Ketle等。

特征工程

特征工程是利用数据领域的相关知识来创建能够使机器学习算法达到最佳性能的操作过程。它阶与“数据”与“模型”之间,有着相当重要的地位。特征设计是否有效,特征生成与上线的流程是否高效直接决定了机器学习模型的质量和迭代速度。

特征主要分为离线特征实时特征两大类。

离线特征主要是指从历史数据中总结和归纳出来的特征表示,这类特征的原始数据一般存储在持久化的数据存储介质(如分布式存储Hive、HBase或关系型数据库MySQL等)中。离线特征的生成过程主要包括特征计算和定时调度两个主要步骤。实时特征的生成更关注样本以及和项目关联的对象在近期内的行为特征表示。要保证离线和在线的特征一致性。

当模型和特征上线后,要取得和离线实验一样的效果, 保证线上特征数据的持续正确是非常必要的。特征监控从整体来看可以分为过程监控和结果监控。过程监控主要关注特征生产过程中可能出现的问题,这需结合特征生产流程在关键节点进行校验监控。结果监控主要是对已经生成的特征按先验知识进行校验和监控。

近年来,随着自动建模的发展,除了传统的人工特征工程,还出现了特征工程自动化。特征自动化是指通过数据集自动创建候选特征,且从中选择若干最佳特征进行训练的一种方式。常见的有Feature Tools 和Tsfresh等。

其他工具:

  • Losswise, 对机器学习进行监控
  • Comet,跟踪代码、试验及机器学习项目的结果
  • Weight&Biase, 记录和可视化模型训练过程
  • MLFlow Tracking,记录参数、代码版本、指标、输出文件、及实现结果的可视化。

上一篇:五、ETL和ELT区别


下一篇:ETL相关介绍