(注:博客属个人复习笔记,不会介绍基础概念,仅记录个人遗忘的部分知识点)

机器学习 概述

  • “机器学习是对能通过经验自动改进的计算机算法的研究”
  • “机器学习是用数据或以往的经验,以此优化计算机程序的性能标准”
  • 机器学习和深度学习的最大区别在神经网络,深度学习使用神经网络去提取事物的深层或者说是隐性的一些特征

常见的模型指标

  • 正确率 —— 提取出的正确信息条数 / 提取出的信息条数
  • 召回率 —— 提取出的正确信息条数 / 样本中的信息条数
  • F 值 —— 正确率 * 召回率 * 2 / (正确率 + 召回率)(F值即为正确率和召回率的调和平均值)

特征工程 (Feature Engineering)

特征工程是机器学习项目中最关键的环节,直接影响模型性能。好的特征工程可以显著提升模型效果。

特征工程概述

  • 定义:从原始数据中提取、转换、选择对模型有用的特征
  • 重要性:数据和特征决定了机器学习的上限,模型和算法只是逼近这个上限
  • 目标:提高模型性能、降低计算复杂度、增强模型可解释性

特征选择 (Feature Selection)

定义:从M个特征中选择N个最有效特征,降低数据维度,提高算法性能

特征选择方法

  1. Filter方法:基于统计指标筛选

    • 相关系数:皮尔逊相关系数、斯皮尔曼相关系数
    • 卡方检验:检验特征与目标变量的独立性
    • 互信息:衡量特征与目标变量的相互依赖程度
    • 方差分析:选择方差较大的特征
    • F检验:检验特征对目标变量的显著性
  2. Wrapper方法:基于模型性能选择

    • 前向选择:逐步添加特征
    • 后向消除:逐步删除特征
    • **递归特征消除(RFE)**:基于模型权重排序
    • **遗传算法(GA)**:模拟自然选择
    • **模拟退火(SA)**:避免局部最优
  3. Embedded方法:模型内置特征选择

    • **L1正则化(Lasso)**:产生稀疏解,自动特征选择
    • **L2正则化(Ridge)**:缩小特征权重
    • Elastic Net:L1+L2正则化
    • 决策树:基于信息增益/基尼指数
    • 随机森林:基于特征重要性

特征提取 (Feature Extraction)

定义:将原始特征转换为新的特征表示,保留重要信息

降维技术

  1. 主成分分析(PCA)

    • 线性降维,最大化方差
    • 正交变换,消除特征间相关性
    • 应用:图像压缩、数据可视化
  2. 线性判别分析(LDA)

    • 有监督降维,最大化类间距离,最小化类内距离
    • 最多降至(类别数-1)维
    • 应用:人脸识别、文本分类
  3. t-SNE

    • 非线性降维,保持局部结构
    • 适合高维数据可视化
    • 应用:数据探索、聚类可视化
  4. 自编码器(Autoencoder)

    • 神经网络降维,学习非线性映射
    • 编码器压缩,解码器重构
    • 应用:图像压缩、异常检测

特征预处理

数据清洗

  • 异常值检测
    • 3σ原则:超出均值±3倍标准差
    • IQR方法:Q1-1.5×IQR ~ Q3+1.5×IQR
    • 孤立森林:基于异常分数
  • 缺失值处理
    • 删除:样本少时可用
    • 填充:均值、中位数、众数
    • 插值:线性插值、样条插值
    • 预测:用其他特征预测缺失值

数据变换

  1. 标准化/归一化

    • 标准化:(x - μ) / σ,均值为0,标准差为1
    • 归一化:(x - min) / (max - min),缩放到[0,1]
    • 鲁棒缩放:(x - Q2) / (Q3 - Q1),基于分位数
  2. 非线性变换

    • 对数变换:log(x),处理右偏分布
    • 指数变换:exp(x),处理左偏分布
    • Box-Cox变换:λ参数优化,使分布更接近正态
    • 幂变换:x^p,调整分布形状
  3. 离散化

    • 等宽分箱:按数值范围等分
    • 等频分箱:按样本数量等分
    • 聚类分箱:基于聚类结果分箱
    • 决策树分箱:基于目标变量最优分割

编码技术

  1. 类别特征编码

    • One-Hot编码:每个类别一个特征
    • Label编码:类别映射为整数
    • Target编码:用目标变量均值编码
    • Hash编码:减少维度,处理高基数特征
  2. 时间特征处理

    • 周期性编码:sin(2π×t/T)、cos(2π×t/T)
    • 时间窗口特征:滑动平均、滑动标准差
    • 滞后特征:t-1、t-2时刻的值

特征构建

交互特征

  • 多项式特征:x₁²、x₁x₂、x₂²
  • 统计特征:均值、方差、最大值、最小值
  • 比率特征:x₁/x₂、x₁-x₂
  • 组合特征:基于业务逻辑的特征组合

聚合特征

  • 时间聚合:日、周、月、季度统计
  • 空间聚合:地理区域、用户群体统计
  • 序列聚合:滑动窗口、指数平滑

特征监控

