作者 | Michael Zhang 麦教授
一个工作玩耍两不误(work hard, play harder)的教授
香港中文大学商学院教授
超量子量化私募基金创始人

麻省理工学院博士

清华大学文学学士、工学学士、管理学硕士
刚刚接触数据科学或机器学习的同学,可能会遇到这样的问题——怎样根据具体问题选择最合适的算法?这篇文章就来讲这个问题。
首先,应该区分4种类型的机器学习。
  • 有监督的学习(Supervised learning)
  • 无监督的学习(Unsupervised learning)
  • 半监督学习(Semi-supervised learning)
  • 强化学习(Reinforcement learning)
有监督学习
有监督学习是指从标签化的训练数据中推断出一个函数的机器学习任务。通过对标签化的训练集进行拟合,希望找到最理想的模型参数来预测其他对象(测试集)上的未知标签。如果标签是一个实数,我们把这个任务称为回归。如果标签来自有限的数值,而这些数值是无序的,那么它就是分类。
无监督学习
在无监督学习中,往往对所观察的对象缺乏足够的先验知识和信息,训练集是没有标签化的。在这个过程中有可能观察到各组对象之间的一些相似性,并将它们纳入适当的聚类中。有些对象可能与所有的聚类有巨大的差异,这样就认为这些对象是反常的。

半监督学习
半监督学习任务包括前面描述的两个问题:它们使用有标签和无标签的数据,是有监督学习和无监督学习相结合的一种学习方法。该方法能够显著提高准确性,因为可以在训练集中使用未标记的数据,并使用少量的标记数据。
强化学习
强化学习与前面的任何任务都不一样,因为这里没有标记或未标记的数据集。强化学习是机器学习的一个领域,涉及到智能体如何在某些环境中采取行动,以最大限度地提高某些累积奖励的问题。
这些是常用的有监督和无监督的机器学习算法:
  • 线性回归 Linear regression
  • 逻辑回归 Logistic regression
  • 决策树 Decision tree
  • 朴素贝叶斯 Naive Bayes
  • 支持向量机 Support vector machine
  • 随机森林 Random forest
  • AdaBoost
  • 梯度提升树 Gradient-boosting trees
  • 简单神经网络 Simple neural network
  • 层次聚类 Hierarchical clustering
  • 高斯混合模型 Gaussian mixture model
  • 卷积神经网络 Convolutional neural network
  • 循环神经网络 Recurrent neural network
  • 推荐系统 Recommender system
在遇到具体的问题时,有些人会去查看一些机器学习算法的文章,文章里可能会有几十种算法的详细描述,或是一些算法比较笼统的使用场景介绍,然而这样并没有降低选择算法的难度。
为了不让所学的东西与实际应用脱轨,下面就根据一些常见的问题来了解最流行的算法及其在现实生活中的应用。由于每个问题展开都有太多的内容,这里就只给出一个「问题-算法」对照清单。看完之后并试着用相应的算法解决每一个问题,一定可以学到很多东西。
问题1:预测住房价格。
解决该问题的算法:随机森林(Random forest)、梯度提升树(Gradient-boosting trees)
问题2:探索客户的人口统计学数据以确定模式。
解决该问题的算法:聚类 Clustering (elbow method)
问题3:预测贷款偿还情况。
解决该问题的算法:不平衡数据集的分类算法
问题4:根据皮损的特征(大小、形状、颜色等)预测其是良性还是恶性。
解决该问题的算法:卷积神经网络 Convolutional Neural Network(U-Net是最适合做分割的)。
问题5 :预测客户流失率。
解决该问题的算法:线性判别分析(LDA)或二次判别分析(QDA)。(这种算法特别受欢迎,因为它既是分类器又是降维技术)
问题6:为招聘新员工提供一个决策框架。
解决该问题的算法:决策树(Decision Tree)在这方面是专业的
问题7:理解并预测使产品最有可能被购买的产品属性。
解决该问题的算法:逻辑回归(Logistic Regression)、决策树(Decision Tree)
问题8:分析情绪,以评估市场上的产品认知度。
解决该问题的算法:朴素贝叶斯(Naive Bayes)——支持向量机(NBSVM)
问题9:创建分类系统以过滤垃圾邮件。
解决该问题的算法:分类算法——Naive Bayes、SVM、多层感知器神经网络(MLPNN)和径向基函数神经网络(RBFNN)
问题10:预测某人点击在线广告的可能性有多大。
解决该问题的算法:Logistic回归、SVM
问题11:检测信用卡交易中的欺诈性活动。
解决该问题的算法:Adaboost、孤立森林(Isolation Forest)、随机森林
问题12:根据汽车的特点预测其价格。
解决该问题的算法:梯度提升树在这方面做得最好
问题13:预测一个病人加入医疗保健计划的概率。
解决该问题的算法:简单神经网络(Simple neural networks)
问题14:预测注册用户是否愿意为某一产品支付特定价格。
解决该问题的算法:神经网络(Neural Networks)
问题15 :根据不同的特征(如年龄组)将客户划分为不同的群体。
解决该问题的算法:K-means聚类
问题16:从语音数据中提取特征,用于语音识别。
解决该问题的算法:高斯混合模型(Gaussian mixture model)
问题17:对多个物体进行跟踪,其中混合成分的数量及其平均值预测目标在视频序列中每一帧的位置。
解决该问题的算法:高斯混合模型
问题18:组织来自一组微阵列实验的基因和样本,以揭示生物学上的有趣模式。
解决该问题的算法:层次聚类算法(Hierarchical clustering algorithms)
问题19:根据具有类似属性的其他客户的偏好,推荐客户应该观看什么电影。
解决该问题的算法:推荐系统(Recommender system)
问题20:根据读者正在阅读的文章,推荐其可能想要阅读的新闻文章。
解决该问题的机器学习算法:推荐系统
问题21:优化自动驾驶汽车的驾驶行为。
解决该问题的算法:强化学习(Reinforcement Learning)
问题22:从医疗扫描中诊断出健康疾病。
解决该问题的算法:卷积神经网络
问题23:在不同的需求周期中平衡电网的负荷。
解决该问题的算法:强化学习
问题24:处理时间序列数据或序列(例如,音频记录或文本)时。
解决该问题的算法:循环神经网络(Recurrent neural network)、LSTM
问题25:语言翻译。
解决该问题的算法:循环神经网络
问题26:为图像生成标题。
解决该问题的算法:循环神经网络
问题27:使聊天机器人能够解决更细微的客户需求和询问。
解决该问题的算法:循环神经网络
另外,还可以参考下面这张cheat sheet。
往期精选
继续阅读
阅读原文