[译] 数据科学领域十大必知机器学习算法

数据科学领域十大必知机器学习算法

机器学习从业者们各有各自不一样的信仰。有些信奉“一剑破万法”(这里“剑”就是一种算法,而万法则是各类类型的数据),有些则认为“合适的工具作对的事”。他们中许多人也赞同“样样了解,精通一门”,他们在一个领域拥有丰富的专业知识,对机器学习的不一样领域也略知一二。尽管如此,不能否认的是做为一名数据科学家,必需要对常见的机器学习算法了解一二,这将帮助咱们在解决新问题时提供思路。本教程带你速览常见机器学习算法和相关资源,以便快速上手。html

1. 主成分分析 (PCA)/SVD

PCA 是一种无监督方法,用于了解由向量构成数据集的全局属性。这里对数据点的协方差矩阵进行分析,以了解哪些维度(较多状况下)或数据点(部分状况下)更重要。好比,它们之间的方差较高,但与其余维度的协方差较低。考虑那些具备最高特征值的特征向量,它们就有多是上层主成分(PC)。SVD 本质上也是一种计算有序成分的方法,可是不须要获得数据点的协方差便可得到。前端

这类算法经过将数据降维来解决高维数据分析难题。python

工具库:

docs.scipy.org/doc/scipy/r…android

scikit-learn.org/stable/modu…ios

入门教程:

arxiv.org/pdf/1404.11…git

2a. 最小二乘法与多项式拟合

还记的你在大学时一般用于将直线或曲线拟合到点上以求得方程式的数值分析方法吗?能够在较小的低维数据集上使用它们来拟合机器学习中的曲线。(对于大型数据或者多个维度的数据集,最终结果可能会出现严重的过拟合。所以没必要多费苦心了。)最小二乘法(OLS)有闭合解,因此不须要使用复杂的优化技术。github

显而易见,这个算法只能用于拟合简单的曲线或回归。web

工具库:

docs.scipy.org/doc/numpy/r…docs.scipy.org/doc/numpy-1…算法

入门教程:

lagunita.stanford.edu/c4x/Humanit…后端

2b. 约束线性回归

最小二乘法在处理数据中的离群值、伪场和噪声会产生混淆。所以,在拟合一个数据集是须要约束来减小数据行中的方差。正确的方法是使用线性回归模型对数据集进行拟合,这样才能保证权重值不会出错。模型能够是 L1 规范(LASSO)或 L2(岭回归)或二者兼备(elastic regression)。均方损失最优化。

这类算法拟合回归线时有约束,能够避免过拟合,并下降模型中噪声维度。

工具库:

scikit-learn.org/stable/modu…

入门教程:

www.youtube.com/watch?v=5as…

www.youtube.com/watch?v=jbw…

3. K-means 聚类

这是你们最喜欢的无监督聚类算法。给定一组向量形式的数据点,能够经过它们之间的距离将其分为不一样的群类。这是一种最大指望(EM)算法,它不停的移动群类的中心点,再根据群类中心对数据点进行聚类。这个算法的输入是须要生成的群类个数和聚类过程的迭代次数。

顾名思义,可使用此算法使数据集分为 K 个集群。

工具库:

scikit-learn.org/stable/modu…

入门教程:

www.youtube.com/watch?v=hDm…

www.datascience.com/blog/k-mean…

4. 逻辑回归

逻辑回归是一种约束线性回归,加权具备非线性应用(经常使用 sigmod 函数,你也可以使用 tanh),所以输出被严格限定为 +/- 类(在 sigmod 中即为 1 和 0)。使用梯度降低对交叉熵损失函数进行优化。请初学者注意:逻辑回归用于分类,而不是回归。你也能够将逻辑回归想成单层神经网络。逻辑回归会采用梯度降低或 L-BFGS 等方法进行训练。NLP 中它一般被称做最大熵分类器。

Sigmod 函数图像以下:

可使用LR来训练简单但很是健壮的分类器。

工具库:

scikit-learn.org/stable/modu…

入门教程:

