各个机器学习算法的优缺点及对比

各种机器学习算法的应用场景分别是什么(比如朴素贝叶斯、决策树、K 近邻、SVM、逻辑回归最大熵模型)? - 知乎k近邻、贝叶斯、决策树、svm、逻辑斯蒂回归和最大熵模型、隐马尔科夫、条件随机场、adaboost、em 这些在…https://www.zhihu.com/question/26726794

1. 逻辑回归和SVM对比

1. 损失函数不同:逻辑回归使用对数损失函数,SVM使用0-1损失函数。

2. SVM考虑局部(支持向量),而logistic回归考虑全局。SVM的处理方法是只考虑 support vectors,也就是和分类最相关的少数点,去学习分类器。而逻辑回归通过非线性映射,大大减小了离分类平面较远的点的权重,相对提升了与分类最相关的数据点的权重,两者的根本目的都是一样的。

对数几率回归通过最大化样本输出到正确分类的概率来减少错误率

3. 逻辑回归常用于处理大数据,而SVM则正好相反。

4. 损失函数的优化方法不一样,逻辑回归用剃度下降法优化,svm用smo方法进行优化,来求解条件约束损失函数的对偶形式。

5. 逻辑回归便于实施易于解释都是业务常用的,而支持向量机通过超平面分割数据,追求的是分类结果。逻辑回归产出的是概率值,而SVM只能产出是正类还是负类,不能产出概率。

——————————————————分割线—————————————————————

随机森林平均来说最强,但也只在9.9%的数据集上拿到了第一,优点是鲜有短板。

SVM的平均水平紧随其后,在10.7%的数据集上拿到第一。

神经网络(13.2%)和boosting(~9%)表现不错。

数据维度越高,随机森林就比AdaBoost强越多,但是整体不及SVM。

数据量越大,神经网络就越强。

KNN(K近邻)

对于待判断的点,找到离它最近的几个数据点,根据它们的类型决定待判断点的类型。它的特点是完全跟着数据走,没有数学模型可言。

适用情景:需要一个特别容易解释的模型的时候。比如需要向用户解释原因的推荐算法。

贝叶斯

典型的例子是Naive Bayes,核心思路是根据条件概率计算待判断点的类型。

是相对容易理解的一个模型,至今依然被垃圾邮件过滤器使用。

适用情景:需要一个比较容易解释,而且不同维度之间相关性较小的模型的时候。

可以高效处理高维数据,虽然结果可能不尽如人意。

决策树(Decision Tree)

决策树的特点是它总是在沿着特征做切分。随着层层递进,这个划分会越来越细。

虽然生成的树不容易给用户看,但是数据分析的时候,通过观察树的上层结构,能够对分类器的核心思路有一个直观的感受。

举个简单的例子,当我们预测一个孩子的身高的时候,决策树的第一层可能是这个孩子的性别。男生走左边的树进行进一步预测,女生则走右边的树。这就说明性别对身高有很强的影响。

适用情景

因为它能够生成清晰的基于特征(feature)选择不同预测结果的树状结构,数据分析师希望更好的理解手上的数据的时候往往可以使用决策树。

同时它也是相对容易被攻击的分类器。这里的攻击是指人为的改变一些特征,使得分类器判断错误。常见于垃圾邮件躲避检测中。因为决策树最终在底层判断是基于单个条件的,攻击者往往只需要改变很少的特征就可以逃过监测。受限于它的简单性,决策树更大的用处是作为一些更有用的算法的基石。

随机森林(Random Forest)

随机选取不同的特征(feature)和训练样本(training sample),生成大量的决策树,然后综合这些决策树的结果来进行最终的分类。

随机森林在现实分析中被大量使用,它相对于决策树,在准确性上有了很大的提升,同时一定程度上改善了决策树容易被攻击的特点。

适用情景:数据维度相对低(几十维),同时对准确性有较高要求时。

因为不需要很多参数调整就可以达到不错的效果,基本上不知道用什么方法的时候都可以先试一下随机森林。

SVM(支持向量机)

SVM的核心思想就是找到不同类别之间的分界面,使得两类样本尽量落在面的两边,而且离分界面尽量远。最早的SVM是平面的,局限很大。但是利用核函数(kernel function),我们可以把平面投射(mapping)成曲面,进而大大提高SVM的适用范围。

适用情景:SVM在很多数据集上都有优秀的表现。相对来说,SVM尽量保持与样本间距离的性质导致它抗攻击的能力更强。和随机森林一样,这也是一个拿到数据就可以先尝试一下的算法。

逻辑回归(LR)

适用情景:LR同样是很多分类算法的基础组件,它的好处是输出值自然地落在0到1之间,并且有概率意义。因为它本质上是一个线性的分类器,所以处理不好特征之间相关的情况

虽然效果一般,却胜在模型清晰,背后的概率学经得住推敲。它拟合出来的参数就代表了每一个特征(feature)对结果的影响。也是一个理解数据的好工具。

Boosting

当我们把多个较弱的分类器结合起来的时候,它的结果会比一个强的分类器更好。

典型的例子是AdaBoost。AdaBoost的实现是一个渐进的过程,从一个最基础的分类器开始,每次寻找一个最能解决当前错误样本的分类器。用加权取和(weighted sum)的方式把这个新分类器结合进已有的分类器中。

它的好处是自带了特征选择(feature selection),只使用在训练集中发现有效的特征(feature)。这样就降低了分类时需要计算的特征数量,也在一定程度上解决了高维数据难以理解的问题。

