算法交易中的Python - 页 21

 

使用 Python 轻松回测您的平均成本策略



使用 Python 轻松回测您的平均成本策略

在接下来的 20 分钟左右,我们将在 Python 中实施美元成本平均策略。该策略将允许您评估特定资产或指数在一定时期内平均成本的表现。我们将使用一个名为 backtesting.py 的工具来实施此策略。 Backtesting.py 是一个用户友好的 Python 框架,与 Vectorbt 或 Backtrader 等其他库相比,它没有那么令人生畏。如果您是 Python 新手,这对您来说将是一个不错的选择。

我们将实施的美元成本平均策略相对简单,但我还将向您展示如何扩展它。我们的策略包括每周一或周二购买固定金额的特定资产,并重复此过程,直到我们用完数据。首先,打开一个终端并设置一个新的虚拟环境,以确保我们的实施有一个干净的环境。设置虚拟环境后,使用 pip 安装回测包:

pip安装回测

安装包后,我们可以继续使用 Python 文件。我们需要导入一些必要的模块和数据。从回测中导入回测和策略模块。此外,从 backtesting.test 导入一些虚拟数据,特别是 google 数据。我们还需要 pandas 模块来进行数据操作。

现在,让我们定义我们的策略类。创建一个名为 DCA(美元成本平均)的类,该类继承自策略类。在这个类中,我们将设置一个名为 amount_to_invest 的类变量,它代表我们想要投资的固定美元金额。最初,将其设置为 10。

接下来,我们需要在此类中定义两个函数:__init__ 和 next。 __init__ 函数在初始化期间被调用,用于预先计算我们以后可能需要的任何值。在我们的例子中,我们将创建一个指示我们星期几的指示器。为此,我们将使用 backtesting.py 提供的 self.indicator 方法。我们可以将指标定义为 self.day_of_week = self.indicator(lambda x: x, self.data.close.s.dt.dayofweek)。该指标将为我们的数据返回一个星期几值的数组(0-6,其中星期一为 0,星期日为 6)。

现在,让我们继续下一个函数,这是我们实现交易逻辑的地方。针对每个数据条调用此函数,并允许我们根据当前数据做出决策。在我们的例子中,我们将使用 if self.day_of_week == 1: 检查星期几是否等于 1(星期二)。如果是星期二,我们将触发买入信号。为了执行买入订单,我们将使用 backtesting.py 提供的 self.buy 函数。我们可以通过将 amount_to_invest 除以资产的当前收盘价来计算买入订单的大小。为了确保我们购买整数股,我们可以使用 math.floor 对结果进行舍入。

为了处理分数份额,我们可以通过将资产乘以一个小数字(例如 10 ** -6)来分割份额。这会将股票分割成微股,随后可以通过除以相同的小数将其转换回实际购买的股票数量。

最后,我们需要运行回测并提取统计数据。为此,我们可以使用 bt.run() 并将结果分配给名为 stats 的变量。我们还可以使用 bt.plot() 绘制结果。

由于我们尚未实现销售逻辑,因此该图显示为一条连续线,没有任何卖点。我们很快就会解决这个问题。但在此之前,让我们从回测结果中提取一些统计数据。

为此,我们将使用之前定义的 stats 变量。我们可以打印各种统计数据,如总回报、年化回报、最大回撤等等。

如果您有兴趣探索其他性能指标,请随意添加更多统计信息。

现在让我们继续实现销售逻辑。由于我们使用美元成本平均策略,因此我们每周都会销售相同的固定美元金额。就我们而言,我们将在周五出售。

在这里,我们使用之前创建的 day_of_week 指标来检查星期几是否为 4(星期五)。如果是星期五,我们将 amount_to_invest 除以当前收盘价,卖出与之前购买的金额相同的美元。这确保我们出售适当数量的股票以匹配我们的投资金额。

现在,当我们进行回测时,我们应该在图表上看到卖点,表明我们卖出头寸的星期五。

请随意尝试该策略的不同变体,例如调整买入/卖出天数或根据价格变动实施附加条件。该框架允许您根据您的要求轻松扩展和自定义您的策略。

请记住调整 amount_to_invest 变量并探索不同的资产数据以了解策略的执行情况。

我希望这可以帮助您使用 Python 中的 backtesting.py 库实现和探索美元成本平均策略。如果您还有任何疑问,请告诉我!

Backtest Your Dollar Cost Average Strategy easily in Python
Backtest Your Dollar Cost Average Strategy easily in Python
  • 2022.06.29
  • www.youtube.com
We backtest a simple dollar cost averaging strategy in backtesting.py. Backtesting.py is a super easy to use framework for beginners to python or to backtest...
 

Backtesting.py 中的自定义指标 - Python 深入探究



Backtesting.py 中的自定义指标 - Python 深入探究

在本视频中,我们将探索在 backtesting.py 库中创建自定义指标的过程。此功能将使我们能够通过创建指标并将 Python 函数转换为与 backtesting.py 生态系统兼容的格式来轻松回测任何交易策略。

在我们深入研究指标创建的细节之前,建议您查看 YouTube 上的免费课程,其中涵盖了 backtesting.py 的大部分方面。本课程将提供对库的高级理解,这对于探索本视频中的指标创建时将很有帮助。

在本视频中,我们将重点关注三个不同的示例来涵盖各种指标的想法。第一个示例涉及使用外部 Python 程序中生成的信号并将其集成到 backtesting.py 中。当您已经从外部源获得买卖信号并希望将它们合并到回测过程中时,此方法非常有用。

第二个示例将演示如何使用 pandas-ta 库为每个指标返回多个值。具体来说,我们将使用布林带指标并展示如何返回包含下轨和上轨的数据框,而不仅仅是一个简单的 numpy 数组。此示例将强调创建具有多个值的指标的多功能性。

最后,我们将手动编写动量策略来演示如何使用纯 Python 创建自定义指标。此示例将展示使用 Python 编程创建指标的灵活性,从而为指标设计提供无限的可能性。

要按照示例进行操作,请确保安装了必要的库,包括回测、pandas 和 pandas-ta。安装这些库后,为代码示例创建一个 Python 文件。

代码的初始部分设置了使用 backtesting.py 时所需的样板。它导入所需的类“backtest”和“strategy”,并从 backtesting.py 导入 Google 股票的样本数据。导入的数据是一个 pandas 数据框,其中包含每日价格数据,包括开盘价、最高价、最低价、收盘价和成交量,以及日期时间索引。

对于第一个示例,我们假设您已经在外部程序中生成了一些信号并希望将它们传输到 backtesting.py。为了证明这一点,我们使用 numpy 创建随机信号并将它们添加到 Google 数据框中。这些信号可以代表您在 Python 中编写的任何指标,其中 -1 表示卖出信号,0 表示不采取行动,1 表示买入信号。

接下来,我们定义一个名为“SignalStrategy”的策略类,它继承自之前导入的“Strategy”类。该类将负责根据信号实现买卖逻辑。该类包括初始化函数“ init ”和“next”函数。

在“ init ”函数中,在这个特定示例中我们不需要做太多事情,但包含它是一个很好的做法。 “下一个”功能是根据信号执行买卖逻辑的地方。

为了执行回测,我们创建回测类的实例,传递 Google 数据框和“SignalStrategy”类。我们还将缓存值设置为 10,000。然后,我们运行回测并将结果存储在“stats”变量中。最后,我们打印出统计数据来查看策略的性能。

此时运行代码不会产生任何交易,因为我们还没有实现买卖逻辑。但是,我们可以通过在“next”函数中使用“self.data.signal”来访问信号值,这将为我们提供最新的信号值。

为了实现买卖逻辑,我们检查当前信号值和当前仓位。如果信号为 1(买入信号)并且没有现有头寸,我们使用“self.buy”执行买入订单。如果信号为-1(卖出信号)并且存在多头头寸,我们使用“self.sell”执行卖出订单。

  1. 外部信号策略:

    • 生成随机信号或从外部程序获取信号。
    • 定义一个继承自 Strategy 的 SignalStrategy 类。
    • 实现下一个方法以根据信号执行买入或卖出订单。
    • 使用 self.buy() 和 self.sell() 方法执行订单。
    • 使用数据、策略、初始资本和佣金实例化回测对象。
    • 使用 bt.run() 运行回测并分析结果。

  2. 使用 pandas-ta 进行自定义指标:

    • 导入 pandas_ta 库(使用 pip install pandas_ta 安装)。
    • 使用 pandas_ta 中所需的指标函数来计算指标。
    • 将计算出的指标附加到数据框中。
    • 定义一个继承自Strategy的策略类。
    • 实现下一个方法以根据指标值执行买入或卖出订单。
    • 使用所需的条件来确定何时买入或卖出。
    • 使用数据、策略、初始资本和佣金实例化回测对象。
    • 使用 bt.run() 运行回测并分析结果。

请记住将 GOOG 等占位符替换为您的实际数据,并根据您的具体要求定制策略。

Custom Indicators In Backtesting.py - Python Deep Dive
Custom Indicators In Backtesting.py - Python Deep Dive
  • 2022.07.30
  • www.youtube.com
Learn how to make your own custom indicators in backtesting.py. We show how you can integrate libraries like pandas-ta, ta-lib, etc. as well as write your ow...
 

Backtesting.py 中的止损



Backtesting.py 中的止损

在本视频中,我们将探讨“backtesting.py”库中止损的概念。该视频将涵盖三个不断增加复杂性和深度的示例,提供对“backtesting.py”中止损的全面理解。演示者假设您事先了解了“backtesting.py”的一些知识,并建议在深入研究这个高级主题之前先观看 YouTube 上针对初学者的免费课程。

首先,打开终端并确保通过运行命令“pip install backtesting”安装“backtesting.py”。这将安装所有必需的软件包。然后,创建一个新的 Python 文件,我们将其命名为“example.py”,并导入所需的模块:“backtesting”中的“backtest”和“strategy”,以及“backtesting.test”中的“googledale”。 “googledale”是“backtesting.py”附带的测试数据集。

接下来,通过创建一个继承自“strategy”类的名为“Strats”的类来定义策略类。实现两个必需的函数:“ init ”和“next”。此时,我们已准备好运行回测。使用“backtest”函数初始化一个新的回测对象“bt”。传入“googledale”数据和我们刚刚定义的策略类。将初始现金价值设置为 10,000 美元。最后,使用“bt.run”方法运行回测,并使用“bt.plot”绘制结果。

最初,策略类不执行任何交易操作。为了演示一个简单的止损示例,我们将添加一些基本的买卖逻辑。如果我们已有立场,我们不会采取任何行动。但是,如果我们没有仓位,我们将使用“self.to_buy”方法下达买入订单,并指定仓位大小(例如 1 股)。此外,我们将添加止损和止盈。止损将设置为当前收盘价以下 10 个单位,止盈设置为当前收盘价以上 20 个单位。

运行回测将产生大量交易。一旦交易结束,除非触发止损或止盈,否则将在下一个柱上打开新交易。了解“backtesting.py”如何处理止损和获利非常重要。如果在同一柱中同时触发止损和止盈,则库假定首先触发止损。这种行为可能会导致意想不到的结果,特别是在处理可能存在重大差距的日常数据时。

为了更有效地管理止损,我们可以扩展策略类并使用“backtesting.py”提供的“追踪策略”。从“backtesting.lib”导入必要的模块,包括“交叉”和“跟踪策略”。在新的策略类中,继承自“跟踪策略”而不是基“策略”类。覆盖“ init ”函数以使用“ super”调用父类的“ init ”函数。然后,使用父类中的“set_trailing_stop_loss”函数设置追踪止损值。

在视频的下一部分中,演示者更详细地解释了“跟踪策略”的工作原理以及如何根据特定要求对其进行自定义。然而,在本节中,重点是在我们的代码中利用“跟踪策略”。通过调用父类的“ init ”函数并使用“set_trailing_stop_loss”函数,我们可以在回测中利用追踪止损功能。

总的来说,该视频提供了在“backtesting.py”中实施止损的分步说明。它涵盖了简单的示例以及更高级的概念,例如跟踪值 10,这意味着我们的止损将跟踪价格 10 个单位。

现在我们已经设置了初始化函数,让我们继续下一个函数。这是我们大部分交易逻辑将被实现的地方。在 next 函数中,我们首先使用 super().next() 调用父类的 next 函数。这确保了追踪止损功能与其他交易逻辑一起执行。

接下来,我们将添加一些代码来调整追踪止损。我们将使用条件语句来检查我们是否有未平仓头寸(self.position 不是 None)。如果我们有仓位,我们将使用 Trailing_strategy 类提供的 update_trailing_sl 方法更新追踪止损。该方法将当前价格作为参数并相应地更新止损。

Stop Losses in Backtesting.py
Stop Losses in Backtesting.py
  • 2022.08.19
  • www.youtube.com
In this video we go in-depth on how to use stop-losses in backtesting.py. We cover both static and trailing stop losses and how backtesting.py executes them ...
 

Python 中的回测验证(被随机性愚弄)



Python 中的回测验证(被随机性愚弄)

我们都曾遇到过这样的情况:我们创建了一个交易策略,对其进行回测,但当我们最终实施它时,它却未能按预期执行。造成这种失望的主要原因之一是该策略与回测中使用的一组特定历史数据过度拟合。在本视频中,我将演示一种对抗过度拟合的策略,并确保您不会依赖缺乏坚实基础或被随机性愚弄的策略。

让我们深入研究一个具体的例子。我使用比特币作为资产,对基于 RSI 的简单策略进行了回测。该策略包括在 RSI 较高时卖出,在 RSI 较低时买入。回测结果显示,尽管比特币在测试期间下跌了 15%,但回报率约为 3%。乍一看,这似乎是熊市的一个有前途的策略。

然而,至关重要的是检查该策略在不同时间范围内的表现,以确定它是否始终如一地识别盈利机会,或者是否只是在回测期间幸运地选择了参数值。为了实现这一目标,我进行了多次为期 30 天的回测,涵盖全年的不同时期。

通过绘制这些回测的回报分布,我们可以深入了解该策略的有效性。该图将每个 30 天窗口显示为一个点,代表该期间获得的回报。随附的箱线图显示了回报中位数、四分位数、最大值和最小值。分析该图,很明显 30 天内的平均回报率为 -8.5%。此外,回报的分布似乎是随机的,类似于人们期望从 -35 到 15 之间的随机数生成器集得到的结果。这些发现强烈表明,除了在特定的历史数据中使用的策略之外,该策略并不唯一或有效。回测。

为了验证策略并减轻过度拟合的影响,我们需要对更广泛的数据进行回测。为此,我下载了涵盖从 2022 年初到 2022 年底的全年的多个数据文件。我将这些文件合并到一个主 CSV 中,其中包含整个期间的一分钟蜡烛数据。

在验证代码中,我做了一些细微的调整以适应扩展数据集。核心策略保持不变,专注于基于 RSI 的交易逻辑。不过,我引入了一个循环来对整个数据的 30 天窗口进行回溯测试。每次回测都会计算回报,然后将其添加到列表中以供进一步分析。

通过使用收集的回报生成箱线图,我们可以可视化策略绩效在各个 30 天窗口中的分布。该图揭示了回报的可变性,并更清晰地展示了该策略在不同时间间隔内的表现。在这个具体示例中,该图显示几乎每个月的回报率主要为负,表明该策略缺乏一致的盈利能力。

这些用于验证和验证交易策略的技术可以应用于您选择的任何回测框架。提供的代码使用 backtesting.py 库,但您可以将其改编为其他库,例如 vectorbt 或 backtrader。关键思想是确保您的策略在不同时间范围内表现出稳健性,而不仅仅是过度拟合一组特定历史数据的产物。

通过遵循这些验证步骤,您可以降低依赖不基于现实的策略或成为随机结果受害者的风险。在实施交易策略时,必须超越回测表现并考虑策略在不同市场条件下的有效性,以便做出明智的决策。

在分析回测结果和不同时间范围内的回报分布后,我们发现该策略的表现本质上是随机的。在用于回测的特定时间段之外,它没有提供一致的盈利能力。这表明该策略存在过度拟合且缺乏鲁棒性。