www.youtube.com/watch?v=-la…

5. SVM(支持向量机)

支持向量机是相似线性回归和逻辑回归的线性模型,它们之间的不一样在于使用了不一样的边际损失函数(支持向量的推导是我见过使用特征值计算的最优美的数学结果之一)。你可使用 L-BFGS 甚至 SGD 这样的优化方法来优化损失函数。

SVM 的另外一创新之处在于数据到特征工程中的核心使用。若是你有很好的数据透视能力,你能够用更智能的核心替换原来还算不错的 RBF 并从中受益。

SVM 的一个独特之处是能够学习一个分类器。

支持向量机能够用来训练分类器(甚至是回归器)。

工具库:

scikit-learn.org/stable/modu…

入门教程:

www.youtube.com/watch?v=eHs…

注意:基于 SGD 的逻辑回归和 SVM 训练都是来源于 SKLearn 的 scikit-learn.org/stable/modu…,我经常使用这个,由于能够用公用接口同时检测逻辑回归和 SVM。你也可使用小型批次利用 RAM 大小的数据集进行训练。

6. 前馈神经网络

这些本质上来讲就是多层逻辑回归分类器。经过非线性函数(sigmod、tanh、relu + softmax 以及超酷的新玩意 selu)将各层的权重分割开。它也被成为多层感知机。前馈神经网络能够做为自编码器在分类器或者非监督特征学习中使用。

多层感知机

做为自编码器的前馈神经网络

前馈神经网络能够用来训练分类器或者做为自编码器提取特征。

工具库:

scikit-learn.org/stable/modu…

scikit-learn.org/stable/modu…

github.com/keras-team/…

入门教程:

www.deeplearningbook.org/contents/ml…

www.deeplearningbook.org/contents/au…

www.deeplearningbook.org/contents/re…

7. 卷积神经网络(卷积网)

目前世界上几乎全部最早进的基于视觉的机器学习成果都是经过卷积神经网络实现的。它们能够用于图像分类、目标检测甚至图像分割。卷积网是由 Yann Lecun 在 80 年代末 90 年代初发明的,它以卷积层为主要特征,这些卷积层起到分层特征提取的做用。能够在文本(甚至图表)中使用它们。

使用卷积网进行最新的图像和文本分类,目标检测,图像分割。

工具库:

developer.nvidia.com/digits

github.com/kuangliu/to…

github.com/chainer/cha…

keras.io/application…

入门教程:

cs231n.github.io/

adeshpande3.github.io/A-Beginner%…

8. 循环神经网络 (RNN)

RNN 经过将同一权重集递归应用到 t 时的聚合器状态和 t 时的输入,来对序列数据进行建模。(给定一个在时间点 0..t..T 处输入的序列,并在各个 t 处有一个由 RNN 中 t-1 步输出的隐藏状态)。纯粹的 RNN 如今不多使用,但它的类似架构,好比 LSTM 和 GRAS,在大多数序列型建模任务中都是最早进的。

RNN(若是这是一个密集联接单元并具备非线性,那么如今 f 一般是 LSTM 或 GRU)。LSTM 单元一般用来代替 RNN 结构中的普通密集层。

使用 RNN 进行任何序列型建模任务,特别是文本分类、机器翻译、语言建模。

工具库:

github.com/tensorflow/… (Many cool NLP research papers from Google are here)

github.com/wabyking/Te…

opennmt.net/

入门教程:

cs224d.stanford.edu/

www.wildml.com/category/ne…

colah.github.io/posts/2015-…

9. 条件随机场(CRF)

CRF 多是几率图模型(PGM)家族中最经常使用的模型。它们能够像 RNN 同样用于序列型建模,也能够与 RNN 结合使用。在神经网络机器翻译系统出现以前,CRF 是最早进的,在许多小数据集的顺序型标记任务中,它们仍比须要大量数据才能概括推理的 RNN 学习得更好。它们还能够用于其余结构化的预测任务中,好比图像分割等。CRF 对序列中的每一个元素(好比句子)进行建模,以便相邻元素影响序列中某个组件的标签,而不是全部标签彼此独立。

