Press "Enter" to skip to content

表格数据的演变:从分析到人工智能

探索Kaggle竞赛、开源社区和生成式人工智能如何改变表格数据空间。

作者:Image by Author

引言

表格数据是指以行和列组织的数据。它包括从CSV文件和电子表格到关系数据库的所有内容。表格数据存在了几十年,是数据分析和机器学习中最常见的数据类型之一。

传统上,表格数据被用于简单地组织和报告信息。然而,在过去的十年中,由于几个关键因素,它的用途发生了重大变化:

  • Kaggle竞赛:Kaggle于2010年兴起[1],通过使用真实世界的表格数据集推广数据科学和机器学习竞赛。这使得许多数据科学家和机器学习工程师接触到了在表格数据上分析和构建模型的能力。
  • 开源贡献:得益于诸如Pandas、DuckDB、SDV和Scikit-learn等重要的开源库,现在在表格数据上进行操作、预处理和构建预测模型变得非常容易。此外,开源数据集为初学者提供了轻松访问真实世界数据集的机会。
  • 生成式人工智能:最近在生成式人工智能方面取得的进展,特别是大型语言模型,现在能够生成逼真的表格数据,并使任何人都能够进行数据分析和构建机器学习应用变得很容易。

在本文中,我们将详细讨论这些因素,并且看一些公司和研究人员如何以创新的方式使用表格数据。主要的观点是,在正确的方式分析和准备表格数据的重要性,以获取机器学习和人工智能的好处。

本文是2023年Kaggle AI报告的一部分,参赛者在其中撰写关于七个主题之一的论文。提问要求参赛者描述社区在过去两年的工作和实验中学到了什么。

表格数据Kaggle竞赛

Kaggle竞赛对数据科学和机器学习工程领域产生了深远影响。此外,表格竞赛引入了新的技术、工具和各种表格任务。

除了学习和知识发展外,赢得竞赛通常还有现金奖励,进一步激励参与。例如:

  • 平均而言,Kaggle竞赛的奖金约为21,246美元,参与的团队大约有1,498个。
  • 最高的现金奖金高达125,000美元,这给了获胜者在使用表格数据时更大的动力,推动其突破可能性的界限。

注意:我们将使用Meta Kaggle数据集进行我们的分析和代码示例。该数据集在Apache 2.0下发布,每天更新。

import pandas as pdcomptags = pd.read_csv("/kaggle/input/meta-kaggle/CompetitionTags.csv")tags = pd.read_csv("/kaggle/input/meta-kaggle/Tags.csv")comps = pd.read_csv("/kaggle/input/meta-kaggle/Competitions.csv")tabular_competition_ids = comptags.query("TagId == 14101")['CompetitionId']tabular_competitions = comps.set_index('Id').loc[tabular_competition_ids]tabular_competitions.describe()[["RewardQuantity","TotalTeams"]]
代码输出

在过去的十年中,Kaggle举办了许多以表格数据为中心的竞赛,其中一些自2015年以来为获胜团队提供高达100,000美元的现金奖励。

import plotly.express as pxtabular_competitions["EnabledDate"] = pd.to_datetime(    tabular_competitions["EnabledDate"], format="%m/%d/%Y %H:%M:%S")tabular_competitions["EnabledDate"] = tabular_competitions["EnabledDate"].dt.yeartabular_competitions.sort_values(by="EnabledDate", inplace=True)fig = px.bar(    tabular_competitions,    x="EnabledDate",    y="RewardQuantity",    title="Reward Distribution of Tabular Competitions over the Years",    labels={"RewardQuantity": "奖金(美元)", "EnabledDate": "年份"},)fig.show()
多年来表格竞赛的奖励分布

在这段时间内,表格数据竞赛的数量显著增长,尤其在2015年和2022年活动非常活跃。

fig = px.histogram(    tabular_competitions,    x="EnabledDate",    nbins=20,    title="多年来的表格竞赛数量",    labels={"EnabledDate": "年份"},)fig.show()
多年来的表格竞赛数量

表格操场系列

