专栏首页银河系资讯成为数据科学家应该知道的10种机器学习算法

成为数据科学家应该知道的10种机器学习算法

了解为了成为数据科学家而应该了解的十种机器学习算法。

机器学习从业者有不同的个性。虽然其中一些是“我是X专家,X可以训练任何类型的数据”,其中X =某种算法,其他人是“正确的工具用于正确的工作”的人。他们中的很多人还订阅了“各行各业的高手”的策略,他们拥有一个深厚的专业领域,并且对机器学习的不同领域略有了解。也就是说,没有人可以否认这样一个事实:作为实践数据科学家,我们必须了解一些常见机器学习算法的基础知识,这将有助于我们处理我们遇到的新域问题。这是常见机器学习算法的旋风之旅,以及有关它们的快速资源,可以帮助你开始使用它们。

Principal Component Analysis (PCA)/SVD

PCA是一种无监督的方法,用于理解由向量组成的数据集的全局属性。此处分析协方差数据点矩阵,以了解哪些维度(大多数)/数据点(有时)更重要(即,它们之间的差异很大,但与其他维度的协方差很小)。考虑矩阵的顶级PC的一种方法是考虑具有最高特征值的特征向量。SVD本质上也是一种计算有序分量的方法,但是你不需要得到点的协方差矩阵来得到它。

该算法通过获取降维数据点来帮助人们克服维数的困扰。

Libraries

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具有封闭式的解决方案,因此你无需使用复杂的优化技术。

很明显,使用此算法来拟合简单的曲线/回归。

Libraries

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(岭回归)或两者(弹性回归)。平均平方损失得到优化。

使用这些算法来拟合带有约束的回归线,并避免从模型中过度拟合和掩盖噪声维度。

Libraries

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聚类

每个人都喜欢无监督的聚类算法。给定一组矢量形式的数据点,我们可以根据它们之间的距离制作点集。它是一种期望最大化算法,它迭代地移动集群的中心,然后逐个移动每个集群中心的点。算法所采用的输入是要生成的簇的数量以及它将尝试聚合簇的迭代次数。

从名称中可以明显看出,你可以使用此算法在数据集中创建K个群集。

Libraries

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)。使用Gradient Descent优化交叉熵损失函数。初学者须知:Logistic回归用于分类,而不是回归。你还可以将Logistic回归视为单层神经网络。使用梯度下降或L-BFGS等优化方法训练Logistic回归。NLP人员通常会将其命名为Maximum Entropy Classifier。

这就是Sigmoid的样子:

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

Libraries

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

入门教程

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

SVM(支持向量机)

SVM是线性模型,如线性/逻辑回归,不同之处在于它们具有不同的基于边缘的损失函数(支持向量的推导是我在特征值计算中看到的最美丽的数学结果之一)。你可以使用L-BFGS甚至SGD等优化方法优化损耗函数。

SVM的另一项创新是将数据内核用于特征设计。如果你有很好的领域洞察力,你可以用更智能的RBF内核替换旧的RBF内核并获利。

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

SVM可用于训练分类器(甚至是回归量)。

Library

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)。另一个流行的名字是Multi-Layered Perceptrons。FFNN可用作自动编码器的分类和无监督特征学习。

多层感知器

FFNN作为自动编码器

FFNN可用于训练分类器或提取特征作为自动编码器。

Libraries

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)

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

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

Libraries

https://developer.nvidia.com/digits

https://github.com/kuangliu/torchcv

https://github.com/chainer/chainercv

https://keras.io/applications/

入门教程

http://cs231n.github.io/

https://adeshpande3.github.io/A-Beginner%27s-Guide-To-Understanding-Convolutional-Neural-Networks/

递归神经网络(RNN)

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

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

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

Library:

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可能是概率图形模型(PGM)系列中最常用的模型。它们用于像RNN一样的序列建模,也可以与RNN结合使用。在神经机器翻译系统出现之前CRF是最先进的,并且在许多序列标记任务中使用小数据集,它们仍然比需要更大量数据的RNN更好地学习。它们还可以用于其他结构化预测任务,如图像分割等.CRF对序列的每个元素(比如句子)进行建模,使得邻居影响序列中组件的标签,而不是所有标签彼此独立。

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

Library:

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树这样的早期版本曾经用于简单数据,但随着数据集越来越大,偏差 - 方差权衡需要用更好的算法来解决。现在使用的两种常见的决策树算法是随机森林(在随机的属性子集上构建不同的分类器并将它们组合用于输出)和Boosting Trees(将树木级联培训在其他树上,纠正下面的错误)他们)。

决策树可用于对数据点进行分类(甚至回归)。

Library

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算法

