TowardsDataScience 博客中文翻译 2016~2018(一百九十一)

原文:TowardsDataScience Blog

协议:CC BY-NC-SA 4.0

从零开始的机器学习:第 4 部分

原文:https://towardsdatascience.com/machine-learning-from-scratch-part-4-10117c005a28?source=collection_archive---------9-----------------------

功能和分类

目录

Changelog:我在第 2 部分关于集合的讨论中添加了一些句子。

修改后的文本提到集合用大写字母表示,尤其是 S ,而小写字母用于集合成员。比如我们可以把冰淇淋基本口味的集合, {香草、草莓、巧克力} 称为 S

此外,更新后的部分引入了集合成员和集合大小的表示法。元素 x 属于集合 S 的事实被写成 x ∈ S 。比如我们有:香草∈ S 。器械组名称周围的竖线表示其大小。对于基本口味的设置,我们有 |S| = 3

功能

函数是机器学习的核心。

在项目开始时,业务目标是根据功能来指定的。

在项目过程中,几乎每一步都要用到函数来处理数据、发现模式和评估系统的性能。

在项目结束时,最终交付给客户的是另一个功能。可交付物可以用编程语言编码,或者采用几个低级功能组合的形式,但它仍然是一个功能。

函数将输入映射到输出

许多读者将熟悉数学和/或编程中的函数。

数学上,函数指定一个集合中的元素如何与另一个集合中的元素相关联。

程序化,一个函数处理一个输入生成一个输出。

下图结合了两种定义的各个方面:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Fig. 4.1: Edited version of a graphic released into the public domain by Wvbailey

这两个定义是一致的。[1]函数的可接受输入属于一个集合,而函数生成的输出属于另一个集合。函数定义了我们如何从一个到另一个。

这就是关于函数本质的所有知识。

作为未来的预览,我将提到机器学习中心功能的输入是上次讨论的对象的表示(例如,像素强度和某些单词的存在或不存在)。函数的输出是我们感兴趣的目标的预测值。

注释

为了从数学上定义一个函数,我们需要指定两件事:

  1. 涉及到的集合
  2. 一个集合中的元素映射到另一个集合中的元素的规则。

函数中的集合

函数 f 将集合 A 中的元素映射到集合 B 中的元素的事实被写成 f: A → B

A 和 B 这两组分别称为共域。在许多情况下,它们可以引用同一个集合。

本符号中使用的字母( fAB) 可以理解为占位符。我们会经常使用不同的名字。

绘图

功能 f 的输入通常用字母 x 表示。在机器学习的上下文中, x 通常指代表一个对象的数组。

字母 y 表示功能的输出。我们将使用字母 y 来表示预测。

将这些积木组合起来,下面的等式简单地陈述了 y 是函数 f 对输入 x 的应用的输出: f(x) = y

功能名称

在许多情况下,我们需要引用不止一个函数。为了将它们分开,可以采用以下命名策略之一:

  • 字母表中的其他字母,尤其是 gh
  • 下标(或上标),如 f_1f_2 等。
  • 单词或单词缩写:如增量inc

简单的例子

考虑名为 fahrenheit_to_celsius 的函数的自我描述示例。

鉴于在实验室中已经达到了数万亿华氏度的温度[2],我认为用这组实数来表示这个函数是公平的。在集合的层次上,我们可以写:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在单个元素的层次上,我们有:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

使用强调数学和编程之间等价的风格,这个函数对应于下面的 Python 代码[3]:

实值函数

为了我们的目的,一个标量是一个实数【4】,或者换句话说,是实数ℝ.集合的一个成员或者,我们可以把标量想象成一个只有一个条目的向量,或者一个只有一行一列的矩阵。

一个实值向量由 d 实数组成,类似地属于集合ℝd.,一个实值矩阵有*m×n*实数项,属于ℝ(m×n)。最后,实值 3D 数组属于 R^(m x n x o)[5]。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Fig. 4.2

本系列中使用的所有数组和函数都是实值的。这包括第 3 部分提到的二进制向量。当然,0 和 1 也是实数。为了强调它们是实数,我们可以把它们写成 0.0 和 1.0。

监督学习问题

现在我们已经介绍了实值函数,我们可以开始讨论使用监督机器学习可以解决的问题。

在高层次上,分类和回归是有区别的。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Fig. 4.3

分类

分类任务中,我们试图预测的目标是离散的。它可以采用 n 值之一,或者换句话说,属于 n 类之一。

当感兴趣的对象被认为是类别的成员而不是的成员时,术语分类被用来代替分类。例如,一些作者更喜欢术语文档分类而不是文档分类

对于 n = 2 ,预测正确类别的任务称为二元分类。这两类通常被称为正类负类

n > 2 的术语为多级分类n 级分类。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Fig. 4

将电子邮件归类为值得或不值得放在收件箱中是一项二元分类任务。给来自朋友、同事、服务、广告商和其他团体的电子邮件分配几个可能的标签之一涉及多个类别。

区分良性和恶性皮肤病变是一项二元分类任务。另一方面,癌症的分期是一个多类分类问题。

可能性

一个区间*【a,b】是一组实数,包括 ab 之间的每一个数,包括端点。区间【0,1】*包含从 0 到 1 的所有实数。

A 概率p 是区间*【0,1】*的成员。

术语反概率是指 1-p 。显然,概率和反概率加起来是 1。

一个概率分布是一个向量,其 d 条目是总和为 1 的概率。我会把概率分布写成*【0,1]^d* 。

向量*【0.2,0.4,0.3,0.1】*是概率分布的一个例子。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Fig. 5

概率输出

分类输出是概率性的。

在二元分类中,输出是物体属于正类的概率 p 。反概率 1-p 是对象是否定类成员的概率。

高概率表明该对象很可能是正类的实例。

输出为零意味着不可能属于正类,而属于负类是确定的。相反,如果概率为 1,则一个对象必然属于正类。

比如假设输出为 p = 0.85 。这意味着有 85%的可能性该对象属于正类,有 15%的可能性(1–0.85 = 0.15)该对象是负类的成员。

在多类分类中,输出是一个概率分布。

分类器是函数

分类器是一个被设计用来执行分类的功能。

分类器的输入是对象的表示。生成的输出是一个预测。

如果输入是向量,则分类器的域和余域可以表述如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

A function that maps a vector representation to a probability

类似地,如果物体用矩阵表示,我们写 :

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

A function that maps a matrix to a probability

假设 |C| 是类的数量,分类器将矩阵映射到适当长度的概率分布的事实被写成:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

A function that maps a matrix to a probability distribution

MNIST

如果不提到数字识别和 MNIST 数据集,任何关于机器学习本质的教程都是不完整的。

识别数字是机器学习中具有历史意义的重要任务。分类器接收图像的表示,并返回从 0 到 9 的十个可能数字的概率分布。然后,系统选择类别概率最高的数字。

MNIST 可以说是所有机器学习中最著名的数据集,包含 70,000 张 28x28 像素的灰度图像。这种标记图像集合的最广泛使用的形式已经在二十年前出版了。[7]

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Fig. 6: A few samples from the MNIST data set (Image by Josef Steppan / CC BY-SA 4.0)

应用于 MNIST 数据的数字识别器是将 28 行 28 列的矩阵映射到 10 类概率分布的函数:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

最初,这项任务有直接和明显的应用,例如在手写信件和支票的时代,邮政服务和金融服务的效率提高。

随着时间的推移,研究人员在数字识别任务中取得了接近人类的表现,并转向更雄心勃勃的目标。

与此同时,MNIST 数据集已经被重新用于测试机器学习的新想法。如果一个分类算法不能在 MNIST 上给出很好的结果,它很可能对更具挑战性的问题没有多大用处。

由于多年来对 MNIST 数据集的严格使用,实验结果可以很容易地与数百项同行评议的研究进行比较。这是标准化测试的一个重要好处。

回归

另一个监督学习的问题是回归。我想在本文中提供一个简要的概述,然后在第 5 部分中更详细地讨论这个主题。

回归任务中,目标是连续的。换句话说,它可以取某个范围内的任何值。

根据上下文,术语回归变量指独立变量(输入)或设计用于执行回归的函数(类似于分类器)。

回归的一个经典应用是预测价格。在这种情况下,范围将是一组正实数(或介于 0 和最高价格之间的区间)。

回归的其他应用包括预测生物标记、需求、环境测量、性能、受欢迎程度、评级、风险、分数和产量。

基线

在这篇文章的结尾,我想讨论一下使用常量函数作为基线。

常量函数对每个输入返回相同的输出。它们被写成 f(x) = c ( 其中 c 是一个常量值)并且可以作为基线。

在机器学习中,基线是生成预测的简单规则:可以用几句话描述的东西,没有任何复杂性。

可以说,最重要的基线是总是预测最频繁出现的目标值。(另一种方法是随机生成预测。如果没有关于目标值分布的可靠信息,后者可能是正确的选择。)

当您评估机器学习系统时,以下问题应该是首先想到的:

  1. 我试图解决的问题的基线是什么?
  2. 机器学习系统是否显著优于基线?

情感分析的基线

假设你委托一个机器学习专家开发一个定制的情感分析解决方案。要求是收集相关网站上对贵公司的提及,并在发现公开表达的意见时发送通知。

快进到第一次迭代,您会收到一份关于初始测试结果的报告:系统达到了 90%的准确率。这是好事还是坏事?嗯,看情况。

考虑两种情况:在第一种情况下,一个代表性的样本表明,超过 90%的公开表达的对你的公司的看法是积极的。好消息是顾客喜欢你。坏消息是,机器学习项目正在失败,因为系统没有超越总是预测最频繁目标的基线。如果正面评价由目标值 1 表示,则基线将是常数函数 f(x) = 1

在第二种情况下,你的公司是有争议的,公众舆论在粉丝和批评者之间平分秋色。在这种情况下,90%的准确率是项目成功的第一个迹象。

因此,基线提供了对系统性能预期的下限。

到目前为止,我们将分类器和回归器视为一个黑盒。

从下一篇文章开始,我们将打开这个盒子,描述应用机器学习中最常用的函数。

感谢您的阅读!如果你喜欢这篇文章,请点击“鼓掌”按钮,跟我来阅读这个系列的下一部分。

笔记

[1]这假设编程的函数对于给定的输入总是返回相同的输出,并且不会引起任何副作用。

[2]http://blogs . nature . com/news/2012/08/hot-stuff-CERN-physicians-create-record-breaking-subatomic-soup . html

[3]当然,计算机使用的浮点数并不完全对应于一组实数。它们的范围有限,而且不够精确。

[4]更确切地说,标量是场的一个元素。字段是一组定义了特定规则的数字。实数是一个字段。

[5]不同的作者对 3D 阵列的维度使用不同的符号,尤其是最后一个。我与之交谈过的一位数学家更喜欢使用字母 p ,因为 o 在外观上与 0 很接近。最终,我决定选择字母 o 。用三个连续的字母很直观,字母 p 是留给概率的。

[6]缩写 MNIST 数据集代表经修改的国家标准与技术研究所数据集。

[7] LeCun,y .,Bottou,l .,Bengio,y .和 Haffner,p .,1998 年。基于梯度的学习在文档识别中的应用。IEEE 会议录86 (11),第 2278–2324 页。

机器学习基础(二):神经网络

原文:https://towardsdatascience.com/machine-learning-fundamentals-ii-neural-networks-f1e7b2cb3eef?source=collection_archive---------3-----------------------

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在我之前的文章中,我通过展示成本函数和梯度下降在学习过程中的核心作用,概述了机器学习的工作原理。这篇文章通过探索神经网络和深度学习如何工作来建立这些概念。这篇文章很少解释,很多代码。原因是,我想不出任何方式能比三个蓝色一个棕色的不可思议的视频放在一起更清楚地阐明神经网络的内部工作方式——见完整播放列表这里

这些视频展示了如何向神经网络输入原始数据——如数字图像——并以惊人的精度输出这些图像的标签。这些视频以一种非常容易理解的方式强调了神经网络的基础数学,这意味着即使那些没有深厚数学背景的人也可以开始理解深度学习的本质。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这篇文章旨在作为这些视频的“代码”补充(完整的 Tensorflow 和 Keras 脚本可在文章末尾获得)。目的是演示如何在 Tensorflow 中定义和执行神经网络,使其能够识别如上所示的数字。

TensorFlow(对于那些不知道的人来说)是谷歌的深度学习库,虽然它很低级(我通常在我的深度学习项目中使用更高级的 Keras 库),但我认为它是一种很好的学习方式。这仅仅是因为,尽管它在幕后做了大量不可思议的事情,但它需要你(是的,你!)来明确定义 NN 的架构。这样你会更好地理解这些网络是如何工作的。

神经网络

神经网络是大脑中发生的生物过程的数学和计算抽象。具体来说,它们粗略地模拟了相互连接的中子对刺激的反应——例如新的输入信息。我没有发现生物学类比对理解神经网络特别有帮助,所以我不会继续沿着这条路走下去。

神经网络通过计算输入向量的加权总和来工作,然后输入向量通过非线性激活函数,从而通过非线性转换层创建从输入到输出的映射。变换层或隐藏层中的权重(由中子表示)被反复调整,以表示输入到输出的数据关系。

定义层和激活

第一步,我们定义网络的架构。我们将创建一个四层网络,包括一个输入层,两个隐藏层和一个输出层。请注意一层的输出如何成为下一层的输入。就神经网络而言,这个模型非常简单,它由密集的完全连接的层组成,但仍然非常强大。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

输入层——有时也被称为可见层——是以原始形式表示数据的模型层。例如,对于数字分类任务,可见图层由对应于像素值的数字表示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在 TensorFlow *(所有代码如下)*中我们需要创建一个占位符变量来表示这个输入数据,我们还将为每个输入对应的正确标签创建一个占位符变量。这有效地设置了训练数据——我们将用于训练神经网络的 X 值和 y 标签。

隐藏层使神经网络能够创建输入数据的新表示,模型使用它来学习数据和标签之间的复杂和抽象关系。每个隐藏层由神经元组成,每个神经元代表一个标量值。此标量值用于计算输入加上偏差的加权和(本质上是 y1 ~ wX + b),从而创建线性(或更具体地说是仿射)变换。

在 Tensorflow 中,您必须明确定义构成该层的权重和偏差的变量。我们通过将它们包装在 tf 中来做到这一点。变量函数——这些被包装为变量,因为参数会随着模型学习最能代表数据关系的权重和偏差而更新。我们用方差非常低的随机值来实例化权重,并用零填充偏差变量。然后,我们定义发生在该层的矩阵乘法。

这个变换然后通过一个激活函数,(这里我使用 ReLU 或整流线性单元)使线性变换的输出变成非线性。这使得神经网络能够模拟输入和输出之间复杂的非线性 T21 关系——点击这里查看 Siraj Raval 关于激活函数的精彩视频讲解。

输出层是模型中的最后一层,在这种情况下,大小为 10,每个标签一个节点。我们将一个 softmax 激活应用到这一层,以便它跨最终层节点输出介于 0 和 1 之间的值——代表跨标签的概率。

成本函数和优化

既然定义了神经网络架构,我们就设置成本函数优化器。对于这个任务,我使用分类交叉熵。我还定义了一个准确性度量,可以用来评估模型的性能。最后,我将优化器设置为随机梯度下降,并在实例化后调用它的 minimise 方法。

最后,可以运行模型——这里运行 1000 次迭代。在每次迭代中,一个小批量的数据被输入到模型中,它进行预测,计算损失,并通过反向传播,更新权重,重复这个过程。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

** 摘自三蓝一棕的《但是,什么是神经网络视频**

这个简单的模型在测试集上达到了大约 95.5%的准确率,这还不算太差,但是还可以更好。在下面的图中,您可以看到模型每次迭代的准确性和成本,有一点非常明显,即训练集和测试集的性能之间存在差异。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这表明过度拟合——也就是说,模型学习训练数据太好,这限制了它的泛化能力。我们可以使用正则化方法来处理过度拟合,这将是我下一篇文章的主题。

感谢您的阅读🙂

页(page 的缩写)完整的 Tensorflow 脚本可以在这里找到,相同的模型在 Keras 这里定义。

原载于 2017 年 12 月 21 日 dataflume.wordpress.com**的

机器学习基础(一):成本函数和梯度下降

原文:https://towardsdatascience.com/machine-learning-fundamentals-via-linear-regression-41a5d11f5220?source=collection_archive---------0-----------------------

* 这是机器学习基础系列的第一部分。ML 基础(二):神经网络可以在https://towards data science . com/machine-learning-fundamentals-II-Neural-Networks-f1 e 7 b 2 CB 3 eef *

在这篇文章中,我将使用一个简单的线性回归模型来解释两个机器学习 (ML)基础;(1)成本函数和;(2)梯度下降。线性回归不是 ML 工具包中最强大的模型,但由于它的熟悉性和可解释性,它仍然在研究和行业中广泛使用。简单地说,线性回归用于估计连续的或/和分类数据与连续的输出变量之间的线性关系——你可以在我以前的帖子中看到这样的例子https://conors datablog . WordPress . com/2017/09/02/a-quick-and-tidy-data-analysis/

在这篇文章中,我将使用 Xy 来指代变量。如果你喜欢更具体的东西(就像我经常做的那样),你可以想象 y 是销售额, X 是广告支出,我们想要估计广告支出如何影响销售额。从视觉上,我将展示线性回归如何学习拟合这些数据的最佳直线:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

机器学习什么?

人们在开始学习 ML 时经常遇到的一个问题是:

“机器(即统计模型)实际学习的是什么?”

这将因模型而异,但简单来说,模型学习函数 f ,使得 f ( X )映射到 y 。换成不同的 yy,模型学习如何取 X (即特征,或者更传统的说法,自变量),以便预测 y (目标,响应或者更传统的说法,因变量)。

在简单线性回归(*y~ B0+B1 X其中 X 是一列/变量)的情况下,模型“学习”(读取:估计)两个参数;

  • b0:偏差(或者更传统的说法是 T42 y 截距);而且,
  • b1:坡度

偏差是当 X 为 0 时 y 的水平(即广告支出为 0 时的销售额),斜率是 yX 中每单位增加的预计增加或减少的比率(即广告支出每磅增加多少销售额)。两个参数都是标量(单值)。

一旦模型学习了这些参数,它们就可以被用于在给定新的 X 值的情况下计算 y 的估计值。换句话说,当你不知道什么是 y 时,你可以使用这些学习到的参数来预测 y 的值——嘿,一个预测模型!

学习参数:成本函数

学习 LR 模型的参数有几种方法,我将集中讨论最能说明统计学习的方法;最小化一个成本函数

记住,在 ML 中,重点是从数据中学习**。用一个简单的类比也许能更好地说明这一点。作为孩子,我们通常通过被告知不要做某事或因做了不该做的事而受到惩罚来学习什么是“正确的”或“好的”行为。例如,你可以想象一个四岁的孩子坐在火旁取暖,但不知道火的危险,她把手指放进去烧伤了。下一次她坐在火边,她没有被烧伤,但是她坐得太近,太热了,不得不离开。第三次她坐在火边时,她找到了既能保暖又不会有任何危险的距离。换句话说,通过经验和反馈(烧伤,然后变得太热),孩子学会了坐在离火的最佳距离。在这个例子中,火的热量充当了**成本函数——它帮助学习者纠正/改变行为,以最大限度地减少错误。****

在最大似然法中,成本函数用于估计模型的表现有多差。简而言之, 成本函数是衡量模型在估计 X 和 y 之间关系的能力方面有多差的标准。 这通常表示为预测值和实际值之间的差异或距离。成本函数(你也可以看到这被称为损失误差。)可以通过迭代运行模型来估计,以将估计的预测与“基本事实”(已知的 y 值)进行比较。

因此,ML 模型的目标是找到使成本函数最小化的参数、权重或结构。

最小化成本函数:梯度下降

既然我们知道模型通过最小化成本函数来学习,您可能自然会想知道成本函数是如何最小化的—输入梯度下降。梯度下降是一种有效的优化算法,试图找到一个函数的局部或全局最小值。

