各种机器学习算法的应用场景分别是什么(比如朴素贝叶斯、决策树、K 近邻、SVM、逻辑回归最大熵模型)?

论坛 期权论坛 期权     
匿名用户   2018-10-17 22:18   8975   9
提示: 作者被禁止或删除 内容自动屏蔽
分享到 :
0 人收藏

9 个回复

正序浏览
9#
Wapiti  3级会员 | 2018-10-17 22:18:44 发帖IP地址来自
你说的算法似乎在兜哥的《web安全与机器学习入门》里面都有,买本书看看吧,或者在github上面搜索这本书
8#
纯洁的微笑  3级会员 | 2018-10-17 22:18:43 发帖IP地址来自
之前做一个关于银行贷款项目时,用过决策树,后来就没有了。转深度学习了。
7#
SigAI  2级吧友 | 2018-10-17 22:18:42 发帖IP地址来自
现在已经有这么多经典的机器学习算法,如果能抓住它们的核心本质,无论是对于理解还是对于记忆都有很大的帮助,还能让你更可能通过面试。在SIGAI的原创文章《用一句话总结常用的机器学习算法》中将用一句话来总结每种典型的机器学习算法,帮你抓住问题的本质,强化理解和记忆。欢迎关注SIGAI账号,一起好好学习,天天向上
6#
勤哥哥  2级吧友 | 2018-10-17 22:18:41 发帖IP地址来自
随便强答一发吧。说几个自己用过的。
lr万金油中的万金油,解释性很强。(每个特征可以通过权重来分析重要性,这就是所谓的可解释性)。应用场合很多,例如CTR预估,因为在这个场合下特征纬度很高并且稀疏。很适合用lr。
当特征维度不高,而且不会稀疏(一般是没onehot),也就是比较稠密的时候用gbdt或者xgboost比较合适。
5#
colin  3级会员 | 2018-10-17 22:18:40 发帖IP地址来自
可以从以下几个维度进行分析, 选择合适的算法:

  • 数据集的大小
  • 特征空间维度
  • 特征是否相互独立
  • 是否为线性特征[注1]
  • 对拟合程度的要求
  • 其他要求: 性能, 时间, 空间
