常见问题

您有问题吗?也许我以前回答过。

浏览问题

问题按类别组织,如果您找不到您的问题,请参阅页面底部的“需要更多帮助?”部分。

一般问题 (8)

您可以通过几种方式回馈并支持我和这个网站。

1. 传播消息

口耳相传仍然非常重要。

在社交媒体上分享有关机器学习精通的帖子。

例如

我喜欢 https://machinelearning.org.cn 上的机器学习教程

2. 购买电子书

我关于应用机器学习和深度学习的最佳建议都收录在我的电子书中。

它们旨在帮助您以我所知道的最快方式学习并获得结果。

所有电子书销售直接资助并支持我继续在这个网站上的工作和创建新的教程。

3. 捐款或成为赞助人

如果您想在经济上支持这个网站但买不起电子书,那么请考虑一次性捐款。

可以把它想象成给我买杯咖啡或在小费罐里加几美元。积少成多。

您也可以选择成为赞助人并每月捐赠少量金额。

谢谢!

没有像您这样慷慨的读者的支持,这个网站将不复存在!

我每天都写作。

我写了(几乎)这个网站上的所有帖子,并且写了目录中的所有书籍。

我把写作作为优先事项,每天都投入时间回复博客评论,回复读者的电子邮件,以及编写和编辑应用机器学习教程。

我很少休息,甚至在度假时也写作。

我的目标是做到超级响应和可访问,以至于一些读者和客户在我进行长途飞行时会感到沮丧。

我也很幸运,从事机器学习精通是我的全职工作,自2016年5月以来一直如此。在此之前,它是一个业余项目,我会在上班前(凌晨4:30到5:30)和周末写作。

如果你想做很多事情,你需要投入时间。

我不认为自己是机器学习大师。

我确实相信要努力争取精通。

精通是一段旅程。我认为它超越了仅仅是能力,它是一段没有尽头的旅程。

应用机器学习令人着迷不已。它是一个庞大的领域,总有新的方法或更多细节需要学习。机器学习精通意味着持续的自学。

我想通过指出我学到的一些我认为可以缩短这段旅程的部分来帮助您,例如

  • 如何开始。
  • 如何获得结果。
  • 关注什么。

我希望我能在这段旅程中帮助您。

学习机器学习的方法有很多。

例如,一种经典的学术方法是先学习数学先修科目,然后学习机器学习的通用理论及其推导,再学习机器学习算法的推导。也许有一天你就能在真实数据上运行算法了。

这种方法可能会打击对如何开始和使用机器学习在商业中增加价值感兴趣的开发人员的积极性。

另一种方法是将机器学习视为一套用于解决问题的工具。

通过这种方式,机器学习可以被分解为一系列用于学习机器学习工具的教程。特别是应用机器学习,因为那些无用或不产生结果的方法,至少一开始,不会被考虑。

通过专注于如何产生结果,实践者可以非常快速地开始创造价值。他们还可以筛选出更广泛的机器学习研究领域,并将其重点缩小到那些能够产生与其项目或目标直接有用且相关的结果的领域。

我将这种学习机器学习的方法称为“结果优先”,而不是“理论优先”。

关于机器学习的本科和研究生课程通常旨在教授您理论机器学习。它们是在培养学者。

这也适用于机器学习教科书,它们被设计用于这些课程。

如果您想成为一名机器学习学者,这些课程非常棒。如果您想成为一名机器学习实践者,它们可能就不那么理想了。

这种方法从第一性原理开始,植根于理论和数学。我称之为自下而上的机器学习。

另一种方法是关注从业者需要了解什么,才能在商业中使用机器学习工具创造价值。具体来说,是如何端到端地解决预测建模问题。

理论和数学可能会被使用,但会在稍后触及,在解决项目过程的背景下,并且只以使解决项目更清晰或让从业者获得更好结果的方式使用。

我建议对成为机器学习实践者感兴趣的开发人员采用这种方法。

我称之为自上而下的机器学习。

您可以在此帖子中了解更多关于您如何已经在使用自上而下学习方法的信息

在此帖子中了解更多关于自下而上和自上而下机器学习之间的对比

在此处了解如何开始使用自上而下机器学习

感谢您的兴趣。

我拥有计算机科学和人工智能领域的多个学位,并在科技行业中工作多年,在这些团队中,您的代码必须能够运行且易于维护。

如果您想查看详细简历,我的领英上有版本

我还有一篇博客文章,讲述了一些我的背景故事。

学术界不适合我,但我热爱研究和写作。

我把自己看作一个优秀的工程师,真正希望能帮助其他人开始学习并精通机器学习,而不用浪费数年时间“准备开始”。

在此处了解更多关于我教授应用机器学习的方法

只有我,Jason Brownlee。

  • 没有庞大的写作团队。
  • 没有匿名的公司。
  • 没有帮助台工作人员。

我是一个真实的人,对机器学习充满热情,对帮助他人学习机器学习充满热情,我出售电子书来维持这个网站的运营并支持我的家庭。

请注意,我确实聘请了像校对员(纠正错别字)和技术编辑(测试我书中的代码)这样的承包商。

 

我创建这个网站有两个原因

1) 我认为机器学习是永无止境的趣味。

我研究和工作过人工智能、计算智能、多智能体系统、恶劣天气预报等几个不同领域,但我总是回到应用机器学习。

2) 我想帮助开发人员开始并精通机器学习。

我看到很多开发者浪费了很多时间。以错误的方式学习,专注于错误的事情,准备开始机器学习却从未真正开始。这是一种浪费,我讨厌它。

在这里了解更多

实践者问题 (123)

所有代码示例都旨在在您的工作站上运行。

如果您需要帮助设置 Python 开发环境,大多数书籍的附录中都提供了教程,向您展示具体操作方法。

您也可以在此处查看有关此主题的教程

您还可以在 AWS EC2 实例上运行深度学习示例,这些实例提供廉价的 GPU 访问。同样,所有深度学习书籍都提供了一个附录,其中包含有关如何在 EC2 上运行代码的教程。

您也可以在此处查看有关此主题的教程

我知道 Google Colab 是一个基于云的环境,用于在笔记本中运行代码。

我**没有使用过 Google Colab**,也**没有在 Google Colab 中测试过代码示例**。

我通常不建议初学者使用笔记本,因为它们可能会引入困惑和额外的问题。

尽管如此,一些读者报告说他们已成功在 Google Colab 上运行代码示例。

通常,您不需要特殊硬件来开发深度学习模型。

您可以使用数据的样本在工作站上使用 CPU 开发和测试小型模型。然后,您可以开发更大的模型并在具有 GPU 支持的服务器硬件上运行长时间的实验。

我在这篇文章中详细阐述了这种方法

对于运行大型模型或大型数据集的实验,我推荐使用 Amazon EC2 服务。它提供 GPU 支持,而且非常便宜。

本教程向您展示如何开始使用 EC2

我没有受限玻尔兹曼机 (RBM) 神经网络的例子。

这是一种在 2000 年代流行的神经网络,也是最早被称为“深度学习”的方法之一。

这些方法通常不再具有竞争力,不建议使用。

我建议改用带有 ReLU 激活函数的深度多层感知器 (MLP)。

我通常没有关于大数据或用于大数据的平台(例如 Spark、Hadoop 等)的资料。

尽管如此,我偶尔也会发表一些相关文章,例如

我专注于教授应用机器学习,主要针对小数据。

对于初学者,我建议先在小数据上学习机器学习,然后再处理大数据上的机器学习。我认为您可以使用小内存数据集快速学习过程和方法。在此处了解更多信息

在实践中,有足够的工具可以将大型数据集加载到内存中或从磁盘逐步加载以训练大型模型,例如大型深度学习模型。例如

我们仍然需要机器学习与大数据。您仍然在使用随机样本,这在近似函数(机器学习方法的工作)时会带来所有隐含的意义。

此外,大数据上的机器学习通常需要标准机器学习算法的专用版本,这些版本能够在平台(例如,请参阅 MahoutSpark MLlib)上大规模运行。

 

抱歉,我没有关于 R 中时间序列预测的资料。

我确实有一本关于Python 时间序列的书。

R 中已经有一些很棒的时间序列预测书籍,例如,请参阅此帖子

我没有 Octave 或 Matlab 的教程。

我相信 Octave 和 Matlab 是在学术环境中学习机器学习算法如何工作的优秀平台。

我认为它们不适合在工业中进行应用机器学习,这也是我网站的重点。

抱歉,我没有关于 AI 或 AGI 的教程。

我专注于使用监督学习的预测建模,也许还有一点无监督学习。

这些是普通开发人员在“工作中”可能需要使用的机器学习领域。

对于AI的良好非专业人士介绍,我推荐

对于AI的良好技术介绍,我推荐

抱歉,我目前没有任何关于聊天机器人的教程。

如果需求量很大,我将来可能会涵盖这个话题。

我确实有关于准备文本数据进行建模和使用深度学习建模文本问题的教程。

你可以从这里开始

抱歉,我没有关于 R 中深度学习的教程。

我的深度学习教程主要集中在 Python 中的 Keras 库。

主要原因是,Python 中的机器学习和深度学习技能需求量很大。您可以在这篇帖子中了解更多信息

我相信 Keras 现在在 R 中也受支持,也许该库的大部分 API 函数调用和参数都相同。

您可能只需少量工作即可将我的基于 Python 的教程移植到 R 中。

抱歉,我目前没有任何关于**深度强化学习**的教程。

我将来可能会写这个话题。

在这个阶段,我专注于使用监督学习的预测建模,也许还有一点无监督学习。

我并不相信深度强化学习对从事“工作中”预测建模问题的普通开发人员有用。

结果是显著的,但目前可能仅限于棋类游戏(围棋、将棋、国际象棋等)和视频游戏(Atari、Quake3、星际争霸II、DOTA2等)。

DeepMind 和 OpenAI 令人印象深刻的成果推荐阅读

一些怀疑的评论

机器学习(ML)是研究能够从经验中学习的系统(例如描述过去的数据)。您可以在此帖子中了解更多关于机器学习的定义

预测建模是机器学习的一个子领域,这也是大多数人在谈论机器学习时所指的。它涉及从数据中开发模型,目标是在新数据上进行预测。您可以在此帖子中了解更多关于预测建模的信息。

人工智能(AI)是计算机科学的一个子领域,专注于开发智能系统,其中智能包含学习、记忆、目标等所有方面。

机器学习是人工智能的一个子领域。

机器学习是计算机科学和人工智能的一个子领域,旨在开发能够从经验中学习的系统。

您可以在此帖子中了解更多关于机器学习的定义

当大多数人谈论机器学习时,他们实际上是指预测建模。也就是说,开发基于历史数据训练的模型,用于对新数据进行预测。

您可以在此帖子中了解更多关于预测建模的信息

大数据指非常大的数据集。

大数据涉及处理无法容纳在单台计算机上(例如单个硬盘或内存中)的数据的方法和基础设施。

大数据的一个令人兴奋的方面是,简单的统计方法可以揭示出令人惊讶的见解,而简单的模型在用大数据训练后可以产生令人惊讶的结果。一个例子是使用在大数据集上准备的简单词频,而不是使用复杂的、手工制作的拼写纠正算法。对于某些问题,数据可以比复杂的、手工制作的模型更有价值。您可以在此处了解更多关于此信息。

即便如此,“大数据”数据集仍然是一个随机样本,并且可以受益于应用机器学习的方法。

在大数据上使用机器学习时,一个重要的考虑因素是,它们通常需要修改才能在 Hadoop 和 Spark 等基础设施上大规模运行。

大数据上机器学习方法的两个库示例包括 MahoutSpark MLlib

机器学习是计算机科学和人工智能的一个子领域,旨在开发能够从经验中学习的系统。

您可以在此帖子中了解更多关于机器学习的定义

当大多数人谈论机器学习时,他们实际上是指预测建模。也就是说,开发基于历史数据训练的模型,用于对新数据进行预测。

您可以在此帖子中了解更多关于预测建模的信息

数据科学是一个新术语,指使用计算和科学方法从数据中学习和利用数据。

数据科学家是指在软件开发和机器学习方面都具备技能的人,他们可能负责发现更好地利用组织内数据以支持决策的方法,并开发模型和系统来利用这些发现。

数据科学家使用机器学习工具,例如预测建模。

我在这里有一些关于数据科学的帖子

我通常尽量避免使用“数据科学”或“数据科学家”这两个词,因为我认为它们定义不清。我更愿意侧重于描述“应用机器学习”或“预测建模”所需的技能,这些技能可以在组织内的各种角色中使用。

组织中有许多角色可能会用到机器学习。要获得更全面的解释,请参阅这篇文章

机器学习(ML)是研究能够从经验中学习的系统(例如描述过去的数据)。您可以在此帖子中了解更多关于机器学习的定义

预测建模是机器学习的一个子领域,这也是大多数人在谈论机器学习时所指的。它涉及从数据中开发模型,目标是在新数据上进行预测。您可以在此帖子中了解更多关于预测建模的信息。

深度学习是机器学习中人工神经网络的应用。因此,它是机器学习的一个子领域。您可以在此帖子中了解更多关于深度学习的信息

统计学和机器学习之间存在很多重叠。

我们可能会在统计学中探索预测建模。机器学习可能会使用在统计学中开发和使用的方法,例如线性回归或逻辑回归。

**统计学**主要关注理解或解释数据。模型旨在具有描述性和可解释性,以实现良好的拟合。有关统计学的更多信息,请参阅

**机器学习**主要关注预测能力。模型的选择基于它们做出熟练预测的能力(以及在一定程度上最大化简约性)。在此处了解更多关于机器学习的信息

实际上,实践者谈论的是机器学习,但通常指的是一个名为**预测建模**的子领域。在此处了解更多关于预测建模的信息

一个很好的例子可以清晰地说明两者的区别:在统计学中,我们从使用线性回归或逻辑回归模型开始,然后将数据塑造成符合我们预先选择的模型的要求。在机器学习中,我们不拘泥于模型,只关心什么效果好或最好,这使得我们能够探索一系列不同的方法。

有关此区别的更多信息,请参阅

用于回归问题的神经网络可以轻松地更改为分类。

它需要对代码进行两处更改

  1. 更改输出层。
  2. 更改损失函数。

为回归设计的神经网络可能会有一个输出层,其中包含一个输出一个值的节点和一个线性激活函数,例如,在 Keras 中,这会是

我们可以通过将激活函数更改为 *sigmoid*,将其更改为二元分类问题(两个类别),例如

我们可以通过将层中的节点数更改为类别数(例如本例中的 3 个)并将激活函数更改为 *softmax*,将其更改为多类别分类问题(多于两个类别),例如

最后,模型将有一个基于误差的损失函数,例如“mse”或“mae”,例如

对于二元分类问题(两个类别),我们必须将损失函数更改为 *binary_crossentropy*,例如

对于多类别分类问题(多于两个类别),我们必须将损失函数更改为 *categorical_crossentropy*,例如

就这样。

通常,我建议根据您的具体预测建模问题重新调整神经网络的超参数。

有关分类神经网络的一些示例,请参阅这些帖子

我建议在服务器上运行大型模型或长时间运行的实验。

我建议只使用您的工作站进行小型实验,并确定要运行哪些大型实验。我在这里详细讨论了这种方法

我推荐使用 Amazon EC2 服务,因为它提供对具有大量 RAM、大量 CPU 内核和大量 GPU 内核(用于深度学习)的基于 Linux 的服务器的访问。

您可以在这些帖子中学习如何为机器学习设置 EC2 实例

您可以在此帖子中学习在服务器实例上工作时的有用命令

文本必须先转换为数字,然后才能用作机器学习模型的输入。

第一步是确定您的词汇表,然后为每个词分配一个唯一的整数。

您通过控制受支持词汇表的大小来控制建模任务的复杂性。您的选定词汇表不支持的词可以映射到整数值 0,表示“未知”。

这通常被称为清洗文本数据,您可以在此处了解更多信息

然后可以将整数编码的文档编码为向量表示形式,以输入到机器学习模型中。

编码文档的方法有很多,通用方法被称为词袋模型。常见的编码包括布尔值(词是否存在)、词计数、词频(TF-IDF)等。

有关词袋模型的更多信息,请参阅教程

一种更现代的编码整数编码文档的方法是使用词嵌入,也称为 word2vec 等特定技术。

这种编码通常用于处理文本的神经网络,但它可以与任何机器学习模型一起使用。

有关词嵌入的更多信息,请参阅教程

我不是建模 Covid-19 数据的专家。

全世界都聚焦于新冠疫情问题这一事实意味着,一些世界上最好的模型构建者已经在解决这个问题,并可能直接向公众提供他们的数据、模型和分析。我建议寻找这些资源。

如果您有兴趣对某个地点的每日病例数进行建模,可以使用一个简单的指数函数,例如 Excel 中的 GROWTH() 函数。

这是一个深刻的问题。

从高层次来看,算法通过从许多历史例子中归纳学习,例如

像**这样**的输入通常出现在像**那样**的输出之前。

然后,归纳结果(即学习到的模型)可以在未来应用于新示例,以预测预期会发生什么或预期的输出是什么。

在技术上,我们将其称为归纳或归纳决策

另请参阅此帖子

这是一个开放式问题,但我有一些想法。

1) 也许您可以将您行业中的现有问题表述为监督学习问题,并查看机器学习算法是否能表现良好或优于其他方法。

这个框架可能会有帮助

2) 也许您可以搜索文献中机器学习在您领域中的应用,看看哪些是常见或流行的,并以此作为灵感或起点。

您可以在此处搜索机器学习文献

3) 也许您可以搜索您行业中的数据集,以便从中获取灵感或进行实践。

您可以在此处搜索机器学习数据集

您不能。

准确性是分类的度量。

您计算回归的误差。

在这里了解更多

**分类准确度**是分类预测建模问题的性能指标。

它是模型做出的正确预测的百分比,计算方法是正确预测的总数除以预测总数

**分类准确度无法针对一个类别计算。**它只能针对模型做出的所有预测进行计算。

为了了解模型所犯的类别预测错误类型,您可能需要计算所有预测的**混淆矩阵**

另外,您可能希望计算每个类别的**精确率**和**召回率**

有关如何为分类问题选择性能指标的更多帮助,请参阅教程

训练数据可能会过拟合。

这意味着模型正在学习训练数据集中特定的随机变化,代价是模型对新数据的泛化能力较差。