为了避免陷入过度拟合陷阱并增加开发可靠交易策略的机会,以下是一些建议:

  1. 使用充足且多样化的数据:确保您的回测包含大量历史数据以涵盖各种市场条件。这有助于捕捉更广泛的场景,并降低过度适应特定市场条件的可能性。

  2. 跨多个时间范围进行验证:不要仅依赖单个时间段进行回溯测试,而是跨不同时间范围测试您的策略。这可以洞察其在各种市场条件下的表现,并有助于确定该策略是否具有一致的盈利能力,或者观察到的结果是否是由于随机性造成的。

  3. 实施样本外测试:保留一部分历史数据用于样本外测试。对初始数据集进行主要回测后,在模型之前未见过的保留数据上验证策略。这有助于评估该策略适应未知市场条件的能力,并为其绩效提供更现实的评估。

  4. 注意曲线拟合:避免过度优化或参数调整以使策略与历史数据过于接近。过于针对特定数据模式的策略在现实交易中更有可能失败。追求稳健性,而不是仅仅追求历史数据的卓越性能。

  5. 考虑前向分析:考虑使用前向分析,而不是仅仅依赖静态回测。这涉及在新数据可用时定期重新优化和重新测试您的策略。它使您能够不断调整和调整您的策略,从而在不断变化的市场条件下提高其绩效。

  6. 使用统计显着性测试:应用统计测试来评估策略绩效的显着性。这有助于确定观察到的结果是否具有统计意义或仅仅是偶然的。回溯测试中使用的常见统计测试包括 t 测试、引导测试和蒙特卡洛模拟。

通过遵循这些准则,您可以降低开发过度适合历史数据的策略的风险,并增加创建稳健可靠的交易方法的可能性。

请记住,我们的目标是开发能够在不同市场条件下表现出一致盈利能力的交易策略,而不是仅仅根据历史数据表现良好的策略。

Backtest Validation in Python (Fooled By Randomness)
Backtest Validation in Python (Fooled By Randomness)
  • 2022.09.14
  • www.youtube.com
In this video we go through a method that I've found helpful for validating my backtests before I go live with a strategy. Looking at the distribution of ret...
 

面向机器学习工程师的 Python 快速入门



面向机器学习工程师的 Python 快速入门

课程讲师首先介绍预测建模的概念及其在行业中的意义。预测建模侧重于开发可以做出准确预测的模型,即使它们可能无法解释为什么做出这些预测。讲师强调,该课程将特别关注表格数据,例如电子表格或数据库。目标是引导学生从对 Python 机器学习感兴趣的开发人员转变为熟练使用新数据集、开发端到端预测模型以及利用 Python 和 SCIPy 库执行机器学习任务。

首先,讲师提供了 Python 语法速成课程。它们涵盖了变量和赋值等基本概念,阐明了用于赋值的“等号”和用于相等比较的“双等号”之间的区别。讲师演示如何使用 Jupyter Notebook 进行 Python 编码,并提供导航提示,例如创建新笔记本、使用库别名、执行单元以及复制或移动单元。他们还解释了笔记本的自动保存功能和手动保存。最后,视频简要介绍了停止内核的执行。

接下来,讲师将解释如何使用 Jupyter Notebook 中的工具栏进行 Python 引擎导航,以及如何使用 Markdown 对笔记本进行注释。该视频涵盖了基本的流程控制语句,包括 if-then-else 条件、for 循环和 while 循环。这些语句允许在 Python 代码中进行决策和重复。然后,讲师介绍了机器学习的三种关键数据结构:元组、列表和字典。这些数据结构提供了存储和操作数据的有效方法。此外,该视频还包括 NumPy 速成课程,NumPy 是一个支持 Python 中数值运算的库。它涵盖了创建数组、访问数据以及使用数组执行算术运算。

该视频继续讨论两个重要的库:Matplotlib 和 Pandas,它们常用于机器学习中的数据分析和可视化。 Matplotlib 允许用户创建各种绘图和图表,促进数据可视化。另一方面,Pandas 提供用于数据操作和分析的数据结构和函数,特别是通过系列和数据框架结构。该视频重点介绍了 Pandas 的 read_csv 函数对于加载 CSV 文件(机器学习应用程序中最常见的格式)的重要性。它还强调了 Pandas 函数在总结和绘制数据以获取见解并为机器学习任务准备数据方面的有用性。 Python 中的描述性统计被认为是理解数据特征和性质的重要工具。

该视频深入探讨了特定的数据可视化技术,这些技术可以在应用机器学习技术之前帮助进行数据分析。引入直方图、密度图和箱线图作为观察属性分布和识别潜在异常值的方法。相关矩阵和散点图矩阵是识别属性对之间关系的方法。该视频强调了重新缩放、标准化、标准化和二值化数据的重要性,这是为机器学习算法准备数据的必要预处理步骤。拟合和变换方法被解释为数据预处理的常用方法。

下一个讨论的主题是机器学习中的数据预处理技术。该视频涵盖了标准化和标准化这两种重要技术。归一化涉及重新调整属性以具有相同的比例,而标准化涉及将属性转换为均值为零和标准差为一。还解释了二值化,即对数据进行阈值以创建二元属性或清晰值。强调特征选择的重要性,因为不相关或部分不相关的特征会对模型性能产生负面影响。该视频介绍了单变量选择作为特征选择的一种统计方法,并重点介绍了递归特征消除和特征重要性方法的使用,这些方法利用随机森林或额外树等决策树集成。主成分分析 (PCA) 也被讨论为一种数据缩减技术,可以使用线性代数将数据集压缩为更少的维度。

该视频强调了重采样方法对于评估机器学习算法在未见过的数据上的性能的重要性。它警告不要在用于训练的同一数据集上评估算法,因为它可能导致过度拟合和对新数据的泛化不良。训练测试分割集、k 折交叉验证、留一交叉验证和重复随机测试分割等技术被解释为获得算法性能可靠估计的方法。该视频最后讨论了机器学习算法的各种性能指标,例如分类精度、对数损失、曲线下面积、混淆矩阵和分类报告。

该视频深入探讨了用于评估机器学习模型预测的性能指标。它涵盖分类精度、对数损失(用于评估概率)、接收者操作特征 (ROC) 曲线下面积(用于二元分类问题)、混淆矩阵(用于评估多个类别的模型精度)和分类报告(提供精度) 、回忆、F1 分数和每个类别的支持)。此外,该视频还解释了三种常见的回归指标:平均绝对误差、均方误差和 R 平方。演示了实际示例来说明如何使用 Python 计算这些指标。

演讲者介绍了抽查的概念,以确定哪些机器学习算法对于特定问题表现良好。抽查涉及评估多种算法并比较它们的性能。该视频演示了使用 Python 和 scikit-learn 库对六种不同的机器学习模型(包括线性和非线性算法)进行抽查。演讲者强调,由于模型的随机性,结果可能会有所不同。本节最后介绍了回归机器学习模型,让观众为即将到来的抽查这些模型的部分做好准备。

接下来,演讲者以波士顿房价数据集为例介绍线性和非线性机器学习模型。采用具有 10 倍交叉验证的测试工具来演示如何抽查每个模型,并使用均方误差作为性能指标(由于跨文件评分函数中的怪异而倒置)。讨论了假设输入变量呈高斯分布及其与输出变量的相关性的线性回归模型。还解释了岭回归,它是线性回归的一种修改,可以最大限度地减少模型的复杂性。演讲者强调了理解管道或流程的重要性,而不是在此阶段陷入具体的代码实现中。

该视频探讨了理解和可视化机器学习问题的输入变量的过程。它建议使用单变量图(例如箱形图、须状图和直方图)来了解输入变量的分布。对于多变量分析,散点图可以帮助识别输入变量之间的结构关系,并揭示特定属性对之间的高度相关性。该视频还讨论了评估过程,使用具有 10 倍交叉验证的测试工具来评估模型性能。强调了创建验证数据集以独立评估最佳模型的准确性的重要性。评估了六种不同的机器学习模型,并选择最准确的一种进行预测。分类报告、混淆矩阵和准确性估计用于评估预测。最后,视频涉及正则化回归,重点介绍了 Lasso 和 Elastic Net 模型的构建,以降低回归模型的复杂性。

该视频介绍了机器学习中的二元分类问题,旨在使用声纳矿山与岩石数据集预测岩石中的金属。该数据集包含 208 个实例,具有 61 个属性,包括类属性。描述性统计分析表明,尽管数据处于同一范围内,但不同的方法表明标准化数据可能是有益的。探索单模态和多模态数据可视化,例如直方图、密度图和相关性可视化,以深入了解数据。创建验证数据集,并通过测试各种模型来建立模型性能的基线,包括线性回归、逻辑回归、线性判别分析、分类回归树、支持向量机 (SVM)、朴素贝叶斯和 k 最近邻 ( KNN)。使用10倍交叉验证计算并比较每种算法的准确性。

在接下来的部分中,视频讨论了如何使用标准化数据和调整来评估不同的机器学习算法。标准化涉及到对数据进行变换,因此每个属性的均值为0,标准差为1,这可以提高某些模型的性能。为了防止转换过程中的数据泄漏,建议使用标准化数据并为交叉验证测试工具中的每个折叠构建模型的管道。该视频演示了使用网格搜索对训练数据集的标准化副本进行 10 倍交叉验证的 k 最近邻 (KNN) 和支持向量机 (SVM) 的调整技术。确定了 KNN 和 SVM 的最佳配置,并评估了模型的准确性。最后,视频简要讨论了 KNN、决策树回归和 SVM 作为非线性机器学习模型。

  • 00:00:00 课程讲师介绍预测建模的概念及其与行业的相关性。与试图理解数据的统计建模不同,预测建模侧重于开发能够做出更准确预测的模型,但牺牲了解释预测原因的代价。本课程重点介绍表格数据,例如电子表格或数据库。讲师带领学生从对 Python 机器学习感兴趣的开发人员发展到拥有使用 Python 端到端处理新数据集并开发准确的预测模型的资源和能力。学生学习如何使用 python 完成预测建模问题的所有子任务,在 python 和 SCIPy 中集成新的和不同的技术,学习 python 并获得机器学习方面的帮助。该讲座还涵盖了 Python 速成课程,重点介绍了语言语法的关键细节,包括赋值、流程控制、数据结构和函数。

  • 00:05:00 该视频涵盖了 Python 的基本语法,包括变量和赋值,并解释了赋值的“equals”和相等的“double equals”之间的区别。然后,讲师演示了如何使用 Jupyter Notebook 进行 Python 编码,并解释了一些基本的导航技巧,例如如何创建新笔记本、使用库别名、执行单元格以及移动或复制单元格。讲师还解释了自动保存功能以及如何手动保存笔记本。该视频最后简要说明了如何停止内核的执行。

  • 00:10:00 讲师讲解如何使用工具栏在 Python 引擎中导航以及如何使用 Markdown 对笔记本进行注释。然后,视频介绍了流程控制语句,例如 if-then-else 条件、for 循环和 while 循环。随后,讲师讲解了机器学习所需的三种主要数据结构:元组、列表和字典。最后,该视频提供了 NumPy 速成课程,其中包括创建数组、访问数据以及在算术中使用数组。

  • 00:15:00 讨论了用于机器学习的 Matplotlib 和 Pandas 速成课程。 Matplotlib 是一个可用于创建绘图和图表的库。 Pandas 提供了数据结构和功能,可以借助系列和数据框架数据结构来操作和分析数据。这些对于加载 csv 文件非常重要,csv 文件是机器学习应用程序最常用的格式。此外,像 Pandas read_csv 这样的灵活函数可以帮助加载数据并返回 Pandas 数据框架,以汇总和绘制数据,从而为机器学习任务中的预处理和处理数据得出见解和种子想法。最后,通过Python中的描述性统计从数据中获取洞察是不可替代的,并且可以帮助更好地理解数据的特征和本质。

  • 00:20:00 Pandas DataFrame 可以使用 hist() 函数轻松创建直方图。另一种可视化数据的方法是使用密度图,可以使用plot()函数创建密度图。密度图显示数据的概率密度函数,可以深入了解分布的形状。箱线图和须线图对于可视化数据分布和识别异常值也很有用。总的来说,数据可视化是理解数据集特征的关键步骤,可以帮助选择合适的机器学习算法。

  • 00:25:00 该视频解释了在应用机器学习技术之前可用于数据分析的各种图表。直方图、密度图和箱线图用于观察属性的分布,而相关矩阵和散点图矩阵用于识别属性对之间的关系。还讨论了重新缩放、标准化、标准化和二值化数据作为为机器学习算法准备数据的必要预处理步骤,并且视频解释了拟合和变换方法作为数据预处理的常用方法。

  • 00:30:00 该视频讨论了机器学习中数据预处理的技术。首先,解释归一化和标准化技术。归一化涉及重新调整属性以具有相同的尺度,标准化涉及更改属性以使其均值为零,标准差为一。二值化或阈值数据是讨论的另一种技术,它可用于添加新的二元属性或将概率转换为清晰的值。然后,解释了特征选择的重要性,因为不相关或部分不相关的特征会对模型性能产生负面影响。单变量选择是一种使用统计测试分数进行特征选择的统计方法。使用随机森林或额外树等决策树集合的递归特征消除和特征重要性方法也可用于特征选择。最后,主成分分析(PCA)是一种使用线性代数将数据集转换为维数较少的压缩形式的数据缩减技术。

  • 00:35:00 解释了重采样方法在评估机器学习算法对未见过的数据的性能方面的重要性。需要强调的是,在用于训练的同一数据集上评估算法可能会导致过度拟合,从而导致训练数据集获得完美分数,但对新数据的预测却很差。然后提出诸如训练测试分割集、k 折交叉验证、留一交叉验证和重复随机测试分割等技术,作为创建算法性能的有用估计的方法。本节最后讨论了各种机器学习算法性能指标,例如分类精度、对数损失、曲线下面积、混淆矩阵和分类报告。

  • 00:40:00 该视频涵盖了用于评估机器学习模型做出的预测的多个性能指标。其中包括分类准确性、用于评估概率的对数损失、二元分类问题的 ROC 曲线下面积、用于评估两个或多个类别的模型准确性的混淆矩阵,以及用于评估精度、召回率、F1 分数和支持度的分类报告每个班级。此外,该视频还介绍了三种常见的回归指标:平均绝对误差、均方误差和 R 平方,并演示了如何使用 Python 计算这些指标的示例。

  • 00:45:00 演讲者解释了使用抽查来发现哪些机器学习算法对于给定问题表现良好的概念。他演示了使用 python 和 scikit-learn 库对六种不同的机器学习模型(包括线性和非线性算法)进行抽查。他还强调,由于模型的随机性,结果可能会有所不同。最后,演讲者介绍了回归机器学习模型,并让观众为即将到来的如何抽查这些模型的部分做好准备。

  • 00:50:00 演讲者介绍了使用波士顿房价数据集的线性和非线性机器学习模型。使用具有 10 倍交叉验证的测试工具来演示如何对每个模型进行块检查,并使用均方误差数来指示性能,由于跨文件评分函数中的一个怪癖,性能出现了倒转。线性回归模型假设输入变量服从高斯分布,并且它们与输出变量相关,但彼此之间相关性不高。岭回归是线性回归的一种改进,通过系数值的平方和值或 L2 范数来最小化模型的复杂性。演讲者强调理解管道或流程,而不是陷入理解代码的困境。

  • 00:55:00 该视频讨论了理解和可视化机器学习问题的输入变量的过程。该视频建议使用单变量图(例如箱线图、晶须图和直方图)来了解输入变量的分布。对于多元图,散点图可以帮助发现输入变量之间的结构关系,并识别某些属性对之间的高度相关性。该视频随后讨论了通过使用 10 倍交叉验证的测试工具评估模型的过程,其中数据集被分为 10 个部分,并在不同的分割上进行训练和测试。该视频强调了创建验证数据集的重要性,以便对最佳模型的准确度获得第二个独立的想法。该视频评估了六种不同的机器学习模型,并选择最准确的一种进行预测,通过分类报告、混淆矩阵和准确性估计来评估预测。本节最后讨论了正则化回归以及构建 Lasso 和 Elastic Net 模型以最小化回归模型的复杂性。

  • 01:00:00 我们介绍了机器学习中的二元分类问题,其目标是使用声纳地雷与岩石数据集来预测岩石中的金属。该数据集包含 208 个实例,具有 61 个属性(包括类属性)。在分析数据并查看描述性统计之后,我们发现数据处于相同的范围内,但不同的平均值表明标准化数据可能是有益的。我们还研究了单峰和多峰数据可视化,包括直方图、密度图和属性之间相关性的可视化。然后,我们准备验证数据集并为不同模型的性能创建基线,包括线性回归、逻辑回归、线性判别分析、分类回归树、SVM、朴素贝叶斯和 k 最近邻。我们通过 10 倍交叉验证来比较每种算法计算的准确性。

  • 01:05:00 该视频讨论了如何使用标准化数据和调整来评估不同的机器学习算法。标准化对数据进行变换,使每个属性的均值为0,标准差为1,这可以提高某些模型的技能。为了避免转换过程中的数据泄漏,建议使用标准化数据并为交叉验证测试工具中的每个折叠构建模型的管道。该视频演示了如何使用网格搜索以及对训练数据集的标准化副本进行 10 倍交叉验证来调整 k 最近邻 (KNN) 和支持向量机 (SVM)。确定了 KNN 和 SVM 的最佳配置,并评估了模型的准确性。最后,视频简要讨论了 KNN、决策树回归和 SVM 作为非线性机器学习模型。