影响选择的因素有很多, 如果没有特别的要求, 尽量选择简单的模型(Occam's Razor)
Logistic Regression(LR)
LR首屈一指. 适用于特征基本线性相关, 并且问题线性可分. 当特征为非线性特征时, 可使用特征工程将非线性特征转换为线性特征(离散化+one-hot, 重排序). 正则化使模型对噪声鲁棒, 不容易过拟合训练数据, 并且可使用正则化进行特征选择. LR的另一特性是输出概率, 有效支持排序任务和分类阈值的选择. LR对大数据也有较好的支持, 可以构建高效的分布式的模型.
虽然LR不会百分百有效, 但是在尝试其他分类器前, 不妨先使用LR+L2建立一个不错的基线.
当你选择LR建立基线后, 你需要尝试一些其他的分类器, 主要有两个方向:

  • SVM
  • 树模型集成(Tree Ensemble)
一般情况下推荐树模型集成, 但SVM也有值得考虑的情景.
SVM(Support Vector Machine)
LinearSVM与LR并无太大的不同, 主要的区别在于:

  • 损失函数的不同(hinge loss vs cross-entropy loss)
  • 模型解释的不同(maximum margin vs logistic distributed)
使用SVM代替LR主要有两个原因:

  • 核函数解决线性不可分问题(SVM+非线性核函数(RBF))
  • 特征维度高(文本分类)
SVM的主要缺点: 在训练样本较多的情况下, 训练效率低下.
树模型集成(Tree Ensemble)
树模型集成主要包含两种算法:

  • 随机森林(Random Forest)
  • 梯度提升树(Gradient boosted trees)
树模型集成与LR的主要区别在于:

  • 树模型集成不用考虑是否为线性特征, 或者特征之间是否为线性关系
  • 因为树模型集成方式的不同(bagging or boosting), 树模型集成可以处理高维特征和训练样本较多的数据
  • 树模型的拟合能力较强
随机深林和梯度提升树的不同

  • 梯度提升树的参数更多, 所以梯度提升树的拟合能力更好, 但是也更容易过拟合
  • 随机森林则更加的稳定, 对大数据支持更好
深度学习(Deep Learning)
深度学习在图片分类等非结构数据上有着很好的表现, 当你不满足于前面的一些方法, 你可以尝试一下深度学习.
总结
LR是一个不错的基线, 随机森林也是一个不错的分类器. 如果觉得还存在提升空间, 可以试一试GBDT和深度学习. 另外, 也可以在kaggle上看看主流的算法有哪些, 并且适应什么样的问题.

文章翻译至: Quora: What are the advantages of different classification algorithms?

注1: 线性特征
若满足标签y是特征x的线性组合



则有

  • 特征为线性特征
  • 特征之间为线性关系
  • 问题为线性可分问题
因此, 我认为线性特征, 特征之间的线性关系, 问题是否是线性可分, 标签是否是特征之间的线性组合为同一个概念.
线性特征 vs 非线性特征
非线性特征主要包含两种:

  • 类别特征
  • 特征的高次幂
另外, 知乎上有一篇对另一个高票回答进行了翻译: 用于数据挖掘的分类算法有哪些,各有何优劣?
以下是对第二篇文章翻译的转载
尝试将quora上的这个回答翻译了下。第一次翻译,不好之处请见谅。
What are the advantages of different classification algorithms?
以下是我这些年总结的指南
训练集有多大?
如果你的训练集很小,高偏差/低方差的分类器(如朴素贝叶斯)比低偏差/高方差的分类器(如K近邻或Logistic回归)更有优势,因为后者容易过拟合。但是随着训练集的增大,高偏差的分类器并不能训练出非常准确的模型,所以低偏差/高方差的分类器会胜出(它们有更小的渐近误差)。
你也可以从生成模型与判别模型的区别来考虑它们。
某些分类器的优势
朴素贝叶斯(Naive Bayes, NB)
超级简单,就像做一些计数的工作。如果条件独立假设成立的话,NB将比判别模型(如Logistic回归)收敛更快,所以你只需要少量的训练数据。即使条件独立假设不成立,NB在实际中仍然表现出惊人的好。如果你想做类似半监督学习,或者是既要模型简单又要性能好,NB值得尝试。
Logistic回归(Logistic Regression, LR)
LR有很多方法来对模型正则化。比起NB的条件独立性假设,LR不需要考虑特征是否是相关的。与决策树与支持向量机(SVM)不同,LR有很好的概率解释,且很容易利用新的训练数据来更新模型(使用在线梯度下降法)。如果你想要一些概率信息(如,为了更容易的调整分类阈值,得到分类的不确定性,得到置信区间),或者希望将来有更多数据时能方便的更新改进模型,LR是值得使用的。
决策树(Decision Tree, DT)
DT容易理解与解释(对某些人而言——不确定我是否也在他们其中)。DT是非参数的,所以你不需要担心异常点(或离群点)和数据是否线性可分的问题(例如,DT可以轻松的处理这种情况:属于A类的样本的特征x取值往往非常小或者非常大,而属于B类的样本的特征x取值在中间范围)。DT的主要缺点是容易过拟合,这也正是随机森林(Random Forest, 或者Boosted树)等集成学习算法被提出来的原因。此外,RF在很多分类问题中经常表现得最好(我个人相信一般比SVM稍好),且速度快可扩展,也不像SVM那样需要调整大量的参数,所以最近RF是一个非常流行的算法。
支持向量机(Support Vector Machine, SVM)
很高的分类正确率,对过拟合有很好的理论保证,选取合适的核函数,面对特征线性不可分的问题也可以表现得很好。SVM在维数通常很高的文本分类中非常的流行。由于较大的内存需求和繁琐的调参,我认为RF已经开始威胁其地位了。
总结
回到LR与DT的问题(我更倾向是LR与RF的问题),做个简单的总结:两种方法都很快且可扩展。在正确率方面,RF比LR更优。但是LR可以在线更新且提供有用的概率信息。鉴于你在Square(不确定推断科学家是什么,应该不是有趣的化身),可能从事欺诈检测:如果你想快速的调整阈值来改变假阳性率与假阴性率,分类结果中包含概率信息将很有帮助。无论你选择什么算法,如果你的各类样本数量是不均衡的(在欺诈检测中经常发生),你需要重新采样各类数据或者调整你的误差度量方法来使各类更均衡。
但是
更好的数据往往比更好的算法更重要,提取好的特征也需要很大的功夫。如果你的数据集非常大,那么分类算法的选择可能对最后的分类性能影响并不大(所以可以根据运行速度或者易用性来选择)。


上面都复制于简书
模型选择
4#
章鱼小丸子  4级常客 | 2018-10-17 22:18:39 发帖IP地址来自
算法是解决方法的数学抽象,一个算法诞生于某个应用场景下,但也可以用在其他应用场景。按场景来分不太合理。


比如pagerank是用来做网页排序的,有人把它用在文本处理上,发现效果奇好,于是发明了textrank。再比如word2vec是自然语言处理的方法,但有人用它来处理交互数据给微博用户做推荐。
3#
陈光  3级会员 | 2018-10-17 22:18:38 发帖IP地址来自
大神@xyzh已经答得很好了,而且我非常赞同他提到的"没有最好的分类器,只有最合适的分类器"这句话。


结合我自己在学习《机器学习实战》这本书的例子,用常见的数据来阐述各大机器学习算法的应用场景,作为大神答案的补充。回答中的不足之处,还请包含。


[h1]K 近邻算法[/h1]K 近邻(k Nearest Neighbor,kNN)是机器学习领域非常有效且易于掌握的算法。
以电影分类为例,目前有6个电影,每个电影有两个维度的信息(打斗镜头和接吻镜头)和一个标签(电影类型),现在有一个新的电影《复仇者联盟III》,在知道打斗镜头和接吻镜头的情况下,如何判断它的标签(电影类型)?

人类一眼就能够判断出《复仇者联盟III》属于动作片,因为它和其他三个动作片在打斗镜头和接吻镜头上有很大的相似性。


如何让计算机学习这种相似性呢?K 近邻算法是这么干的:
  • 纯数据太过抽象,把它们画出来吧。
以打斗镜头的次数为x轴,以接吻镜头的次数为y轴,将以上7个电影都画在图上。



2. 计算机只能看懂数字,所以就算一算《妇联III》离其他几个电影到底有多近。
图像中的距离很容易计算,即x方向的差值平方加上y方向的差值平方,然后开方得到。下图就是《妇联III》距离每一个电影的距离,然后根据距离对他们进行排序。



3.统计排名前k的电影类型,即可判断出《妇联III》属于哪种电影。
根据前 K 个结果中,哪个电影类型占多数,判定当前电影的归类。当K 近邻算法中的 K = 3 时,根据排位结果,与《妇联III》最近的3个电影均为动作类电影,因此《妇联III》被判定为动作类电影。如果K = 4,从排位上来说动作类电影占3个,爱情类电影占1个,《妇联III》还是被判定为动作类电影。


以上即为K 近邻算法思路。现实世界中的很多分类问题都可以使用K 近邻算法,比如根据糖分、维生素等含量的高低对未知水果进行分类。


K 近邻的计算过程可以看出,K 近邻算法虽然原理简单,但在实际应用时必须将所有数据进行存储,而且需要对数据集中的每个数据进行距离计算,非常消耗计算资源。所以k-近邻算法一般不会应用于复杂的分类问题。


K 近邻
优点:精度高、不太受到异常离散值的影响
缺点:需要大量存储空间、计算复杂度高
适用场景:少量数据和大量低维数据


[h1]决策树[/h1]决策树算法的思路与人类的思考过程十分相似。而且我们经常在编程中使用的if else语句其实就是决策树的一个子决策过程。


如下图所示,为一个假想的邮件分类决策树,其中方形框表示一个判断过程,椭圆形框表示一个判断结果。

决策时首先根据发送邮件的域名决定这封邮件是否在我的订阅列表中,如果不在,则归类为非订阅邮件;否则再根据是否包含“无人驾驶”关键词,将邮件分为需要查看的邮件和无需处理的垃圾邮件。


这个过程有两个决策条件,分别是域名是否在订阅列表中、是否包含“无人驾驶”关键词。这两个决策条件关联的数据特征分别是邮件的域名和邮件的关键词。

刚才提到邮件分类的粒子仅仅是一个简单且易于构建的决策树。而面对复杂的数据集时,需要解决的第一个问题就是,数据集中哪一个特征在划分数据分类时起决定性的作用


以如下海洋生物数据为例:

数据出处:《机器学习实战》


首先将数据转换成及其可以理解的代码:
dataSet = [ [1, 1, 'yes'] [1, 1, 'yes'] [1, 0, 'no'] [0, 1, 'no'] [0, 1, 'no'] ]
labels = [ 'no surfacing', 'flippers' ]


观察以上数据,并不能立刻判断出是“不浮出水面是否可以生存”还是“是否有脚蹼”对“属于鱼类”的判断影响更大。所以选择第一个特征时遇到了困难。


信息论之父——克劳德·艾尔伍德·香农为量化度量信息提供的解决方案——信息熵。信息熵本身是一个比较复杂的概念,如果拿公式解释又需要花很多精力去理解。


信息熵反映了数据的复杂度,熵越高,混合的数据也越多。如果增加了某个特征导致熵值增加很大,那么这个特征的“影响力”就很大。


首先计算整组数据的信息熵E0,再计算去掉某个特征时,数据的信息熵Ei。得到各个特征导致的信息熵减少量,减少量最多的即为最为重要的特征。因此这个特征就是决策树的最顶层。继续重复之前的操作,找到决策树的第二层的特征。


根据信息熵的原理,可以知道,鱼类分类的决策树种,第一层分类特征为"no surfacing",第二层分类特征为"flippers"。因此决策树模型如下:

由此可见,决策树模型建立后,不再需要像K 近邻一样对整个数据集进行遍历计算,仅需完成特征的判断,即可实现分类。


决策树能够根据数据的各个特征,高效地对数据进行分类。一个好的决策树给出的结果往往可以匹敌在当前领域具有几十年工作经验的人类专家。


决策树的优缺点和适用场景
优点:计算复杂度不高,输出结果易于理解。
缺点:可能会产生过度匹配问题(输出的结果完全满足当前数据,但不具备普遍推广的价值)
适用场景:多维特征数据


持续更新~
备稿+绘图中...


你这么好看,一定很会点赞~
2#
iamsile  3级会员 | 2018-10-17 22:18:37 发帖IP地址来自
具体问题具体分析。。。。。。
1#
景略集智  4级常客 | 2018-10-17 22:18:35 发帖IP地址来自



机器学习中的这些算法可以应用在众多领域,只是平时大家不能直观感受到而已。
今天就详细说说决策树金融投资和商业活动中的应用。


决策树算法在很多大学的金融学、心理学及决策分析课程中都占有重要地位,但是可能很多商科学生并不明白为何要学习决策树。实际上决策树在金融业务和经济预测分析中起到不可或缺的作用,而且在投资理论及实践中也至关重要。


[h1]决策树基本原理[/h1]

决策树(Decision Tree)是在已知各种情况发生概率的基础上,通过构成决策树来求取净现值的期望值大于等于零的概率,评价项目风险,判断其可行性的决策分析方法,是直观运用概率分析的一种图解法。由于这种决策分支画成图形很像一棵树的枝干,故称决策树。在机器学习中,决策树是一个预测模型,他代表的是对象属性与对象值之间的一种映射关系。


我们举个例子解释一下决策树的基本原理:
某人必须做出一项决定,比如要不要启动一个投资项目,或者在两家竞争企业中选哪一个,这种情况可以用决策节点描述。要做的决定基于采取一系列行动后的预期结果,这里的结果就是如“预期收益增长(下降)500万”这种情况,然后以末端节点表示出来。

不过,由于末端节点表示的事件在未来才会确定,那么它们当前发生的状况是不确定的。因此,会用机会节点表明某个具体末端节点实现的概率。



决策树示例

决策树分析包括预测未来结果和分配这些结果发生的概率。在做出某项决策时,我们会面临很多取决于先验事件的潜在结果,它们会随着复杂的决策而不断变化,因此就要用到贝叶斯概率模型来确定先验概率。根据一定的经济状况分配概率和预测未来净收益/损失是一项非常有挑战性的任务,不过本文不再展开详细讨论。我们重点看一下决策树在现实金融领域的一些基本应用。


[h1]决策树分析用于二项式期权定价[/h1]

决策树分析在金融领域一个非常非常基础的应用就是期权定价。二项式期权定价模型用离散概率确定某个期权在有效期内的值。最基本的二项式模型会根据计算出的概率,假定标的资产在欧式期权到期日时要么价格上涨要么下跌。根据这些预计的收益值,就可以很容易的确定期权价格。





然而,如果是美式期权,情况就复杂的多了。在美式期权中,在到期日前的任意时间点都可以行权。这时二项式决策树就要考虑多种路径下标的资产随着时间推移会是怎样的价格。


例如,资产价格可能是先涨,再跌,继续跌,再上涨,接着上涨,或者其它类似的多种涨跌混合的情况。在每个时间点,期权的未来价格都由标的证券所选的价格路径所决定。而且,最终价格也不像欧式期权那样仅限于两个终价。随着二项式决策树的节点数量增加,最终模型会聚合成斯克尔斯期权定价模型。


虽然在给期权定价时,斯克尔斯期权定价模型比决策树提供更容易的选择,但决策树使用“无限”节点数时可以创建二项式期权定价模型,而且常常能提供更为准确的信息,特别是在百慕大期权和分红股票方面。


[h1]决策树用于实物期权分析[/h1]

估值实物期权比如扩张期权和放弃期权,必须使用决策树,因为这些期权的价值无法通过斯克尔斯期权定价模型确定。实物期权代表了公司行权的实际决策——扩大或收缩期权规模,这些都和公司的实际项目紧密相关。


例如,某石油天然气公司可以在当前购买一块油气田,如果在该油气田钻探成功,它就可以以低廉的价格购买更多油气田;如果钻探失败,它就无法行权,该期权就会无价值的自动终止。由于实物期权能够企业项目提供更为重要的价值,它们在企业资本预算决策中占据不可或缺的地位。


是否购买期权必须要在项目启动前做出决定,然而知道确定了成功和失败的概率,决策树可以帮我们阐明潜在资本预算决策的预期值。许多公司常常接受一些当前看似为负净现值的项目,但把实物期权值考虑在内后,净现值实际上会变为正。决策树分析的首要优点就是它能对某项决策的可能情况作出全面的概述。


[h1]决策树用于竞争项目[/h1]

和期权定价类似,决策树同样适用于市场和商业发展。这些案例中的决策树整体设置方式和实物期权定价相同。基本上,公司会根据产品规模、市场业务、国内国际市场、员工数量、企业并购等因素不断做出经营决策。将所有可能的情况组织在一个决策树中,能让我们系统地同时评估这些想法。





这并非建议每逢做出企业的战略决策时就靠决策树就好了,无需再咨询企业管理专家。不过,决策树能为我们制定理想的问题解决方案提供整体的思维框架,帮企业管理人员意识到做出决策会带来正面还是负面的结果。


例如,借助决策树考虑是否雇佣更多员工时,企业管理人员可以明了雇佣员工对企业经营带来的经济效益。本质上来说,我们可以用决策树用作一种敏感度分析,衡量各种不同的不确定变量带来的影响。


[h1]二叉树模型用于利率定价[/h1]

虽然二叉树模型并非严格的决策树,但它的构造和决策树很相似,也有同样的用途——明确不确定变量和波动因素的影响。利率的波动对固定收益证券和利率衍生品有着非常重要的影响。二叉树模型让投资人能够根据市场预示和对未来利率的考虑准确估值债券。


因为斯克尔斯模型不适用于估值债券和基于利率的期权,二叉树模型就成了比较理想的选择。决策树常常用于企业项目,它可以考虑多种可能的经济情况。同样地,决策树也能通过分析不同利率环境的影响,确定债券价值、利率互换、利率上限下限和投资工具等。





[h1]决策树和企业分析[/h1]决策树不仅可以作为一种有用的投资工具,也能让人们和企业挖掘可能对决策产生实质影响的多种因素。


举个例子,一家企业计划投入数百万用作“超级碗”商业赞助活动,想确定该市场活动会带来哪些结果。能够影响这笔投入最终是成功还是失败的因素有很多个,比如:商业活动吸引力,经济形势,产品的实际品质以及竞争对手的广告等。


用决策树可以明确这些变量的影响,待分配相应的概率后,企业就可以做出合理的决策,决定是否赞助。


[h1]结语[/h1]从上面的这些例子中我们可以看出决策树在金融投资和商业活动中有着重要作用。随着重要变量越来越多,决策树也会越来越复杂。在投资分析及管理决策过程中,决策树都是一种好用实用的决策工具。http://weixin.qq.com/r/80QiOi3EDnBxrWlZ9xHh (二维码自动识别)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:
帖子:24326
精华:1
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP