作者 | CDA数据分析师
10 machine learning methods that every data scientist should know

机器学习是研究和工业中的热门话题,新方法一直在发展。该领域的速度和复杂性使得即使对于专家而言也难以跟上新技术 - 并且对于初学者而言可能是压倒性的难度。

为了揭开机器学习的神秘面纱并为刚接触核心概念的人提供学习途径,让我们看看十种不同的方法,包括简单描述,可视化和每个方法的示例。

机器学习算法(也称为模型)是表示问题上下文中的数据的数学表达式,通常是业务问题。目标是从数据到洞察。例如,如果在线零售商想要预测下一季度的销售额,他们可能会使用机器学习算法,根据过去的销售额和其他相关数据预测这些销售额。类似地,风车制造商可以通过视觉监控重要设备并通过训练识别危险裂缝的算法来提供视频数据。

所描述的十种方法提供了一个概述 - 以及您在磨练机器学习知识和技能时可以建立的基础:

1 回归

回归方法属于有监督的ML类别。它们有助于基于一组先前数据预测或解释特定数值,例如基于类似属性的先前定价数据来预测房产的价格。

最简单的方法是线性回归,其中我们使用直线的数学方程(y = m * x + b)来模拟数据集。我们通过计算线的位置和斜率来训练具有许多数据对**(x,y)**的线性回归模型,该直线最小化所有数据点和线之间的总距离。换句话说,我们计算最接近数据中观测值的线的斜率(m)和y截距(b)。

让我们考虑更多线性回归的具体例子。我曾经使用线性回归来预测某些建筑物的能耗(以千瓦时为单位),将建筑物的年龄,楼层数,平方英尺和堵墙设备的数量汇总在一起。由于有多个输入(年龄,平方英尺等),我使用了多变量线性回归。原理与简单的一对一线性回归相同,但在这种情况下,我创建的“线”基于变量的数量发生在多维空间中。

下图显示了线性回归模型与建筑物实际能耗的匹配程度。现在想象一下,您可以访问建筑物的特征(年龄,平方英尺等),但您不知道能耗。在这种情况下,我们可以使用拟合线来估算特定建筑物的能耗。

请注意,您还可以使用线性回归来估计每个因素的权重,这有助于最终预测消耗的能量。例如,一旦有了公式,就可以确定年龄,大小或身高是否最重要。

▲建筑能耗(kWh)的线性回归模型估计

回归技术的范围从简单(如线性回归)到复杂(如正则化线性回归,多项式回归,决策树和随机森林回归,神经网络等)。但不要陷入困境:首先研究简单的线性回归,掌握基础,然后继续前进。

2 分类

另一类有监督的ML,分类方法预测或解释类值。例如,他们可以帮助预测在线客户是否会购买产品。输出可以是是或否:买方或非买方。但分类方法不限于两类。例如,分类方法可以帮助评估给定图像是否包含汽车或卡车。在这种情况下,输出将是3个不同的值:1)图像包含汽车,2)图像包含卡车,或3)图像既不包含汽车也不包含卡车。

最简单的分类算法是逻辑回归 - 这使得它听起来像一个回归方法,但事实并非如此。逻辑回归基于一个或多个输入估计事件发生的概率。

例如,逻辑回归可以将学生的两个考试分数作为输入,以便估计学生将被录取到特定大学的概率。因为估计是概率,所以输出是介于0和1之间的数字,其中1表示完全确定性。对于学生,如果估计的概率大于0.5,那么我们预测他或她将被录取。如果估计的概率小于0.5,我们预测他或她将被拒绝。

下图显示了之前学生的分数以及他们是否被录取。Logistic回归允许我们绘制一条代表决策边界的线。

▲Logistic回归决策边界:是否入读大学?

因为逻辑回归是最简单的分类模型,所以它是开始分类的好地方。随着您的进步,您可以深入研究非线性分类器,例如决策树,随机森林,支持向量机和神经网络等。

3 聚类

使用聚类方法,我们进入无监督ML的类别,因为它们的目标是对具有相似特征的观察进行分组或聚类。聚类方法不使用输出信息进行训练,而是让算法定义输出。在聚类方法中,我们只能使用可视化来检查解决方案的质量。

