专栏首页技术翻译想成为数据科学家,这12个机器学习算法你应该知道

想成为数据科学家,这12个机器学习算法你应该知道

主成分分析(PCA)/奇异值分解(SVD)

PCA是一种无监督的方法,用于理解由向量组成的数据集的全局性质。这里分析了数据点的协方差矩阵,以了解哪些维度/数据点更重要。考虑矩阵中顶级PC的一种方法是考虑具有最高特征值的特征向量。SVD本质上也是一种计算有序分量的方法,但是你不需要得到点的协方差矩阵就可以得到它。

https://docs.scipy.org/doc/scipy/reference/generated/scipy.linalg.svd.html

http://scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html

入门教程

https://arxiv.org/pdf/1404.1100.pdf

最小二乘与多项式拟合

还记得你在大学里的数值分析课程吗?在那时,你常常把线条和曲线拟合成点来得到方程。在机器学习中,你可以使用它们来拟合低维的非常小的数据集的曲线。(对于具有多维度的大型数据或数据集,可能最终会出现严重的过度拟合,所以不要使用这种方法)。OLS有一个封闭的表单解决方案,所以你不需要使用复杂的优化技术。

很明显,使用这个算法可以拟合简单的曲线/回归。

https://docs.scipy.org/doc/numpy/reference/generated/numpy.linalg.lstsq.html

https://docs.scipy.org/doc/numpy-1.10.0/reference/generated/numpy.polyfit.html

入门教程

https://lagunita.stanford.edu/c4x/HumanitiesScience/StatLearning/asset/linear_regression.pdf

约束线性回归

最小二乘会与数据中的异常值、虚假场和噪声混淆。因此,我们需要约束来减少我们在数据集上拟合的线的方差。正确的方法是拟合一个线性回归模型,以确保权重不会出现偏差。模型可以具有L1范数(LASSO)或L2(岭回归)或两者(弹性回归),对于均方损耗进行了优化。

使用这些算法来拟合具有约束的回归线,并避免过度拟合并屏蔽模型中的噪声尺寸。

http://scikit-learn.org/stable/modules/linear_model.html

入门教程

https://www.youtube.com/watch?v=5asL5Eq2x0A

https://www.youtube.com/watch?v=jbwSCwoT51M

K-Means聚类

大家最喜欢的无监督聚类算法。给定一组向量形式的数据点,我们可以根据它们之间的距离进行聚类。这是一种期望最大化算法,它以迭代的方式移动簇的中心,然后逐渐移动每个集群中心的点。该算法所接受的输入是要生成的簇的数量以及试图收敛聚类的迭代次数。

顾名思义,你可以使用此算法在DataSet中创建K类。

http://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html

入门教程

https://www.youtube.com/watch?v=hDmNF9JG3lo

https://www.datascience.com/blog/k-means-clustering

Logistic回归

Logistic回归是具有非线性约束的线性回归(大多使用Sigmoid函数,或者在加权后也可以使用tanh),因此将输出限制为接近+/-类(在sigmoid的情况下为1和0)。利用梯度下降优化了交叉熵损失函数。初学者须知:Logistic回归用于分类,而不是回归。你也可以认为Logistic回归是一个单层神经网络。使用梯度下降或L-BFGS等优化方法训练Logistic回归。NLP人员通常会将其命名为Maximum Entropy Classifier。

这就是Sigmoid的样子:

使用LR训练简单但非常强大的分类器。

http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html

入门教程

https://www.youtube.com/watch?v=-la3q9d7AKQ

SVM(支持向量机)

支持向量机是线性模型,如线性/Logistic回归,其不同之处在于它们具有不同的基于裕度的损失函数(支持向量的推导是我在特征值计算中看到的最漂亮的数学结果之一)。你可以使用诸如L-BFGS甚至SGD这样的优化方法来优化损失函数。

SVM的另一项创新是将数据内核用于特征工程师。如果你有很好的领域洞察力,你可以用更聪明的RBF内核替换旧的RBF内核,并从中获利。

SVMS可以做的一件独特的事情就是学习一个类分类器。

SVMS可以用来训练分类器(甚至是回归器)。

http://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html

入门教程

https://www.youtube.com/watch?v=eHsErlPJWUU

注意:基于SGD的Logistic回归和SVM的训练都可以在SKLearn中找到,因为它允许我检查具有公共接口的LR和SVM。你还可以使用小型批处理在>RAM大小的数据集上对其进行训练。