由于对表格数据问题的大量需求,Kaggle团队在2021年启动了一个名为表格操场系列(Tabular Playground Series)的月度比赛实验[2]。这些比赛旨在为参赛者提供一个稳定的平台,以提高他们在表格数据上的技能。

表格操场系列比赛基于合成数据集,这些数据集复制了公共数据或来自之前的Kaggle竞赛的数据结构。合成数据集是使用名为CTGAN的深度学习生成网络创建的[3]。

  • 接触:许多机器学习从业者通过参与表格操场系列首次接触到了处理表格数据的工作。这有助于熟悉数据加载、特征工程和模型调优等概念。
  • 技术:Kaggle竞赛展示了特征工程、数据增强和集成建模等在表格数据上特别有用的技术。参赛者使用这些技术来获得更高的分数,为其他人树立了榜样。
  • 社区:Kaggle竞赛中的讨论为分享如何最好地处理表格数据的技巧和思路提供了一个肥沃的土壤。这有助于形成一个围绕表格数据的实践社区。
  • 民主化:Kaggle竞赛使更广泛的人群,不仅仅是数据专家,更容易接触到表格数据的机器学习。参与者可以免费使用CPU和GPU,以及大型数据集,任何人都可以参加竞赛。
来自playground-series-s3e18的图片

表格操场系列目前仍在进行中,目前是第3季第18集。这表明现金奖励并不是参与者的唯一动力,因为这些比赛不提供任何奖金或积分制度。相反,该系列面向那些想通过实践各种类型的表格数据来提高自己技能的数据爱好者。

竞赛解决方案

通过对获胜解决方案的研究发现,想要获得高名次并不需要花哨的工具或深度学习模型。即使是简单的线性回归模型,通过仔细的特征工程也可以赢得奖项。关键是找到解决给定问题的简单而有效的技术。

例如,赢得GoDaddy – 微企业密度预测竞赛[5]的冠军[4]使用了线性回归模型。这并不令人意外,因为获胜的解决方案通常基于简单的模型,但涉及到广泛的特征选择、交叉验证、数据增强和集成技术。

来自Farid的图片

表格数据开源贡献

与表格数据相关的开源贡献对推动该领域的发展和实现真实应用至关重要。贡献可分为两大类:

  1. 开源数据集
  2. 开源工具

开源数据集

Kaggle的成功归功于开源贡献者的慷慨贡献,他们共享用于机器学习问题的实际表格数据集。这些数据集涵盖各个领域和用例,为机器学习社区提供了有价值的训练和基准数据。许多公司和组织公开贡献了他们的专有表格数据以推动该领域的发展。Kaggle上可用的数据集数量和多样性为处理表格数据的创新发挥了重要推动作用。

Kaggle数据集[6]是初学者和专家们寻找特定数据集的首选地。其庞大的表格数据集收藏每天帮助数百名社区成员练习新技术和处理新类型的数据。

Kaggle上的图片

开源工具

通过开发者社区的贡献,实现了几个主要用于分析、处理和建模表格数据的开源工具。像Pandas、Numpy、scikit-learn、TensorFlow、XGBoost等工具已成为大规模处理表格数据的关键支持者。这些库提供了全面的功能集,使得广大用户能够轻松使用表格数据进行机器学习。持续的社区贡献确保这些工具不断改进,与新需求保持同步。

此外,还有一些高效的工具,如DuckDB和PySpark,提供了一种用户友好且强大的方式来分析和处理大型表格数据。

%pip install duckdb -q

使用DuckDB,您可以轻松导入CSV文件并在几秒钟内运行SQL查询。

import duckdb
duckdb.sql('SELECT * FROM "/kaggle/input/meta-kaggle/Competitions.csv" LIMIT 5')