最流行的聚类方法是K-Means,其中“K”表示用户选择创建的聚类数。(注意,有多种技术可以选择K的值,例如弯头法。)

粗略地说,K-Means对数据点的作用如下:

  1. 随机选择数据中的K个中心。
  2. 将每个数据点分配给最接近的随机创建的中心。
  3. 重新计算每个群集的中心。
  4. 如果中心没有改变(或改变很少),则该过程结束。否则,我们返回到步骤2.(如果中心继续更改,为了防止无限循环结束,请提前设置最大迭代次数。)

下一个图将K-Means应用于建筑物的数据集。图中的每一列都表明了每栋建筑的效率。这四项测量涉及空调,插入式设备(微波炉,冰箱等),家用燃气和加热气体。我们选择K = 2进行聚类,这样可以很容易地将其中一个聚类解释为高效建筑群,将另一个聚类解释为低效建筑群。在左侧,您可以看到建筑物的位置,在右侧,您可以看到我们用作输入的四个尺寸中的两个:插入式设备和加热气体。

▲将建筑物聚类为高效(绿色)和低效(红色)组。

在探索聚类时,您将遇到非常有用的算法,例如基于密度的噪声应用空间聚类(DBSCAN),均值偏移聚类,凝聚层次聚类,使用高斯混合模型的期望最大化聚类等。

4 降维

顾名思义,我们使用降维来从数据集中删除最不重要的信息(有时是冗余列)。在实践中,我经常看到包含数百甚至数千列(也称为特征)的数据集,因此减少总数至关重要。例如,图像可以包含数千个像素,而不是所有像素对您的分析都很重要。或者,在制造过程中测试微芯片时,可能会对每个芯片应用数千个测量和测试,其中许多芯片提供冗余信息。在这些情况下,您需要降维算法以使数据集易于管理。

最流行的降维方法是主成分分析(PCA),它通过找到最大化数据线性变化的新向量来减小特征空间的维数。当数据的线性相关性很强时,PCA可以显着减小数据的维度,而不会丢失太多信息。(事实上,您还可以衡量信息丢失的实际程度并进行相应调整。)

另一种流行的方法是t-Stochastic Neighbor Embedding(t-SNE),它可以减少非线性维数。人们通常使用t-SNE进行数据可视化,但您也可以将其用于机器学习任务,例如减少特征空间和聚类,仅举几例。

下一个图显示了手写数字的MNIST数据库的分析。MNIST包含数千个从0到9的数字图像,研究人员用它们来测试它们的聚类和分类算法。数据集的每一行是原始图像的矢量化版本(大小28×28 = 784)和每个图像的标签(零,一,二,三,…,九)。请注意,我们因此将维度从784(像素)减少到2(我们的可视化中的维度)。投影到两个维度允许我们可视化高维原始数据集。

▲MNIST手写数字数据库的t-SNE迭代。

5 集成算法

想象一下,你决定制造一辆自行车,因为你对商店和网上的选择感到不满意。您可以从找到所需的每个部件的最佳部分开始。一旦你组装了所有这些伟大的部件,最终的自行车将超越所有其他选项。

集成使用相同的想法,结合几个预测模型(监督ML),以获得比每个模型本身可以提供的更高质量的预测。例如,随机森林算法是一种集成算法,它结合了许多用不同数据集样本训练的决策树。因此,随机森林的预测质量高于使用单个决策树估计的预测质量。

将集成算法视为减少单个机器学习模型的方差和偏差的一种方法。这很重要,因为任何给定的模型在某些条件下可能是准确的,但在其他条件下可能不准确。使用另一个模型,相对精度可能会相反。通过组合这两个模型,可以平衡预测的质量。

Kaggle比赛的绝大多数顶级获胜者都使用某种方式的合奏方法。最流行的集成算法是随机森林,XGBoost和LightGBM。

6 神经网络与深度学习

与被认为是线性模型的线性和逻辑回归相比,神经网络的目标是通过向模型添加参数层来捕获数据中的非线性模式。在下图中,简单神经网络有四个输入,一个带有五个参数的隐藏层和一个输出层。