A Fast Track Introduction to Python for Machine Learning Engineers
A Fast Track Introduction to Python for Machine Learning Engineers
  • 2022.03.23
  • www.youtube.com
Complete Course on Machine Learning with Python
 

机器学习工程师的应用统计学


机器学习工程师的应用统计学

视频中的讲师介绍了统计学领域,并强调了其在处理机器学习中的预测建模问题中的重要性。他们解释说,统计学提供了一系列技术,从简单的汇总统计到假设检验和估计统计。本课程旨在通过 Python 中的实际示例提供统计方法的分步基础。它涵盖了机器学习统计的六个核心方面,并专注于现实世界的应用,使其适合机器学习工程师。

讲师强调机器学习和统计之间的密切关系,并建议程序员可以通过本课程提高统计技能,从而受益。他们将统计学领域分为两类:描述性统计学和推论性统计学。描述性统计涉及使用平均值和图形表示等测量来总结和描述数据。另一方面,推论统计用于根据样本数据对更大的总体进行推论。

还强调了正确数据处理的重要性,包括解决数据丢失、损坏和错误的问题。然后,该视频深入探讨了机器学习模型的数据准备所涉及的各个步骤。这包括使用标准化和归一化等统计方法进行数据清理、数据选择、数据采样和数据转换。视频还强调了数据评估,讨论了实验设计、数据重采样和模型选择,以评估模型的技能。为了预测新数据,视频建议使用估计统计数据。

该视频解释了统计学中使用的不同测量尺度,即名义尺度、序数尺度、区间尺度和比率尺度。它讨论了适用于每个规模的统计技术以及如何在机器学习中实施它们。强调了理解和报告建模中不确定性的重要性,特别是在处理样本集时。然后,视频重点介绍了在各种数据集中常见的正态分布。它演示了如何生成样本数据并使用直方图直观地评估其对高斯分布的拟合。虽然大多数数据集不具有完美的高斯分布,但它们通常表现出类似高斯的属性。

强调了选择细粒度的数据分割方式以揭示底层高斯分布的重要性。探索了集中趋势的度量,例如均值和中位数,以及作为分布扩展度量的方差和标准差。随机性被认为是机器学习中的重要工具,可以帮助算法变得更加稳健和准确。解释了各种随机性来源,包括数据错误和噪声。

该视频解释了机器学习算法通常利用随机性来实现更好的性能并生成更优化的模型。随机性使算法能够探索不同的可能性并找到更好的数据映射。讨论了可控和不可控的随机源,并解释了如何使用种子函数使模型内的随机性保持一致。该视频提供了一个使用 Python random 模块生成随机数的示例,并重点介绍了 numpy 库的伪随机数生成器和标准库的伪随机数生成器之间的区别。还讨论了何时为随机数生成器提供种子的两种情况,即在数据准备期间和数据分割期间。

强调在评估算法时一致地分割数据并使用伪随机数生成器。该视频建议以结合测量的不确定性和算法性能的方式评估模型。通过对数据的多个分割来评估算法,可以深入了解其性能如何随着不同的训练和测试数据而变化。在相同的数据分割上多次评估算法有助于了解其性能如何变化。视频还介绍了大数定律和中心极限定理,强调拥有更多数据可以提高模型的性能,并且随着样本量的增加,均值分布接近高斯分布。

该视频使用掷骰子和代码演示了中心极限定理,展示了随着样本量的增加,样本均值如何近似高斯分布。

该视频强调了评估机器学习模型和理解其预测中涉及的不确定性的重要性。它引入了准确率、精确率、召回率和F1分数等评估指标,这些指标通常用于评估分类模型的性能。视频解释了准确度衡量预测的整体正确性,精确度衡量真阳性预测在所有阳性预测中的比例,召回率衡量真阳性预测在所有实际阳性实例中的比例,F1 分数将精度和召回率结合起来一个单一的指标。它还讨论了混淆矩阵的概念,它通过显示真阳性、真阴性、假阳性和假阴性预测的数量,提供分类模型性能的更详细视图。

演讲者演示了如何使用 Python 的 scikit-learn 库计算这些评估指标。它展示了如何导入必要的模块、将数据拆分为训练集和测试集、训练分类模型、对测试集进行预测,以及使用准确度、精确度、召回率和 F1 分数评估模型的性能。该视频强调了在未见过的数据上评估模型以确保其泛化能力的重要性。

此外,视频还介绍了受试者工作特征 (ROC) 曲线和曲线下面积 (AUC) 的概念,作为二元分类模型的评估指标。 ROC 曲线绘制了各种分类阈值下的真阳性率与假阳性率,提供了模型在不同阈值下的性能的直观表示。 AUC 表示 ROC 曲线下的面积,并提供单一指标来比较不同模型的性能。该视频介绍了如何使用 Python 的 scikit-learn 库绘制 ROC 曲线并计算 AUC。

过度拟合的概念被视为机器学习中的一个常见问题,其中模型在训练数据上表现良好,但无法推广到新的、未见过的数据。该视频解释了当模型变得过于复杂并且学习到特定于训练数据的模式而在一般人群中不存在时,就会发生过度拟合。该视频演示了如何通过比较模型的训练和测试性能来可视化过度拟合。它解释了过度拟合模型的训练误差较低,但测试误差较高,表明泛化能力较差。该视频建议使用岭回归和套索回归等正则化技术,通过向模型的目标函数添加惩罚项来减轻过度拟合。

引入交叉验证的概念作为评估机器学习模型的性能和泛化的技术。该视频解释了交叉验证涉及将数据分成多个子集,在一部分数据上训练模型,并评估其在剩余部分上的性能。这个过程会重复多次,使用不同的子集进行训练和测试,并对结果进行平均以提供模型性能的估计。该视频演示了如何使用 Python 的 scikit-learn 库执行交叉验证,特别是 K 折交叉验证方法。

接下来,视频讨论了特征选择的概念和机器学习中的重要性。它解释了特征选择涉及识别有助于模型性能的最相关特征或变量。该视频强调了选择信息丰富的特征以提高模型的准确性、减少过度拟合并增强可解释性的重要性。它引入了不同的特征选择技术,例如单变量选择、递归特征消除和特征重要性评分。该视频演示了如何使用 Python 的 scikit-learn 库实现特征选择。

降维的概念也被讨论为一种解决机器学习中维数灾难的技术。该视频解释了降维涉及减少数据集中的特征或变量的数量,同时保留大部分相关信息。它引入了主成分分析(PCA)作为常用的降维技术。 PCA旨在通过识别数据中最大方差的方向将数据变换到低维空间。视频解释了 PCA 创建了新的特征,称为主成分,它们是原始特征的线性组合。这些主要成分捕获数据中最重要的信息,可以用作机器学习模型的输入。

该视频演示了如何使用 Python 的 scikit-learn 库执行 PCA。它展示了如何导入必要的模块、标准化数据、初始化 PCA 对象、将 PCA 模型拟合到数据以及将数据转换到低维空间。该视频还解释了如何根据解释的方差比确定要保留的最佳主成分数量。

集成学习的概念是作为一种通过组合多个单独模型来提高机器学习模型性能的技术而引入的。该视频解释说,集成学习利用了群体的智慧,每个单独的模型都贡献自己的预测,最终的预测是根据投票或平均机制确定的。该视频讨论了两种流行的集成学习方法:bagging 和 boosting。 Bagging 涉及在数据的不同子集上训练多个模型并聚合它们的预测,而 boosting 则侧重于按顺序训练模型,每个模型更加重视先前模型错误分类的实例。

该视频演示了如何使用 Python 的 scikit-learn 库实现集成学习。它展示了如何导入 bagging 和 boosting 所需的模块、初始化集成模型、将它们拟合到数据以及使用集成模型进行预测。该视频强调,集成学习通常可以提高机器学习模型的整体性能和鲁棒性。

最后,视频简要介绍了机器学习的高级主题,例如深度学习和自然语言处理 (NLP)。它提到深度学习涉及训练多层深度神经网络来学习数据中的复杂模式。 NLP 专注于开发模型和技术来理解和处理人类语言,从而实现文本分类、情感分析和机器翻译等应用。该视频最后强调,机器学习是一个广阔且快速发展的领域,拥有众多应用以及进一步探索和学习的机会。

该视频全面概述了机器学习中的基本概念和技术,包括模型评估、过度拟合、正则化、交叉验证、特征选择、降维、集成学习以及深度学习和 NLP 的介绍。它演示了使用 Python 和 scikit-learn 库的实际实现,使其成为初学者和希望增强对机器学习理解的人的宝贵资源。

  • 00:00:00 讲师介绍了统计学领域及其在通过机器学习解决预测建模问题时的重要性。他解释了可用的统计技术的范围,从简单的汇总统计到假设检验和估计统计。本课程旨在通过 Python 中的可执行示例为统计方法提供分步基础,涵盖机器学习统计的六个核心方面。讲师还强调,该课程以应用为中心,提供真实的使用示例,适合机器学习工程师。

  • 00:05:00 需要强调的是,机器学习与统计学密切相关,对于希望提高统计技能的程序员来说,该课程是一个不错的选择。统计领域分为两类,第一类是描述统计,第二类是推论统计。描述性统计用于使用平均值和图形表示等测量来描述数据,而推论统计则用于从更大群体的数据中进行推断。最后,强调了数据处理的重要性,包括数据丢失、损坏和错误。

  • 00:10:00 该视频讨论了机器学习模型的数据准备所涉及的各个步骤。这包括使用标准化和归一化等统计方法进行数据清理、数据选择、数据采样和数据转换。数据评估也很重要,必须进行实验设计(包括数据重采样和模型选择)来评估模型的技能。为了预测新数据,视频推荐了估计统计方法。此外,该视频还解释了统计中使用的不同测量尺度以及正态分布的特征。

  • 00:15:00 演讲者解释了不同的测量尺度:标称、序数、间隔和比率。他们继续讨论适用于每个规模的统计数据以及如何在机器学习中实施它们。鉴于我们几乎总是使用样本集,作者强调我们需要理解和报告建模中涉及的不确定性。然后讨论转向在各种数据集中非常常见的样本正态分布。最后,他们演示了如何生成样本数据并将其应用于直方图以查看其是否符合高斯分布。作者解释说,虽然大多数数据集不会具有完美的高斯分布,但它们将具有类似高斯的属性。

  • 00:20:00 强调了选择更细粒度的数据分割方式以更好地揭示潜在高斯分布的重要性,并探讨了均值和中位数等集中趋势的度量,还讨论了方差和标准差分布范围的度量。随机性是机器学习中的重要工具,用于帮助算法更加稳健和准确。解释了各种随机性来源,例如数据错误和可能模糊关系的噪声。

  • 00:25:00 据解释,机器学习算法通常使用随机性来实现更好的数据映射性能。随机性允许算法生成更优化的模型。本节讨论随机性的来源(可控和不可控),以及如何使用种子函数使模型中的随机性保持一致。给出了一个示例,使用 Python random 模块生成随机数,并使用 numpy 库高效处理数字向量和矩阵。 numpy 伪随机数生成器与 python 标准库伪随机数生成器不同,必须单独使用。最后,讨论了何时为随机数生成器提供种子的两种情况,包括数据准备和数据分割。

  • 00:30:00 讨论了评估算法时一致分割数据和使用伪随机数生成器的重要性。建议以报告的性能包括测量的不确定性和算法的性能的方式评估模型。在多次数据分割上评估算法将有助于深入了解算法的性能如何随着训练和测试数据的变化而变化,而在相同的数据分割中多次评估算法将有助于深入了解算法的性能如何单独变化。还讨论了大数定律和中心极限定理,强调我们拥有的数据越多,我们的模型性能就越好,并且随着样本大小的增加,均值分布将近似高斯分布。

  • 00:35:00 使用掷骰子和代码演示中心极限定理。演示表明,随着样本量的增加,样本均值将近似高斯分布。数据解释对于统计学中发现意义至关重要。统计假设检验或显着性检验在机器学习中用于提出有关数据分布的声明或比较两个样本。假设 0 或零假设是默认假设,即没有任何变化,统计假设检验可能返回 p 值或临界值。 p 值是用于解释假设检验结果并拒绝或未能拒绝原假设的量,而临界值用于将检验统计量与其抽样分布进行比较,以确定是否有足够的证据拒绝原假设。

  • 00:40:00 澄清了拒绝原假设的概念,原假设指出不存在统计上的显着差异。如果统计检验的结果拒绝原假设,则意味着某件事具有统计显着性。还讨论了高斯分布,它描述了观测值的分组或密度,通常称为正态分布。分布是一个数学函数,描述观测值与样本空间的关系。密度函数,包括概率密度函数和累积密度函数,用于描述分布中观测值的可能性。最后,强调了检查数据样本是否随机的重要性,并给出了正态分布样本的特征。

  • 00:45:00 演讲者讨论了正态(高斯)分布,其属性包括概率分布函数 (pdf) 和累积分布函数 (cdf),以及与标准差相关的 68、95 和 99.7 规则。演讲者还介绍了t分布,它与正态分布类似,但用于小样本。随后,文章介绍了卡方分布、其在拟合优度中的用途及其与 t 分布的关系。最后,演讲者演示了如何使用 Scipy 中的 stats chi 2 模块来计算卡方分布的统计数据。

  • 00:50:00 解释统计假设检验中临界值的概念。临界值是用于确定是否接受或拒绝原假设的阈值。它假设正态分布或高斯分布,并具有接受区域和拒绝区域。分隔这些区域的线是临界值。单尾检验确定平均值是否大于或小于另一个平均值,但不是两者都大于或小于另一个平均值,而双尾检验确定两个平均值是否彼此不同。临界值允许量化估计统计数据或区间的不确定性,例如置信区间和公差区间。

  • 00:55:00 讨论了双尾测试的使用,该测试考虑了产品的正面和负面影响。给出的例子是仿制药与名牌产品的对比,其中双尾测试可以确定仿制药是否与名牌产品相当或更差。还通过使用三种常用分布的示例来解释和演示百分点函数或分位数函数的使用:标准高斯分布、标准学生 t 分布和标准卡方分布。最后,讨论了相关性的概念及其在确定两个变量之间的关系中的重要性,以及多重共线性的潜在问题及其如何影响算法性能。

  • 01:00:00 该视频演示了一个快速演示,使用设计的数据集显示两个变量之间的强正相关性,每个变量均取自高斯分布并呈线性相关。该演示计算并打印协方差矩阵,显示两个变量之间的正协方差,表明它们沿相同方向变化。然而,协方差单独作为统计工具的一个问题是它难以解释,从而导致皮尔逊相关系数。视频解释了 Pearson 的 r 相关系数如何通过计算两个变量的协方差除以每个样本的标准差的乘积来概括两个数据样本之间线性关系的强度,并且可以使用相关系数来评估两个以上变量之间的关系。

  • 01:05:00 该视频讨论了参数统计显着性检验的使用,该检验假设数据是从具有相同均值和标准差的高斯分布中提取的。定义测试数据集并用于演示独立样本和配对样本的学生 t 检验以及方差检验分析。该视频展示了如何使用适当的 Scipy 函数在 Python 中实现这些测试。这些示例说明了如何使用这些测试来确定不同的数据样本是否具有相同的分布。

  • 01:10:00 统计学中效应大小的概念被讨论为一种量化组间差异程度或变量之间关联程度的方法,它可以补充统计假设检验获得的结果。效应量方法分为关联法和差异法,并且可以是标准化的、原始单位的或无单位的,具体取决于解释的目的和所使用的统计测量。 Pearson 相关系数是确定线性关联的常用标准化度量,它是无单位的,可以使用 Python 的 pearsonr() 函数进行计算。统计功效受效应大小、样本量、显着性和功效水平的影响,也被解释为实验设计中的关键因素,可以通过功效分析进行估计,以确定实验所需的最小样本量。

  • 01:15:00 该视频讨论了预测建模中数据采样和数据重采样的重要性,解释了采样涉及选择总体的子集,而重采样涉及从数据样本中多次估计总体参数,以提高准确性并量化不确定性。该视频介绍了常见的抽样方法,分为概率抽样或非概率抽样,并重点介绍了机器学习工程师可能遇到的三种抽样类型:简单随机抽样、系统抽样和分层抽样。此外,该视频还警告了抽样过程中可能引入的潜在错误,并强调在得出总体结论时需要进行统计推断和小心谨慎。该视频接着解释了机器学习中常用的采样方法,即 k 折交叉验证和引导程序,后者虽然提供了对总体的稳健估计,但计算成本较高。

  • 01:20:00 Bootstrap 方法被讨论为一种通过对多个小数据样本的估计进行平均来估计总体数量的工具。这些样本是通过从大型数据集中一次抽取一个观察值并在选取后将它们返回到原始样本来构建的。这种方法称为放回抽样。 SciPy 库中提供的重采样函数可用于创建单个引导样本,尽管它不包含任何轻松收集可用于评估拟合模型的袋外观察结果的机制,但仍然可以使用 Python 列表理解来收集 bag 观察结果。此外,还解释了 k 折交叉验证的过程,因为它是用于在有限数据上评估机器学习模型的重采样过程。 K 折循环学习类可用于此过程,并且提到了 k 折交叉验证的四种常用变体。

  • 01:25:00 演讲者讨论了机器学习中重采样的两种方法:k 折交叉验证和训练测试分割。虽然 k 折交叉验证是黄金标准,但训练测试分割可能更容易理解和实施。演讲者演示了如何在 Python 中使用训练-测试分割方法,还提到了估计统计的使用,其目的是量化结果的大小和不确定性,并且在研究文献中越来越流行。估计统计的三大类包括效应大小、区间估计和荟萃分析。正在发生向估计统计的转变,因为它们更容易在研究问题的背景下进行分析和解释。

  • 01:30:00 讨论了测量效应大小和区间估计的不同方法。效应大小可以通过关联(样本共同变化的程度)或差异(样本不同的程度)来衡量。同时,区间估计允许量化观测中的不确定性,并且可以通过公差区间、置信区间或预测区间来完成。公差区间指定过程输出的特定百分比所落在的上限和下限,而置信区间则提供总体参数估计值的界限。最后,演示了如何计算从高斯分布中抽取的观测样本的公差区间。

  • 01:35:00 讨论了置信区间的概念,它是用于量化估计不确定性的区间统计量。置信区间提供总体参数的界限,例如平均值、标准差或类似参数。置信区间的值是量化估计不确定性的能力。较小的置信区间等于较精确的估计,而较大的置信区间则等于较不精确的估计。进一步讨论了分类准确度或误差的概念,它是用于描述模型做出正确或错误预测的比例的比例或比值。通过假设比例的高斯分布,可以使用分类误差或准确度轻松计算置信区间。

  • 01:40:00 解释了置信区间的概念,从计算模型分类误差的置信区间到使用引导重采样作为估计置信区间的非参数方法。自举重采样方法涉及从固定的有限数据集中抽取有替换的样本来估计总体参数。此外,引入了预测区间的概念,作为对未来观测值将落在某个置信水平的区间的估计,这对于使用回归模型进行预测或预测非常有用。

  • 01:45:00 预测区间的概念被解释为在给定先前观察到的数据的情况下,未来观察将落在一定置信水平的范围内的估计。它与置信区间不同,置信区间量化与总体样本变量相关的不确定性。预测区间通常用于预测或预测模型。本文提供了一个二变量数据集中线性回归的简单示例,其中变量之间的关系从散点图中可见。然后使用线性回归模型进行单个预测,预测区间的确定性为 95%,并与已知的期望值进行比较。强调了预测区间和置信区间之间的差异,以及由于考虑了与误差相关的不确定性,预测区间通常比置信区间更宽的事实。
