常见机器学习算法
机器学习有众多经典算法,各有特点和适用场景。理解这些算法的原理、优缺点,是成为机器学习工程师的基础。
学习难度:入门·阅读时间:约14分钟
线性模型
逻辑回归
虽然叫"回归",实际是分类算法:
- 使用Sigmoid函数将输出映射到0-1
- 输出可解释为概率
- 简单高效,适合二分类
- 可扩展到多分类(Softmax回归)
优点与局限
| 优点 | 局限 |
|---|---|
| 简单快速 | 只能处理线性关系 |
| 可解释性强 | 对特征工程依赖大 |
| 输出概率 | 对异常值敏感 |
决策树
基本原理
通过一系列问题进行决策:
- 每个节点是一个特征判断
- 分支是判断结果
- 叶子节点是预测结果
分裂准则
- 信息增益:ID3算法使用
- 信息增益率:C4.5算法使用
- 基尼系数:CART算法使用
优点与局限
- ✅ 直观易懂,可解释性强
- ✅ 不需要特征缩放
- ✅ 可以处理混合类型数据
- ❌ 容易过拟合
- ❌ 对数据变化敏感(不稳定)
集成方法
随机森林
多棵决策树的投票:
- Bagging思想:每棵树用不同的数据子集
- 特征随机:每次分裂只考虑部分特征
- 减少过拟合,提高稳定性
- 适合并行计算
梯度提升树(GBDT)
串行改进的方法:
- 每棵树拟合前面树的残差
- 逐步提升模型性能
- 代表:XGBoost、LightGBM、CatBoost
对比
| 特性 | 随机森林 | GBDT |
|---|---|---|
| 训练方式 | 并行 | 串行 |
| 偏差/方差 | 降低方差 | 降低偏差 |
| 过拟合风险 | 较低 | 需要控制 |
| 参数调节 | 较少 | 较多 |
XGBoost
GBDT的优化版本:
- 加入正则化项防止过拟合
- 支持并行计算
- 处理缺失值
- Kaggle竞赛中广泛使用
支持向量机
基本思想
找到最优分类超平面:
- 最大化分类间隔
- 支持向量是离超平面最近的点
- 只由支持向量决定分类边界
核函数
处理非线性可分问题:
- 线性核:适合线性可分数据
- RBF核:最常用,处理非线性
- 多项式核:适合特定结构
特点
- ✅ 小样本表现好
- ✅ 高维数据有效
- ❌ 大数据集训练慢
- ❌ 核函数选择需要经验
K近邻
基本思想
物以类聚:找最近的K个邻居投票:
- 计算待预测点与所有训练点的距离
- 选择距离最近的K个点
- 分类:多数投票;回归:取平均
关键参数
- K值:太小容易过拟合,太大欠拟合
- 距离度量:欧氏距离、曼哈顿距离等
特点
- ✅ 简单直观,无需训练
- ✅ 可以处理多分类
- ❌ 预测慢(需要计算所有距离)
- ❌ 对特征缩放敏感
朴素贝叶斯
基本原理
基于贝叶斯定理和特征独立假设:
P(类别|特征) ∝ P(特征|类别) × P(类别)
常见变体
- 高斯朴素贝叶斯:连续特征
- 多项式朴素贝叶斯:文本分类
- 伯努利朴素贝叶斯:二值特征
特点
- ✅ 训练和预测都非常快
- ✅ 适合文本分类
- ✅ 对小数据集友好
- ❌ 特征独立假设往往不成立