┌───────┬────────────────┬──────────────────────┬───┬──────────────────────┬──────────┬───────────────────┐
│  Id   │      Slug      │        Title         │ … │ EnableSubmissionMo…  │ HostName │ CompetitionTypeId │
│ int64 │    varchar     │       varchar        │   │       boolean        │ varchar  │       int64       │
├───────┼────────────────┼──────────────────────┼───┼──────────────────────┼──────────┼───────────────────┤
│  2408 │ Eurovision2010 │ Forecast Eurovisio…  │ … │ false                │ NULL     │                 1 │
│  2435 │ hivprogression │ Predict HIV Progre…  │ … │ false                │ NULL     │                 1 │
│  2438 │ worldcup2010   │ World Cup 2010 - T…  │ … │ false                │ NULL     │                 1 │
│  2439 │ informs2010    │ INFORMS Data Minin…  │ … │ false                │ NULL     │                 1 │
│  2442 │ worldcupconf   │ World Cup 2010 - C…  │ … │ false                │ NULL     │                 1 │
├───────┴────────────────┴──────────────────────┴───┴──────────────────────┴──────────┴───────────────────┤
│ 5 rows                                                                             42 columns (6 shown) │
└─────────────────────────────────────────────────────────────────────────────────────────────────────────┘

使用Python关系API可以快速对表格数据执行多个操作。其语法类似于Pandas,易于使用。

rel = duckdb.read_csv('/kaggle/input/meta-kaggle/Competitions.csv')
rel.filter("RewardQuantity > 100000").project(    "EnabledDate,RewardQuantity").order("RewardQuantity").limit(5)

┌─────────────────────┬────────────────┐
│     EnabledDate     │ RewardQuantity │
│       varchar       │     double     │
├─────────────────────┼────────────────┤
│ 07/25/2019 21:10:14 │       120000.0 │
│ 11/02/2021 16:00:27 │       125000.0 │
│ 11/14/2016 08:02:32 │       150000.0 │
│ 11/22/2021 18:53:57 │       150000.0 │
│ 05/11/2022 18:46:43 │       150000.0 │
└─────────────────────┴────────────────┘

基于表格数据的生成式人工智能

生成式人工智能是一种由变分自编码器和生成对抗网络(GAN)等神经网络驱动的人工智能子领域,可以生成逼真的图像、创作原创音乐、撰写新闻文章和故事,甚至设计物体。它通过大型数据集进行训练,使生成式人工智能模型能够发现数据中存在的潜在模式、结构和统计分布。

生成式人工智能模型在处理表格数据方面取得了重大进展。数据增强、异常检测和合成数据生成等功能有助于解决数据稀缺、隐私和偏见等问题。

然而,最近的进展,如ChatGPT和其他大型语言模型(LLM),现在也被用作表格数据任务的助手。生成式人工智能正在改变我们的工作流程的一些方式,包括:

  • 代码辅助:像ChatGPT这样的LLM可以帮助处理与表格数据相关的编码任务,如特征工程、预处理、建模和评估机器学习管道。它们可以提供代码片段、函数和完整的脚本。
  • 数据理解:生成式人工智能可以提供有关数据分布、相关性、缺失值、异常值、目标变量等的洞察。
  • 深入分析:它执行统计测试、创建可视化图表和导出其他摘要指标,为从事者提供对表格数据集的全面分析,以指导建模决策。
  • 网络抓取:生成式人工智能工具可以帮助您从网站/应用程序中抓取新的表格数据,辅助数据获取任务。

尽管存在安全、偏见和能力局限等问题,但大型语言模型正在开始改变数据科学家和机器学习工程师在日常工作中处理表格数据的方式。它们越来越成为处理各种分析和编码任务的助手,使从业者能够专注于更高级的工作。

用于表格数据的ChatGPT

ChatGPT [7] 已迅速成为几乎每个处理表格数据阶段的宝贵助手,从帮助数据清洗和特征工程到生成复杂的模型代码,解释指标,生成数据分析报告,甚至辅助于用于数据增强和异常检测等任务的合成数据生成。

通过ChatGPT,您可以通过简单地输入详细提示来轻松构建和训练机器学习模型。此外,您还可以利用多个插件自动化复杂任务,如运行代码和获取互联网访问。

请查看“使用ChatGPT进行数据科学项目的指南”[8],了解如何在真实的端到端数据科学项目中使用ChatGPT。

作者提供的图像

用于表格数据的生成式人工智能工具