梯度下降使模型能够学习模型应该采用的梯度或方向,以减少误差(实际 y 和预测 y 之间的差异)。简单线性回归示例中的方向指的是应该如何调整或校正模型参数 b0 和 b1 以进一步降低成本函数。随着模型的迭代,它逐渐向最小值收敛,在该最小值处,对参数的进一步调整产生很少或零损失变化,这也称为收敛。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在这一点上,模型已经优化了权重,使得它们最小化成本函数。这个过程是积分(没有微积分双关语的意思!)到 ML 过程中,因为它极大地加速了学习过程——你可以把它看作是一种接受纠正性反馈的方式,以改进你以前的表现。梯度下降过程的替代方案将是强力强制参数的潜在无限组合,直到最小化成本的集合被识别。很明显,这是不可行的。因此, 梯度下降使得学习过程能够对所学习的估计进行校正更新,从而将模型移向参数的最佳组合。

在线性回归模型中观察学习

为了观察线性回归中的学习,我将设置参数 b0 和 b1,并使用模型从数据中学习这些参数。换句话说,我们知道 Xy 之间关系的基本事实,并且可以通过响应于成本的参数的迭代校正来观察学习这种关系的模型(注意:下面的代码是用 R 编写的)。

这里我定义了偏差和斜率(分别等于 4 和 3.5)。我还向 X 添加一列 1(为了实现矩阵乘法)。我还添加了一些高斯噪声到 y 中,以掩盖真实的参数——即产生纯粹随机的误差。现在我们有了一个带有两个变量的数据框架, X 和 *y,*看起来具有正的线性趋势(随着 X 增加, y 的值增加)。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

接下来,我定义学习率——它控制每个梯度的步长。如果这个值太大,模型可能会错过函数的局部最小值。如果太小,模型将需要很长时间才能收敛(复制代码并亲自尝试一下!).Theta 存储参数 b0 和 b1,它们用随机值初始化(我已经将它们都设置为 20,这适当地远离真实参数)。n_iterations 值控制模型迭代和更新值的次数。也就是说,模型将进行多少次预测、计算成本和梯度以及更新权重。最后,我创建了一些占位符来捕捉模型每次迭代时的 b0、b1 和均方误差(MSE)的值(创建这些占位符可以避免向量的迭代增长,这在 R 中是非常低效的)。

这种情况下的 MSE 就是代价函数。它仅仅是预测 y 和实际 y 之间的平方差的 平均值 (即残差)

现在,我们运行循环。在每次迭代中,模型将根据θ值预测 y ,计算残差,然后应用梯度下降来估计校正梯度,然后使用这些梯度更新θ值——该过程重复 100 次。当循环结束时,我创建一个数据帧来存储学习到的参数和每次迭代的损失。

当迭代完成后,我们可以绘制出比模型估计的线条。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

首先要注意的是粗粗的红线。这是从 b0 和 b1 的初始值估计的线。可以看到,这与数据点完全不符,因此它具有最高的误差(MSE)。但是,您可以看到这些线逐渐向数据点移动,直到确定最佳拟合线(蓝色粗线)。换句话说,在每次迭代时,模型已经学习了 b0 和 b1 的更好的值,直到它找到最小化成本函数的值。模型学习到的 b0 和 b1 的最终值分别为 3.96 和 3.51,非常接近我们设置的参数 4 和 3.5!

瞧啊。我们的机器!它学会了!!

我们还可以看到模型迭代中 SSE 的减少。在收敛和稳定之前,这在早期迭代中需要急剧下降。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们现在可以使用存储在 theta 中的 b0 和 b1 的学习值来预测新的值 X 的值 y

摘要

这篇文章介绍了一种非常简单的理解机器学习的方法。不言而喻,ML 还有很多内容,但是获得对“引擎盖下”正在发生的事情的基本原理的初步直觉可以大大有助于提高您对更复杂模型的理解。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如何从零开始开发机器学习模型

原文:https://towardsdatascience.com/machine-learning-general-process-8f1b510bd8af?source=collection_archive---------0-----------------------

在本文中,我们将深入研究开发机器学习模型的过程是如何完成的。将会有很多概念被解释,我们将会把其他更具体的概念留到以后的文章中。

具体来说,本文将讨论如何:

  • 充分定义我们的问题(目标、期望的产出……)。
  • 收集数据。
  • 选择衡量成功的标准。
  • 设置评估协议和可用的不同协议。
  • 准备数据(处理缺失值、类别值……)。
  • 正确分配数据。
  • 区分过度适配和适配不足,定义它们并解释避免它们的最佳方法。
  • 模型如何学习的概述。
  • 什么是正则化,什么时候使用正则化比较合适。
  • 开发一个基准模型。
  • 选择一个合适的型号,并调整它以获得最佳性能。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Picture from Unsplash

解决机器学习问题的通用工作流

1。恰当地定义问题

首先,也是要做的最重要的事情之一,是找出什么是输入和预期输出。必须回答以下问题:

  • 主要目标是什么?我们试图预测什么?
  • 目标特征是什么?
  • 输入数据是什么?有吗?
  • 我们面临着什么样的问题?二元分类?聚类?
  • 预期的改善是什么?
  • 目标特征的当前状态是什么?
  • 如何测量目标特征?

不是每个问题都可以解决,直到我们有了一个工作模型我们才可以做出某些假设:

  • 给定输入,可以预测我们的输出。
  • 我们现有的数据足以了解投入和产出之间的关系

请记住,机器学习只能用于记忆训练数据中存在的模式,因此我们只能识别我们以前见过的模式。当使用机器学习时,我们假设未来会像过去一样,但这并不总是正确的。

2.收集数据

这是机器学习模型真正发展的第一步,收集数据。这是一个关键的步骤,将级联模型有多好,我们得到的数据越多越好,我们的模型将表现得越好。

有几种收集数据的技术,比如 web 抓取,但是它们超出了本文的范围。

典型地,我们的数据将具有以下形状:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Table by Author

注意:上表对应的是著名的 boston housing 数据集,这是一个经典的数据集,经常用于开发 siemple 机器学习模型。每行代表一个不同的波士顿社区,每列表示该社区的一些特征(犯罪率、平均年龄等)。最后一列表示该社区的房价中值,它是目标值,是将其他值考虑在内进行预测的值。

3.选择衡量成功的标准:

彼得·德鲁克是哈佛大学的老师,也是《高效的管理者和自我管理》一书的作者,他有一句名言:

“如果你不能衡量它,你就不能改进它”。

如果你想控制某样东西,它应该是可以观察到的,为了取得成功,有必要定义什么是成功:也许是精确?准确性?客户保持率?

这个衡量标准应该与手头业务的更高层次目标直接一致。这也与我们面临的问题直接相关:

  • 回归问题使用某些评估指标,如均方差(MSE)。
  • 分类问题使用精度、准确度和召回率等评估指标。

在接下来的文章中,我们将深入探讨这些指标,考虑到所面临的问题,什么是最适合使用的,并学习如何设置它们。

4.设置评估协议

一旦目标明确,就应该决定如何衡量实现目标的进展。最常见的评估协议有:

4.1 维护延期验证集

这种方法是将数据的一部分分离出来作为测试集。

该过程将是用剩余部分的数据训练模型,用验证集调整其参数,最后在测试集上评估其性能。

将数据分成三部分的原因是为了避免信息泄露。这种方法的主要不便之处在于,如果可用数据很少,验证和测试集将包含很少的样本,以至于模型的调整和评估过程将无效。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Figure by Author

4.2 K 倍验证

K-Fold 包括将数据分成 K 个大小相等的分区。对于每个分区 I,用剩余的 K-1 个分区训练模型,并在分区 I 上对其进行评估

最终得分是获得的 K 分的平均值。当模型的性能明显不同于训练测试分割时,这种技术特别有用。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Figure by Author

4.3 带洗牌的迭代 K 倍验证

当可用数据很少,并且需要尽可能精确地评估模型时,这种技术特别有用(这是 Kaggle 竞赛的标准方法)。

它包括多次应用 K-Fold 验证,并且每次在将数据分成 K 个分区之前对其进行洗牌。最终分数是每次 K 倍验证结束时获得的分数的平均值。

这种方法在计算上非常昂贵,因为训练和评估模型的数量将是 1x K 倍。其中 I 是迭代次数,K 是分区数。

注:在选择评估协议时,谨记以下几点至关重要:

  • 在分类问题中,训练和测试数据都应该是具有代表性的数据,所以我们应该在分割数据之前对其进行洗牌,以确保它覆盖了数据集的整个范围。
  • 当试图根据过去预测未来时(天气预测、股票价格预测……),数据不应该被打乱,因为数据的顺序是一个至关重要的特征,这样做会造成时间上的泄露。
  • 我们应该经常检查我们的数据中是否有重复,以便删除它们。否则,冗余数据可能会同时出现在训练集和测试集中,导致我们的模型学习不准确。

5.准备数据

在开始训练模型之前,我们应该以一种可以输入机器学习模型的方式转换我们的数据。最常见的技术有:

5.1 处理缺失数据

在现实世界的问题中,丢失数据样本的某些值是很常见的。这可能是由于数据收集的错误、调查中的空白、测量不适用等等

缺失值通常用“NaN”或“Null”指示器表示。问题是大多数算法不能处理那些丢失的值,所以我们需要在将数据输入模型之前处理它们。一旦确定了它们,有几种方法可以处理它们:

  1. 排除具有缺失值的样本或特征。(我们冒着删除相关信息或过多样本的风险)
  2. 输入缺失值,使用一些预建的估计器,如 scikit learn 的 import 类。我们将拟合我们的数据,然后转换它来估计它们。一种常见的方法是将缺失值设置为其余样本的平均值。

5.2 处理分类数据

当处理分类数据时,我们使用序数和名词特征。有序特征是可以排序的分类特征(布料尺寸:L < M < S )。而名义特征并不暗示任何顺序(布料的颜色:黄色、绿色、红色)。

处理序数和名词性特征的方法有:

  • 映射顺序特征:为了确保算法正确解释顺序特征,我们需要将分类字符串值转换成整数。我们经常会手动进行这种映射。例如:L:2,M:1,S:0。
  • 编码名义类别标签:最常见的方法是执行一键编码,包括为名义特征列中的每个唯一值创建一个新的虚拟特征。示例:在颜色列中,如果我们有三个类:黄色、红色、绿色,并执行一次性编码,我们将得到三个新列,每个唯一的类一个。那么,如果我们有一件黄色衬衫,它将被采样为:黄色= 1,绿色= 0,红色= 0。这样做是为了确保算法的良好性能,因为它们在处理稀疏矩阵(低密度矩阵,具有许多 0 值)时更有效。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Figure by Author

5.3 特征缩放

这是预处理阶段的关键步骤,因为大多数机器学习算法在处理相同比例的特征时表现得更好。最常见的技术有:

  • 归一化:是指将要素重新缩放到范围[0,1],这是最小-最大缩放的一种特殊情况。为了标准化我们的数据,我们只需对每个要素列应用最小-最大缩放方法。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Figure by Author

  • 标准化:它包括使特征列以平均值 0 为中心,标准偏差为 1,以便特征列具有与标准正态分布相同的参数(零平均值和单位方差)。这使得学习算法更容易学习参数的权重。此外,它保留了关于离群值的有用信息,并使算法对它们不太敏感。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Figure by Author

5.4 选择有意义的特征

正如我们将在后面看到的,导致机器学习模型过度拟合的主要原因之一是因为我们的数据中存在冗余,这使得模型对于给定的训练数据来说过于复杂,并且无法对看不见的数据进行很好的概括。

避免过度拟合的一个最常见的解决方案是降低数据的维数。这通常是通过主成分分析(PCA)减少数据集的特征数量来实现的,PCA 是一种无监督的机器学习算法。

PCA 根据特征之间的相关性识别数据中的模式。这种相关性意味着我们的数据中存在冗余,换句话说,数据的某些部分可以用其他部分来解释。

这种相关数据对于模型恰当地学习其权重并不重要,因此可以将其移除。可以通过直接删除某些列(特征)或者通过合并一些列并获得保存大部分信息的新列来删除它。我们将在以后的文章中更深入地探讨这种技术。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Figure by Author

5.5 将数据分成子集

一般来说,我们将把数据分成三部分:训练集、测试集和验证集。我们用训练数据训练我们的模型,用验证数据评估它,最后,一旦它可以使用,就用测试数据最后一次测试它。

现在,提出以下问题是合理的:为什么不只有两套,培训和测试?那样的话,过程就简单多了,只需要在训练数据上训练模型,在测试数据上测试就可以了。

答案是,开发一个模型包括调整它的配置,换句话说,为它们的超参数(不同于模型的参数——网络的权重)选择某些值。这种调整是通过从验证集得到的反馈来完成的,本质上是一种学习形式。

最终目标是该模型可以很好地对未见过的数据进行归纳,换句话说,根据在训练和验证时调整的内部参数,从新数据中预测准确的结果。

a)学习过程

通过研究一种最简单的算法:线性回归,我们可以更深入地了解学习过程是如何完成的。

在线性回归中,我们被给定一些预测变量(解释变量)和一个连续的响应变量(结果),我们试图找到这些变量之间的关系,使我们能够预测一个连续的结果。

线性回归的一个例子:给定 X 和 Y,我们拟合一条直线,使用一些方法估计样本点和拟合直线之间的系数(如普通最小二乘法和梯度下降),使距离最小化。然后,我们将使用学习到的截距和斜率(形成拟合线)来预测新数据的结果。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Figure by Author

直线的公式为 y = B0 + B1x +u 。其中 x 为输入, B1 为斜率, B0 为 y 截距, u 为残差, y 为位置 x 处的线值。

可用于训练的值是 B0B1 ,它们是影响线位置的值,因为仅有的其他变量是 x(输入)和 y,即输出(不考虑残差)。这些值( B0B1 )是预测函数的“权重”。

这些权重和其他称为偏差的参数将作为矩阵排列在一起(权重为 W ,偏差为 b )。

训练过程包括为每个训练矩阵初始化一些随机值,并尝试使用初始随机值预测输入数据的输出。开始时,误差会很大,但是将模型的预测与正确的输出进行比较,模型能够调整权重和偏差值,直到有一个好的预测模型。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Figure by Author

重复该过程,一次一个迭代(或步骤)。在每次迭代中,初始的随机线向理想的和更精确的线移动。

b)过度装配和装配不足

当考虑模型的训练时,最重要的问题之一是优化和推广之间的紧张关系。

  • 优化是调整模型以在训练数据上获得最佳性能的过程(学习过程)。
  • 概化是模型在看不见的数据上表现得有多好。目标是获得最佳的泛化能力。

在训练开始时,这两个问题是相关的,训练数据的损失越低,测试数据的损失就越低。这发生在模型仍然不足的时候:仍然有学习要做,还没有对模型的所有相关参数建模。

但是,在对训练数据进行多次迭代之后,泛化能力停止提高,验证指标首先冻结,然后开始下降。该模型开始过度拟合:它已经很好地学习了训练数据,学习了过于特定于训练数据而与新数据无关的模式。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Figure by Author

有两种方法可以避免这种过拟合,获得更多的数据和正则化。

  • 获得更多的数据通常是最好的解决方案,根据更多数据训练的模型自然会概括得更好。
  • 当后者不可行时,就进行正则化,正则化是对模型可以存储的信息量进行调制的过程,或者是对允许保留的信息进行约束的过程。如果模型只能记住少量的模式,优化将使它专注于最相关的模式,从而提高泛化能力。

正则化主要通过以下技术完成:

  1. 减少模型的规模:减少模型中可学习参数的数量,从而减少其学习能力。目标是在学习能力过多和不足之间找到一个平衡点。不幸的是,没有任何神奇的公式来确定这种平衡,它必须通过设置不同数量的参数和观察其性能来测试和评估。
  2. 添加权重正则化:一般来说,模型越简单越好。只要它能很好地学习,一个更简单的模型就不太可能过度拟合。实现这一点的一种常见方法是通过强制其权重仅取小值来限制网络的复杂性,从而使权重值的分布规律化。这是通过向网络的损失函数添加与具有大权重相关联的成本来实现的。成本来自两个方面:
  • L1 正则化:代价与权重系数的绝对值(权重的 L1 范数)成比例。
  • l2 正则化:成本与权重系数(权重的 L2 范数)的值的平方成比例

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Figure by Author

要决定哪一个应用于我们的模型,建议牢记以下信息并考虑我们问题的性质:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

6.开发基准模型

这一步的目标是开发一个 benchamark 模型,作为我们的基线,在此基础上,我们将衡量一个更好、更协调的算法的性能。

基准测试要求实验具有可比性、可测量性和可重复性。强调最后一句话的可再现部分是很重要的。现在的数据科学库执行数据的随机分割,这种随机性必须在所有运行中保持一致。大多数随机生成器支持为此目的设置种子。在 Python 中,我们将使用随机包中的 random.seed 方法。

如在“https://blog . dominodatalab . com/benchmarking-predictive-models/”上找到的

“将模型改进与简化的基线模型(如分类数据的 kNN 或朴素贝叶斯,或时间序列数据中某个值的 EWMA)进行比较通常很有价值。这些基线提供了对数据集可能的预测能力的理解。

这些模型通常需要少得多的时间和计算能力来训练和预测,这使它们成为一个有用的交叉检查答案的可行性。kNN 和朴素贝叶斯模型都不可能捕捉复杂的交互。然而,它们将提供对基准模型预测能力的最小界限的合理估计。

此外,本练习还提供了测试基准管道的机会。重要的是,基准管线为具有已知性能特征的模型提供稳定的结果。原始数据集上的 kNN 或朴素贝叶斯,或通过列居中或缩放进行的最低程度的操作,通常会提供弱但足够的学习器,其特征对于比较的目的是有用的。更复杂模型的特征可能不太为人所知,并被证明是具有挑战性的。"

7.开发更好的模型并调整其超参数

7.1 寻找好的模式

寻找一个好模型的最常见的方法之一是交叉验证。在交叉验证中,我们将设置:

  • 我们将拆分数据的若干折叠。
  • 评分方法(根据问题的性质而有所不同——回归、分类……)。
  • 我们想检查一些合适的算法。

我们将把数据集传递给我们的交叉验证得分函数,并获得产生最佳得分的模型。这将是我们要优化的一个,相应地调整它的超参数。

**# Test Options and Evaluation Metrics**
num_folds = 10
scoring = "neg_mean_squared_error"**# Spot Check Algorithms**
models = []
models.append(('LR', LinearRegression()))
models.append(('LASSO', Lasso()))
models.append(('EN', ElasticNet()))
models.append(('KNN', KNeighborsRegressor()))
models.append(('CART', DecisionTreeRegressor()))
models.append(('SVR', SVR()))

results = []
names = []
for name, model in models:
    kfold = KFold(n_splits=num_folds, random_state=seed)
    cv_results = cross_val_score(model, X_train, y_train, cv=kfold,    scoring=scoring)
    results.append(cv_results)
    names.append(name)
    msg = "%s: %f (%f)" % (name, cv_results.mean(),   cv_results.std())
    print(msg)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

***# Compare Algorithms***
fig = pyplot.figure()
fig.suptitle('Algorithm Comparison')
ax = fig.add_subplot(111)
pyplot.boxplot(results)
ax.set_xticklabels(names)
pyplot.show()

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

7.2 调整模型的超参数

机器学习算法有两种类型的参数。第一种类型是通过训练阶段学习的参数,第二种类型是我们传递给机器学习模型的超参数。

一旦确定了我们将使用的模型,下一步就是调整它的超参数,以获得可能的最佳预测能力。寻找超参数最佳组合的最常见方法称为网格搜索交叉验证。

该过程如下:

  • 设置我们将评估的参数网格。为此,我们将创建一个字典,其中包含您想要测试的所有参数及其相应的一组值,以获得最佳性能
  • 设置折叠数和随机状态以及计分方法。
  • 使用选定的折叠数构建 K 折叠对象。
  • 用选择的模型构建一个网格搜索对象,并对其进行拟合。
