很可惜 T 。T 您现在还不是作者身份,不能自主发稿哦~
如有投稿需求,请把文章发送到邮箱tougao@appcpx.com,一经录用会有专人和您联系
咨询如何成为春羽作者请联系:鸟哥笔记小羽毛(ngbjxym)
作者|飞狐冲冲
机器学习无疑是当前数据分析领域的一个热点内容,其理论和方法已经广泛应用于解决工程应用的复杂问题,很多人在平时的工作中都或多或少会用到机器学习的算法。
在机器学习领域,没有算法能完美地解决所有问题。比如说,神经网络并不是在任何情况下都能比决策树更有优势,反之亦然。它们要受很多因素的影响,比如你的数据集的规模或结构。其结果是,在用给定的测试集来评估性能并挑选算法时,你应当根据具体的问题来采用不同的算法。例如,如果模型要求可解释性较强,首先想到的就是逻辑(线性)回归,如果模型要求准确度较高且速度较快,首先想到的是Xgboost,如果数据量巨大且很稀疏,首先想到怎么用神经网络解决此问题。
因此,如何选择机器学习算法、选择哪一个算法以及算法建模时该注意哪些问题成了工程师的一个难题,本文的目的总结了常用机器学习算法优缺点,供大家在工作、学习甚至面试中参考。机器学习主要分为有监督学习和无监督学习,本文从这两方面进行了梳理。
有监督学习是指模型学习时有特定目标,即目标是人工标注的,主要用做分类或者回归。常用的有监督学习主要有knn、逻辑(线性)回归、决策树、随机森林、adaboost、GBDT、xgboost、svm、朴素贝叶斯、人工神经网络等算法。
KNN可以说是最简单的分类算法,和另一种机器学习算法K均值算法有点像,但有着本质区别(K均值算法是无监督算法)。KNN的全称是K Nearest Neighbors,意思是K个最近的邻居,KNN的原理就是当预测一个新的值x的时候,根据它距离最近的K个点是什么类别来判断x属于哪个类别。
KNN算法的优点:
1、理论成熟,简单易用,相比其他算法,KNN算是比较简洁明了的算法,工程上非常容易实现;
2、模型训练时间快,训练时间复杂度为O(n),KNN算法是惰性的;
3、对数据没有假设,准确度高,对异常值不敏感。
KNN算法的缺点:
1、对内存要求较高,因为该算法存储了所有训练数据;
2、KNN每一次分类都会重新进行一次全局运算,且对于样本容量大的数据集计算量比较大(一般涉及到距离计算的模型都会有这种缺点,如后面讲的SVM、密度聚类等)。
逻辑回归是分类模型,线性回归是回归模型,逻辑回归和线性回归原理相似,逻辑回归其实仅为在线性回归的基础上,套用了一个逻辑函数。
线性回归的损失函数为均方误差类损失,逻辑回归的损失函数为交叉熵损失。逻辑回归的损失函数为什么选择交叉熵损失而不选择均方误差是面试中经常问道的问题,这里简单说一下:使用MSE作为损失函数的话,它的梯度是和sigmod函数的导数有关的,如果当前模型的输出接近0或者1时,就会非常小,接近0,使得求得的梯度很小,损失函数收敛的很慢。但是我们使用交叉熵的话就不会出现这样的情况,它的导数就是一个差值,误差大的话更新的就快,误差小的话就更新的慢点,这正是我们想要的。
逻辑(线性)回归的优点:
1、可解释行强。
本人认为这是逻辑(线性)回归最大的优点,应该是机器学习算法中可解释最强的,因为它训练的参数即为每个特征的权重,并且能够定位到每个样本的可解释,而且它的输出为概率值;
2、计算量小,速度很快,存储资源低,工程上实现简单,广泛应用于工业界;
逻辑(线性)回归的缺点:
它最大的缺点就是对特征工程要求较高,主要体现在以下方面:
1、需要解决特征共线性问题,如果特征共线性较高,训练的权重不满秩,有模型不收敛的可能;
2、对于异常值和缺失值非常敏感,需要提前进行数据处理;
3、模型训练前需要特征归一化,不然进行梯度下降寻找最优值时会收敛很慢或者不收敛;
4、对于非线性连续特征需要连续特征离散化。
当然除了以上缺点,还有它的容易欠拟合,准确度并不是很高(个人认为强于决策树,弱于SVM、GBDT等强分类器)。
决策树的生成算法有ID3, C4.5和C5.0等。决策树是一种树形结构,其中每个内部节点表示一个属性上的判断,每个分支代表一个判断结果的输出,最后每个叶节点代表一种分类结果。
决策树的优点:
1、计算量相对较小, 且容易转化成分类规则. 只要沿着树根向下一直走到叶, 沿途的分裂条件就能够唯一确定一条分类的谓词;
2、有一定的可解释性,树的结构可视化;
3、具有一定的特征选择能力,能够自己处理不相关特征。
决策树的缺点:
1、属于弱分类器,且容易过拟合,可用bagging的方式减小方差(如随机森林),boosting的方式减少偏差(如GBDT、xgboost);
2、于各类别样本数量不一致的数据, 信息增益偏向于那些更多数值的特征;
3、容易忽略数据集中属性的相互关联。
是以决策树为基学习器的集成学习算法,如果分类模型,多个决策树进行投票处理,如果为回归模型,多个决策树结果平均值处理。
随机森林的优点:
1、随机森林具有防止过拟合能力,精度比大多数单个算法要好;
2、随机森林分类器可以处理缺失值;
3、于有袋外数据(OOB),可以在模型生成过程中取得真实误差的无偏估计,且不损失训练数据量在训练过程中,能够检测到feature间的互相影响,且可以得出feature的重要性,具有一定参考意义;
4、每棵树可以独立、同时生成,容易做成并行化方法;
5、具有一定的特征选择能力。
随机森林的缺点:
1、随机森林已经被证明在某些噪音较大的分类或回归问题上会过拟。
2、对于有不同取值的属性的数据,取值划分较多的属性会对随机森林产生更大的影响,所以随机森林在这种数据上产出的属性权值是不可信的。
GBDT是通过采用加法模型(即基函数的线性组合),以及不断减小训练过程产生的残差来达到将数据分类或者回归的算法,它是决策树的boosting算法,在传统机器学习算法里面是对真实分布拟合的最好的几种算法之一。
GBDT的优点:
1、GBDT属于强分类器,一般情况下比逻辑回归和决策树预测精度要高;
2、GBDT可以自己选择损失函数,当损失函数为指数函数时,GBDT变为Adaboost算法;
3、GBDT可以做特征组合,往往在此基础上和其他分类器进行配合。
GBDT的缺点:
1、由于弱学习器之间存在依赖关系,难以并行训练数据;
2、和其他树模型一样,不适合高维稀疏特征。
XGBoost的全称是eXtreme Gradient Boosting,它是经过优化的分布式梯度提升库,旨在高效、灵活且可移植。XGBoost是大规模并行boosting tree的工具,它是目前最快最好的开源 boosting tree工具包,比常见的工具包快10倍以上。在数据科学方面,有大量的Kaggle选手选用XGBoost进行数据挖掘比赛,是各大数据科学比赛的必杀武器;在工业界大规模数据方面,XGBoost的分布式版本有广泛的可移植性,支持在Kubernetes、Hadoop、SGE、MPI、 Dask等各个分布式环境上运行,使得它可以很好地解决工业界大规模数据的问题。它是GBDT的进阶,也就是Xgboost有着GBDT所有的优点。
此外与GBDT相比,xgBoosting有以下进步:
1、收敛速度增快:
GBDT在优化时只用到一阶导数,xgBoosting对代价函数做了二阶Talor展开,引入了一阶导数和二阶导数;
2、正则化,一定程度防止过拟合。
XGBoost 在代价函数里加入了正则项,用于控制模型的复杂度。
正则项里包含了树的叶子节点个数、每个叶子节点上输出的 score 的 L2 模的平方和。
从 Bias-variancetradeoff 角度来讲,正则项降低了模型的 variance,使学习出来的模型更加简单,防止过拟合;
3、并行处理。
XGBoost 工具支持并行。
Boosting 不是一种串行的结构吗?
怎么并行的?
注意 XGBoost 的并行不是 tree 粒度的并行,XGBoost 也是一次迭代完才能进行下一次迭代的(第 t 次迭代的代价函数里包含了前面 t-1 次迭代的预测值)。
XGBoost 的并行是在特征粒度上的。
我们知道,决策树的学习最耗时的一个步骤就是对特征的值进行排序(因为要确定最佳分割点),XGBoost 在训练之前,预先对数据进行了排序,然后保存为block结构,后面的迭代中重复地使用这个结构,大大减小计算量。
这个 block 结构也使得并行成为了可能,在进行节点的分裂时,需要计算每个特征的增益,最终选增益最大的那个特征去做分裂,那么各个特征的增益计算就可以开多线程进行;
1、Shrinkage(缩减):
相当于学习速率。
XGBoost 在进行完一次迭代后,会将叶子节点的权重乘上该系数,主要是为了削弱每棵树的影响,让后面有更大的学习空间。
传统GBDT的实现也有学习速率;
2、列抽样:
XGBoost 借鉴了随机森林的做法,支持列抽样,不仅能降低过拟合,还能减少计算。
这也是XGBoost异于传统GBDT的一个特性;
3、缺失值处理:
对于特征的值有缺失的样本,XGBoost 采用的稀疏感知算法可以自动学习出它的分裂方向;
4、内置交叉验证:
XGBoost 允许在每一轮 Boosting 迭代中使用交叉验证。
因此,可以方便地获得最优Boosting 迭代次数。
而 GBM 使用网格搜索,只能检测有限个值。
Xgboost缺点:
1、和其他树模型一样,不适合高维稀疏特征;
2、算法参数过多,调参复杂,需要对 XGBoost 原理十分清楚才能很好的使用 XGBoost。
SVM即支持向量机,它是将向量映射到一个更高维的空间里,在这个空间里建立有一个最大间隔超平面。在分开数据的超平面的两边建有两个互相平行的超平面,分隔超平面使两个平行超平面的距离最大化。假定平行超平面间的距离或差距越大,分类器的总误差越小。
SVM的优点:
1、使用核函数可以向高维空间进行映射;
2、属于强分类器,准确的较高;
3、能够处理非线性特征的相互作用。
SVM的缺点:
1、SVM最大的缺点,本人认为会耗费大量的机器内存和运算时间,这也是为什么随着数据量越来越多,SVM在工业界运用越来越少的原因;
2、对缺失数据敏感;
3、对非线性问题没有通用解决方案,有时候很难找到一个合适的核函数。
朴素贝叶斯算法是基于贝叶斯定理和特征条件独立假设的分类方法,属于生成式模型。
朴素贝叶斯的优点:
1、朴素贝叶斯模型发源于古典数学理论,有着坚实的数学基础,以及稳定的分类效率;
2、对大数量训练和查询时具有较高的速度。
即使使用超大规模的训练集,针对每个项目通常也只会有相对较少的特征数,并且对项目的训练和分类也仅仅是特征概率的数学运算而已;
3、对小规模的数据表现很好,能个处理多分类任务,适合增量式训练(即可以实时的对新增的样本进行训练;
4、对缺失数据不太敏感,算法也比较简单,常用于文本分类;
5、朴素贝叶斯对结果解释容易理解。
朴素贝叶斯的缺点:
1、理论上,朴素贝叶斯模型与其他分类方法相比具有最小的误差率。但是实际上并非总是如此,这是因为朴素贝叶斯模型假设属性之间是相互独立的,而这个假设在实际应用中往往并不成立的。虽然在属性相关性较小时,朴素贝叶斯性能良好。但是,在属性个数比较多或者属性之间相关性较大时,分类效果并不好;
2、需要知道先验概率,并且先验概率在很多时候多是取决于假设,假设的模型可以有多种,从而导致在某些时候会由于假设的先验模型而使得预测效果不佳;
3、因为是通过先验和数据来决定后验的概率来决定分类的,所以分类决策存在一定的错误率;
4、对输入数据的表达形式很敏感。
以上都是传统有监督机器学习算法,但传统的机器学习算法在数据量面前,会触及一个天花板,一旦到达极限,传统机器学习算法将无法跟上数据增长的步伐,性能则停滞不前。而数据越多,神经网络越浪!随着现在数据量越来越多,人工神经网络运用越来越广泛。
人工神经网络的优点:
1、可以充分逼近任意复杂的非线性关系;
2、所有定量或定性的信息都等势分布贮存于网络内的各神经元,故有很强的鲁棒性和容错性;
3、采用并行分布处理方法,使得快速进行大量运算成为可能;
4、可学习和自适应不知道或不确定的系统;
5、能够同时处理定量、定性知识。
人工神经网络的缺点:
1、黑盒过程,不能观察之间的学习过程,输出结果难以解释,会影响到结果的可信度和可接受程度;
2、学习时间过长,有可能陷入局部极小值,甚至可能达不到学习的目的;
3、神经网络需要大量的参数,如网络拓扑结构、权值和阈值的初始值。
无监督学习输入数据没有被标记,也没有确定的结果,样本数据类别未知,需要根据样本间的相似性对样本集进行分类。常用的无监督模型主要指各种聚类,主要有K均值聚类、层次聚类、密度聚类等。
K-Means的主要优点:
1、原理简单,容易实现;
2、可解释度较强。
K-Means的主要缺点:
1、K值很难确定;
2、聚类效果依赖于聚类中心的初始化,收敛到局部最优;
3、对噪音和异常点敏感;
4、对于非凸数据集或类别规模差异太大的数据效果不好。
密度聚类优点:
1、可以对任意形状的稠密数据集进行聚类,相对的K均值之类的聚类算法一般只适用于凸数据集;
2、可以在聚类的同时发现异常点,对数据集中的异常点不敏感;
3、聚类结果没有偏倚,相对的,K-Means之类的聚类算法初始值对聚类结果有很大影响。
密度聚类缺点:
1、如果样本集的密度不均匀、聚类间距差相差很大时,聚类质量较差,这时用DBSCAN聚类一般不适合;
2、如果样本集较大时,聚类收敛时间较长,此时可以对搜索最近邻时建立的KD树或者球树进行规模限制来改进;
3、调参相对于传统的K-Means之类的聚类算法稍复杂,主要需要对距离阈值ϵ,邻域样本数阈值MinPts联合调参,不同的参数组合对最后的聚类效果有较大影响。
层次聚类优点:
1、距离和规则的相似度容易定义,限制少。
2、不需要预先制定聚类数。
3、可以发现类的层次关系。
4、可以聚类成其它形状。
层次聚类的缺点:
1、计算复杂度太高。
2、奇异值也能产生很大影响。
3、算法很可能聚类成链状。
总之,选择哪一个算法必须要适用于你自己的问题,这就要求选择正确的机器学习任务。但很多情况下好的数据却要优于好的算法,设计优良特征和做特征工程更有意义,但只有了解每个机器算法的原理及优缺点,才能根据不同的机器学习算法做相应的特征工程。(对特征工程感兴趣的同学可以参考我在公众号一个数据人的自留地写的另一篇文章:机器学习中的特征工程。
-END-
本文为作者独立观点,不代表鸟哥笔记立场,未经允许不得转载。
《鸟哥笔记版权及免责申明》 如对文章、图片、字体等版权有疑问,请点击 反馈举报
Powered by QINGMOB PTE. LTD. © 2010-2022 上海青墨信息科技有限公司 沪ICP备2021034055号-6
我们致力于提供一个高质量内容的交流平台。为落实国家互联网信息办公室“依法管网、依法办网、依法上网”的要求,为完善跟帖评论自律管理,为了保护用户创造的内容、维护开放、真实、专业的平台氛围,我们团队将依据本公约中的条款对注册用户和发布在本平台的内容进行管理。平台鼓励用户创作、发布优质内容,同时也将采取必要措施管理违法、侵权或有其他不良影响的网络信息。
一、根据《网络信息内容生态治理规定》《中华人民共和国未成年人保护法》等法律法规,对以下违法、不良信息或存在危害的行为进行处理。
1. 违反法律法规的信息,主要表现为:
1)反对宪法所确定的基本原则;
2)危害国家安全,泄露国家秘密,颠覆国家政权,破坏国家统一,损害国家荣誉和利益;
3)侮辱、滥用英烈形象,歪曲、丑化、亵渎、否定英雄烈士事迹和精神,以侮辱、诽谤或者其他方式侵害英雄烈士的姓名、肖像、名誉、荣誉;
4)宣扬恐怖主义、极端主义或者煽动实施恐怖活动、极端主义活动;
5)煽动民族仇恨、民族歧视,破坏民族团结;
6)破坏国家宗教政策,宣扬邪教和封建迷信;
7)散布谣言,扰乱社会秩序,破坏社会稳定;
8)宣扬淫秽、色情、赌博、暴力、凶杀、恐怖或者教唆犯罪;
9)煽动非法集会、结社、游行、示威、聚众扰乱社会秩序;
10)侮辱或者诽谤他人,侵害他人名誉、隐私和其他合法权益;
11)通过网络以文字、图片、音视频等形式,对未成年人实施侮辱、诽谤、威胁或者恶意损害未成年人形象进行网络欺凌的;
12)危害未成年人身心健康的;
13)含有法律、行政法规禁止的其他内容;
2. 不友善:不尊重用户及其所贡献内容的信息或行为。主要表现为:
1)轻蔑:贬低、轻视他人及其劳动成果;
2)诽谤:捏造、散布虚假事实,损害他人名誉;
3)嘲讽:以比喻、夸张、侮辱性的手法对他人或其行为进行揭露或描述,以此来激怒他人;
4)挑衅:以不友好的方式激怒他人,意图使对方对自己的言论作出回应,蓄意制造事端;
5)羞辱:贬低他人的能力、行为、生理或身份特征,让对方难堪;
6)谩骂:以不文明的语言对他人进行负面评价;
7)歧视:煽动人群歧视、地域歧视等,针对他人的民族、种族、宗教、性取向、性别、年龄、地域、生理特征等身份或者归类的攻击;
8)威胁:许诺以不良的后果来迫使他人服从自己的意志;
3. 发布垃圾广告信息:以推广曝光为目的,发布影响用户体验、扰乱本网站秩序的内容,或进行相关行为。主要表现为:
1)多次发布包含售卖产品、提供服务、宣传推广内容的垃圾广告。包括但不限于以下几种形式:
2)单个帐号多次发布包含垃圾广告的内容;
3)多个广告帐号互相配合发布、传播包含垃圾广告的内容;
4)多次发布包含欺骗性外链的内容,如未注明的淘宝客链接、跳转网站等,诱骗用户点击链接
5)发布大量包含推广链接、产品、品牌等内容获取搜索引擎中的不正当曝光;
6)购买或出售帐号之间虚假地互动,发布干扰网站秩序的推广内容及相关交易。
7)发布包含欺骗性的恶意营销内容,如通过伪造经历、冒充他人等方式进行恶意营销;
8)使用特殊符号、图片等方式规避垃圾广告内容审核的广告内容。
4. 色情低俗信息,主要表现为:
1)包含自己或他人性经验的细节描述或露骨的感受描述;
2)涉及色情段子、两性笑话的低俗内容;
3)配图、头图中包含庸俗或挑逗性图片的内容;
4)带有性暗示、性挑逗等易使人产生性联想;
5)展现血腥、惊悚、残忍等致人身心不适;
6)炒作绯闻、丑闻、劣迹等;
7)宣扬低俗、庸俗、媚俗内容。
5. 不实信息,主要表现为:
1)可能存在事实性错误或者造谣等内容;
2)存在事实夸大、伪造虚假经历等误导他人的内容;
3)伪造身份、冒充他人,通过头像、用户名等个人信息暗示自己具有特定身份,或与特定机构或个人存在关联。
6. 传播封建迷信,主要表现为:
1)找人算命、测字、占卜、解梦、化解厄运、使用迷信方式治病;
2)求推荐算命看相大师;
3)针对具体风水等问题进行求助或咨询;
4)问自己或他人的八字、六爻、星盘、手相、面相、五行缺失,包括通过占卜方法问婚姻、前程、运势,东西宠物丢了能不能找回、取名改名等;
7. 文章标题党,主要表现为:
1)以各种夸张、猎奇、不合常理的表现手法等行为来诱导用户;
2)内容与标题之间存在严重不实或者原意扭曲;
3)使用夸张标题,内容与标题严重不符的。
8.「饭圈」乱象行为,主要表现为:
1)诱导未成年人应援集资、高额消费、投票打榜
2)粉丝互撕谩骂、拉踩引战、造谣攻击、人肉搜索、侵犯隐私
3)鼓动「饭圈」粉丝攀比炫富、奢靡享乐等行为
4)以号召粉丝、雇用网络水军、「养号」形式刷量控评等行为
5)通过「蹭热点」、制造话题等形式干扰舆论,影响传播秩序
9. 其他危害行为或内容,主要表现为:
1)可能引发未成年人模仿不安全行为和违反社会公德行为、诱导未成年人不良嗜好影响未成年人身心健康的;
2)不当评述自然灾害、重大事故等灾难的;
3)美化、粉饰侵略战争行为的;
4)法律、行政法规禁止,或可能对网络生态造成不良影响的其他内容。
二、违规处罚
本网站通过主动发现和接受用户举报两种方式收集违规行为信息。所有有意的降低内容质量、伤害平台氛围及欺凌未成年人或危害未成年人身心健康的行为都是不能容忍的。
当一个用户发布违规内容时,本网站将依据相关用户违规情节严重程度,对帐号进行禁言 1 天、7 天、15 天直至永久禁言或封停账号的处罚。当涉及欺凌未成年人、危害未成年人身心健康、通过作弊手段注册、使用帐号,或者滥用多个帐号发布违规内容时,本网站将加重处罚。
三、申诉
随着平台管理经验的不断丰富,本网站出于维护本网站氛围和秩序的目的,将不断完善本公约。
如果本网站用户对本网站基于本公约规定做出的处理有异议,可以通过「建议反馈」功能向本网站进行反馈。
(规则的最终解释权归属本网站所有)