生成式人工智能工具,如PandasAI [9],使任何人都能轻松进行数据分析、数据集清洗和数据可视化。这些工具使用诸如gpt-3.5-turbo [10]之类的大型语言模型生成有见地的结果。此外,您还可以连接到托管在Hugging Face上的开源模型进行人工智能分析。

%pip install pandasai -q

from kaggle_secrets import UserSecretsClientfrom pandasai import PandasAIfrom pandasai.llm.openai import OpenAIuser_secrets = UserSecretsClient()secret_value_0 = user_secrets.get_secret("OPENAI_API_KEY")llm = OpenAI(api_token=secret_value_0)pandas_ai = PandasAI(llm)

为了查看具有最高RewardQuantity的前五个竞赛,我们通过输入提示向ChatGPT请求显示它们。

pandas_ai.run(tabular_competitions, prompt='Can you provide a list of the top five competitions with the highest RewardQuantity? Please only show the name of the competition,Date,and the corresponding reward.')
代码输出

您甚至可以要求它执行复杂任务或生成可视化图表。

pandas_ai.run(tabular_competitions, prompt='请列出所有包含"Market"的竞赛。')
代码输出

这只是个开始,我们将看到许多新的人工智能工具,通过自动化任务和提供协助,使数据科学家和开发人员的工作更加轻松。

结论

尽管在利用表格数据进行机器学习和人工智能应用方面取得了重大进展,但我们可能只是见证了刚刚开始。在未来,我们可以期待由先进的人工智能代理驱动的新强大工具[11],将自动化整个表格机器学习任务的工作流程,从数据摄入和清洗到特征工程、模型训练、评估和在Web应用中部署。随着生成式人工智能和自然语言处理的不断进步,这些代理将能够接受高级提示来完成整个表格数据科学项目,从数据到洞察。

本文强调了Kaggle竞赛、开源社区和生成式人工智能对我们处理表格数据(如数据分析和机器学习)的方法的重大影响。要深入了解该主题,您可以阅读2023年Kaggle AI报告竞赛的获奖论文[12]。

参考资料

[1] 维基百科贡献者,“Kaggle”,维基百科,2023年6月,[在线]. 可用:https://en.wikipedia.org/wiki/Kaggle

[2] “Tabular Playground Series — Jan 2021 | Kaggle.” https://www.kaggle.com/competitions/tabular-playground-series-jan-2021

[3] Sdv-Dev, “GitHub — sdv-dev/CTGAN: Conditional GAN for generating synthetic tabular data.,” GitHub. https://github.com/sdv-dev/CTGAN

[4] KAGGLEQRDL, “#1 solution — generalization with linear regression,” Mar. 16, 2023. https://www.kaggle.com/competitions/godaddy-microbusiness-density-forecasting/discussion/395131

[5] “GoDaddy — Microbusiness Density Forecasting | Kaggle,” Dec. 15, 2022. https://www.kaggle.com/competitions/godaddy-microbusiness-density-forecasting/overview

[6] “Find Open Datasets and Machine Learning Projects | Kaggle.” https://www.kaggle.com/datasets

[7] “Introducing ChatGPT,” OpenAI, Nov. 30, 2022. https://openai.com/blog/chatgpt

[8] A. A. Awan, “A Guide to Using ChatGPT For Data Science Projects,” Mar. 2023, [Online]. Available: https://www.datacamp.com/tutorial/chatgpt-data-science-projects

[9] Gventuri, “GitHub — gventuri/pandas-ai: Pandas AI is a Python library that integrates generative artificial intelligence capabilities into Pandas, making dataframes conversational,” GitHub. https://github.com/gventuri/pandas-ai

[10] “GPT-3.5,” OpenAI. https://platform.openai.com/docs/models/gpt-3-5

[11] R. Cotton, “Introduction to AI Agents: Getting Started With Auto-GPT, AgentGPT, and BabyAGI,” May 2023, [Online]. Available: https://www.datacamp.com/tutorial/introduction-to-ai-agents-autogpt-agentgpt-babyagi

[12] “2023 Kaggle AI Report.” May 2023, [Online]. Available: https://www.kaggle.com/competitions/2023-kaggle-ai-report/leaderboard

Leave a Reply

Your email address will not be published. Required fields are marked *