getml-community
基于 C++ 高性能引擎的自动化特征工程工具,专为关系型数据和时序数据打造,速度比 featuretools 快 60~
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
基于 C++ 高性能引擎的自动化特征工程工具,专为关系型数据和时序数据打造,速度比 featuretools 快 60~
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
图1:getML 官方 Logo
想象你是某制造业公司的数据科学家,接到一个需求:基于过去三年的客户订单数据、仓储记录和天气数据,预测未来一周某款产品的销量波动。传统做法是什么?手工编写大量 SQL 关联查询,一行行计算滑动窗口均值、周期性特征,再花几个小时等待特征计算完成——然后发现漏了一个"节假日因素",从头再来。
getML 解决的就是这个痛点。它是一款专注于关系型数据与时序数据的自动化特征工程工具,能将上述工作从几天压缩到几分钟,同时生成数千个候选特征并自动筛选最优组合。
getML 由德国慕尼黑的 getml GmbH 公司开发并维护,核心团队成员在特征工程领域有深厚积累。公司的创始团队观察到,在 Kaggle 竞赛和工业级机器学习项目中,特征工程往往是整个流程中最耗时、最依赖经验的部分——对于关系型数据库(多表关联)和时序数据(带时间戳的记录),传统特征工程工具(如 featuretools、tsfresh)普遍采用"暴力枚举"策略:先生成海量特征,再做特征选择。这种方式在大数据量下运行极慢,而且容易产生维度灾难。
getML 的核心思路不同:它不是暴力枚举,而是通过学习驱动的特征生成(learning-driven feature synthesis)——利用轻量级的统计模型(如 FastProp)和更复杂的树模型(Relboost、Fastboost)直接在数据上学习最优的特征表达,而非穷举所有可能的聚合操作。这种方法在 getML 官方基准测试中取得了 60~1000 倍的速度提升,相比 featuretools、tsfresh、tsfel、tsflex、Kats 等主流开源工具均有显著优势。
图2:getML 组织头像
getML 的核心引擎由 C++ 编写(高性能计算层),对外暴露 Python API(用户交互层)和 Go CLI(运维工具层)。这种三层架构保证了既有科研级别的灵活度,也有生产级别的高性能。
内置的特征学习算法包括:
FastProp(快速命题化)——getML 的核心开源算法。原理是将关系型数据模型转换为"扁平"特征表的过程中,引入轻量级学习模型来指导特征生成的方向,而非暴力枚举所有聚合组合。速度极快,适合数据量较大的场景,是 getML 在基准测试中吊打其他工具的关键。
Relboost、Fastboost、RelMT——这三种算法集成在专业版/企业版中(社区版不含),属于更高级的集成学习策略,能够捕捉更复杂的多表关联关系和时序依赖模式。
预处理器(Preprocessors)——包括 CategoryTrimmer(类别修剪)、EmailDomain(邮箱域提取)、Imputation(缺失值填充)、Mapping(值映射)、Seasonal(季节性分解)、Substring(子串提取)、TextFieldSplitter(文本字段分割)等,覆盖了实际项目中常见的数据清洗需求。
预测器(Predictors)——内置 LinearRegression、LogisticRegression 以及 XGBoostClassifier、XGBoostRegressor 等开箱即用的模型,同时也支持通过 scikit-learn 风格接口接入其他预测器。
超参数优化器——RandomSearch、LatinHypercubeSearch、GaussianHyperparameterSearch 三种策略,可自动化调优模型超参数,减少人工试参的工作量。
时序场景是 getML 的主战场。它支持:
getML 支持从多种数据源直接导入:CSV、Pandas DataFrame、JSON、SQLite、MySQL、MariaDB、PostgreSQL、Greenplum、ODBC 等,覆盖了绝大多数企业数据环境。
getML Monitor 是其配套的 Web 监控界面,提供项目级和 Pipeline 级的可视化分析:展示特征重要性、模型精度、运行性能等信息,帮助数据科学家理解自动化生成特征的含义,而非"黑盒输出"。
| 层次 | 技术栈 | 职责 |
|---|---|---|
| 核心计算引擎 | C++ | 特征学习算法、多表关联引擎、高性能数学运算 |
| Python API | Python 3.9+ | 用户接口、数据管道、模型训练 |
| CLI 工具 | Go | 运维命令、服务管理 |
| 容器化 | Dockerfile(多阶段) + docker-compose.yml | 一键部署 |
getML 官方基准测试对比了 5 款主流开源特征工程工具:featuretools、tsfresh、tsfel、tsflex 和 Kats。测试数据集包括:
结果在所有数据集上,getML 的 FastProp 算法均快 60~1000 倍。由于速度优势过大,官方不得不使用对数坐标轴才能在柱状图中显示其他工具的运行时间。
速度快的核心原因在于:FastProp 不是"先生成所有特征再选择",而是利用学习信号引导特征搜索方向,大幅减少了无效计算。同时 C++ 编写的核心引擎也保证了底层运算的效率。
pip install getml
curl -L https://raw.githubusercontent.com/getml/getml-community/main/runtime/docker-compose.yml | docker compose -f - up
启动后访问 http://localhost:1708 即可进入 Web Monitor 界面。
import getml
# 启动引擎
getml.engine.launch()
getml.set_project("my_project")
# 加载数据并设置角色
data = getml.datasets.load_interstate94()
data.set_role("ds", getml.data.roles.time_stamp)
data.set_role("traffic_volume", getml.data.roles.target)
# 切分训练/测试集
split = getml.data.split.time(data, "ds", test=getml.data.time.datetime(2018, 3, 15))
# 构建时序 Pipeline
ts = getml.data.TimeSeries(population=data, split=split, time_stamps="ds",
horizon=getml.data.time.hours(1), memory=getml.data.time.days(7))
pipe = getml.pipeline.Pipeline(
data_model=ts.data_model,
preprocessors=[getml.preprocessors.Seasonal()],
feature_learners=[getml.feature_learning.FastProp(num_features=20)],
predictors=[getml.predictors.XGBoostRegressor()],
)
pipe.fit(ts.train)
pipe.score(ts.test)
Python API 的设计风格与 scikit-learn 非常接近,有 scikit-learn 使用经验的开发者可以零学习成本上手。
由于 getML 引擎依赖 C++ 编译的本地库,Windows 用户必须通过 Docker 运行,不支持原生 Windows 安装。macOS 用户两种方式均可,但官方更推荐 Docker 方式以避免本地依赖问题。
getML 采用 Elastic License 2.0 (ELv2) 许可证,而非传统的 Apache 2.0 或 MIT。ELv2 是弹性许可证的一种,其核心限制是:禁止将本软件作为托管服务(SaaS/PaaS)提供给第三方。如果你计划将 getML 作为服务的一部分对外收费提供,需要购买商业许可。纯本地使用和研究用途不受此限制。
FastProp(核心特征学习算法)是开源的,但 Relboost、Fastboost、RelMT 等更高级的算法属于专业版/企业版功能,不包含在社区版中。对于学术研究和小型项目来说,开源版本的功能已经非常强大;但对于需要追求最高精度的生产场景,可能需要评估商业版本。
getML 专注于结构化表格数据的特征工程,不涉及图像、文本、音频等非结构化数据的处理。如果你的问题是 NLP 或计算机视觉导向的,getML 不是正确的工具。
非 Docker 环境下的 Windows 支持缺失,意味着 Windows 用户必须额外学习 Docker 基础,增加了入门成本。
getML 代表了特征工程领域的一个重要趋势:从手工工程到自动化学习的范式转移。传统机器学习流程中,数据科学家 60%~80% 的时间花在数据清洗和特征工程上。AutoML 工具(如 auto-sklearn、AutoGluon)主要解决模型选择和超参数优化问题,而特征工程长期缺乏高效的自动化手段。
getML、featuretools、tsfresh 等工具的出现,正在填补这一空白。其中 getML 以 60~1000 倍的性能优势在关系型数据和时序数据场景中脱颖而出,反映了特征工程自动化的可行性和必要性正在被工业界和学术界广泛认可。
随着时间序列数据在各行各业(金融、零售、物联网、能源)中的重要性持续提升,getML 这类工具的价值将进一步凸显。
| 维度 | 评价 |
|---|---|
| 定位 | 关系型数据与时序数据的自动化特征工程引擎 |
| 核心优势 | FastProp 快 featuretools/tsfresh 60~1000 倍;Python API 友好 |
| 技术栈 | C++ 核心 + Python 3.9+ API + Go CLI |
| 部署难度 | 中等(Linux pip 一键 / Docker 全平台支持 / Windows 仅 Docker) |
| 许可模式 | ELv2(社区版功能丰富;专业/企业版含高级算法) |
| 适用人群 | 数据科学家、ML 工程师、物联网/金融/零售时序分析场景 |
| 不适合 | 非结构化数据(图像/文本)、深度学习场景、Windows 原生部署 |