Applied Statistics for Machine Learning Engineers
Applied Statistics for Machine Learning Engineers
  • 2022.03.24
  • www.youtube.com
Complete Course on Applied Statistics for Machine Learning Engineers. It's all the statistics you'll need to know for a career in machine learning.
 

机器学习工程师的应用线性代数



机器学习工程师的应用线性代数

该视频强调了学习线性代数对于机器学习工程师的重要性,因为它是理解微积分和统计学的基本构建块,而微积分和统计学对于机器学习至关重要。对线性代数的深入了解可以让从业者对机器学习方法的工作原理有更好的直觉,使他们能够定制算法并开发新算法。

本课程采用自上而下的方法教授线性代数的基础知识,使用具体示例和数据结构来演示矩阵和向量的运算。线性代数被描述为矩阵和向量的数学,提供了一种数据操作语言,并允许通过对这些数据结构的操作来创建新的列或数字数组。线性代数最初于 1800 年代末发展起来,用于求解线性方程组,现已成为理解机器学习的关键先决条件。

讲者介绍数值线性代数的概念,涉及线性代数在计算机中的应用。这包括实现线性代数运算以及解决在数字计算机中使用有限的浮点精度时出现的挑战。数值线性代数在机器学习中发挥着至关重要的作用,特别是在严重依赖图形处理单元 (GPU) 来高效执行线性代数计算的深度学习算法中。各种开源数值线性代数库以基于 Fortran 的库为基础,通常与 Python 等编程语言结合使用来计算线性代数运算。

线性代数在统计学中的重要性得到凸显,特别是在多元统计分析、主成分分析和解决线性回归问题中。该视频还提到了线性代数在信号处理、计算机图形学甚至物理学等领域的广泛应用,例如阿尔伯特·爱因斯坦的相对论利用张量和张量微积分(一种线性代数)。

该视频进一步探讨了线性代数在机器学习任务中的实际应用。它介绍了使用线性代数运算(例如裁剪、缩放和剪切)来处理图像的概念,演示了如何在这种情况下使用线性代数的符号和运算。此外,该视频还解释了一种流行的编码技术,称为分类变量的单热编码。介绍了机器学习中使用的主要数据结构,即 N 维数组或 ND 数组,并讨论了 Python 中的 NumPy 库作为创建和操作这些数组的强大工具。该视频涵盖了重要的功能,例如 v-stack 和水平堆叠,这些功能可以从现有数组创建新数组。

解释了操作和访问 NumPy 数组中的数据(通常用于表示机器学习数据)。该视频演示了如何使用 array 函数将一维列表转换为数组,以及如何使用列表列表创建二维数据数组。它还涵盖了 NumPy 数组中的索引和切片操作,包括使用冒号运算符进行切片和负索引。强调了切片在机器学习中指定输入和输出变量的重要性。

视频中讨论了在机器学习中处理多维数据集的技术。它从一维切片开始,逐渐发展到二维切片,并将数据分离为输入和输出值以进行训练和测试。涵盖了数组重塑,解释了如何将一维数组重塑为具有一列的二维数组,以及如何将二维数据转换为三维数组,以用于需要一个或多个时间步长和特征的多个样本的算法。引入了数组广播的概念,允许使用不同大小的数组进行算术运算,使得不同大小的数据集能够得到有效的处理。

该视频还谈到了 NumPy 中数组算术的局限性,特别是算术运算只能在相同维度和相同大小的维度上执行。然而,NumPy 的内置广播功能克服了这一限制,该功能沿着最后一个不匹配的维度复制较小的数组,从而可以在不同形状和大小的数组之间进行算术。视频提供了三个广播示例,包括标量和一维数组、二维数组中的标量以及二维数组中的一维数组。需要注意的是,广播遵循严格的规则,即只有当数组中每个维度的形状相等或者其中一个维度的大小为一时才能执行算术。

接下来,演讲者介绍了向量的概念,向量是一个或多个称为标量的值的元组。向量通常使用小写字符(例如“v”)表示,并且可以视为 n 维空间中的点或坐标,其中“n”表示维数。解释了在 Python 中将向量创建为 NumPy 数组。该视频还介绍了向量算术运算,例如向量加法和减法,这些运算对相等长度的向量按元素执行,从而产生相同长度的新向量。此外,演讲者还解释了如何将向量乘以标量来缩放其大小,并演示了如何使用 Python 中的 NumPy 数组执行这些运算。还讨论了两个向量的点积,它产生一个标量并可用于计算向量的加权和。

然后焦点转向向量范数及其在机器学习中的重要性。向量范数是指向量的大小或长度,并使用总结向量与向量空间原点的距离的度量来计算。需要强调的是,除了全零值的向量之外,向量范数始终为正。该视频介绍了机器学习中使用的四种常见向量范数计算。它从向量 L1 范数开始,然后是 L2 范数(欧几里德范数)和最大范数。本节还定义了矩阵并解释了如何在 Python 中操作它们。讨论了矩阵算术,包括矩阵-矩阵乘法(点积)、矩阵-向量乘法和标量乘法。矩阵被描述为具有一列或多列和一行或多行的二维标量数组,通常用大写字母(例如“A”)表示。

接下来,介绍机器学习的矩阵运算的概念。这包括矩阵乘法、矩阵除法和矩阵标量乘法。矩阵乘法,也称为矩阵点积,要求第一个矩阵的列数等于第二个矩阵的行数。视频中提到可以使用NumPy中的dot函数来实现这个操作。还解释了矩阵转置的概念,即通过翻转原始矩阵的行数和列数来创建新矩阵。最后,讨论矩阵求逆的过程,该过程涉及找到另一个矩阵,该矩阵与原始矩阵相乘,得到单位矩阵。

视频继续讨论矩阵求逆,进一步探讨了这个概念。矩阵求逆由矩阵旁边的负 1 上标表示。该视频解释了矩阵求逆涉及寻找有效的数值方法。介绍方阵的trace操作,计算对角线元素之和,可以使用NumPy中的trace函数来计算。方阵的行列式定义为矩阵体积的标量表示,也可以使用 NumPy 中的 det 函数计算。简要提及矩阵的秩,它估计矩阵中线性独立的行或列的数量,通常使用奇异值分解来计算。最后,解释了稀疏矩阵的概念,强调它们主要包含零值,并且表示和使用的计算成本可能很高。

然后,视频深入研究了稀疏矩阵,稀疏矩阵主要由零值组成,与大多数具有非零值的密集矩阵不同。稀疏性是通过计算稀疏性得分来量化的,稀疏性得分是零值的数量除以矩阵中元素的总数。该视频强调了与稀疏性相关的两个主要问题:空间复杂度和时间复杂度。值得注意的是,表示和使用稀疏矩阵的计算成本可能很高。

为了应对这些挑战,视频提到 Scipy 提供了用于创建和操作稀疏矩阵的工具。此外,它还强调了 NumPy 和 Scipy 中的许多线性代数函数可以对稀疏矩阵进行运算,从而能够对稀疏数据进行高效的计算和运算。

稀疏矩阵通常用于应用机器学习中的数据观察和数据准备。它们的稀疏性允许更有效地存储和处理具有大量零值的大型数据集。通过利用稀疏结构,机器学习算法可以受益于减少的内存使用和更快的计算。

接下来,该视频讨论了线性代数中常用的不同类型的矩阵,特别是与机器学习相关的矩阵。引入方阵,其中行数等于列数。还提到了具有不同行数和列数的矩形矩阵。该视频解释了方阵的主对角线,方阵由具有相同行和列索引的元素组成。方阵的阶数(定义为行数或列数)也包括在内。

此外,视频还介绍了对称矩阵,即等于其转置的方阵。解释了三角矩阵,包括上三角矩阵和下三角矩阵。还讨论了所有非对角元素均为零的对角矩阵。单位矩阵是一种方阵,主对角线上有 1,其他位置有 0,在其作为乘法单位的作用的背景下进行解释。还引入了当两个向量的点积为零时形成的正交矩阵。

该视频接下来讨论正交矩阵和张量。正交矩阵是一种特定类型的方阵,其中列和行是正交单位向量。这些矩阵在计算其逆时计算效率高且稳定,使其可用于各种应用,包括深度学习模型。视频进一步提到,在 TensorFlow 中,张量是一种基本数据结构,是向量和矩阵的泛化。张量表示为多维数组,可以在 Python 中使用 n 维数组进行操作,类似于矩阵。该视频强调了可以对张量、矩阵和向量执行逐元素张量运算,例如加法和减法,从而提供更高维度的直觉。

接下来,视频介绍了矩阵分解,这是一种将矩阵分解为其组成部分的方法。矩阵分解简化了复杂的矩阵运算并实现高效计算。涵盖两种广泛使用的矩阵分解技术:方阵的 LU(下-上)分解和矩形矩阵的 QR(QR 分解)分解。

LU 分解可以简化线性回归问题中的线性方程,并促进矩阵行列式和逆矩阵等计算。 QR 分解可应用于求解线性方程组。这两种分解方法都可以使用Python中NumPy包中的内置函数来实现,为各种线性代数问题提供高效可靠的解决方案。

此外,视频还讨论了专门用于对称和正定矩阵的 Cholesky 分解。 Cholesky 分解由下三角矩阵表示,它被认为是分解对称矩阵的 LU 分解效率的近两倍。

视频简要提到了矩阵分解方法,包括特征分解,用于简化复杂的运算。特征分解将矩阵分解为其特征向量和特征值。特征向量是表示方向的系数,而特征值是标量。特征向量和特征值都有实际应用,例如降维和执行复杂的矩阵运算。

最后,该视频涉及奇异值分解(SVD)的概念及其在机器学习中的应用。 SVD 用于机器学习中的各种矩阵运算和数据缩减方法。它在最小二乘线性回归、图像压缩、数据去噪等计算中发挥着至关重要的作用。

视频解释了 SVD 允许将矩阵分解为三个单独的矩阵:U、Σ 和 V。U 矩阵包含左奇异向量,Σ 是包含奇异值的对角矩阵,V 包含右奇异向量。通过从这些分量重建原始矩阵,可以获得原始数据的近似值,同时降低其维数。

SVD 的主要应用之一是降维。通过选择最重要的奇异值及其相应的奇异向量的子集,可以在较低维空间中表示数据而不会丢失关键信息。该技术在数据具有高维度的情况下特别有用,因为它允许更有效的存储和计算。

该视频强调,SVD 已通过一种称为潜在语义分析 (LSA) 或潜在语义索引 (LSI) 的技术成功应用于自然语言处理。通过将文本文档表示为矩阵并执行 SVD,LSA 可以捕获文档的底层语义结构,从而实现文档相似性和主题建模等任务。

此外,视频还介绍了截断的SVD类,它直接实现了矩阵降维的功能。通过截断的 SVD,可以将原始矩阵转换为低维表示,同时保留最重要的信息。该技术在处理大型数据集时特别有用,因为它可以更有效地进行处理和分析。

总之,该视频涵盖了与机器学习线性代数相关的各种主题。它强调了学习线性代数作为理解机器学习背景下的微积分和统计学的基本构件的重要性。该视频讨论了线性代数在机器学习中的应用,例如算法的定制和开发、数值线性代数、统计分析以及信号处理和计算机图形学等各种其他领域。

此外,该视频还探讨了线性代数中的关键概念,包括向量、矩阵、矩阵运算、向量范数、矩阵分解技术和稀疏矩阵。它解释了这些概念如何在机器学习中使用,并提供了对其实际应用的见解。

