常见机器学习算法

机器学习有众多经典算法,各有特点和适用场景。理解这些算法的原理、优缺点,是成为机器学习工程师的基础。

学习难度:入门·阅读时间:约14分钟

线性模型

逻辑回归

虽然叫"回归",实际是分类算法:

  • 使用Sigmoid函数将输出映射到0-1
  • 输出可解释为概率
  • 简单高效,适合二分类
  • 可扩展到多分类(Softmax回归)

优点与局限

优点局限
简单快速只能处理线性关系
可解释性强对特征工程依赖大
输出概率对异常值敏感

决策树

基本原理

通过一系列问题进行决策:

  • 每个节点是一个特征判断
  • 分支是判断结果
  • 叶子节点是预测结果

分裂准则

  • 信息增益:ID3算法使用
  • 信息增益率:C4.5算法使用
  • 基尼系数:CART算法使用

优点与局限

  • ✅ 直观易懂,可解释性强
  • ✅ 不需要特征缩放
  • ✅ 可以处理混合类型数据
  • ❌ 容易过拟合
  • ❌ 对数据变化敏感(不稳定)

集成方法

随机森林

多棵决策树的投票:

  • Bagging思想:每棵树用不同的数据子集
  • 特征随机:每次分裂只考虑部分特征
  • 减少过拟合,提高稳定性
  • 适合并行计算

梯度提升树(GBDT)

串行改进的方法:

  • 每棵树拟合前面树的残差
  • 逐步提升模型性能
  • 代表:XGBoost、LightGBM、CatBoost

对比

特性随机森林GBDT
训练方式并行串行
偏差/方差降低方差降低偏差
过拟合风险较低需要控制
参数调节较少较多

XGBoost

GBDT的优化版本:

  • 加入正则化项防止过拟合
  • 支持并行计算
  • 处理缺失值
  • Kaggle竞赛中广泛使用

支持向量机

基本思想

找到最优分类超平面:

  • 最大化分类间隔
  • 支持向量是离超平面最近的点
  • 只由支持向量决定分类边界

核函数

处理非线性可分问题:

  • 线性核:适合线性可分数据
  • RBF核:最常用,处理非线性
  • 多项式核:适合特定结构

特点

  • ✅ 小样本表现好
  • ✅ 高维数据有效
  • ❌ 大数据集训练慢
  • ❌ 核函数选择需要经验

K近邻

基本思想

物以类聚:找最近的K个邻居投票:

  1. 计算待预测点与所有训练点的距离
  2. 选择距离最近的K个点
  3. 分类:多数投票;回归:取平均

关键参数

  • K值:太小容易过拟合,太大欠拟合
  • 距离度量:欧氏距离、曼哈顿距离等

特点

  • ✅ 简单直观,无需训练
  • ✅ 可以处理多分类
  • ❌ 预测慢(需要计算所有距离)
  • ❌ 对特征缩放敏感

朴素贝叶斯

基本原理

基于贝叶斯定理和特征独立假设:

P(类别|特征) ∝ P(特征|类别) × P(类别)

常见变体

  • 高斯朴素贝叶斯:连续特征
  • 多项式朴素贝叶斯:文本分类
  • 伯努利朴素贝叶斯:二值特征

特点

  • ✅ 训练和预测都非常快
  • ✅ 适合文本分类
  • ✅ 对小数据集友好
  • ❌ 特征独立假设往往不成立
----