想要成为数据科学家?知道这11种机器学习算法吗?

简介: 想要成为数据科学家?知道这十几种机器学习算法吗?赶快来了解一下吧,文中附各种算法的资源地址!

机器学习从业者都有不同的个性,虽然其中一些人会说我是X方面的专家,X可以训练任何类型的数据,其中X是某种算法。但是,我们不得不承认的是在现实生活当中,不存在一个X可以训练任何类型的数据。某些算法落实到某些行业中是适合的,但到了那个行业就变得不适合了。

在数据科学界存在一个共识:作为数据科学家,我们必须尽可能多的了解通用的及其学习算法。这样我们才能在面临不同行业的问题时有更多的解决方案。本文对通用的机器学习算法进行了简要的阐述,并提供了关于他们的相关资源,从而帮助你能够快速掌握其中的奥妙。

1.主成分分析(PCA/ SVD

PCA是一种无监督的方法,用于理解由矢量组成的数据集的全局属性。在这里我们着重分析数据点的协方差矩阵,以了解哪些维度/数据点更重要(即它们之间具有高度的协变性,但与其他变量之间的协变性较低)。考虑矩阵顶级主成分(PC)的一种方式是考虑具有最高特征值的特征向量。奇异值分解(SVD)本质上也是一种计算有序组件的方法,但你不需要获得点的协方差矩阵就可以得到它。

74551f4c3e5ebea9d480b7a0d62846d14075d280

这种算法通过获得维度缩小的数据点来帮助人们克服维度的诅咒

库地址:

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

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

还记得在大学里的数值分析课程吗?你可以使用它们来拟合机器学习中的具有低维度的小型数据集的曲线。(而对于具有多维的大数据或数据集,你可能最终会过度拟合。)OLS有一个封闭式的解决方案,因此你无需使用复杂的优化技术。

4564c591814d750e8c13523647de0049c4f663a2

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

库地址:

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

3.约束线性回归

最小二乘法可能会与异常值,假字段和数据中的噪声混淆。因此,我们需要约束来减少数据集上拟合产生的线方差。做到这一点的方法是拟合线性回归模型,以确保权重不会有误。模型可以有L1范数(LASSO)或L2Ridge Regression)或两者兼具。通过这种方法就可以使均方损失得到优化。

d2eba7ffef102c57aa550ac9291b9b1a59fc1a84

使用这个算法来拟合具有约束条件的回归线,可以避免过度拟合和掩盖模型中的噪音维度。

库地址:

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

入门教程:

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

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

4.K均值聚类

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

addcbb8c839566e5c3cfade7e45b0e25d67d7435

从名字上可以明显看出,你可以使用此算法在数据集中创建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

5.Logistic回归

Logistic回归是线性回归,在拥有权重后带有非线性(主要使用sigmoid函数,或者使用tanh函数)应用,因此把输出限制接近+/-类(对于sigmoid,为10)。交叉熵损失函数使用梯度下降进行优化。初学者注意:Logistic回归是用于分类的,而不是回归。你也可以将Logistic回归看作单层神经网络。使用梯度下降或L-BFGS等优化方法对Logistic回归进行训练。从事NLP的人经常会以最大熵分类器的名称来使用它。

这是一个Sigmoid的样子:

799c3581be35e3656b5c2271f6bf6c395aafea15

库地址:

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

入门教程

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