这可以通过模型在训练数据集上进行预测的技能提高,而在测试数据集上进行预测的技能下降来观察。

减少训练数据集过拟合可能性的一种良好通用方法是使用 k 折交叉验证来估计模型在新数据上进行预测的技能。

除了使用 k 折交叉验证之外,第二种良好的通用方法是拥有一个留出测试集,该测试集仅在项目结束时使用一次,以帮助在最终模型之间进行选择。

大多数 Python 库都有一个“__version__”属性,您可以查询它来获取当前安装的版本。

例如,下面的脚本可用于打印机器学习中使用的许多 Python 库的版本

运行此脚本将打印版本号。

例如,您可能会看到以下结果

您可以通过在命令行中输入命令来发现您正在使用的 Python 版本。

在命令行中,输入

然后您应该会看到 Python 版本被打印出来。

例如,您可能会看到类似以下内容

Keras 深度学习库允许您在网络的第一个隐藏层所在行上定义输入层。

这对于初学者来说可能会令人困惑,因为您可能会期望每个网络层(包括输入层)都有一行代码。

让我们用一个例子来具体说明。

假设这是已定义神经网络的第一行

在这种情况下,网络的输入层由“input_dim”参数定义,网络期望有 8 个输入变量。这意味着您的数据集 (X) 必须有 8 列

网络的第一个隐藏层将有 12 个节点,由 Dense() 层的第一个参数定义。

这听起来像是一个工程问题,而不是机器学习问题。

如果您需要部署机器学习模型的帮助,我这里有一些可能有用的通用技巧

制作应用程序取决于项目的要求,例如它是为谁服务的,谁将操作该应用程序,在什么环境中等。

如何将 python 文件部署到操作环境的工程问题不是本网站的重点,但我可能有一些建议可以帮助您入门

作为 Python 包分发

也许您想将您的代码作为 Python 包分发,以便可以安装在其他系统上,如果是这样,这可能会有所帮助

作为 Web API 提供

也许您希望通过 Web API 提供您的代码,如果是这样,这可能会有所帮助

独立可执行文件

也许您想将代码嵌入到独立的可执行文件中,如果是这样,这可能会有所帮助

嵌入式应用程序

如果您想将您的代码嵌入到现有应用程序中,那么您需要与现有应用程序的开发人员协调。

**聚类算法**是一种无监督机器学习算法,可自动发现数据中的自然分组。

有关如何使用聚类的示例,请参阅教程

根据发现的簇,评估聚类算法在数据集上的性能有多种方法。

一个好的起点是思考您希望如何在应用程序或项目中使用这些簇,然后以此为框架或思考可以用来评估所发现簇的指标。

您可以使用标准指标来评估所发现的簇,大多数都基于这样一个概念:您有一个数据集,并且您已经知道应该发现哪些簇。

scikit-learn Python 机器学习库提供了许多标准聚类评估指标,您可以在此处了解更多信息

您可以在您的特定预测建模问题上评估机器学习算法。

我假设您已经从您的领域收集了一个观测数据集。

您的目标是估计模型在给定大小的数据集上训练后的技能,方法是针对给定大小的新测试数据集进行预测。重要的是,测试集必须包含训练期间未见过的数据。这样我们才能对模型在新数据上进行预测时的表现有一个公平的认识。

训练集和测试集的大小应足够大,以代表问题领域。您可以在此帖子中了解更多关于所需数据量的信息

估计模型技能的一个简单方法是将数据集分成两部分(例如,67%/33% 的训练/测试分割),在训练集上进行训练,在测试集上进行评估。这种方法速度很快,如果您的模型训练非常缓慢,或者您有大量数据并且有足够大且具有代表性的训练和测试集,那么这种方法是合适的。

  • 训练/测试拆分。

通常,我们没有足够的数据来使训练集和测试集具有代表性。有一些称为重采样方法(resampling methods)的统计方法,它们允许我们经济高效地重复使用一个数据集并将其分割多次。我们可以使用多个分割来训练和评估多个模型,然后计算每个模型的平均性能,从而更稳健地估计模型在未见数据上的技能。

两种流行的统计重采样方法是

  • k 折交叉验证。
  • bootstrap。

我的博客上提供了关于如何在各种机器学习平台上创建训练/测试拆分和使用重采样方法的教程。请使用搜索功能。以下是一些可能有助于入门的教程

我的博客上提供了关于重采样方法如何工作的教程。请使用搜索功能。这是一个很好的入门点

我教授的是一种自上而下、结果优先的机器学习方法。

这意味着您将非常迅速地学会如何解决预测建模问题并交付成果。

作为此过程的一部分,我教授一种开发已完成项目组合的方法。这展示了您的技能,并为您提供了一个平台,可以承担更具挑战性的项目。

正是这种交付成果的能力以及证明您能够交付成果的项目将使您获得职位。

企业将凭证作为招聘的捷径,它们最看重的是结果。较小的公司更有可能将结果置于凭证之上。也许可以将注意力集中在寻求具有机器学习技能的开发者的初创公司和小型公司上。

这里有更多关于作品集方法的信息

这里有更多关于您不需要学位的信息

开始机器学习的方法有很多。

您需要找到最适合您首选学习风格的方法。

我教授的是一种自上而下、结果优先的机器学习方法。

我的方法的核心是让您专注于解决预测建模问题的端到端过程。在这种情况下,一切(或大多数事情)都开始变得有意义。

我关于入门的最佳建议分为 5 个步骤

我随时为您提供帮助并回答您的问题。

我专注于教授机器学习,而不是编程。

我的代码教程通常假设您已经了解一些 Python 编程。

如果您不会编程,我建议您从 Weka 机器学习工作台开始。它允许您学习和实践应用机器学习,而无需编写一行代码。您可以在此处了解更多信息

如果您懂另一种语言的编程,那么您将能够很快上手 Python 编程。

我有一个 Python 编程教程可能会有所帮助

在 Python 中,使用 NumPy 数组是机器学习编程的重要组成部分。您可以在此处开始使用 NumPy 数组

我认为学习编程语言的最佳方式是使用它。

学习 Python 的三本好书包括

您可能有一个预测建模问题,其中输入或输出变量具有大量级别或值(高基数),例如数千、数万或数十万。

这在使用稀疏表示(如独热编码)时可能会引入问题。

处理大量类别数据的想法包括

  • 或许该变量可以移除?
  • 也许照原样使用数据(一些自然语言处理问题有数十万个单词被视为类别)。
  • 也许你可以尝试整数编码?
  • 也许你可以尝试使用类别的哈希值?
  • 也许你可以删除或分组一些级别?(例如,在自然语言处理中,你可以删除所有低频词)
  • 也许您可以添加一些标志变量(布尔值)来指示重要的子集级别。
  • 也许您可以使用像树这样的方法,它们更适合处理许多级别。

在分类预测建模问题中,每个类别具有不同数量的观测值是很常见的。

这被称为类别不平衡。

有许多方法可以处理这个问题,从数据重采样到选择替代性能指标,再到数据生成等等。

我建议尝试一套方法,看看哪种方法最适合您的项目。

我在此列出了一些想法

您的数据可能有一个包含字符串值的列。

具体来说,字符串值是标签或类别。例如,一个名为“颜色”的变量或列,其列中的值为“红色”、“绿色”或“蓝色”。

如果您有字符串数据,例如地址或自由文本,您可能需要研究特征工程自然语言处理

您的分类数据可能是一个将作为模型输入的变量,或者是一个您希望预测的变量,在分类预测建模中称为类别。

通常,在 Python 中,我们必须将所有字符串输入转换为数字。

我们可以通过两种方式实现这一点

  • 转换字符串值,称为整数编码。
  • 将字符串转换为二进制向量,称为独热编码(您必须先进行整数编码)。

要了解原因,请参阅此帖子

有关整数编码和独热编码示例的教程,请参阅此帖子

有关如何使用独热编码准备数据的教程,请参阅此帖子

有些时间序列数据是不连续的。

这意味着观测值之间的时间间隔不一致,可能会有所不同。

您可以在此帖子中了解更多关于**连续**和**不连续**时间序列数据集的信息

处理这种形式数据的方法有很多,您必须找到适合或最适合您的特定数据集和所选方法的方法。

最常见的方法是将不连续时间序列视为连续的,并将新观测时间点的观测值视为缺失(例如,具有缺失值的连续时间序列)。

您可能想要探索的一些想法包括

  • 忽略问题的非连续性并按原样建模数据。
  • 重采样数据(例如上采样)以使观测值之间具有一致的间隔。
  • 插补观测值以形成一致的时间间隔。
  • 填充观测值以形成一致的间隔,并使用遮罩层忽略填充值。

为简化起见,不平衡分类技术通常在二元分类任务中演示,其中有一个少数类别和一个多数类别,但这并非这些技术的限制。

大多数为不平衡分类开发的技术都适用于二元和多类别分类问题.

这包括以下技术

  • 成本敏感学习算法(例如类别加权)。
  • 数据采样方法(例如过采样和欠采样)。
  • 性能指标(例如精确率和召回率)

您可能需要指定如何处理每个类别。

例如,您需要指定成本敏感学习中每个类别的权重,数据采样中每个类别的过采样或欠采样量,或者哪些类别是少数类别,哪些是多数类别以用于性能指标。

有关多类别不平衡分类的示例,请参阅教程

有关如何为多类别分类配置精确率和召回率等指标的示例,请参阅教程

有关在多类别分类问题上使用某些不平衡分类技术的示例,请参阅教程中的“改进模型”部分

您可以删除包含缺失数据的行或插补缺失值来处理它们。

有关使用 Python 处理表格数据中缺失数据的帮助,请参阅

有关使用 Python 处理时间序列中缺失数据的帮助,请参阅

有关在 Weka 中处理表格数据中缺失数据的帮助,请参阅

我有一个很棒的清单,列出了可以尝试的事情,以提高您的预测模型的技能

我这里有一个针对深度学习的特定版本

对于初学者,我建议安装 Anaconda Python 平台。

它是免费的,并且包含机器学习所需的 Python 和库,例如 scikit-learn、pandas 等等。

您还可以使用 Anaconda 轻松安装深度学习库,例如 TensorFlow 和 Keras。

我在此处提供了一个关于如何为机器学习和深度学习安装 Python 的分步教程

p 值是在给定零假设(例如,没有变化、没有差异或没有结果)的情况下观察到结果的概率

p 值不是在给定结果的情况下假设为真的概率。

p 值是在预先选定的显著性水平(称为 alpha)的背景下解释的。 alpha 的常见值为 0.05 或 5%。它也可以被认为是 95% 的置信水平,计算方式为 (1.0 - alpha)。

p 值可以结合显著性水平解释如下

  • p 值 <= alpha:显著结果,拒绝零假设 (H0),分布不同。
  • p 值 > alpha:不显著结果,不拒绝零假设 (H0),分布相同。

5% 的显著性水平意味着,如果我们能够检测到一个结果(拒绝H0),那么有 95% 的可能性会检测到结果。换句话说,如果没有结果,有 5% 的可能性会发现一个效应(拒绝H0),这被称为假阳性,或更技术上称为 I 型错误。

有关更多信息,请参阅此帖子

统计学,特别是应用统计学,关注使用易于理解的模型,以便能够清楚地展示模型为何做出特定预测。

解释模型为何对给定输入做出预测被称为模型可解释性。

线性回归和逻辑回归是预测模型的例子,它们很容易解释模型的预测。这些是从理论角度来看简单且易于理解的方法。

请注意,解释预测并不(仅仅)意味着展示预测是如何“做出来”的(例如,如何得出输出的方程),而是意味着“为什么”,即模型做出预测的理论依据。可解释的模型可以显示输入和输出之间的关系,或者因果关系。

情况更糟,对模型可解释性的需求有很多大言不惭的说法,但很少有关于它是什么或为什么如此重要的定义。请参阅论文

在应用机器学习中,我们通常牺牲模型可解释性,转而追求模型预测能力。

这可能意味着使用无法轻松(或完全无法)解释为何做出特定预测的方法。

事实上,这就是机器学习子领域“预测建模”的重点。

例如,支持向量机、决策树集成和人工神经网络等模型,目前还没有很好的方法来解释“为什么”会做出预测。

传统上,统计学家将此类方法称为“黑箱”方法,因为它们在解释为何做出特定预测方面不透明。

尽管如此,仍在开发解释机器学习预测的方法,例如参见

我认为模型可解释性的目标可能被机器学习实践者误导了。

在医学中,我们使用药物,这些药物通过未被理解的作用机制产生可量化的结果。如何(可能)被展示,但个体原因和结果则不然。我们通过仔细和系统的实验研究(临床试验)来证明疗效和有限的伤害,从而允许使用理解不深的药物。这大多数情况下也有效。

作为一个实用主义者,我建议您关注模型技能,致力于交付能够创造价值的成果,并在您的领域中对模型的评估保持高度的严谨性。

欲了解更多信息,请参阅此帖子

机器学习模型性能是相对的,而不是绝对的。

首先评估基线方法,例如

  • 分类:预测最常见的类别值。
  • 回归:预测平均输出值。
  • 时间序列:预测上一个时间步作为当前时间步。

评估基线方法的性能。

如果模型性能优于基线模型性能,则模型具有技能。这就是我们谈论模型技能是相对的而不是绝对的含义,它是相对于基线方法技能而言的。

此外,模型技能最好由问题领域的专家来解释。

有关此主题的更多信息,请参阅此帖子

进行预测的第一步是开发您所选模型和模型配置的最终版本,并使用所有可用数据进行训练。在此处了解更多信息

您需要将训练好的模型保存到文件中以备将来使用。然后您可以加载它并开始对新数据进行预测。

大多数建模 API 都提供一个 *predict()* 函数,它将一行数据或一个数据行数组/列表作为模型输入,然后模型将生成预测。

有关使用标准库对最终模型进行预测的一些示例,请参阅以下帖子

异常是指与其余数据不符的示例。

它是一个例外,一个离群值,异常等等。

**异常检测**是一个很大的研究领域,我希望将来能写更多关于它的内容。我建议查阅文献。

可以将异常视为离群值,并使用统计方法或所谓的单类分类技术进行检测。

有关离群值检测统计方法的更多信息,请参阅教程

有关基于模型的自动离群值检测方法的更多信息,请参阅教程

时间序列数据可能包含异常值。

同样,有专门的技术用于检测时间序列数据中的异常值,我希望将来能写更多关于它们的内容。我建议查阅文献。

可以使用统计方法来检测时间序列中的异常值。也可以将时间序列中的异常值检测视为一个时间序列分类任务。模型的输入将是一个观测序列,目标是输入序列是否包含异常值。

分类机器学习模型以及深度学习神经网络模型都可以使用,例如 MLP、CNN、LSTM 和混合模型。

有关将深度学习模型用于时间序列分类的更多信息,您可以在此处查看示例

LSTM 期望数据以三维数组的形式提供,维度为 [样本、时间步、特征]。

在此教程中了解如何重塑您的数据

要获得一个可重用的函数,该函数可以将单变量或多变量时间序列数据集转换为监督学习问题(对于为 LSTM 准备数据很有用),请参阅该帖子

如果您有一个长的时间序列,并且希望为 LSTM 进行重塑,请参阅此教程

如果您序列中缺少数据,请参阅教程

如果您有大量时间步,并且正在寻找有关如何拆分数据的想法,请参阅教程

命令行是您可以输入命令并执行它们的地方。

根据您的平台,它可能有不同的名称,例如

  • 终端(Linux 和 macOS)
  • 命令提示符(Windows)

如果您是初学者,我建议您从命令行运行脚本。

这意味着您必须先将脚本保存到具有适当扩展名的文件中。

例如,我们可以将带有 .py 扩展名的 Python 脚本保存到 /code 目录中。完整路径将是

要运行脚本,首先打开命令提示符或终端。

将目录更改为保存脚本的位置。

例如,如果您将脚本保存在 /code 中,则输入

使用语言解释器运行脚本。

例如,在 Python 中,解释器是“python”,您将以如下方式运行脚本

如果脚本依赖于数据文件,则数据文件通常必须与代码位于同一目录中。

例如

 

 

我坚信自学是开始并精通应用机器学习的途径。

我致力于本网站,帮助您踏上自学之旅,走向机器学习精通(因此有了这个网站的名称)。

我教授的机器学习方法与大学和教科书中的教学方式不同。我将这种方法称为自上而下和结果优先。您可以在此处了解更多关于这种方法的信息

您不需要学位就可以开始、学习机器学习,甚至找到一份应用机器学习并在商业中创造价值的工作。我在此处写了更多相关内容

在学校表现出色,尤其是获得高等学位的一个重要部分,是激发自己的动力。这,以及它带来的自信,是我在大学学到的。

即使你不愿意,即使风险很低,即使工作很无聊,你也要学会如何完成工作。这是学习过程的一部分。这被称为元学习或学会如何有效学习。这是你自己在学习,而不是人类在普遍学习。

学会如何有效地学习是自学的重要组成部分。

  • 找到并利用能激励你的事物。
  • 找到并使用能帮助你更好地学习的媒介。
  • 找到并倾听与你高度相关的老师和资料。

像找教练或问责伙伴这样的外部激励对我来说听起来像是短期的。你希望以一种让你终生拥有心智工具的方式解决“如何自学”的问题。

自主学习的一个大问题是它是好奇心驱动的。这意味着你很可能会凭一时兴起从一个话题跳到另一个话题。它也带来了巨大的好处,因为你根据自己的兴趣广泛而深入地阅读,让你成为不同主题的半专家。

我教授的一种让它保持正轨的方法被称为“小项目”。

您设计一个项目,该项目需要花费一定的时间并有明确的终点,例如几个工时和一个报告、博客文章或代码示例。这些项目范围很小,有明确的终点,并在最后产出一个可添加到您正在构建的投资组合或知识库中的工作产品。

然后,您重复设计和执行小项目的过程。项目可以围绕一个感兴趣的主题,例如“NLP 深度学习”,或者围绕您在过程中遇到的问题,例如“如何在 scikit-learn 中使用 SVM?”。

我在此处详细介绍了这种自学方法

我得到的下一个问题是:

  • 你有没有投资组合或小型项目的例子?

是的,它们无处不在,在 GitHub、YouTube、博客等地方搜索机器学习即可。

人们就是这样学习的。你甚至可能已经在采用这种策略了,只是方式没那么系统。

  • 你可以把课程中的每节课都看作一个小项目,尽管它们的构思往往很糟糕。
  • 你可以把开源库中方法的每次 API 调用都看作一个小项目。
  • 你可以把我的博客看作是小型项目的目录。