最经典的AdaBoost实现中,它的每一个弱分类器其实就是一个决策树。这就是之前为什么说决策树是各种算法的基石。

使用情景:好的Boosting算法,它的准确性不逊于随机森林。实际使用中它是很强的。因为自带特征选择(feature selection)所以对新手很友好,是一个“不知道用什么就试一下它吧”的算法。

Bagging

首先随机地抽取训练集(training set),以之为基础训练多个弱分类器。然后通过取平均,或者投票(voting)的方式决定最终的分类结果。

因为随机选取训练集的特点,Bagging可以一定程度上避免过拟合。

使用情景:相较于经典的必使算法,Bagging使用的人更少一些。一部分的原因是Bagging的效果和参数的选择关系比较大,用默认参数往往没有很好的效果。

虽然调对参数结果会比决策树和LR好,但是模型也变得复杂了,没事有特别的原因就别用它了。

————————————————————分割线————————————————————

树模型用的最多的是GBDT、XGBoost和LightGBM。GBDT金融科技领域用的多,LightGBM目前销量预测领域用的多。

金融领域

金融领域使用机器学习建模最多的场景就是风控。

  • 信用卡交易反欺诈:分类任务,GBDT算法+LR逻辑回归;
  • 信用卡申请反欺诈:分类任务,GBDT算法+LR逻辑回归;
  • 贷款申请反欺诈:分类任务,GBDT算法+LR逻辑回归;
  • 反洗钱:分类任务,GBDT算法+LR逻辑回归;

乙方AI厂商给银行做项目时,最终项目交付时都需要模型可解释,LR模型存在一个优点就是特征可以解释,特征工程很清晰,每个特征的贡献度也可以统计出来。如果用深度学习模型等,可能效果差不多,但是完全不可解释,这种在金融这种强监管的场景下,不可解释的模型是不符合监管要求的。金融行业的属性导致的,目前深度学习在金融风控领域应用非常有限。

  • 营销场景:为用户推荐理财产品、基金产品、保险产品或者邀请用户办理信用卡账单分期等;

这部分主要用的都是推荐的算法,主要都是基于协同过滤CF算法+简单的策略;营销场景做推荐,一般分为三个部分:召回+排序+业务规则。召回层面会利用协同过滤CF算法、FM算法,构建排序模型还是LR模型居多,金融领域目前使用深度学习相对较少,但是在互联网和其他领域使用深度学习做排序模型已经很广泛了。

媒体领域 (今日头条 小红书 抖音)

最常应用机器学习的就是推荐场景。

推荐:基于内容item的推荐、基于知识图谱的推荐、基于协同过滤算法的推荐。资讯信息物料的推荐,这里面会涉及到Doc2Vec、Lsi等算法,因为涉及到一部分对于物料语义的理解。

零售领域

在零售领域,使用机器学习建模最多的场景也是推荐场景和搜索场景中的排序。APP上购物车页面提交订单时为用户推荐相似商品、推荐可能感兴趣的商品,以及针对什么样的用户推荐什么样的优惠券等等。

  • 推荐:协同过滤CF算法、FM算法+LR排序模型、深度学习模型目前在推荐领域使用也十分广泛了。

除去推荐,零售领域还有一个使用机器学习建模比较多的场景,就是对某类商品进行销量预测,根据预测量来调整商品的供给。

  • 销量预测:目前基本都转用LightGBM算法了;这里附上之前Kaggle里面关于销量预测的case,排名第一的将自己的源码share出来的,感兴趣的可以自行下载研究。

https://www.kaggle.com/c/favorita-grocery-sales-forecasting/discussion/47582​www.kaggle.com/c/favorita-grocery-sales-forecasting/discussion/47582

零售领域还有一个应用非常多的场景,就是做供应链优化,物流调度,给外卖骑手配单等。但这部分不能算作机器学习,更多是运筹学的知识。目前国内做的比较好的是杉数科技。

  • 供应链优化:运筹学的知识

——————————————————分割线—————————————————————

基于GBDT算法+LR逻辑回归处理信用卡交易反欺诈 - 知乎

通过利用信用卡历史交易信息,进行机器学习,构建信用卡反欺诈预测模型,提前发现客户信用卡被盗刷时间。

各个机器学习算法的优缺点及对比_第1张图片

数据预处理:导入数据,缺失值处理

特征工程:正负样本分布情况可视化,如果有数据不平衡则需要处理。

特征缩放:去均值和方差归一化

特征选择:有的变量在信用卡被盗刷和正常两种情况下没有明显的区别,这样的特征不利于逻辑回归模型训练,还会增加模型复杂度和训练时间,因此这一步要找出这些变量,然后剔除。
通过频率分布直方图,可以直观地看出不同指标在两种场景中的分布,如果一致,则该特征删除。

利用GBDT梯度提升决策树进行特征重要性排序,以进一步减少变量。

解决数据不平衡问题:**过采样**,具体操作使用SMOTE(Synthetic Minority Oversampling Technique),SMOET的基本原理是:采样最邻近算法,计算出每个少数类样本的K个近邻,从K个近邻中随机挑选N个样本进行随机线性插值,构造新的少数样本,同时将新样本与原数据合成,产生新的训练集。

模型训练:使用默认参数建立逻辑回归

利用GridSearchCV进行交叉验证和模型参数自动调优

你可能感兴趣的:(机器学习,机器学习)