实际上,神经网络的结构足够灵活,可以构建我们众所周知的线性回归和逻辑回归。术语深度学习来自具有许多隐藏层的神经网络(见下图),并封装了各种各样的体系结构。

特别难以跟上深度学习的发展,部分原因是研究和行业社区的深度学习成果翻了一番,每天产生全新的方法论。 具有一个隐藏层的神经网络。

▲深度学习:具有多个隐藏层的神经网络。

为了获得最佳性能,深度学习技术需要大量数据 - 以及大量计算能力,因为该方法可以在大型架构中自我调整许多参数。很快就会清楚为什么深度学习从业者需要使用GPU(图形处理单元)增强的非常强大的计算机。

特别是,深度学习技术在视觉(图像分类),文本,音频和视频领域非常成功。最常见的深度学习软件包是Tensorflow和PyTorch。

7 迁移学习

让我们假装您是零售行业的数据科学家。您花了几个月的时间训练高质量的模型,将图像分类为衬衫,T恤和马球。你的新任务是建立一个类似的模型,将服装图像分类为牛仔裤,货物,休闲裤和正装裤。您是否可以将内置的知识转移到第一个模型中并将其应用到第二个模型中?是的,您可以使用迁移学习。

转移学习是指重新使用先前训练的神经网络的一部分并使其适应新的但类似的任务。具体来说,一旦您使用任务数据训练神经网络,您可以传输一小部分训练过的图层,并将它们与您可以使用新任务的数据训练的几个新图层组合在一起。通过添加几个层,新的神经网络可以快速学习并适应新任务。

迁移学习的主要优点是你需要更少的数据来训练神经网络,这一点尤为重要,因为深度学习算法的训练在时间和金钱(计算资源)方面都是昂贵的 - 当然,通常很难找到足够的标记数据用于训练。

让我们回到我们的例子,并假设对于衬衫模型,你使用一个有20个隐藏层的神经网络。经过一些实验后,您意识到您可以转移18个衬衫模型层,并将它们与一个新的参数层相结合,以训练裤子的图像。因此裤子模型将有19个隐藏层。两个任务的输入和输出是不同的,但是可重复使用的层可以概括与两者相关的信息,例如布料,紧固件和形状的方面。

迁移学习变得越来越流行,现在有许多可靠的预训练模型可用于常见的深度学习任务,如图像和文本分类。

8 强化学习

想象一下,迷宫中的老鼠试图找到隐藏的奶酪片。我们将老鼠暴露在迷宫中的次数越多,找到奶酪就越好。起初,老鼠可能会随机移动,但经过一段时间后,老鼠的体验有助于它实现哪些动作更接近奶酪。

老鼠的过程反映了我们使用强化学习(RL)来训练系统或游戏。一般来说,RL是一种机器学习方法,可以帮助代理人从经验中学习。通过在设定环境中记录操作并使用试错法,RL可以最大化累积奖励。在我们的示例中,老鼠是代理,迷宫是环境。老鼠的可能操作集是:前移,后移,左移或右移。奖励是奶酪。

当您几乎没有关于问题的历史数据时,可以使用RL,因为它不需要事先提供信息(与传统的机器学习方法不同)。在RL框架中,您可以随时了解数据。毫不奇怪,RL在游戏方面尤其成功,特别是像国际象棋和围棋这样的“ 完美信息 ” 游戏。通过游戏,来自代理和环境的反馈很快得以实现,使模型能够快速学习。RL的缺点是,如果问题很复杂,可能需要很长时间才能进行训练。

正如IBM的Deep Blue在1997年击败了最好的人类国际象棋选手一样,基于RL算法的AlphaGo在2016年击败了最佳的围棋玩家。目前RL的先驱者是英国DeepMind的团队。更多关于AlphaGo和DeepMind的信息。

在2019年4月,OpenAI Five团队是第一个击败世界冠军电子竞技Dota 2的人工智能团队,这是一个非常复杂的视频游戏,OpenAI Five团队之所以选择,因为没有RL算法可以赢得它时间。击败Dota 2冠军人类团队的同一个AI团队也开发了一个机器人手,可以重新定位一个块。