通过理解线性代数,机器学习从业者可以更深入地了解机器学习算法的数学基础,并将其有效地应用于现实世界的问题。线性代数是数据操作、降维和优化的强大工具,可实现高效且有效的机器学习解决方案。

  • 00:00:00 强调了学习线性代数对于机器学习工程师的重要性,因为它被认为是理解机器学习所需的微积分和统计的基石。对线性代数的更深入理解使机器学习从业者能够更好地直观地了解这些方法的工作原理,从而使他们能够定制算法并设计新的算法。本课程以自上而下的方法教授线性代数的基础知识,使用具体示例和数据结构来演示矩阵和向量的运算。线性代数是矩阵和向量的数学,它提供了一种数据语言,并允许使用这些数据结构上的操作来创建新的列或数字数组。线性代数于 1800 年代末发展起来,用于求解未知的线性方程组,现在已成为理解机器学习的关键先决条件。

  • 00:05:00 演讲者讨论数值线性代数,即线性代数在计算机中的应用。这包括实现线性代数运算以及处理在数字计算机中使用有限的浮点精度时出现的潜在问题。数值线性代数是机器学习中的重要工具,因为许多深度学习算法依赖于图形处理单元快速计算线性代数运算的能力。一些流行的开源数值线性代数库用于计算线性代数运算,其中基于 Fortran 的线性代数库为使用 Python 等编程语言的大多数现代实现提供了基础。线性代数在统计学中也很重要,特别是在多元统计分析、主成分分析和解决线性回归问题中。此外,演讲者还讨论了线性代数在信号处理、计算机图形学甚至物理学等领域的各种应用,以及使用张量和张量微积分(一种线性代数)的阿尔伯特·爱因斯坦相对论。

  • 00:10:00 介绍了在图像上使用线性代数运算的概念,例如使用线性代数的符号和运算进行裁剪、缩放和剪切。此外,还解释了一种流行的分类变量编码技术,称为“单热编码”。此外,还讨论了机器学习中使用的主要数据结构,N 维数组或 ND 数组,以及如何使用 Python 中的 NumPy 库创建和操作它们。最后,解释了从现有数组创建新数组的两个最流行的函数:v-stack 和水平堆栈。

  • 00:15:00 演讲者讨论了如何操作和访问 numpy 数组中的数据,这些数组通常用于表示机器学习数据。可以使用 array 函数将一维列表转换为数组,并且可以使用列表的列表创建二维数据数组。通过索引访问数据与其他编程语言类似,但 numpy 数组也可以使用冒号运算符进行切片。负索引也是可能的,切片可用于指定机器学习中的输入和输出变量。

  • 00:20:00 该视频涵盖了处理机器学习中常见的多维数据集的技术。它从一维切片开始,然后进行二维切片,并将数据分离为输入和输出值以进行训练和测试。该视频随后介绍了数组重塑,包括将一维数组重塑为具有一列的二维数组,以及将二维数据重塑为三维数组,以用于期望一个或多个时间步长和一个或多个特征的多个样本的算法。最后,视频介绍了数组广播,它允许对不同大小的数组进行加法、减法或在算术中使用,这对于不同大小的数据集非常有用。

  • 00:25:00 讨论了 numpy 中数组算术的局限性,其中包括仅对具有相同维度和相同大小的维度的数组执行算术。然而,numpy 的内置广播功能克服了这一限制,该功能沿着最后一个不匹配的维度复制较小的数组。此方法允许在不同形状和大小的数组之间进行算术。给出了三个广播示例,包括标量和一维数组、二维数组中的标量以及二维数组中的一维数组。还指出了广播的局限性,包括执行广播必须满足的严格规则,即只能根据数组中每个维度的形状相等或维度大小为 1 来执行算术运算。

  • 00:30:00 演讲者介绍了向量的概念,向量是一个或多个称为标量的值的元组,通常使用小写字符(例如“v”)表示。向量可以被认为是 n 维空间中的点或坐标,其中 n 是维数,并且可以在 Python 中创建为 numpy 数组。演讲者还讨论了向量算术运算,例如向量加法和减法,这些运算是对相等长度的向量按元素进行的,从而产生相同长度的新向量。此外,演讲者还解释了向量可以乘以标量来缩放其大小,以及如何在 Python 中使用 numpy 数组执行这些运算。最后,演讲者讨论了两个向量的点积(它给出了一个标量),以及如何使用它来计算向量的加权和。

  • 00:35:00 重点是向量范数及其在机器学习中的重要性。向量范数是指向量的大小或长度,使用某种度量来计算,该度量总结了向量与向量空间原点的距离。除了全零值的向量之外,范数始终是正数。介绍了机器学习中使用的四种常见向量范数计算,从向量 L1 范数开始,然后是 L2 和最大范数。本节还定义了矩阵以及如何在 Python 中操作它们,讨论矩阵算术、矩阵-矩阵乘法(点积)、矩阵-向量乘法和标量乘法。矩阵是具有一列或多列和一行或多行的二维标量数组,通常用大写字母表示,例如 A。

  • 00:40:00 介绍了机器学习矩阵运算的概念,包括矩阵乘法、矩阵除法和矩阵标量乘法。矩阵乘法,也称为矩阵点积,要求第一个矩阵的列数等于第二个矩阵的行数。 numpy中的dot函数可以用来实现这个操作。还引入了矩阵转置的概念,即通过翻转原始矩阵的行数和列数来创建新矩阵。最后,讨论矩阵求逆的过程,即找到另一个矩阵,与该矩阵相乘,得到单位矩阵。

  • 00:45:00 涵盖了矩阵求逆的概念,其中矩阵求逆由矩阵旁边的负 1 上标表示。矩阵求逆的运算涉及寻找一套有效的数值方法。还讨论了方阵的迹运算,可以使用numpy中的trace函数来计算。方阵的行列式定义为矩阵体积的标量表示,也可以使用 numpy 中的 det 函数计算。此外,还引入了矩阵的秩,它估计矩阵中线性独立的行或列的数量,通常使用奇异值分解来计算。最后,解释了稀疏矩阵的概念,稀疏矩阵是大部分包含零值的矩阵,表示和使用的计算成本很高。

  • 00:50:00 我们了解稀疏矩阵,稀疏矩阵是主要由零值组成的矩阵,与主要由非零值组成的稠密矩阵不同。稀疏性可以通过计算分数来量化,分数是零值的数量除以矩阵中元素的总数。我们还了解了稀疏性的两个大问题:空间复杂度和时间复杂度。 Scipy 提供了创建稀疏矩阵的工具,许多线性代数 numpy 和 scipy 函数可以对其进行操作。稀疏矩阵通常用于应用机器学习中的数据观察和数据准备。

  • 00:55:00 讨论了线性代数中常用的不同类型的矩阵,特别是与机器学习相关的矩阵。引入了行数等于列数的方阵以及矩形矩阵。还涵盖了方阵的主对角线和阶。此外,还解释了对称矩阵、三角矩阵(包括上矩阵和下矩阵)、对角矩阵、单位矩阵和正交矩阵。注意,当两个向量具有等于零的点积时,形成正交矩阵。

  • 01:00:00 我们学习正交矩阵和张量。正交矩阵是一种方阵,其列和行都是正交单位向量。这些矩阵的计算成本低且计算逆矩阵稳定,可用于深度学习模型。在 Tensorflow 中,张量是一种基石数据结构,也是向量和矩阵的泛化,表示为多维数组。在 Python 中,可以使用类似于矩阵的 n 维数组来操作张量,并使用按元素张量运算(例如加法和减法)。此外,可以对张量、矩阵和向量执行张量积运算,从而获得更高维度的直觉。

  • 01:05:00 该视频介绍了矩阵分解,这是一种将矩阵简化为其组成部分并简化可在分解矩阵上执行的更复杂矩阵运算的方法。后续课程中将介绍两种广泛使用的矩阵分解技术:方阵的 LU 矩阵分解和矩形矩阵的 QR 矩阵分解。 LU 分解可用于简化线性回归问题中的线性方程并计算矩阵的行列式和逆矩阵,而 QR 分解可用于求解线性方程组。这两种分解都可以使用 Python 中 NumPy 包中的内置函数来实现。

  • 01:10:00 该视频讨论了用于对称和正定矩阵的 Cholesky 分解。该方法的效率几乎是 LU 分解的两倍,并且是分解对称矩阵的首选方法。 Cholesky 分解由下三角矩阵表示,可以通过 NumPy 中的 Cholosky 函数轻松访问。视频中还提到了矩阵分解方法,包括特征分解,用于简化复杂的运算,特征分解将矩阵分解为特征向量和特征值。最后,视频指出特征向量是单位向量,而特征值是标量,两者都可用于降低维度和执行复杂的矩阵运算。

  • 01:15:00 讨论了特征分解的概念及其使用高效迭代算法的计算。特征分解是将方阵分解为其特征值和特征向量的方法,特征值和特征向量分别是系数和方向。特征分解可以在 NumPy 中使用 eig 函数计算,并且可以进行测试来确认向量确实是矩阵的特征向量。原始矩阵也可以根据特征值和特征向量重建。本节还简要介绍了奇异值分解(SVD)作为一种矩阵分解方法,用于将矩阵分解为其组成部分,以使后续的某些矩阵计算更加简单,以及其在压缩、去噪和数据缩减等各个领域的应用。

  • 01:20:00 讨论奇异值分解(SVD)的概念及其在机器学习中的应用。 SVD 用于机器学习中其他矩阵运算和数据缩减方法的计算,例如最小二乘线性回归、图像压缩和去噪数据。原始矩阵可以根据 SVD 返回的 u、sigma 和 v 元素重建。 SVD 的一个流行应用是降维,其中数据可以缩减为与预测问题最相关的较小特征子集。这已成功应用于自然语言处理,使用一种称为潜在语义分析或潜在语义索引的技术。讨论了直接实现此功能的截断 SVD 类,并使用定义的矩阵和后跟变换版本来演示其应用。
Applied Linear Algebra for Machine Learning Engineers
Applied Linear Algebra for Machine Learning Engineers
  • 2022.03.26
  • www.youtube.com
This course will cover everything you need to know about linear algebra for your career as a machine learning engineer.
 

面向机器学习工程师的 XGBoost 完整介绍


面向机器学习工程师的 XGBoost 完整介绍

在视频中,讲师为机器学习工程师全面介绍了 XGBoost。他们解释说,XGBoost 是一个开源机器学习库,以其快速构建高度准确的分类和回归模型的能力而闻名。它作为构建现实世界模型的首选而广受欢迎,特别是在处理高度结构化的数据集时。 XGBoost 由 Taiki Chen 创作,基于梯度提升决策树技术,可实现快速高效的模型构建。

讲师强调 XGBoost 支持多种接口,包括 Python 和 scikit-learn 实现。他们继续演示 XGBoost,展示用于加载数据和构建模型的各种模块。

然后,该视频重点介绍了准备用于训练 XGBoost 模型的数据集。讲师强调将数据分为训练集和测试集的重要性。他们将目标变量识别为二元分类问题,并解释了为 XGBoost 模型设置必要的超参数的过程。一旦模型在训练数据上进行了训练,他们就会使用准确性分数作为指标来评估其在测试数据上的准确性。

为了更好地理解 XGBoost,讲师深入研究了梯度提升的概念及其在更广泛的传统机器学习模型中的作用。他们解释说,梯度增强是一种将弱模型与相同类型的其他模型相结合以创建更准确模型的技术。在此过程中,每个后续树都是针对前一树的预测残差而构建的。讲师强调决策树用于梯度提升,因为它们提供了基于给定条件的可能决策解决方案的图形表示。他们还提到,设计决策树需要有详细记录的思维过程才能有效地识别潜在的解决方案。

该视频进一步探讨了使用递归二元分割创建二元决策树。此过程涉及以贪婪方式评估所有输入变量和分割点,以最小化衡量预测值与实际值的接近程度的成本函数。讲师解释说,选择成本最低的分割,并且可以进一步递归地进一步细分所得组。他们强调所使用的算法是贪婪的,因为它专注于在每一步做出最佳决策。但是,最好使用分割次数较少的决策树,以确保更好的可理解性并降低过度拟合数据的风险。讲师强调,XGBoost 提供了防止过度拟合的机制,例如限制每棵树的最大深度和修剪不相关的分支。此外,它们还涵盖了标签编码并演示了如何使用 scikit-learn 加载 iris 数据集。

接下来,视频介绍了使用标签编码器方法将目标标签编码为数值变量的过程。将数据拆分为训练和测试数据集后,讲师在训练数据上定义并训练 XGBoost 分类器。然后,他们使用经过训练的模型对测试数据集进行预测,准确率达到 90%。引入集成学习的概念作为一种组合多个模型来提高预测精度的方法,最终提高学习算法的效率。讲师强调为分类或回归问题选择正确模型以获得最佳结果的重要性。

该视频深入探讨了机器学习模型中偏差和方差的概念,并强调了两者之间平衡的必要性。集成学习是一种通过组合弱学习器组来创建更复杂的模型来解决这种平衡的技术。介绍了两种集成技术:bagging 和 boosting。 Bagging 旨在通过创建数据子集来训练决策树并创建具有高方差和低偏差的模型集合来减少方差。另一方面,Boosting 涉及使用决策树顺序学习模型,从而可以纠正先前模型所犯的错误。讲师强调,梯度提升是一种特定类型的提升,它使用回归树形式的弱学习器来优化可微损失函数。

该视频详细解释了梯度提升的概念,概述了其三步过程。第一步涉及迭代添加弱学习器(例如决策树)以最小化损失。第二步是顺序添加树,最后一步重点是通过进一步迭代减少模型误差。为了演示该过程,该视频展示了如何使用 k 折交叉验证来分割数据。通过XGBoost,获得每次折叠的分数。教师选择决策树作为弱学习器,确保深度较浅以避免过度拟合。最后,损失函数被定义为机器学习模型对数据的拟合程度的度量。

解释了梯度提升的核心步骤,包括优化损失函数、利用弱学习器(通常是决策树)以及通过集成学习以加法方式组合多个弱学习器。该视频还涵盖了使用 XGBoost 的实际方面,例如处理缺失值、将模型保存到磁盘以及采用早期停止。提供了使用 Python 代码的演示来说明 XGBoost 的各种用例。此外,该视频还强调了数据清理的重要性,包括处理缺失值的技术,例如平均值插补。

演讲者讨论了正确清理数据而不是仅仅依靠算法来完成工作的重要性。他们演示了如何删除空值可以提高模型准确性并警告处理空值的算法。 pickling 的概念涉及将训练好的模型保存到磁盘以供以后使用,它是使用 Python 中的 pickle 库引入的。演讲者演示了如何保存和加载模型。他们还展示了如何使用 XGBoost 和 matplotlib 库中的绘图重要性函数来绘制数据集中每个属性的重要性。

演讲者讨论了在构建机器学习模型时分析和测试不同场景的重要性,强调 XGBoost 的特征重要性分数可能并不总是反映特征对模型准确性的实际影响。他们使用泰坦尼克号数据集的示例来演示添加“性别”属性如何提高模型准确性,尽管在特征重要性得分中排名较低。演讲者强调测试各种场景的重要性,而不仅仅是依赖功能重要性分数。他们还提到 XGBoost 可以在训练期间评估和报告测试集的性能。

该视频介绍了如何通过指定评估指标并传递 x 和 y 对数组来监控 XGBoost 模型在训练期间的性能。模型在每个评估集上的表现都会被存储并在训练后可供使用。该视频介绍了学习曲线,它提供了对模型行为的深入了解,并有助于通过尽早停止学习来防止过度拟合。提前停止是一种在验证分数没有改善的情况下在固定数量的 epoch 后停止训练的技术。

该视频介绍了 XGBoost 中早期停止轮次的使用,并演示了如何构建回归模型来评估波士顿的房价。讨论了梯度提升中并行性的好处,重点是单个树的构建和输入数据的有效准备。该视频演示了多线程支持,它利用系统的所有核心同时执行计算,从而提高程序执行速度。尽管 XGBoost 主要针对分类问题,但该视频也强调了其在构建回归模型方面的出色能力。

演讲者创建一个列表来保存示例的迭代次数,并使用 for 循环根据线程数测试模型的执行速度。他们打印每次迭代的构建速度并绘制结果,显示模型的速度如何随着线程数量的增加而降低。然后,演讲者讨论了超参数调整,其中涉及调整模型中的参数以增强其性能。他们探索了 XGBoost 和 scikit-learn 的默认参数,并提到调整超参数对于优化 XGBoost 模型的性能至关重要。该视频解释说,超参数是不是从数据中学习的设置,而是由用户手动设置的。调整超参数涉及系统地搜索可实现最高模型性能的参数值的最佳组合。

为了执行超参数调整,视频介绍了两种常见的方法:网格搜索和随机搜索。网格搜索涉及定义超参数值网格并详尽地评估每个组合。另一方面,随机搜索从预定义的搜索空间中随机采样超参数组合。该视频建议当搜索空间较大或超参数数量较多时使用随机搜索。

该视频演示了使用 scikit-learn 中的 RandomizedSearchCV 类进行超参数调整。他们定义了一个参数网格,其中包含不同的超参数值,例如学习率、最大深度和子样本比率。 RandomizedSearchCV 类通过交叉验证执行随机搜索,评估每个参数组合的性能。调整后,选择最佳超参数,并使用这些最佳值训练模型。

演讲者解释说,超参数调整有助于找到欠拟合和过拟合之间的最佳权衡。根据特定数据集和当前问题仔细选择超参数,以达到平衡并避免过度拟合,这一点非常重要。

除了超参数调整之外,该视频还讨论了 XGBoost 模型中特征的重要性。特征重要性可以深入了解哪些特征对模型的预测影响最显着。演讲者解释说,特征重要性由平均增益决定,平均增益衡量特征在决策树中使用时所带来的损失函数的改善程度。平均增益越高表明重要性越高。

该视频演示了如何使用 XGBoost 库提取和可视化特征重要性。他们绘制了一个条形图,显示最重要的特征及其相应的重要性得分。演讲者指出,特征重要性有助于特征选择、降维以及深入了解根本问题。

在视频的最后,演讲者简要提到了与 XGBoost 相关的其他高级主题。他们通过调整scale_pos_weight超参数来处理不平衡数据集,使用XGBoost的内置功能处理缺失值,以及通过one-hot编码或使用XGBoost中对分类特征的内置支持来处理分类变量。