**# Build a scaler**
scaler = StandardScaler().fit(X_train)
rescaledX = scaler.transform(X_train)**# Build parameter grid**
c_values = [0.1, 0.3, 0.5, 0.7, 0.9, 1.0, 1.3, 1.5, 1.7, 2.0]
kernel_values = ['linear', 'poly', 'rbf', 'sigmoid']
param_grid = dict(C=c_values, kernel=kernel_values)**# Build the model**
model = SVC()
kfold = KFold(n_splits=num_folds, random_state=seed)
grid = GridSearchCV(estimator=model, param_grid=param_grid, scoring=scoring, cv=kfold)
grid_result = grid.fit(rescaledX, y_train)**# Show the results**
print("Best: %f using %s" % (grid_result.best_score_, grid_result.best_params_))
means = grid_result.cv_results_['mean_test_score']
stds = grid_result.cv_results_['std_test_score']
params = grid_result.cv_results_['params']
for mean, stdev, param in zip(means, stds, params):
    print("%f (%f) with: %r" % (mean, stdev, param))

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

该方法返回一组最适合当前问题的超参数。一旦它们被确定,我们的模型就可以使用了。因此,我们将对验证数据集进行适当的预测,并保存模型以备后用。

8.结论

通过这篇文章,我们已经讨论了很多重要的概念。虽然已经提供了它们的高层次概述,但是这对于获得关于如何以及何时应用所解释的方法的良好直觉是必要的。

我们将更深入地探索这些方法,因为它们将在下一篇文章中不断出现,以及它的 python 实现。

在下一篇文章中,我们将从第一种也是最常见的机器学习问题开始:回归。

如果你喜欢这篇文章,那么你可以看看我关于数据科学和机器学习的其他文章 这里

如果你想了解更多关于机器学习、数据科学和人工智能的知识 请在 Medium 上关注我,敬请关注我的下一篇帖子!

机器学习走向元

原文:https://towardsdatascience.com/machine-learning-going-meta-514dd5027817?source=collection_archive---------13-----------------------

反思 2018 年 ML 的一些最大趋势

机器学习有自己的三条法则:为了使用它,你需要三个必不可少的成分,即 1)标记的数据;2)一个模型架构你可以优化;以及 3)明确定义的目标函数。许多关于应用 ML 解决问题的讨论被简单地打断了,因为这三者中没有一个是可用的。达到这种神奇的结合越来越容易:“大数据”趋势使数据访问在行业中更加普遍,深度学习使找到适用于广泛问题的良好模型架构变得更加简单。有趣的是,大部分困难仍然存在于定义正确的目标:一个有商业意义的目标,提供足够的监督,并包含问题固有的所有目标,例如公平性、安全性或可解释性。

我今年观察到的主要趋势是,我们可能最终会打破这种“数据、模型、目标:选择三个”的局面,变成看起来更像是:数据、模型、目标:选择两个。许多人会说,真正的“一般智力”是当我们不需要这些成分中的任何成分时:没有标签,没有专门的学习架构,没有精细的目标,因此从三个减少到两个确实感觉是一些进步。

我最感兴趣的是我们打破这三条规则的方式:我们采用监督学习,并把它本身作为研究的主题。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Credit: Andre Mouton on Unsplash

本质上,我们在机器学习上正在走向元

模型架构来说:如果没有会怎么样?学着点!这是“学会学习”方法背后的基本理念,又名 AutoML 方法。令人惊讶的是,计算机已经基本上自动化了我三年前的工作:那时我正努力为谷歌网找出最好的模型架构。当今最好的架构都是由机器学习系统自己设计的,并且正在迅速找到 自己的 方式进入工业应用。这也适用于模型训练的所有其他方面,例如数据增强设备放置优化器。这条研究路线的大部分仍然依赖于人们作为构建模块提出的大型建筑动物园,这没关系——问问你的邻居 Redditor,如果没有相当数量的模因循环,这就不是“元”了。

取标有的数据。如果你没有呢?大量的文献正在围绕少量/一次/零次学习而发展,其中目标标签只被观察几次,恰好一次,或者根本不被观察。正如你所猜测的,解决这些问题的一些最有前途的方法是关于“去元化”:元学习将重新学习一些东西的问题定义为要解决的实际学习问题,从而优化了“少数镜头”任务,而不是传统的大数据集问题设置。并且可以自然的扩展到无监督 设置

对我来说,元学习越来越像是对我们集体痴迷于强化学习的完美治疗,强化学习是通向终身学习的道路。它提供了一个不同但同样自然的问题框架,从找出如何随着时间的推移从单个例子中更好地学习的角度。我希望有一天,我们不再把这称为元学习,而只是简单地称为“学习”:使用非常稀疏的信号捕捉新奇体验的本质,同时利用一个人的整个存在作为如何更好地学习的背景,这才是真正的概括。

最后,当您有数据和模型,但没有定义明确的目标函数时会发生什么?这通常是一种“当你看到它时你就知道”的情况:你想要一个好看的图像,或者你想要听起来不错的音频,但是写下这些概念的适当损失几乎是不可能的。这就是生成性对抗网络完全改变了现状的地方,它拒绝回答什么是好的目标函数的问题,而是将问题交给各种有学问的批评家,试图区分好的解决方案和坏的解决方案。还有什么比训练一个机器学习系统来判断你的机器学习系统做得有多好更‘元’的呢?可以说,gan 并不特别新,但它们在过去几年里真的蓬勃发展,现在越来越多地找到进入(sur-) 现实世界的方式

当然,这回避了一个问题,为什么还没有人发表题为“生成对立模型不可知的元神经架构搜索”的论文。来吧,我谅你也不敢。

因为我们在元列车上:这也是对 ML 社区本身反思的一年。几十年来,我们一直默默无闻,研究的问题要么太小而不重要,要么太深奥而不为世人所关注,我们的社区终于发现了几乎所有其他工程学科长期以来都必须努力解决的问题:我们的工作确实很重要。我们做什么,我们如何做,为谁的利益而做,真的很重要,并能实质性地影响我们生活的世界的未来。这对我们的责任观念和道德观念意味着什么?我们能否帮助解决当今地球面临的一些重大问题——并且确保 我们不会成为问题的一部分?我们能否努力成为一个更加包容多样化的社区,更好地代表我们服务的用户?

我期待 2019 年,期待更多的学习,更多的自省,更多的对世界的积极影响。我个人很高兴看到明年会有更多的 ML 进入物理世界。我的一些同事似乎领先了一步。我等不及了。我们很可能需要所有我们能够聚集的“元”来真正取得进展:物理世界将 ML 三重问题带到了最前沿:访问数据,如何设计有效的实时模型,以及如何处理模糊且往往相互冲突的目标。

机器学习:这个漂亮的黑匣子有多黑

原文:https://towardsdatascience.com/machine-learning-how-black-is-this-black-box-f11e4031fdf?source=collection_archive---------0-----------------------

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Kazimir Malevich Black Square 1915

现在的软件比几十年前好得多。机器学习比以前更好了。机器学习软件库现在已经成熟,并且经过了很好的测试。围绕它的技术也要好得多。作为一名工程师,我已经习惯了使用更高级和抽象的库、框架来掩盖底层操作,并且经常使用完全的黑盒。我说的黑盒指的是工具,我很少关心里面发生了什么。

人工神经网络(ann)有一个很大的优势,因为在对系统建模之前不需要物理先验信息。当一个新的计算在网络上运行时,它以一个不同的新权重矩阵结束。这是从小的随机值开始,然后随着程序的运行进行调整的结果。这就是为什么安的是黑盒。

除了随机起点这一至少从数学上难以描述网络行为的原因之外;网络处于变化之中,而数学实际上是无状态的。那是我们可以用数学来描述的;一个开始,一个结束,一个过程中的一个点,但学习过程是许多操作的结果序列,不是无状态的。

具有很少层的简单网络中的几个步骤可以由触发的函数和由此产生的权重调整来表示。添加更多的层,需要不同类型和比例的表示。在少量液体中表现能量波是可以的,但这不是描述海洋的方式。

除了人工神经网络的密度,这些系统允许随机变量和任意黑盒确定性函数的结合。它们支持推理算法和嵌套优化的智能初始化。