特征质量监控

  • 覆盖率:非空值比例
  • 准确率:数据质量评估
  • 稳定性:特征分布变化
  • 相关性:特征间相关性变化

特征漂移检测

  • 统计检验:KS检验、卡方检验
  • 分布距离:KL散度、JS散度
  • 模型性能:特征重要性变化
  • 业务指标:业务KPI变化

特征工程最佳实践

  1. 业务理解优先:基于领域知识构建特征
  2. 数据探索:充分了解数据分布和关系
  3. 迭代优化:特征工程是迭代过程
  4. 验证效果:交叉验证评估特征效果
  5. 文档记录:记录特征含义和构建逻辑
  6. 版本控制:特征工程代码版本管理
  7. 自动化:构建特征工程流水线
  8. 监控告警:实时监控特征质量

常见陷阱

  • 数据泄露:使用未来信息
  • 过拟合:特征过多导致过拟合
  • 维度诅咒:高维空间稀疏性
  • 特征冗余:高度相关特征
  • 分布偏移:训练测试分布不一致

监督学习

  • 有标签

KNN (K-Nearest Neighbor)

  • 核心思想:物以类聚,近邻样本属于同一类别的概率较大
  • 算法步骤
    1. 计算待分类样本与训练集中所有样本的距离
    2. 按距离递增排序,选取前K个最近邻
    3. 统计K个最近邻中各类别的频数
    4. 返回频数最高的类别作为预测结果
  • 距离度量
    • 欧几里得距离:√[(x₁-y₁)² + (x₂-y₂)² + … + (xₙ-yₙ)²]
    • 曼哈顿距离:|x₁-y₁| + |x₂-y₂| + … + |xₙ-yₙ|
    • 闵可夫斯基距离:(∑|xᵢ-yᵢ|ᵖ)^(1/p)
  • K值选择:通常取奇数,避免平票;K太小容易过拟合,K太大容易欠拟合
  • 优缺点
    • 优点:简单易理解,无需训练过程,对异常值不敏感
    • 缺点:计算复杂度高,对内存要求大,需要特征标准化

线性回归 (Linear Regression)

  • 核心思想:用线性函数拟合数据,最小化预测值与真实值的平方差
  • 数学表达:y = w₁x₁ + w₂x₂ + … + wₙxₙ + b
  • 损失函数:均方误差 MSE = (1/n)∑(yᵢ - ŷᵢ)²
  • 求解方法
    • 最小二乘法:w = (X^T X)^(-1) X^T y
    • 梯度下降:w = w - α∇J(w)
  • 评估指标:R²、均方根误差(RMSE)、平均绝对误差(MAE)
  • 假设条件
    • 线性关系
    • 独立性
    • 同方差性
    • 正态分布残差

朴素贝叶斯算法 (Naive Bayes)

  • 核心思想:基于贝叶斯定理,假设特征之间相互独立
  • 贝叶斯定理:P(A|B) = P(B|A) × P(A) / P(B)
  • 分类公式:P(y|x) ∝ P(y) × ∏P(xᵢ|y)
  • 三种模型
    • 高斯朴素贝叶斯:连续特征,假设服从正态分布
    • 多项式朴素贝叶斯:离散特征,文本分类常用
    • 伯努利朴素贝叶斯:二值特征
  • 拉普拉斯平滑:P(xᵢ|y) = (Nᵢ + α) / (N + α×k)
  • 优缺点
    • 优点:训练速度快,对小数据集效果好,处理多分类问题
    • 缺点:特征独立性假设过强,对数据分布敏感

局部加权线性回归 (Locally Weighted Linear Regression)

  • 核心思想:对每个预测点,根据距离赋予不同权重,近邻点权重更大
  • 权重函数:w(i) = exp(-(x^(i) - x)² / (2τ²))
  • 参数τ:带宽参数,控制权重衰减速度
  • 特点:非参数方法,计算复杂度高,需要存储所有训练数据

支持向量机 (Support Vector Machine)

  • 核心思想:寻找最优超平面,最大化两类样本的间隔
  • 数学表达:w^T x + b = 0,其中|w^T x + b| / ||w||为点到超平面的距离
  • 优化目标:min (1/2)||w||²,s.t. yᵢ(w^T xᵢ + b) ≥ 1
  • 核函数
    • 线性核:K(x,y) = x^T y
    • 多项式核:K(x,y) = (γx^T y + r)^d
    • RBF核:K(x,y) = exp(-γ||x-y||²)
    • Sigmoid核:K(x,y) = tanh(γx^T y + r)
  • 软间隔:引入松弛变量ξ,允许部分样本分类错误
  • 优缺点
    • 优点:泛化能力强,适合高维数据,核函数灵活
    • 缺点:对大规模数据训练慢,参数调优复杂

Ridge回归 (岭回归)

  • 核心思想:在线性回归基础上添加L2正则化项,防止过拟合
  • 损失函数:J(w) = ||y - Xw||² + λ||w||²
  • 求解:w = (X^T X + λI)^(-1) X^T y
  • 参数λ:正则化强度,λ越大,模型越简单
  • 特点:处理多重共线性问题,所有特征权重都会缩小但不会为零

