在「Azure 「机器学习」初体验」一文中,我们了解到如何透过 Azure ML 工具,很快的完成一个实验 (Experiment)。基本上是遵循以下流程:
上图的红框 (apply Algorithms) 则是本文所要介绍的重点。也就是,我该在实验中选择哪一种演算法,来解决问题呢?
Azure ML 将内建的演算法分为叁种类型:Classification (分类), Regression (迴归分析) 以及 Clustering (分群):
1. Classification (分类): 如字义所见,即是透过机器学习,预测结果是属于哪一种类别的方法。最常见的情境就是二分法了,亦即可以回答 True/False 或 Positive/Negative 的问题,比如:
-
现有的中x电信客户,会不会转去远x电信呢?
-
客户有没有潜在升级或加购产品的商机呢?
以下是 Azure ML 所内建提供的 Classification 演算法 (竟然有类神经网路啊!! 回想到以前在交大修这门课时的熬夜岁月 ><…):
几种不同「二分法 (Two-Class)」 Classification 演算法的示意图:
(图片来源: http://tjo-en.hatenablog.com/entry/2014/01/06/234155)
2. Regression (迴归分析): 与前者 Classification 方法的不同之处,在于 Regression 演算法通常是预测出一个「数值」。比如:明天的台北股市收盘价是多少? 如何根据所在城市、坪数、学区等来预测房价? 都是适合使用 Regression 演算法的问题。
Azure ML 提供的 Regression 演算法包括:
例如我想以汽车马力 (horsepower) 来预测耗油量 (miles per gallon),以下即是透过 Linear Regression 演算法的预测示意图:
(图片来源: “Predictive Analytics with Microsoft Azure Machine Learning: Build and Deploy Actionable Solutions in Minutes”)
3. Clustering (分群): 通常是用来处理「没有正确答案」的问题,这种问题该怎么办呢? Clustering 能将有相同特徵者丛集在一块。比如:Facebook 辨别使用者属于哪些不同的群组 (运动爱好者、通勤族、萝莉控…等),以满足广告投放商的需求。
以下是塬始资料,及以 K-means Clustering 分群之后的示意图:
(图片来源: http://pypr.sourceforge.net/kmeans.html)
小结:
所以回到最初的问题,当我们在设计 Machine Learning 实验时,要如何决定使用哪种演算法呢?
-
如果您的问题能够以 Yes/No 来回答 => Classification (分类)
-
如果您期望的解答是一个数值的话 => Regression (迴归分析)
-
如果您想将具相同特性的资料群集分类 => Clustering (分群)
但请注意,以上仅是大致的判断法则,仍请各位能徵询资料科学家的专业意见,选择最合适的演算法。
另外,有注意到文章标题中的 algorithms 用了复数吗? 是的,在实际的应用模型中,多种演算法被合併使用是很常见的 (如: Amazon 的情绪分析模型)。
练习题:
最后各位要不要猜猜看,以下这 3 种预测或应用,主要是用了什么演算法呢?
1. 如左图,照张狗的照片即可辨别出,这隻狗是属于哪个品种。 (罗得西亚背嵴犭- 影片连结: https://www.youtube.com/watch?v=zOPIvC0MlA4#t=45)
2. 2014 年的第 86 届奥斯卡金像奖共 24 奖项中,在颁奖典礼前针对入围者给出一个得奖的机率,最后成功预测了 21 个!
3. 苏格兰是否要脱离英国的独立公投,是 2014 年属一属二的国际新闻,在投票前预测结果。
註:本文介绍的演算法分类中,前两类 (Classification & Regression) 都是属于「监督式学习」(Supervised Learning);Clustering 则是属于「非监督式学习」(Unsupervised Learning) 的範畴。
再註:Azure ML 基本上是根据学习的方法 (如监督式学习/非监督式学习),以及可被应用的方式来作分类。故各位可以注意到,如决策树 (Decision Tree) 或类神经网路 (Neural Network) 等,可分别被应用到 Classification 或是 Regression 的类别中,以解决不同类型的问题。