如何选择机器学习算法

来源:互联网 发布:org.apache.ant jar 编辑:程序博客网 时间:2024/05/22 13:39

Which machine learning algorithm should I use?

这篇文章主要是为了初学者和数据工程相关人员分析师有兴趣了解和应用机器学习的方法解决自己的感兴趣的问题。

最初我们面对提出一个自己认为比较典型的问题,但是面临各种算法的选择适合不知道如何下手,这个时候应该怎么做呢?
那么我们寻找的策略从下面几个问题出手:
1、数据的大小,占用的存储空间;数据的质量,归一化处理的难度和数据的分布情况;数据的性质就是数据所在行业中一般认可得参数和被忽略的隐含参数分类。
2、可用的计算时间,这个是计算复杂度和建模工程的时间耗散,计算复杂度是算法导论和计算机操作系统课程中的一章内容。
3、任务的紧迫性,如果做相关比赛或者要求可靠性比较高的问题,就用关键字组合的方法搜索相关文献然后统计分析此类问题应该那个和现在所处的水平。
4、我们要对数据做那些操作,主要是特征和数据所属行业。
即便是有经验的数据科学家也不能分辨那种是算法在测试时候是表现最好的算法,我们并不提倡使用一种固定的算法但是我们希望提供一些指导根据明确的因素尝试不同的算法
机器学习的算法分辨表机器学习算法分辨表帮助您从各种机器学习算法中选择适合您具体问题的算法。本文将引导您完成如何使用该工作表的过程。
由于分辨表是专为初学者数据的科学家和分析师, 我们将作出一些简化的假设, 当谈到的算法。
这里推荐的算法来自于一些数据科学家和机器学习专家和开发者的编译反馈和提示。有几个问题, 我们没有达成协议, 并针对这些问题, 我们试图突出共同性和调和分歧。
当我们的库增长到包含一组更完整的可用方法时, 将在稍后添加其他算法。

如何使用分辨表

如果 label> 然后使用 , 请阅读图表上的路径和算法标签。例如:
如果要执行维度缩减, 则使用主成分分析。

如果你需要一个快速的数字预测, 使用决策树或逻辑回归。

如果需要分层结果, 请使用分层群集。

      有时, 不止一个分支会应用, 而其他时候, 它们都不会是完美的匹配。重要的是要记住这些路径是 rule-of-thumb 的建议, 所以一些建议并不确切。我和几个数据科学家说, 找到最好的算法的唯一确定方法是尝试所有的。

机器学习算法的类型

       本节概述了最流行的机器学习类型。如果您熟悉这些类别并希望继续讨论特定的算法, 则可以跳过此部分, 然后转到 “何时使用特定算法” 下面。
监督学习

       监督学习算法根据一系列的例子进行预测。例如, 历史销售额可以用来估算未来的价格。通过监督学习, 您有一个输入变量, 它由标记的训练数据和一个期望的输出变量组成。使用算法分析培训数据, 以了解将输入映射到输出的函数。这种推断的函数映射了新的、未知的例子, 通过从训练数据推断出在看不见的情境中的结果。

分类: 当数据被用来预测一个分类变量时, 监督学习也叫做分类。在为图像分配标签或指示器时, 即是狗或猫。当只有两个标签时, 这叫做二进制分类。当有两类以上时, 问题被称为多级分类。

回归: 当预测连续值时, 问题成为一个回归问题。

预测: 这是根据过去和现在的数据对未来进行预测的过程。这是最常用的分析趋势。一个常见的例子可能是根据本年度和往年的销售额估算明年的销售额。

半监督学习

受监督学习的挑战是, 标签数据可能昂贵且耗时。如果标签有限, 您可以使用未标记的示例来增强监督学习。由于机器在这种情况下没有完全监督, 我们说机器是半监督的。通过半监督学习, 您可以使用少量标记的示例数据来提高学习的准确性。

无监督学习

在执行无监督学习时, 该机器是完全未标记的数据。它被要求发现数据背后的固有模式, 如集群结构、low-dimensional 流形或稀疏树和图形。