你可以说强化学习是一种特别强大的人工智能形式,我们肯定会看到这些团队取得更多进展,但同样值得记住方法的局限性。

9 自然语言处理

世界上很大一部分数据和知识都是某种形式的人类语言。你能想象能在几秒钟内阅读和理解成千上万的书籍,文章和博客吗?显然,计算机还不能完全理解人类文本,但我们可以训练他们完成某些任务。例如,我们可以训练手机自动填写短信或纠正拼写错误的单词。我们甚至可以教一台机器与人进行简单的对话。

自然语言处理(NLP)本身不是一种机器学习方法,而是一种广泛使用的技术,用于为机器学习准备文本。想想各种格式的大量文本文档(单词,在线博客,…)。大多数这些文本文档将充满拼写错误,缺少字符和其他需要过滤的单词。目前,最流行的文本处理包是由斯坦福大学的研究人员创建的NLTK(自然语言工具包)。

将文本映射到数字表示的最简单方法是计算每个文本文档中每个单词的频率。考虑一个整数矩阵,其中每行代表一个文本文档,每列代表一个单词。字频率的这种矩阵表示通常称为术语频率矩阵(TFM)。从那里,我们可以通过将矩阵上的每个条目除以每个单词在整个文档集中的重要程度的权重来创建文本文档的另一种流行矩阵表示。我们将此方法称为术语频率反向文档频率(TFIDF),它通常更适用于机器学习任务。

10 词嵌入

TFM和TFIDF是文本文档的数字表示,它们只考虑频率和加权频率来表示文本文档。相比之下,Word嵌入可以捕获文档中单词的上下文。对于单词上下文,嵌入可以量化单词之间的相似性,这反过来又允许我们对单词进行算术。

Word2vec是一种基于神经网络的方法,它将语料库中的单词映射成一个数字向量。然后,我们可以使用这些向量查找同义词,对单词执行算术操作,或者表示文本文档(取文档中所有单词向量的平均值)。例如,假设我们使用足够大的文本文档来估计单词嵌入。我们还假设, 皇后, 男子汉是语料库的一部分。就这么说吧向量(字)表示单词的数字向量。“字”…估计向量(“妇女”),我们可以使用向量执行算术操作:

向量(“King”)+向量(“妇女”) 向量(‘man’)~向量(‘皇后’)

▲用Word(向量)嵌入算术

单词表示允许通过计算两个单词的向量表示之间的余弦相似性来找到单词之间的相似性。余弦相似度测量两个矢量之间的角度。

我们使用机器学习方法计算单词嵌入,但这通常是在顶部应用机器学习算法的前提步骤。例如,假设我们可以访问数千名Twitter用户的推文。还假设我们知道这些Twitter用户中哪些人买了房子。为了预测新Twitter用户购买房屋的概率,我们可以将Word2Vec与逻辑回归结合起来。

总结

我试图涵盖十种最重要的机器学习方法:从最基本的到最前沿的。很好地研究这些方法并充分理解每个方法的基础知识可以作为进一步研究更先进的算法和方法的坚实起点。

当然,还有很多非常重要的信息需要报道,包括质量指标,交叉验证,分类方法中的类不平衡以及过度拟合模型等等,仅举几例。敬请关注。

此博客的所有可视化都是使用Watson Studio Desktop完成的。

