收藏 | 数据分析师最经常使用的10个机器学习算法!

 

在机器学习领域,有种说法叫作“世上没有免费的午饭”,简而言之,它是指没有任何一种算法能在每一个问题上都能有最好的效果,这个理论在监督学习方面体现得尤其重要。算法

举个例子来讲,你不能说神经网络永远比决策树好,反之亦然。模型运行被许多因素左右,例如数据集的大小和结构。bootstrap

所以,你应该根据你的问题尝试许多不一样的算法,同时使用数据测试集来评估性能并选出最优项。网络

固然,你尝试的算法必须和你的问题相切合,其中的门道即是机器学习的主要任务。打个比方,若是你想打扫房子,你可能会用到吸尘器、扫帚或者拖把,但你确定不会拿把铲子开始挖坑吧。数据结构

对于渴望了解机器学习基础知识的机器学习新人来讲,这儿有份数据科学家使用的十大机器学习算法,为你介绍这十大算法的特性,便于你们更好地理解和应用,快来看看吧。若是你想了解大数据的学习路线,想学习大数据知识以及须要免费的学习资料能够加群:784789432.欢迎你的加入。天天下午三点开直播分享基础知识,晚上20:00都会开直播给你们分享大数据项目实战。dom

1. 线性回归机器学习

线性回归多是统计学和机器学习中最知名和最易理解的算法之一。函数

因为预测建模主要关注最小化模型的偏差,或者以可解释性为代价来作出最准确的预测。 咱们会从许多不一样领域借用、重用和盗用算法,其中涉及一些统计学知识。性能

线性回归用一个等式表示,经过找到输入变量的特定权重(B),来描述输入变量(x)与输出变量(y)之间的线性关系。学习

Linear Regression测试

举例:y = B0 + B1 * x

给定输入x,咱们将预测y,线性回归学习算法的目标是找到系数B0和B1的值。

可使用不一样的技术从数据中学习线性回归模型,例如用于普通最小二乘和梯度降低优化的线性代数解。

线性回归已经存在了200多年,而且已经进行了普遍的研究。 若是可能的话,使用这种技术时的一些经验法则是去除很是类似(相关)的变量并从数据中移除噪声。 这是一种快速简单的技术和良好的第一种算法。

2. 逻辑回归

逻辑回归是机器学习从统计领域借鉴的另外一种技术。 这是二分类问题的专用方法(两个类值的问题)。

逻辑回归与线性回归相似,这是由于二者的目标都是找出每一个输入变量的权重值。 与线性回归不一样的是,输出的预测值得使用称为逻辑函数的非线性函数进行变换。

逻辑函数看起来像一个大S,并能将任何值转换为0到1的范围内。这颇有用,由于咱们能够将相应规则应用于逻辑函数的输出上,把值分类为0和1(例如,若是IF小于0.5,那么 输出1)并预测类别值。

Logistic Regression

因为模型的特有学习方式,经过逻辑回归所作的预测也能够用于计算属于类0或类1的几率。这对于须要给出许多基本原理的问题十分有用。

与线性回归同样,当你移除与输出变量无关的属性以及彼此很是类似(相关)的属性时,逻辑回归确实会更好。 这是一个快速学习和有效处理二元分类问题的模型。

3. 线性判别分析

传统的逻辑回归仅限于二分类问题。 若是你有两个以上的类,那么线性判别分析算法(Linear Discriminant Analysis,简称LDA)是首选的线性分类技术。

LDA的表示很是简单。 它由你的数据的统计属性组成,根据每一个类别进行计算。 对于单个输入变量,这包括:

  •  每类的平均值。
  •  跨全部类别计算的方差。

Linear Discriminant Analysis

LDA经过计算每一个类的判别值并对具备最大值的类进行预测来进行。该技术假定数据具备高斯分布(钟形曲线),所以最好先手动从数据中移除异常值。这是分类预测建模问题中的一种简单而强大的方法。

4. 分类和回归树

决策树是机器学习的一种重要算法。

决策树模型可用二叉树表示。对,就是来自算法和数据结构的二叉树,没什么特别。 每一个节点表明单个输入变量(x)和该变量上的左右孩子(假定变量是数字)。

Decision Tree

树的叶节点包含用于进行预测的输出变量(y)。 预测是经过遍历树进行的,当达到某一叶节点时中止,并输出该叶节点的类值。

决策树学习速度快,预测速度快。 对于许多问题也常常预测准确,而且你不须要为数据作任何特殊准备。

5. 朴素贝叶斯

朴素贝叶斯是一种简单但极为强大的预测建模算法。

该模型由两种类型的几率组成,能够直接从你的训练数据中计算出来:1)每一个类别的几率; 2)给定的每一个x值的类别的条件几率。 一旦计算出来,几率模型就能够用于使用贝叶斯定理对新数据进行预测。 当你的数据是数值时,一般假设高斯分布(钟形曲线),以即可以轻松估计这些几率。

Bayes Theorem

朴素贝叶斯被称为朴素的缘由,在于它假设每一个输入变量是独立的。 这是一个强硬的假设,对于真实数据来讲是不切实际的,但该技术对于大范围内的复杂问题仍很是有效。

6. K近邻

KNN算法很是简单并且很是有效。 KNN的模型用整个训练数据集表示。 是否是特简单?

