时间:2023-01-19 | 标签: | 作者:Q8 | 来源:网络
小提示:您能找到这篇{常用机器学习算法优缺点分析}绝对不是偶然,我们能帮您找到潜在客户,解决您的困扰。如果您对本页介绍的常用机器学习算法优缺点分析内容感兴趣,有相关需求意向欢迎拨打我们的服务热线,或留言咨询,我们将第一时间联系您! |
机器学习无疑是当前数据分析领域的一个热点内容,其理论和方法已经广泛应用于解决工程应用的复杂问题,很多人在平时的工作中都或多或少会用到机器学习的算法。在机器学习领域,没有算法能完美地解决所有问题。比如说,神经网络并不是在任何情况下都能比决策树更有优势,反之亦然。它们要受很多因素的影响,比如你的数据集的规模或结构。 其结果是,在用给定的测试集来评估性能并挑选算法时,你应当根据具体的问题来采用不同的算法。例如,如果模型要求可解释性较强,首先想到的就是逻辑(线性)回归,如果模型要求准确度较高且速度较快,首先想到的是Xgboost,如果数据量巨大且很稀疏,首先想到怎么用神经网络解决此问题。 因此,如何选择机器学习算法、选择哪一个算法以及算法建模时该注意哪些问题成了工程师的一个难题,本文的目的总结了常用机器学习算法优缺点,供大家在工作、学习甚至面试中参考。机器学习主要分为有监督学习和无监督学习,本文从这两方面进行了梳理。 一、有监督算法有监督学习是指模型学习时有特定目标,即目标是人工标注的,主要用做分类或者回归。常用的有监督学习主要有knn、逻辑(线性)回归、决策树、随机森林、adaboost、GBDT、xgboost、svm、朴素贝叶斯、人工神经网络等算法。 1. 最近邻算法——KNNKNN可以说是最简单的分类算法,和另一种机器学习算法K均值算法有点像,但有着本质区别(K均值算法是无监督算法)。KNN的全称是KNearestNeighbors,意思是K个最近的邻居,KNN的原理就是当预测一个新的值x的时候,根据它距离最近的K个点是什么类别来判断x属于哪个类别。 KNN算法的优点:
KNN算法的缺点:
2. 逻辑(线性)回归逻辑回归是分类模型,线性回归是回归模型,逻辑回归和线性回归原理相似,逻辑回归其实仅为在线性回归的基础上,套用了一个逻辑函数。 线性回归的损失函数为均方误差类损失,逻辑回归的损失函数为交叉熵损失。 逻辑回归的损失函数为什么选择交叉熵损失而不选择均方误差是面试中经常问道的问题,这里简单说一下:使用MSE作为损失函数的话,它的梯度是和sigmod函数的导数有关的,如果当前模型的输出接近0或者1时,就会非常小,接近0,使得求得的梯度很小,损失函数收敛的很慢。 但是我们使用交叉熵的话就不会出现这样的情况,它的导数就是一个差值,误差大的话更新的就快,误差小的话就更新的慢点,这正是我们想要的逻辑(线性)回归的优点:
逻辑(线性)回归的缺点: 它最大的缺点就是对特征工程要求较高,主要体现在以下方面:
当然除了以上缺点,还有它的容易欠拟合,准确度并不是很高(个人认为强于决策树,弱于SVM、GBDT等强分类器)。 3. 决策树决策树的生成算法有ID3,C4.5和C5.0等。决策树是一种树形结构,其中每个内部节点表示一个属性上的判断,每个分支代表一个判断结果的输出,最后每个叶节点代表一种分类结果。 决策树的优点: 计算量相对较小,且容易转化成分类规则.只要沿着树根向下一直走到叶,沿途的分裂条件就能够唯一确定一条分类的谓词;有一定的可解释性,树的结构可视化; 具有一定的特征选择能力,能够自己处理不相关特征。 决策树的缺点:
4. 随机森林是以决策树为基学习器的集成学习算法,如果分类模型,多个决策树进行投票处理,如果为回归模型,多个决策树结果平均值处理。 随机森林的优点:
随机森林的缺点: 随机森林已经被证明在某些噪音较大的分类或回归问题上会过拟。对于有不同取值的属性的数据,取值划分较多的属性会对随机森林产生更大的影响,所以随机森林在这种数据上产出的属性权值是不可信的。 5. GBDTGBDT是通过采用加法模型(即基函数的线性组合),以及不断减小训练过程产生的残差来达到将数据分类或者回归的算法,它是决策树的boosting算法,在传统机器学习算法里面是对真实分布拟合的最好的几种算法之一。 GBDT的优点:
GBDT的缺点: 由于弱学习器之间存在依赖关系,难以并行训练数据;和其他树模型一样,不适合高维稀疏特征。 6. XgboostXGBoost的全称是eXtremeGradientBoosting,它是经过优化的分布式梯度提升库,旨在高效、灵活且可移植。 XGBoost是大规模并行boostingtree的工具,它是目前最快最好的开源boostingtree工具包,比常见的工具包快10倍以上。 在数据科学方面,有大量的Kaggle选手选用XGBoost进行数据挖掘比赛,是各大数据科学比赛的必杀武器;在工业界大规模数据方面,XGBoost的分布式版本有广泛的可移植性,支持在Kubernetes、Hadoop、SGE、MPI、Dask等各个分布式环境上运行,使得它可以很好地解决工业界大规模数据的问题。它是GBDT的进阶,也就是Xgboost有着GBDT所有的优点。 此外与GBDT相比,xgBoosting有以下进步: 收敛速度增快:GBDT在优化时只用到一阶导数,xgBoosting对代价函数做了二阶Talor展开,引入了一阶导数和二阶导数; 正则化:一定程度防止过拟合。XGBoost在代价函数里加入了正则项,用于控制模型的复杂度。正则项里包含了树的叶子节点个数、每个叶子节点上输出的score的L2模的平方和。 从Bias-variancetradeoff角度来讲,正则项降低了模型的variance,使学习出来的模型更加简单,防止过拟合; 并行处理:XGBoost工具支持并行。Boosting不是一种串行的结构吗?怎么并行的? 注意XGBoost的并行不是tree粒度的并行,XGBoost也是一次迭代完才能进行下一次迭代的(第t次迭代的代价函数里包含了前面t-1次迭代的预测值)。XGBoost的并行是在特征粒度上的。 我们知道,决策树的学习最耗时的一个步骤就是对特征的值进行排序(因为要确定最佳分割点),XGBoost在训练之前,预先对数据进行了排序,然后保存为block结构,后面的迭代中重复地使用这个结构,大大减小计算量。 这个block结构也使得并行成为了可能,在进行节点的分裂时,需要计算每个特征的增益,最终选增益最大的那个特征去做分裂,那么各个特征的增益计算就可以开多线程进行; Shrinkage(缩减):相当于学习速率。XGBoost在进行完一次迭代后,会将叶子节点的权重乘上该系数,主要是为了削弱每棵树的影响,让后面有更大的学习空间。传统GBDT的实现也有学习速率。 列抽样:XGBoost借鉴了随机森林的做法,支持列抽样,不仅能降低过拟合,还能减少计算。这也是XGBoost异于传统GBDT的一个特性。 缺失值处理:对于特征的值有缺失的样本,XGBoost采用的稀疏感知算法可以自动学习出它的分裂方向; 内置交叉验证:XGBoost允许在每一轮Boosting迭代中使用交叉验证。 因此,可以方便地获得最优Boosting迭代次数。而GBM使用网格搜索,只能检测有限个值。 Xgboost缺点:和其他树模型一样,不适合高维稀疏特征;算法参数过多,调参复杂,需要对XGBoost原理十分清楚才能很好的使用XGBoost。 7. SVMSVM即支持向量机,它是将向量映射到一个更高维的空间里,在这个空间里建立有一个最大间隔超平面。在分开数据的超平面的两边建有两个互相平行的超平面,分隔超平面使两个平行超平面的距离最大化。假定平行超平面间的距离或差距越大,分类器的总误差越小。 SVM的优点: 使用核函数可以向高维空间进行映射;属于强分类器,准确的较高; 能够处理非线性特征的相互作用。 SVM的缺点: SVM最大的缺点,本人认为会耗费大量的机器内存和运算时间,这也是为什么随着数据量越来越多,SVM在工业界运用越来越少的原因;对缺失数据敏感;对非线性问题没有通用解决方案,有时候很难找到一个合适的核函数。 8. 朴素贝叶斯算法朴素贝叶斯算法是基于贝叶斯定理和特征条件独立假设的分类方法,属于生成式模型。 朴素贝叶斯的优点:
朴素贝叶斯的缺点: 理论上,朴素贝叶斯模型与其他分类方法相比具有最小的误差率。但是实际上并非总是如此,这是因为朴素贝叶斯模型假设属性之间是相互独立的,而这个假设在实际应用中往往并不成立的。 虽然在属性相关性较小时,朴素贝叶斯性能良好。但是,在属性个数比较多或者属性之间相关性较大时,分类效果并不好;需要知道先验概率,并且先验概率在很多时候多是取决于假设,假设的模型可以有多种,从而导致在某些时候会由于假设的先验模型而使得预测效果不佳。 因为是通过先验和数据来决定后验的概率来决定分类的,所以分类决策存在一定的错误率;对输入数据的表达形式很敏感。 9. 人工神经网络以上都是传统有监督机器学习算法,但传统的机器学习算法在数据量面前,会触及一个天花板,一旦到达极限,传统机器学习算法将无法跟上数据增长的步伐,性能则停滞不前。而数据越多,神经网络越浪!随着现在数据量越来越多,人工神经网络运用越来越广泛。 人工神经网络的优点:
人工神经网络的缺点:
二、无监督算法无监督学习输入数据没有被标记,也没有确定的结果,样本数据类别未知,需要根据样本间的相似性对样本集进行分类。常用的无监督模型主要指各种聚类,主要有K均值聚类、层次聚类、密度聚类等。 1. K均值聚类K-Means的主要优点: 原理简单,容易实现;可解释度较强。 K-Means的主要缺点:
2. 密度聚类密度聚类优点:
密度聚类缺点:
3. 层次聚类层次聚类优点:
层次聚类的缺点:
三、总述总之,选择哪一个算法必须要适用于你自己的问题,这就要求选择正确的机器学习任务。但很多情况下好的数据却要优于好的算法,设计优良特征和做特征工程更有意义,但只有了解每个机器算法的原理及优缺点,才能根据不同的机器学习算法做相应的特征工程(对特征工程感兴趣的同学可以参考我在公众号一个数据人的自留地写的另一篇文章:机器学习中的特征工程)。
作者:飞狐冲冲,在国内知名央企负责AI算法建模类工作;曾经在京东、美团等大型互联网公司担任算法工程师的岗位;具有丰富的算法开发经验;“数据人创作者联盟”成员。 本文由@一个数据人的自留地 于。,。 ,基于CC0协议。 |
上一篇:数据地图:数据资产管理,到底管什么?
下一篇:数据分析之漏斗分析,业务人如何进行有效分析
小提示:您应该对本页介绍的“常用机器学习算法优缺点分析”相关内容感兴趣,若您有相关需求欢迎拨打我们的服务热线或留言咨询,我们尽快与您联系沟通常用机器学习算法优缺点分析的相关事宜。
关键词:1年, 初级, 机器学习算法