前馈神经网络

这些基本上是多层Logistic回归分类器。许多层的重量由非线性分开(sigmoid,tanh,relu + softmax和cool new selu)。另一个流行的名称是多层感知器。FFNNs可以作为自动编码器用于分类和无监督的特征学习。

多层感知器
FFNN作为自动编码器

FFNNs可以用来训练分类器或提取特征作为自动编码器。

http://scikit-learn.org/stable/modules/generated/sklearn.neural_network.MLPClassifier.html#sklearn.neural_network.MLPClassifier

http://scikit-learn.org/stable/modules/generated/sklearn.neural_network.MLPRegressor.html

https://github.com/keras-team/keras/blob/master/examples/reuters_mlp_relu_vs_selu.py

入门教程

http://www.deeplearningbook.org/contents/mlp.html

http://www.deeplearningbook.org/contents/autoencoders.html

http://www.deeplearningbook.org/contents/representation.html

卷积神经网络(Convnets)

使用卷积神经网络几乎可以实现当今世界上任何最先进的基于视觉的机器学习结果。它们可以用于图像分类、目标检测甚至图像分割。Convnet特征层是由Yann Lecun于80年代末-90年代初发明的,作为层次特征提取器。你也可以在文本(甚至图表)中使用它们。

利用convnets对图像进行最先进的分类和文本分类,对物体进行检测,对图像进行分割。

https://developer.nvidia.com/digits

https://github.com/kuangliu/torchcv

https://github.com/chainer/chainercv

https://keras.io/applications/

入门教程

http://cs231n.github.io/

递归神经网络(RNN)

RNNS通过递归地将相同的权重集递归地应用于聚合器状态的时间t和输入的时间t(给定序列在时间0...t...T处具有输入,并且在每一时刻t有一个隐藏状态,这是RNN的t-1步输出)。现在很少使用纯RNN,但其LSTM和GRU等对应物在大多数序列建模任务中都是最先进的。

RNN(如果存在密集连接单元和非线性,现在f通常是LSTMS或Grus)。LSTM单元用于代替纯RNN中的普通密集层。

将RNN用于任何序列建模任务,特别是文本分类、机器翻译和语言建模。

https://github.com/tensorflow/models(来自谷歌的许多很酷的NLP研究论文都在这里)

https://github.com/wabyking/TextClassificationBenchmark

http://opennmt.net/

入门教程

http://cs224d.stanford.edu/

http://www.wildml.com/category/neural-networks/recurrent-neural-networks/

http://colah.github.io/posts/2015-08-Understanding-LSTMs/

条件随机场(CRF)

CRF可能是概率图形模型(PGMS)系列中最常用的模型。它们用于像RNN这样的序列建模,也可以与RNN结合使用。在神经机器翻译系统出现之前,CRF是最先进的技术,并且在许多用小数据集进行序列标记的任务中,它们仍将比需要大量数据进行概括的RNN学习得更好。它们还可以用于其他结构化预测任务,如图像分割等。CRF对序列中的每个元素进行建模,这样邻居就会影响序列中某个组件的标签,而不是所有标签相互独立。

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

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

入门教程

http://blog.echen.me/2012/01/03/introduction-to-conditional-random-fields/

https://www.youtube.com/watch?v=GF3iSJkgPbA

决策树

假设我有一个Excel表格,里面有关于各种水果的数据,我必须知道哪一个看起来像苹果。我要做的是问一个问题:“哪种水果是红色和圆形的?”并将所有回答是和否的水果分开。现在,所有的红色和圆形水果可能不全都是苹果,所有的苹果也不会都是红色和圆形的。因此,我会在红色和圆形的水果上问一个问题:“哪些水果有红色或黄色的痕迹?”而在红色和圆形水果上,我会问“哪些水果是绿色和圆形的?”。基于这些问题,我能相当准确地分辨出苹果。这一连串的问题就是决策树。然而,这是一个基于我直觉的决策树。直觉不能在高维和复杂的数据上工作。我们必须通过查看标记的数据自动提出级联问题。这就是基于机器学习的决策树所做的事情。像Cart树这样的早期版本曾经用于简单的数据,但是对于越来越大的数据集,偏差-方差权衡需要用更好的算法来解决。目前常用的两种决策树算法是:随机森林算法(在随机的属性子集上建立不同的分类器,并将它们组合起来用于输出)和增强树算法(在其他算法的基础上训练一串树,纠正它们下面的错误)。