该视频全面概述了 XGBoost,涵盖其关键概念、实现、超参数调整和特征重要性分析。演示和代码示例有助于说明在 Python 中使用 XGBoost 的实际情况。对于希望利用 XGBoost 执行分类和回归任务的机器学习工程师来说,它是宝贵的资源。

  • 00:00:00 讲师为机器学习工程师介绍 XGBoost。 XGBoost 是一个开源机器学习库,用于快速构建高度准确的分类和回归模型,使其成为针对高度结构化数据集构建现实世界模型的首选。 XGBoost 的作者是 Taiki Chen,它是梯度提升决策树的实现,以提高速度和性能。讲师还强调,XGBoost 支持多种接口,例如 Python 和 scikit-learn 实现,并提供了使用多个模块加载数据和构建模型的 XGBoost 演示。

  • 00:05:00 讲师解释了如何准备用于训练 XGBoost 模型的数据集,重点是将数据分为训练集和测试集。将目标变量识别为二元分类问题,并为XGBoost模型设置必要的超参数。该模型在训练数据上进行训练,并使用准确性分数作为指标在测试数据上评估模型的准确性。讲师还概述了梯度提升、XGBoost 背后的概念,以及它如何适应更广泛的传统机器学习模型类别。

  • 00:10:00 我们学习了递归二元分割和集成学习,它结合了多个弱模型来提高预测的准确性。梯度增强是一种通过将弱模型与相同类型的其他模型相结合来生成更准确的模型来构建预测模型的技术。每个连续的树都是针对前一树的预测残差构建的。决策树用于梯度提升,并需要基于特定条件的决策的所有可能解决方案的图形表示。决策树的设计需要有详细记录的思维过程,有助于形式化头脑风暴过程,以便我们能够识别更多潜在的解决方案。

  • 00:15:00 该视频解释了如何创建二元决策树。该过程称为递归二元分割,它涉及以贪婪的方式评估所有输入变量和分割点,以最小化衡量预测值与其相应实际值的接近程度的成本函数。选择成本最低的分割,并且可以递归地对所得组进行细分。该算法是一种贪婪算法,专注于在每一步做出最佳决策。分割较少的决策树是首选,因为它们更容易理解并且不太可能过度拟合数据。为了防止过度拟合,XGBoost 算法允许采用一种机制来停止树的生长,例如限制每棵树的最大深度,以及修剪不相关的分支。该视频还介绍了标签编码和使用 scikit-learn 加载虹膜数据集。

  • 00:20:00 该视频介绍了使用标签编码器方法将目标标签编码为数值变量的过程。将数据分为训练数据集和测试数据集后,将定义 XGBoost 分类器并根据训练数据进行训练。然后使用该模型对测试数据集进行预测,准确率达到 90%。然后引入集成学习作为组合多个模型的方法,以提高预测的准确性,从而实现更有效的学习算法。该视频强调了在尝试获得最佳结果时为分类或回归问题选择正确模型的重要性。

  • 00:25:00 讨论了机器学习模型中偏差和方差的概念,并强调了两者之间平衡的必要性。集成学习作为一种技术被引入,通过组合弱学习器组来创建更复杂的模型来解决这种平衡。 Bagging 和 boosting 是两种集成技术,Bagging 用于通过创建多个数据子集来训练决策树并创建具有高方差和低偏差的模型集成来减少方差。 Boosting 涉及使用决策树顺序学习模型,允许纠正先前模型的错误,并通过弱学习者之间的团队合作来正确分类输入来实现。梯度提升是一种特定类型的提升,涉及优化可微损失函数并以回归树的形式使用弱学习器。

  • 00:30:00 介绍了梯度提升的概念并解释了其三步过程。第一步涉及在迭代过程中添加决策树等弱学习器,以最大限度地减少损失。第二步是顺序添加树,而最后一步的目标是通过更多迭代来减少模型误差。演示涉及使用 k 折交叉验证来分割数据,并通过 XGBoost 获得每个折的分数。决策树被用作选择的弱学习器,深度较浅以避免过度拟合。最后,损失函数被定义为机器学习模型对特定现象数据的拟合程度的度量。

  • 00:35:00 解释了梯度提升的核心步骤,包括优化损失函数、使用弱学习器(通常是决策树)以及通过集成学习以加法方式组合许多弱学习器。本节还介绍了使用 XGBoost 的各个实际方面,例如处理缺失值、将模型保存到磁盘以及使用提前停止。本节采用基于代码的方法,并提供了大量演示来展示 XGBoost 的各种用途。此外,本节探讨了数据清理的重要性,包括如何用平均值插补替换缺失值。

  • 00:40:00 演讲者讨论了清理自己的数据而不是依赖算法来为您完成工作的重要性。他们演示了如何删除空值可以提高模型准确性,并警告不要允许算法处理空值。演讲者还介绍了 pickle 的概念,这是一种将训练好的模型保存到磁盘以供以后使用的方法,并演示了如何使用 pickle 库在 Python 中保存和加载模型。最后,他们展示了如何使用 XGBoost 和 matplotlib 中的绘图重要性函数来绘制数据集中每个属性的重要性。

  • 00:45:00 演讲者讨论了 XGBoost 确定的特征重要性分数以及在构建机器学习模型时分析和测试不同场景的重要性。他们使用泰坦尼克号数据集的示例,展示了添加“性别”属性如何提高模型的准确性,尽管它在特征重要性得分中排名较低。演讲者强调测试各种场景的重要性,而不仅仅是依赖功能重要性分数。他们还提到 XGBoost 在训练期间评估和报告测试集性能的能力。

  • 00:50:00 该视频讨论了如何通过指定评估指标并传入 x 和 y 对数组来监控 XGBoost 模型在训练期间的性能。模型在每个评估集上的表现都会被存储并在训练后可供使用。使用这些性能指标,可以创建学习曲线,以进一步了解模型的行为,并可能提前停止学习以防止过度拟合。该视频还介绍了提前停止,这是一种如果在验证分数中没有观察到任何改进,则在固定数量的时期后停止训练的技术。

  • 00:55:00 该视频介绍了 XGBoost 中提前停止回合的使用以及构建回归模型来评估波士顿的房价。还讨论了梯度提升中并行性的好处,重点是单个树的构造和输入数据的有效准备。提供了多线程支持的演示,它可以利用系统的所有核心同时执行多个计算,从而加快程序执行速度。视频还提到,虽然 XGBoost 针对分类问题,但它也可以擅长构建回归模型。

  • 01:00:00 演讲者创建一个列表来保存示例的迭代次数,并使用 for 循环根据线程数测试模型的执行速度。打印出两个结果:每次迭代的构建速度以及显示模型速度如何随着线程数量增加而降低的图。然后,演讲者讨论了超参数调整,这意味着将参数传递到模型中以增强其性能。他们探索了 xgboost 和 scikit-learn 的默认参数,并指出调整超参数可能需要一些工作才能挤出模型的性能。最后,他们深入研究需要多少棵树或弱学习器或估计器来配置梯度提升模型以及每棵树应该有多大。

  • 01:05:00 该视频讲述了如何调整超参数以优化 XGBoost 模型。他们展示了 n 估计器模型参数的网格搜索示例,该示例评估一系列值以测试给定模型上的估计器。它们还涵盖了不同的子采样技术,以及如何在 XGBoost 类的第二个包装器中指定行采样。此外,该视频还强调了配置学习率的重要性,这是通过反复试验来完成的。研究表明,学习率与优化过程的许多其他方面相互作用,较小的学习率将需要更多的训练周期。最后,诊断图对于研究学习率如何影响学习率和模型的学习动态非常有用。

  • 01:10:00 演示者演示了如何在泰坦尼克号数据集上创建高分 XGBoost 模型。演示者使用 pandas 和训练测试分割库来预处理数据,并使用 XGBoost 来训练模型。该模型的准确率超过 80,值得恢复。演示者还警告人们不要通过过度拟合模型或篡改结果来在 Kaggle 排行榜上上传虚假分数。最后,演示者逐行浏览代码,演示数据清理、标签编码、处理空值、定义 X 轴和 Y 轴以及分割数据以训练和测试模型。

  • 01:15:00 重申了正确处理缺失数据的重要性,因为应用机器学习主要是关于数据,而不是建模。此外,还解释了监控模型性能的结果,并提出提前停止作为训练复杂机器学习模型以避免过度拟合的方法。本节还讨论了配置 XGBoost 的多线程支持以及 XGBoost 和 Scikit-learn 的默认超参数。
A Complete Introduction to XGBoost for Machine Learning Engineers
A Complete Introduction to XGBoost for Machine Learning Engineers
  • 2022.03.28
  • www.youtube.com
This course will cover all the core aspects of the most well-known gradient booster used in the real-world.
 

面向机器学习工程师的 Python 特征工程案例研究



面向机器学习工程师的 Python 特征工程案例研究

讲师首先介绍特征工程的概念及其在从每天生成的大量数据中提取价值方面的关键作用。他们强调特征工程在最大化从杂乱数据中提取的价值方面的重要性。假设学习者具有入门级 Python 知识,以及使用 NumPy、Pandas 和 Scikit-Learn 的经验。

讲师强调了探索性数据分析和数据清理在构建机器学习模型过程中的重要性。他们解释说,这些阶段将是课程的主要重点。虽然学习者将在最后一章中完成整个流程,但主要重点将是特征工程。

讲师强调特征工程对于提高模型性能至关重要。他们解释说,特征工程涉及将原始数据转换为能更好地代表机器学习模型的底层信号的特征。特征的质量直接影响模型的性能,因为好的特征甚至可以使简单的模型变得强大。讲师建议在选择特征、删除不相关的特征以及包括与所分析问题相关的因素时使用常识。

视频中介绍了各种清洁技术和工程功能。去除异常值,对数据进行标准化和转换以解决偏斜问题,组合特征以创建更有用的特征,并根据连续变量创建分类变量。这些技术旨在获得能够准确捕获数据中重要趋势的特征,同时丢弃不相关的信息。以泰坦尼克号数据集为例,包含船上乘客的信息。

讲师讨论机器学习中的类别不平衡问题,其中正面案例明显少于负面案例。他们建议调整模型以更好地检测这两种情况下的信号,例如通过对负类进行下采样。然而,由于示例中使用的数据集并不严重不平衡,因此讲师继续探索数据特征。对连续特征进行基本的探索性数据分析,丢弃姓名、机票、性别、舱位、登机等非数字特征。显示清理后的数据集,并检查特征的分布和相关性。研究发现,“p-class”和“fare”特征与生存列表现出最强的相关性,表明它们在预测中的潜在用途。

对连续特征进行进一步的探索性数据分析。姓名和票证等非数字特征将被删除,并打印数据集的前五行。使用 pandas 函数描述数据,揭示缺失值和名为“Survived”的二进制目标变量。分析相关矩阵以确定特征之间的相关性及其与“幸存”的关系。强调了查看数据完整分布的重要性,因为仅依赖平均值或中值可能会导致不准确的结论。使用绘图和可视化来探索分类特征与生存率之间的关系,揭示诸如头等舱乘客和家庭成员较少的乘客的生存率较高等趋势。

讲师强调了特征工程的重要性,并建议不要在没有适当测试的情况下过度压缩特征。他们讨论了探索和设计分类特征的过程,包括识别缺失值和每个特征中唯一值的数量。建议对特征进行分组并分析每组中目标变量的平均值,作为更好地理解数据集的有用方法。探索了缺失的客舱特征与生存率之间的关系,从而发现了尽管该特征看似价值较低的生存率的强有力指标。

特征探索表明,头衔、舱位指标和性别与生存有很强的相关性,而登船特征是多余的。船舱与生存率之间的关系是通过观察来解释的,即在瑟堡登机的人越多,拥有船舱的人就越多,从而导致生存率越高。机上直系亲属的人数合并为一项功能,并根据其相关性建议乘客舱位或票价。

讲师解释说,下一步是根据从探索性数据分析中获得的见解来设计功能。他们首先从“名称”功能创建一个名为“标题”的新功能。 “头衔”功能从每位乘客的姓名中提取头衔(例如,先生、夫人、小姐),因为它可以提供与社会地位和生存率相关的附加信息。为了简单起见,“标题”特征随后被映射到数值。

接下来,讲师重点关注“客舱”功能,该功能最初有许多缺失值。然而,通过分析有和没有舱位信息的乘客的生存率,发现记录了舱位号的乘客的生存率更高。基于这一见解,创建了一个名为“HasCabin”的新二进制特征来指示乘客是否有记录的机舱。

接下来,讲师将讨论“性”功能。由于机器学习模型通常更适合数字数据,因此“性别”特征被映射为二进制值,其中 0 代表男性,1 代表女性。

在设计“性别”功能后,讲师将介绍“登船”功能,该功能指示登船港口(C = 瑟堡,Q = 皇后镇,S = 南安普敦)。然而,之前确定“Embarked”特征是多余的,对生存预测没有显着贡献。因此,它被从数据集中删除。

然后,讲师重点关注“Pclass”和“Fare”特征,这些特征在探索性数据分析过程中与生存率表现出很强的相关性。这些特征保持原样,因为它们已经采用适合机器学习模型的格式。

在这个阶段,讲师强调数据预处理和为模型准备特征的重要性。数据集分为训练集和测试集,以准确评估模型的性能。 “年龄”特征中的缺失值是使用乘客的中位年龄来估算的,并且使用 Scikit-Learn 的预处理函数将所有特征标准化为具有零均值和单位方差。

最后,讲师简要讨论了分类特征的 one-hot 编码的概念,并提到将在下一个视频中更详细地介绍它。 One-hot 编码是一种常用技术,用于将分类变量表示为二进制向量,使模型能够正确解释它们。

总而言之,在这部分课程中,讲师介绍了特征工程的概念,并解释了其在机器学习中的意义。他们进行了探索性数据分析,清理了数据集,并根据获得的见解设计了功能。讲师演示了如何创建新特征、将分类特征映射到数值以及删除冗余特征。接下来的步骤涉及数据预处理和为机器学习模型准备特征。

