机器学习十大算法( 二 )


机器学习十大算法

文章插图
贝叶斯定理
朴素贝叶斯之所以被称为「朴素」,是因为它假设每个输入变量相互之间是独立的 。这是一种很强的、对于真实数据并不现实的假设 。不过,该算法在大量的复杂问题中十分有效 。
6. K 最近邻算法K 最近邻(KNN)算法是非常简单而有效的 。KNN 的模型表示就是整个训练数据集 。这很简单吧?
对新数据点的预测结果是通过在整个训练集上搜索与该数据点最相似的 K 个实例(近邻)并且总结这 K 个实例的输出变量而得出的 。对于回归问题来说,预测结果可能就是输出变量的均值;而对于分类问题来说,预测结果可能是众数(或最常见的)的类的值 。
关键之处在于如何判定数据实例之间的相似程度 。如果你的数据特征尺度相同(例如,都以英寸为单位),那么最简单的度量技术就是使用欧几里得距离,你可以根据输入变量之间的差异直接计算出该值 。
机器学习十大算法

文章插图
K 最近邻
KNN 可能需要大量的内存或空间来存储所有数据,但只有在需要预测时才实时执行计算(或学习) 。随着时间的推移,你还可以更新并管理训练实例,以保证预测的准确率 。
使用距离或接近程度的度量方法可能会在维度非常高的情况下(有许多输入变量)崩溃,这可能会对算法在你的问题上的性能产生负面影响 。这就是所谓的维数灾难 。这告诉我们,应该仅仅使用那些与预测输出变量最相关的输入变量 。
7. 学习向量量化
KNN 算法的一个缺点是,你需要处理整个训练数据集 。而学习向量量化算法(LVQ)允许选择所需训练实例数量,并确切地学习这些实例 。
机器学习十大算法

文章插图
学习向量量化
LVQ 的表示是一组码本向量 。它们在开始时是随机选择的,经过多轮学习算法的迭代后,最终对训练数据集进行最好的总结 。通过学习,码本向量可被用来像 K 最近邻那样执行预测 。通过计算每个码本向量与新数据实例之间的距离,可以找到最相似的邻居(最匹配的码本向量) 。然后返回最匹配单元的类别值(分类)或实值(回归)作为预测结果 。如果将数据重新放缩放到相同的范围中(例如 0 到 1 之间),就可以获得最佳的预测结果 。
如果你发现 KNN 能够在你的数据集上得到不错的预测结果,那么不妨试一试 LVQ 技术,它可以减少对内存空间的需求,不需要像 KNN 那样存储整个训练数据集 。
8. 支持向量机
支持向量机(SVM)可能是目前最流行、被讨论地最多的机器学习算法之一 。
超平面是一条对输入变量空间进行划分的「直线」 。支持向量机会选出一个将输入变量空间中的点按类(类 0 或类 1)进行最佳分割的超平面 。在二维空间中,你可以把他想象成一条直线,假设所有输入点都可以被这条直线完全地划分开来 。SVM 学习算法旨在寻找最终通过超平面得到最佳类别分割的系数 。
机器学习十大算法

文章插图
支持向量机
超平面与最近数据点之间的距离叫作间隔(margin) 。能够将两个类分开的最佳超平面是具有最大间隔的直线 。只有这些点与超平面的定义和分类器的构建有关,这些点叫作支持向量,它们支持或定义超平面 。在实际应用中,人们采用一种优化算法来寻找使间隔最大化的系数值 。
支持向量机可能是目前可以直接使用的最强大的分类器之一,值得你在自己的数据集上试一试 。
9. 袋装法和随机森林
随机森林是最流行也最强大的机器学习算法之一,它是一种集成机器学习算法 。
自助法是一种从数据样本中估计某个量(例如平均值)的强大统计学方法 。你需要在数据中取出大量的样本,计算均值,然后对每次取样计算出的均值再取平均,从而得到对所有数据的真实均值更好的估计 。
Bagging 使用了相同的方法 。但是最常见的做法是使用决策树,而不是对整个统计模型进行估计 。Bagging 会在训练数据中取多个样本,然后为每个数据样本构建模型 。当你需要对新数据进行预测时,每个模型都会产生一个预测结果,Bagging 会对所有模型的预测结果取平均,以便更好地估计真实的输出值 。
机器学习十大算法

文章插图
随机森林
随机森林是这种方法的改进,它会创建决策树,这样就不用选择最优分割点,而是通过引入随机性来进行次优分割 。


推荐阅读