6.支持向量机(SVM

支持向量机是线性/逻辑回归的线性模型,区别在于它们具有不同的基于边界的损失函数(支持向量的推导是我观察到的与特征值计算在一起的最美妙的数学结果之一)。你可以使用L-BFGS甚至SGD等优化方法优化损失函数。

40c84a77461b91928550a79cd92fb99e889311f9

SVM的另一个创新是向数据工程师提供数据内核。如果你具有良好的洞察力,你可以用更聪明的RBF内核替换旧的RBF内核。

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

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

库地址:

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

入门教程

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

注意:基于SGDLogistic回归和SVM的训练可以在我经常使用的SKLearn中找到,因为它可以让我用一个通用接口来检查LRSVM

7.前馈神经网络(FFNN

这可以算的上是多层Logistic回归分类器。许多权重层被非线性(S形,tanhrelu + softmaxselu)分开了。它另外一个的名字是多层感知器。FFNN可用于自动编码器的分类和无监督特征学习。

75cf60cef3ee248adb054f4562c9c0cb2873ba51

多层感知器

09342bee5426f9d43ff5c360ac955801f495788d

FFNN作为自动编码器

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

库地址:

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

8.卷积神经网络(Convnets

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

e3281a34ad0bc85a2c9aa693183b6dd059cdd0a4

利用CNN对图像和文本分类,目标检测,图像分割的过程。

库地址:

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/

9.递归神经网络(RNNS

RNN模型序列通过在时间t递归地对聚集器状态施加相同的权重集,并且在时间t输入(给定序列在时间t处具有输入,并且在每个时间t具有隐藏状态,这是从RNNt-1步输出的)。现在很少使用纯RNN,但是像LSTMGRU这样的同类模型在大多数序列建模任务中是最先进的。

d6e555cbdb14b9317a52fad90bdfbe8b02fc5bd7

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

3262592171afe88c36d97219f13c634c02b88a28

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

库地址:

https://github.com/tensorflow/models(来自Google的许多不错的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/

10.条件随机字段(CRFS

CRF可能是概率图形模型(PGM)系列中最常用的模型。它们用于像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

11.决策树

比方说,我给了一张有关各种水果数据的Excel工作表,我必须标注这是苹果,那是其他类型的水果。那么,如果我要提出一个问题是哪些水果是红色的,那些事圆形的?并且将所有回答用来表示。现在,所有的红色的和圆形的水果可能不是苹果,所有的苹果也都不会是红色和圆形的。所以我会问一个问题:哪些水果有红色或黄色的提示?红色且为圆形的水果,并会问“哪些水果是绿色且圆形的?而不是红色和圆形水果?基于这些问题,我可以等到准确的答案——苹果。这个问题的解决方式就是使用决策树。但是,这是基于我的直觉的决策树。直觉不能处理高维和复杂的数据。我们必须通过查看标记数据自动提出问题的级联,这就是基于机器学习的决策树所做的。像CART树这样的早期版本只能用于简单的数据,但是对于越来越大的数据集,偏差-方差的权衡需要通过更好的算法来解决。现在使用的两种常见决策树算法是随机森林(在其属性的随机子集上构建不同的分类器并将它们组合以用于输出)和增强树(Boosting Trees)(在其他树的基础上对树的级联进行训练,纠正它们下面的树的错误)。

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

图书馆

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

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

数十款阿里云产品限时折扣中,赶紧点击领劵开始云上实践吧!

本文由阿里云云栖社区组织翻译。

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

作者:Shashank Gupta

译者:虎说八道,审校:。

文章为简译,更为详细的内容,请查看原文


相关文章
|
2天前
|
机器学习/深度学习 存储 人工智能
【人工智能】机器学习算法综述及常见算法详解
【人工智能】机器学习算法综述及常见算法详解
|
4天前
|
机器学习/深度学习 人工智能 算法
探索机器学习中的支持向量机(SVM)算法
【5月更文挑战第6天】在数据科学和人工智能的广阔天地中,支持向量机(SVM)以其强大的分类能力与理论深度成为机器学习领域中的一个闪亮的星。本文将深入探讨SVM的核心原理、关键特性以及实际应用案例,为读者提供一个清晰的视角来理解这一高级算法,并展示如何利用SVM解决实际问题。
28 7
|
4天前
|
机器学习/深度学习 人工智能 算法
探索机器学习中的支持向量机算法
【5月更文挑战第6天】 在数据科学和人工智能领域,支持向量机(SVM)是一种强大的监督学习模型,它凭借其出色的分类能力在众多机器学习任务中占据重要地位。本文旨在深入剖析支持向量机的工作原理,探讨其在高维数据处理中的优势以及面对大规模数据集时的应对策略。通过对核技巧、软间隔以及优化问题的讨论,我们将揭示SVM如何优雅地处理线性不可分问题,并保持模型的泛化性能。
|
8天前
|
机器学习/深度学习 自然语言处理 算法
机器学习算法原理与应用:深入探索与实战
【5月更文挑战第2天】本文深入探讨机器学习算法原理,包括监督学习(如线性回归、SVM、神经网络)、非监督学习(聚类、PCA)和强化学习。通过案例展示了机器学习在图像识别(CNN)、自然语言处理(RNN/LSTM)和推荐系统(协同过滤)的应用。随着技术发展,机器学习正广泛影响各领域,但也带来隐私和算法偏见问题,需关注解决。
|
9天前
|
机器学习/深度学习 运维 算法
【Python机器学习专栏】异常检测算法在Python中的实践
【4月更文挑战第30天】本文介绍了异常检测的重要性和在不同领域的应用,如欺诈检测和网络安全。文章概述了四种常见异常检测算法:基于统计、距离、密度和模型的方法。在Python实践中,使用scikit-learn库展示了如何实现这些算法,包括正态分布拟合、K-means聚类、局部异常因子(LOF)和孤立森林(Isolation Forest)。通过计算概率密度、距离、LOF值和数据点的平均路径长度来识别异常值。
|
9天前
|
机器学习/深度学习 数据可视化 算法
【Python机器学习专栏】t-SNE算法在数据可视化中的应用
【4月更文挑战第30天】t-SNE算法是用于高维数据可视化的非线性降维技术,通过最小化Kullback-Leibler散度在低维空间保持数据点间关系。其特点包括:高维到二维/三维映射、保留局部结构、无需预定义簇数量,但计算成本高。Python中可使用`scikit-learn`的`TSNE`类实现,结合`matplotlib`进行可视化。尽管计算昂贵,t-SNE在揭示复杂数据集结构上极具价值。
|
9天前
|
机器学习/深度学习 算法 数据挖掘
【Python机器学习专栏】关联规则学习:Apriori算法详解
【4月更文挑战第30天】Apriori算法是一种用于关联规则学习的经典算法,尤其适用于购物篮分析,以发现商品间的购买关联。该算法基于支持度和置信度指标,通过迭代生成频繁项集并提取满足阈值的规则。Python中可借助mlxtend库实现Apriori,例如处理购物篮数据,设置支持度和置信度阈值,找出相关规则。
|
9天前
|
机器学习/深度学习 算法 数据挖掘
【Python机器学习专栏】层次聚类算法的原理与应用
【4月更文挑战第30天】层次聚类是数据挖掘中的聚类技术,无需预设簇数量,能生成数据的层次结构。分为凝聚(自下而上)和分裂(自上而下)两类,常用凝聚层次聚类有最短/最长距离、群集平均和Ward方法。优点是自动确定簇数、提供层次结构,适合小到中型数据集;缺点是计算成本高、过程不可逆且对异常值敏感。在Python中可使用`scipy.cluster.hierarchy`进行实现。尽管有局限,层次聚类仍是各领域强大的分析工具。
|
9天前
|
机器学习/深度学习 算法 数据挖掘
【Python 机器学习专栏】K-means 聚类算法在 Python 中的实现
【4月更文挑战第30天】K-means 是一种常见的聚类算法,用于将数据集划分为 K 个簇。其基本流程包括初始化簇中心、分配数据点、更新簇中心并重复此过程直到收敛。在 Python 中实现 K-means 包括数据准备、定义距离函数、初始化、迭代和输出结果。虽然算法简单高效,但它需要预先设定 K 值,且对初始点选择敏感,可能陷入局部最优。广泛应用在市场分析、图像分割等场景。理解原理与实现对应用聚类分析至关重要。
|
9天前
|
机器学习/深度学习 算法 前端开发
【Python机器学习专栏】集成学习算法的原理与应用
【4月更文挑战第30天】集成学习通过组合多个基学习器提升预测准确性,广泛应用于分类、回归等问题。主要步骤包括生成基学习器、训练和结合预测结果。算法类型有Bagging(如随机森林)、Boosting(如AdaBoost)和Stacking。Python中可使用scikit-learn实现,如示例代码展示的随机森林分类。集成学习能降低模型方差,缓解过拟合,提高预测性能。