决策树可以用来分类数据点(甚至回归)。

http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier.html

http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.GradientBoostingClassifier.html

http://xgboost.readthedocs.io/en/latest/

https://catboost.yandex/

入门教程

http://xgboost.readthedocs.io/en/latest/model.html

https://arxiv.org/abs/1511.05741

https://arxiv.org/abs/1407.7502

http://education.parrotprediction.teachable.com/p/practical-xgboost-in-python

TD算法

我们之前讨论过的所有算法都是模式识别,而不是策略学习者。为了学习解决一个多步骤问题的策略,比如赢一盘国际象棋或玩Atari游戏机,我们需要让它在所面临的奖惩中学习。这种机器学习称为强化学习。最近在该领域取得的许多成功都是将ConvNet或LSTM的感知能力与一组称为时态差异学习的算法相结合的结果。这些包括Q-学习,SARSA和其他一些变体。

这些算法主要用于自动播放游戏,也可以用于语言生成和目标检测等领域。

https://github.com/keras-rl/keras-rl

https://github.com/tensorflow/minigo

入门教程

https://web2.qatar.cmu.edu/~gdicaro/15381/additional/SuttonBarto-RL-5Nov17.pdf

https://www.youtube.com/watch?v=2pWv7GOvuf0

原文标题《10 Machine Learning Algorithms You Should Know to Become a Data Scientist》

作者:Shashank Gupta

译者:lemon

不代表云加社区观点,更多详情请查看原文链接

原文链接:https://dzone.com/articles/ten-machine-learning-algorithms-you-should-know-to

原文作者:Shashank Gupta

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 吾爱NLP(3)—我对NLP的理解与学习建议

    简单来说,NLP = Nature Language Process = 自然语言处理 ≈ 语言信息(文本/语音)+机器学习 。

    流川枫
  • 如何快速入门成为厉害的数据分析师,一份完整书单

    “一切都被记录,一切都被分析”就了一个信息爆炸的时代,人类过去两年产生的数据占据了整个人类文明中所产生的数据的90%。而在这些无限丰富的数据中,蕴藏着巨大的价值...

    流川枫
  • 图形搜索中用到的机器学习基础介绍

    针对目标图像(具有统一特征的图像),进行基于深度学习技术的模型训练,通过调优模型结构与参数,得到对于指定图像具有提取特征信息的模型 M。将库中所有图像通过 M ...

    用户2434869
  • 吾爱NLP(1)--我与自然语言处理

    文字只是信息的载体,而非信息本身,那么不用文字,而用其它的载体(比如word2vec形式的词向量)是否一样可以储存同样意义的信息呢?这个答案是肯定的,这也是现在...

    流川枫
  • 数据挖掘算法及相关应用

    我们生活在信息爆炸的时代,每时每刻都在产生海量的数椐。我们在微博、微信、社交网站、门户网站、移动终端等众多的设备商产生的海量数据,面临着无法处理数据的困境。例如...

    黄成甲
  • 机器学习程序猿在Linux猩球的生存指南

    一个小程序猿,在一场飞行意外中,坠落到Linux猩球,与家乡Win猩球/Mac猩球的绚丽多彩不同的是:Linux猩球大部分时间都是处于黑暗之中[命令行/Shel...

    流川枫
  • 吾爱NLP(5)—词向量技术-从word2vec到ELMo

    "词和句子的嵌入已成为所有基于深度学习的自然语言处理(NLP)系统的重要组成部分,它们在固定长度的稠密向量中编码单词和句子,以大幅度提高神经网络处理文本数据的能...

    流川枫
  • 机器学习课程笔记(一)

    一个程序被认为能从经验E中学习,解决任务T,达到性能度量值P,当且仅当有了经验E后,经过P评判,程序在处理T时的性能有所提升。

    用户3106371
  • 第14周Python机器学习周记

    (2)新增一个键值(maybe),计算香农熵,观察其变化(熵越高,则混合的数据也越多);

    凌川江雪
  • 机器学习之线性回归(1)

    在开始理解回归分析之前,先有个二手房房价的例子,假设这里的房价只和面积,居室情况两个因素有关,那么我们就有下列的数据形式 面积 居室 房价[万] 80 2 10...

    breezedancer

扫码关注云+社区

领取腾讯云代金券