首页天道酬勤()

()

admin 12-02 08:13 313次浏览

点击上面的,全在AI中国

作者:金伯利库克

在本指南中,我们将以实用简洁的方式介绍现代机器学习算法。虽然还有其他这样的列表,但它们并没有真正解释每种算法的实际权衡,我们希望在这里这样做。我们将根据经验讨论每种算法的优缺点。

机器学习算法的分类比较棘手,有几种合理的方法:可以分为生成/判别、参数/非参数、有监督/无监督等。

例如,Scikit-Learn的文档页面根据算法的学习机制对算法进行分组。这导致以下类别:

广义模型支持向量机最近邻算法决策树神经网络等.然而,根据我们的经验,这并不总是最实用的分组算法。这是因为对于应用机器学习来说,你通常不会想到,‘我今天要训练一个支持向量机!’

相反,你通常有一个最终目标,比如预测结果或对你的观察进行分类。

没有免费午餐。

在机器学习中,有一个定理叫做‘没有免费的午餐’。简而言之,它表明没有任何算法能够最好地解决每一个问题,这对于监督学习(预测建模)尤其重要。

例如,你不能说神经网络总是比决策树好,反之亦然。有很多因素在起作用,比如数据集的大小和结构。

因此,您应该针对自己的问题尝试许多不同的算法,并使用持久的“测试集”数据来评估性能并选择获胜者。

当然你尝试的算法一定要适合你自己的问题,这是选择合适机器学习任务的地方。打个比方,如果你需要打扫房子,可以用吸尘器、扫帚或拖把,但不能用铲子打扫。

机器学习任务

这是本系列的第一部分。在本节中,我们将介绍“三大”机器学习任务,这是迄今为止最常见的任务。它们是:

回归分类聚类在第二部分,我们将介绍降维,包括:

在继续特征提取之前,选择两种解释:

我们不会引入特定领域的修改,例如自然语言处理。

我们不会涵盖所有算法。要列举的太多了,新内容会一直推出。但是,这个列表将为您提供每个任务成功的当代算法的代表性概述。

1.返回

回归是一种有监督的学习任务,用于建模和预测连续的数值变量。例子包括预测房地产价格、股票价格变化或学生考试成绩。

回归任务的特征是带有数字目标变量的标记数据集。换句话说,您可以使用一些“基本事实”值来监控您的算法。

1.1(正则化)线性回归

线性回归是回归任务最常用的算法之一。它试图以最简单的形式将直线超平面拟合到数据集(也就是说,当只有两个变量时,它是一条直线)。您可能已经猜到,当数据集中的变量之间存在线性关系时,它可以正常工作。

在实践中,简单的线性回归通常被它的正则化对应物(LASSO,Ridge和Elastic-Net)所代替。正则化是一种避免过拟合的惩罚系数较大的技术,应该调整惩罚的强度。

优点:线性回归易于理解和解释,可以正则化,避免过度拟合。此外,使用随机梯度下降可以很容易地用新数据更新线性模型。

缺点:当存在非线性关系时,线性回归性能不好。它们不够灵活,无法捕捉更复杂的模式,添加适当的交互项或多项式可能非常棘手且耗时。

实现:python/r。

1.2回归树(集成)

回归树(也称为决策树)通过重复地将数据集分割成独立的分支来进行分层学习,从而最大化每次分割的信息增益。这种分支结构允许回归树自然地学习非线性关系。

集成方法,如随机森林(RF)和梯度提升树(GBM),结合了许多单个树的预测。我们在这里就不介绍它们的基本机制了,但在实际中,RF通常表现得非常好,而GBM则更难调整,但往往有更高的性能上限。

优点:决策树可以学习非线性关系,对异常值非常稳健。集成在实践中表现良好,并赢得了许多经典(即非深度学习)机器学习竞赛。

缺点:不受约束的单个树容易过度拟合,因为它们可以保持分支,直到记住训练数据。然而,这可以通过使用集成来缓解。

实现:随机森林-python/R,梯度增强树-Python/R .

1.3深度学习

深度学习是指能够学习极其复杂模式的多层神经网络。他们在输入和输出之间使用“隐藏层”来模拟其他算法无法轻松学习的数据的中间表示。

他们有几个重要的机制,如卷积和退出,使他们能够有效地学习dddsl数据。然而,与其他算法相比,深度学习仍然需要更多的数据来训练,因为模型有更多的参数要估计。