请注意,上述摘要是基于特征工程课程中通常涵盖的一般主题的假设延续。实际内容和示例可能会因具体课程和讲师而异。

  • 00:00:00 讲师介绍了特征工程课程及其从每天生成的大量数据中提取价值的重要性,为学习者提供了他们需要的工具包,以便他们能够从杂乱的数据中提取最大价值。假设学习者具有一些入门级 Python 知识,以及使用 NumPy、Pandas 和 Scikit-Learn 的经验。讲师还介绍了构建高层次机器学习模型的过程,强调了探索性数据分析和数据清理的重要性,这是本课程将专门关注的关键阶段。学习者将在最后一章中完成整个流程,但重点将主要集中在特征工程上。

  • 00:05:00 讨论了特征工程的重要性及其对模型性能的影响。特征工程是将原始数据转换为能更好地表示机器学习模型的底层信号的特征的过程,以提高其对未见数据的准确性。它是机器学习领域的无名英雄,因为如果没有高质量的数据,机器学习模型本质上毫无价值。然而,凭借强大的功能,即使是简单的模型也可以非常强大。此外,在选择特征时使用常识很重要——必须删除不相关的特征,并且必须包括与所分析问题相关的因素。最终,输入模型的特征的质量是模型性能的主要限制因素。

  • 00:10:00 该视频涵盖了清理和设计特征的各种技术,以确保机器学习模型仅使用有用的信号。这些包括删除异常值、标准化数据、转换倾斜数据、将特征组合成更有用的特征,以及从连续变量创建分类变量。这些技术的目的是获得能够准确捕捉数据中重要趋势的特征,并丢弃那些不具有代表性的特征。视频还介绍了泰坦尼克号数据集,其中包含船上乘客的信息,包括姓名、年龄、舱位、票号、舱位和登船港口。视频继续探索目标变量的分布,即船上的个人是否幸存。

  • 00:15:00 演讲者讨论了机器学习中的类别不平衡问题,即正例的数量明显少于负例的多数情况,导致模型很难检测到正例中的信号。演讲者建议调整模型以更好地拾取这两种情况下的信号,例如通过对负类进行下采样。然而,由于示例中使用的数据集并不是非常不平衡,因此演讲者继续探索数据特征,仅从连续特征的基本探索性数据分析开始。演讲者删除姓名、机票、性别、舱位和登机等非数字特征,并打印清理后的数据集的前五行。然后,演讲者检查特征的分布和相关性,发现 p 类和 fair 与生存列的相关性最强,因此可能有助于做出预测。

  • 00:20:00 该视频介绍了有关数据连续特征的一些基本解释性数据分析。该视频删除了姓名和门票等非数字特征,并打印了前 5 行。使用内置的 pandas 函数描述数据,并注意到存在缺失值和一个名为“Survived”的二进制目标变量。分析相关矩阵,重要的是要注意每个特征与“幸存”和任何其他特征的相关程度。据称,强负相关性与正相关性一样有用。据观察,“p-class”和“Fare”特征与“Survived”的相关性最强,但“Fare”和“p-class”特征之间的相关性很高,这可能会混淆模型。

  • 00:25:00 讲师讨论了一种识别可能对目标变量有用的预测因子的特征的方法。该方法包括按目标变量进行分组,分析幸存者与幸存者的每个特征的分布,以及运行 t 检验以确定统计显着性。讲师强调了两个特征:公平和阶级,它们是潜在的良好生存指标,但警告相关性对解释的影响。讲师还讨论了年龄特征的缺失值,并使用 group by 来确定它是否随机缺失。此外,讲师还解释了如何绘制连续特征以可视化它们的分布以及与目标变量的关系。

  • 00:30:00 该视频讨论了在确定生存率时查看数据的完整分布而不是依赖连续特征的平均值或中值的重要性。该视频提供了一个示例,为幸存者和未幸存者绘制了年龄和票价的重叠直方图,强调了仅依赖平均值时需要谨慎行事。此外,该视频使用seaborn的分类图绘制了不同类别特征(例如乘客类别和家庭人数)的每个级别的生存率百分比,这表明头等舱乘客以及家庭成员较少的乘客更有可能存活。该视频还探讨了将兄弟姐妹、配偶、父母和孩子的特征组合成单个特征,并讨论了在创建模型有效泛化的指标变量时使用合理逻辑的重要性。

  • 00:35:00 演讲者强调了特征工程在机器学习中的重要性。演讲者建议不要在未经测试的情况下过度压缩功能,因为有时单独的功能可能比单个功能更有效。继续讨论分类特征,演讲者建议寻找缺失值以及每个特征中唯一值的数量。他们讨论了对特征进行分组并查看每组中目标变量的平均值如何有助于更好地理解数据集。特别是,演讲者花时间探讨了缺失的舱室特征与生存率之间的关系。他们解释了如何以这种方式探索数据,让他们找到了生存率的强有力指标,尽管该特征的价值看似很低。

  • 00:40:00 演讲者讨论了机器学习的探索和工程特征的过程。探索的功能包括客舱、机票和名称。客舱变量用于创建客舱存在的指示变量,假设该变量会影响生存率。票证变量被确定为随机分配,并将作为一项功能被删除。名称变量用于研究头衔,它可能代表社会地位并与生存率相关。数据透视表用于检查每个头衔的存活率,其中一个异常值是年轻男孩的“大师”头衔。最后,演讲者讨论了绘制分类特征,以探索这些特征的不同级别与生存率之间的关系。

  • 00:45:00 进一步的特征探索表明,头衔、舱位指示符和性别与生存有很强的相关性,而登船特征并没有提供太多信息,而且是多余的。使用数据透视表发现,与在皇后镇或南安普敦登机的人相比,在瑟堡登机的人拥有客舱的人数更多,这解释了瑟堡的存活率较高的原因。最后,将机上直系亲属的数量合并为一项特征,并由于其相关性而建议使用乘客舱位或票价。

  • 00:50:00 讲师讨论特征工程的过程以及如何处理机器学习中的缺失值。讨论了替换缺失值的三种常见方法:用特征的平均值或中值填充、构建模型来预测合理值或分配默认值。教师决定用平均值替换缺失的年龄值,这样可以满足模型的要求,同时避免偏差。启动的特征是一个分类变量,也可以通过添加另一个值来指示缺失值来进行清理。此外,引入上限过程是为了消除数据中的异常值,这对于确保模型符合数据的实际趋势而不是追寻异常值非常重要。

  • 00:55:00 演示者讨论了如何使用各种阈值识别异常值。定义了检测异常值的函数,并根据值的分布设置和调整每个特征的阈值。兄弟姐妹、配偶、父母、孩子和年龄的最大值是合理的,因此不需要限制它们,但公平特征的上限为第 99 个百分位。使用“剪辑”方法转换年龄和公平特征以设置特征的上限。然后,演示者继续讨论倾斜数据及其潜在问题,包括追逐长尾的模型。演示者将连续特征age和fair的分布可视化,并将它们转换为更紧凑且易于理解的分布。

  • 01:00:00 该视频探讨了转换数据的过程,使其表现得更加良好和紧凑,以改进机器学习模型。使用的具体变换是 Box-Cox 幂变换,其中指数应用于特定特征中的每个数据点。该视频解释了使用不同指数测试转换并使用 QQ 图和直方图等标准来确定哪种转换产生表现最佳的数据的过程。最终结果是感兴趣特征的分布更加紧凑,不会因长尾和异常值而分散机器学习模型的注意力。然后,转换后的数据作为特征存储在数据框中以供将来使用。

  • 01:05:00 该视频探讨了如何从现有文本数据创建新特征。分析姓名特征后,演讲者展示了如何解析人的头衔并创建新的头衔特征。人们发现标题特征是某人是否幸存的有力指标,并且被添加到数据中以准备建模。该视频还介绍了为客舱功能创建二进制指示器,指示乘客是否拥有客舱。最后,演讲者演示了如何将现有特征(例如船上的兄弟姐妹、配偶、父母和子女的数量)组合成一个新特征,以指示船上直系亲属的数量,为建模准备数据。

  • 01:10:00 演讲者讨论了将分类特征转换为机器学习模型的数字特征的重要性。他们解释说这是必要的,因为模型只能理解数值,而不能理解字符串值,并给出了第二个学习包中标签编码的示例。然后,他们通过一个循环将此转换应用于泰坦尼克号数据集中的非数字特征。最后,演示者讨论了将数据分为训练集、验证集和测试集以评估机器学习模型在未见过的数据上的性能的重要性。他们演示了如何使用从循环学习中分割出来的训练测试将数据分割成这些集合。

  • 01:15:00 该视频介绍了如何使用训练测试分割方法将数据分割为训练集、验证集和测试集。该方法只能处理将一个数据集一分为二的情况,因此需要两次通过该方法才能获得三个单独的数据集。该视频还讨论了标准化数据的重要性,或者将其转换为代表该值高于或低于平均值的标准差的数字,以便标准化不同尺度的特征。导入标准标量并用于缩放数据,并提供示例来说明该过程。

  • 01:20:00 讲师讨论了一些机器学习模型缩放数据的重要性,并比较了四组不同特征在预测泰坦尼克号生存方面的性能。虽然随机森林等一些算法不一定需要缩放数据,但缩放可以帮助其他算法更快地训练,甚至表现得更好。此外,讲师还定义了四组功能;原始特征、清理后的原始特征、新特征加上清理后的原始特征以及减少的特征,在每个特征上构建模型并比较性能,以了解清理、转换和创建特征的价值。最后,讲师将数据写入 CSV 文件,以确保在训练、验证和测试集中使用相同的示例。

  • 01:25:00 讨论了使用 joblib、matplotlib、seaborn、numpy、pandas、随机森林分类器和网格搜索 cv 等软件包在原始原始特征上拟合模型的过程。使用根据相关矩阵创建的热图来可视化特征之间的相关性,发现乘客等级和客舱具有0.7的较高相关性。网格搜索 cv 用于查找模型的最佳超参数,例如估计器的数量和树的最大深度。最佳模型约有 512 个估计器,最大深度为 8,平均得分约为 84.5%,可以转移到下一组数据。

  • 01:30:00 该视频探讨了随机森林模型中的特征重要性以及使用网格搜索 cv 的好处。该模型的特征重要性表明,性别是最重要的特征,而年龄比乘客等级更重要,而乘客等级以前被认为是生存的有力指标。然而,乘客类别可能与其他特征高度相关,例如某人是否拥有机舱或他们支付的票价,导致模型对真正驱动与目标变量关系的因素感到困惑。一旦模型在 100% 的训练数据上符合最佳超参数设置,就可以在验证集上进行评估。然后,该模型适合干净的特征,以确定缺失值和异常值是否显着影响其识别潜在趋势的能力。该模型的最佳超参数设置比原始特征的模型更简单,并且特征重要性几乎与之前的模型相同。最后,模型适合所有特征,包括转换后的特征,看看除了简单特征之外,它们还提供了多少价值。

  • 01:35:00 该视频探讨了在验证数据集上评估每个特征集生成的最佳模型的过程,以根据性能选择最佳模型。该视频讨论了在决定最佳模型时考虑模型延迟的重要性,并提到了用于计算准确度、精确度和召回率分数的包。使用循环读取先前保存的模型并将其存储为字典,其中模型名称为键,模型对象为值。根据验证集的性能选择最佳模型,并评估其在保留测试集上的性能,以获得对其性能的公正看法。

  • 01:40:00 演示者讨论了如何加载模型字典中存储的模型并使用“评估模型”功能评估其性能。演示者解释说,在本案例研究中,验证集上性能最佳的模型是基于所有特征构建的模型,而基于减少的特征构建的模型是最简单、延迟最低的模型。演讲者根据他们正在解决的问题强调了精确度和召回率之间的权衡。最后,演示者表示,由于他们没有任何预测时间要求,因此他们将部署基于所有特征构建的模型并在测试集上对其进行评估。

  • 01:45:00 演讲者解释了测试集为何不用于模型选择,而是一种评估最终所选模型性能的公正方式。所选模型基于四种不同的特征,具有 64 个估计器,最大深度为 8。在未见过的数据上对准确性进行了稳健的测试和评估,交叉验证的准确性为 83.7%,验证集的准确性为 83,测试集的准确性为 81。有了这些信息,演讲者就有信心提出这个模型作为预测泰坦尼克号上的人员能否生存的最佳模型。演讲者还指出,在本课程中学到的技能可以推广到任何新功能集,以提取最后一盎司的价值来构建最强大的机器学习模型。
Feature Engineering Case Study in Python for Machine Learning Engineers
Feature Engineering Case Study in Python for Machine Learning Engineers
  • 2022.04.06
  • www.youtube.com
Another free course to help you become a machine learning engineer in the real-world.LogikBot - Affordable, Real-World and Comprehensive - https://www.logikb...
 

Google 云平台上的 BigQuery 机器学习



Google 云平台上的 BigQuery 机器学习

该视频讨论了重点介绍使用 BigQuery 进行机器学习的课程内容。 BigQuery 是一个企业数据仓库,最初在 Google 内部使用,后来成为云服务。它具有高度可扩展性和无服务器性,能够容纳 PB 级数据并提供快速查询结果。课程教学基于真实案例研究,指导学习者完成从数据源到模型创建的机器学习模型构建过程。在整个课程中,学习者利用 BigQuery 构建模型,要求他们设置特定于 BigQuery 的 Google Cloud Platform (GCP) 帐户。

该视频解释了 Google 扩展硬件资源的指导原则,强调了横向扩展而不是向上扩展的决定。谷歌认识到硬件随时可能发生故障,因此设计应考虑到潜在的故障。此外,Google 使用价格实惠且允许供应商灵活性的商品硬件。由于硬件成本较高,横向扩展优于纵向扩展。 Google 开发了 GFS、MapReduce 和 Bigtable 等技术,这些技术带来了横向扩展的硬件架构。 Colossus 已经取代了 GFS,并作为 Google 技术(包括 BigQuery)的底层分布式子系统。

讲师概述了 Google 的数据库解决方案 Spanner,该解决方案分布在全球范围内,并依赖 Colossus 来管理分布式事务。该视频还演示了在 Google Cloud Platform 中注册和管理计费帐户的过程。用户可以通过访问平台网站、同意条款并提供必要信息来创建GCP帐户。新用户将获得 300 美元的信用额度,可以在 GCP 上使用,可以通过结算部分进行监控。讲师建议设置预算警报,以便在达到某些计费目标时收到通知。

详细讨论了 BigQuery 的创建和目的。 Google 的指数级数据增长需要开发 BigQuery,它允许对大型数据集进行交互式查询。 BigQuery 可以处理查询,无论查询涉及 50 行还是 500 亿行。其非标准 SQL 方言有助于缩短学习曲线,并且可以在数千台机器上并行执行 SQL。虽然 BigQuery 存储结构化数据,但它与关系数据库不同,它支持表内的嵌套记录类型,从而可以存储嵌套结构。

解释了 BigQuery 的架构,重点介绍了其并行化方法。与大多数每个核心执行一个查询的关系数据库系统不同,BigQuery 旨在跨数千个核心运行单个查询,与传统方法相比,显着提高了性能。 Dremel 引擎支持查询流水线,允许其他查询在某些查询等待 I/O 时利用可用的核心。 BigQuery 采用多租户方法,使多个客户能够在同一硬件上同时运行查询,而不会影响其他位置。 BigQuery 界面由三个核心窗格组成,包括查询历史记录、保存的查询、作业历史记录以及用于组织对表和视图的访问的资源部分。

该视频详细介绍了 Google Cloud Console 中特定于 BigQuery 的屏幕和面板。导航菜单显示 BigQuery 资源,例如数据集和表,而 SQL 工作区部分允许用户创建查询、使用表以及查看其作业历史记录。 “资源管理器”面板列出了当前项目及其资源,而“详细信息”面板提供有关所选资源的信息,并允许修改表架构、数据导出和其他功能。需要澄清的是,BigQuery 不适合 OLTP 应用程序,因为它缺乏对频繁的小行级更新的支持。虽然 BigQuery 不是 NoSQL 数据库,但它使用 SQL 方言,更接近 OLAP 数据库,为许多 OLAP 使用案例提供类似的优势和适用性。

进一步讨论了 Google BigQuery 的定义,强调其完全托管、高度可扩展、经济高效且快速的云。

以下是视频中讨论的其他要点:

  1. BigQuery 的存储格式:BigQuery 使用列式存储格式,该格式针对查询性能进行了优化。它以压缩和列式方式存储数据,允许高效处理查询中的特定列,而无需访问不必要的数据。这种格式对于涉及聚合和过滤的分析工作负载特别有用。

  2. 数据提取:BigQuery 支持各种数据提取方法。它可以直接从 Google Cloud Storage、Google Sheets 和 Google Cloud Bigtable 等来源加载数据。它还提供与其他数据处理工具(例如 Dataflow 和 Dataprep)的集成,用于 ETL(提取、转换、加载)操作。

  3. 数据分区和集群:为了优化查询性能,BigQuery 提供了分区和集群等功能。分区涉及根据所选列(例如日期)将大型数据集划分为较小的、可管理的部分。集群根据一列或多列进一步组织每个分区内的数据,通过减少扫描的数据量来提高查询性能。

  4. 数据访问控制和安全性:BigQuery 提供强大的访问控制来管理数据安全。它与 Google Cloud Identity and Access Management (IAM) 集成,允许用户在项目、数据集和表级别定义细粒度的访问权限。 BigQuery 还支持静态和传输中加密,确保敏感数据的保护。

  5. 数据定价和成本优化:该视频简要介绍了 BigQuery 的定价模型。它以按需付费的方式运行,根据查询处理的数据量向用户收费。 BigQuery 提供查询缓存等功能,可以通过避免冗余数据处理来降低成本。优化查询并避免不必要的数据扫描以最大限度地降低成本非常重要。

  6. 使用 BigQuery 进行机器学习:本课程涵盖使用 BigQuery 执行机器学习任务。 BigQuery 与 AutoML 和 TensorFlow 等 Google Cloud 机器学习服务集成,允许用户在训练机器学习模型之前利用 BigQuery 的强大功能进行数据准备和特征工程。

  7. 使用案例和示例:讲师提到了 BigQuery 擅长的各种实际使用案例,例如分析大量日志数据、进行市场研究、执行客户细分以及对海量数据集运行复杂的分析查询。