[## 张量流-神经网络游乐场

这是一种构建从数据中学习的计算机程序的技术。它非常松散地基于我们如何思考…

playground.tensorflow.org](http://playground.tensorflow.org/#activation=sigmoid&batchSize=4&dataset=gauss&regDataset=reg-plane&learningRate=0.03&regularizationRate=0&noise=0&networkShape=4,1&seed=0.12353&showTestData=false&discretize=false&percTrainData=50&x=true&y=true&xTimesY=false&xSquared=true&ySquared=true&cosX=false&sinX=false&cosY=false&sinY=false&collectStats=false&problem=classification&initZero=false&hideText=false)

人工神经网络通过从示例中学习来生成规则。为了学习,他们使用调整重量和测量的过程来匹配已知的结果。他们在运行中创建自己的基于示例的规则。它们的操作方式没有详细说明它们如何使用诸如反向传播之类的东西来评估和调整权重。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

A backpropogation function adjusting a weight within a network

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

The backpropagation formula

神经网络是能得出复杂答案的系统。为此,他们会生成自己的问题和规则。一些人认为,这些规则的出台缺乏透明度是一个问题。一些人认为,缺乏透明度,即黑箱问题,可能会妨碍人工神经网络的实用性。人们认为,如果我们依靠人工神经网络来寻找答案,它们需要能够解释自己,并告诉我们它们是如何得出答案的。

我仍然很乐意在手机上使用计算器来计算一个数的平方根,或者使用我当时使用的任何编程语言的内置数学函数。所有这些都使用不同的近似方法来解决平方根问题。然而事实是,在大多数情况下,如果我用来求平方根的方法得到了一个接近的估计值,我会很高兴。我们应该放心地相信黑盒吗?

把光线照进盒子里。

了解神经网络工作情况的一种方法是使用测试输入来探测网络,并在已知预期结果的情况下测量输入变量对输出的影响。有点像审问技巧,问一个你知道答案的问题来测试这个问题的真实性。对于使用反向传播的人工神经网络,这可以通过在反向传播步骤中跟踪误差项,然后测量每个输入影响输出的量来实现。

另一种学习信任网络衍生知识的方法是提取网络使用的规则。权重来自沿着输入和输出之间的非线性路径的变换。构成知识的所有值只是一系列数值。提取规则的另一个过程是通过启动学习过程来提取规则,从而将数值转化为符号形式。

查看规则不需要直接检查权重矩阵,而是象征性地呈现规则。通过比较输入/输出映射和形成决策树来提取规则。基于分类器搜索的决策树,寻找一系列智能组织给定数据集的规则。

神经网络接受输入并输出知识。网络使用一系列输入,然后创建输出,它们一起提供新的数据集。有可能形成该过程的符号和视觉表示。通过将输入和新输出传递给决策树分类器,我们可以揭示网络是如何获得其知识的。除了揭示网络使用的规则,它还给我们一种可视化这些规则的方式。

我们需要了解电才能开灯吗

机器学习的经典观点基于简约的理念。几乎在任何公式中,学习都可以归结为从数据中提取低复杂度的模式。

为什么要寻找网络建立规则的方式呢?如果一开始就对网络进行了适当的训练,这是一种多余的努力吗?然而,提取符号知识的能力有一些潜在的优势。从网络中获得的知识可以导致对数据中的模式和相关性的新见解。从符号知识中,更容易看出数据的哪些特征对结果是重要的。

给一个机器学习模型编程,把它正在做的事情表示成另一个模型,并不太难。这样做的问题是,它可能存在于平凡或琐碎的层面。这可能很耗时,而且不太适合理解大型复杂结构。还有一个问题是,导出的模型不能提供更清晰的理解。如果它减少了目标网络创建的规则,它可能过于简洁或给出不完整的描述,但可疑的危险是它会放大规则并进一步模糊所寻求的理解。

一种不同的方法是使用黑盒函数,并查看输入对该函数的重要性。应用它来量化算法超参数优化的效应

有一个软件库可以解决黑盒优化问题。这些方法使用基于序列模型的优化(贝叶斯优化),这是一种解决此类问题的迭代方法。 AutoWeka 是一个设计用于在 Weka 中提供自动模型选择和超参数优化的例子,WEKA 是一个易于使用的通常可用的机器学习算法的集合,用于使用机器学习的数据挖掘任务。

让盒子不断告诉我们我们所知道的

处理黑盒的另一种方法是通过增加更多的层来使网络更加密集。这是进入深层网络驻留的地方。深度网络的各种架构的土地,包括:卷积神经网络 (CNN 的)、递归神经网络 (RNN)、递归神经网络,以及解耦神经接口 (DNI)和可微分神经计算机 (DNCs)的更新模型。

深度学习背后的一个关键思想是从给定的数据集中提取高级特征。因此,深度学习旨在克服通常繁琐的特征工程任务的挑战,并帮助参数化具有许多层的传统神经网络。塞巴斯蒂安·拉什卡

深度网络与其传统的人工神经网络亲戚非常不同。形象化深层网络有多么不同的一个方法是,就其本质而言,它们过度适应它们从中学习的数据。这与更传统的人工神经网络相反,后者的目标是更接近拟合曲线。

当没有太多参数时,获得良好的拟合是可行的。深度学习可以接受多个输入,并通过多个层进行计算。即使使用随机权重,深层网络的隐藏层也非常强大,能够表示高度非线性的函数。

大多数深度学习算法采用某种形式的优化,通过调整 x 的值来最小化或最大化函数 f(x) 。要调整的函数称为目标函数、损失函数、误差函数或成本函数。深度学习利用这些功能来衡量和调整结果(预测、分类等)与输入的接近程度。目标是最小化损失函数。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

函数的导数

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

给出了点 xf(x) 的斜率,该斜率指定了输入微小变化的比例,以匹配输出的相应变化。

当大量重复和层可用时,减少损失函数的简单解决方案工作良好。一个反复出现的问题是,需要大的训练集来提供可靠的概括,因此需要大量的计算资源。

随机梯度下降

梯度下降法不是查看网络中的所有权重并重新计算它们,而是一种缩小相关权重空间的寻路方法,因此减少了更新和所需计算的次数。

随机梯度下降(SGD)方法用于许多机器学习模型,并且是用于 ANN 的主要算法,它还提供了一种在深度网络中产生精确结果的简单方法。随机梯度下降能够使用一小组样本给出损失的近似估计,从而减少所需的计算量。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

The Stochastic Gradient Descent Algorithm

其中 X 是 Xi 的输入值集合,W 是每个 Xi 值的重要性因子(权重)集合。正权重意味着该风险因素增加了结果的概率,而负权重意味着该风险因素降低了结果的概率。目标输出值η是学习率(学习率的作用是控制每次迭代时权重被修改到的水平。在这种情况下,f(z)是将一个大的输入域映射到一小组输出值的函数所生成的输出。

函数 f(z)是逻辑函数:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在损失函数中

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

期望估计使 Q(w)最小的参数 w

梯度下降是

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

其中η是学习率。

任意单点的随机梯度下降近似为

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

因此,以学习速率η的初始向量 w 随着训练数据的随机洗牌而被迭代 i次。通过使连接随机,由于不需要训练隐藏层的权重,所以训练时间更快是可能的。

虽然对收敛如何发生或合理的概括如何得出的理解水平是模糊的,但深度学习最适合应用于我们知道期待什么答案但很难找到它们的任务。此类任务的常见示例有:语音识别、图像分类、异常检测和字符识别都不是在处理未知数。

将黑盒视为给出正确答案的机器

[## 快,画!

神经网络可以学习识别涂鸦吗?看看它与你的画配合得有多好,并帮助教它,只要…

quickdraw.withgoogle.com](https://quickdraw.withgoogle.com/)

如果一个网络识别出一个字符是一个‘a’或者一个画成一条鱼,我们可以立即评估它的潜在正确性。如果网络将随机的灰色纹理识别为鹦鹉,我们可以很快看出它被愚弄了,而且很愚蠢。我们不需要知道它是如何被愚弄的,因为我们使用经验主义来测试网络的准确性。知道了这一点,我们就可以想办法增加体重调整等功能。

知道隐藏层如何工作的保证可以被另一种知识所取代。深度学习模型的性能及其范围替代;了解内脏的需要;语用评价。能够查看使用深度强化学习所获得的结果和性能,提供了一种实用的方式来查看正在发生的事情。

“我们需要想办法打开深度学习黑匣子。一个强有力的方法是可视化表达。”克里斯托弗·奥拉

还有另一种方式来查看黑盒。当使用神经网络来承担诸如翻译和自然语言处理的语言任务时,使用单词甚至短语的向量表示,这些被称为单词嵌入。

向量空间模型(VSM)表示(嵌入)连续向量空间中的单词,其中语义相似的单词被映射到附近的点(“彼此邻近嵌入”)。这些源于这样一种理论,即出现在相同语境中的单词共享语义。这是像 Word2Vec 这样的程序使用两层神经网络在多维向量空间内重建单词的语言上下文的方式;给出了一个字的矢量表示法

网络的隐层学习对输入数据进行变换,并以多维方式表示。它给出了空间中一个词与另一个词的接近程度的值。很难将这个空间可视化,但是使用降维来可视化高维表示的技术也将提供一种检查网络所使用的模型的方法。

Word2Vec 以数学方式检测单词与输入语料库中与之接近的其他单词的相似性。它给出单词特征的数字表示,例如上下文。它根据输入的其他单词训练单词。有两种方法可以做到这一点。一种是使用上下文来预测目标单词(一种称为连续单词包的方法)。另一种使用一个单词来预测目标上下文(称为跳格)。

该程序是一个神经网络的例子,它传递定义为向量的单词之间的关系,这些可以在空间中映射。这意味着深度学习过程有一个代表性的输出,即使很难可视化。谷歌开源的嵌入式投影仪在一定程度上克服了这个困难。

[## 嵌入式投影仪-高维数据的可视化

最合适的困惑值取决于数据的密度。不严格地说,更大的…

projector.tensorflow.org](http://projector.tensorflow.org/)

Christopher Colah 写道“不可思议的想法,不可理解的数据”以及如何“作为一名机器学习研究人员(他的工作)基本上是与不可理解的数据斗争——人类思维几乎不可能理解——并试图建立工具来思考和使用它”。然后,可视化成为理解深度学习网络实际上在做什么的理想工具。

反省

另一个克服对未知事物的黑箱恐惧的解决方案是开发一个具有自我知识的模型,一个能够回忆、叙述、推理、反思和自我分析的模型;有记忆的模型。一个有自我意识并从历史中学习的人。一种模型,能够表示变量和数据结构,并在长时间范围内存储数据。几种神经网络模型(注意力和增强递归神经网络)提供了一种将网络连接在一起的方式,允许一个网络探索另一个网络。

黑盒问题的一个方面是,迄今为止,大多数网络忽略了它们在每个学习周期中获得的知识。通过允许持有相同过程的多个副本,一种形式的递归神经网络(RNN)架构使用长短期 - 短期记忆 (LSTM)允许学习周期持续足够长的时间以改进下一个周期。网络之间的接口将允许网络之间相互通信。

向网络中添加读写存储器使得能够存储知识的学习机器成为可能,可微分神经计算机(DNC)就是这样。虽然通过为模型提供独立的可读写内存在架构上构建更加复杂,但 DNC将能够揭示更多关于它们黑暗部分的信息。所以对付黑盒的方法就是让它们黑一点,给它们学习黑魔法的方法。

就这么干吧

科学有着从实践中学习的悠久传统,即利用实验来形成理论。这也是一个提出命题或提出论文进行测试的领域。本文引用的很多材料都是机器学习的前沿。正如《机器如何学习》一书的作者瑞恩·洛威在最近的一篇评论文章中评论的那样,“我们认为,在等待‘完美’的时候,不发表‘好’的东西并不是科学前进的有效途径。”。

访问数据是另一种打开窥视黑匣子正在做什么的方法,能够使用相同的数据复制实验。一个重要的举措是开源,不仅是算法的设计,还有他们用来训练和喂养它们的数据集。谷歌、微软、脸书、阿帕奇、科学界、政府机构和许多其他公司不仅开源了软件,还开源了训练数据和 T2 实验室。

深度学习和物理学之间的相似性被用来描述为什么深度神经网络如此有效。共享可追溯到物理定律的简化属性,并使用两者都通用的某些层次形式的数据,这表明主题的结构与学习过程被要求执行的任务非常匹配。

考虑亚分子物理规范理论和大型强子对撞机的两端。两者都是用来寻求发现相似的启示的。科学家利用 LHC 发现了令人惊讶的结果,弦理论学家预测了令人惊讶的粒子。两者有时会汇聚到一起寻求,有时会展示联合起来的洞察力,一方告知另一方。有时令人震惊的理论,如理论认为引力是一种熵力,而不是爱因斯坦建议的基本相互作用,在理论建议的测试完成后,这些理论会被证明是可信的。

理论理解和实际应用是不总是相同的道路,但它们可能会导致相同的地方。机器学习的架构、算法和模型遵循类似的路径。一方面,理论知识遵循从实验中获得的知识,另一方面,理论表明实验需要去哪里。

参考资料:

人工神经网络——如何打开黑匣子?https://www . tu-braunschweig . de/Medien-DB/IGP/heinert _ 2008 . pdf

概率程序的贝叶斯优化https://papers . nips . cc/paper/6421-概率程序的贝叶斯优化. pdf

一种评估超参数重要性的有效方法【http://jmlr.org/proceedings/papers/v32/hutter14.pdfT4
汽车https://github.com/automl/autoweka

auto-WEKA 2.0:WEKA 中的自动模型选择和超参数优化http://www . cs . UBC . ca/labs/beta/Projects/auto WEKA/papers/16-599 . pdf

多层神经网络深度学习教程http://ufldl . Stanford . edu/Tutorial/supervised/MultiLayerNeuralNetworks/

卷积神经网络https://www . tensor flow . org/versions/r 0.12/tutorials/deep _ CNN/index . html #卷积神经网络

递归神经网络https://www . tensor flow . org/versions/r 0.12/tutorials/recurrent/index . html

递归(非递归!)TensorFlow 中的神经网络https://pseudo essential . WordPress . com/2016/06/20/recursive-not-recursive-Neural-Nets-in-tensor flow/

使用合成梯度解耦神经接口https://deep mind . com/blog/decoupled-Neural-networks-Using-Synthetic-Gradients/

可微分神经计算机【https://deepmind.com/blog/differentiable-neural-computers/

Python 机器学习书籍 ISBN-13:978–1783555130https://github.com/rasbt/python-machine-learning-book

递归神经网络的不合理有效性【http://karpathy.github.io/2015/05/21/rnn-effectiveness/

介绍人工智能实验【https://aiexperiments.withgoogle.com/

重新思考计算机视觉的初始架构http://static . Google user content . com/media/research . Google . com/en//pubs/archive/44903 . pdf

用深度强化学习玩雅达利https://arxiv.org/pdf/1312.5602.pdf

理解深度学习需要重新思考一般化https://openreview.net/pdf?id=Sy8gdB9xx

声波化的希格斯数据显示了一个令人惊讶的结果http://home . CERN/about/updates/2016/04/sonified-Higgs-data-show-surprise-result

单词的矢量表示法https://www.tensorflow.org/tutorials/word2vec/

如何有效地使用 t-http://distill.pub/2016/misread-tsne/SNE

可视化表示:深度学习和人类https://colah . github . io/posts/2015-01-Visualizing-presentations/

深度学习开放数据https://deeplearning4j.org/opendata

开源 DeepMind 实验室https://deepmind.com/blog/open-sourcing-deepmind-lab/

为什么深度廉价学习效果这么好?https://arxiv.org/pdf/1608.08225v2.pdf

弦理论可以检验吗?http://www . PBS . org/wgbh/nova/blogs/physics/2012/09/can-string-theory-be-tested/

超对称预测标准模型中每个粒子的伙伴粒子,以帮助解释为什么粒子有质量【https://home.cern/about/physics/supersymmetry

紧急引力和黑暗宇宙【https://arxiv.org/pdf/1611.02269v1.pdf

利用弱引力透镜测量首次测试弗林德的紧急引力理论https://arxiv.org/pdf/1612.03034v2.pdf

机器学习 I:一般观点

原文:https://towardsdatascience.com/machine-learning-i-a-general-perspective-dee207dba335?source=collection_archive---------0-----------------------

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

一年多来,我一直在研究机器学习,我决定把我的知识放到互联网上,以帮助非计算机科学家了解这个热门领域的基础知识。我计划写一系列的帖子,这些将是关于算法背后的故事,而不是数学计算。通过这种方式,我的目标是给人以直觉。

让我们从它的定义和它与其他科学领域的关系开始。机器学习的目标是以一般方式识别数据集中的模式。在您识别出模式之后,您可以使用这些信息来建模数据、解释数据或者预测以前没有见过的新数据的结果。机器学习是人工智能的一个子领域,机器学习算法用于其他相关领域,如自然语言处理和计算机视觉。

一般来说,有三种类型的学习,它们是监督学习、非监督学习和强化学习。他们的名字实际上告诉了他们背后的主要思想。

在监督学习中,系统在数据输出的监督下进行学习,因此如果数据集包含输出信息,则首选监督算法。让我给你举个例子。让我们假设你有一家医疗统计公司,你有一个数据集,其中包含患者的特征,如血压、血糖、每分钟心率等。你还可以了解他们一生中是否经历过心脏病。通过训练机器学习算法,你的系统可以找到特征和患心脏病概率之间的模式。因此,您的算法可以预测新患者是否有患心脏病的风险,这样医生就可以采取预防措施,挽救一个人的生命。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

A Decision Tree from one of my projects. x’s are features which are medical tests in this case and the 0,1 values in boxes represents existance of heart disease. As you can see, algorithm produced an interpretable tree.

如果您的数据不包含输出,并且您希望发现数据集中的聚类,则您更喜欢使用无监督算法。无监督学习的一个很好的例子是手写数字识别。在这个应用程序中,您知道应该有 10 个簇{0,1,2,3,4,5,6,7,8,9},但是手写数字的问题是手写数字有无数种方法,每个人写数字的方式都不同。计算机如何理解手写的东西?在那里,你应该使用无监督的算法,如 K-means 或 EM 算法。你用这些算法所做的是,你从初始随机聚类均值开始,迭代地这些均值点收敛到真实的聚类均值。完成训练后,如果你将聚类的平均值可视化,你会发现它们看起来真的像数字。然后你用相应的数字标记这些簇,当计算机遇到一个新的手写数字时,算法用最接近它的平均值标记这个数字。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Visualized means for 8 and 6, from one of my projects

最后,我们来谈谈强化学习。让我们假设你想创造一个下棋的智能代理。在国际象棋中,你不能一个接一个地处理动作。你的代理应该考虑一系列的动作,然后决定采取一个行动,使效用最大化。因此,你的代理应该对自己下几盘棋,然后决定最好的行动。我们称这种类型的学习为强化学习,它通常用在游戏中。

这是非计算机科学家对机器学习的快速介绍,我想继续发表关于模式识别、人工神经网络、概率模型等的文章。当我有时间的时候。

认知科学中的机器学习及其在网络安全中的应用

原文:https://towardsdatascience.com/machine-learning-in-cognitive-science-and-application-in-cyber-security-fb0a81e0f045?source=collection_archive---------16-----------------------

世界正以更快的速度增长。政府、行业和经济体对网络基础设施的依赖越来越大,这使得它们更加脆弱,也增加了网络攻击的机会。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Machine Learning in Cognitive Science and application in Cyber Security

在最具破坏性的形式中,网络攻击的目标是企业、军队、政府或其他国家和公民的基础设施资源。

认知安全可能特别有助于防止操纵人类感知的网络攻击。这种攻击有时被称为认知黑客,旨在以服务于攻击者目的的方式影响人们的行为。认知黑客是一种网络攻击,旨在通过利用人们的心理脆弱性来操纵人们的感知。攻击的目的改变了行为,通常是由于接触了错误的信息。因此,认知黑客是社会工程的一种形式,尽管它可能针对广泛的受众,而不是特定的个人。这一领域的认知安全工作包括使个人不那么容易受到操纵的非技术方法,以及旨在检测误导性数据和虚假信息并防止其传播的技术解决方案。

[## 网络安全非营利组织帮助中小企业打击网络犯罪|数据驱动的投资者

一个名为全球网络联盟(GCA)的非营利组织发誓要改善…

www.datadriveninvestor.com](https://www.datadriveninvestor.com/2019/02/22/cybersecurity-non-profit-to-help-smes-fight-against-cybercrime/)

像其他认知计算应用一样,自学式安全系统使用数据挖掘、模式识别和自然语言处理来模拟人脑,尽管是在高性能的计算机模型中。这种自动安全系统被设计成不需要人力资源就能解决问题。

增强的 SOC 运行

成熟的网络安全计划的一个支柱是检测攻击何时发生的能力。如今,已经有工具可以帮助一级和二级支持部门检测攻击和事件。然而,随着 IT 系统和攻击者越来越复杂,维护系统安全所需的人力成本可能会增加到难以承受的水平。这里进入了认知计算,自动摄取、加权、辨别和评估海量数据的能力有望成为现代威胁检测的核心。虽然人类的注意力可能会失败,更简单的算法可能会误诊威胁,但认知计算机有望强大到足以立刻看到整个系统,并且足够聪明,能够看穿微妙的异常和攻击模式。此外,它不仅可以自动识别威胁,还可以主动扫描系统配置中的漏洞,并提出纠正措施。所有这些都是决定网络攻击成败的速度。例如,通过使用基于认知计算的平台,安全运营中心(SOC)提供商已经能够将威胁调查和根本原因确定的平均时间从 3 小时减少到 3 分钟 4 。这可能有助于增加组织 SOC 的覆盖范围,也有助于弥合许多 SOC 目前面临的技能和人才差距,因为需要更少的安全工程师来进行分类和第一反应。

自动化威胁情报

到目前为止,网络安全在很大程度上依赖于反应策略,在威胁出现时做出反应。虽然认知技术可以实现这一点,但它们也有可能通过将其大规模并行信息分析技能转向当今存在的巨大网络安全信息库来主动保护其所有者的系统。认知技术的供应商承诺能够从数百万不同的信息源获取数据,以便识别对单个公司有意义的可操作的威胁情报,使他们能够主动做好准备。这种情报包括威胁行动者的意图、目标和使用方法的暗示和早期迹象。当您的响应速度和准确性决定了攻击的影响时,认知计算挖掘数百万信息源以寻找早期指标的承诺可能是无价的。

硬币的另一面——应用网络安全保护认知计算

作为认知计算的促成因素,安全性扮演着同样重要但往往被忽视的角色。为了充分利用认知计算,建立和维护预防和检测网络安全的能力以确保底层系统和数据的机密性、完整性和可用性至关重要。医疗诊断是认知计算能力的另一个强有力的例子,在这种情况下,被处理的信息(私人医疗数据)的安全性至关重要。此外,解决更复杂的问题可能需要额外的计算能力,这需要由外部分布式系统(如公共云)提供。此外,基于神经网络和相关见解的预测分析的有效性和准确性将依赖于既未被破坏也未被操纵的正确数据源的可用性。在所有这些情况下,实施和增强众所周知的网络安全能力,如严格和精细的身份和访问控制、数据泄漏预防机制、强大的加密技术以及系统健康监控能力,仍然与认知计算技术本身的任何投资同等重要。

认知观

在这个阶段,认知计算仍然通过建议策略和计算结果的概率来补充人类安全专家。然而,主要行业参与者已经推出了基于认知的威胁检测和安全分析服务。瑞士金融市场基础设施的运营商 SIX 就是一个很好的例子,该公司正在一个新的“认知安全运营中心”部署 IBM Watson 以实现网络安全

随着人类和计算机正在学习以过去不可能的方式进行协作,预计随着时间的推移,更多基于认知计算的安全功能将会发展。有朝一日,这类系统甚至有能力保护自己免受威胁,从而满足认知计算的安全需求。虽然这可能还需要几年时间,但旅程已经明确开始。

金融中的机器学习

原文:https://towardsdatascience.com/machine-learning-in-finance-2074bc6bf3da?source=collection_archive---------11-----------------------

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

应用人工智能对金融企业来说有很多好处。事实上,很多人已经成功做到了这一点。为了让你有一个想法——这里有一个人工智能在金融领域的顶级应用的总结。

人工智能交易

谈金融不能不谈交易的机器学习。事实上,有太多的东西值得讨论,我们用了一整篇文章来讨论交易的机器学习

让我们看看最重要的几点:

人工智能不会取代交易员,而是帮助他们

交易者需要处理大量的信息——及时了解最新情况,并对事情的发展趋势有一个清晰的预感。

他们还进行严格的统计分析,以找出他们怀疑的小型市场低效的细节。

所有这些都需要时间——因为交易是一个竞争性的游戏——你越快,你得到的馅饼就越多。

人工智能帮助交易者更快、更准确地进行分析,通过发布新闻(例如情绪分析);提高对外部因素(如降雨、货物供应或选举结果)的预测,并为交易者自动微调高频交易机器

自动化且有利可图的人工智能交易基本上是一种幻想

在与其他人竞争的复杂系统中(如股票市场),人工智能仍然比人类弱得多,所以要警惕任何承诺从纯人工智能系统中获利的东西。

你犯了很多错误,让它看起来是可能的,但实际上却不是。

关于为什么会这样,以及如何使用人工智能的更多细节,请查看关于交易的机器学习的深度文章

让投资组合管理更好更便宜

投资组合经理会告诉你把钱投资到哪里——这取决于你的财务目标是什么,以及你能应对多大的市场波动(你的风险承受能力)。

他们挑选不同类型的投资,并安排一个投资组合(一份资产清单,加上你应该投入其中的资金比例)。如果市场发生变化(这种情况经常发生),就需要通过在不同资产之间转移资金来重新调整投资组合。

对一个人来说,这份工作是一个时间密集型的过程——因此银行收取很高的费用,并且只提供给他们富有的客户。但是好的投资建议对每个人都有帮助,不管你的存款有多少。

这就是“机器人顾问”迅速崛起的原因。他们不仅非常便宜,而且实际上比昂贵的人力投资组合经理做得更好。

为什么?因为许多人类顾问无法帮助自己,并通过“秘密提示”向他们的客户承诺高额回报——这在有效的市场中总是一种幻觉,因此是一个坏主意。这些“建议”最终会给你的投资组合增加很多风险——可能会让你的大部分积蓄化为乌有(我见过几次这种情况——这可不太妙)。

人工智能在投资组合管理中如此有用的秘密在于,决定你的理想资产组合(投资组合)的每一个因素都可以很容易地用数字表示:你的年龄、收入、家庭状况、何时需要钱(买房子、孩子、教育等等)。)和你的风险承受能力——这些都很容易,但都是数据库中的数字。

从这个数据库中,人工智能可以预测你的偏好(比如你什么时候可能需要多少钱)。一旦你有了这些信息,那么正确分配你的钱就是简单地解决一个数学公式——这对任何计算机来说都是小菜一碟。

想了解更多?深入了解现代投资组合理论背后的细节

使欺诈检测更加强大

随着数字商务(通过信用卡和在线支付)的发展,欺诈的动机也在不断增加。

传统的欺诈模式依赖于简单的规则系统——旨在抓捕欺诈者的清单。这些发现欺诈的简单方法的最大缺点是它们会产生很多假警报。这意味着一个合法的顾客会被拒绝购买——然后他理所当然地感到不安,会去别的地方购买。

机器学习可以产生更准确的欺诈检测清单——同时也减少了错误警报。为什么 AI 模型更好?以下是三大原因:

  • 数据驱动:机器学习模型检查所有欺诈性购买的例子,并在没有人类偏见的情况下,找到将欺诈者与正常客户区分开来的确切模式。
  • 更复杂:机器学习模型可以轻松捕捉成千上万的小模式,并在检查交易时使用它们。手写清单时不太现实的东西。这使得模型更加准确,并产生更少的错误警报。
  • 持续更新:诈骗者很有创意,不断尝试新事物来欺骗系统。一旦你发现了你的系统还没有发现的欺诈,只需要几分钟就可以更新模型,并让它从现在开始学习如何识别新的伎俩。—伟大的事情是:无论你是在与 1 个还是数千个有创造力的欺诈者作战,人工智能系统都可以轻松地学习所有人的模式,无需抄近路和一概而论。

欺诈系统也大多是副作用,就像交易中的算法:仍然需要有人对被标记为欺诈的交易进行最终检查。为什么?因为一对一人类仍然更擅长阅读人类的行动——机器学习只是让我们的工作变得更容易。

想了解更多?我们写了一篇关于如何使用人工智能更好地检测移动点击欺诈的文章。

使保险承保更加准确和个性化

与投资组合管理(上文)类似,保险承保是一项具有一组清晰的量化因素(输入)、量化目标和固定输出的工作:保险价格及其随时间推移的保费。

这是自动化统计决策的理想环境*——意思是:机器学习。

多年来,承保人已经使用更简单的统计模型来估计承保风险,并决定合适的保费应该是多少。

机器学习模型可以走得更远——让几乎整个核保工作变得廉价和可扩展。这个问题的关键在于一家保险公司的数据:他们已经计算出的数千份合同——在人类输入的情况下——是训练机器学习模型学习自己撰写合同的理想基础。

像这样的 Machin learning 模型为廉价的个性化承保打开了大门。这在 B2C 领域尤其有用(如人寿保险)。

但这只是开始——保险业务是如此彻底的统计数据,以至于人工智能还有更多应用。这里有两个例子:

好的司机支付较少的汽车保险

一些保险公司已经从你驾驶的方式(你的远程信息签名)中预测出你发生事故的风险。他们使用算法来学习哪种驾驶行为是安全驾驶员的标志,然后向他们提供更便宜的费率。

这使得保险从竞争中脱颖而出,吸引那些不想为危险司机的错误买单的安全司机。

预测你会选择哪种保险

机器学习让保险公司的生活变得更容易的另一种方式是预测你最终会选择哪种保险。这让你的顾问的工作变得容易多了,因为他可以马上向你提出对你来说最有意义的选择。

这只是冰山一角

还有很多应用,比如:预测你是否会成为忠实客户,未来是否会拖欠保险或者提出索赔

银行服务的目标销售

银行有很多关于你的非常有价值的数据——除了知道你的年龄、收入和住址——他们还知道你的确切消费行为。委婉地说,这揭示了你的许多情况。也许比你的网上浏览行为更多。

如果一家银行使用了隐藏在数据中的所有信息,它可以了解你的很多信息,包括:你现在对哪些服务感兴趣

银行雇佣顾问,他们可以给 soma 个人建议——但是他们只有时间给大客户,而且顾问需要很多经验才能正确解读迹象。

机器学习可以找到您数据中的信息,并预测哪种银行产品符合您当前的兴趣:

  • 新信用卡还是更高的信用卡额度?
  • 临时贷款?或者也许
  • 一个房贷,因为你表现的像是马上要买房的人。

不仅如此,他们还可以使用机器学习来预测你偿还信贷、贷款或抵押贷款的可能性,从而预测他们应该向你收取的利息。

这将日益导致**主动放贷。**得益于算法分析,银行不再等待你申请贷款,而是为你和他们数百万的其他客户提供量身定制的贷款。

流失预测:预测你是否会换银行

一旦你决定换银行,并让你的顾问知道,通常要说服你留下来就太晚了。如果他们能早点看到预警信号,并在你决定离开之前有机会让你更开心,那就更好了*。*

银行可以使用与上述相同的资料——根据你的数据和交易历史建立——来预测你是否有可能离开并转投另一家银行。这给顾问们提供了早期预警,让他们知道应该关注谁,并让银行挽救了许多原本会流失的客户。

那么为什么 AI 在金融领域如此有用呢?

简单来说就是因为金融是一个用数据和统计玩的游戏。金融产品大多是数学赌注:平均而言,应该获利的统计方程式。

在这个游戏的更简单和更重复的部分,我们可以用我们的大脑代替机器学习,并自动化许多决策。

除非我们直接和其他人竞争——比如在交易或欺诈中——人类让游戏变得更加复杂。那我们最好使用我们最强的武器:我们自己的大脑。

原载于www.datarevenue.com

金融中的机器学习:为什么、什么和如何

原文:https://towardsdatascience.com/machine-learning-in-finance-why-what-how-d524a2357b56?source=collection_archive---------0-----------------------

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

金融领域的机器学习可能会产生神奇的效果,尽管它的背后并没有什么神奇之处(嗯,可能只有一点)。尽管如此,机器学习项目的成功更多地取决于建立有效的基础设施,收集合适的数据集,以及应用正确的算法。

机器学习正在金融服务业取得重大进展。让我们看看为什么金融公司应该关心,他们可以用 AI 和机器学习实现什么解决方案,以及他们究竟如何应用这项技术。

定义

我们可以将机器学习(ML)定义为数据科学的一个子集,它使用统计模型来获得洞察力并做出预测。下图解释了人工智能、数据科学和机器学习之间的关系。为了简单起见,我们在这篇文章中主要关注机器学习。

机器学习解决方案的神奇之处在于,它们从经验中学习**,而不是被明确编程**。简单地说,您需要选择模型并向它们提供数据。然后,该模型会自动调整其参数以改善结果。

数据科学家用现有数据集训练机器学习模型,然后将训练有素的模型应用到现实生活中。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

该模型作为后台进程运行,并根据其训练方式自动提供结果。数据科学家可以根据需要频繁地重新训练模型,以保持它们的最新和有效。例如,我们的客户 Mercanto 每天都在重新训练机器学习模型。

一般来说,你输入的数据越多,结果就越准确。巧合的是,巨大的数据集在金融服务行业非常普遍。有数十亿字节的交易、客户、账单、资金转账等数据。这非常适合机器学习

随着技术的发展,最好的算法是开源的,很难想象没有机器学习的金融服务的未来。

也就是说,大多数金融服务公司仍然没有准备好从这项技术中获取真正的价值,原因如下:

  1. 企业通常对机器学习及其对组织的价值抱有完全不切实际的期望。
  2. 机器学习中的 R&D 成本很高。
  3. DS/ML 工程师的短缺是另一个主要问题。下图说明了对人工智能和机器学习技能需求的爆炸式增长。
  4. 在更新数据基础设施方面,财务主管不够灵活。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们将在这篇文章的后面讨论如何克服这些问题。首先,让我们看看为什么金融服务公司不能忽视机器学习。

为什么要考虑金融领域的机器学习?

尽管面临挑战,许多金融公司已经开始利用这项技术。下图显示,金融服务公司的高管们非常重视机器学习,他们这样做有很多理由:

  1. 流程自动化降低了运营成本。
  2. 由于更高的生产力和增强的用户体验而增加了收入。
  3. 更好的合规性和增强的安全性。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

有各种各样的开源机器学习算法和工具,非常适合金融数据。此外,成熟的金融服务公司拥有雄厚的资金,可以购买最先进的计算硬件。

由于金融领域的定量性质和大量历史数据,机器学习有望增强金融生态系统的许多方面。

这就是为什么如此多的金融公司正在大力投资机器学习研发。至于落后者,忽视人工智能和人工智能可能会被证明是代价高昂的。

金融领域有哪些机器学习用例?

让我们来看看金融领域一些很有前景的机器学习应用。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

工序自动化

流程自动化是机器学习在金融领域最常见的应用之一。该技术允许取代手工作业,自动化重复性任务,并提高生产率。

因此,机器学习使公司能够优化成本、改善客户体验和扩大服务。以下是机器学习在金融领域的自动化应用案例:

  • 聊天机器人
  • 呼叫中心自动化。
  • 文书自动化。
  • 员工培训游戏化,等等。

以下是银行业流程自动化的一些示例:

摩根大通推出了一个合同智能(COiN)平台,该平台利用了机器学习技术之一的自然语言处理。该解决方案处理法律文档并从中提取重要数据。手动审查 12,000 份年度商业信贷协议通常需要大约 360,000 个工时。然而,机器学习允许在几个小时内审查相同数量的合同。

BNY·梅洛将流程自动化集成到他们的银行生态系统中。这项创新每年节省了30 万美元,并带来了大范围的运营改进

富国银行通过 Facebook Messenger 平台使用一个人工智能驱动的聊天机器人与用户交流,并提供密码和账户方面的帮助。

Privatbank 是一家乌克兰银行,在其移动和网络平台上实现了聊天机器人助手。聊天机器人加快了一般客户查询的解决,并允许减少人工助理的数量。

安全性

随着交易、用户和第三方集成数量的增加,金融领域的安全威胁也在增加。而机器学习算法在检测欺诈方面非常出色。

例如,银行可以利用这项技术实时监控每个账户的数千个交易参数。该算法检查持卡人采取的每个行动,并评估试图进行的活动是否是该特定用户的特征。这种模型可以高精度地发现欺诈行为。

如果系统识别出可疑账户行为,它可以要求用户提供额外的身份证明来验证交易。或者甚至完全阻止该交易,如果该交易有至少 95%的可能性是欺诈的话。机器学习算法只需要几秒钟(甚至几秒钟)就可以评估一项交易。这种速度有助于实时防止欺诈,而不仅仅是在犯罪发生后发现它们。

金融监控是金融领域机器学习的另一个安全用例。数据科学家可以训练系统来检测大量的小额支付,并将此类洗钱技术标记为 smurfing。

机器学习算法也能显著增强网络安全。数据科学家训练一个系统来发现和隔离网络威胁,因为机器学习在分析数以千计的参数和实时性方面首屈一指。在不久的将来,这项技术很有可能会为最先进的网络安全网络提供动力。

AdyenPayoneerPaypalStripeSkrill 是一些在安全机器学习领域投入巨资的著名金融科技公司。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

承销和信用评分

机器学习算法非常适合金融和保险领域常见的承保任务

数据科学家在数千个客户资料上训练模型,每个客户有数百个数据条目。然后,一个训练有素的系统可以在现实生活环境中执行相同的承保和信用评分任务。这种评分引擎帮助人类员工更快更准确地工作。

银行和保险公司拥有大量的历史消费者数据,因此可以使用这些条目来训练机器学习模型。或者,他们可以利用大型电信或公用事业公司生成的数据集。

例如, BBVA 银行与另一个信用评分平台 Destacame 合作。该银行旨在为拉丁美洲信用记录不佳的客户增加信贷渠道。Destacame 通过开放 API 访问公用事业公司的账单支付信息。使用账单支付行为,Destacame 为客户生成一个信用评分,并将结果发送给银行。

算法交易

在算法交易中,机器学习帮助做出更好的交易 决策。一个数学模型实时监控新闻和交易结果,并检测可能迫使股价上涨或下跌的模式。然后,它可以根据自己的预测,主动卖出、持有或买入股票。

**机器学习算法可以同时分析成千上万的数据源,**这是人类交易员不可能实现的。

机器学习算法有助于人类交易员获得相对于市场平均水平的微弱优势。此外,鉴于交易量巨大,这一小小的优势往往会转化为可观的利润。

机器人顾问

机器人顾问现在在金融领域很常见。目前,机器学习在咨询领域有两个主要应用。

投资组合管理是一项在线财富管理服务,利用算法和统计数据来分配、管理和优化客户的资产。用户输入他们目前的金融资产和目标,比如说,在 50 岁时存下 100 万美元。然后,机器人顾问根据风险偏好和预期目标,在投资机会中分配当前资产。

理财产品推荐。许多在线保险服务使用机器人顾问向特定用户推荐个性化的保险计划。由于费用较低,以及个性化和标准化的建议,客户选择机器人顾问而不是个人理财顾问。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如何在金融中利用机器学习?

尽管人工智能和机器学习有诸多优势,但即使是财大气粗的公司也很难从这项技术中挖掘出真正的价值。金融服务业的在职者希望利用机器学习的独特机会,但实际上,他们对数据科学如何工作以及如何使用它有一个模糊的想法。

他们一次又一次地遇到类似的挑战,比如缺乏业务关键绩效指标。这反过来导致不切实际的估计和耗尽预算。仅仅有一个合适的软件基础设施是不够的(尽管这将是一个好的开始)。交付有价值的机器学习开发项目需要清晰的愿景、扎实的技术天赋和决心。

一旦你很好地理解了这项技术将如何帮助实现业务目标,就开始进行想法验证。这是数据科学家的任务。他们调查这个想法,并帮助你制定可行的 KPI 和做出现实的估计。

注意此时你需要收集所有的数据。否则,您将需要一名数据工程师来收集和清理这些数据。

根据特定的使用案例和业务条件,金融公司可以遵循不同的路径来采用机器学习。我们去看看。

放弃机器学习,转而关注大数据工程

通常,金融公司开始他们的机器学习项目只是为了意识到他们只需要适当的数据工程。 Max NechepurenkoN-iX 的高级数据科学家,评论道:

在开发[数据科学]解决方案时,我建议使用 奥卡姆剃刀 原则,这意味着不要过于复杂。大多数以机器学习为目标的公司实际上需要专注于可靠的数据工程,将统计数据应用于聚合数据,并将这些数据可视化。

仅仅将统计模型应用于经过处理且结构良好的数据,就足以让银行隔离其运营中的各种瓶颈和低效。

这些瓶颈的例子有哪些?这可能是特定分行的排队、可以消除的重复任务、低效的人力资源活动、移动银行应用程序的缺陷等等。

此外,任何数据科学项目的最大部分都可以归结为构建一个协调的平台生态系统,从数百个来源(如 CRM、报告软件、电子表格等)收集孤岛数据。

在应用任何算法之前,您需要对数据进行适当的结构化和清理。只有这样,你才能进一步将数据转化为洞察力。事实上,ETL(提取、转换和加载)和进一步清理数据占了机器学习项目时间的 80%左右。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

使用第三方机器学习解决方案

即使你的公司决定在即将到来的项目中利用机器学习,你也不一定需要开发新的算法和模型。

大多数机器学习项目处理的都是已经解决的问题。谷歌、微软、亚马逊和 IBM 等科技巨头将机器学习软件作为服务出售。

这些开箱即用的解决方案已经被训练来解决各种业务任务。如果你的项目覆盖相同的用例,你相信你的团队能胜过这些拥有巨大 R&D 中心的科技巨头的算法吗?

一个很好的例子是谷歌的多种即插即用推荐解决方案。该软件适用于各种领域,检查它们是否适合您的业务案例是合乎逻辑的。

机器学习工程师可以实现专注于您的特定数据和业务领域的系统。专家需要从不同的来源提取数据,转换数据以适应特定的系统,接收结果,并可视化结果。

代价是缺乏对第三方系统的控制和有限的解决方案灵活性。此外,机器学习算法并不适合每个用例。 Ihar RubanauN-iX 的高级数据科学家评论:

目前还不存在通用的机器学习算法。在将算法应用于不同领域的不同业务案例之前,数据科学家需要调整和微调算法。

因此,如果谷歌的现有解决方案解决了你特定领域的特定任务,你可能应该使用它。如果没有,那么就以定制开发和集成为目标

创新和整合

从头开始开发机器学习解决方案是风险最大、成本最高、最耗时的选择之一。尽管如此,这可能是将 ML 技术应用于某些商业案例的唯一方法。

机器学习的研究和开发针对特定领域的独特需求,需要进行深入的调查。如果没有现成的解决方案来解决这些具体问题,第三方机器学习软件很可能会产生不准确的结果。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

尽管如此,你可能还是需要大量依赖谷歌等公司的开源机器学习库。当前的机器学习项目主要是将现有的最先进的库应用于特定的领域和用例。

在 N-iX,我们已经确定了成功的企业研发项目在机器学习中的七个共同特征。他们在这里:

  1. 明确的目标。在收集数据之前,你至少需要对你想要用人工智能和机器学习实现的结果有一些大致的了解。在项目的早期阶段,数据科学家将帮助您将想法转化为实际的 KPI。
  2. 机器学习解决方案的健壮架构设计。你需要一个有经验的软件架构师来执行这项任务。
  3. 合适的大数据工程生态系统(基于 Apache Hadoop 或 Spark)是必备的。它允许收集、集成、存储和处理来自金融服务公司众多孤立数据源的大量数据。大数据架构师和大数据工程师负责构建生态系统。
  4. 在新创建的生态系统上运行 ETL 过程(提取、转换和加载)。大数据架构师或机器学习工程师执行这项任务。
  5. 最后的数据准备。除了数据转换和技术清理之外,数据科学家可能需要进一步细化数据,以使其适合特定的业务案例。
  6. 应用适当的算法,基于这些算法创建模型,微调模型,并用新数据重新训练模型。数据科学家和机器学习工程师执行这些任务。
  7. 洞察力的清晰可视化。商业智能专家对此负责。此外,您可能需要前端开发人员使用易于使用的 UI 来创建仪表板。

小项目可能需要更少的努力和更小的团队。例如,一些 R&D 项目处理小数据集,因此它们可能不需要复杂的大数据工程。在其他情况下,根本不需要复杂的仪表板或任何数据可视化。

关键要点

  • 金融从业者最常使用机器学习来实现流程自动化和安全性。
  • 在收集数据之前,您需要对数据科学的预期结果有一个清晰的认识。在项目开始之前,有必要设置可行的 KPI 并做出现实的估计。
  • 许多金融服务公司需要数据工程、统计和数据可视化,而不是数据科学和机器学习。
  • 训练数据集越大、越干净,机器学习解决方案产生的结果就越准确。
  • 您可以根据需要频繁地重新训练您的模型,而无需停止机器学习算法。
  • 没有适用于不同商业案例的通用机器学习解决方案。
  • 机器学习中的 R&D 代价高昂。
  • 像谷歌这样的科技巨头创造了机器学习解决方案。如果你的项目关注这样的用例,你不能期望胜过 Google、Amazon 或 IBM 的算法。

最初发表于www.n-ix.com

尼日利亚的机器学习,今天?

原文:https://towardsdatascience.com/machine-learning-in-nigeria-today-b2a953145c1f?source=collection_archive---------4-----------------------

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

拉各斯 2017 女性科技创客峰会是其他 14 个全球峰会之一,但也是唯一一个在非洲举办的峰会,于 4 月在拉各斯商学院成功举办。

这是丰富多彩的,引人入胜的,充满了许多时刻,我相信 300 多名与会者还没有忘记。

主题为“讲述你的故事”,由来自 Google、silences、Andela、SheLeadsAfrica 的摇滚明星演讲者和来自尼日利亚各地的许多知名女性在科技组织/倡议中进行了精彩的演讲和会议。

我喜欢下午有两个研讨会。一个是在公共演讲上无语,标记为“开发你的故事”,另一个是在tensor flow——谷歌的开源机器学习 API。

当然,两个研讨会都很成功…

这是我作为 SSA 社区经理最后一次参与谷歌开发者关系

在活动的筹备过程中,当我准备共同主持 Tensorflow 研讨会时,我一直在思考如何让机器学习(简称 ML)对今天的非洲企业和初创公司有价值,以及是否有我可以开发的核心用例,让 ML 与与会者更相关。

当然,在当今一些最引人注目的应用程序中,我们喜欢并认为理所当然的许多伟大特性都是 ML 驱动的;就像 GMail 中良好的垃圾邮件过滤和智能回复,Google Photos 中的自动图像识别和分类,甚至是上传到脸书的图像中便于标记的人脸识别。

我思考最多的问题是,非洲的企业如何利用机器学习来实现很酷的功能和服务,或者为现有的功能和服务创造更好的用户体验?

我决定引用常见的疑点——电子商务和娱乐——作为非洲人可以从 ML 中获得快速成功和巨大支持的垂直行业。我与导师分享了我的想法,她在 Tensorflow 研习班的课程中将这些想法作为伟大的 ML 范例呈现出来。

一切都很顺利——除了我没有按计划发表这篇文章。从那时起我就把它留在草稿里,到现在已经快 3 个月了!

最近拉各斯洪水的启示

这篇文章不发表,这个周末就不会过去。想到这里,我不禁想起了许多拉各斯居民的日常琐事、挣扎和现实——疯狂的交通、拥堵、不分青红皂白的垃圾处理、鲁莽的驾驶和停车、需要一年(或更长时间)预付的昂贵租金、兜售(或者你也可以称之为粗人)、糟糕的道路、维护不善的下水道、洪水等等

今年,我亲身经历了一年一度的拉各斯洪水。曾经有一段时间,水涨到了我的腰带以下。不要相信我的话,看下面几张照片…

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

今天的尼日利亚,机器学习能解决这些吗?这值得探索,我很高兴我不是唯一一个朝这个方向思考的人

最近拉各斯的洪水让我想到了威尼斯…甚至像 T2 威尼斯 T3 一样设计和建造的拉各斯。然后我突然想起机器学习可以帮助我通过威尼斯的眼睛想象我被洪水淹没的拉各斯。

使用 https://deepart.io ,我用一幅威尼斯的画转换了一些最近拉各斯洪水的照片。一个威尼斯主题但没有独木舟的拉各斯看起来可能是这样的:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

有人也一直忙着为尼日利亚的机器学习出疯狂的随机想法。

玩笑归玩笑,机器学习拯救世界

好的。除了威尼斯主题的洪水淹没的拉各斯和优化自动驾驶汽车的算法的新奇之外,对于每年洪水淹没的拉各斯,我们今天可以从非洲的机器学习中受益吗?

图像识别和分类

许多以图像为主的非洲应用程序可以通过图像识别、分类和标记来改善功能和用户体验。

在 Konga 上搜索*“智能手机”,仅显示名称中带有“智能手机”*(包括空格)*的项目。“智能手机”也一样。*没有一个结果包括 iPhone,一款 Konga 目录中的智能手机?

电子商务平台可以通过使用来自商品图像的元数据自动标记商品目录中的商品来优化这种用户体验。谷歌云视觉 API 可以通过分析 iPhone 的照片来自动识别 iPhone 是否为智能手机。然后可以用它来标记商品,并建立一个索引,以便在搜索过程中识别它。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我也喜欢搜索只有游泳池的酒店。有高尔夫球场的酒店怎么样?分析他们的图像库可以揭示这些。

视频标记、标签和编目

我是一个爸爸,我的儿子刚满一岁。我们关系很好,我妻子有时会嫉妒。他喜欢卡通片,当卡通人物唱歌或跳舞时,他喜欢跳舞。他对电影也是如此。 iROKOtv 如何帮我在尼日利亚电影中加入唱歌或跳舞的场景?

我有一个肯尼亚朋友,她第一次去拉各斯,当她乘坐的一辆汽车被拿着枪的尼日利亚警察拦下时,她吓了一跳。虽然对许多尼日利亚人来说,这是相对正常的,但这是她第一次近距离使用这种武器。在她下一次访问之前, iROKOtv 能否通过在尼日利亚电影中加入警察或枪战场景来帮助她更好地适应尼日利亚的警察现实?

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在 iROKOtv 上搜索“警察”或“交通”什么也没有,我想这是因为没有电影或演员的名字中有这些词。

对于 2018 年的情人节广告活动,iROKOtv将如何从其目录中创建最佳接吻场景的精彩视频?如果 iROKOtv 的目录中有婚礼派对,搜索“舞蹈”会出现它吗,因为它是尼日利亚电影中最好的舞蹈场景之一?

Google 的云视频智能 API 可以帮助解决这些用例。像视觉 API 一样,它分析视频和表面元数据,这些元数据可用于识别、分类和搜索它们

行动呼吁

今天,机器学习在非洲有着巨大的潜力!大型科技公司(谷歌、苹果、微软 e.t.c)已经将人工智能命名为未来——不是应用程序,不是移动设备,也不是操作系统——而是我们赋予计算机学习、做事和做人的能力,以及它所蕴含的潜力。这是实现变革体验的能力。

借助 Tensorflow、Cloud Vision API 和 Video Intelligence API 等工具,我们不必等到我们可以实现算法,让自动驾驶汽车在我们的地形中工作。我们可以马上开始获得价值

我们的用户使用谷歌照片、脸书等获得了很好的体验,并有很高的期望。再说,就是看

我想收到你的来信。请在下面的评论区分享你的想法,或者发推文 @chaluwa 提出任何问题或建议。另外,如果你觉得这篇文章有用,别忘了推荐和分享它。

搜索引擎广告中的机器学习

原文:https://towardsdatascience.com/machine-learning-in-sponsored-search-6c9ab18e6c67?source=collection_archive---------4-----------------------

这篇文章旨在介绍一些与搜索引擎广告(赞助搜索)中的机器学习挑战相关的关键论文。这篇文章假设读者熟悉维基百科层面的搜索引擎广告。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

拉哈文和伊耶。评估用于查询到广告匹配的向量空间和概率模型。

比较了传统的信息检索方法——BM25、改进的 TFIDF、语言模型和翻译模型与广告查询的相关性。本文进一步修改了翻译模型,通过混合模型增加了查询-广告对中广告被点击的概率。

索尔多尼、本吉奥、瓦哈比、利奥马、格鲁尔·西蒙森和聂。用于生成上下文感知查询建议的分层递归编解码器

作者采用深度学习来获得查询建议。该论文声称,虽然过去的方法只能将以前看到的查询作为查询建议,但所提出的方法能够根据需要生成综合建议。他们的工作对于长尾查询特别重要,因为这些查询很少出现,甚至是唯一的,因此,将这样的查询匹配到头部查询并不总是成功的。作者将递归神经网络(RNNs)改进为分层递归编解码器。查询被一个字一个字地馈送给 RNN,而查询会话被使用另一组 rnn 并行地一个查询一个查询地馈送。该方法的训练目标是在看到前一个查询之后,在预测会话中的下一个查询时最大化会话的对数似然。

D .希拉德,s .施罗德,e .马纳沃格卢,h .拉加万,c .莱格特。提高赞助搜索中的广告相关性。

作者将广告-查询相关性建模为机器学习问题。作者建议使用 19 个初始特征,包括广告副本和查询之间的公共 n 元语法以及广告和查询之间的余弦相似性。作者通过添加“点击”功能(如点击频率和广告被点击时的位置)进一步改进了模型。对于新广告,作者建议利用更高阶的点击聚合,如广告活动、广告类别等

A .梅塔。在线匹配和广告分配。理论计算机科学,8(4):265–368,2012

赞助搜索也从收入最大化的角度进行了研究。它通常被建模为在线二分图,其中一组图(广告)是已知的,而另一组是在线的(查询)。收入最大化的目标是将传入的查询与现有的广告相匹配,以实现收入最大化。作者构建了一个算法,考虑到相同的二分模型,即有“n”个投标人,每个人都有一个每日预算,“b”,搜索引擎只有在用户点击广告时才会付费。

这与其说是一篇 ML 论文,不如说是一篇优化论文,但对于想从事搜索广告和机器学习的人来说,这是一篇非常重要的论文。

T. Graepel,J. Q. Candela,T. Borchert 和 R. Herbrich。微软必应搜索引擎中赞助搜索广告的网络规模贝叶斯点击率预测。

这篇论文是关于 CTR 预测的,在 ICML 发表。所提出的算法基于将输入特征映射到概率的回归。它在模型的权重上保持高斯信念,并执行从近似消息传递中导出的高斯在线更新。作者根据经验表明,该算法在 Bing 广告上的表现优于考虑的基线。

M .理查森、e .多明我会斯卡和 r .拉格诺。预测点击:估计新广告的点击率。

这是另一篇关于 CTR 预测的论文。作者试图将新广告的点击率估计问题建模为机器学习问题。作者选择和设计特征来训练逻辑回归模型。模型中使用的特征包括广告的术语点击率和相关广告的点击率

X .李,m .张,y .刘,s .马,y .金,l .茹。基于二分图传播的搜索引擎点击垃圾邮件检测。

本文讨论的是在线广告中(可能)最具威胁性的点击欺诈。。在分析欺诈点击特征的基础上,提出了一种新的垃圾点击自动检测方法,该方法通过建立用户会话图和点击模式会话图来识别欺诈行为。

*就这些了,伙计们!*基于对这篇文章的回应,我计划写更多关于赞助搜索中 ML 特定领域的文章,如 CTR 预测或尾部查询大写等。

与此同时,我将在 github 上保持这个知识库的更新,更新赞助搜索中与 ML 相关的最新论文。

机器学习导论:综合指南

原文:https://towardsdatascience.com/machine-learning-introduction-a-comprehensive-guide-af6712cf68a3?source=collection_archive---------5-----------------------

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Picture from Unsplash

这是我将描述机器学习概念、类型、算法和 python 实现的系列文章的第一篇。

该系列的主要目标是:

  1. 创建机器学习理论和直觉的综合指南。
  2. 分享和解释用 python 开发的机器学习项目,以实用的方式展示所解释的概念和算法,以及它们如何应用于现实世界的问题。
  3. 在主题中留下我的知识的数字足迹,并激励其他人在自己的领域中学习和应用机器学习。

本系列中公开的信息有几个来源,主要有:

  • 机器学习工程师纳米学位(Udacity)
  • Python 机器学习书籍(Sebastian rasch ka & va hid Mirjalili)
  • 用 Python 书深度学习(Francois Chollet)
  • 用 Python 书精通机器学习(Jason Brownlee)
  • 何塞·波尔蒂利亚教授的 Python 数据科学和机器学习课程(Udemy)
  • 曼努埃尔·加里多的机器学习和数据科学与 Python 课程

什么是机器学习?

由于技术和传感器价格的大幅下降,我们现在可以创建、存储和发送比历史上任何时候都多的数据。仅在过去两年中,全球就有高达 90%的数据被创建。以我们目前的速度,每天有 250 亿字节的数据被创建,而且这一速度还会继续增长。这些数据提供给机器学习模型,并且是这门科学近年来经历的繁荣的主要驱动力。

机器学习是人工智能的一个子领域,可以描述为:

“机器学习是一门让计算机像人类一样学习和行动的科学,通过以观察和现实世界互动的形式向它们提供数据和信息,以自主的方式随着时间的推移改善它们的学习。”—丹·法盖拉

机器学习提供了一种有效的方法来捕获数据中的知识,以逐步提高预测模型的性能,并做出数据驱动的决策。它已经成为一项无处不在的技术,我们享受着它的好处:垃圾邮件过滤器、无人驾驶汽车、图像和语音识别以及世界级围棋选手

下一个视频展示了视频监控机器学习应用的实时事件检测。

基本术语和符号

通常在机器学习中,使用矩阵和向量符号来表示数据。该数据通常以矩阵形式使用,其中:

  • 矩阵中的每一行都是一个样本、观察值或数据点。
  • 每一列都是观察特征(或属性)。
  • 通常有一个列(或特征),我们称之为目标、标签或响应,它是我们试图预测的值或类。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Table By Author

训练一个机器学习模型,就是给机器学习算法提供训练数据,从中学习。

关于机器学习算法,它们通常有一些内部参数。ie:在决策树中,有深度、节点数、叶子数等参数……这些内部参数被称为超参数。

泛化是模型对新数据进行预测的能力。

机器学习的类型

本系列将学习的机器学习类型有:

  • 监督学习
  • 无监督学习
  • 深度学习。

在这个系列中,我们将探索和研究所有提到的机器学习类型,我们还将更深入地挖掘一种叫做“强化学习”的深度学习技术。

监督学习

监督学习是指一种用一组样本训练的机器学习模型,其中期望的输出信号(或标签)是已知的。模型从这些已知的结果中学习,并调整其内部参数以适应输入数据。一旦模型经过适当的训练,它就可以对未知的或未来的数据做出准确的预测。

一般流程概述:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Figure by Author

监督学习有两个主要应用:分类和回归。

  1. 分类:

分类是监督学习的一个子类,其目标是基于过去的观察来预测新实例的分类类别标签(离散的、无序的值、组成员)。典型的例子是电子邮件垃圾邮件检测,这是一种二元分类(电子邮件要么是-1-垃圾邮件,要么不是-0-垃圾邮件)。还有多类分类,如手写字符识别(类别从 0 到 9)。

二进制分类的一个例子:有两个类别,圆和十字,以及两个特征,X1 和 X2。该模型能够找到每个数据点的特征与其类别之间的关系,并在它们之间设置边界线,因此当提供新数据时,它可以估计其所属的类别,给定其特征。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Figure by Author

在这种情况下,新数据点落入圆形子空间,因此,模型将预测其类别为圆形。

2。回归:

回归也用于将类别分配给未标记的数据。在这种类型的学习中,我们被给予一些预测(解释)变量和一个连续的反应变量(结果),我们试图找到这些变量之间的关系,使我们能够预测一个连续的结果。

线性回归的一个例子:给定 X 和 Y,我们拟合一条直线,使样本点和拟合直线之间的距离最小化(使用一些标准,如平均平方距离(SSE))。然后,我们将使用拟合线的截距和斜率来预测新数据的结果。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Figure by Author

无监督学习

在无监督学习中,我们处理未知结构的未标记数据,目标是探索数据的结构以提取有意义的信息,而无需参考已知的结果变量。

主要有两类:聚类和降维。

  1. 聚类:

聚类是一种探索性的数据分析技术,用于将信息组织成有意义的群或子群,而无需事先了解其结构。每个群集是一组相似的对象,它们与其他群集的对象不同。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Figure by Author

2。降维:

通常情况下,处理的数据中的每个观察值都带有大量的特征,换句话说,这些特征具有很高的维数。这对机器学习算法的计算性能来说是一个挑战,因此降维是用于处理这个问题的技术之一。

降维方法通过发现特征之间的相关性来工作,这意味着存在冗余信息,因为一些特征可以用其他特征来部分解释。它从数据中去除噪声(噪声也会降低模型的性能),并将数据压缩到一个更小的子空间,同时保留大部分相关信息。

深度学习

深度学习是机器学习的一个子领域,它使用人工神经网络的分层结构,人工神经网络以类似于人脑的方式构建,神经元节点连接成一个网络。该架构允许以非线性方式处理数据分析。

神经网络的第一层将原始数据作为输入,对其进行处理,提取一些信息,并将其作为输出传递给下一层。然后每一层处理前一层给出的信息并重复,直到数据到达最后一层,最后一层进行预测。

该预测与已知结果进行比较,然后通过一种称为反向传播的方法,该模型能够学习产生准确输出的权重。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Figure by Author

强化学习

强化学习是深度学习最重要的分支之一。目标是建立一个模型,其中有一个代理采取行动,目的是提高其性能。这种改进是通过在代理每次执行属于开发人员希望代理执行的一组动作中的一个动作时给予特定的奖励来实现的。

奖励是对行动达到预定目标的程度的衡量。然后,代理使用这个反馈来调整它未来的行为,目的是获得最大的回报。

一个常见的例子是象棋引擎,其中代理从一系列可能的行动中做出决定,这取决于棋盘的部署(这是环境的状态)以及在赢得或输掉游戏时给出的奖励。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Figure by Author

构建机器学习模型的一般方法

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Figure by Author

预处理:

这是任何机器学习应用程序中最关键的步骤之一。通常数据的格式对于模型来说不是最佳的(甚至是不合适的)。在这种情况下,预处理是一项必须完成的任务。

许多算法要求特征在相同的尺度上(例如:在[0,1]范围内)以优化其性能,这通常通过对数据应用归一化或标准化技术来实现。

我们还可以发现,在某些情况下,所选择的特征是相关的,因此对于从中提取有意义的信息来说是冗余的。然后,我们必须使用降维技术将特征压缩到更小的维度子空间。

最后,我们将把原始数据集随机分成训练和测试子集。

训练和选择模型

为了训练和选择性能最好的算法,有必要对一系列不同的算法进行比较。为此,有必要选择一个度量标准来衡量模型的性能。分类问题中一个常用的是分类精度,即正确分类实例的比例。在回归问题中,最受欢迎的是均方误差(MSE ),它测量估计值和真实值之间的平均平方差。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Figure bu Author

最后,在使用测试子集对模型进行最终评估之前,我们将使用一种称为交叉验证的技术来确保我们的模型在真实世界数据中表现良好。

这种技术将训练数据集划分为更小的训练和验证子集,然后估计模型的泛化能力,换句话说,估计当提供新数据时它可以预测结果的程度。然后,它重复这个过程, K 次,并通过除以在 K 次迭代之间获得的度量的总和来计算模型的平均性能。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Figure by Author

一般来说,库提供的机器学习算法的默认参数不是与我们的数据一起使用的最佳参数,因此我们将使用超参数优化技术来帮助我们对模型的性能进行微调。

评估模型并使用新数据进行预测

一旦我们为我们的训练数据集选择并拟合了一个模型,我们就可以使用测试数据集来估计这个未知数据的性能,因此我们可以估计模型的泛化误差。或者使用其他度量来评估它。

如果我们对获得的度量值感到满意,那么我们可以使用该模型对未来数据进行预测。

包裹

在这篇文章中,我们学习了什么是机器学习,描绘了它的本质、动机和应用的大画面。

我们还学习了一些基本的符号和术语,以及不同种类的机器学习算法:

  • 监督学习,有分类和回归问题。
  • 无监督学习,带聚类和降维。
  • 强化学习,代理从它的环境中学习。
  • 深度学习及其人工神经元网络。

最后,我们介绍了构建机器学习模型的典型方法,并解释了其主要任务:

  • 预处理。
  • 培训和测试。
  • 选择模型。
  • 评估中。

如果你喜欢这篇文章,那么你可以看看我关于数据科学和机器学习的其他文章 这里

如果你想了解更多关于机器学习、数据科学和人工智能的知识 请在 Medium 上关注我,敬请关注我的下一篇帖子!

机器学习正在颠覆会计行业

原文:https://towardsdatascience.com/machine-learning-is-disrupting-the-accounting-industry-dadca0daed5f?source=collection_archive---------2-----------------------

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

“机器学习”一词在过去一年左右已经成为一个时髦词汇。每年都有数十亿美元投资于人工智能(AI)技术——根据麦肯锡全球研究所的研究,2016 年的投资在 260 亿至 390 亿美元之间——其中近 60%投入了机器学习。

金融服务以及高科技和电信是领先的早期采用者。麦肯锡预测,这三个行业将在未来三年继续引领 AI 的采用。

这项技术变得非常复杂,早期采用者开始看到明显的好处。在金融服务行业,采用主动战略的人工智能采用者的利润率比不采用者高出约 12.5%。

Xero 是一个面向小企业的云会计平台,今年早些时候在他们的软件中引入了机器学习。

什么是机器学习?

机器学习是人工智能的一个子领域。人工智能领域的先驱阿瑟·塞缪尔(Arthur Samuel)在 1959 年创造了“机器学习”一词,根据他的说法,机器学习赋予了“计算机无需明确编程就能学习的能力”。

机器学习使用神经网络,其功能设计与人脑相同。当算法处理和分析足够多的数据时,它们开始识别模式,建立联系,并根据数据包含的元素对其进行分类。

计算机不如人类聪明,但因为它们处理数据的速度比人快得多,所以它们的速度非常快,而且得出的结论通常非常准确。

机器学习如何影响金融

会计软件变得越来越智能,它已经在执行以前需要人工干预的任务。重复、手动和繁琐的任务被消除,因此簿记员和企业主现在可以花更少的时间来更新他们的帐户,而将更多的时间用于其他重要的任务。

以下是这项技术已经影响到的一些具体任务的示例:

  • 会计应用程序学习发票编码行为,并建议交易应分配到哪里。例如,如果销售人员通常将产品分配到特定的销售帐户,下次销售人员将该项目添加到发票时,会计应用程序会自动将其分配到正确的帐户。它还关注簿记员和会计师纠正的错误。例如,如果企业所有者将一些东西分配到错误的账户,而会计纠正了错误,会计应用程序将把会计的选择作为正确的选择。
  • 银行对账是自动化的。同样,技术从以前的分配和账户选择中学习,然后为新的银行交易提供正确的建议。
  • 银行使用人工智能聊天机器人来帮助客户解决常见的查询。来自会计程序的聊天机器人,如 Xero ,可以让你查询最新的财务数据,如银行里有多少钱,某个账单何时到期,谁欠你钱,它甚至可以将用户与他们目录中的 Xero advisors 联系起来。

此外,这项技术也将在不久的将来影响审计人员的工作。目前,审计员只研究交易的精选样本。他们雇佣了大量的会计团队,加班加点在截止日期前完成审计。流经公司的大量交易限制了审计人员可以手动检查的交易数量。

据普华永道称,未来审计师将能够审计 100%的公司财务交易。机器学习算法将处理和审查数据,识别异常,并编制异常值列表,供审计人员检查。审计人员可以将他们的技能用于调查和推断模式或异常背后的原因,而不是花大部分时间检查数据。

为什么这对行业来说是好消息

在与不懂会计的小企业主一起工作时,你可能已经看到他们发现让他们的账簿保持最新并记住在哪里分配交易很有挑战性。这会造成时间损失和不必要的错误,作为他们的会计,你必须在以后纠正这些错误。这也意味着他们的账目从来都不准确,让他们对自己的财务表现一无所知。自动建议或完成会计代码的机器学习技术消除了错误,节省了大量时间。

除了节省时间之外,如果审计师能够检查一家公司的每一笔交易,他们的财务信息将更加准确,审计师可以花更多的时间分析财务数据,为客户提供更好的建议。

技术可以做繁重的工作,数字运算和报告编辑,而会计师专注于判断密集型任务。机器不能像人类一样思考。他们也没有我们的情商。技术使会计师更有效率和生产力,以便会计师可以解释数据,为他们的客户提供更好的见解和商业建议。

会计行业的未来如何?

根据总部设在香港的投资公司 CLSA 的说法,人工智能创造的就业机会将多于它“摧毁”的就业机会,但这种转变将是痛苦的。在接下来的五到十年里,我们可以期待看到财务领域的重大变化,会计师将需要学会快速适应。

据埃森哲称,到 2020 年,超过 80%的传统金融服务将由包括人工智能在内的跨职能团队提供。人工智能将处理数据,寻找异常,并编制报告,而人类会计师将分析数据,并根据他们的经验和知识向客户提供明智的建议。

如果你不是一个精通技术的会计师,不要被这个吓到。这只是一种不同的思考方式,一种容易学习的方式。从 Xero 这样的云会计程序开始尝试吧。一旦你习惯了这一点,你会发现很容易采用其他智能技术,并利用它们为你服务。

观看国际象棋传奇人物加里·卡斯帕罗夫的有趣的 Ted 演讲,关于我们如何不应该害怕智能机器,而是应该与它们合作。

来源:

麦肯锡全球研究院,人工智能,下一个数字前沿:http://www . McKinsey . com/business-functions/McKinsey-analytics/our-insights/how-Artificial-Intelligence-can-deliver-real-value-to-companies

本文原载于thecreativeaccountant.net

机器学习是癌症预测的未来

原文:https://towardsdatascience.com/machine-learning-is-the-future-of-cancer-prediction-e4d28e7e6dfa?source=collection_archive---------3-----------------------

在准确预测癌症的发展方面,机器学习模型比病理学家更好。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Photo by Ken Treloar on Unsplash

每年,病理学家在全世界诊断出 1400 万新的癌症患者。这意味着数百万人将面临多年的不确定性。

几十年来,病理学家一直在进行癌症诊断和预测。大多数病理学家诊断癌症的成功率为 96-98%。他们很擅长这部分。

问题出现在下一部分。根据奥斯陆大学医院的数据,病理学家的预后准确率只有 60%。预后是在癌症被诊断后进行的活组织检查的一部分,它预测疾病的发展。

是时候进行病理学的下一步了。

机器学习简介

病理学的下一步是机器学习。

机器学习是人工智能的核心分支之一。这是一个接收数据、发现模式、使用数据训练自己并输出结果的系统。

那么是什么让一台 机器 比一名训练有素的专业人员更优秀呢?

与病理学家相比,ML 具有关键优势。

首先,机器可以比人工作得快得多。活检通常需要病理学家 10 天的时间。一台计算机可以在几秒钟内完成数千次活检。

机器可以做一些人类不擅长的事情。他们可以重复数千次而不会感到疲惫。每次迭代后,机器都会重复该过程,以便做得更好。人类也这样做,我们称之为练习。虽然熟能生巧,但是再多的练习也无法使人接近计算机的计算速度。

另一个优点是机器的精确度很高。随着物联网技术的出现,世界上有如此多的数据,人类不可能全部查看。这就是机器帮助我们的地方。他们可以比我们做得更快,进行精确的计算,发现数据中的模式。这就是它们被称为计算机的原因。

机器学习的简要技术说明

首先,有两大类机器学习,

  1. 监督学习
  2. 无监督学习

监督学习被输入标记数据

监督学习也许用它自己的名字来描述是最好的。监督学习算法是一种由给定数据“教授”的算法。

模型使用标记的数据训练自己,然后测试自己。重复这一过程,直到获得最佳结果。一旦完成,它就可以对未来的实例进行预测。

无监督学习从未标记的数据中得出结论

在无监督学习中**数据集没有被标记。**相反,模型的工作是通过寻找模式(如分组和聚类)来创建适合数据的结构

把无监督学习想象成婴儿。婴儿出生在这个世界上,除了本能之外,不知道什么是“对”或“错”。随着他们的成长,他们会看、摸、听、感觉(输入数据)并尝试一些东西(测试数据),直到他们知道是什么。

好的,你知道 ML 的两个主要类别。酷毙了。现在让我们更深入地研究一下 ML 使用的一些技术。

回归使结果更加准确

回归的主要目标是最小化模型的成本函数。

什么是成本函数?

成本函数是计算值 x 的假设和实际值 x 之间的距离的函数。基本上,它告诉你结果离实际答案有多远。

回归的全部意义在于找到一个超平面(多维线的花哨说法),该超平面使成本函数最小化,以创建数据点之间的最佳可能关系。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Linear regression making the relationship more accurate

它从一条没有相关性的随机线开始,重复使用梯度下降成为最佳关系。

使用一种叫做**梯度下降的算法进行回归。**在该算法中,通过模型调整其参数来降低成本函数。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Think of descent as you running down a hill, trying to get to the lowest point.

同时,随着梯度下降使代价函数越来越低,结果也变得更加精确。

这就是通过使用回归来更好地拟合给定数据,从而使您的模型变得更加准确的方法。

分类将数据点分类成组

监督学习模型不仅仅可以做回归。ML 最有用的任务之一是分类。

分类算法在数据点之间建立边界,根据它们与模型参数匹配的特征,将它们分类为某一组。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

In this model, data points are classified as either being sheep or goat. This is conditional on their steps per day depending on average daily temperature.

使用称为逻辑回归的过程来创建类别之间的界限。

需要记住的一个重要事实是边界不依赖于数据

还记得成本函数吗?惊喜!它也用于分类。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

In classification, it is used similarly to regression to find the best possible fit to the data.

支持向量机

SVM 算法是用于分类和回归的监督学习算法。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

SVM 算法的目标是通过创建一个边界来对数据进行分类,该边界在其自身和数据之间具有最大可能的余量

决策树缩小到一个结果

决策树是一个树状模型(i *f 树长倒了)*用 ML 表示概率和决策。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

The process of deciding what you’ll be eating

如上图所示,DT 使用条件语句来缩小某个值在某个实例中出现的概率。它使用 DT 模型来预测某个实例具有某个结果的概率。

DT 继续分裂成更多的节点,直到每个输入都有结果。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Basically, internal nodes split further while external nodes are like a stop sign.

贝叶斯网络估计概率

BN 是一个类似于决策树的分类器。不同的是, BN 分类器显示概率估计而不是预测。

变量的数据集和它们的条件依赖关系以一种叫做有向无环图的可视化形式显示出来。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在上面的例子中,草地潮湿的两个原因要么是因为下雨,要么是因为洒水器。使用 BN 模型,可以找到每种可能情况的概率。

人工神经网络从数据中学习

安从给定的数据中学习。它从我们自己的神经系统中获得灵感,尽管它们的工作方式不尽相同。

ANN 模型在我们称之为输入层的一层中输入大量数据。从这些数据中,进行比较,模型自动识别数据的特征并给其贴上标签。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

They’re kind of similar I guess?

在 ANN 中有三种层类型。

  • 输入层
  • 隐藏层
  • 输出层

这就是人工神经网络的工作方式——首先,输入层的每个神经元都被赋予一个值,称为激活函数。然后,它被分配一个随机权重,而隐藏层神经元被分配一个随机偏差值。在隐藏层中,一种称为激活函数的算法为隐藏层神经元分配一个新的权重,该权重乘以输出层中的随机偏差值。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

The first model with random bias and weights. The network is essentially guessing at this point.

这个激活函数乘以一个随机权重,通过称为反向传播的过程,随着迭代次数的增加而变得更好。

通过这种方式,模型对给定实例的输出进行随机预测。使用反向传播,人工神经网络模型调整其参数,使答案更准确。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Machines think this cat is pretty adorable too.

例如,如果一个模型要从一个大型图像数据库中对猫进行分类,它将通过识别构成眼睛和尾巴等特征的边缘来学习,并最终扩大到识别整只猫。把这个过程想象成搭建乐高。你确定不同的部分,把不同的部分放在一起,最后把所有不同的部分放在一起,就成了你的杰作。

回到机器学习癌症预测

好了,现在你对机器学习有了一定的了解。

现在,到了精彩的部分。现在,您将了解一些用于癌症活检和预后的模型。

预测癌症易感性的模型

我要展示的第一个模型是用来区分乳腺癌患者的肿瘤是恶性还是良性的。

在这个模型中,人工神经网络被用来完成任务。该模型使用大量隐藏层构建,以更好地概括数据。成千上万的乳房 x 线照片记录被输入该模型,以便它能够学习区分良性和恶性肿瘤。在输入之前,所有的数据都经过了放射科医生的审核。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

An example of what a cancer prediction neural network’s inputs could be.

该模型在很大程度上是成功的,AUC 的准确度为 0.965 (AUC,或曲线下面积是检验模型成功的一种方法)。尽管这种模型是准确的,但它相对于病理学家的主要优势是更加一致、有效和不容易出错。

预测癌症复发的模型

好吧,预测癌症很简单。但是对人类来说,预测癌症的 T2 复发是一项更加复杂的任务。幸运的是,机器越来越擅长这个。让我来解释一下。

该模型使用多种 ML 技术来学习如何预测癌症患者完全缓解后口腔癌的复发。为该模型从 86 名患者中收集了临床、影像和基因组来源的数据。特征选择算法将模型的特征从 110 个以上减少到 30 个以下。这使得模型更加有效,并大大减少了偏差。该模型使用 BN、ANN、SVM、DT 和 RF 进行测试,将患者数据分类为癌症复发和未复发的患者。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

This BNN model predicts the recurrence of breast cancer.

最后,该模型使用特征选择数据和 BN 正确地预测了所有患者。尽管这是一个非常精确的模型,但它的数据集非常小,只有 86 名患者。

在另一项类似的研究中,研究人员制作了一个 ML 模型,使用 SVM 氏、ANN 和回归来测试,以将患者分为癌症复发的低风险和高风险组。SVM 模型优于其他两个模型,准确率为 84%。这是开创性的,因为它比病理学家要精确得多。

预测癌症存活率的模型

该模型采用了 162,500 条记录和 16 个关键特征的数据集。利用肿瘤的大小和患者的年龄等特征,该模型为患者是否存活创建了一个分类模型。该模型使用 SVM、人工神经网络和半监督学习(SSL:监督和非监督学习的混合)进行了测试。它发现 SSL 是最成功的,准确率为 71%。

另一项研究使用人工神经网络来预测肺癌患者的存活率。它有 83%的准确率。这项研究被认为在很大程度上是准确的,尽管它没有考虑其他与死亡相关的因素,如血凝块。

癌症预后的未来是什么样子的?

人工智能将在未来几十年内改变医疗行业——如果病理学没有被打乱,那就没有意义了。

目前,ML 模型仍处于癌症预后的测试和实验阶段。随着数据集越来越大,质量越来越高,研究人员正在建立越来越精确的模型。

未来的癌症活检可能是这样的:
你在诊所或家里进行临床测试。数据被输入病理 ML 系统。几分钟后,您收到一封电子邮件,其中有一份详细的报告,对您的癌症发展进行了准确的预测。

虽然你今天可能看不到人工智能做病理学家的工作,但你可以期待在未来几十年里人工智能取代当地的病理学家,这非常令人兴奋!

最大似然模型还有很长的路要走,大多数模型仍然缺乏足够的数据,并遭受偏见。然而,我们可以肯定的是 ML 是病理学的下一步,而它将颠覆这个行业。

“肯定会有工作中断。因为将要发生的是机器人将能够做得比我们更好。……我指的是我们所有人,”—埃隆·马斯克

关键要点

  • 机器学习是人工智能的一个分支,它使用许多技术来完成任务,在每次迭代后自我完善。
  • 病理学家在诊断癌症方面很准确,但在预测癌症发展时,准确率只有 60%。
  • 机器学习是我们克服这一障碍并创建高精度病理学系统的下一步。

感谢阅读!如果你喜欢这篇文章:

  • 确保通过分享来表示支持
  • 通过 Linkedin 与我保持联系
  • 关注我在媒体上更多这样的文章!

机器学习 Kaggle 竞赛第一部分:入门

原文:https://towardsdatascience.com/machine-learning-kaggle-competition-part-one-getting-started-32fb9ff47426?source=collection_archive---------1-----------------------

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

学习 Kaggle 环境和入门笔记本

在数据科学领域,可用的资源几乎太多了:从 Datacamp 到 Udacity 到 KDnuggets,网上有成千上万的地方可以学习数据科学。然而,如果你喜欢一头扎进去,边干边学,Kaggle 可能是通过动手数据科学项目拓展你技能的最佳地点。

虽然它最初被称为机器学习竞赛的地方,但自称为“数据科学之家”的 Kaggle ,现在提供了一系列数据科学资源。尽管这一系列文章将关注一场竞赛,但有必要指出 Kaggle 的主要方面:

  • 数据集: 数以万计的各种不同类型和大小的数据集,你可以免费下载使用。如果您正在寻找有趣的数据来探索或测试您的建模技能,这是一个很好的去处。
  • 机器学习竞赛: 这些建模技能测试曾经是 Kaggle 的核心,是学习前沿机器学习技术和使用真实数据磨练您在有趣问题上的能力的绝佳方式。
  • 学习**😗*Jupyter 笔记本中教授的一系列涵盖 SQL 到深度学习的数据科学学习曲目。
  • 讨论: 一个向 Kaggle 社区成千上万的数据科学家提问并获得建议的地方。
  • 内核: 运行在 Kaggle 的服务器上的在线编程环境,在这里你可以编写 Python/R 脚本,或者 Jupyter 笔记本。这些内核完全免费运行(你甚至可以添加一个 GPU ),并且是一个很好的资源,因为你不必担心在自己的计算机上设置数据科学环境。内核可用于分析任何数据集,参加机器学习竞赛,或完成学习轨迹。您可以从其他用户那里复制并构建现有的内核,并与社区共享您的内核以获得反馈。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

The main aspects of Kaggle

总的来说,Kaggle 是一个学习的好地方,无论是通过更传统的学习途径还是通过比赛。当我想了解最新的机器学习方法时,我可以去看书,或者,我可以去 Kaggle,找到一个竞赛,看看人们在实践中如何使用它。就我个人而言,我觉得这更有趣,也是更有效的教学方法。此外,社区非常支持,总是愿意回答问题或提供项目反馈。

在这篇文章中,我们将重点关注一个 Kaggle 机器学习竞赛的开始:家庭信用违约风险问题。这是一场相当简单的比赛,有一个合理大小的数据集(不能对所有比赛都这样说),这意味着我们可以完全使用 Kaggle 的内核进行比赛。这大大降低了准入门槛,因为你不必担心你电脑上的任何软件,你甚至不必下载数据!只要你有一个 Kaggle 帐户和一个互联网连接,你就可以连接到一个内核并运行代码。

我计划在 Kaggle 和内核(一个 Python Jupyter 笔记本)上做整个比赛,这篇文章的在这里可以找到。为了从本文中获得最大收益,创建一个 Kaggle 帐户来复制内核,然后点击 blue Fork Notebook 按钮。这将打开笔记本进行编辑,并在内核环境中运行。

竞争描述

家庭信用违约风险竞赛是一项标准的监督机器学习任务,目标是使用历史贷款申请数据来预测申请人是否会偿还贷款。在训练期间,我们为我们的模型提供特征(描述贷款申请的变量)和标签(如果贷款已偿还,则为二进制 0,如果贷款未偿还,则为 1),模型学习从特征到标签的映射。然后,在测试期间,我们向模型提供新一批应用程序的功能,并要求它预测标签。

本次比赛的所有数据都是结构化的,这意味着它们存在于整齐的行和列中——想象一个电子表格。这意味着我们不需要使用任何卷积神经网络(擅长处理图像数据),这将给我们在真实世界数据集上的巨大实践。

竞赛主办方 Home Credit ,是一家专注于服务无银行账户人群的金融提供商。预测应用程序是否会偿还贷款是一项至关重要的业务需求,Home Credit 开发了这项竞赛,希望 Kaggle 社区可以为这项任务开发一种有效的算法。这个比赛遵循大多数 Kaggle 比赛的一般想法:一家公司有数据和问题要解决,而不是(或除此之外)雇佣内部数据科学家来建立模型,他们设立一个适度的奖项,吸引整个世界贡献解决方案。一个由数千名技术娴熟的数据科学家(Kagglers)组成的社区然后免费研究这个问题,以得出最佳解决方案。就成本效益商业计划而言,这似乎是一个绝妙的主意!

Kaggle 竞争环境

当你进入比赛主页时,你会看到这个:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

下面是选项卡的快速浏览

  • **概述:**问题的简要描述、评估标准、奖品和时间表
  • **数据:**比赛所需的所有数据都不允许作为外部数据。你可以下载所有的数据,但我们不需要这样做,因为我们将使用一个可以连接到数据的 Kaggle 内核。
  • **内核:**你和其他竞争对手以前做过的工作。在我看来,这是竞赛最有价值的资源。您可以通读其他脚本和笔记本,然后复制代码(称为“分叉”)进行编辑和运行。
  • **讨论:**另一个有用的资源,你可以在这里找到来自竞赛主持人和其他参赛者的对话。这是一个提问和学习他人答案的好地方。
  • **排行榜:**谁在榜首,你站在哪里
  • **规则:**不是很有趣,但是很好理解
  • 如果你决定组建一个团队,管理你的团队成员
  • **我的作品:**查看您之前提交的作品,并选择最终参赛作品

向他人学习的重要性

虽然它们被称为竞赛,但 Kaggle 机器学习活动实际上应该被称为“合作项目”,因为主要目标不一定是获胜,而是练习和向数据科学家同事学习。一旦你意识到与其说是打败别人,不如说是拓展自己的技能,你会从比赛中获得更多。当你注册 Kaggle 时,你不仅可以获得所有的资源,还可以成为拥有数千年集体经验的数据科学家社区的一员。

通过努力成为社区的积极分子来利用这些经历吧!这意味着从共享内核到在论坛上提问的任何事情。虽然公开你的工作可能会令人生畏,但我们通过犯错误、接受反馈和改进来学习,这样我们就不会再犯同样的错误。每个人都是初学者,社区非常支持所有技能水平的数据科学家。

在这种心态下,我想强调的是,与他人讨论并基于他人的代码进行构建不仅是可以接受的,而且是受到鼓励的!在学校,与他人合作被称为作弊,会让你得零分,但在现实世界中,这被称为合作,是一项极其重要的技能。

让你自己投入到比赛中的一个很好的方法是找到一个有人分享了一个很好的排行榜分数的内核,分叉这个内核,编辑它以尝试提高分数,然后运行它以查看结果。然后,将内核公开,这样其他人就可以使用你的工作。数据科学家不是站在巨人的肩膀上,而是站在成千上万为了所有人的利益而公开其工作的个人的背上。(抱歉说得太哲学了,但这就是我热爱数据科学的原因!)

通过第一个笔记本工作

一旦你对 Kaggle 的工作方式和如何在比赛中获得最大收益的哲学有了基本的了解,是时候开始了。在这里,我将简要概述我在一个内核中为家庭信用违约风险问题整理的一个 Python Jupyter 笔记本,但是为了获得充分的好处,你会想要把这个笔记本放到 Kaggle 上并自己运行它(你不需要下载或设置任何东西,所以我强烈建议你去看看)。

当您在内核中打开笔记本时,您会看到这样的环境:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Kernel Notebook Environment

把这当成一个标准的 Jupyter 笔记本,审美略有不同。你可以像在 Jupyter 中一样编写 Python 代码和文本(使用 Markdown 语法),并在 Kaggle 的服务器上完全在云端运行代码。然而,Kaggle 内核有一些 Jupyter Notebook 中没有的独特功能。点击右上角向左的箭头,展开内核控制面板,弹出三个选项卡(如果笔记本不是全屏的,那么这三个选项卡可能已经在代码旁边可见)。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在 data 选项卡中,我们可以查看内核所连接的数据集。在这种情况下,我们有完整的比赛数据,但我们也可以连接到 Kaggle 上的任何其他数据集,或者上传我们自己的数据并在内核中访问它。数据文件位于代码内的../input/目录中:

import os# List data files that are connected to the kernel
os.listdir('../input/')

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Files connected to the kernel available in …/input/

设置选项卡让我们控制内核的不同技术方面。在这里,我们可以将 GPU 添加到我们的会话中,更改可见性,并安装环境中还没有的任何 Python 包。

最后,Versions 选项卡让我们看到代码的任何以前提交的运行。我们可以查看代码的变更,查看运行的日志文件,查看运行生成的笔记本,以及下载运行输出的文件。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Versions Tab

要运行整个笔记本并记录一个新版本,点击内核右上角的蓝色 Commit & Run 按钮。这将执行所有代码,向我们显示完整的笔记本(或者任何错误,如果有错误的话),并保存运行期间创建的任何文件。当我们提交笔记本时,我们可以访问我们的模型做出的任何预测,并提交它们进行评分。

介绍性笔记本大纲

第一个笔记本是为了让你熟悉这个问题。我们以与任何数据科学问题相同的方式开始:理解数据和任务。对于这个问题,有 1 个主训练数据文件(包括标签)、1 个主测试数据文件和 6 个附加数据文件。在这第一个笔记本中,我们只使用主要数据,这将使我们得到一个体面的分数,但后来的工作将不得不纳入所有的数据,以便具有竞争力。

为了理解数据,最好离开键盘几分钟,通读问题文档,例如每个数据文件的列描述。因为有多个文件,我们需要知道它们是如何链接在一起的,尽管对于第一个笔记本,为了简单起见,我们只使用主文件。通读其他内核也可以帮助我们熟悉数据以及哪些变量是重要的。

一旦我们理解了数据和问题,我们就可以开始为机器学习任务构建数据,这意味着处理分类变量(通过一键编码),填充缺失值(插补),并将变量缩放到一个范围。我们可以进行探索性的数据分析,比如找到与标签的相关性,并绘制这些关系。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Correlation Heatmap of Variables

我们可以在以后使用这些关系进行建模决策,例如包括使用哪些变量。(实现见笔记本)。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Distribution of Ages Colored by Label (left) and Rates of Default by Age Group (right)

当然,没有我最喜欢的图,即对图,任何探索性的数据分析都是不完整的。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Pairs Plot of Features (red indicates loans that were not repaid in the kde and scatter plots)

在彻底探索数据并确保它可以被机器学习接受后,我们继续创建基线模型。然而,在我们进入建模阶段之前,我们必须了解竞争对手的性能指标。在 Kaggle 竞赛中,一切都归结为一个数字,即测试数据的度量。

虽然使用二进制分类任务的准确性可能有直观的意义,这是一个糟糕的选择,因为我们正在处理一个不平衡的类问题。根据 ROC AUC 或曲线下的受试者操作特征曲线面积来判断提交的数据,而不是准确性。我让你对这一个研究,或者看笔记本上的解释。只知道越高越好,随机模型 0.5 分,完美模型 1.0 分。为了计算 ROC AUC,我们需要根据概率而不是二进制 0 或 1 进行预测。ROC 随后将真阳性率与假阳性率显示为阈值的函数,根据该阈值我们将实例分类为阳性。

通常我们喜欢做一个天真的基线预测,但是在这种情况下,我们已经知道随机猜测任务将得到 0.5 的 ROC AUC。因此,对于我们的基线模型,我们将使用稍微复杂一点的方法,逻辑回归。对于二元分类问题,这是一个流行的简单算法,它将为未来的模型设置一个较低的标准。

在实现逻辑回归之后,我们可以将结果保存到 csv 文件中以供提交。提交笔记本后,我们写入的任何结果都将显示在“版本”选项卡上的“输出”子选项卡中:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Output from running the complete notebook

在此选项卡中,我们可以将提交的内容下载到我们的计算机上,然后上传到竞赛中。在本笔记本中,我们制作了四种不同的模型,得分如下:

  • 逻辑回归:0.671
  • 随机森林:0.678
  • 具有构造特征的随机森林:0.678
  • 光梯度推进机:0.729

这些分数并没有让我们接近排行榜的顶端,但它们为未来的改进留下了足够的空间!我们还可以了解仅使用单一数据源时的预期性能。

(不出意外,非凡的渐变助推机(使用 LightGBM 库)表现最好。这个模型赢得了几乎所有的结构化 Kaggle 竞赛(其中数据是表格格式的),如果我们想要认真竞争,我们可能需要使用这种模型的某种形式!)

结论

这篇文章和介绍性内核演示了 Kaggle 竞赛的基本开始。它并不意味着获胜,而是向您展示如何进行机器学习竞赛的基本知识,以及一些让您起步的模型(尽管 LightGBM 模型就像是从深水区跳下来)。

此外,我为机器学习竞赛阐述了我的哲学,即通过参与讨论、基于他人的代码构建和分享自己的工作来尽可能多地学习。刷新你过去的成绩是令人愉快的,但我认为做得好不是主要的焦点,而是学习新的数据科学技术的积极副作用。虽然这些被称为竞赛,但它们是真正的合作项目,欢迎每个人参与并磨练他们的能力。

还有大量的工作要做,但谢天谢地,我们不必独自去做。在后面的文章和笔记中,我们将看到如何在其他人的工作基础上构建更好的模型。我希望这篇文章(以及笔记本内核)给了你信心,让你可以开始在 Kaggle 上竞争,或者接手任何数据科学项目。

一如既往,我欢迎建设性的批评和讨论,可以通过 Twitter @koehrsen_will 联系。

机器学习竞赛:第三部分优化

原文:https://towardsdatascience.com/machine-learning-kaggle-competition-part-three-optimization-db04ea415507?source=collection_archive---------9-----------------------

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

充分利用机器学习模型

如何最好地描述一场 Kaggle 比赛?是伪装成比赛的机器学习教育!尽管有对 Kaggle有效的批评,但总体而言,这是一个伟大的社区,提供了有趣的问题,数千名数据科学家愿意分享他们的知识,以及探索新想法的理想环境。作为证据,如果不是因为 Kaggle 家庭信贷竞赛,我永远也不会知道梯度推进机器,或者,这篇文章的主题之一,自动化模型优化。

在本文中,系列文章的第三部分(第一部分:入门第二部分:改进)记录我为这次竞赛所做的工作,我们将关注机器学习管道的一个关键方面:通过超参数调整进行模型优化。在第二篇文章中,我们决定选择梯度推进机作为我们的模型,现在我们必须通过优化来充分利用它。我们将主要通过两种方法来实现这一点:随机搜索和使用贝叶斯优化的自动调优。

这里介绍的所有工作都可以在 Kaggle 上运行。文章本身将突出关键思想,但代码细节都在笔记本中(无需安装即可免费运行!)

  1. 随机和网格搜索
  2. 自动超参数调整
  3. 调谐结果

对于这篇文章,我们将跳过背景,所以如果你在任何时候感到迷茫,我鼓励你去以前的文章和笔记本。所有的笔记本都可以在 Kaggle 上运行,而不需要下载任何东西,所以我强烈推荐你去看看它们或者参加比赛!

概述

在本系列的第部分,我们熟悉了数据集,执行了探索性数据分析,尝试了功能工程,并构建了一些基线模型。我们这一轮的公开排行榜得分是 0.678 (目前我们在排行榜上的排名低于 4000)。

第二部分涉及深入的手工特征工程,接着是特征选择和更多建模。使用扩展(然后收缩)的功能集,我们最终得到了 0.779 的分数**,比基线有了很大的提高,但还不到竞争对手的前 50%。在这篇文章中,我们将再次提高我们的分数,并在排行榜上上升 1000 位。**

机器学习优化

机器学习环境中的优化意味着找到一组模型超参数值,该组模型超参数值对于给定的数据集产生最高的交叉验证分数。与在训练期间学习的模型参数相反,模型超参数由数据科学家在训练之前设置。深度神经网络中的层数是模型超参数,而决策树中的分裂是模型参数。我喜欢把模型超参数看作是我们需要为数据集调整的设置:对于每个问题来说,理想的值组合都是不同的

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

A machine learning model has to be tuned like a radio — if anyone remembers what a radio was!

有几种方法可以调整机器学习模型:

  1. 手动:用直觉/经验/猜测选择超参数,用数值训练模型,寻找验证分数重复过程,直到你失去耐心或者对结果满意。
  2. 网格搜索:设置一个超参数网格,对于每个数值组合,训练一个模型,找到验证分数。在这种方法中,尝试了超参数值的每个组合,这是非常低效的!
  3. 随机搜索:设置超参数网格,选择随机数值组合,训练模型,寻找验证分数。搜索迭代的次数基于时间/资源。**
  4. 自动超参数调整:使用梯度下降、贝叶斯优化或进化算法等方法引导搜索最佳超参数。与随机或网格非知情方法相比,这些方法使用先前的结果在知情搜索中选择下一个超参数值。**

这些是按照效率增加的顺序排列的,手动搜索花费的时间最多(通常产生的结果最差),而自动方法最快地收敛到最佳值,尽管与机器学习中的许多主题一样,情况并不总是如此!正如这篇伟大的论文所示,随机搜索做得出奇的好(我们很快就会看到)。

(还有其他超参数调谐方法,如进化基于梯度。不断有更好的方法被开发出来,所以一定要跟上当前的最佳实践!)

在本系列的第二部分中,我们决定使用 Gradient Boosting Machine (GBM)模型,因为它在具有许多特性的结构化数据上具有卓越的性能。GBM 非常强大(但是很容易用 Python 实现),但是它有几十个超参数,这些参数会显著影响性能,必须针对问题进行优化。如果您想感到不知所措,请查看 LightGBM 库上的文档:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

LightGBM Documentation

我不认为世界上有任何人能够看到所有这些并挑选出最佳的价值观!因此,我们需要实现选择超参数的四种方法之一。

对于这个问题,我甚至没有尝试手动调优,因为这是我第一次使用 GBM,也因为我不想浪费任何时间。我们将直接跳到使用贝叶斯优化的随机搜索和自动化技术。

实现网格和随机搜索

在第一本笔记本中,我们介绍了网格和随机搜索的实现,涵盖了优化问题的四个部分:

  1. ****目标函数:接受超参数并返回我们试图最小化或最大化的分数的函数
  2. ****域:我们要搜索的超参数值的集合。
  3. ****算法:选择目标函数中要评估的下一组超参数的方法。
  4. ****结果历史:包含每组超参数和目标函数的结果分数的数据结构。

这四个部分也构成了贝叶斯优化的基础,所以在这里列出它们将有助于实现。关于代码的细节,请参考笔记本,但这里我们将简要地触及每个概念。

目标函数

目标函数接受一组输入,并返回一个我们希望最大化的分数。在这种情况下,输入是模型超参数,得分是对训练数据的 5 重交叉验证 ROC AUC。伪代码中的目标函数是:

def objective(hyperparameters):
    """Returns validation score from hyperparameters"""

    model = Classifier(hyperparameters) validation_loss = cross_validation(model, training_data, 
                                       nfolds = 5) return validation_loss

超参数优化的目标是找到传递给objective函数时返回最佳值的hyperparameters。这似乎很简单,但问题是评估目标函数在时间和计算资源方面非常昂贵。我们无法尝试超参数值的每个组合,因为我们的时间有限,因此需要随机搜索和自动化方法。

领域

定义域是我们搜索的一组值。对于 GBM 的这个问题,域如下:

我们可以看到其中的两种分布,学习率是对数正态分布,叶子的数量是均匀正态分布:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传****外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

算法

虽然我们通常不这样认为,但网格和随机搜索都是算法。在网格搜索的情况下,我们输入域,算法为有序序列中的每个超参数选择下一个值。网格搜索的惟一要求是,它对网格中的每种组合都尝试一次(且只尝试一次)。对于随机搜索,我们输入域,每次算法给我们一个超参数值的随机组合来尝试。除了随机选择下一个值之外,对随机搜索没有任何要求。

随机搜索可以按如下方式实现:

import random *# Randomly sample from dictionary of hyperparameters*
random_params = {k: random.sample(v, 1)[0] for k, v **in**          
                    param_grid.items()} **{'boosting_type': 'goss',
 'colsample_bytree': 0.8222222222222222,
 'is_unbalance': False,
 'learning_rate': 0.027778881111994384,
 'min_child_samples': 175,
 'num_leaves': 88,
 'reg_alpha': 0.8979591836734693,
 'reg_lambda': 0.6122448979591836,
 'subsample': 1.0,
 'subsample_for_bin': 220000}**

这实际上是一个非常简单的算法!

结果历史

结果历史是包含超参数组合和目标函数的结果分数的数据结构。当我们进行贝叶斯优化时,模型实际上使用过去的结果来决定下一个要评估的超参数。随机和网格搜索是不了解情况的方法,不使用过去的历史,但是我们仍然需要历史,以便我们可以找出哪个超参数工作得最好!

在这种情况下,结果历史只是一个数据框架。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

贝叶斯超参数优化

使用贝叶斯优化的自动超参数调整听起来很复杂,但事实上它使用了与随机搜索相同的四个部分,唯一的区别是使用了算法**。对于这次比赛,我使用了 Hyperopt 库和 Tree Parzen Estimator (TPE)算法,并在的笔记本中做了展示。对于概念性的解释,请参考这篇文章,对于 Python 的实现,请查看笔记本或这篇文章。**

贝叶斯优化的基本概念是使用之前的评估结果来推理哪些超参数表现更好,并使用该推理来选择下一个值。因此,该方法应该花费较少的迭代次数来评估具有较差值的目标函数。理论上,贝叶斯优化比随机搜索能以更少的迭代收敛到理想值(虽然随机搜索还是能侥幸成功)!贝叶斯优化的目标是:

  1. 为了找到由性能测量的更好的超参数值
  2. 使用比网格或随机搜索更少的迭代次数进行优化

这是一个强大的方法,有望带来巨大的成果。问题是,实践中的证据表明情况是这样的吗?为了回答这个问题,我们转向最终笔记本,深入了解模型调整结果!

超参数优化结果

在实现随机搜索和贝叶斯优化的艰苦工作之后,第三个笔记本是一个有趣的和揭示性的探索结果。有超过 35 个情节,所以如果你喜欢视觉效果,那就去看看吧。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

虽然我试图在 Kaggle 上完成整个比赛,但对于这些搜索,我在一台 64 GB 内存的计算机上进行了 500 次随机搜索和 400 次贝叶斯优化迭代,每次耗时约 5 天(感谢亚马逊 AWS)。所有的结果都是可用的,但是你需要一些真正的硬件来重做实验!

首先:哪种方法做得更好?下图总结了随机搜索的 501 次迭代和贝叶斯优化的 402 次迭代的结果(在数据框中称为opt):

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Random Search and Bayesian Optimization ( opt) results

按最高分计算,随机搜索略胜一筹,但如果我们按平均分衡量,贝叶斯优化胜出。

**好消息是,这几乎正是我们所期望的:**随机搜索可以在一组很大的值上发生,因为它彻底探索了搜索空间,但贝叶斯优化将通过从以前的结果进行推理来“关注”最高得分的超参数值。让我们来看一个非常有启发性的图表,交叉验证分数的值与迭代次数的关系:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们绝对没有看到随机搜索的趋势,而贝叶斯优化(再次由opt显示)在试验中有所改善。如果你能理解这个图表,那么你可以看到这两种方法的好处:随机搜索探索搜索领域,但贝叶斯优化随着时间的推移变得更好。我们还可以看到,贝叶斯优化似乎达到了一个平台,表明进一步试验的回报递减。

第二个主要问题:什么是最佳超参数值?以下是贝叶斯优化的最佳结果:

**boosting_type             gbdt
colsample_bytree      0.614938
is_unbalance              True
learning_rate        0.0126347
metric                     auc
min_child_samples          390
n_estimators              1327
num_leaves                 106
reg_alpha             0.512999
reg_lambda            0.382688
subsample             0.717756
subsample_for_bin        80000
verbose                      1
iteration                  323
score                 0.788793**

我们可以使用这些结果来建立一个模型并将预测提交给竞争对手,或者通过允许我们围绕最佳值定义一个集中的搜索空间,它们可以用于通知进一步的搜索。

超参数图

要考虑的一个有趣的方面是每个超参数的每个搜索方法尝试的值。下图显示了每种搜索方法的核密度估计(KDE)函数以及采样分布(超参数网格)。垂直虚线表示每种方法的最佳值。首先是学习率:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

尽管学习率分布跨越了几个数量级,但两种方法都发现最优值在该域中相当低。通过将我们的搜索集中在这个区域,我们可以使用这个知识来通知进一步的超参数搜索。在大多数情况下,较低的学习率会提高交叉验证的性能,但代价是增加运行时间,这是我们必须做出的权衡。

让我们看看其他一些图表。对于大多数超参数,两种方法得出的最佳值相当接近,但对于colsample_bytree却不是这样:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这是指在 GBM 中构建每个树时使用的列的分数,随机搜索发现最优值高于贝叶斯优化。同样,这些结果可以用于进一步的搜索,因为我们看到贝叶斯方法倾向于集中在 0.65 左右的值。

我们将展示该分析中的另外两个图,因为它们相当有趣,涉及两个正则化参数:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传****外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这里值得注意的是,这两个超参数似乎是相互补充的:如果一个正则化值高,那么我们希望另一个正则化值低,反之亦然。也许这有助于模型在偏差/方差之间取得平衡,这是机器学习中最常见的问题。

超参数与迭代

虽然随机搜索不会改变值在搜索中的分布,但贝叶斯优化会改变,因为它会专注于搜索域中它认为最佳的值。我们可以通过绘制迭代的超参数值来看到这一点:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传****外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

趋势最明显的超参数是colsample_bytreelearning_rate,这两个参数在试验中持续下降。reg_lambdareg_alpha正在背离,这证实了我们之前的假设,即我们应该减少其中一个,同时增加另一个。

我们要小心不要把太多的值放在这些结果中,因为贝叶斯优化可能已经找到了它正在利用的交叉验证损失的局部最小值。这里的趋势很小,但令人鼓舞的是,在接近搜索结束时发现了最佳值,表明交叉验证分数在继续提高。

超参数与交叉验证分数

接下来的这些图显示了单个超参数的值与分数的关系。我们希望避免过于强调这些图表,因为我们不会一次改变一个超参数,而且多个超参数之间可能存在复杂的相互作用。一个真正精确的图表应该是 10 维的,显示所有超参数的值和结果分数。如果我们能够理解一个 10 维的图,那么我们也许能够计算出超参数的最佳组合!****

这里随机搜索是蓝色的,贝叶斯搜索是绿色的:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

****唯一明显的区别是分数随着学习率的增加而降低。我们不能说这是由于学习率本身,还是其他因素(我们将很快研究学习率和估计数之间的相互作用)。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这里没有任何强劲的趋势。由于boosting_type = 'goss'不能使用subsample(必须设置为等于 1.0),所以相对于子样本的分数有点偏差。虽然我们不能一次查看所有 10 个超参数,但如果我们转向 3D 图,我们可以一次查看两个!

三维绘图

为了尝试和检验超参数的同时效应,我们可以用 2 个超参数和分数制作 3D 图。真正精确的图应该是 10 维的(每个超参数一个),但在这种情况下,我们将坚持 3 维。(详见代码,Python 中的 3D 绘图非常简单)。首先,我们可以显示reg_alphareg_lambda,正则化超参数与分数的关系(针对贝叶斯选择):

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这有点难以理解,但如果我们记得最好的分数出现在reg_alpha的 0.5 分和reg_lambda的 0.4 分左右,我们可以看到该地区的分数普遍较高。

接下来是learning_raten_estimators(集合中训练的决策树数量)。虽然学习率是网格中的一个超参数,但决策树的数量(也称为推进轮数)是通过 5 重交叉验证的早期停止来发现的:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这一次有一个明显的趋势:较低的学习率和较高的估计数会增加分数。这种关系是预期的,因为较低的学习率意味着每棵树的贡献减少,这需要训练更多的树。扩展的树数量增加了模型适应训练数据的能力(同时也增加了运行时间)。此外,只要我们使用足够折叠的早期停止,我们就不必担心与更多的树过度拟合。当结果与我们的理解一致时,感觉真好(尽管当结果与我们的理解不一致时,我们可能会学到更多!)

关联热图

对于最后的图,我想显示每个超参数之间的相互关系和分数。这些图不能证明因果关系,但它们可以告诉我们哪些变量是相关的:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Correlation Heatmap for Bayesian Optimization

我们已经从图表中找到了大部分信息,但是我们可以看到学习率和分数之间的负相关,以及估计数和分数之间的正相关

测试最佳超参数

探索的最后一步是在一个完整的数据集上实现随机搜索最佳超参数和贝叶斯优化最佳超参数(数据集来自这个内核,我要感谢作者将其公之于众)。我们训练模型,在测试集上进行预测,最后上传到比赛中,看看我们在公共排行榜上的表现如何。努力了这么久,成绩还撑得住吗?

  • 随机搜索结果得分 0.790
  • 贝叶斯优化结果得分 0.791

**如果我们按照公共排行榜上的最佳分数,贝叶斯优化胜出!然而,公共排行榜仅基于 10%的测试数据,因此这可能是过度拟合测试数据的特定子集的结果。**总的来说,我认为完整的结果——包括交叉验证和公共排行榜——表明当运行足够多的迭代时,两种方法产生相似的结果。我们可以确定的是,这两种方法都比手动调优!与我们之前的工作相比,我们最终的模型足以让我们在排行榜上上升 1000 位。

最后,以另一个图结束,我们可以看看来自训练过的 GBM 的特征重要性:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

NEW_CREDIT_TO_ANNUITY_RATIONEW_EXT_SOURCES_MEAN是 Kaggle 上的数据科学社区导出的特征,而不是原始数据中的特征。看到这些重要性如此之高令人欣慰,因为它显示了特性工程的价值。

结论和后续步骤

这项工作的主要收获是:

  • 使用贝叶斯优化的随机搜索和自动超参数调整是模型调整的有效方法
  • 贝叶斯优化倾向于“集中”在更高的得分值上,而随机搜索更好地探索可能性
  • 当给定足够的迭代次数时,两种方法在交叉验证和测试分数方面产生相似的结果
  • 优化超参数对性能有显著影响,可与特征工程相比拟

从这里去哪里?嗯,总有很多其他方法可以尝试,比如自动化特征工程或者将问题作为时间序列来处理。我已经写了一本关于自动化特征工程的笔记本,所以这可能是我下一步的重点。我们还可以尝试其他模型,甚至进入深度学习领域!

我乐于接受建议,所以请在 Kaggle 或 Twitter 上告诉我。感谢阅读,如果你想看看我在这个问题上的其他作品,这里有一整套笔记本:

那里应该有足够的内容让任何人忙碌一会儿。现在可以开始为下一篇文章做更多的学习/探索了!数据科学最棒的地方在于,你一直在移动,寻找下一个需要征服的技术。每当我发现那是什么,我一定会分享它!

一如既往,我欢迎反馈和建设性的批评。我可以在 Twitter @koehrsen_will 上找到。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值