使用 CRF 标记序列(文本、图像、时间序列、DNA等)

工具库:

sklearn-crfsuite.readthedocs.io/en/latest/

入门教程:

blog.echen.me/2012/01/03/…

油管上 Hugo Larochelle 的 7 部系列演讲:www.youtube.com/watch?v=GF3…

10. 决策树

比方来讲,我收到了一张 Excel 表格,上面有关于各类水果的数据,我必须说出哪些看起来像苹果。我要作的就是问一个问题“哪一个水果是红色且是圆形的?”,把全部回答“是”与“不是”的水果分为两个部分。如今红色且是圆形的水果不必定是苹果,全部苹果不必定都是红色且圆形的。因此我要问下一个问题,对于红色且圆形的水果问:“哪一个水果有红色或者黄色?”而对不红且不圆的水果问:“哪些水果是绿色且圆形的?”。根据这些问题,能够至关准确的说出哪些是苹果。这一系列的问题就是决策树。然而,这是一个我直观描述的决策树。直觉不能用于高维的复杂数据。咱们必须经过查看标记的数据自动提出一连串的问题。这就是基于机器学习的决策树所作的工做。像 CART 树这样较早的版本曾经用于简单的数据,可是随着数据集愈来愈大,误差和方差之间的权衡须要更好的算法来解决。目前经常使用的两种决策树算法是随机森林算法(在属性的子集上创建不一样的分类器,并将它们组合在一块儿进行输出)和加强树算法(在其余树之上训练一系列树,并纠正其子树中的错误)。

决策树能够用来对数据点(甚至回归)进行分类。

工具库:

scikit-learn.org/stable/modu…

scikit-learn.org/stable/modu…

xgboost.readthedocs.io/en/latest/

catboost.yandex/

入门教程:

xgboost.readthedocs.io/en/latest/m…

arxiv.org/abs/1511.05…

arxiv.org/abs/1407.75…

education.parrotprediction.teachable.com/p/practical…

更多算法(你应当学习)

若是你还在思考以上方法可否解决相似 DeepMind 击败世界围棋冠军同样的任务,不要痴心妄想了。咱们上面讨论的这 10 种算法都是模式识别,而不是策略学习。要学习解决多步骤问题(好比赢得棋类游戏或玩 Atari 游戏)的策略,咱们须要建立一个自由终端并让其可以学习其面对的奖励和惩罚。这一类的机器学习被称做强化学习。最近该领域中的许多成果(并不是所有)都是在将卷积网或 LSTM 的感知能力与一组名为即时差分学习的算法相结合而得出的成果。其中就包括 Q-learning、SARSA 和其余一些变种。这些算法巧妙运用贝尔曼方程获得一个可以让终端由环境奖励训练的损失函数。

这些算法主要用于自动打游戏 :D,也在言语生成和实体识别有必定应用。

工具库:

github.com/keras-rl/ke…

github.com/tensorflow/…

入门教程:

获取 Sutton 和 Barto 的免费图书:web2.qatar.cmu.edu/~gdicaro/15…

查看 David Silver 的课程:www.youtube.com/watch?v=2pW…

这些就是成为一个数据科学家你必学的 10 个机器学习算法。

能够在这里阅读机器学习的相关工具库。

但愿你喜欢这篇文章,请登陆获取免费 ParallelDots 帐号开始你的 AI 之路。你也能够在这里查看咱们 API 的样例。

这里查看原文。

若是发现译文存在错误或其余须要改进的地方,欢迎到 掘金翻译计划 对译文进行修改并 PR,也可得到相应奖励积分。文章开头的 本文永久连接 即为本文在 GitHub 上的 MarkDown 连接。


掘金翻译计划 是一个翻译优质互联网技术文章的社区,文章来源为 掘金 上的英文分享文章。内容覆盖 AndroidiOS前端后端区块链产品设计人工智能等领域,想要查看更多优质译文请持续关注 掘金翻译计划官方微博知乎专栏

相关文章
相关标签/搜索