探索表格数据的机器学习与深度学习应用
立即解锁
发布时间: 2025-09-10 01:24:38 阅读量: 9 订阅数: 15 AIGC 


表格数据机器学习实战
# 探索表格数据的机器学习与深度学习应用
## 1. 认识表格数据
### 1.1 什么是表格数据
表格数据是按行和列组织的数据,一组表格数据可称为表格数据集或表。每行的所有条目都与一个公共数据点或观察值相关,每行相互独立,完整描述一个特定情况。列代表该数据点的属性,常被称为变量(统计学术语)或特征(机器学习术语)。每列的所有条目具有相同的数据类型,如整数、字符串或浮点数。
例如,下面是一个包含一组国家使用的货币信息的表格:
| Country | Currency name | Currency nicknames | Currency symbol | ISO 4217 code | Units per US Dollar |
| --- | --- | --- | --- | --- | --- |
| Australia | Australian Dollar | | $ | AUD | 1.45 |
| Canada | Canadian Dollar | buck, loonie, piasse | $ | CAD | 1.29 |
| New Zealand | New Zealand Dollar | gold coin | $ | NZD | 1.61 |
| South Africa | Rand | buck | R | ZAR | 16.78 |
| United Kingdom | Pound Sterling | quid | £ | GBP | 0.83 |
| United States | US dollar | buck, greenback | $ | USD | 1.0 |
该表格中各列包含不同类型的值:
- 国家、货币名称、货币符号和 ISO 4217 代码都是分类列,因为这些列的有效值来自一个有限且相对较小的值集。
- 货币昵称是自由文本列,因为它们可以包含一系列值,也可以不包含任何值,具体取决于国家。
- 每美元兑换单位是连续列,因为它包含实数值。
表格数据可以存在于多种物理格式中:
- 独立文件,包括 CSV 文件和电子表格文件,如 Excel 和 Google Sheets 文件。
- 关系数据库中的表,例如:
- 开源数据库,如 Postgres(https://www.postgresql.org/)和 MySQL(https://www.mysql.com/)。
- 本地供应商数据库,如 SQL Server(https://mng.bz/MD2W)和 Oracle(https://www.oracle.com/ca - en/database/)。
- 云原生数据库,如 Google Cloud Spanner(https://cloud.google.com/spanner)、AWS Aurora(https://aws.amazon.com/rds/aurora/)和 Snowflake(https://www.snowflake.com/)。
需要注意的是,“结构化数据”和“表格数据”并非同义词。例如,人们有时会将具有一定结构但不是表格形式的数据(如嵌套 JSON)称为结构化数据。结构化数据还包括关系数据、时间序列数据、图形数据和空间数据,其中任何一种都可能以表格形式表示。
非表格数据的例子有:
- 图像
- 视频
- 音频
- 文本
- JSON 格式的传感器数据,如物联网设备生成的数据
- 社交媒体流数据
这些非表格数据类型的一个共同点是,它们都被非常成功地用于训练深度学习模型。在过去 10 年里,使用各种非表格数据集创建了一个又一个突破性的模型。
### 1.2 表格数据的重要性
据相关文章指出,世界上高达 90% 的数字数据是非表格数据,且非表格数据的比例每年都在增加。但尽管世界上只有一小部分数据是表格数据,这部分数据却至关重要。银行、保险公司、政府机构、零售商、制造商等所有组织都依靠表格数据来开展核心业务。这主要是因为表格数据以行和列排列的格式使其易于输入、检索、管理和分析,并且得到了许多商业软件和应用程序(如电子表格、数据库和商业智能工具)的支持。
此外,这些组织还依赖表格数据来监控进度和检测问题。作为消费者、员工和公民,我们的日常活动会在成百上千甚至数千个表格中产生更新。例如,当表格数据系统出现故障时,可能会导致整个大陆的购物者无法使用信用卡、边境卡车拥堵数英里、货运列车停运、零售网站在黑色星期五崩溃以及制造人工心脏的工厂停工等严重后果。
因此,表格数据无处不在且至关重要。对于我们许多人来说,工作都围绕着表格数据。理解如何有效地将机器学习(以及在适当情况下使用深度学习)应用于表格数据是一项非常有用的技能。
### 1.3 机器学习与深度学习的对比
深度学习和经典机器学习方法都旨在将输入数据映射到预测结果,但它们采用不同的方法。深度学习方法旨在模仿生物大脑的行为,而其他机器学习技术通常基于统计优化或相似度比较。此外,它们在如何充分利用数据方面也有着截然不同的方式。
在经典机器学习方法中,特征转换和工程至关重要。无论采用何种模型,都需要根据数据特征和数据所属的知识领域(如是否为商业数据,是否代表任何社会、经济或物理现象)对数据进行适当的转换。特征工程在经典机器学习中如此重要的原因如下:
- 相关信息提取:并非所有原始数据对特定任务都同样相关。特征工程有助于识别和提取数据中最具信息性的方面,丢弃无关或嘈杂的部分。通过关注相关特征,模型可以专注于学习基本模式,从而实现更好的泛化和提高性能。
- 数据表示:不同的模型对数据表示有不同的要求。特征工程允许将数据转换为适合模型假设和限制的格式,确保模型能够有效地从数据中学习并做出准确的预测。
- 处理非线性:在许多现实问题中,特征与目标变量之间的关系可能不是线性的。特征工程可以帮助转换数据以处理非线性问题,使线性模型更容易近似复杂的关系。
- 特定领域知识:在某些情况下,领域专家可能对数据有宝贵的见解,可用于设计相关特征。结合领域知识可以显著提高模型在特定应用中的性能。
而深度学习方法依赖于表示学习,即它们能够在内部自动将数据处理成适合解决手头问题的有意义形式。深度学习模型的表示学习能力使其能够将数据转换为更紧凑、更有意义的格式,以捕捉特定任务的相关特征和模式。在学习过程中,由于所有输入特征以非线性方式相互作用,深度学习模型可以自行发现数据中可能通过手动特征工程无法发现的复杂模式和依赖关系,并逐步从基本特征构建更复杂和抽象的层次表示。
综上所述,经典机器学习主要侧重于彻底有效的特征工程,而用于表格数据的深度学习模型则更关注神经元层的架构安排和单个神经元的特性。
下面是机器学习与深度学习的对比表格:
| 对比项 | 经典机器学习 | 深度学习 |
| --- | --- | --- |
| 核心方法 | 特征转换和工程 | 表示学习 |
| 方法原理 | 基于统计优化或相似度比较 | 模仿生物大脑行为 |
| 数据利用方式 | 根据数据特征和领域知识转换数据 | 自动处理数据成有意义形式 |
| 重点关注 | 特征工程 | 神经元层架构和单个神经元特性 |
### 1.4 代码获取与运行
代码示例可以从以下途径获取:
- 在线版本:可以从 https://livebook.manning.com/book/machine - learning - for - tabular - data 获取可执行的代码片段。
- 完整代码下载:可从 Manning 网站(www.manning.com)和 GitHub(https://github.com/lmassaron/Machine - Learning - on - Tabular - Data)下载书中示例的完整代码。
除第 10 章和第 11 章外,所有章节的代码示例都设计为在托管的 Jupyter Notebook 环境(如 Kaggle 或 Google Colab)中运行。第 10 章包括一个需要在本地系统上运行的示例以及在 Google Cloud 中运行的示例,第 11 章的示例设计为在 Google Cloud 中运行。
### 1.5 在线讨论论坛
购买相关资料可免费访问 Manning 的在线阅读平台 liveBook。使用 liveBook 的独家讨论功能,可以全局或针对特定部分或段落对内容添加评论。可以轻松地为自己做笔记、提问和回答技术问题,并从作者和其他用户那里获得帮助。访问论坛的地址是:https://livebook.manning.com/book/machine - learning - for - tabular - data/discussion ,也可以在 https://livebook.manning.com/discussion 了解更多关于 Manning 论坛和行为规则的信息。
### 1.6 作者简介
- Mark Ryan 是 Google 开发者知识平台的 AI 负责人,拥有滑铁卢大学计算机科学数学学士学位和多伦多大学计算机科学硕士学位。他是两本书的作者,喜欢研究机器学习的未被充分探索的应用。
- Luca Massaron 是一位拥有十多年经验的数据科学家,擅长将数据转化为更智能的产品,解决现实世界的问题,并为企业和利益相关者创造价值。他是 AI、机器学习和算法方面畅销书的作者,还是 3 次 Kaggle 大师,在全球竞赛排名中位列第 7,也是 Google 机器学习开发者专家。
### 1.7 封面插图
封面插图“La Marchande de Gateaux”(或“The Cake Seller”)取自 Louis Curmer 于 1841 年出版的一本书。当时,通过人们的穿着很容易识别他们的居住地以及职业或社会地位。Manning 通过基于几个世纪前丰富多样的地域文化的书籍封面,来颂扬计算机行业的创造力和创新精神。
下面是一个 mermaid 格式的流程图,展示了表格数据处理的大致流程:
```mermaid
graph LR
A[获取表格数据] --> B[数据探索与分析]
B --> C{选择建模方法}
C -->|经典机器学习| D[特征工程]
C -->|深度学习| E[构建模型架构]
D --> F[训练模型]
E --> F
F --> G[模型评估]
G --> H{模型效果是否满意}
H -->|否| I[调整参数或方法]
I --> F
H -->|是| J[应用模型进行预测]
```
## 2. 总结与展望
表格数据在现代生活和工作中占据着核心地位,理解其特点、重要性以及如何应用机器学习和深度学习方法对其进行处理至关重要。经典机器学习和深度学习在处理表格数据时各有优劣,需要根据具体情况选择合适的方法。在实际应用中,我们可以通过获取代码示例进行实践,并利用在线讨论论坛与他人交流,不断提升自己处理表格数据的能力。未来,随着技术的不断发展,表格数据的处理方法也将不断创新和完善,我们可以持续关注并探索新的技术和应用场景。
## 3. 表格数据的结构与特征分析
### 3.1 表格数据结构剖析
表格数据由行和列构成,行代表一个个独立的数据点或观测值,列则是这些数据点的属性。比如在一个记录学生信息的表格中,每一行可能代表一个学生的信息,而列则可能包括学生的姓名、年龄、成绩等。
表格中的列通常具有特定的数据类型,常见的有以下几种:
| 数据类型 | 描述 | 示例 |
| --- | --- | --- |
| 整数型 | 用于表示整数 | 学生的年龄、班级人数等 |
| 字符串型 | 用于存储文本信息 | 学生的姓名、学校名称等 |
| 浮点型 | 用于表示带有小数的数值 | 学生的成绩、身高体重等 |
| 布尔型 | 只有两个值,True 或 False | 是否是优秀学生等 |
### 3.2 常见问题及解决办法
在处理现实世界的表格数据时,会遇到各种各样的问题,以下是一些常见问题及对应的解决办法:
- **缺失值问题**:数据中可能存在某些单元格的值缺失的情况。解决办法可以是删除包含缺失值的行或列,但这可能会导致数据量减少;也可以使用均值、中位数或众数来填充缺失值;还可以使用更复杂的插值方法进行填充。
- **异常值问题**:数据中可能存在一些与其他数据差异较大的值。可以通过绘制箱线图等方法来识别异常值,对于异常值可以选择删除、修正或者进行特殊处理。
- **数据不一致问题**:例如同一列中数据的格式或含义不一致。这需要对数据进行清洗,统一数据格式和含义。
### 3.3 数据来源与获取
表格数据可以从多种在线和离线来源获取,特别是在商业组织内部。以下是一些常见的获取途径:
- **在线数据集平台**:如 Kaggle、UCI Machine Learning Repository 等,这些平台提供了大量公开的数据集供研究和学习使用。
- **企业内部数据库**:企业的业务数据通常存储在数据库中,如关系型数据库(MySQL、Oracle 等),可以通过编写 SQL 查询语句来获取所需的数据。
- **文件存储**:包括 CSV 文件、Excel 文件等,可以直接读取这些文件获取数据。
### 3.4 探索性数据分析示例
下面以一个简单的示例来展示如何进行有效的探索性数据分析。假设我们有一个包含学生成绩信息的 CSV 文件,以下是使用 Python 和 Pandas 库进行分析的代码:
```python
import pandas as pd
# 读取 CSV 文件
data = pd.read_csv('student_scores.csv')
# 查看数据的基本信息
print('数据基本信息:')
data.info()
# 查看数据集行数和列数
rows, columns = data.shape
if rows < 100:
# 短表数据(行数少于100)查看全量数据信息
print('数据全部内容信息:')
print(data.to_csv(sep='\t', na_rep='nan'))
else:
# 长表数据查看数据前几行信息
print('数据前几行内容信息:')
print(data.head().to_csv(sep='\t', na_rep='nan'))
# 查看数据集行数和列数
rows, columns = data.shape
if rows < 100:
# 短表数据(行数少于100)查看全量数据信息
print('数据全部内容信息:')
print(data.to_csv(sep='\t', na_rep='nan'))
else:
# 长表数据查看数据前几行信息
print('数据前几行内容信息:')
print(data.head().to_csv(sep='\t', na_rep='nan'))
# 查看数据集行数和列数
rows, columns = data.shape
if rows < 100:
# 短表数据(行数少于100)查看全量数据信息
print('数据全部内容信息:')
print(data.to_csv(sep='\t', na_rep='nan'))
else:
# 长表数据查看数据前几行信息
print('数据前几行内容信息:')
print(data.head().to_csv(sep='\t', na_rep='nan'))
# 查看数据的描述性统计信息
print('数据描述性统计信息:')
print(data.describe().to_csv(sep='\t', na_rep='nan'))
```
通过以上代码,我们可以对数据的基本信息、前几行内容以及描述性统计信息进行查看,从而对数据有一个初步的了解。
下面是一个 mermaid 格式的流程图,展示了探索性数据分析的流程:
```mermaid
graph LR
A[读取数据] --> B[查看数据基本信息]
B --> C[查看数据内容]
C --> D[查看描述性统计信息]
D --> E[发现数据特征与问题]
```
## 4. 不同建模方法的比较与选择
### 4.1 比较标准
在选择合适的建模方法时,可以基于以下三个关键标准进行比较:
- **简单性**:模型的复杂度和实现难度。简单的模型通常易于理解和解释,开发和维护成本较低。
- **透明度**:模型的决策过程是否容易理解。透明度高的模型可以让我们清楚地知道模型是如何做出决策的。
- **有效性**:模型在实际应用中的性能表现,如预测的准确性、召回率等。
### 4.2 经典机器学习与深度学习对比
经典机器学习和深度学习在上述三个标准上各有优劣,以下是具体的对比:
| 比较标准 | 经典机器学习 | 深度学习 |
| --- | --- | --- |
| 简单性 | 通常较为简单,模型结构和算法相对容易理解和实现 | 模型结构复杂,需要较多的专业知识和计算资源 |
| 透明度 | 较高,模型的决策过程可以通过特征重要性等方法进行解释 | 较低,深度学习模型通常被视为“黑盒”,决策过程较难解释 |
| 有效性 | 在处理小规模数据和简单问题时表现较好 | 在处理大规模数据和复杂问题时具有优势 |
### 4.3 选择建议
根据不同的需求和场景,可以选择不同的建模方法:
- 如果对模型的简单性和透明度要求较高,且数据规模较小、问题相对简单,建议选择经典机器学习方法。
- 如果需要处理大规模数据和复杂问题,且对模型的预测性能要求较高,可以考虑使用深度学习方法。
### 4.4 结合使用
在某些情况下,还可以将经典机器学习和深度学习方法结合使用,以获得更好的效果。例如,可以先使用经典机器学习方法进行特征工程,然后将处理后的数据输入到深度学习模型中进行训练。
下面是一个 mermaid 格式的流程图,展示了建模方法选择的流程:
```mermaid
graph LR
A[明确问题与数据情况] --> B{数据规模是否大且问题复杂}
B -->|是| C[考虑深度学习方法]
B -->|否| D{对简单性和透明度要求是否高}
D -->|是| E[选择经典机器学习方法]
D -->|否| F{是否可结合使用}
F -->|是| G[结合经典机器学习与深度学习]
F -->|否| H[根据其他因素选择]
```
## 5. 总结
表格数据处理是一个复杂而又重要的领域,涉及到数据的获取、分析、建模等多个环节。在处理表格数据时,我们需要了解表格数据的结构和特征,掌握常见问题的解决办法,能够根据不同的需求选择合适的建模方法。无论是经典机器学习还是深度学习,都有其各自的优势和适用场景,在实际应用中可以根据具体情况灵活选择和结合使用。同时,通过不断地实践和学习,可以提高我们处理表格数据的能力,为解决实际问题提供有力的支持。
0
0
复制全文
相关推荐









