本文旨在务实、简洁地盘点当前主流的机器学习算法,并依据实际使用经验,详细讨论其优缺点。常见的算法分类方式(如生成/判别、监督/非监督)虽有其理论价值,但从实践角度看,更实用的分类方式是根据任务目标来划分。
没有免费的午餐
机器学习领域的一个基本定理是“没有免费的午餐”。这意味着没有一种算法能完美解决所有问题,尤其是在监督学习(如预测建模)中。算法的选择取决于数据集的规模、结构以及具体问题。
机器学习的主要任务
我们将首先讨论最常见的三大机器学习任务:回归、分类、聚类,以及两大降维任务:特征选取与特征提取。
1. 回归
回归用于预测连续型数值变量,如房价、股价或学生成绩。其特点是训练数据带有数值型标签。
1.1 (正则化)线性回归
线性回归是回归任务中最常用的算法,通过一个超平面(如直线)来拟合数据。正则化形式(LASSO、Ridge、弹性网络)可避免过拟合。
优点:易于理解和解释,可通过正则化防止过拟合,模型易于更新。
缺点:难以处理非线性关系,识别复杂模式不够灵活。
1.2 回归树(集成方法)
回归树(决策树)通过重复分割数据来学习非线性关系。集成方法(如随机森林、梯度提升树)结合多棵树的预测,通常表现优异。
优点:能学习非线性关系,对异常值稳健,集成方法在实践中常胜出。
缺点:单棵树易过拟合,但集成方法可缓解此问题。
1.3 深度学习
深度学习使用多层神经网络学习极端复杂的模式。它在图像、音频、文本等领域表现卓越。
优点:在特定领域(如计算机视觉)是最先进技术,能自动学习特征,减少对特征工程的依赖。
缺点:需要大量数据训练,计算密集,调参复杂,在经典问题上不一定优于集成方法。
1.4 最近邻算法(荣誉奖)
最近邻算法基于实例,通过寻找最相似的训练样本来预测。它是内存密集型,处理高维数据效果不佳,实践中通常选择回归或树集成方法。
2. 分类
分类用于预测类别变量,如员工流失、邮件过滤、金融欺诈等。许多回归算法都有对应的分类形式。
2.1 (正则化)逻辑回归
逻辑回归是线性回归的分类版本,通过逻辑函数将预测映射到0-1区间作为概率。
优点:输出有概率解释,可通过正则化避免过拟合,模型易于更新。
缺点:难以处理多元或非线性决策边界。
2.2 分类树(集成方法)
分类树(CART)与回归树类似,集成方法(随机森林、梯度提升树)同样表现优异。
优点:对异常数据稳健,可扩展,能自然建模非线性决策边界。
缺点:单棵树易过拟合,集成方法可缓解。
2.3 深度学习
深度学习同样适用于分类任务,尤其在图像、音频、文本数据上。
优点:在特定数据类型上表现卓越。
缺点:需要大量数据,非通用目的算法。
2.4 支持向量机
支持向量机使用核技巧将非线性问题转为线性问题,寻找最大化间隔的决策边界。
优点:能建模非线性决策边界,有多种核函数可选,对过拟合稳健。
缺点:内存密集型,选择核函数需要技巧,不适用于大数据集,实践中随机森林常更优。
2.5 朴素贝叶斯
朴素贝叶斯基于条件概率和计数,假设特征相互独立。
优点:实现简单,易于随数据更新,实践中常表现良好。
缺点:独立性假设通常不成立,易被更复杂的算法取代。
3. 聚类
聚类是无监督学习,用于发现数据内部的自然族群(集群),如用户画像、物品分组。
3.1 K均值
K均值基于几何距离聚类,结果倾向于球状集群。
优点:快速、简单、灵活,适合初学者。
缺点:需预先指定K值(集群数),对非球状集群效果差。
3.2 仿射传播
仿射传播基于图形距离确定集群,倾向于更小且大小不等的集群。
优点:无需指定集群数。
缺点:训练慢、内存消耗大,难以扩展,同样假设球状集群。
3.3 层次聚类
层次聚类从每个点开始,逐步合并集群,形成层次结构。
优点:不假定球状集群,易于扩展到大数据集。
缺点:仍需选择最终保留的集群数(层次)。
3.4 DBSCAN
DBSCAN基于密度聚类,将密集区域组成集群,HDBSCAN允许密度可变。
优点:不假定球状集群,可扩展,能处理噪声点。
缺点:需调整定义密度的超参数,对此敏感。
维度灾难与降维
当特征数量远大于样本数量时,模型训练变得困难,即“维度灾难”。降维方法包括特征选取和特征提取。
4. 特征选取
特征选取是从原始特征集中筛选子集,去除不相关或冗余特征。
4.1 方差阈值
移除方差小于阈值的特征(变化小的特征)。
优点:直觉可靠,是相对安全的降维方式。
缺点:若问题无需降维则无效,需手动设置阈值。
4.2 相关性阈值
移除高度相关的特征(提供冗余信息)。
优点:可提升模型性能(速度、准确度、稳健性)。
缺点:需手动设置阈值,设置过低可能丢失有用信息。
4.3 遗传算法
受进化论启发,用于监督式特征选取。
优点:在高维数据且穷举搜索不可行时有效,适合需保留原始特征的场景。
缺点:实施复杂,多数情况下非必要,PCA或内置特征选取的算法更高效。
4.4 逐步搜索(荣誉奖)
通过前向或反向搜索选择特征。因其是贪心算法且性能常不及正则化等方法,不推荐使用。
5. 特征提取
特征提取是构造全新的、更小的特征集,保留大部分有用信息。
5.1 主成分分析
PCA构造原始特征的正交线性组合,按方差大小排列主成分。
优点:多用途、效果好、部署快速,有多种变体。
缺点:新特征不可解释,需手动设置方差阈值。
5.2 线性判别分析
LDA是监督方法,构造线性组合以最大化类别间分离度。
优点:监督学习可能提升性能,有变体可用。
缺点:新特征不可解释,需手动设置特征数,需要已标记数据。
5.3 自编码机
自编码机是一种神经网络,用于学习数据的压缩表示。
优点:对图像、语音等数据表现好。
缺点:需要大量数据训练,非通用降维算法。
小结与建议
- 勤于实践:掌握算法需要不断在数据集上练习。
- 打好基础:理解本文所述核心算法是运用更复杂变体的基石。
- 数据至上:好的数据探索、清洗和特征工程往往比选择复杂算法更能提升结果。