不要执着于别人在做什么。

选择最适合你的媒介,并建立你自己的知识库。记住,这是为了你自己。面试中的应用只是附带的好处,而不是目标。

训练机器学习模型可能因为多种原因而缓慢。

这意味着可能有很多机会可以加速它们的训练。

一些高层次的想法包括:

  • 尝试在更快的机器上训练你的模型(例如 AWS EC2 实例等)。
  • 尝试使用更少的训练数据(例如随机抽样、欠采样等)。
  • 尝试使用更小的模型(例如更少的层、更少的集成成员等)。
  • 尝试使用更高效的实现(例如不同的开源项目等)。

在你喊“我不能”之前,请仔细思考并做好功课。

  • 也许你可以在云平台上使用免费额度(问一下)。
  • 也许你的模型对训练数据集大小的敏感度比你想象的要低(测试一下)。
  • 也许更小的模型在技能损失很小的情况下也能表现良好(试一下)。
  • 也许鲜为人知的实现比常用库的性能快得多(试一下)。

此外,一些机器学习算法可以通过改变超参数或模型架构来专门加速训练。

  • 许多算法的学习率控制着学习速度,从而也控制着训练速度。
  • 梯度算法中的批量大小也影响着学习速度。
  • 批量归一化等神经网络层可以显著加速学习。
  • 输入数据的缩放可以大大简化许多预测问题的复杂性。

 

通常,你不能使用 k 折交叉验证来估计时间序列预测模型的性能。

k 折交叉验证方法会随机打乱观测值,这会导致您丢失数据中的时间依赖性,例如观测值按时间排序。模型将不再能够学习先前时间步如何影响当前时间步。最后,评估将不公平,因为模型可以通过查看过去和未来的观测值来“作弊”。

建议用于估计时间序列预测模型性能的方法是使用步进验证。

你可以在这篇博文中了解更多关于步进验证的信息

我还有许多演示如何使用此方法的帖子,搜索本站

提前停止是一种正则化技术,被迭代机器学习算法(如神经网络和梯度提升)使用。

它通过在训练过程中监控模型在验证数据集上的性能,并在性能开始变差时立即停止训练,从而减少模型过拟合训练数据的可能性。

有关提前停止的更多信息,请参阅教程

k 折交叉验证是一种重采样技术,用于估计预测模型的性能。

它的工作原理是将训练数据集分成 k 个不重叠的折叠,然后使用一个折叠作为保留测试数据集,所有其他折叠作为训练数据集。重复此过程,并使用所有保留折叠上的模型的平均性能作为模型在未在训练期间见过的数据上进行预测的性能估计。

有关 k 折交叉验证的更多信息,请参阅教程

提前停止与 k 折交叉验证结合使用可能很棘手。

它要求在每次交叉验证运行中,每个训练集进一步分成一部分数据集用于拟合模型,一部分数据集用于提前停止以监控训练过程。

这可能需要你手动在 for 循环中运行 k 折交叉验证过程,以便你可以进一步拆分训练部分并配置提前停止。这将是我的通用建议,以便你对过程有完全的控制。

网格搜索是一种模型超参数调优。

它涉及定义一个要考虑的超参数值网格,并使用 k 折交叉验证等重采样技术逐一评估模型。然后,模型可以选择导致最佳性能的超参数组合。

提前停止与网格搜索结合使用也可能很棘手。

一种方法可能是对训练数据集进行多次或对数据集的训练/验证分割进行不同的分割来运行提前停止,然后使用运行的平均迭代次数或周期数作为网格搜索其他超参数的固定超参数。

另一种方法是将带有提前停止的模型视为一个建模管道,并直接在这个管道上对其他超参数进行网格搜索。这假设您可以将训练集分割成一个用于拟合模型的子集和一个用于提前停止的子集,这可能需要自定义代码。

集成方法是一种机器学习方法,它结合了两个或多个其他机器学习模型的预测。

有许多类型的集成机器学习方法,例如:

  • 堆叠泛化(stacking 或 blending)
  • 投票
  • 引导聚合(bagging)
  • 提升(例如 AdaBoost)
  • 随机梯度提升(例如 xgboost)
  • 随机森林
  • 还有更多……

你可以在这里了解更多关于集成方法的信息

你可以学习如何从头开始编写这些方法的代码,这是一种有趣的学习它们工作原理的方式

你可以使用标准机器学习平台中的集成方法,例如:

许多研究发现,集成方法在多个分类和回归型预测建模问题上取平均后能获得最佳结果。例如:

你也可以使用集成方法的最新实现,例如经常用于赢得机器学习竞赛的 XGBoost 库,获得出色的结果。

你可以在这里开始使用 XGBoost

LSTM 和其他类型的神经网络可以用于对时间序列数据集进行多步预测。

要开始使用深度学习方法(MLP、CNN 和 LSTM)进行时间序列预测,请从这里开始:

有关将 LSTM 用于时间序列预测(包括多步预测)的特定教程,请参阅此帖子

有关将 LSTM 应用于多变量输入和多步预测问题的特定教程,请参阅此教程

有关多步预测策略的更多帮助,请参阅此帖子

你可以从这里开始使用深度学习方法(如 MLP、CNN 和 LSTM)进行单变量、多变量和多步时间序列预测

 

我有一个推荐的流程,用于处理新的预测建模项目,它将帮助你系统地完成你的项目。

你可以在这里阅读它

希望这些能作为一个开始有所帮助。

我通常建议使用可以容纳在内存中的数据集的一小部分样本。

我之所以推荐这样做,是因为它会加速你了解问题。

  • 测试问题的不同框架速度很快。
  • 汇总和绘制数据速度很快。
  • 测试不同的数据准备方法速度很快。
  • 测试不同类型的模型速度很快。
  • 测试不同的模型配置速度很快。

你从较小样本中学到的经验教训通常(但并非总是)可以转化为使用较大数据集进行建模。

然后,你可以在以后扩展模型以使用整个数据集,也许可以在 Amazon EC2 等云基础设施上进行训练。

如果你对使用大型数据集进行训练感兴趣,还有许多其他选项。我在这篇博文中列出了 7 个想法

k 折交叉验证方法用于估计模型在新数据上进行预测时的性能。

它是一种重采样方法,可以有效地利用你的小型训练数据集来评估模型。

其工作原理是首先将您的训练数据集分成 k 个大小相等的组。一个模型在除了其中一组之外的所有组上进行训练,然后在保留组上进行评估。重复此过程,以便训练数据集的每个子组都有机会被用作保留测试集。

这意味着 k 折交叉验证将训练和评估 k 个模型,并为您提供 k 个技能分数(例如,准确率或误差)。然后,您可以计算这些分数的平均值和标准差,以获得关于模型在您的数据上表现如何的统计印象。

你可以在这里了解更多关于 k 折交叉验证的工作原理

你可以在这些帖子中了解如何实现 k 折交叉验证

在 k 折交叉验证期间创建的模型会被丢弃。当你选择一个模型和一组参数时,你可以使用所有训练数据集来训练一个最终模型。

在此处了解有关训练最终模型的更多信息

考虑一个 LSTM 层。

我们对这个普通的 LSTM 层了解多少?

  • 该层有多个节点或单元(例如 10 个)。
  • 该层将接收一个输入序列(例如 100 个步长,每个步长有 1 个特征)。
  • 它将输出一个向量(例如 10 个元素)。

该层如何处理输入序列?

层中的每个节点都像一个迷你网络。每个节点都会接收输入序列并产生输出。这是初学者最容易混淆的一点,这意味着层中的节点数量与输入序列中的时间步数量无关。

输入序列一次处理一个时间步。为了效率,我们可以通过 API 将整个输入序列提供给层,或者我们可以一次将输入序列分步提供给模型,这是一种所谓的动态 RNN,效率较低但更灵活。前者更常见,也是我在几乎所有教程中都采用的方法。

节点输入的每个步骤都会产生一个输出和一个内部状态。两者都用于后续时间步的处理,并保存在层中。默认情况下,只有序列末尾的最后一个输出是节点提供的实际输出。这可以更改为返回每个输入时间步的输出(例如,设置return_sequence=True),并且在堆叠 LSTM 层时必须进行更改。

然而,默认情况下,该层中的每个节点在处理序列后输出一个值。因此,该层中节点的数量决定了该层输出向量中元素的数量。

更多的节点和层意味着网络有更大的学习能力,但也会导致模型更难训练且训练速度更慢。

你必须为你的特定问题找到网络容量和可训练性之间的正确平衡。

没有可靠的分析方法来计算神经网络中特定预测建模问题所需的节点数或层数。

我的普遍建议是使用实验来发现哪种配置最适合你的问题。

这篇帖子提供了关于系统评估神经网络模型的建议

一些进一步的想法包括:

  • 运用关于领域或如何配置神经网络的直觉。
  • 使用深层网络,因为根据经验,深层网络在难题上表现更好。
  • 借鉴文献中的思想,例如与你的问题类似的预测问题上发表的论文。
  • 对网络配置进行搜索,例如随机搜索、网格搜索、启发式搜索或穷举搜索。
  • 使用启发式方法配置网络,已有数百种已发表的方法,但我认为没有一种是可靠的。

更多信息请参见此处

无论你选择哪种配置,你都必须仔细、系统地评估模型在你数据集上的配置,并将其与基线方法进行比较,以证明其技能。

你所需的训练数据量取决于问题的复杂性和所选算法的复杂性。

我在以下文章中提供了这个问题的全面解答

有些时间序列预测问题可能涉及来自多个站点的数据。

例如,预测多个城市的气温。

我们可以将其视为多站点时间序列预测。

你可以探索的一些多站点预测的通用方法包括:

  • 为每个站点开发一个模型。
  • 为每组站点开发一个模型。
  • 为所有站点开发一个模型。
  • 上述方法的混合。
  • 上述方法的集成。

可能不清楚哪种方法最适合你的问题。我建议原型化几种不同的方法,以发现哪种方法最适合你的特定数据集。

NumPy 数组上的求和和求平均值等操作可以按数组、按列和按行进行。

这通过在调用函数时设置“axis”参数来实现,例如 sum(axis=0)。

有三个你可能想要使用的 axis 值,如下所示:

  • axis=None:对整个数组执行操作。
  • axis=0:按列执行操作,对每列的所有行进行操作。
  • axis=1:按行执行操作,对每行的所有列进行操作。

欲了解更多信息,请参阅

通常,我不阅读最新的前沿论文。

原因有几个:

  • 大多数论文都不可复现。
  • 大多数论文写得都很糟糕。
  • 大多数论文明年都不会被引用或使用。

我尽量将注意力集中在经过几年验证有用且相关的方法上。

这些方法是:

  • 在机器学习竞赛中表现出色。
  • 出现在开源库和包中。
  • 被其他从业者广泛使用和讨论。

请注意,“pandas.plotting.scatter_matrix”是最新版 Pandas 的正确 API。

如果你正在使用“pandas.tools.plotting.scatter_matrix”,则需要更新你的 Pandas 版本。

你可以在此了解更新后的 API

可能不会。

如果你有一个问题要解决,请不要从头开始编写机器学习算法。你的实现可能会很慢且充满错误。软件工程真的很难。

如果你正在开发一个必须在生产中使用的项目,那么这样做有意义吗:

  • 实现自己的编译器?
  • 实现自己的快速排序?
  • 实现自己的图形用户界面工具包?

在几乎所有情况下,答案都是:不,你疯了吗?

使用具有高效且经过实战考验的算法实现的开源库。

我在这里写了更多关于这方面的内容

如果你想了解算法的工作原理,那么从头开始实现算法是一个绝妙的主意。去做吧!

事实上,对于开发人员来说,我认为从头开始编写算法是了解机器学习算法及其工作原理的最佳方式。我甚至有几本关于这个主题的书,向你展示如何做。

我在这里写了更多关于这方面的内容

我推荐一种我称之为“小项目”或“小项目方法论”的自学方法(早期的客户可能还记得我甚至曾经出售过一本名为此的指南)。

小型项目方法是一种可以在技术研究领域(如机器学习)快速建立实践技能的方法。基本思想是设计和执行小型项目,以解决您想要回答的特定问题。您可以在此处了解有关此机器学习学习方法的更多信息。

小项目在几个维度上都很小,以确保它们能够完成,并且你能从中获得学习益处,然后继续进行下一个项目。

以下是你应该考虑对项目施加的限制:

  • 时间短。
  • 范围小。
  • 资源少。

你可以在这里了解更多关于小项目的信息

我建议每个项目都有一个明确的可交付成果,例如程序、博客文章、API 函数等。

通过拥有可交付成果,你可以建立一个“工作产品”组合,你可以将其用于未来的小项目,并用于展示你不断增长的能力。

你可以在这里了解更多关于建立作品集的信息

我通常建议开发人员开始机器学习时,专注于如何端到端地解决预测建模问题。

通过这个视角,一切都变得有意义,它让你专注于为了交付成果而需要了解的机器学习部分。

我在此处概述了这种方法

尽管如此,你还是需要了解一些机器学习基础知识。它们可以稍后学习,但有些从业者可能更喜欢从它们开始。

你需要知道什么是机器学习

你需要知道机器学习可以找到复杂问题的解决方案,而这些问题你可能无法通过自定义代码和大量的 if 语句来解决

你需要对可以用机器学习解决的问题类型有所了解

你需要了解算法的学习方式

你需要了解你可以使用的机器学习算法类型

你需要了解机器学习算法的总体工作原理

这是对绝对基础知识的良好覆盖。以下是一些额外的良好概述

其余的,例如如何解决预测建模问题、算法细节和平台细节,可以在这里找到

这真的取决于你的目标。

如果你想成为一名机器学习从业者或机器学习工程师,那么你需要了解的知识与机器学习学者截然不同。

巨大的问题是,大学正在培养机器学习学者,而不是机器学习从业者。

当开发人员考虑开始机器学习时,他们会查看大学的数学课程,并认为他们需要学习数学。

这不是真的。

首先弄清楚你的目标,你想要用机器学习做什么。我在这里写了关于这个问题

本网站旨在帮助开发人员入门并精通应用机器学习。

因此,我假设你了解作为一名开发人员,这意味着

  • 你可能知道如何编写代码(但这并非必需)。
  • 你可能知道如何在你的工作站上安装和管理软件。
  • 你在解决问题时可能使用计算思维

这描述了你吗?如果是这样,我是你们中的一员。这就是我们。我们是开发人员。

你来对地方了!现在,是时候开始学习了

机器学习算法学习如何将输入示例映射到输出示例。

这很有用,因为将来我们可以提供新的输入示例,模型可以预测输出。