如果你仍然想知道上述任何方法如何解决像DeepMind那样击败Go世界冠军的任务,他们都不能。在此之前我们讨论的所有10种算法都是模式识别,而不是策略学习者。要学习解决多步问题的策略,例如赢得国际象棋或玩Atari控制台,我们需要让世界上没有代理人,并从其面临的奖励/惩罚中学习。这种类型的机器学习称为强化学习。最近在该领域取得的成功很多(并非全部)是将Convnet或LSTM的感知能力与称为时间差异学习的一组算法相结合的结果。这些包括Q-Learning,SARSA和其他一些变体。

这些算法主要用于自动播放游戏,也用于语言生成和对象检测中的其他应用。

Library

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

这些是你可以学习成为数据科学家的十种机器学习算法。

你还可以在此处阅读有关机器学习库的信息。

(未经同意,请勿转载)

本文分享自微信公众号 - 银河系1号(gh_19a1776ab1d8)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-03-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

推荐阅读

  • 日访问百万级微信小程序优化技巧总结

    之前负责的锡慧在线小程序是一款公益性质在线教育类小程序,因疫情影响导致流量暴增,日访问过百万

    薛定喵君
    小程序微信缓存RedisCanvas
  • Spiral: 一个性能卓越的PHP/Golang混合开发框架

    春节期间,了解到一个“全新”的 WEB 开发框架:Spiral, 最开始引起我的兴趣是从同事那里听说了 RoadRunner. 然后去了解 RoadRunner 的时候看到了 Spiral. 之所以把“全新”用双引号引起来,是因为这个框架其实从 2013 年起就在它的开发团队以及一些企业客户中应用了,经历了各种实际应用场景的考验,Spiral 的功能及其丰富,性能与当前主流的 PHP 框架相比也相当出众。但这个框架源自俄国,在国内不算知名,他们团队开始重视和梳理开源,也应该是才开始的事情。

    小李刀刀
    PHPGoSymfony
  • kubernetes系列教程(二十)prometheus提供完备监控系统

    上一个章节中kubernetes系列教程(十九)使用metric-server让HPA弹性伸缩愉快运行介绍了在kubernetes中的监控架构,通过安装和使用metric-server提供kubernetes中的核心监控指标:提供node节点和pod容器CPU和内存的监控能力,核心监控指标提供的监控维度和指标相对有限,需要更好的扩展监控能力,需要使用自定义监控来实现,本文介绍prometheus提供更更加丰富的自定义监控能力。

    HappyLau谈云计算
    Kubernetes容器微服务云监控
  • 如何将设计思维应用到精益初创公司的软件开发

    我们所说的设计思维,是指由 IDEO 公司的 Tim Brown 提出,并且正在改变全世界组织的设计思维,简称 DT。(译者注:IDDO,当代最具影响力的设计公司之一)

    Aceyclee
    Serverless无服务器云函数
  • InnoDB 事务加锁分析

    一般大家对数据库事务的了解可能停留在事务的ACID特性以及事务4种不同的隔离级别层面上,而对于事务 4 种不同隔离级别如何实现了解相对较少。

    2020labs小助手
    MySQLSQL数据库MVCMVCC
  • FutureTask 核心源码解析

    研究源码,一般我们都从整体以及实例先入手,再研究细节,不至于一开始就“深陷其中而"当局者迷".

    JavaEdge
    HTTPJava
  • 200行代码落地人脸识别开锁应用

    2019年国庆,帮朋友实现了一个人脸识别进行开锁的功能,用在他的真人实景游戏业务中。几个月来运行稳定,体验良好,借着这个春节宅家的时间,整理一下这个应用的实现过程。

    高树磊
    人脸识别图像处理
  • 滑动验证码攻防对抗

        在业务安全领域,滑动验证码已经是国内继,传统字符型验证码之后的标配。众所周知,打码平台和机器学习这两种绕过验证码的方式,已经是攻击者很主流的思路,不再阐述。冷渗透介绍的是一个冷门的绕过思路和防御方案。这些积累,均来自于实战之中,希望有用。

    周俊辉
    HTTP网络安全安全网站
  • 程序员进阶必读,万字总结Mysql优化精华篇

    price decimal(8,2)有2位小数的定点数,定点数支持很大的数(甚至是超过int,bigint存储范围的数)

    程序员内点事
    全文检索缓存SQL数据库Python
  • 运维转型 | 运维人不再只是“救火英雄”

    各行各业都开启了数字化转型的进程,运维团队在这种时代的浪潮中又该何去何从?我在帮助一些企业落地了运维技术平台之后,开始反思这个问题,并将所思所想整理成本篇文章。

    嘉为科技
    企业运维自动化云计算

扫码关注云+社区

领取腾讯云代金券