vlambda博客
学习文章列表

读书笔记《distributed-data-systems-with-azure-databricks》第8章机器学习的数据库运行时

Chapter 8: Databricks Runtime for Machine Learning

本章将深入探讨经典机器学习算法的开发,以基于表格数据训练和部署模型,同时探索库和算法。这些示例将重点介绍使用 Azure Databricks Runtime for Machine Learning (Databricks Runtime ML) 的特殊性和优势。

在本章中,我们将探讨以下概念,这些概念侧重于我们如何提取和改进数据中可用的特征,以训练我们的机器学习和深度学习模型。我们将讨论的主题在这里列出:

  • Loading data
  • Feature engineering
  • Time-series data sources
  • Handling missing values
  • Extracting features from text
  • Training machine learning models on tabular data

在以下部分中,我们将讨论执行所介绍的操作所需的必要库,并提供一些关于最佳实践如何...

Loading data

逗号分隔 值(CSV)是最广泛使用的格式机器学习应用程序中的表格数据。正如名称所暗示的,它以行的形式存储数据,以逗号或制表符分隔。

部分介绍了有关加载专门用于机器学习和深度学习应用程序的数据的信息。尽管我们可以考虑前面章节中介绍的这些概念,但我们将加强有关如何将表格数据直接读入 Azure Databricks 以及执行此操作的最佳实践的概念。

Reading data from DBFS

在分布式计算环境(如 Azure Databricks)中训练机器学习算法时,共享存储的需求变得很重要,尤其是在使用分布式深度学习应用程序时。 Azure Databricks 文件 系统 (DBFS ) 允许使用 Spark 和本地文件应用程序 集群的数据>编程 接口(API):

在 Azure Databricks 中...

Feature engineering

机器学习模型使用输入数据进行训练,然后提供对未见数据的预测作为结果。此输入数据通常由通常以结构化列形式出现的特征组成。算法使用这些数据来推断可用于推断结果的模式。在这里,特征工程的需求产生于两个主要目标,如下所示:

  • Refactoring the input data to make it compatible with the machine learning algorithm we have selected for the task. For example, we need to encode categorical values if these are not supported by the algorithm we choose for our model.
  • Improving the predictions produced by the models according to the performance metric we have selected for the problem at hand.

通过特征工程,我们从原始输入数据中提取相关特征,以便能够根据要解决的问题的建模方式准确地表示它,从而产生...

Time-series data sources

在数据科学 和工程中,最常见的挑战之一是时间数据操作。包含地理空间或交易数据的数据集,主要位于应用程序的金融和经济领域,是由时间戳索引的数据的一些最常见示例。在金融、欺诈甚至社会经济时间数据等领域工作最终导致需要加入、聚合和可视化数据点。

这些时间数据通常以日期时间格式出现,这些格式不仅可能在格式本身上有所不同,而且在其包含的信息方面也可能有所不同。其中一个例子是 DD/MM/YYYY 和 MM/DD/YYYY 格式之间的差异。如果使用的格式不匹配,误解这些不同的日期时间格式可能会导致失败或格式错误的结果。此外,这些数据不是数字格式,正如我们在本章前几节中看到的那样,这可能导致...

Handling missing values

现实生活中的数据远非完美,缺失值的情况非常普遍。数据变得不可用的机制对于提出一个好的插补策略非常重要。我们将插补称为处理数据中缺失值的过程,在大多数情况下,这些值表示为 NaN 值。其中最重要的方面之一是知道缺少哪些值:

  1. In the following code example, we will show how we can find out which columns have missing or null values by summing up all the Boolean output of the Spark isNull method by casting this Boolean output to integers:
    from pyspark.sql.functions import col, sum df.select(*(sum(col(c).isNull().cast("int")).alias(c) for c in df.columns)).show()
  2. Another alternative would be to use the output of the Spark data frame describe method to filter out the count of missing values in each column and, finally, subtracting the count...

Extracting features from text

从文本中提取信息 依赖于能够捕获底层语言结构。这意味着我们打算捕捉标记之间的含义和关系以及它们试图在句子中传达的含义。这些与理解文本含义相关的操作和任务产生了跨学科领域的一个完整分支,称为自然语言处理(NLP)。在这里,我们将重点介绍一些与将文本转换为数字特征相关的示例,这些特征可以在以后使用 Azure Databricks 中的 PySpark API 用于机器学习和深度学习算法。

TF-IDF

术语 频率反向 文档 频率 (TF-IDF) 是一种非常常用的文本预处理操作,将句子转换为基于组成它们的标记的相对频率。频率逆术语用于创建一组数字特征,这些特征是根据相关性...

Training machine learning models on tabular data

在这个例子中,我们将使用数据科学中非常流行的数据集,即物理化学特性的葡萄酒数据集,来预测特定葡萄酒的质量。我们将使用 Azure Databricks Runtime ML,因此请确保将笔记本附加到运行此版本可用运行时的群集,如本章开头的要求中所述。

Engineering the variables

我们将开始使用 以下步骤:

  1. Our first step is to load the necessary data to train our models. We will load the datasets, which are stored as example datasets in DBFS, but you can also get them from the UCI Machine Learning repository. The code is shown in the following snippet:
    import pandas as pd
    white_wine = pd.read_csv("/dbfs/databricks-datasets/wine-quality/winequality-white.csv", sep=";")
    red_wine = pd.read_csv("/dbfs/databricks-datasets/wine-quality/winequality-red.csv&quot...

Summary

在本节中,我们介绍了许多与如何使用标记化、多项式扩展和 one-hot 编码等方法提取和改进数据中可用特征相关的示例。这些方法允许我们为模型的训练准备变量,并被视为特征工程的一部分。

接下来,我们深入研究了如何使用 TF-IDF 和 Word2Vec 从文本中提取特征,以及如何使用 PySpark API 处理 Azure Databricks 中的缺失数据。最后,我们完成了一个示例,说明如何训练深度学习模型并使其准备好在发布 REST API 请求时提供服务和获取预测。

在下一章中,我们将更多地关注使用 TFRecords 和 Petastorm 处理大量数据以进行深度学习,以及如何利用现有模型从 Azure Databricks 中的新数据中提取特征。