盘点:数据科学家不可不知的十一种机器学习算法
从事机器学习的人往往都非常自信。其中一些人甚至会说“我是X方面的专家,X可以训练任何类型的数据(X =某种算法)。其他一些则是适合工作人员工作的工具”。他们看起来似乎骄傲自大,但不可否认他们拥有深厚的专业知识,并且对机器学习的不同领域略都有所了解。也就是说:想成为一名数据科学家,我们必须了解一些常见机器学习算法的基础知识,这将帮助我们解决我们遇到的问题。
1.主成分分析(PCA)/SVD
PCA是一种无监督的方法,用于理解由矢量组成的数据集的全局属性。分析数据点的协方差矩阵,以了解那些维度/数据点(有时)更重要。考虑顶级过程控制系统矩阵的一种方式是寻找具有最高特征值的特征向量。
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
2.最小二乘法和多项式拟合
记住你的数值分析代码,因为你可以用它来拟合线条和曲线来得到方程,或者使用它们对机器学习中的曲线进行拟合,以获得低维度的小型的数据集。(需要注意的是,对于大量数据或多维数据集,你可能会过度拟合。) 还有,如果你在里面使用了最小二乘法,那么你不需要使用过于复杂的优化技术。
很明显,这种算法非常适合简单的曲线回归拟合
相关内容:
https://docs.scipy.org/doc/numpy/reference/generated/numpy.linalg.lstsq.htmlhttps://docs.scipy.org/doc/numpy-1.10.0/reference/generated/numpy.polyfit.html
入门教程l:
https://lagunita.stanford.edu/c4x/HumanitiesScience/StatLearning/asset/linear_regression.pdf
3.约束线性回归
最小二乘法经常会与异常值,虚假域发生混淆。因此,我们需要约束线性回归来减少适合数据集的方差。拟合线性回归模型的目的是确保权重不会出现问题。具体内容参见下图。(均方损失得到优化。)
通过这些算法我们可以避免过度拟合并屏蔽有问题的维度模型。
相关内容:
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均值聚类
K-means算法是很典型的基于距离的聚类算法,采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大。该算法认为簇是由距离靠近的对象组成的,因此把得到紧凑且独立的簇作为最终目标。初始类聚类中心点的选取对聚类结果具有较大的影响。
从图中可以看出,我们可以使用这个算法在数据集创建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.逻辑回归算法
逻辑回归是具有非线性约束的线性回归(大多使用Sigmoid函数,或者在加权后也可以使用tanh),因此输出只能在0和1之间(对于Sigmoid函数,结果为1或0)。我们多通过梯度下降对交叉熵损失函数进行优化。需要对初学者强调的是:逻辑回归用于分类,而不是回归。你也可以把逻辑作单层神经网络,使用梯度下降或L-BFGS等优化方法对逻辑回归进行训练。 神经语言程序学的人们经常会用它对最大熵进行分类。
使用LR来训练简单但非常有用的分类器。
相关内容:
http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html
入门教程:
https:/www.youtube.com/watch?v=-la3q9d7AKQ
6.支持向量机(SVM)
支持向量机是线性模型,如线性/逻辑回归,区别在于它们具有不同的基于裕度的损失函数(支持向量的推导是作者在特征值计算中看到的最漂亮的数学结果之一)。你可以使用诸如L-BFGS甚至SGD这样的优化方法来优化损失函数。
SVM的另一个创新是向数据工程师提供数据内核。如果你有良好的洞察力,你可以用更智能的RBF内核替换它,并从中获利。
SVM特征之一是学习一个类分类器。
SVM可以用来训练分类器(甚至是回归器)
相关内容:
http://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html
入门教程:
https://www.youtube.com/watch?v=eHsErlPJWUU
7.前馈神经网络
简单的说,它是多层逻辑回归分类器。由非线性(sigmoid, tanh, relu + softmax and the cool new selu)分开的权重层。它另一个流行的名字是多层感知器。 前馈神经网络可用于自动编码器的分类和无监督特征学习。
前馈神经网络可用于训练分类器或提取自动编码器的特征。
相关内容:
http://scikitlearn.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.卷积神经网络(Convnet)
目前世界上几乎所有基于视觉的机器学习结果都是使用卷积神经网络实现的。它们可以用于图像分类、目标检测甚至图像分割。需要补充的是,由Yann Lecun在80年代末90年代初发明的分层特征提取器,你可以在文本(或图表)中使用它。
利用卷积神经网络进行图像分类和文本分类、目标检测、图像分割。
相关内容:
https:/developer.nvidia.com/位
https:/github.com/kuangliu/torchcv
https:/github.com/chainer/chainercv
https:/keras.io/application/
入门教程:
http:/cs231n.github.io/
https://adeshpande3.github.io/A-Beginner%27s-Guide-To-Understanding-Convolutional-Neural-Networks/
9.递归神经网络(RNN)
递归神经网络(RNN)通过递归将相同的权重集应用于聚合器状态的时间t和输入的时间t(给定序列在0.t.T时有输入,并且在每一时刻t有一个隐藏状态,这是RNN的第t-1步输出)。现在很少只使用RNN,但LSTM和Grus这样的RNN在大多数序列建模任务中仍受重视。
递归神经网络(RNN)是两种人工神经网络的总称。一种是时间递归神经网络(recurrent neural network),另一种是结构递归神经网络(recursive neural network)。时间递归神经网络的神经元间连接构成有向图,而结构递归神经网络利用相似的神经网络结构递归构造更为复杂的深度网络。两者训练的算法不同,但属于同一算法变体。
使用RNN进行序列建模任务,特别是文本分类、机器翻译、语言建模。
相关内容:
https:/github.com/TensorFlow/Model(来自谷歌的许多很棒的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.条件随机字段(CRF)
CRF可能是Probabilitic Graphical Models(PGM)系列中最常用的模型。 它们应用于序列建模,也可以与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
以上就是可以学习成为数据科学家的11种机器学习算法。希望能对你起到帮助。