群集: 将一组数据示例分组, 以便在一个组 (或一个集群) 中的示例比其他组中的实例更相似 (根据某些标准)。这通常用于将整个数据集分割成几个组。可以在每个组中执行分析以帮助用户查找固有模式。

减小尺寸: 减少正在考虑的变量数量。在许多应用程序中, 原始数据具有非常高的维度特征, 有些功能是多余的或与任务无关。减少维度有助于找到真正的、潜在的关系。

强化学习

强化学习根据环境的反馈分析和优化代理的行为。 机器尝试不同的情景来发现哪些行动产生了最大的奖励, 而不是被告知采取哪些行动。试错和延迟报酬区别于其他技术的强化学习。

选择算法时的注意事项

在选择算法时, 总是要考虑到这些方面: 准确性、训练时间和易用性。许多用户把准确性放在首位, 而初学者往往侧重于他们最了解的算法。

当呈现数据集时, 首先要考虑的是如何获取结果, 无论这些结果可能是什么样子。初学者倾向于选择易于实现的算法, 并且可以快速获得结果。只要这是过程中的第一步, 这就很好了。一旦你获得了一些结果并熟悉了数据, 你可能会花更多的时间使用更复杂的算法来增强你对数据的理解, 从而进一步改善结果。

即使在这个阶段, 最好的算法也可能不是达到报告精确度最高的方法, 因为算法通常需要仔细的调整和广泛的训练才能获得最佳的性能。何时使用特定算法

更仔细地查看单个算法可以帮助您了解它们提供的内容以及它们的使用方式。这些说明提供了更多的细节, 并给出了什么时候使用特定的算法 与作弊表相一致的附加提示。
线性回归与逻辑回归线性回归是建立连续相依变量 y 与一个或多个预测因子之间关系的建模方法。y 和 x 之间的关系可以线性建模为 y = β t x + ϵ给定训练示例 {x i, y i} n i=1, 可以学习参数向量β。

如果相依变量不是连续的, 但绝对的, 线性回归可以转换为逻辑回归使用 logit 链接函数。逻辑回归是一种简单、快速而有力的分类算法。在这里我们讨论的二进制的情况下, 从属变量 y 只采取二进制值 {y i ∈ (−1,1)} n i=1 (它可以很容易地扩展到多类分类问题)。

在逻辑回归中, 我们使用不同的假设类来预测给定的例子属于 “1” 类的概率与它属于 “-1” 类的概率。具体地说, 我们将尝试学习形式的函数: p (y i = 1 | x i) = σ (β t x i) 和 p (y i =? $number | x i) = 1−σ (β t x i)。这里σ (x) = 11 + exp (−x) 是一个乙状结肠函数。给出的训练例子 {x i, y i} n i=1, 参数向量β可以通过最大化的对数似β给定数据集来学习。线性 svm 和内核 svm
内核戏法用于将 non-linearly 可分离函数映射成更高维线性分函数。支持向量机 (svm) 训练算法找到由法线向量 w 和偏置 b 表示的分类器。此超平面 (边界) 将不同的类划分为尽可能宽的边距。问题可以转换为约束优化问题:

最小化 w 服从 | |w |y i (w t x i −b) ≥, i = 1,..。

支持向量机 (svm) 训练算法找到了由普通向量和超平面偏差表示的分类器。此超平面 (边界) 将不同的类划分为尽可能宽的边距。问题可以转换为约束优化问题:内核戏法用于将 non-linearly 可分离函数映射成更高维线性分函数。

当类不是线性可分离的, 一个内核把戏可以用来映射一个 non-linearly 的可分离空间成一个更高的维度的线性分离空间。

当大多数相关变量是数值时, 逻辑回归和 svm 应该是第一次尝试分类。这些模型易于实现, 参数易于调谐, 性能也很好。所以这些模型适合初学者。

一种预测模型的决策树

决策树、随机林和梯度提升都是基于决策树的算法。 决策树有许多变体, 但它们都做同样的事情–将特征空间细分为具有相同标签的区域。决策树易于理解和实现。然而, 当我们用尽树枝和树木深深地去时, 他们往往会越过合适的数据。随机阿甘和梯度增强是两种常用的方法, 使用树算法实现良好的准确性和克服过问题。