决策树 (Decision Tree)

  • 核心思想:通过特征分割构建树形结构,每个节点代表一个特征判断
  • 分割准则
    • 信息增益:IG(D,A) = H(D) - H(D|A)
    • 信息增益比:IGR(D,A) = IG(D,A) / H(A)
    • 基尼指数:Gini(D) = 1 - ∑pᵢ²
  • 停止条件
    • 节点样本数小于阈值
    • 节点深度达到最大值
    • 所有样本属于同一类
  • 剪枝
    • 预剪枝:在生长过程中停止
    • 后剪枝:先生长后剪枝(CART算法)
  • 优缺点
    • 优点:可解释性强,能处理数值和类别特征
    • 缺点:容易过拟合,对数据变化敏感

最小回归系数估计 (Least Absolute Shrinkage and Selection Operator, LASSO)

  • 核心思想:在线性回归基础上添加L1正则化项,产生稀疏解
  • 损失函数:J(w) = ||y - Xw||² + λ||w||₁
  • 特点
    • 自动特征选择,部分特征权重变为零
    • 处理多重共线性
    • 适合高维稀疏数据
  • 求解方法:坐标下降法、最小角回归(LARS)

无监督学习

  • 无标签

K-均值 (K-Means)

  • 核心思想:将数据划分为K个簇,每个簇的中心代表该簇
  • 算法步骤
    1. 随机选择K个初始中心点
    2. 将每个样本分配到最近的中心点
    3. 重新计算每个簇的中心点
    4. 重复步骤2-3直到收敛
  • 目标函数:最小化簇内平方误差 SSE = ∑∑||x - μᵢ||²
  • 初始化方法
    • 随机初始化
    • K-means++:选择距离已选中心点较远的点
  • 优缺点
    • 优点:简单高效,适合大规模数据
    • 缺点:需要预先指定K值,对初始中心敏感,只能发现球形簇

最大期望算法 (Expectation-Maximization, EM)

  • 核心思想:通过迭代优化求解含有隐变量的概率模型参数
  • 算法步骤
    • E步:计算隐变量的期望
    • M步:最大化期望似然函数
  • 应用场景
    • 高斯混合模型(GMM)
    • 隐马尔可夫模型(HMM)
    • 主题模型(LDA)
  • 收敛性:保证收敛到局部最优解

马尔可夫决策过程 (Markov Decision Process, MDP)

  • 核心思想:用五元组(S,A,P,R,γ)描述强化学习问题
    • S:状态空间
    • A:动作空间
    • P:状态转移概率
    • R:奖励函数
    • γ:折扣因子
  • 价值函数:V(s) = E[∑γᵗRₜ₊₁|S₀=s]
  • 策略:π(a|s)表示在状态s下选择动作a的概率
  • 最优策略:π*(s) = argmax Q*(s,a)
  • 求解方法
    • 值迭代:V(s) = max∑P(s’|s,a)[R(s,a,s’) + γV(s’)]
    • 策略迭代:交替进行策略评估和策略改进
  • 应用:机器人控制、游戏AI、推荐系统

模型评估与选择

交叉验证

  • K折交叉验证:将数据分为K份,每次用K-1份训练,1份验证
  • **留一法(LOOCV)**:K=N的特殊情况
  • 分层K折:保持各类别比例一致

过拟合与欠拟合

  • 过拟合:模型在训练集表现好,测试集表现差
    • 解决方法:正则化、增加数据、简化模型、集成学习
  • 欠拟合:模型在训练集和测试集表现都差
    • 解决方法:增加模型复杂度、减少正则化、特征工程

集成学习

  • Bagging:并行训练多个模型,投票或平均
    • 随机森林:决策树的Bagging
  • Boosting:串行训练,每个模型关注前一个模型的错误
    • AdaBoost:调整样本权重
    • GBDT:梯度提升决策树
    • XGBoost:优化的GBDT实现
  • Stacking:用元学习器组合多个基学习器

深度学习基础

神经网络

  • 前馈神经网络:信息单向传播
  • 激活函数
    • ReLU:max(0,x),解决梯度消失
    • Sigmoid:1/(1+e^(-x)),输出概率
    • Tanh:tanh(x),输出[-1,1]
  • 反向传播:链式法则计算梯度

卷积神经网络(CNN)

  • 卷积层:提取局部特征
  • 池化层:降维,提高鲁棒性
  • 全连接层:分类决策

循环神经网络(RNN)

  • LSTM:长短期记忆网络,解决梯度消失
  • GRU:门控循环单元,简化版LSTM
  • 应用:序列建模、自然语言处理

实践要点

数据预处理

  • 标准化:(x - μ) / σ
  • 归一化:(x - min) / (max - min)
  • 缺失值处理:删除、填充、插值

特征选择

  • 过滤法:基于统计指标
  • 包装法:基于模型性能
  • 嵌入法:模型内置选择

超参数调优

  • 网格搜索:穷举搜索
  • 随机搜索:随机采样
  • 贝叶斯优化:基于概率模型

模型部署

  • 模型保存:pickle、joblib、ONNX
  • API设计:RESTful、gRPC
  • 监控:性能指标、数据漂移检测