优点:深度学习是计算机视觉、语音识别等一些领域的最新技术。深度神经网络在图像、音频和文本数据上表现非常好,可以通过批量传播轻松更新新数据。它们的体系结构(即层的数量和结构)可以适应多种类型的问题,并且它们的隐藏层减少了对特征工程的需求。

缺点:深度学习算法通常不适合作为通用算法,因为它们需要非常大量的数据。事实上,对于经典的机器学习问题,它们通常优于决策树集成。

。此外,它们在训练时计算密集,并且它们需要更多的专业知识来调整(即设置架构和超参数)。

实现:Python/R

1.4近邻算法

最近近邻算法是"基于实例的",这意味着保存每个训练观察。然后,他们通过搜索最相似的训练观察并汇集其值来对新观察进行预测。

这些算法是内存密集型的,对于dddsl数据执行不良,并且需要有意义的距离函数来计算相似性。在实践中,训练正则化回归或树集合几乎总是更好地利用你的时间。

2.分类

分类是用于建模和预测分类变量的监督学习任务。示例包括预测员工流失、电子邮件垃圾邮件,财务欺诈或学生信函等级。

正如你将看到的,许多回归算法都有分类对应。算法适用于预测类(或类概率)而不是实数。

2.1(正规化)逻辑回归

逻辑回归是线性回归的分类对应。预测通过逻辑函数映射到0到1之间,这意味着预测可以解释为类概率。

模型本身仍然是"线性的",因此当类可线性分离时它们可以很好地工作(即它们可以由单个决策表面分隔)。逻辑回归也可以通过用可调惩罚强度惩罚系数来规则化。

优点:输出具有良好的概率解释,并且算法可以被正则化以避免过度拟合。使用随机梯度下降可以使用新数据轻松更新逻辑模型。

缺点:当存在多个或非线性决策边界时,逻辑回归往往表现不佳。它们不够灵活,不能自然地捕捉更复杂的关系。

实现:Python/R

2.2分类树(集成)

分类树是回归树的分类对应物。它们通常被称为"决策树"或通过总称"分类和回归树(CART)"。

优势:与回归一样,分类树集成在实践中也表现得非常好。它们对异常值具有鲁棒性、可扩展,并且由于其层次结构,能够自然地模拟非线性决策边界。

缺点:无约束的单个树木容易过度拟合,但这可以通过集成方法得到缓解。

实现:随机森林-Python/R,Gradient Boosted Tree - Python/R.

2.3深度学习

为了延续这一趋势,深度学习也很容易适应分类问题。实际上,分类通常是深度学习的较常见用途,例如图像分类。

优点:深度学习在分类音频、文本和图像数据时表现良好。

缺点:与回归一样,深度神经网络需要非常大量的数据来训练,因此它不被视为通用算法。

实现:Python/R

2.4支持向量机

支持向量机(SVM)使用称为内核的机制,它基本上计算两个观察之间的距离。然后,支持向量机(SVM)算法找到决策边界,最大限度地间隔之间的最接近的成员分开的类。

例如,具有线性内核的支持向量机(SVM)类似于逻辑回归。因此,在实践中,支持向量机(SVM)的好处通常来自使用非线性内核来模拟非线性决策边界。

优势:支持向量机(SVM)可以模拟非线性决策边界,并且有许多内核可供选择。它们对过度拟合也相当强大,特别是在dddsl空间。

缺点:然而,支持向量机(SVM)是内存密集型的,由于选择正确内核的重要性而难以调整,并且不能很好地扩展到更大的数据集。目前,在行业中,随机森林通常比支持向量机(SVM)更受欢迎。

实现:Python/R.

2.5朴素贝叶斯

朴素贝叶斯(NB)是一种基于条件概率和计数的非常简单的算法。从本质上讲,你的模型实际上是一个通过你的训练数据更新的概率表。为了预测新的观测值,你只需根据其特征值"查找""概率表"中的类概率。

它被称为"朴素",因为它的条件独立的核心假设(即所有输入特征彼此独立)在现实世界中很少成立。

优势:尽管条件独立假设很少成立,但朴素贝叶斯(NB)模型实际上在实践中表现出色,特别是它们的简单性。它们易于实现,可以根据你的数据集进行扩展。