因此,当我们训练模型时,我们必须将数据()分成输入和输出元素(

输入被称为“X”,输出被称为“y”,模型做出的预测是它对“y”的近似,我们称之为“yhat”。

  • X:数据行的输入分量。
  • y:数据行的输出分量。

数据准备涉及将原始数据转换为一种形式或格式,使其准备好用作拟合模型的输入。

例如,在机器学习和深度学习中使用表格数据集(例如电子表格中的数据)时,数据的每一列都可能被标准化或归一化。

你可能执行许多类型的数据准备,并且某些算法需要进行某些数据准备。

例如,使用距离计算的算法,如 kNN 和 SVM,如果将具有不同尺度的输入变量(例如,英尺、小时等)归一化到 0-1 范围之间,可能会表现得更好。对输入进行加权的算法,如线性回归、逻辑回归和神经网络,也可能希望输入变量被归一化。

一些输入变量或输出变量可能具有特定的数据分布,例如高斯分布。对于那些喜欢缩放输入变量的算法,最好对变量进行居中或标准化而不是归一化。

此外,某些算法假设特定的数据分布。例如,线性回归等线性算法可能假设输入变量具有高斯分布。

正如我们所见,数据准备的类型取决于模型的选择和要建模的特定数据。

更复杂的是,有时通过忽略算法的假设或期望可以获得更好或最佳结果。

因此,一般来说,我建议使用一系列不同的数据准备技术和一系列不同的算法进行测试(原型设计或抽样检查),以便了解哪种方法最适合你的特定预测建模问题。

有关要使用的数据准备方法的更多信息,请参阅教程

我推荐 Keras 库用于深度学习。

它在功能和易用性之间提供了极佳的平衡。

Keras 封装了强大的计算引擎,例如谷歌的 TensorFlow 库,并允许您仅用几行代码创建复杂的多层感知机、卷积神经网络和循环神经网络等深度学习模型。

你可以在这里开始使用 Python 中的 Keras

你可能正在处理一个回归问题,并获得了零预测误差

或者,你可能正在处理一个分类问题,并获得了100% 的准确率

这很不寻常,原因有很多,包括:

  • 你不小心在训练集上评估了模型性能。
  • 你的保留数据集(训练集或验证集)太小或不具代表性。
  • 你的代码中引入了一个错误,它正在做一些与你预期不同的事情。
  • 你的预测问题很容易或微不足道,可能不需要机器学习。

最常见的原因是你的保留数据集太小或不代表更广泛的问题。

可以通过以下方法解决:

  • 使用 k 折交叉验证来估计模型性能,而不是训练/测试拆分。
  • 收集更多数据。
  • 使用不同的数据拆分进行训练和测试,例如 50/50。

Verbose 是 Keras 中 fit()evaluate()predict() 等函数的一个参数。

它控制模型操作期间打印到控制台的输出。

Verbose 取三个值:

  • verbose=0:关闭所有详细输出。
  • verbose=1:显示每个 epoch 的进度条。
  • verbose=2:显示每个 epoch 的一行输出。

当打开详细输出时,它将包括模型在训练数据集上的损失摘要,如果通过 metrics 参数配置了其他指标,它也可能显示这些指标。

verbose 参数不影响模型的训练。它不是模型的超参数。

请注意,如果你正在使用 IDE 或 Notebook,verbose=1 可能会在模型训练期间导致问题甚至错误。我建议如果你正在使用 IDE 或 Notebook,请关闭详细输出。

特征重要性方法表明每个特征对目标变量的相对重要性。

重要性分数可以通过统计方法(如相关性或互信息)计算,也可以通过决策树集成等模型计算。

每种特征重要性方法都提供了关于可能与你的预测建模问题相关的输入变量相对重要性的不同“视角”。

因此,没有客观的“最佳”特征重要性方法。

此外,分数是相对的,而不是绝对的。因此,一种方法计算的分数不能与另一种方法计算的分数进行有意义的比较。

作为机器学习从业者,你的任务是最好地利用这些建议来开发你的模型。

一种方法可能是根据数据的每个视图创建一个模型,并将这些模型的预测集成在一起。

另一种方法可能是评估从数据每个视图开发出的模型的性能,并使用导致模型性能最佳的特征。

如果您需要向项目干系人描述输入变量的重要性,也许可以研究一下通过消融研究(ablation study)来查看特定最终模型的性能在有或没有每个输入变量时如何变化。或者,您可以报告一套不同的特征重要性方法如何评论您的输入数据。

有关特征重要性的更多帮助,请参阅此帖子

特征选择方法建议你可以用来解决预测建模问题的一个输入特征子集。

每种特征选择方法都提供了关于可能与你的预测建模问题相关的输入变量的不同“视角”。

因此,没有客观的“最佳”特征选择方法。

作为机器学习从业者,你的任务是最好地利用这些建议来开发你的模型。

一种方法可能是根据数据的每个视图创建一个模型,并将这些模型的预测集成在一起。

另一种方法可能是评估从数据每个视图开发出的模型的性能,并使用导致模型性能最佳的特征。

有关特征选择的更多帮助,请参阅此帖子

如果你对应用机器学习感兴趣但不知道如何编写代码,那么Weka 机器学习工作台将是你一个很好的起点。

Weka 提供图形用户界面,无需任何编程。你可以使用它非常快速地端到端地完成预测建模问题。

你可以在这里开始使用 Weka

即使你不是开发人员,你也可以开始并精通应用机器学习。

我将我的机器学习教学方法描述为“面向开发人员的方法”,但它对非开发人员(如工程师、分析师、设计师等)也同样适用。

当我将材料描述为“面向开发人员”时,我指的是几件事:

  • 你熟悉计算思维,例如抽象、分解、过程等。
  • 你对具有挑战性的开放性问题感到满意,例如设计和实施解决方案。
  • 你对为利益相关者解决问题、交付成果、参与项目感兴趣。

开发人员具有这些特性,但非开发人员也具有。

我有一些不需要任何编程技能的材料,例如:

  • 你可以使用 Weka 来解决预测建模问题,而无需编写一行代码。(了解更多)
  • 你可以使用简单的算术和电子表格中的示例来学习机器学习算法的工作原理。(了解更多)

我的许多教程都是为熟悉编程的从业者编写的。

如果你懂得一点编程,那么从 Python 机器学习开始是个不错的选择。Python 非常易于使用,并且像伪代码一样编写。

通常,如果模型在训练数据集上的性能优于测试数据集,则模型过度拟合。

如果模型在训练数据集和测试数据集上的性能都很差,则模型可能欠拟合。

有时,模型在测试数据集上的性能可能优于训练数据集。

这很可能是因为测试数据集不具有更广泛的预测问题的代表性,例如测试数据集的大小太小。

为了解决这个问题,我建议尝试不同版本的测试工具,包括至少不同或不同大小的训练和测试数据集以及不同的模型配置。

混淆矩阵是一种在实际观察到的上下文中呈现分类器结果的方式。

结果以表格形式呈现,显示按值或级别分类结果变量的细分,比较观察值频率与预测值频率。

通常,观察到的频率呈现在列中,预测频率呈现在行中,例如:

理想情况下,预测频率应与预期频率匹配,并在表格从左上角到右下角的对角线中显示数字,其他地方显示零。

混淆矩阵很有用,因为它允许你快速查看分类器在分类预测建模问题上所犯错误的类型分布。

欲了解更多信息和示例,请参阅此帖子

机器学习模型从历史训练数据中学习如何将输入示例映射到输出示例。

在数学中,这被称为函数逼近。即机器学习模型逼近从输入到输出的映射函数。

数据集中的目标变量是数据集中将成为模型输出的变量(列或特征)。它是要预测的东西。

  • 如果目标是数字(如 44.2),则预测问题称为回归
  • 如果目标变量是一个类别(如“蓝色”),则预测问题称为分类

有时目标变量可能是数字,但表示一个名义类别,例如如果“是”映射到 1,“否”映射到 0。问题仍将被视为分类问题。

有时目标变量可能是数值型的,并且可能代表一个有序类别。这意味着我们可以选择将问题建模为分类或回归。一个例子可能是目标变量由 1 到 10 的整数测量组成,其中每个值都可以被视为用于回归的数字或用于分类的标签。

在表格数据集(例如数据表或矩阵)中,目标变量是一列值。

目标变量与输入变量在同一个文件中是很常见的。目标变量是文件中的最后一列也很常见。这是存储数据集(如 CSV 文件)时的最佳实践,但并非总是如此。

如果你自己收集数据,你将知道目标变量,因为你已经定义了问题的输入和输出是什么。

如果您正在使用标准数据集,那么该数据集通常会附带描述,或者数据集在首次使用该数据集的出版物或论文中得到充分描述。该描述将提及数据集中的目标变量的名称或列。

一般来说,算法根据你试图解决的问题类型进行划分,例如分类和回归。

然后这些问题类型还有专门化,例如数据类型(文本、音频、图像)以及观测值之间的关系(例如序列和时间序列)。

1. 从定义你的问题开始

选择算法的第一步是明确定义你的问题。这篇帖子可以帮助你定义你的监督学习问题

一旦你了解了你所拥有的问题的通用类型以及输入和输出,你就可以开始测试算法了。

2. 使用抽样检查

没有人能告诉你具体应该使用哪种算法,或者哪种算法最适合你的问题。

你必须通过仔细实验的过程来发现哪种方法最适合你的特定数据集。你可以在这里了解更多关于这种方法的信息

这就是应用机器学习的挑战。

我建议测试一系列方法,看看哪种方法最适合你的特定数据。我称之为抽样检查。请参阅这些关于该主题的帖子

3. 尝试一些高级方法

像随机森林和随机梯度提升(Stochastic Gradient Boosting)这样的算法在大量的分类和回归预测建模问题上表现良好,甚至可能是最好的。也许可以先尝试这些方法?您可以在此处了解更多关于此的信息。

4. 充分利用你的数据

你还必须探索数据的不同框架、不同的数据准备方案等等。你可以在这里了解更多信息

5. 应用机器学习是一个搜索问题

应用机器学习,实际上,你的特定预测建模问题,是一个巨大的组合搜索问题。你可以在这里了解更多关于这个观点的信息

分类涉及为观察值分配一个标签。

一些例子包括:

  • 将电子邮件标记为“垃圾邮件”或“非垃圾邮件”。
  • 将信用卡交易标记为“欺诈”或“正常”。
  • 将医疗记录标记为“健康”或“患病”。

回归涉及预测观察值的数值量。

一些例子包括:

  • 预测房屋描述的价格。
  • 给定一段代码样本预测缺陷数量。
  • 预测给定新文章的页面浏览量。

分类和回归预测建模问题是两种高层次的问题类型,尽管还有许多专门化,例如推荐系统、时间序列预测等等。

你可以在这里了解更多

考虑一个序列预测问题,我们希望在处理提取特征序列之前从每个时间步提取特征。

两个例子包括:

  • 一维:在时间序列预测问题中,一个月内每日观测值子序列的序列。
  • 二维:视频分类中的静止图像序列。

这种形式的数据可以用 CNN-LSTMConvLSTM 模型来处理。

CNN-LSTM 将使用 CNN 模型从输入序列的每个步骤中提取特征,从而得到一个特征序列。这个特征序列可以被 LSTM 模型解释。

ConvLSTM 的不同之处在于,输入序列中的每个步骤都由 LSTM 单元直接使用单元内部的卷积操作进行处理,而不是像 CNN-LSTM 中那样事先进行特征提取步骤并作为输入传递给单元。

有关 ConvLSTM 工作原理的更多信息,请参阅论文

有关使用 ConvLSTM 和 CNN-LSTM 进行时间序列预测的教程,请从此处开始

降维通常指减少数据集中输入变量数量的技术。

更具体地说,这通常指改变数据并将其投影到低维空间的技术。

这可以通过线性代数算法(矩阵分解)实现,例如 PCA 或 SVD,也可以通过流形学习技术实现,例如 tSNE 或 MDS。

有关降维的更多信息,请参阅教程

特征选择是指选择要从数据集中删除或保留在数据集中的输入变量(特征)的算法。

特征的选择可以基于它们与目标变量的统计关系(过滤方法),例如相关性或互信息,或者基于它们对模型性能的影响(包装方法),例如 RFE。

有关特征选择的更多信息,请参阅教程;

降维技术和特征选择从技术上讲都降低了数据集的维度,并将数据投影到低维空间。因此,在某些文献中,这些名称可以互换使用。

有用的区别在于,降维方法从数据中创建新特征,而特征选择则从数据中选择现有特征。

我更喜欢上述定义来区分这些技术。

特征选择是指选择输入特征子集以从数据集中删除或保留在数据集中的技术。

不相关的和冗余的特征可能会对某些机器学习算法在某些数据集上的性能产生负面影响。因此,仅使用最相关的特征可以提高训练速度、算法的执行效率和模型的技能。

有关特征选择的更多信息,请参阅教程

特征重要性是指报告每个输入变量(特征)对目标变量的相对效用的技术。

特征重要性方法计算的分数可以用作特征选择方法的输入。它们还可以用于向项目利益相关者报告数据中哪些可能与预测模型最相关或最重要。

有关特征重要性的更多信息,请参阅教程

函数逼近和函数优化之间存在明显的区别。

函数优化是指寻找目标函数最优值(optima)的过程。这是提供给函数的一组输入变量,该输入变量会导致优化函数产生最小或最大的评估或得分。每个变量通常都有一个定义的值范围,并且函数通常是复杂的、非线性的、不连续的、非凸的、有噪声的、评估缓慢的,以及具有所有其他数学特性,这意味着我们无法通过解析计算来获得最优值。通常,函数优化通过有效导航或搜索变量空间的过程来解决。

函数逼近是指估计目标函数的概率分布的过程。这是通过使用来自目标函数的有限样本集来实现的,其中模型试图最小化函数估计与实际观测值之间的误差。函数逼近是机器学习中监督学习的通用框架,我们试图逼近回归和分类预测建模数据集中输入数据与输出之间的映射函数。

函数优化比函数逼近简单。

函数优化和函数逼近使用不同的算法。

函数逼近通常通过函数优化来解决,例如最小化损失或误差。

Kerastf.keras 之间存在差异。

Keras 是一个独立的开源 Python 深度学习库。它允许您使用简单的界面来定义、训练和评估深度学习模型,但计算可以使用许多高效的后端数学库(如 TensorFlow、Theano 和 CNTK)中的任何一个来执行。

tf.kerasKeras 接口在 TensorFlow 中的实现。历史上,在 TensorFlow 中定义和使用深度学习模型很麻烦。TensorFlow 的 2.0 版本引入了一个新的 Keras 接口,用于定义、训练和评估深度学习模型。独立的 Keras Python 库的开发者参与了实现。它被称为 tf.keras,因为“tf”代表 TensorFlow,而 tf.keras 是在 Python 中使用该 API 的编程习惯。

独立的 Keras 仍然独立,允许你使用 TensorFlow 以外的后端。

tf.keras 将你锁定在 TensorFlow 和 Google 的平台方向上。

截至 2019 年底,独立的 Keras 项目建议今后使用 tf.keras,尽管这个声明是由 Keras 独立项目开发者提出的,他也是 tf.keras 实现的一部分,可能存在利益冲突。

目前,我们建议使用多后端 Keras 并以 TensorFlow 为后端的 Keras 用户切换到 TensorFlow 2.0 中的 tf.keras。tf.keras 维护得更好,并且与 TensorFlow 的特性(如即时执行、分布式支持等)集成得更好。

—— Keras 项目主页,2019 年 12 月访问。

它们都做同样的事情。你可以使用你认为最好的平台。

我建议使用独立的 Keras 而不是 tf.keras,至少目前如此。它已经存在 4 年多了,并且运行良好。

我的所有教程都是使用独立版 Keras 编写的。

如果你选择使用 tf.keras 平台,我的教程可以通过将导入语句从“import keras”更改为“import tensorflow.keras”来轻松调整

正则化是指用于修改目标函数以减少模型过拟合的方法。

L1 和 L2 正则化是指计算模型参数向量长度(称为向量范数)的方法,以便在拟合模型时可以最小化此长度。

  • L1 或 L1-范数计算为绝对向量值之和。这种形式的正则化在 Lasso 回归中得到应用。
  • L2 或 L2-范数计算为平方向量值之和。这种形式的正则化在 Ridge 回归中得到应用。

ElasticNet 回归算法结合了 L1 和 L2 正则化。

有关如何计算 L1 和 L2 向量范数的更多信息,请参阅此帖子

多头 CNN 是一种拥有一个以上输入或“”用于读取输入的模型。它通常允许模型使用不同大小的内核多次访问相同的输入图像,进而允许从数据中并行提取不同特征。

多通道 CNN 是一种接收具有多个变量或“通道”的输入的模型,例如图像的红、绿、蓝通道(对于 2D CNN),或者 1D CNN 的并行时间序列。所有通道将使用相同的滤波器一起读取。

有关用于时间序列预测的多头和多通道 CNN 的示例,请参阅此帖子

物体识别和物体检测是计算机视觉中的问题,可以使用深度学习卷积神经网络来解决。

  • 物体检测是一项特定的计算机视觉任务,涉及识别、定位和分类照片中的一个或多个物体。
  • 物体识别是识别照片中物体的更广泛问题,包括图像分类、物体定位、物体检测、物体分割等子问题。

物体识别是问题或研究领域的通用类别,而物体检测是物体识别任务的一种特定类型。

传统上,在数据集上运行学习算法的结果称为拟合。

我们也可以将拟合称为模型。

过拟合模型是指拟合数据样本中的随机噪声的模型。

这意味着模型可能在训练数据上表现良好,但不能泛化到新数据并在测试数据上表现良好。

欠拟合模型是指未捕获数据样本中足够结构的模型。

这意味着模型在训练和测试数据集上都表现不佳。需要更多的拟合或更好的拟合。

良好的拟合是指在捕获数据集中结构和泛化到新数据之间找到适当平衡的模型。它在训练和测试数据集上都表现良好。

你可以在这里了解更多关于过拟合和欠拟合的信息

在 Keras 中,LSTM 输入(input_shape 参数)必须定义为 (timesteps, features) 的元组,例如:

神经网络模型通常拟合多个输入和输出示例,称为样本。例如,这是电子表格中的一行数据,分为 Xy 元素。如果这对你来说是一个新概念,请参阅此帖子

在序列预测问题中,一个样本包含一个输入序列(例如时间步),其中每个时间步有一个或多个观测值(例如特征)。

因此,训练数据(X)的输入部分必须是一个三维数组,其维度为 [samples][timesteps][features],并且你必须至少有一个样本、一个时间步和一个特征。

实际上,你可能会有成千上万或数百万个样本,时间步可能超过 10 个但少于 400 个,并且至少有 1 个特征。根据我所读到的,LSTM 在时间步超过 200-400 个时表现不佳。

模型可以在 1 个时间步的输入上操作(实践中不常见),但可以在一个批次内的样本之间具有内存,然后模型的内部状态会被重置。

例如,您可能每秒(时间步)跟踪一周(604,800 秒)的温度(一个特征)和压力(另一个特征)。您必须将多年的数据分割成离散的输入示例(样本),例如输入输出对,才能训练像 LSTM 或 CNN 这样的监督学习模型。也许您选择 60 秒的不重叠序列,因此您可能有数千个样本,60 个时间步和 2 个特征,或者 LSTM 输入形状为 [10080, 60, 2](请记住,604,800 秒可以分成 10,080 个 60 秒的块)。

再举个例子,如果您有 20 个时间步的数据,包含 2 个特征,您可以将其表示为 20 个样本,每个样本有 1 个时间步 [20, 1, 2],或者表示为 1 个样本,包含 20 个时间步 [1, 20, 2]。在第一种情况下,您将有 20 个样本,意味着 20 个输入和输出示例,您的模型将做出 20 次预测。在后一种情况下,您有 1 个样本,1 个输入和 1 个输出,模型将做出 1 次累积 20 个时间步的预测。请注意,这是一个极端示例,因为只有 20 个示例的数据集非常小,并且每个样本 1 个时间步的表示可能没有意义。

总结一下:

  • 样本:一个输入示例,包含 1 个或多个时间步,每个时间步包含 1 个或多个特征。
  • 时间步:单个输入示例的一部分,包含 1 个或多个特征。
  • 特征:给定时间步的可能多个观测值之一。

有关将时间序列拆分为样本、时间步和特征的示例,请参阅这些帖子

有关将时间序列转换为一般监督学习问题的讨论和可重用代码,请参阅

有关一般使用 LSTM 的更多信息,请参阅

有关使用 LSTM 进行时间序列预测的示例,请参阅

标准化指的是将具有高斯分布的变量进行缩放,使其均值为零,标准差为一。

归一化指的是将具有任何分布的变量进行缩放,使所有值介于零和一之间。

在标准化变量之后进行归一化是可能的。

有关如何标准化数据和归一化数据的更多信息,请参阅教程

 

监督学习用于目标是学习从输入到输出映射的问题。

这些方法之所以被称为“监督”,是因为学习过程就像老师监督学生一样。模型不断做出预测,将预测与预期结果进行比较,计算误差,然后利用这些误差来纠正模型。

监督机器学习问题的例子包括:

  • 分类或输入变量到标签的映射。
  • 回归或输入变量到数量的映射。

监督机器学习算法的例子包括:

  • k 近邻。
  • 支持向量机。
  • 多层感知器神经网络。

无监督方法用于仅有输入,目标是学习或捕捉数据中固有的有趣结构的问题。

这些方法被称为“无监督”是为了区别于“监督”方法。没有老师,相反,模型是根据对问题领域示例的重复接触进行更新的。

无监督机器学习问题的例子包括:

  • 聚类或数据中组的学习。
  • 数据中关系的学习关联。

无监督机器学习算法的例子包括:

  • k-均值。
  • 先验。
  • 自组织映射神经网络。

你可以在这篇帖子中了解更多关于监督与无监督方法的信息

容忍区间描述了分布中观测值的预期范围。它可以用来识别异常值。

置信区间描述了分布参数的预期范围。它可以用来描述模型平均的准确性或误差。

预测区间描述了观测值的预期范围。它可以用来描述预测中的不确定性。

我的博客上有教程展示如何计算每种类型的区间。

训练数据集用于训练或拟合模型。

测试数据集的观测值不与训练数据集重叠,用于评估训练好的模型。具体来说,用于估计模型在新数据样本上的性能。

验证数据集通常指训练数据集的一部分,分离出来并用作测试数据集,同时调整模型的超参数。

你可以在这篇帖子中了解更多信息

神经网络中较大的权重(权重大于其所需值)是过拟合的迹象,并可能使模型不稳定。

权重正则化和权重约束都是旨在减少神经网络模型过拟合(提高泛化能力)的正则化方法。

权重正则化在训练期间更新损失函数,以根据权重的规模对模型进行惩罚,权重规模计算为向量范数(幅度),如 L1(权重绝对值之和)或 L2(权重平方和)。使用 L2 向量范数通常称为“权重衰减”。

权重约束是在优化过程中对权重的规模进行的“如果-那么”检查。如果触发,例如,如果权重大小(计算为向量范数,通常是最大范数)大于预定义值,则所有权重都会被缩放,以便权重范数低于期望的水平。

因此,“权重正则化”鼓励模型拥有小权重,而“权重约束”强制模型拥有小权重。

在神经网络中,批次和周期是你在训练网络时必须选择的两个超参数。

它们用于随机梯度下降。

一个样本是数据的一行,包括网络的输入和预期输出。

一个批次是网络将处理的样本集合,之后模型权重将被更新。模型将为批次中的每个样本做出预测,通过将预测与预期值进行比较来计算误差,估算误差梯度,然后更新权重。训练数据集被分成一个或多个批次。

一个周期涉及对训练数据集的一次遍历。一个周期由一个或多个批次组成,具体取决于所选的批次大小。

你可以在这里了解更多关于批次和周期之间的区别

你可以在这里了解更多关于用于训练神经网络的随机梯度下降的信息

描述性模型是根据历史数据训练的模型,旨在理解问题中的某些方面,例如因果关系。

使用具有强大理论基础的更简单模型,有助于理解问题。

描述性建模通常是应用统计学和计量经济学的目标。

预测模型是根据历史数据训练的模型,旨在做出准确的预测。

可能会使用复杂的模型,这些模型很少甚至根本不提供特定预测原因的任何线索。

预测建模通常是应用机器学习的目标,或者是一个被称为预测建模的子领域。

机器学习算法是在训练数据上运行以创建模型的程序。

它是进行学习的过程。

一些例子包括:

  • 线性回归。
  • 神经网络中带有反向传播的随机梯度下降。
  • 随机森林。

机器学习模型是机器学习算法学习过程的结果。

模型是训练后保存的“程序”,稍后加载并用于对新数据进行预测。

一些例子包括:

  • 线性回归的系数。
  • 人工神经网络的权重和结构。
  • 随机森林的决策树。

欲了解更多信息,请参阅此教程

模型参数是模型内部的,由训练算法学习。

模型参数的例子包括回归中的系数、神经网络中的权重和决策树中的分割点。

模型参数是训练后保存的东西。它们就是模型本身。

模型超参数由你(从业者)指定,通常控制学习过程。它们是无法学习的参数。

模型超参数的例子包括随机梯度下降中的周期数或训练迭代次数,以及决策树的最大深度。

模型超参数通过试错、网格/随机搜索或通过比较过去有效的示例来找到。

欲了解更多信息,请参阅此帖子

在统计学中,“样本”和“总体”都指数据。

一个样本包含一个或多个从领域中提取的个体观察结果。

一个总体是对所有可能观察结果的理想化概念,可以从中提取特定的观察结果样本。

在统计学中,我们通常根据样本来估计总体数据分布的参数。

一般来说,“免费午餐定理”表明,在所有可能的问题上进行平均时,没有任何一种机器学习方法会比其他方法表现得更好。

该定理涉及优化和搜索,尽管它对机器学习的预测建模有影响,因为大多数方法都是通过解决优化问题来近似函数的。

这意味着没有一个算法能在所有问题上都表现得最好,更不用说表现好了。换句话说,当算法在所有可能的问题上进行平均时,所有算法的表现都相同。没有银弹。

它是理论性的,并假设我们对问题一无所知,因此不能利用问题知识来缩小算法的选择范围。这在实践中是不成立的。

虽然没有灵丹妙药,但有些算法(例如随机森林和随机梯度提升)在许多我们感兴趣的预测建模问题上表现出奇地好,即在所有可能问题的一个子集上。

欲了解更多信息,请参阅本教程

不要从数学开始。

我的使命是帮助你通过“边学边做”的理念,开始并精通应用机器学习。我采用自上而下、结果优先的方法教学。

从数学开始是经典的大学方式。这是培养机器学习学者的途径,而不是现代实践者。它不必那么难。请参阅这篇博文

如果你想采用自下而上的理论优先的机器学习方法,我推荐一本教科书或一个多年的研究生课程。这是通往理论机器学习和学术界的道路。

话虽如此,人们普遍认为,你最终需要了解这些数学领域的交叉点

并非所有这些数学领域都相关,只有部分相关。此外,您还需要这些领域的交叉点。例如,线性代数 + 统计学是多元分析,它对于理解 PCA 和其他投影方法是必需的;线性代数 + 微积分是多元微积分,对于深度学习中的学习算法是必需的。这些都是非常难的研究生课题,对于有问题的开发者来说,并不是一个好的起点。

不要犯新手错误,认为你需要从这里开始。在你学会如何端到端地解决预测建模问题后,再回过头来学习。

当你准备好时再学习数学,并且只学习相关部分,以帮助你充分利用某种方法,或在下一个项目中取得更好的结果。

阅读此文

另外,阅读这篇博文

我在体育数据集建模方面经验不多。

尽管如此,我看到评级系统在团队运动中为球队评分方面取得了一些成功。

你可以在这里了解更多关于评级系统的信息

一个经典的算法是Elo评级系统,一个现代的例子是微软的TrueSkill

我爱书。

我每周读几本书,我有一个大型参考书库,而且我总是在买更多的书。

我鼓励你在机器学习领域广泛阅读。

首先,这里有一些关于机器学习的好书列表

我还有特定主题的书籍列表,例如

读书可能还不够,你必须知道如何充分利用它。

这篇博文将为你提供一些关于如何充分利用你正在阅读的书籍的想法

你使用的特定编程语言或平台并不重要。

  • 我坚信,最重要的是专注于如何端到端地解决机器学习问题(了解更多)。
  • 话虽如此,我认为如果你不是一个强大的程序员,那么Weka是最好的起点,因为你可以无需编写任何代码就能解决问题(了解更多)。
  • 我认为Python非常适合开发可以在生产环境中运行的模型,它是一个不断发展的平台(了解更多)。
  • 我认为R可能是最强大的平台,但它需要学习一门新的编程语言。我认为R的最佳应用场景是单次项目和研发项目(了解更多)。

另外,这篇博文可能会有所帮助

如果非要回答,我建议你从Python开始(了解更多)。

你的模型性能在训练过程中可能会停滞不前。

这可能会发生在神经网络中,它们达到特定的损失、误差或准确率后不再改进,在每个后续的epoch结束时显示相同的分数。

在最简单的情况下,如果你的代码示例有一个固定的随机数种子,那么尝试更改随机种子,或者不指定种子,以便每次运行代码时都使用不同的随机数。

然后尝试运行该示例几次。

要了解更多关于机器学习中的随机性,请参阅这篇博文

要了解更多关于机器学习中的伪随机数生成器,请参阅这篇博文

如果问题不是随机性,则可能是你的模型已收敛。如果模型在收敛后的技能不好,则称之为过早收敛。

你可以通过减慢模型的学习速度来解决过早收敛问题。你可以通过更改学习过程的不同超参数来做到这一点,例如

  • 使用较小的学习率。
  • 使用更大的网络(节点或层)。
  • 使用包含更多示例的训练数据集。
  • 等等……

过早收敛是一个重要的研究领域,如果你需要更多想法,我建议你进一步阅读该主题。

机器学习算法使用随机性,例如在初始化、学习过程中以及算法评估中。

随机数是使用伪随机数生成器计算的。

伪随机数生成器可以设置种子,使其每次运行时都生成相同的数字序列。这对于精确复现模型很有用,例如在教程中或作为在所有可用数据上训练的最终模型。

用于为伪随机数生成器设置种子的值无关紧要。你可以使用任何你想要的数字。

要了解更多关于伪随机数生成器以及何时适合设置种子,请参阅这篇博文

要了解如何在Keras中为深度学习设置伪随机数生成器种子,请参阅这篇博文

超参数是用户指定的模型参数。

它允许你根据具体问题调整模型。

根据定义,用户参数不能自动设置。可能存在设置超参数的启发式方法,但如果它们可靠,则将直接使用它们,而不需要你设置超参数的值。

你可以在此处了解更多关于参数和超参数的信息

要设置超参数的值,你必须使用可靠的测试工具进行仔细实验,以找出最适合你的特定数据集的值。

加快此过程的一些建议包括

  • 尝试文献中报告的启发式方法。
  • 尝试文献中报告的针对类似问题的值。
  • 尝试随机搜索。
  • 尝试网格搜索。
  • 尝试启发式搜索。

标准化指的是将具有高斯分布的变量进行缩放,使其均值为零,标准差为一。

归一化指的是将具有任何分布的变量进行缩放,使所有值介于零和一之间。

在标准化变量之后进行归一化是可能的。

一般来说,归一化和标准化是数据缩放方法,你可能还需要使用其他方法。

缩放方法通常适用于那些使用观测值之间距离(例如 k-近邻和支持向量机)进行学习或预测的模型,以及那些计算输入加权和(例如线性回归、逻辑回归和神经网络)的方法。

如果您仍然不确定是否应该标准化、归一化、两者都做或做其他事情,那么我建议先在原始数据上建立一个基线模型性能,然后尝试每种缩放方法,并比较模型产生的技能。

有关如何标准化数据和归一化数据的更多信息,请参阅教程

多层感知器 (MLP) 可以近似从输入到输出的映射函数。它们具有灵活性,可以适应大多数问题,但它们可能更适合分类和回归问题。

卷积神经网络(CNN)是为了图像分类而开发的,并且最适合用于图像分类。它们也可以普遍用于处理具有空间结构的数据,例如单词序列,并且可以用于文档分类。

循环神经网络或 RNN(如 LSTM 网络)是为序列预测而开发的,非常适合具有输入观测序列或输出观测序列的问题。它们适用于文本数据、音频数据和类似应用。

大多数有用的网络架构都是混合的,以某种方式结合了MLP、CNN和/或RNN。

更多信息,请参阅这篇文章

在 scikit-learn 中计算某些模型评估指标(例如均方误差 (MSE))时,结果为负值。

这令人困惑,因为像 MSE 这样的误差分数实际上不能为负,最小值为零或无误差。

scikit-learn 库有一个统一的模型评分系统,它假设所有模型分数都是最大化的。为了使该系统能够处理被最小化的分数(如 MSE 和其他误差度量),通过取负值来反转被最小化的分数。

这也可以从指标的命名中看出,例如,“neg”被用于指标“neg_mean_squared_error”的名称中。

在解释负误差分数时,你可以忽略符号并直接使用它们。

你可以在这里了解更多

预测模型总是会有一些误差。

该模型是输入到待预测输出的某种未知潜在完美映射函数的近似。

许多方面都可能导致这种映射产生误差,例如

  • 观测样本的大小和质量,称为随机抽样误差。
  • 观测值中的噪声,从数据中的随机变化到错误标记的示例。
  • 学习算法或所选模型的偏差。
  • 给定数据样本的学习算法或模型的方差。
  • 模型评估方法。

我们无法为给定的预测建模问题找到最佳模型,这是无法解决的。

相反,我们必须在项目可用时间和资源内找到我们能找到的最佳模型。

良好模型技能的概念相对于你特定问题的基线而言,而不是跨不同问题的模型技能比较。

常见的基线包括回归的平均值、分类的模型或时间序列问题中的持久性预测。

当你运行教程中的代码时,可能会得到不同的模型性能或不同的预测。

机器学习结果可能有所不同,主要有三个原因:

  1. 随机机器学习算法。
  2. 随机算法评估。
  3. 硬件或平台造成的舍入误差。

有关此主题的深入教程,请参阅

让我们仔细看看每一个。

1. 随机机器学习算法意味着当你在同一台机器上对相同数据运行相同算法时,可能会得到不同的结果。

放松。这是一个特性,不是一个bug。

许多机器学习算法是随机的,这意味着它们在学习过程中会使用一些随机性,这意味着每次运行相同的算法时,都会学习到一个略有不同的模型。这一点点随机性有助于算法在平均意义上找到更好的模型。

有关此主题的更多信息,请参阅

有效评估随机机器学习算法需要你多次运行实验并对结果进行平均。单次模型评估运行可能不够。

有关此主题的更多信息,请参阅

如果你担心最终模型每次运行都不同,请拟合许多最终模型并对其预测进行平均。

有关此主题的更多信息,请参阅

不要固定机器学习算法使用的伪随机数生成器的种子。这是一个脆弱的权宜之计,忽视了你正在使用的学习系统的性质。

2. 随机算法评估意味着像训练/测试分割或 k 折交叉验证这样的过程在分割数据集时会使用一些随机性。这意味着,尽管您的算法可能(或可能不)是随机的(如上所述),但每次运行您都会获得不同的模型评估。

通常,为评估过程使用的伪随机数生成器设置固定种子是一个好主意,这样您每次运行代码或每次使用相同的测试框架来评估不同的算法或算法配置时,都会获得相同的数据分割。

这个教程可能会有所帮助

3. 由于硬件平台造成的舍入误差意味着不同的硬件或底层数学库的不同版本可能会产生不同的舍入误差。这些误差可能会累积,导致明显的差异。

虽然可能性较小,但它仍然是一个问题,而且是在数字硬件上进行数值计算时模拟浮点数的事实。

 

我喜欢根据项目使用不同的工具。

最近我把更多的注意力放在了基于 Python 的工具和库上。

似乎Python正在成为一个主导平台。对Python机器学习技能的需求量很大。我只是在满足这个需求。

请参阅这篇博文

在许多代码示例中,我将测试集用作验证数据集。

这是教程中使用的捷径,用于了解模型(例如神经网络)在训练过程中在保留数据集上的表现。

我有时这样做是为了简洁,以便教程中的示例保持简单。

一般来说,不建议将测试集用作验证数据集

验证数据集是训练数据集的一个子集,不用于拟合模型,而是用于在训练期间评估模型性能,并可能调整模型超参数。

测试集是一个单独的保留数据集,在训练期间根本不使用,仅在模型选定后用于估计所选模型或模型的预期性能。

有关测试和验证数据集之间区别的更多信息,请参阅这篇博文

我通常建议机器学习初学者不要使用 IPython 或 Jupyter Notebook 等笔记本。

我还建议初学者不要使用花哨的集成开发环境(IDE)。

一旦你了解了工作原理并设定了一些预期,笔记本和 IDE 都是很棒的工具。

对于初学者,我一次又一次地看到相同的问题,例如

  • 代码在命令行中有效但在笔记本中无效的问题。
  • 笔记本无法正确显示模型输出的问题。
  • 环境问题和缺少库,即使它们已安装。
  • 路径问题。
  • 隐藏或模糊的错误消息问题。
  • 新的 IDE 特有或笔记本特有的错误消息问题。

对于初学者。我建议在简单的文本编辑器中编写代码,并直接从命令行运行脚本。

从命令行运行可确保

  • 你正在使用你安装的环境。
  • 你直接从解释器看到错误消息。

顺便说一下,我就是这样学习多种语言(Java、C、C++、Ruby、Python、FORTRAN 等)编程的,也向新开发人员推荐这种方式。

我在这篇博文中详细介绍了我的推荐机器学习开发环境

你正在处理时间序列预测问题,并且你将预测的时间序列与实际时间序列进行绘图,结果看起来预测滞后于实际一步。

这很常见。

这意味着你的模型正在进行持久性预测。这是一种预测,其中预测的输入(例如前一个时间步的观测值)被预测为输出。

持久性预测被用作时间序列预测的基线方法进行比较。你可以在这里了解更多关于该方法的信息

持久性预测是我们能在具有挑战性的时间序列预测问题上做到的最好的事情,例如那些随机游走的时间序列,像股票价格的短期波动。你可以在这里了解更多关于这方面的信息

如果你复杂的模型,例如神经网络,正在输出持久性预测,这可能意味着

  • 模型需要进一步调整。
  • 所选模型无法解决你的特定数据集。
  • 这可能还意味着你的时间序列问题是不可预测的。

GAN 模型不会收敛。

相反,生成器和判别器模型找到了一个稳定的平衡(希望如此)。生成器在某种程度上(但并非总是)欺骗判别器,而判别器有效地将真实图像和生成图像分类(但并非总是如此)。

有关模型之间关系的更多信息,请参阅本教程

如果生成器和判别器模型没有找到平衡点,并且训练确实收敛。这是不好的,模型可能现在已经没用了。这被称为 GAN 失败模式。

欲了解更多关于此主题的信息,请参阅教程

那么你如何知道何时停止训练 GAN 模型?

好问题。您可以每隔几个 epoch 使用生成器生成图像,查看图像并决定是否继续训练。或者长时间训练,每隔几个 epoch 保存一次模型,然后在运行结束时使用每个模型生成图像,并选择保存的、生成最佳图像的模型。

你还可以使用一些指标来评估生成的图像,进而评估生成器模型的“技能”。

欲了解更多关于此主题的信息,请参阅教程

为什么开发人员需要花时间学习机器学习?

这是一个重要问题!

简短的回答:

因为机器学习提供了从历史示例中学习复杂问题解决方案的技术,对于这些问题,手动开发解决方案是不可行或不切实际的。

更长的回答

请参阅这篇博文

我将首先学习机器学习的数学和理论称为机器学习的“自下而上”方法。

这是大学教学和教科书中使用的方法。

它要求你学习数学先决条件,然后是该领域的通用理论,然后是每个算法的方程及其推导。

  • 它慢得多。
  • 它难得多。
  • 它非常适合培养学者(而不是从业者)。

最后一个问题是,自下而上的方法到此为止。

我教授一种替代方法,它颠倒了过程,称为“自上而下”机器学习。

我们首先学习如何端到端地解决预测建模问题的过程,从定义问题到进行预测。然后我们练习这个过程并精通它。我们从学习如何交付结果和创造价值开始。

稍后我们再回过头来学习数学和理论,但仅限于过程的背景下。这意味着,只考虑有助于我们更快地交付更好结果的理论和数学。

你可以在这里了解更多关于这两种方法的对比信息

你可以在这里学习如何开始使用这种方法

但这很危险!

我经常看到这种批评。

对于初学者来说,使用他们不了解的算法来做出业务依赖的预测是危险的。

我同意。

  • 我同意,原因就像我认为学习开车的学生不应该驾驶校车一样。
  • 我同意,原因就像我认为学习编码的学生不应该将他们的“hello world”代码投入生产一样。

但是,

  • 学生司机可以练习,最终熟练到可以驾驶校车。
  • 学生程序员可以练习,最终熟练到可以将代码投入生产。

信任在机器学习中是赢得的,就像在任何其他职业或技能中一样。

了解算法的数学原理是否能让你获得这种信任?

也许吧,但可能不会。

  • 了解内燃机的工作原理是否足以让你信任并驾驶?
  • 了解编译器的工作原理是否足以让你信任并推动代码投入生产?

我在这里写了更多关于这方面的内容

但数学是必需的!

是的,只是不是第一位。

了解算法的工作原理和机器学习理论可以让你成为一名更好的机器学习实践者。

但是,它可以稍后进行,并且可以逐步进行。

你可以根据需要迭代地深入研究教科书和论文,专门学习特定知识,这将使你变得更好、更快或更高效。

了解算法的工作原理很重要,但它不能告诉你何时使用它。

在监督机器学习中,我们使用数据来构建一个模型来逼近一个未知且有噪声的映射函数。如果我们足够了解这个函数,足以正确选择合适的算法,那么我们可能就不需要机器学习了(例如,我们可以使用统计学和描述性建模来理解已有的关系)。

机器学习中一个鲜为人知的秘密是,您可以将机器学习算法用作黑盒子,至少在初期是这样,因为最难的部分实际上是弄清楚如何最好地构建问题、准备数据以及确定一千种方法中哪一种可能表现良好。

你可以在这里了解更多信息

数学不一定非要先学。如果你喜欢这种学习方式,当然可以先学,但这个网站可能不是你最好的起点。

帮助我提问 (43)

感谢您的询问。

抱歉,我通常对新的商业机会不感兴趣。

我专注于写作和帮助我的读者,发展新的机会会占用我大量的时间和精力。我相信你能理解。

尽管如此,如果你仍然想推销你的想法,你可以直接联系我

是的,我很乐意回答关于机器学习或我的教程的问题。

你可以通过此表格直接联系我

请每条消息只问一个问题。

出于安全原因,我不打开附件或链接。

我也没有能力审查你的代码/数据/论文。希望你能理解。

感谢您的询问。

抱歉,我无法见面喝咖啡并聊聊机器学习和你的项目。

我专注于写作和帮助我的读者,白天见面聊天会占用我大量的时间和精力。我相信你能理解。

如果你有关于应用机器学习的问题,你可以直接联系我

抱歉,我不提供电话支持。

我不分享我的电话号码(手机号码),而且我通常不接陌生号码的电话。

你可以通过我的联系页面直接联系我。

谢谢你的询问,我受宠若惊。

抱歉,我没有提供实习计划。我只是没有这个能力。

也许将来会。

感谢你的慷慨提议。我真的很感激。

我目前不需要帮助。

你能给予的最大帮助是帮助宣传网站。也许在社交媒体上发布网站链接?或者参与教程的评论?

是的,但请理解,我网站和书籍上的所有代码和材料仅用于教育目的。

我对代码、它可能做什么或你如何使用它不承担任何责任。

如果你在自己的项目中使用我的代码或材料,请注明来源,包括

  • 作者姓名,例如“Jason Brownlee”。
  • 教程或书籍的标题。
  • 网站名称,例如“Machine Learning Mastery”。
  • 教程或书籍的 URL。
  • 您访问或复制该代码的日期。

例如

  • Jason Brownlee, Python 机器学习算法, Machine Learning Mastery, 网址:https://machinelearning.org.cn/machine-learning-with-python/, 访问于 2018 年 4 月 15 日。

另外,如果您的作品是公开的,请联系我,我很乐意出于一般兴趣看看它。

抱歉,我实在没有精力进行一对一辅导。

如果你有特定的机器学习问题,也许我有一些想法。

你可以直接联系我提出你的问题。

感谢您的询问。

抱歉,不行。

我最近尽量避免参加会议,更喜欢通过浏览论文或在线观看视频来了解激动人心的成果。

参加会议会占用我大量时间和资源,这些时间本可以用于阅读、写作和帮助我的读者。

感谢您的询问。

我很想帮忙,但我实在没有这个能力。

我确实提供了一种结构化、自上而下的机器学习自学方法。

你可以在这里了解更多

我很乐意继续通过电子邮件回答你可能有的任何机器学习问题(请一次只问一个问题)。

谢谢你的询问,我受宠若惊,尤其是我们从未见过或交谈过。

抱歉,我不能做你的博士导师或主管。

我不隶属于任何大学,也不指导研究学生。

我很乐意帮忙,但我没有能力根据你的具体需求定制代码。

我收到很多这样的请求。我相信你能理解我的理由。

我有一些可能有所帮助的想法

  • 也许我已有教程包含了你所要求的更改?搜索博客
  • 也许你可以自己尝试进行更改?
  • 也许你可以在博文下方添加评论,说明你需要进行的更改,我和其他读者可以提出建议?
  • 也许你可以雇佣承包商或程序员进行更改?
  • 也许你可以在 stackoverflow.com 上发布所需代码的描述?

谢谢你的邀请,我受宠若惊。

抱歉,我没有能力来做演讲或讲座(即使所有费用都报销)。

旅行、准备和演讲是一项巨大的时间投资,我无法承担。

我专注于写作和帮助我的读者。我相信在网站上工作是我能帮助最多人最有效的方式。

抱歉,我没有能力审查和评论你在 StackOverflow 或 StackExchange 网络上发布的问题。

也许你可以用一两句话总结你的具体问题,并通过联系页面问我。

你对别人的作品有疑问吗?

  • 研究论文?
  • 博文?
  • 图表?
  • 代码?

我很乐意帮忙,但是阅读一篇论文(或别人的材料)并达到可以向你解释的程度需要大量的时间和精力。我实在没有能力满足我收到的每一个请求。

我最好的建议是直接联系作者并提出你的问题。

我相信一个诚实的学者会希望他们的工作被阅读和理解。

如果你准备充分(例如,做足功课),如果你有礼貌(例如,谦逊、客气,不强求),并且如果你的问题清晰(例如,具体),我期望会得到一个有益的回复。

谢谢你的询问,我受宠若惊。

我有一些研究学位,那时和现在我都热爱研究。但我认为我不擅长研究

事实上,我可能更喜欢阅读和弄清楚别人学到了什么,而不是设计我自己的研究项目。也许我更像工程师和学者,而不是学术研究员。

因此,我觉得自己没有资格就你的研究提供建议。

我建议你和你的研究导师讨论一下。毕竟,这正是他们的工作,你选择了他们,他们也选择了你。

此外,非常聪明的人也写下了他们的建议。

我建议阅读

还有这些经典之作

抱歉,我尽量不提供具体的职业建议。

关于职业生涯,我最好的建议是追随最让你感兴趣和兴奋的道路。

人生短暂,但日子漫长。我认为从事能让你完全投入兴趣的事情很重要。

抱歉,我无法直接帮你找工作。

但我有一些建议。

我建议你将学习重点放在如何端到端地解决预测建模问题上,从问题定义到做出预测。我在这里描述了这个过程

我建议您使用选择的工具/库来练习这个过程,并开发一个已完成的机器学习项目作品集。这个作品集可以用来展示您不断增长的技能,并提供一个代码库,您可以在更大、更复杂的项目上利用它。

你可以在这里了解更多关于开发机器学习作品集的信息

我建议你在较小的公司和初创企业寻找工作,这些公司更看重你交付成果的能力(通过你的作品集证明),而不是老式的招聘方式(例如,拥有相关专业的学位)。

我很乐意帮忙,但我实在没有能力帮你设置或调试工作站。

而且,我不是调试工作站和开发环境的专家。

我的资料通常是为那些熟悉自己工作站并知道如何安装软件的人准备的。

请查看这些教程以设置你的环境

如果问题持续存在,请考虑将你的问题和情况发布到 StackOverflow。

抱歉,我无法帮助你开发彩票预测模型。

彩票号码的抽取是随机事件,这是设计使然。

随机事件的抽取是无法预测的.

即使你有一个包含数百或数千次先前彩票抽奖的大型数据集。

抱歉,我近20年没见过Windows机器了。

我对Windows一无所知。

事实上,我不是调试工作站的专家。

我建议你在 stackoverflow.com 上发布你的问题或疑难。

抱歉,我无法帮助你用机器学习预测股票市场、外汇或比特币价格。

我没有金融背景或兴趣。

我真的很怀疑。

我知道,除非你处于最高水平,否则你将被费用、其他算法或处于最高水平的人吞噬。

为了了解一些应用机器学习到股票市场的数学家是多么才华横溢,我推荐阅读这本书

我喜欢 Freakonomics 最近一期播客中关于人们选股的这段引言

这是一种对那些不了解自己做傻事倾向的聪明人征收的税。

—— Barry Ritholtz,《你用钱能做的最蠢的事》,2017年。

我还了解到,证券价格(股票)的短期波动是随机游走,你能做的最好的事情就是使用持久性模型。

我喜欢《漫步华尔街》一书中的这段话

随机游走是指未来步长或方向无法根据过去历史预测。当该术语应用于股票市场时,它意味着股票价格的短期变化是不可预测的。

—— 第26页,《漫步华尔街:成功投资的久经考验策略》,2016年。

你可以在这里发现更多关于随机游走的信息

但我们可以变得富有!??

我仍然非常怀疑。

也许你比我更了解金融预测,我祝你好运。

用于自学的金融数据怎么样?

有大量的金融数据可用。

如果你考虑使用这些数据来学习机器学习,而不是为了赚钱,那么这听起来是个绝佳的主意。

金融中的大部分数据都是时间序列的形式。我建议你从这里开始学习时间序列预测

一般来说,我建议你独立完成家庭作业和作业。

你选择了课程,甚至(也许)支付了学费。你选择通过自学投资自己。

为了最大程度地利用这项投资,你必须努力学习。

另外,您可能(已经)付钱给老师、讲师和支持人员来教您。利用这个资源,并向他们寻求关于您的家庭作业或作业的帮助和澄清。从某种意义上说,他们为您工作,没有人比他们更了解您的家庭作业或作业以及如何评估它。

尽管如此,如果你仍然感到困难,也许你可以将你的困难概括为一句话并联系我

感谢您的询问。

抱歉,我无法帮助你完成你的项目。

我很乐意帮忙,但我没有能力参与你的项目到你需要的程度或能做好工作的程度。

我相信你能理解我的立场,因为我每天都会收到许多项目帮助请求。

尽管如此,我很乐意回答你关于机器学习的任何具体问题。

你这么问真是太慷慨了,尤其是在我们从未交谈或见过面的情况下。

不,谢谢。

我专注于通过撰写教程和书籍来帮助从业者。

感谢您的询问。

我很乐意帮忙,但我没有能力阅读和评审你的研究论文并提供反馈。我相信你能理解。

我有一些想法:

  • 也许你可以在你的研究小组、学校或班级中找到一个同伴,让他们给你提供论文的反馈?
  • 也许你可以从你的老师、导师或教授那里获得关于你的论文的帮助和反馈?
  • 也许你可以雇佣一位在机器学习方面有技能的家教或教练,让他们为你提供论文的反馈?

我很乐意回答你关于机器学习的任何具体问题。

感谢您的询问。

我很想帮忙,但我实在没有能力为您调试代码。

我很乐意提出一些建议

  • 考虑将代码积极削减到最低要求。这将帮助您隔离问题并专注于它。
  • 考虑将问题简化为一个或几个简单的例子。
  • 考虑寻找其他可行的类似代码示例,并慢慢修改它们以满足您的需求。这可能会暴露您的失误。
  • 考虑在 StackOverflow 上发布您的问题和代码。

抱歉,不行。

我想避免提供招聘建议。我认识的优秀人才都有工作。

根据我的经验,优秀的人总是全心投入。你的工作是找到他们并提供他们更感兴趣的东西。

也许可以从像 Upwork 这样的网站上寻找承包商开始?

抱歉,我没有论坛或Slack频道。

你可以在相关的博文上提问或联系我

谢谢你的询问,我受宠若惊。

抱歉,我不再承接合同或咨询项目。

我的重点是通过网站和书籍写作和帮助读者。

咨询对我来说是一项巨大的时间和资源投资。它会占用我太多时间和精力,无法撰写新的教程和书籍,而我认为这是我能帮助最多人最有效的方式。

谢谢你的询问,我受宠若惊。

抱歉,我不提供个人或团队的面对面培训。

我专注于写作和帮助我的读者,因为我相信这是我能帮助最多人最好的方式。

抱歉,我不举办任何面对面聚会。

我100%专注于网站写作和回答读者的问题。

我不是神谕。只是一个人。

我只专注于应用机器学习中最常用的方法,特别是使用监督学习方法进行预测建模。

  • 我不关注最新的论文,大多数方法将在明年消失,我们也会忘记它们的名字。
  • 事实上,大多数论文可能都无法复现(例如,一种学术欺诈)。
  • 我不使用无监督学习方法,我只是觉得它们没用(目前)。
  • 我不看互联网新闻,我很忙。
  • 我不是每种方法的专家,也没有人能做到。

我分享我所知道的,我通过阅读了解更多,当你提问时,我会非常清楚和诚实地告诉你我不知道什么。

我不知道。

我的重点是工业机器学习和帮助从业者。

我不再对学校和课程有任何看法。

如果你觉得好,那就去吧。

请记住,你不需要更高的学位就能在应用机器学习领域做得很好。

我最好的建议是研究你最感兴趣的问题或技术。

以下是一些更具体的建议

考虑解决一个标准的机器学习数据集

考虑处理一些来自竞争性机器学习的更高级数据集

考虑处理对你重要的问题

考虑设计你自己的项目

谢谢你的询问,我受宠若惊。

很抱歉,我不知道你应该研究哪个研究课题。

一般来说,我建议你选择一个你真正感兴趣的话题。动力很重要,研究项目可能需要很多年才能完成。重要的是你要把时间花在你深深感兴趣的项目上。

我还认为,最适合你讨论研究课题的人是你的研究导师。这是他们的工作。

祝你的项目一切顺利。

太棒了!

  • 如果博文有误,请留言。我会阅读、修正并回复你。
  • 如果书中存在错误,请联系我,以便我尽快修正并更新书籍。
  • 如果错误出在开源库中,请联系该库的用户组。

我建议在机器学习和数据科学专业人士聚集的地方提问。

一些想法包括

  • 论坛(例如 Kaggle)
  • 群组(例如 Facebook、LinkedIn、Google+)
  • 问答网站(例如 StackOverflow、CrossValidated、Quora)
  • 自由职业网站(例如 UpWork)
  • 聚会

我建议搜索标准机器学习数据集的存储库。

例如

尝试 Google 的数据集搜索

也许你需要为你的特定问题收集自己的数据集?

我有一些列出热门数据集的博客文章,例如

除此之外,我建议通过 Google 搜索。

我建议在 Google Scholar 上搜索

你是否正在寻找特定机器学习方法的示例代码?

也许我的博客上有一篇带有示例代码的教程。搜索博客

如果博客上没有示例,我无法随意告诉你到哪里获取代码。

尽管如此,我这里有一些想法

建立一个完成的机器学习项目组合是利用过去工作开展新项目并展示你不断增长的技能的绝佳方式。

我在这里详细讨论了这一点

我建议公开建立你的作品集,一些你可能这样做的地方包括

  • 网站
  • 博客
  • GitHub
  • YouTube
  • SlideShare
  • 脸书
  • 领英

选择一个你最舒适的媒体和地点。

如果你拥有该位置,例如你自己的网站,可能会更好,这样你就可以更好地控制你作品集的未来。

我希望最终会写出来。

在此之前,请联系我,让我知道你想让我涵盖的主题。

电子邮件问题 (15)

是的,你可以更改用于接收机器学习精通邮件的电子邮件地址。

联系我,告诉我你的旧电子邮件地址和新电子邮件地址。

是的。

请使用联系表格

它会直接进入我的收件箱。

我通常每天处理一到两次批量电子邮件。这意味着我可能在12到24小时内不会回复。

我每天通常会收到数百封电子邮件,所以请保持简短。不要发送长篇大论、代码转储或冗长的问题列表。请每封电子邮件只问一个问题。

不行。

抱歉,我无法提供每周一次或其他间隔的邮件合并功能。

不行。

我担心疯狂的初学者会利用这个列表订阅所有内容,然后抱怨我发送了太多电子邮件。

在网站上找到你最想学习的一个主题,然后订阅该电子邮件课程。

抱歉,我没有重新发送电子邮件的功能。

每门电子邮件课程也都可以作为博文提供,搜索博客即可找到并访问所有课程。

是的。

如果你回复我的一封邮件,我会阅读并回复。

我每天确实会收到数百封邮件,所以请不要给我发送长篇大论或问题列表。

请每封邮件只问一个问题。

请保持友善。

我有一个每周电子邮件通讯,列出所有新的博客文章、教程以及即将出版书籍的消息。

你可以在这里注册

如果你一时冲动订阅了一堆课程怎么办。

没问题,你可以自己管理你的订阅。

  1. 点击我发送的任何电子邮件中的“退订”链接。
  2. 这将带你到一个显示“很抱歉看到你离开!”的网页。
  3. 点击标题为“管理我的订阅”的链接。
  4. 这将带你到一个名为“我的活动”的页面。
  5. 通过点击每个已订阅或以前订阅的课程旁边的按钮,选择你希望订阅和不希望订阅的电子邮件课程。
  1. 点击我发送的任何电子邮件中的“退订”链接。

我看到初学者常犯的一个大错误是他们同时注册多个课程。如果你这样做,你会收到来自每个课程的电子邮件。

我强烈建议不要这样做!

一次只参加一门电子邮件课程。

选择一个主题进行专注,并且只参加该主题的一门电子邮件课程。

我使用一个名为 Drip 的平台来管理我的电子邮件课程和营销自动化。

你可以在这里了解更多

也许你同时订阅了太多课程?

我有一些电子邮件课程。

  • 我的主课程每周发送大约3封电子邮件。
  • 我的短期课程通常每周发送一封电子邮件,持续一到两周,具体取决于课程。
  • 我的时事通讯每周发布一次。

如果你正在学习我的电子邮件课程之一,你还会收到时事通讯。

我使用电子邮件课程是因为,通常我的读者非常喜欢它们。

我每天都会收到大量的回复,内容是“谢谢”或“完成了”或“我可以提前得到下一课吗?”。

你可以精细控制你订阅的课程。你必须选择注册它们,然后你可以随时取消订阅特定课程或任何课程。

抱歉,我没有能力通过 Google+、Facebook、Twitter 和 LinkedIn 等社交媒体渠道提供帮助。

如果你有问题,请直接联系我

我不会与任何第三方分享或出售你的电子邮件地址。

我的业务建立在我与读者和客户的信任之上,这种信任对我来说非常重要。

你的电子邮件地址仅用于发送我的网站的电子邮件课程材料和时事通讯。

网站问题 (17)

Machine Learning Mastery 总部设在澳大利亚,尽管我们在欧盟也有读者和客户。因此,我已尽最大努力诚信地使 Machine Learning Mastery 符合《通用数据保护条例》(GDPR)。

你可以在此处访问本网站的政策

如果您对 Machine Learning Mastery 上的个人信息或 GDPR 合规性有疑问,请直接联系我。

不行。

我的网站上没有广告,除了我自己的书籍和课程链接。

这是我建立网站时仔细做出的决定。

谢谢你的提议,我受宠若惊。

请不要将我的帖子或书籍翻译成其他语言。

我仔细考虑过这一点

  • 我更喜欢完全掌控我的内容。
  • 我没有能力设置和处理这笔交易。
  • 我经常更新我的资料。

不行。

抱歉,我不接受客座文章。

是的。

请在博文评论中提出你的问题。

不行。

我不进行链接交换。

我链接到我认为会在我撰写每个教程或帖子时帮助我的读者学习机器学习的内容。

如果你认为你确实对某个帖子有相关的补充,那么请在该帖子的评论中发布。这是为正在进行的讨论做出贡献的绝佳方式。

我有一个博客文章的RSS订阅源,你可以通过以下URL访问它

感谢您对我的教程的兴趣。

你可以像打印其他网页一样从网页打印教程。

我在页面右下角确实有一个注册表单,称为浮动表单。打印时,这可能会遮挡打印输出。

这可以轻松移除。只需提交包含您的电子邮件地址的表单即可。该表单将消失,并且不会再在我的网站上的任何教程中显示。

本网站教程中的示例代码使用一个特殊的插件,让你能够轻松地将代码复制并粘贴到你的编辑器中。

重要的是,当您从教程中复制代码时,要保留空格。这是因为在 Python 等语言中,制表符和换行符是语言的一部分,必须与教程代码中出现的完全一致,这样示例才能正确工作。

当您将鼠标悬停在代码框上时,会出现一个带有按钮的小菜单。

例如

点击此菜单最右侧第二个按钮。

它看起来像两张纸。

例如

这将突出显示或选择代码框中的所有代码。

复制突出显示的代码。如何复制选定代码的具体操作取决于你的平台。

  • 右键单击代码并点击“复制”。
  • 或者,如果在 Windows 或 Linux 上:按住“control”键并按键盘上的“c”键。
  • 或者,如果在 Mac 上:按住“command”键并按键盘上的“c”键。

现在你的代码已复制到剪贴板中。

打开你的编辑器并将剪贴板中的代码粘贴到编辑器中。

这将因你的平台和编辑器而异。确保你的编辑器中打开了一个新文档

  • 右键单击编辑器中的新文档,然后单击“粘贴”。
  • 或者,如果你的编辑器有菜单,点击“编辑”菜单,然后点击“粘贴”。
  • 或者,如果在 Windows 或 Linux 上:点击新文档,按住“control”键,然后按“v”键。
  • 或者,如果在 Mac 上:点击新文档,按住“command”键,然后按“v”键。

现在你的编辑器中将包含所有空白都保留的代码。

现在你可以运行代码示例了。确保代码示例依赖的任何数据文件都与代码文件在同一个目录中。

感谢您有兴趣引用我的资料。

你可能希望包含以下字段

  • 作者姓名,例如“Jason Brownlee”。
  • 教程或书籍的标题,例如“深度学习与时间序列预测”
  • 出版商名称,例如“Machine Learning Mastery”。
  • 教程或书籍的网址
  • 你访问或复制代码的日期

例如

Jason Brownlee, Deep Learning with Time Series Forecasting, Machine Learning Mastery, 可从 https://machinelearning.org.cn/machine-learning-with-python/ 获取,访问日期为 2018 年 11 月 6 日。

此外,如果你的作品是公开的,请联系我,我很乐意出于普遍兴趣而查看它。

太好了!我希望帖子尽善尽美。

请告诉我。

联系我或在帖子中留言。

我会尽快修复该帖子。

感谢您的询问。

也许你正在考虑建立自己的网站。如果是这样,祝你好运!

以下是我用来运行此网站的软件摘要

每个教程都链接到所使用的数据集。

每本书都提供代码和数据集作为赠品,请参阅“code/”目录。

我在 GitHub 上有每个使用过的数据集的副本。原因是有时托管数据集的第三方网站会宕机,或下架数据集(就像最近发生的那样)。

你可以在这里访问它们

这个博客上的所有评论都由我审核。

我阅读每一条评论,如果可以的话会回复。

我通常每天批量审核评论一次。请耐心等待。

审核通过后,您的评论将显示在博客上。

谢谢你的注意。

机器学习有时可能是一个枯燥的话题。我使用色彩鲜艳的照片,大部分是自然风光,为教程增添一些活力。

这些照片提醒着我,也提醒着你,外面有一个更广阔的世界。

很抱歉听到你在运行代码示例时遇到问题。

所有代码教程在发布前都经过测试,并经常更新。

我有一些建议可以尝试:

  • 你是否能确认你的库是最新的(例如,检查版本号)?
  • 你是否能确认你准确地复制了所有代码(保留了空白)?
  • 你是否能确认你将所有必需的数据文件保存在与代码相同的文件夹中?
  • 你是否能确认数据文件的内容与教程的预期相符?
  • 你是否尝试过从命令行运行代码(例如,不是笔记本或IDE)?
  • 你是否尝试过在评论或StackOverflow上搜索类似错误?

如果你认为你发现了bug,请告诉我

很抱歉听到机器学习精通网站在你的国家被屏蔽了。

我努力让我的教程对每个人都可用,我没有任何政治立场。

尽管如此,我的网站在某些国家被屏蔽了。

任何对我的网站的访问阻止都由你的政府或你的互联网服务提供商控制。

一个例子是伊朗阻止了对我的网站的访问。

也许你可以向你的政府或你的互联网服务提供商查询他们为什么阻止访问?

客户问题 (78)

感谢您的兴趣。

抱歉,我不支持我的书籍的第三方经销商(例如在其他书店转售)。

我的书是自出版的,我将我的网站视为一个小型精品店,专门为那些对应用机器学习深感兴趣的开发者服务。

因此,我更喜欢自己控制书籍的销售和营销。

很抱歉,我不支持在捆绑包内更换书籍。

所提供捆绑包中的书籍组合是固定的。

我的电子商务系统不够先进,不支持临时捆绑。我相信您能理解。您可以在这里查看完整的书籍和捆绑包目录

如果您已经购买了一个捆绑包,并希望更换其中的一本书,那么非常抱歉,我不支持换书或部分退款。

如果您不满意,请直接联系我,我可以为您安排退款。

感谢您的兴趣。

很抱歉,我无法为您创建定制的书籍捆绑包。这会给我带来维护上的噩梦。我相信您能理解。

我的电子商务系统不是很先进。它不支持临时捆绑书籍或点菜式订购书籍。

我确实有一些现有的书籍捆绑包,我认为它们搭配得很好。

您可以在这里查看我所有可用的书籍和捆绑包目录

抱歉,我不销售我的书的实体版。

所有的书籍和捆绑包都是 PDF 文件格式的电子书。

这是我经过深思熟虑后有意为之的决定

  • 这些书充满了必须在电脑上完成的教程。
  • 这些书假定您正在实践教程,而不是被动阅读。
  • 这些书旨在在电脑屏幕上阅读,旁边放着代码编辑器。
  • 这些书是实践手册,而不是用作参考书放在书架上。
  • 这些书会频繁更新,以跟上领域和 API 的变化。

我希望这解释了我的理由。

如果您真的想要实体版,您可以购买书籍或捆绑包,并为个人使用打印一份。PDF 文件上没有数字版权管理(DRM)来阻止您打印它们。

抱歉,我无法为您创建采购订单或填写您的采购文件。

您可以使用自助购物车,通过信用卡或 PayPal 完成购买。

在您完成购买后,我可以为您准备一份 PDF 发票,用于报税或其他目的。

抱歉,不行。

我无法进行部分退款。我的电子商务系统不支持此功能。

如果您对您的购买真的不满意,请联系我获取全额退款。

我为我的书负责,我知道这些教程行之有效,并且已经帮助了成千上万的读者。

很抱歉您想退款。

直接联系我并提供您的购买详情:

  • 书名:您购买的书籍或捆绑包的名称。
  • 您的电子邮件:您用于购买的电子邮件地址(注意,这可能与您通过 PayPal 付款时使用的电子邮件地址不同)。
  • 订单号:您购买收据邮件中的订单号。

然后我会为您安排退款。

我很想知道为什么这本书不适合您。

如果您能告诉我任何有助于改进我的材料的信息,我将不胜感激。

我脸皮厚,所以请坦诚相告。

每本书都提供样章。

每本书都有自己的网页,您可以从目录中访问它们。

在每本书的页面上,您可以获取样章。

  1. 在书的页面上找到标题为“下载您的样章”的部分。
  2. 点击链接,提供您的电子邮件地址并提交表单。
  3. 检查您的电子邮件,您会收到一个下载样章的链接。

如果您在此过程中遇到问题或找不到邮件,请联系我,我会直接将 PDF 发送给您。

是的。

我可以提供一份发票,供您向公司报销或用于税务目的。

直接联系我并提供您的购买详情:

  • 您购买的书籍或捆绑包的名称。
  • 您用于购买的电子邮件地址。
  • 理想情况下,是您购买收据邮件中的订单号。
  • 您希望在发票上显示的全名/公司名称/公司地址。

我会为您创建一份 PDF 发票并通过电子邮件发送给您。

抱歉,由于过去有人滥用此特权,我不再分发书籍的评估副本。

如果您是教师或讲师,我很乐意为您提供学生折扣。

请直接联系我,我可以为您安排折扣。

抱歉,我不提供 Kindle (mobi) 或 ePub 版本的书籍。

这些书仅以 PDF 文件格式提供。

这是我经过深思熟虑的设计。我的理由如下:

  • 我使用 LaTeX 来排版文本和代码,以提供专业的外观,我担心电子书阅读器会搞砸这一点。
  • 增加支持的格式会带来维护上的麻烦,这将占用大量时间,影响我更新书籍和创作新书。
  • 最关键的是,在电子阅读器或 iPad 上阅读与选择 PDF 格式所支持的书籍与代码编辑器并排打开的方法背道而驰。

我的材料是实践手册,旨在在电脑上打开,旁边放着文本编辑器和命令行。

它们不是离开电脑阅读的教科书。

抱歉,我所有的书都是自出版的,没有 ISBN。

感谢您对我的书感兴趣。

很抱歉您负担不起我的书,或者在您的国家无法购买。

我不赠送免费的书籍副本。

我已经提供了大量关于应用机器学习的免费资料。

您可以在这里获取最好的免费资料:

也许可以。

我为以下人群提供书籍折扣:

  • 学生
  • 教师
  • 退休人员

如果您属于这些群体之一并且想要折扣,请联系我并提出请求

抱歉,书籍和捆绑包仅供个人购买。

我不回复信息请求书或类似文件。

也许可以。

我支持通过 PayPal 和信用卡支付。

您或许可以设置一个能使用您借记卡的 PayPal 账户。我建议您联系 PayPal 或阅读他们的文档。

抱歉,不行。

我目前不支持微信支付或支付宝。

我只支持通过 PayPal 和信用卡支付。

是的,您可以为您个人兴趣打印购买的 PDF 书籍。

PDF 上没有数字版权管理(DRM)来阻止您打印它们。

请不要分发您购买书籍的打印副本。

您可以查看任何一本书的目录。

我在每本书的页面上都提供了两份目录。

具体来说:

  1. 一份书面摘要,列出了书中的教程/课程及其顺序。
  2. 一份从 PDF 中截取的目录截图。

如果您找不到目录,请在页面上搜索标题为“目录”的部分。

不行。

我只支持通过 PayPal 或信用卡支付。

是的。

如果您购买了一本书或一个捆绑包,后来决定想升级到超级捆绑包,我可以为您安排。

联系我并告诉我您想升级,以及您已经购买了哪些书籍或捆绑包,以及您购买时使用的电子邮件地址。

我会为您创建一个特别优惠码,您可以用它来从超级捆绑包的价格中扣除您已购买书籍和捆绑包的价格。

我很高兴您在开发自己的课程材料时使用我的部分材料,例如课堂讲座的幻灯片或家庭作业练习。

如果您免费分享我的材料或逐字使用,我会不高兴。这将构成版权侵犯。

我网站上和我书中的所有代码都是为教育目的而开发和提供的。我对代码、它可能做什么或您可能如何使用它不承担任何责任。

如果您使用我的材料进行教学,请引用来源,包括:

  • 作者姓名,例如“Jason Brownlee”。
  • 教程或书籍的标题。
  • 网站名称,例如“Machine Learning Mastery”。
  • 教程或书籍的 URL。
  • 您访问或复制该代码的日期。

例如

  • Jason Brownlee, Python 机器学习算法, Machine Learning Mastery, 网址:https://machinelearning.org.cn/machine-learning-with-python/, 访问于 2018 年 4 月 15 日。

另外,如果您的作品是公开的,请联系我,我很乐意出于一般兴趣看看它。

感谢您的询问。

抱歉,不行。

目前我更倾向于完全控制我的内容。

抱歉,不行。

我的书是自出版的,只能在我的网站上购买。

通常不提供。

我的书中没有练习或作业。

我确实在一些书中有端到端的项目,但它们是以教程形式呈现的,我会引导您完成每一步。

书的章节是作为独立的教程编写的,有特定的学习成果。在教程结束时,您将学会如何做某件事。

有些书有一个名为“扩展”的部分,提供了一些以更高级的方式修改教程中代码的想法。它们就像自学练习。

抱歉,我没有为我的书籍或电子邮件课程提供结业证书。

抱歉,新书不包含在您的超级捆绑包中。

我每隔几个月会发布新书,并在那时开发新的超级捆绑包。

所有现有客户都可以以折扣价提前获得新书。

请注意,您可以在超级捆绑包中获得所有书籍的免费更新。这包括错误修复、API 更改,有时甚至包括新章节。对于重大的图书更新,我会发送电子邮件给客户,或者您可以随时联系我并索取最新版本的图书。

不行。

我有一些书不需要任何编程技能,例如:

其他书籍确实有特定编程语言的代码示例。

您必须了解该编程语言的基础知识,例如如何安装环境以及如何编写简单的程序。我不教编程,我教的是面向开发者的机器学习。

您不需要是一个好的程序员。

话虽如此,我确实为那些可能不熟悉特定语言的开发者提供了关于如何高效设置环境的教程,甚至还有编程语言的速成课程。

不行。

我的书不涵盖机器学习方法的理论或推导。

这是有意为之的。

我的书专注于应用机器学习的实际问题。具体来说,就是算法如何工作以及如何有效地使用现代开源工具。

如果您对理论和方程推导感兴趣,我推荐一本机器学习教科书。一些涵盖理论的优秀机器学习教科书示例包括:

我通常不进行促销。

如果我确实有特别活动,比如在新书发布前后,我只向过去的客户和我邮件列表上的订阅者提供。

我确实提供书籍捆绑包,为一系列相关书籍提供折扣。

我为学生、教师和退休人员提供折扣。请联系我了解折扣详情。

抱歉,我没有视频。

我只有文本格式的教程课程和项目。

这是有意为之。我曾经有过视频内容,但我发现完成率要低得多。

我希望您能将材料付诸实践。我发现基于文本的教程是实现这一目标的最佳方式。通过基于文本的教程,您必须阅读、实现并运行代码。

而通过视频,您只是被动观看,不需要采取任何行动。视频是娱乐或信息娱乐,而不是富有成效的学习和工作。

在阅读并实践教程之后,您更有可能运用所学知识。

是的,我提供 90 天无理由退款保证。

我为我的书负责。它们包含了我对特定机器学习主题的最佳知识,并且每本书都经过数万名读者的阅读、测试和使用。

尽管如此,如果您发现我的某本电子书不适合您,我会全额退款。

没有实体书,因此不需要运输。

所有书籍都是电子书,您在完成购买后可以立即下载。

我支持通过 PayPal 或信用卡从任何国家购买。

是的。

我建议使用在 TensorFlow 2.2(或更高版本)上运行的独立 Keras 2.4(或更高版本)。

博客上的所有教程都已更新,使用在 Tensorflow 2 上运行的独立 Keras。

所有书籍都已更新,使用相同的组合。

我还不推荐使用作为 TensorFlow 2 一部分的 Keras(例如 tf.keras)。它太新了,新事物总有问题,我正在等待尘埃落定。独立 Keras 已经运行多年,并且继续表现出色。

有一种情况是教程不支持 TensorFlow 2,因为这些教程使用了尚未更新以支持 TensorFlow 2 的第三方库。具体来说,是使用 Mask-RCNN 进行对象识别的教程。一旦第三方库更新,这些教程也将被更新。

这本书《Long Short-Term Memory Networks with Python》并不侧重于时间序列预测,而是侧重于 LSTM 方法在各种序列预测问题中的应用。

这本书《Deep Learning for Time Series Forecasting》展示了如何为单变量、多变量和多步时间序列预测问题开发 MLP、CNN 和 LSTM 模型。

迷你课程是关于一系列机器学习主题的免费课程,通过电子邮件、PDF 和博客文章提供。

迷你课程的特点是:

  • 简短,通常为 7 天或 14 天。
  • 简洁,通常每节课给出一个技巧或代码片段。
  • 有限,通常范围较窄,仅限于几个相关领域。

电子书则在许多相同主题上提供完整的培训课程。

电子书的特点是:

  • 更长,通常包含 25+ 个完整的教程课程,每个课程最多需要一小时完成。
  • 完整,为每个课程提供温和的介绍,并包括完整的可用代码和进一步阅读材料。
  • 广泛,涵盖了该主题所需的所有内容,以便快速上手并将技术应用到您自己的项目中。

迷你课程旨在让您快速获得结果。如果您想了解更多信息或更完整的代码示例,可以购买相关的电子书

这本书《Master Machine Learning Algorithms》适合程序员和非程序员。它讲解了 10 种顶级机器学习算法的工作原理,并提供算术和电子表格形式的示例,而非代码。重点在于理解每种模型如何学习和进行预测。

这本书《Machine Learning Algorithms From Scratch》适合通过编写代码来学习的程序员。它提供了如何实现顶级算法的分步教程,以及如何加载数据、评估模型等。它对算法的工作原理介绍较少,而是完全专注于如何在代码中实现它们。

这两本书可以相互补充。

这些书是我博客内容的浓缩和更便捷的版本。

我将我的书设计成课程和项目的结合体,教您如何使用特定的机器学习工具或库,然后将其应用于真实的预测建模问题。

这些书会进行更新,包括错误修复、API 变更的更新以及新章节的增加,这些更新是完全免费的。

我确实会将一些书的章节作为示例发布在博客上,但它们与周围的章节或书提供的叙事没有联系,也不提供独立的代码文件。

每本书都附带了书中使用的所有源代码文件,您可以将它们用作配方来快速启动您自己的预测建模问题。

我的书是实践手册,不是教科书。

它们没有深入的理论解释,只有可行的例子,这些例子高度专注于您需要知道的信息,以便将机器学习应用到您的项目中。

几乎没有数学,没有理论或推导。

我的读者非常欣赏我材料中使用的自上而下而非自下而上的方法。这是我收到反馈最多的一个方面。

我的书并不适合所有人,它们是为需要快速获得结果的从业者精心设计的。

书中展示的每个例子都提供了一个代码文件。

每章使用的数据集文件也随书提供。

代码和数据集文件作为您 .zip 下载包的一部分,位于 code/ 子目录中。代码和数据集按子目录组织,每个有代码示例的章节都有一个子目录。

如果您丢失了 .zip 下载包,您可以联系我,我可以重新发送一份包含更新下载链接的购买收据邮件。

电子书可以直接从我的网站上购买。

  1. 首先,找到您希望购买的书籍或捆绑包,您可以在这里查看完整的目录
    1. Machine Learning Mastery 书籍
  2. 点击您想购买的书籍或捆绑包,进入该书的详情页面。
  3. 点击书籍或捆绑包的“立即购买”按钮,进入购物车页面。
  4. 在购物车中填写您的详细信息和支付信息,然后点击“下单”按钮。
  5. 完成购买后,您将收到一封包含下载您的书籍或捆绑包链接的电子邮件。

所有价格均为美元(USD)。

书籍可以通过 PayPal 或信用卡购买。

Machine Learning Mastery 上的所有价格均为美元。

可以使用支持国际支付的 PayPal 或信用卡进行支付(例如,大多数信用卡都支持)。

您不必明确地将您的货币兑换成美元。

当您使用 PayPal 或信用卡付款时,货币转换会自动进行。

填写并提交您的订单表后,您将能够立即下载您的购买商品。

您的网页浏览器将被重定向到一个网页,您可以在那里下载您的购买商品。

您还会收到一封包含下载您购买商品链接的电子邮件。

如果您丢失了邮件或邮件中的链接已过期,请联系我,我会重新发送包含更新下载链接的购买收据邮件。

在您完成购买后,您会收到一封包含下载您的捆绑包链接的电子邮件。

下载内容将包括书籍以及任何赠品材料。

要在购物时使用折扣码,也称为优惠码折扣券,请按照以下步骤操作:

1. 在结账页面的“折扣券”字段中输入折扣码文本。

 

注意,如果您在结账页面上没有看到名为“折扣券”的字段,则表示该产品不支持折扣。

2. 点击“应用”按钮。

3. 然后您会看到一条消息,表明折扣已成功应用于您的订单。

 

 

注意,如果您使用的折扣码已失效,您会看到一条消息,表明折扣未能成功应用于您的订单。

 

没有实体书,因此不需要运输。

所有书籍都是电子书,您在完成购买后可以立即下载。

我建议每天读一章。

保持学习势头很重要。

有些读者在一个周末就读完一本书。

大多数读者通过在晚上和周末学习,几周内就能读完一本书。

您将立即获得您的书。

在您完成并提交付款表单后,您将立即被重定向到一个带有下载链接的网页,以下载您的购买。

您还将立即收到一封包含下载链接的电子邮件。

你应该按什么顺序读这些书?

这是一个很好的问题,我最好的建议如下:

  • 考虑从一本您最感兴趣的主题的书开始。
  • 考虑从一本您可以立即应用到项目上的主题的书开始。

另外,请考虑您不需要阅读所有的书,也许一部分书就能让您获得您需要或想要的技能。

尽管如此,一个建议的阅读顺序如下:

    1. 机器学习概率
    2. 机器学习的统计方法
    3. 机器学习线性代数
    4. 机器学习优化
    5. 机器学习微积分
    6. 数据科学入门指南
    7. 精通机器学习算法
    8. 从零开始实现机器学习算法
    9. 用于机器学习的 Python
    10. 使用 Weka 精通机器学习
    11. 精通 Python 机器学习
    12. 精通 R 语言机器学习
    13. 新一代数据科学
    14. 机器学习数据准备
    15. 使用 Python 处理不平衡分类问题
    16. 使用 Python 进行时间序列预测
    17. 使用 Python 实现集成学习算法
    18. 使用 Python 实现 XGBoost
    19. 使用 Python 进行深度学习
    20. 使用 PyTorch进行深度学习
    21. 使用 Python 构建长短期记忆网络
    22. 用于自然语言处理的深度学习
    23. 使用 Hugging Face Transformers 进行自然语言处理
    24. 用于计算机视觉的深度学习
    25. OpenCV 中的机器学习
    26. 用于时间序列预测的深度学习
    27. 更好的深度学习
    28. 使用 Python 构建生成对抗网络
    29. 使用注意力机制构建 Transformer 模型
    30. 使用 ChatGPT 提高生产力(这本书可以按任何顺序阅读)
    31. 使用 Stable Diffusion 精通数字艺术(这本书可以按任何顺序阅读)

希望这能有所帮助。

抱歉,我没有为图书馆购买我的书籍或捆绑包的许可证。

这些书仅供个人使用。

通常没有。

多用户许可证会给我带来维护上的麻烦,抱歉。这会占用我阅读、写作和帮助读者的时间。

如果您有大订单,例如为一个班级的学生或一个大团队购买,请联系我,我们会商量一个解决方案。

不行。

我会频繁更新书籍,您可以随时获取最新版本。

要获取最新版本的书籍,请直接联系我,并提供您的订单号或购买时使用的电子邮件地址,我可以重新发送您的购买收据邮件,其中包含更新的下载链接。

抱歉,我不维护公开的变更日志勘误表来记录书中的变更。

没有实体书,因此不需要配送。

所有书籍都是 PDF 格式的电子书,您在完成购买后可以立即下载。

您会收到一封包含下载链接的电子邮件。您也可以随时联系我获取新的下载链接。

我支持通过 PayPal 或信用卡从任何国家购买。

我最好的建议是,从一本您可以立即应用的主题的书开始。

除此之外,选择一个您最感兴趣的主题。

如果您不确定,或许可以尝试学习一些免费教程,看看您倾向于哪个领域。

通常,我建议专注于端到端地解决预测建模问题的整个过程。

我有三本书,通过三个顶级的开源平台,向您展示如何做到这一点。

这些都是很好的入门选择。

您随时可以回过头来,选择一本关于算法的书,以便更深入地了解特定方法的工作原理。

感谢您的兴趣。

您可以在这里查看我所有书籍和捆绑包的完整目录。

感谢您的询问。

我尽量不为太遥远的未来规划书籍。我尝试写那些被问得最多的,或者我看到最多误解的主题。

如果您希望我更多地撰写某个主题,我很乐意知道。

直接联系我,告诉我您感兴趣的主题,甚至您希望我写哪种类型的教程。

联系我,并告诉我您认为用来购买的电子邮件地址(或多个地址)。

我可以查询您的购买记录,并重新发送购买收据给您,以便您重新下载您的书籍和捆绑包。

所有价格均为美元(USD)。

对于PayPal购买,所有货币转换由PayPal处理;对于信用卡购买,则由Stripe和您的银行处理。

您的购买下载链接可能会在几天后过期。

这是一种安全预防措施。

联系我,我会重新给您发送带有更新下载链接的购买收据。

Python深度学习》这本书可以看作是《Python长短期记忆网络》的预备知识。它教您如何开始使用Keras,以及如何开发您的第一个MLP、CNN和LSTM。

Python长短期记忆网络》这本书深入探讨了LSTM,教您如何准备数据、如何开发一系列不同的LSTM架构、参数调整、更新模型等等。

这两本书都专注于使用Keras库在Python中进行深度学习。

Python长短期记忆网络》这本书主要关注如何为序列预测开发一系列不同的LSTM网络。

这本书《Deep Learning for Time Series Forecasting》侧重于如何使用一套不同的深度学习模型(MLPs、CNNs、LSTMs 和混合模型)来解决一套不同的时间序列预测问题(单变量、多变量、多步和组合)。

LSTM这本书只教LSTM,不侧重于时间序列。而时间序列深度学习这本书则侧重于时间序列,并教授如何使用包括LSTM在内的多种不同模型。

Python长短期记忆网络》这本书专注于如何实现不同类型的LSTM模型。

自然语言处理深度学习》这本书专注于如何使用包括LSTM在内的多种不同网络来解决文本预测问题。

LSTM这本书可以为NLP这本书提供支持,但它不是必需的预备知识。

您可能需要“Machine Learning Mastery”公司的企业或公司税号用于您自己的税务目的。例如,这在欧盟公司中很常见。

Machine Learning Mastery 公司在波多黎各运营。

因此,公司没有欧盟的增值税(VAT)识别号或适用于您所在国家或地区的类似税号。

公司确实有一个公司编号。详细信息如下:

  • 公司名称:Zeus LLC
  • 公司编号: 421867-1511

Linux、MacOS 和 Windows。

在《精通机器学习算法》中没有代码示例,因此没有使用任何编程语言。

书中通过基本算术描述算法并总结其工作原理。算法的行为也在Excel电子表格中进行了演示,这些表格随书提供。

这是一本学习算法工作原理的绝佳书籍,不会被理论或编程语法所分心。

如果您有兴趣通过从头开始编码(使用Python编程语言)来学习机器学习算法,我推荐另一本书:

我使用文本编辑器(特别是Sublime)来编写书籍的内容(文字和代码)。

我使用LaTeX对书籍进行排版并创建PDF。

所有的书都经过测试,可以与Python 3(例如3.5或3.6)一起使用。

大多数书籍也经过测试,可以与Python 2.7一起使用。

在可能的情况下,我建议使用最新版本的Python 3。

在您填写并提交订单后,会发生两件事:

  1. 您将被重定向到一个网页,在那里您可以下载您购买的商品。
  2. 您会收到一封电子邮件(发送到您在订单中使用的邮箱地址),其中包含下载您购买商品的链接。

在您完成购买后,浏览器重定向和电子邮件会立即发生。

您可以从网页或电子邮件中下载您购买的商品。

如果您找不到该电子邮件,或许可以检查一下其他邮件文件夹,例如“垃圾邮件”文件夹?

如果您有任何疑虑,联系我,我可以重新发送您的购买收据电子邮件及下载链接。

我确实会先在博客上测试我的教程和项目。这就像是创意的早期体验,其中许多并没有进入我的培训材料。

书中的大部分材料最初都以某种形式出现在我的博客上,后来经过提炼、改进并以章节格式重新包装。我发现这对于提高质量和修复错误有很大帮助。

书籍提供了更方便的材料包装,包括源代码、数据集和PDF格式。它们还包括对新API的更新、新章节、错误和拼写修正,以及直接与我联系以获得我能提供的所有支持和帮助。

我相信我的书以几十美元的价格提供了价值数千美元的教育。

它们是我数月甚至数年经验的结晶,浓缩在几百页精心制作且经过充分测试的教程中。

我认为对于希望快速掌握应用机器学习技能或在项目中使用机器学习的专业开发人员来说,它们是物超所值的。

此外,机器学习技能对您、对您的下一个项目、以及对您当前或未来的雇主价值几何?

尽管如此,如果您是学生,或者您不习惯北美、澳大利亚、英国及世界类似地区开发人员的高薪,我的书的价格可能看起来很贵。对此,我感到抱歉。

折扣

我确实为学生、教师和退休人员提供折扣。

联系我了解更多信息。

免费资料

我在我的博客上提供了大量免费内容,您可以在这里开始学习我最好的免费资料:

关于我的书籍

我的书是实战手册。

它们是为那些想知道如何使用特定库来实际解决问题并在工作中交付价值的开发人员准备的。

  • 我的书只引导您了解那些为了取得成果而必须知道的要素。
  • 我的书是PDF格式,并附带代码和数据集,专为方便您在电脑上阅读和实践而设计。
  • 我的书让您可以通过电子邮件直接联系到我(还有哪些书能提供这个?)。
  • 对于专业开发人员来说,我的书是一笔微小的业务开销,可以记入公司账目,并且在大多数地区可以抵税。

很少有机器学习培训材料专注于如何取得成果。

绝大多数资料都在重复同样的数学和理论,却忽略了您真正关心的一件事:如何在项目中使用这些方法。

与其他选项的比较

让我为您提供一些关于书籍定价的背景信息:

YouTube上有免费视频,博客上有免费教程。

有一些非常便宜的视频课程,教您一两个API的技巧。

  • 我的书教您如何使用一个库来端到端地完成一个项目并交付价值,而不仅仅是几个技巧。

一本机器学习教科书可能要花费50到100美元。

  • 我所有的书都比一般的机器学习教科书便宜,而且我期望您能更快地提高生产力。

一个训练营或其他线下培训可能花费1000多美元,并持续数天到数周。

  • 我所有书籍的捆绑包比这便宜得多,它们允许您按自己的节奏学习,并且捆绑包涵盖的内容比一般训练营更多。

抱歉,我的书不在像Amazon.com这样的网站上销售。

出于多种原因,我慎重决定不把我的书放在亚马逊上:

  • 亚马逊会从自出版书籍的销售价格中抽取65%,这会让我无法经营下去。
  • 亚马逊对销售页面和购物车体验的控制权很小。
  • 亚马逊不允许我通过电子邮件联系我的客户,并提供直接支持和更新。
  • 亚马逊不允许我以PDF格式向客户交付我的书,而PDF是我的客户在屏幕上阅读的首选格式。

我希望这能帮助您理解我的理由。

很抱歉听到您在购买书籍或捆绑包时遇到困难。

我使用Stripe处理信用卡支付,并使用PayPal服务来支持我网站上的安全加密支付处理。

客户遇到问题时一些常见的原因包括:

  • 您是否可以再次检查您的详细信息是否正确,以防有拼写错误?
  • 您是否可以尝试另一种支付方式,例如PayPal或信用卡?
  • 您是否可以联系您的银行,以防他们阻止了该交易?

我经常看到客户尝试使用不支持国际购买的国内信用卡借记卡进行支付。通过与您的银行沟通,这个问题很容易解决。

如果您仍然遇到困难,请联系我,我可以帮助进一步调查。

当您在我的网站上购买书籍并稍后查看您的银行对账单时,可能会看到一笔一两美元的额外小额费用。

这笔费用并非来自我的网站或支付处理商。.

相反,这笔费用是由您的银行、信用卡公司或金融机构添加的。这可能是因为您的银行对在线或国际交易收取额外费用。

这种情况很少见,但我以前见过一两次,通常发生在企业或大型公司机构使用的信用卡上。

我的建议是直接联系您的银行或金融机构,请他们解释额外费用的原因。

如果您需要我这边的支付交易副本(例如,来自支付处理商的截图)或PDF税务发票,请直接联系我

我免费赠送了很多内容。事实上,是大部分内容。

帮助经济不宽裕的学生和从业者对我来说很重要,因此我提供了大量的免费内容。

您可以通过以下方式获取免费内容:

我对此进行了深思熟虑,我销售机器学习电子书有几个重要原因:

  • 我用收入来支持网站和所有非付费用户。
  • 我用收入来养家糊口,以便我能继续创作内容。
  • 为教程付费的从业者更有可能认真学习并学到东西。
  • 我的书目标读者是更有可能负担得起这些材料的职业人士。

是的。

您购买的书籍或捆绑包中的所有书籍更新都是免费的。

书籍通常每隔几个月更新一次,以修复错误、拼写问题并跟上API的变化。

随时联系我,查询是否有更新。请告诉我您拥有的书籍版本(版本号列在版权页上)。

是的。

如有任何关于机器学习或书籍的问题,请随时联系我

请一次只问一个问题。

此外,每本书的最后一章都介绍了如何获得更多帮助和进一步阅读的建议,并指出了您可以用来获取更多帮助的资源。

是的,这些书可以帮助您找到工作,但只是间接的。

找到工作取决于您自己。

这是一个寻找职位空缺的组织与拥有技能和背景的您之间的匹配问题。

话虽如此,有些公司更看重您能为业务带来的价值,而不是您的学位。通常,这些是较小的公司和初创企业。

您可以通过学习并精通端到端解决预测建模问题来专注于提供机器学习价值。您可以通过建立一个已完成项目的机器学习作品集来展示这项技能。

我的书正是为了帮助您实现这些目标而设计的。它们准确地教您如何使用开源工具和库在预测建模项目中取得成果。

需要更多帮助吗?

我在这里帮助您在应用机器学习方面变得出色。

如果您仍有问题并需要帮助,您有以下选择

Machine Learning Mastery 是 Guiding Tech Media 的一部分,Guiding Tech Media 是一家领先的数字媒体出版商,专注于帮助人们了解技术。访问我们的公司网站以了解更多关于我们的使命和团队的信息。