经过搜索整个训练集内K个最类似的实例(邻居),并对这些K个实例的输出变量进行汇总,来预测新的数据点。 对于回归问题,新的点多是平均输出变量,对于分类问题,新的点多是众数类别值。

成功的诀窍在于如何肯定数据实例之间的类似性。若是你的属性都是相同的比例,最简单的方法就是使用欧几里德距离,它能够根据每一个输入变量之间的差直接计算。

K-Nearest Neighbors

KNN可能须要大量的内存或空间来存储全部的数据,但只有在须要预测时才会执行计算(或学习)。 你还能够随时更新和管理你的训练集,以保持预测的准确性。

距离或紧密度的概念可能会在高维环境(大量输入变量)下崩溃,这会对算法形成负面影响。这类事件被称为维度诅咒。它也暗示了你应该只使用那些与预测输出变量最相关的输入变量。

7. 学习矢量量化

K-近邻的缺点是你须要维持整个训练数据集。 学习矢量量化算法(或简称LVQ)是一种人工神经网络算法,容许你挂起任意个训练实例并准确学习他们。

Learning Vector Quantization

LVQ用codebook向量的集合表示。开始时随机选择向量,而后屡次迭代,适应训练数据集。 在学习以后,codebook向量能够像K-近邻那样用来预测。 经过计算每一个codebook向量与新数据实例之间的距离来找到最类似的邻居(最佳匹配),而后返回最佳匹配单元的类别值或在回归状况下的实际值做为预测。 若是你把数据限制在相同范围(如0到1之间),则能够得到最佳结果。

若是你发现KNN在您的数据集上给出了很好的结果,请尝试使用LVQ来减小存储整个训练数据集的内存要求。

8. 支持向量机

支持向量机也许是最受欢迎和讨论的机器学习算法之一。

超平面是分割输入变量空间的线。 在SVM中,会选出一个超平面以将输入变量空间中的点按其类别(0类或1类)进行分离。在二维空间中能够将其视为一条线,全部的输入点均可以被这条线彻底分开。 SVM学习算法就是要找到能让超平面对类别有最佳分离的系数。

Support Vector Machine

超平面和最近的数据点之间的距离被称为边界,有最大边界的超平面是最佳之选。同时,只有这些离得近的数据点才和超平面的定义和分类器的构造有关,这些点被称为支持向量,他们支持或定义超平面。在具体实践中,咱们会用到优化算法来找到能最大化边界的系数值。

SVM多是最强大的即用分类器之一,在你的数据集上值得一试。

9. bagging和随机森林

随机森林是最流行和最强大的机器学习算法之一。 它是一种被称为Bootstrap Aggregation或Bagging的集成机器学习算法。

bootstrap是一种强大的统计方法,用于从数据样本中估计某一数量,例如平均值。 它会抽取大量样本数据,计算平均值,而后平均全部平均值,以便更准确地估算真实平均值。

在bagging中用到了相同的方法,但最经常使用到的是决策树,而不是估计整个统计模型。它会训练数据进行多重抽样,而后为每一个数据样本构建模型。当你须要对新数据进行预测时,每一个模型都会进行预测,并对预测结果进行平均,以更好地估计真实的输出值。

Random Forest

随机森林是对决策树的一种调整,相对于选择最佳分割点,随机森林经过引入随机性来实现次优分割。

所以,为每一个数据样本建立的模型之间的差别性会更大,但就自身意义来讲依然准确无误。结合预测结果能够更好地估计正确的潜在输出值。

若是你使用高方差算法(如决策树)得到良好结果,那么加上这个算法后效果会更好。

10. Boosting和AdaBoost

Boosting是一种从一些弱分类器中建立一个强分类器的集成技术。 它先由训练数据构建一个模型,而后建立第二个模型来尝试纠正第一个模型的错误。 不断添加模型,直到训练集完美预测或已经添加到数量上限。

AdaBoost是为二分类开发的第一个真正成功的Boosting算法,同时也是理解Boosting的最佳起点。 目前基于AdaBoost而构建的算法中最著名的就是随机梯度boosting。

AdaBoost

AdaBoost常与短决策树一块儿使用。 在建立第一棵树以后,每一个训练实例在树上的性能都决定了下一棵树须要在这个训练实例上投入多少关注。难以预测的训练数据会被赋予更多的权重,而易于预测的实例被赋予更少的权重。 模型按顺序依次建立,每一个模型的更新都会影响序列中下一棵树的学习效果。在建完全部树以后,算法对新数据进行预测,而且经过训练数据的准确程度来加权每棵树的性能。

由于算法极为注重错误纠正,因此一个没有异常值的整洁数据十分重要。

写在最后

初学者在面对各类各样的机器学习算法时提出的一个典型问题是“我应该使用哪一种算法?”问题的答案取决于许多因素,其中包括:

  •  数据的大小,质量和性质; 
  •  可用的计算时间; 
  •  任务的紧迫性; 
  •  你想要对数据作什么。

即便是一位经验丰富的数据科学家,在尝试不一样的算法以前,也没法知道哪一种算法会表现最好。 虽然还有不少其余的机器学习算法,但这些算法是最受欢迎的算法。 若是你是机器学习的新手,这是一个很好的学习起点。

相关文章
相关标签/搜索