缺点:由于它们非常简单,朴素贝叶斯(NB)模型经常被经过适当训练的模型打败,并使用之前列出的算法进行调整。

实现:Python/R

3.聚类

聚类是一种无监督的学习任务,用于根据数据集中的固有结构查找自然的观察分组(即聚类)。示例包括客户细分,在电子商务中对类似项目进行分组以及社交网络分析。

由于聚类是无监督的(即没有"正确答案"),因此通常使用数据可视化来评估结果。如果存在"正确答案"(即你在训练集中预先标记了群集),则分类算法通常更合适。

3.1 K-Means

K-Means( K聚类均值)算法是一种通用算法,它基于点之间的几何距离(即坐标平面上的距离)来制作聚类。聚类围绕质心分组,使它们呈球状,并具有相似的大小。这是我们推荐的初学者算法,因为它简单,但足够灵活,可以为大多数问题获得合理的结果。

优势:K-Means是最受欢迎的聚类算法,因为它可以快速、简单,并且如果你预处理数据并设计有用的功能,则会非常灵活。

缺点:用户必须指定群集的数量,这并不总是容易做到的。此外,如果数据中真正的基础聚类不是球状的,那么K-Means将产生较差的聚类。

实现:Python/R.

3.2 近邻传播

近邻传播是一种相对较新的聚类技术,可根据点之间的图形距离进行聚类。簇往往较小并且尺寸不均匀。

优点:用户不需要指定集群的数量(但是需要指定"样本偏好"和"阻尼"超参数)。

缺点:近邻传播的主要缺点是它非常慢,并且占用大量内存,因此很难扩展到更大的数据集。此外,它还假设真正的基础集群是球状的。

实现:Python/R.

3.3层次聚类

分层聚类,即a.k.a.凝聚聚类,是基于相同思想的一套算法:(1)从它自己的聚类中的每个点开始。(2)对于每个聚类,根据某些标准将其与另一个聚类合并。(3)重复直到只剩下一个聚类,并留下聚类的层次结构。

优势:分层聚类的主要优点是没有假设聚类是球状的。此外,它可以很好地扩展到更大的数据集。

实现:Python/R.

3.4 DBSCAN

DBSCAN是一种基于密度的算法,可以为点的密集区域创建聚类。最近还有一个名为HDBSCAN的新开发项目,它允许不同密度的聚类。

优势:DBSCAN不假设球状集群,其性能可扩展。此外,它不需要将每个点分配给集群,从而降低集群的噪声(这可能是一个弱点,具体取决于你的用例)。

缺点:用户必须调整超参数'epsilon'和'min_samples',它们定义了集群的密度。DBSCAN对这些超参数非常敏感。

实现:Python/R

总结

我们刚刚通过现代算法探索了"三大"机器学习任务:回归、分类和聚类。

在第2部分中,我们将研究降维的算法,包括特征选择和特征提取。

但是,我们希望根据经验提供一些建议:

1.首先是练习,练习,练习。阅读算法可以帮助你在一开始就找到自己的立足点,但真正的掌握来自于练习。csdtn完成项目和/或竞赛时,将开发实用的直觉,这使你能够获得几乎任何算法并有效地应用它。

2.第二是掌握基本面。这里有很多我们不能列出的算法,其中一些算法在特定情况下是非常有效的。但是,几乎所有这些都是对此列表中算法的一些改编,这将为应用机器学习提供坚实的基础。

3.最后,请记住,更好的数据胜过更加高级的算法。在应用机器学习中,算法是商品,因为你可以根据问题轻松切换它们。但是,有效的探索性分析、数据清理和特征工程可以显著提高你的结果。

文章来源:http://houseofbots.com/news-detail/4006-1-s

linux下运行文件的命令是什么-linux运维低至$12.5/年正确更改Ant Design of Vue样式的问题带Windows和快照default在c语言中指的是什么开始使用 US3 对象存储 US3如何从TestCafe中的window对象获取构造函数?VMware虚拟机安装苹果Mac OS的超详细教程Flutter投票组件如何使用Android中WebView截图的实现方式mysql日期函数TO_DAYS()函数怎么使用java包装类linux下如何使用grep命令查看进程-linux运维
() 新开的卡第几天可以查轨迹(手机卡放家里行程卡定位)
相关内容