链接:https://www.zhihu.com/question/26726794
编辑:深度学习与计算机视觉
声明:仅做学术分享,侵删
k近邻、贝叶斯、决策树、svm、逻辑斯蒂回归和最大熵模型、隐马尔科夫、条件随机场、adaboost、em 这些在一般工作中分别用到的频率多大?一般用途是什么?需要注意什么?
作者:King James
https://www.zhihu.com/question/26726794/answer/1048590114
首先简要的回答一下:楼主说的这些算法,在目前国内工业界应用机器学习最多的一些场景中使用频率接近0,没啥实际用途。如果楼主是想为未来工作做积累,你还得对以下算法多做研究,这些才是目前工业界主流应用的算法。
1.国内工业界应用机器学习最多的领域
我们先从工业界对于机器学习的需求开始说起,明白用户需求才知道什么算法用的多。首先大家可以看一下IDC MarketScape发布的2019中国机器学习开发平台市场的报告,里面国内做机器学习头部公司是:第四范式、百度、阿里云,这是头部三家企业。
然后我们看一下上图中某头部公司的客户都来自于哪个领域:
(图片来自于官网截图)
我们可以很清晰地看出主要来自于这些领域:金融、媒体、零售;为什么了?原因如下:
第一个是因为数据:做To C生意的客户积累的用户多,数据也多,满足机器学习建模对数据量的要求。金融、媒体、零售积累了大量C端用户的数据;
第二个是因为场景:这些领域的客户有些大量可以使用机器学习建模的场景,也是国内工业界最早尝试将机器学习引入到实际的建模场景中的。
具体哪些场景下面会细述。
2. 国内工业界应用最多的机器学习算法
说清楚主要应用领域和场景以后,分析算法就很清楚了。
2.1 金融领域
金融领域使用机器学习建模最多的场景就是风控。当然风控也要进行细分,主要应用机器学习建模的细分场景如下:
信用卡交易反欺诈:分类任务,GBDT算法+LR逻辑回归;
信用卡申请反欺诈:分类任务,GBDT算法+LR逻辑回归;
贷款申请反欺诈:分类任务,GBDT算法+LR逻辑回归;
反洗钱:分类任务,GBDT算法+LR逻辑回归;
是的没错,目前在金融领域涉及到风控的几乎都是GBDT+LR,目前市场上还没有哪一家金融科技公司做反欺诈、反洗钱场景使用的不是GBDT+LR,这是目前市场上做该场景效果最好的算法。同时金融行业存在高监管的属性,乙方AI厂商给银行做项目时,最终项目交付时都需要模型可解释,LR模型存在一个优点就是特征可以解释,特征工程很清晰,每个特征的贡献度也可以统计出来。如果用深度学习模型等,可能效果差不多,但是完全不可解释,这种在金融这种强监管的场景下,不可解释的模型是不符合监管要求的。
评论区有蛮多知友提到了XGBT算法,确实也有用XGBT算法在上述这些场景,XGBT在GBDT算法进行了一些优化。具体大家可以参考这个链接下的回答:https://www.zhihu.com/question/41354392。但实际目前用GBDT的还是多。
营销场景:为用户推荐理财产品、基金产品、保险产品或者邀请用户办理信用卡账单分期等;
这部分主要用的都是推荐的算法,主要都是基于协同过滤CF算法+简单的策略;营销场景做推荐,一般分为三个部分:召回+排序+业务规则。召回层面会利用协同过滤CF算法、FM算法,构建排序模型还是LR模型多。
2.2 媒体领域
在媒体领域最典型的就是今日头条了,包括像很多其他的媒体端如小红书、抖音等;这里面最常应用机器学习的就是推荐场景。大家经常发现的一点就是今日头条、小红书经常会根据你之前看过的一些内容来给你推相关内容。比如你经常看大长腿,小红书就一直给你推,别问我怎么知道的。
推荐:基于内容item的推荐、基于知识图谱的推荐、基于协同过滤算法的推荐。资讯信息物料的推荐,这里面会涉及到Doc2Vec、Lsi等算法,因为涉及到一部分对于物料语义的理解。
(今日头条推荐算法详解:https://www.leiphone.com/news/201801/XlIxFZ5W3j8MvaEL.html)
2.3 零售领域
在零售领域,使用机器学习建模最多的场景也是推荐场景。APP上购物车页面提交订单时为用户推荐相似商品、推荐可能感兴趣的商品,以及针对什么样的用户推荐什么样的优惠券等等。
推荐:协同过滤CF算法、FM算法+LR排序模型;
除去推荐,零售领域还有一个使用机器学习建模比较多的场景,就是对某类商品进行销量预测,根据预测量来调整商品的供给。主要是构建一个回归模型,但是据我了解到目前国内在该场景下尝试比较多的AI公司是创新奇智,但据甲方反馈效果一般。影响销量的因素太多,比如这次疫情谁也想不到,所有生鲜电商的单量都呈40%以上的增长。
销量预测:回归任务,回归模型;
零售领域还有一个应用非常多的场景,就是做供应链优化,物流调度,给外卖骑手配单等。但这部分不能算作机器学习,更多是运筹学的知识。目前国内做的比较好的是杉数科技。
供应链优化:运筹学的知识
3. 未来工业界应用比较广、比较有前景的算法
所以如果你是一个学生或者想转行到机器学习领域,那么上文提到的这些算法你务必得十分清晰。而楼主提到的这些算法,你只需要清楚即可,不需要做深研究,因为工业界真的几乎不用,方向很重要。
而目前工业界最火的机器学习研究方向就是AutoML,自动机器学习技术,不需要机器学习专家参与建模,机器全自动完成建模。(目前第四范式的AutoML技术处于国内领先地位:https://www.jiqizhixin.com/articles/2018-07-12-17,)AutoML技术这两年发展的很迅速,工作上自己了解我司的AutoML实际场景落地时,在一些场景上AutoML构建的模型效果表现已经和经验丰富的数据科学家人工构建的模型效果没有任何差异了,但是AutoML大幅降低了人力成本和时间成本。除去最火的AutoML,到哪里都有市场的就是做推荐算法和知识图谱的,拼多多光做推荐系统都有几百号人。
同时强化学习在工业界的热度也在逐步攀升,工作上越来越多的甲方来咨询强化学习,希望用强化学习来尝试一些场景的应用,之前强化学习更多还是在学术界研究。目前强化学习在游戏行业应用已经十分成熟了,现在有向其他行业扩展的趋势,比如零售领域的供应链干线优化、互联网领域的推荐场景等。
总结来说如果你想进入工业界的机器学习领域你需要对:GBDT、LR、推荐算法很了解,而所谓的KNN、Kmeans、贝叶斯、em、最大熵模型等等,这些只是基础算法,了解这些基础算法完全无法解决工业界遇到的问题。如果你现在研究的领域是AutoML、知识图谱、推荐算法那么你将会很吃香,尤其是AutoML。之前华为开出200多万年薪的那位博士生就是研究AutoML的。同时强化学习在工业界的热度也逐步攀升,前景也很广阔。
作者:mileistone
https://www.zhihu.com/question/26726794/answer/421409624
对于supervised learning的机器学习算法而言,机器学习算法可以拆解为representation、evaluation和optimization三个部分。
具体的,假设 是训练集中一条sample的data, 为该条sample的label, 为预测值,那么:
1、 的具体形式就是representation,比如是一次型的 ,或者二次型的 ;
2、衡量 和 之间差距的是evaluation,其实也就是loss function,例如我们熟知的squared loss, ;
各种各样的loss function
3、根据2中的evaluation求解权重 的过程则是optimization,包括我们熟知的SGD、EM等都可以划到optimization。
为一个具体的场景选择模型主要看两点:
1、弄清楚这个场景的数据分布,找到representation和该分布契合的模型,例如该场景的数据分布是一次型的,那我们就可以选择logistic regression、SVM等分界面为一次型的模型;如果场景的数据分布是二次型的,我们可以选择naive bayes;如果场景的数据分布既不是一次型也不是二次型,那我们可以选择基于决策树的模型,例如gbdt、random forest等,或者DNN,这些模型都高度非线性,表达能力极强,理论上可以拟合任意曲线;
2、该模型的optimization过程硬件能否承受,如果场景数据分布是一次型,但是训练集数据量极大,那我们一般会选logistic regression,而放弃SVM,因为SVM的optimization过程对大数据量不太友好。
具体地,logistic regression和SVM(linear kernel)的representation都是一次型的,它们不同的地方在于evaluation和optimization,如果数据分布是一次型的,用这两个差别不会太大,但是logistic regression的optimization过程对大数据量更加友好,而且预测值能有概率意义,所以工业界使用logistic regression更多。
另外一个工业界用得非常多的模型是gbdt,它的representation类似于下图。其实基于决策树的模型都是通过一个个平行于坐标轴的平面去拟合训练集的实际分界面,理论上平行于坐标轴的平面能够拟合任意分界面,这一点类似于DNN。实际场景中,数据分界面为非线性的情况占大多数,gbdt一方面继承了决策树的强表达能力,另外一方面又规避决策树variance太大的问题。
决策树representation图解
adaboost属于ensemble method中boosting方法的一个具体实现,ensemble method包括bagging、boosting和stacking。这些方法在打比赛的时候常用,因为理论上它们一定会带来效果上的提升。
这篇文章A Few Useful Things to Know about Machine Learning
(链接:https://homes.cs.washington.edu/~pedrod/papers/cacm12.pdf)
不错,对宏观地认识机器学习有比较大的帮助。
作者:Spacelounger
https://www.zhihu.com/question/26726794/answer/1526236102
之前学习时候正好整理了笔记,回答一下也算是复习了。先总结各种方法的优缺点,然后简单串连一下如何选择ML算法。
1.线性回归,Linear regression.
优点:简单,上手快,对线性可分的数据有效,正则和cross-validation 可以避免过拟合。
缺点:对outlier敏感,很容易过拟合或者underfitting(不知道中文翻译的什么). 无法处理非线性数据。
2. 逻辑回归, Logistic regression.
优点:简单,上手快,数据做不做预处理都无所谓,输出数据自动落入(0,1)区间,对输入数据的微小波动不敏感,可以通过数值分析方法进行模型优化。
缺点:非线性数据表现不好,对于特征highly correlated的表现不好, 特征必须有明确指向性。
3. SVM
优点:线性非线性数据都可以处理,高维数据表现不错,当类型明确可分的时候是最优选择,outliers影响很小。
缺点:慢, 当类型互相重叠时候表现不太好,kernel选择很重要,参数选择也很关键。
4. Neural Network
优点:整体表现良好, 输入数据的波动影响小
缺点:慢,隐藏层选择很重要
5. Naive Bayers
优点:快,无需训练,irrelevant features 影响非常小,高维数据表现好。
缺点:不适合做预测, 输入数据必须代表整体分布不然会导致结果不好。
6. 决策树
优点:不需要预处理数据,可以处理部分数据丢失的情况,可以可视化,容易理解。
缺点:容易过拟合,对outlier非常敏感,输入数据的微小波动会引起输出的大幅变化, 训练时间长。
7. 随机森林
优点:人多力量大,可以降低综合误差(bias & variance),可以处理高维数据,不会出现过拟合。
缺点:具体过程无法可视化,特征选择比较关键。
8. KNN
优点:简单好上手,对输入数据无要求,参数少,只有一个K
缺点:大量数据处理慢,数据量大+特征多的时候表现不好,imbalanced数据表现不好,无法处理数据丢失。
9. K-mean
优点:可处理大量数据,保证收敛,对新数据适应良好。
缺点:人工选择K, 初始数据完全影响整个模型的结果,高维数据速度慢,对outliers敏感。
10. 如何选择ML模型, 著名no free lunch theroem(可不是我瞎说的)已经表示,不可能有一个全方面称心如意的模型可以解决你的所有问题,就像择偶时候,不可能有兼具帅气多金温柔上进体贴智慧专一。。。于一身的人,主要还是看你更需要什么了。
实际选择模型时候可以从以下方面考虑:
10.1 训练数据
数据量是大还是小,数据是high bias 还是 high variance。。。
数据小,或者数据high bias/ low variance 可以选择linear、 logistics regression, Naïve Bayes, 或者SVM无kernel。
数据量大或low bias / high variance 可选择KNN, SVM 高斯kernel, 决策树。
10.2 数据的结构
考虑数据是线性还是非线性,相关还是不相关,根据上面的模型优缺点进行选择
10.3 训练时间
是想一杯茶喝一天等结果还是想嗖的一下就出结果,可以根据模型本身的速度选择。
10.4 数据特征
特征多还是少,特征是有明确指向性还是没有,特征之间有无重叠,都可以根据具体要求选择合适的模型。
作者:图灵的猫
https://www.zhihu.com/question/26726794/answer/1015964231
我觉得前面的回答意义不大,因为这个问题真的不需要长篇大论,看看题主的描述:
k近邻、贝叶斯、决策树、svm、逻辑斯蒂回归和最大熵模型、隐马尔科夫、条件随机场、adaboost、em 这些在一般工作中分别用到的频率多大?一般用途是什么?需要注意什么?
据我了解,现在的真实业务场景下,很少有直接用这些基础算法模型作为线上应用的了。
用途基本就是拿来做前期的base,跑跑看效果如何,或者嵌入到离线的一些应用,比如分词。
要注意的就一点:有些模型数据量大的时候跑起来时间成本太大,比如SVM。你自己在学校可能没觉得有什么,但是公司里是没法这么搞的。还有的模型跑起来速度可以,但是精度不高,比如决策树(这里不包括lightGBM这种集成树),不管是分类还是回归都比不过最新的一些深度模型。
总结一下:小数据量的情况下,你可以研究研究这些模型,毕竟是算法基础。如果你指的是工作中,那么他们的用处不多。
☆ END ☆
如果看到这里,说明你喜欢这篇文章,请转发、点赞。微信搜索「uncle_pn」,欢迎添加小编微信「 mthler」,每日朋友圈更新一篇高质量博文。
↓扫描二维码添加小编↓