每个数据科学家都应该知道的10种机器学习方法相关推荐

  1. python内置函数多少个_每个数据科学家都应该知道的10个Python内置函数

    python内置函数多少个 Python is the number one choice of programming language for many data scientists and a ...

  2. pd种知道每个数据的类型_每个数据科学家都应该知道的5个概念

    pd种知道每个数据的类型 意见 (Opinion) 目录 (Table of Contents) Introduction介绍 Multicollinearity多重共线性 One-Hot Encod ...

  3. 每个数据科学家都应该知道的 20 个 NumPy 操作

    作者 | Soner Yıldırım 译者 | deephub翻译组 来源 | DeepHub IMBA(ID:deephub-imba) NumPy构成了数据科学领域中大部分Python库的基础. ...

  4. web开发程序员有几种_每个程序员都应该知道的10种流行的Web开发工具

    web开发程序员有几种 Are you planning to get into web development? Take a tool with you, it's scary out there ...

  5. 关于软件开发,都应该知道的10个常识

    2011年,马克·安德列森(Marc Andreessen)写了一篇文章,预言"软件吞噬世界".观点主要有两个:第一,许多传统业务正在被软件公司所取代:第二,所有其他公司都发现,他 ...

  6. ftpclient怎么获取到该目录下面得文件_你应该知道的10种Python文件系统方法

    使用os和shutil操作文件和文件夹 你可以编写Python程序来与文件系统进行交互来做很酷的事情.怎么做并不总是非常清楚.本文是当前和有抱负的开发人员和数据科学家的指南.我们将重点介绍10个基本的 ...

  7. 每一个JavaScript开发者都应该知道的10道面试题

    JavaScript十分特别.而且差点儿在每一个大型应用中起着至关关键的数据.那么,究竟是什么使JavaScript显得与众不同,意义非凡? 这里有一些问题将帮助你了解其真正的奥妙所在:   1.你能 ...

  8. 每个 JavaScript 工程师都应当知道的 10 个面试题

    1 能说出来两种对于 JavaScript 工程师很重要的编程范式么? JavaScript 是一门多范式(multi-paradigm)的编程语言,它既支持命令式(imperative)/面向过程( ...

  9. 每个程序员都必须知道的 8 种数据结构

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 快速介绍8种数据结构 数据结构是一种特殊的组织和存储数据的方式,可 ...

  10. 【深度学习】每个数据科学家都必须了解的 6 种神经网络类型

    神经网络是强大的深度学习模型,能够在几秒钟内合成大量数据.有许多不同类型的神经网络,它们帮助我们完成各种日常任务,从推荐电影或音乐到帮助我们在线购物. 与飞机受到鸟类启发的方式类似,神经网络(NNs) ...

最新文章

  1. 2、安装Lync Server 2013
  2. 《编写高质量代码:改善c程序代码的125个建议》——建议3-5:避免使用浮点数作为循环计数器...
  3. 深度学习之输入通道个数、卷积核通道个数,卷积核个数、输出通道个数的关系
  4. XamarinForms教程构建XamarinForms开发环境
  5. 每日一篇——Fed Unveils Major Expansion of Market Intervention
  6. elasticsearch学习之路---Linux 下安装并启动elasticsearch
  7. php分布式微服务开发_分布式微服务架构
  8. ​电赛 | 19年全国一等奖,北航学子回忆录(上)
  9. 电路中的这些符号标识,你真的明白吗?
  10. [css] 用css画出一把刻度尺
  11. 天津大学推出大型无人机航拍车辆数据集DroneVehicle
  12. 写代码的注意了,User这个单词用不得
  13. golang判断结构体是否实现了某个接口
  14. VMware 禁用虚拟内存文件,提升虚拟机响应速度 .
  15. php 循环中return,php中for循环遇上return的示例代码分享
  16. liunx搭建sftp文件服务器,Centos7搭建sftp服务器
  17. B2C多用户商城系统源码
  18. 计算机桌面文件删除不掉是怎么了,桌面上文件删不掉_桌面上的压缩文件为什么删除不了?...
  19. 没有文件夹则创建文件夹
  20. 云聚高性能,论道“新超算”

热门文章

  1. mesh组网是什么意思
  2. 解决IISASP调用XmlHTTP出现msxml3.dll (0x80070005) 拒绝访问的错误
  3. 上官婉儿墓志 - 还原历史真相
  4. vb访问服务器文件,VB6打开远程服务器文件
  5. mysql实现周月表_Mysql,Mybatis做时间过滤报表:日周月统计
  6. kali之破解隔壁老王wifi
  7. 数据可视化的方法、工具和应用
  8. 电子皮肤综述阅读-鲍哲南-2019
  9. python中类似对象吗_关于性能:什么是Python中最快的(访问)类似结构的对象?
  10. 【NOIP 2017PJ】跳房子