神经网络与深层学习

卷积神经网络体系结构
神经网络由于其并行和分布式处理能力, 在 mid-1980s 中蓬勃发展。 但由于反向传播训练算法的失效, 被广泛应用于神经网络参数的优化, 这一领域的研究受到了阻碍。支持向量机 (svm) 和其他简单的模型, 可以通过求解凸优化问题轻松训练, 逐步取代神经网络在机器学习中。

近年来, 新的和改进的训练技术, 如无监督的受训前和分层贪婪的训练导致了对神经网络的兴趣死灰复燃。越来越强大的计算能力, 如图形处理单元 (gpu) 和大规模并行处理 (mpp), 也刺激了复兴采用神经网络。神经网络的复活研究引起了成千上万层模型的发明。换句话说, 浅层神经网络已演化为深层的神经网络。深层神经网络在监督学习中取得了很大的成功。 当用于语音和图像识别时, 深入学习的表现, 甚至优于人类。应用于无监督学习任务, 如特征抽取, 深层学习也提取原始图像或语音的特征, 较少人为干预。

神经网络由三部分组成: 输入层、隐层和输出层。 培训示例定义输入和输出层。当输出层是一个范畴变量时, 神经网络是一种解决分类问题的方法。当输出层为连续变量时, 可以使用网络进行回归。当输出层与输入层相同时, 可以使用网络提取内部特征。隐藏层数定义模型复杂性和建模能力。

k-均值/k 模式, gmm (高斯混合模型) 聚类

Kmeans/k 模式, gmm 聚类的目的是将 n 个观察分成 k 簇。k-意味着定义硬赋值: 样本将是和只与一个集群相关联。但是, 为每个示例定义一个软赋值。每个示例都有一个与每个集群关联的概率。当给出簇 k 的个数时, 这两种算法都是简单和快速的。当没有给出簇数 k 时, dbscan (density-based 空间聚类) 可以通过密度扩散连接样本来使用。

分层群集分层聚类插图的两种方法

分层分区可以使用树结构 (树) 来可视化。它不需要作为输入的簇数, 并且可以在不同的粒度级别 (即, 可以细化/粗化簇) 使用不同的 k 来查看分区。

pca、svd 和 lda

我们通常不希望将大量的功能直接送入机器学习算法, 因为某些功能可能无关紧要, 或者 “固有” 维数可能小于功能的数量。主成分分析 (pca)、奇异值分解 (svd) 和潜法分配 (lda) 都可以用来执行降维。

pca 是一种无监督的聚类方法, 将原始数据空间映射到较低的维空间, 同时保留尽可能多的信息。pca 基本上找到了一个子空间, 最保留数据方差, 用子空间定义的主要特征向量的数据的协方差矩阵。

奇异值分解与 pca 有关, 即中心数据矩阵 (特征与样本) 的 svd 提供了主要的左奇异向量, 定义了 pca 所发现的同子空间。然而, svd 是一个更多才多艺的技术, 因为它也可以做的事情, pca 可能不做。例如, 用户与电影矩阵的 svd 可以提取用户配置文件和电影配置文件, 可用于推荐系统。此外, svd 也被广泛用作主题建模工具, 称为潜语义分析, 在自然语言处理 (nlp)。

nlp 中的一个相关技术是潜在的 “法” 分配 (lda)。lda 是概率主题模型, 它以类似高斯混合模型 (gmm) 将连续数据分解为高斯密度的方法将文档分解成主题。与 gmm 不同, lda 对离散数据 (文档中的词语) 进行了建模, 它限制了主题是根据一个给定的分布的先验分布。

结论

这是很容易遵循的工作流程。尝试解决新问题时的外卖信息有:

定义问题。你想解决什么问题?

开始简单。熟悉数据和基线结果。

然后尝试一些更复杂的事情。

可视化数据挖掘和机器学习为初学者学习机器学习和应用机器学习方法提供

}

0 0