总体而言,该视频概述了 BigQuery 的功能、架构和关键功能,强调了其对大规模数据分析和机器学习任务的适用性。它强调了使用 BigQuery 等完全托管且高度可扩展的基于云的解决方案有效处理大量数据的好处。

  • 00:00:00 该视频讨论了课程内容,重点是如何使用 BigQuery 进行机器学习。 BigQuery 是一种高度可扩展的无服务器企业数据仓库,在成为云服务之前最初在 Google 内部使用。它可以容纳 PB 级的数据并在短短几秒钟内返回数据,这使其成为监督机器学习的宝贵资源,特别是对于大型数据集。本课程的教学基于现实世界的案例研究,学习者将逐步完成构建机器学习模型的过程,从获取数据到对其进行建模以创建高度预测的模型。在整个课程中,学习者将利用 BigQuery 构建模型,这意味着要设置仅针对 BigQuery 的 GCP 帐户。

  • 00:05:00 该视频解释了 Google 扩展硬件资源背后的指导原则,特别是决定向外扩展而不是向上扩展。谷歌在硬件方面的指导原则是任何事情都可能随时失败,设计应该考虑到这一点。第二个原则与使用商品硬件有关,这种硬件价格实惠且易于获得,从而允许谷歌更换供应商而不会受到任何处罚。最后,硬件价格昂贵,因此目标是横向扩展而不是向上扩展。 Google 设计了 GFS、MapReduce 和 Bigtable 等关键技术,以推动其向横向扩展的硬件架构迈进。此外,Colossus 取代了 GFS,是 Google 大部分技术构建的底层分布式子系统,包括依赖于 Colossus 的 BigQuery。

  • 00:10:00 讲师概述了 Google 的数据库解决方案 Spanner,该解决方案分布在全球并使用 Colossus 来管理分布式事务,同时还演示了如何在 Google Cloud Platform 中注册和管理计费帐户。要开始使用 Google Cloud 服务,用户需要在 GCP 上创建一个帐户,可以通过导航到浏览器并输入“GCP”或“Google Cloud Platform”来完成。同意条款并提供适当的信息后,新用户将获得 300 美元的信用额度,可以在 GCP 上使用,可以通过结算部分的概述和预算功能进行监控。讲师鼓励用户设置预算警报,以便在达到某些计费目标时收到通知,这可以通过单击“创建预算”并指定要花费的总金额以及选择项目和预算警报来完成被启用。

  • 00:15:00 讨论了 BigQuery 的创建和目的。 Google 的指数级数据增长引发了问题,导致开发了一种能够对大型数据集进行交互式查询的工具——BigQuery。无论查询 50 行还是 500 亿行,它都提供相同的操作选项。由于其基于 SQL 的非标准方言,它的学习曲线很短,并且能够在数千台机器上并行执行 SQL。 BigQuery 可以存储结构化数据,但与关系数据库不同的是,这些字段可以保存记录类型,包括表内的嵌套记录。这些嵌套结构本质上是预连接表。

  • 00:20:00 该视频介绍了 BigQuery 的架构及其并行化方法。虽然大多数关系数据库系统每个核心只能执行一个查询,但 BigQuery 的架构可以跨数千个核心运行单个查询,与传统查询核心方法相比,可以显着提高性能。这是可能的,因为 Dremel 引擎可以管道查询,允许其他查询在某些查询等待 I/O 时使用可用的核心。这种多租户方法意味着许多客户可以在同一硬件上同时运行查询,并且 BigQuery 利用不同的数据使用模式,因此一个地理位置的大量使用不会影响其他位置。该视频还解释了 BigQuery 界面的三个核心窗格,以及每个项目特定的查询历史记录,并保存查询、作业历史记录和可用于组织对表和视图的访问的资源部分。

  • 00:25:00 演讲者解释了组成特定于 BigQuery 的 Google Cloud Console 的各种屏幕和面板。导航菜单显示 BigQuery 资源,例如数据集和表,而 SQL 工作区部分允许用户创建查询、使用表以及查看其作业历史记录。 “资源管理器”面板显示当前项目及其资源的列表,“详细信息”面板提供有关所选资源的信息,并允许用户修改表架构、导出数据和执行其他功能。演讲者还讨论了 BigQuery 不是什么,解释说它不太适合 OLTP 应用程序,因为它缺乏对频繁、小型行级更新的支持,并且它不是 NoSQL 数据库,因为它使用 SQL 方言。相反,BigQuery 更接近 OLAP 数据库,并提供许多相同的优点,使其适合许多 OLAP 使用案例。

  • 00:30:00 讨论了 Google BigQuery 的定义。它是一个完全托管、高度可扩展、经济高效且快速的云数据仓库,用于通过内置机器学习进行分析。此外,BigQuery 由许多其他组件组成,例如 Megastore 和 Colossus。 BigQuery有自己的数据存储算法Column IO,将数据存储在列中,提高性能,并根据返回的数据向用户收费。谷歌的网络速度很快,因为他们对细节的高度关注;因此,他们的网络架构的大部分仍然是个谜。最后,随着 BigQuery 2.0 的推出,BigQuery 发布了对标准 SQL 的支持,将 BigQuery SQL 重命名为旧版 SQL,并为 BigQuery 中存储的查询和数据提供了首选 SQL 方言。

  • 00:35:00 该视频介绍了在 BigQuery 中保存和打开查询以及创建和查询视图的过程。解说员解释视图是一个虚拟表,并演示如何在新数据集中创建和保存视图。该视频还讨论了查询编辑器中的不同选项,例如格式化查询和访问查询设置。此外,该视频还介绍了机器学习和数据科学职业的爆炸式增长,并讨论了数据分析师和数据科学家等角色之间的差异。最后,解说员解释说,课程的重点将是使用 Python 进行监督机器学习,Python 被认为是该领域的黄金标准。

  • 00:40:00 讨论了机器学习领域内的不同角色,包括数据科学家、机器学习工程师和数据工程师。重点是应用机器学习,即机器学习原理在现实世界中解决问题的应用,而不是纯粹的学术或研究应用。结构化数据集,特别是关系数据库中的数据集的重要性也得到了强调,因为梯度增强器等传统模型已被证明擅长对高度结构化的数据集进行建模,并赢得了许多与人工神经网络相比的竞争。

  • 00:45:00 涵盖了机器学习流程,高度流程化。本文解释了机器学习工程师在遇到需要解决的问题时必须遵循相同的核心步骤。第一步是查看数据,然后是获取数据。由于大多数应用机器学习都是受监督的,因此必须首先清理(或“整理”)数据,这涉及将数据整理成数字支持的格式。这需要机器学习工程师花费大部分时间进行数据整理。数据清理完毕后,建模阶段就开始了。在此阶段,必须开发模型或算法,从清理后的数据集中学习模式。机器学习的目标是能够对新数据做出高度准确的预测。一旦模型经过新数据的调整和测试,它们就会投入生产以供消费者使用。

  • 00:50:00 该视频讨论了在 Mac 上使用 Anaconda 发行版安装 Python 3.7 版本的过程。 Anaconda 发行版适用于 Windows 和 Mac,并具有图形安装程序。下载安装程序并输入密码后,建议使用默认安装类型,安装过程可能需要几分钟。安装完成后,可以启动 Anaconda Navigator,并打开一个新的 Python 3 笔记本开始编码。

  • 00:55:00 讲师解释了如何导航 Jupyter Notebook IDE,该 IDE 用于通过 Google 云平台上的 BigQuery 进行机器学习。第一步是通过键入 CMD 并访问 Anaconda 命令提示符在笔记本电脑上找到笔记本电脑。从那里输入“Jupyter Notebook”将在本地计算机上加载 Python 引擎。加载后,将解释如何导航笔记本,包括如何关闭页面

  • 01:00:00 介绍了使用 Jupyter Notebook 的分步指南,首先导航到“新笔记本”并选择 Python 3。该教程还介绍了如何导入库、创建、执行和重命名单元格、更改单元格顺序,自动保存笔记本,插入、复制、剪切、粘贴、全部执行并重新启动内核,并使用 Markdown 注释笔记本。此外,笔记本电脑的简单性得到了强调,并被认为足以用于机器学习管道。

  • 01:05:00 该视频介绍了在 BigQuery 中处理数据的基础知识,包括数据集和表。它解释了机器学习工程师能够在 BigQuery 中创建、上传和处理数据的重要性,因为规模可能是创建现实世界模型时的一个主要问题。借助 BigQuery ML,它只需要 SQL 知识,对于精通 SQL 的人员来说,它变得简单且易于使用,并且它为经验丰富的机器学习专业人员提供了构建任何规模的模型的能力。此外,该视频还介绍了 Python 应用机器学习中使用的核心机器学习库,例如 Pandas(用于数据整理和操作的库)、Numpy(使用 Python 进行科学计算的基本包)、Matplotlib(用于创建 2D 图形)、和 Scikit-Learn,这是一个用于构建传统模型的库。

  • 01:10:00 该视频教程探讨了使用两个核心库:pandas 和 numpy 进行机器学习的数据整理和数据操作的基础知识。 pandas 库用于加载著名的机器学习玩具数据集(称为泰坦尼克号数据集)并创建别名。创建一个数组以便能够理解模型,并识别模型的必要属性,例如乘客类别、性别、年龄和幸存者。待预测的目标变量为幸存属性,要么为1,要么为0;幸存者表示1,而没有幸存者表示0。下一步是使用Python代码将属性中的值转换为机器可以理解的数字。所有具有 null 或 nand 值的观测值都会被删除,并且幸存的属性会从 x 轴上删除,以防止模型作弊。最后,使用称为 scikit-learn 的通用机器学习库将数据集分为测试和训练部分。

  • 01:15:00 该视频讨论了机器学习在泰坦尼克号数据集上的使用,以及在现实场景中大多数模型如何源自关系数据库。引入 SQL Server Management Studio 界面是因为它通常用于管理 SQL Server 数据库。提出了一个假设场景,其中的任务是创建可用于预测未来销售的数据集。该视频演示了如何创建查询和连接表以创建名人的订单历史记录,以及如何将此信息保存为视图,以便可以轻松查询并导出为 CSV 文件以便与其他人共享。团队。

  • 01:20:00 该视频演示了使用 SQL Server 将数据从云数据库导出到 CSV 文件的过程。他们解释说,探索性数据分析(也称为数据分析)在机器学习中起着至关重要的作用,并介绍了用于数据可视化的 Matplotlib 和 Seaborn 库。该视频接着展示了如何使用这些库来探索泰坦尼克号数据集、计算缺失值的百分比以及创建直方图和条形图的示例。他们指出,Seaborn 由于其简单性而常常受到青睐。

  • 01:25:00 演讲者探讨了不同类型的机器学习模型及其应用。深度学习模型虽然在图像和语音识别方面表现出色,但在大多数情况下可能并不最适合基于高度结构化数据集的监督机器学习。传统模型(例如梯度增强器)更准确,计算量较小,更易于解释,并且可以加速分类和回归问题。然后,演讲者带领观众了解使用 Python、用于数据整理的 Pandas 以及 XGBoost(一个赢得了许多竞争性建模比赛的梯度增强器库)构建传统模型的过程。该模型在数据集上获得了 83% 的分数,演讲者解释了如何使用 Pickle 库保存模型。

  • 01:30:00 该视频解释了什么是分类,以及它如何根据成绩、测试分数和经验等特征将观察结果分组。它还涵盖了二元分类以及如何将数据分为两组并输出“是”或“否”。该视频随后介绍了人工神经网络和深度学习模型,将线性回归定义为基于一条线预测值,并解释了如何使用它来预测癌症诊断或股票价格等随机数据点。 Python 中线性回归的演示使用 pandas 库来处理数据,而 numpy 库将数据保存在优化的数组容器中,而 matplotlib 库则用于数据可视化。该视频展示了如何绘制图表来找到学习时间和取得的分数之间的正线性关系,并最终在 Python 脚本中导入用于线性回归的分类器模型。

  • 01:35:00 演讲者回顾了作为监督机器学习技术的分类基础知识,并提供了一个简化的定义,根据观察结果的特征将其分为几组。给出的示例是垃圾邮件检测,其中电子邮件分为两类:垃圾邮件和非垃圾邮件。一个更复杂的例子是泰坦尼克号机器学习项目,这是一个二元分类问题,其中模型的输出要么是幸存的 1,要么是未幸存的 0。本节的下一部分将介绍如何构建高精度的分类模型,包括导入库、使用 iris 数据集、使用标签编码将文本值转换为数字、训练随机森林分类器模型以及根据训练数据达到97%的准确率。

  • 01:40:00 讨论使用 BigQuery 处理数据的基础,包括数据集和表。作为机器学习工程师,能够在 BigQuery 中创建、上传和整理数据至关重要。本节介绍了 BigQuery 中的数据处理问题,包括它如何处理 PB 级数据以及使用 Google 的云 Jupyter 笔记本(称为 Cloud Datalab)的好处。还涵盖了 BigQuery ML,除了 SQL 之外不需要任何编程知识,使数据专业人员可以更轻松地创建机器学习模型。最后,本节介绍数据集和表的细微差别,包括如何在 BigQuery 中创建数据集并向其中添加表。

  • 01:45:00 演讲者讨论了在 BigQuery 中创建表时的不同源选项,包括空表、外部数据源以及从 CSV、JSON、Arvo、Parquet 和 ORC 等可读源上传数据。虽然大多数机器学习工程师更喜欢使用 CSV 文件,但 Arvo 加载速度更快、更容易解析且没有编码问题,而 Parquet 和 ORC 在 Apache Hadoop 生态系统中广泛使用。然后,演讲者介绍了 Google 的云数据实验室,这是一个托管在 GCP 上的虚拟机 (VM),其中包含一个名为 Datalab 的类似 Jupyter Notebook 的界面。用户可以从本地 Jupyter Notebook 获取代码并在 GCP 上使用它,并且在创建新的 Datalab 实例时,用户选择存储区域,并可能会提示创建 SSH 密钥。

  • 01:50:00 讲师演示如何创建与 BigQuery 的连接并将整理后的泰坦尼克号数据集导入云数据实验室实例。通过导入 BigQuery 并创建与其的连接,用户可以编写 SQL 代码来查询数据。借助 pandas、决策树分类器和训练测试分割等预打包库,用户可以分割数据,将其拟合到训练数据中,并对模型进行评分。此外,用户可以直接在单元格内更改查询并执行它以创建一个新的 pandas 数据框,其中包含查询中的数据集。最后,讲师演示如何使用 BigQuery 在云数据实验室实例中上传和查询另一个数据集(虹膜数据集)。

  • 01:55:00 演示者演示了如何将数据从 BigQuery 库导入到 Google 云平台上的 Jupyter 笔记本中。导入虹膜数据集并将其分为训练集和测试集,并使用随机森林分类器进行训练。输出模型的预测值。演示者还展示了如何通过在 Google 主页上访问云数据实验室实例并单击“编辑”来升级云数据实验室实例上的资源。

  • 02:00:00 演讲者解释了 BigQuery ML,该工具使 SQL 从业者能够使用现有的 SQL 技能和工具构建大规模机器学习模型,从而实现机器学习的民主化。 BigQuery ML 目前支持三种类型的模型:线性回归、二元逻辑回归和多类逻辑回归。演讲者还解释了如何使用 SQL 语言在 BigQuery 中创建二元逻辑回归模型。模型的创建涉及定义模型、指定选项以及使用 SQL 语句传递目标变量。还可以通过 SQL 评估模型并提供准确性指标。最后,演讲者解释了预测阶段,其中向模型传递了以前从未见过的新数据。

  • 02:05:00 演讲者讨论如何使用 BigQuery ML 构建二元分类模型并对其进行评估。数据从 CSV 文件上传到 BigQuery,并且模型会传递除目标变量之外的所有列。评估完成后,模型将对每个家庭成员进行预测,输出中的第一列预测生存情况(1 表示幸存,0 表示未幸存)。然后,演讲者继续安装名为 gsutil 的命令行工具,这是一个用于在 GCP 上使用 Google 存储的命令行工具。该工具提供三个级别的存储,具有不同的可访问性和定价。

  • 02:10:00 演讲者演示了如何使用 gsutil 上传和管理 Google Cloud Storage 中的文件。首先,用户必须设置要在其中工作的项目并使用 gsutil mb 创建存储桶,请记住每个存储桶名称必须是唯一的。然后,演讲者解释了如何将文件复制到存储桶并授予公共访问权限,使用访问控制列表 (ACL) 来控制谁可以读取和写入数据。演讲者还演示了如何使用 gsutil 下载文件并将文件复制到另一个存储桶,以及如何使用 -m 开关加快上传过程。最后,演讲者展示了如何将数据从关系数据库导出到两个文件,并使用 Cloud Storage 将它们上传到 GCP。

  • 02:15:00 演讲者演示了如何将两个数据集上传到 Google Cloud Platform 的 BigQuery,使用 SQL 将它们连接起来,并创建一个视图来构建机器学习模型。从 SQL Server 导出数据并将其保存为 CSV 文件后,演讲者将它们上传到 GCP 的云存储桶,下载到 BigQuery,并使用简单的 join 语句将它们组合起来。最后,演讲者展示了如何创建这个更大的数据集的视图以在机器学习模型中使用。

  • 02:20:00 演讲者演示了在 Cloud Platform 上的 Google BigQuery 中为其泰坦尼克号项目数据集创建表的过程。他们从本地源上传数据集,自动检测 CSV 文件中的架构,并跳过第一行,因为它包含标题信息。成功创建表后,他们对其进行查询并确认数据和标题显示正确。演讲者指出,数据集现已准备好用于项目的后续步骤。
Machine Learning with BigQuery on Google's Cloud Platform
Machine Learning with BigQuery on Google's Cloud Platform
  • 2022.04.25
  • www.youtube.com
A complete look at BigQuery for machine learning.LogikBot - Affordable, Real-World and Comprehensive - https://www.logikbot.comThere are two core paths on Lo...