损失函数理论

参数估计

  • 矩估计:建立参数和总体矩的关系,求解参数

    • 除非参数本身即为样本矩,否则基本无应用价值
    • 应用场合
      • 均值:对应二次损失 $\arg\min{\mu} \sum{i=1}^N (x_i - \mu)^2$
      • 方差:对应二次损失?
  • 极大似然估计:极大化似然函数,求解概率上最合理参数

    • 需知道(假设)总体 概率分布形式
    • 似然函数形式复杂,求解困难
      • 往往无法直接给出参数的解析解,只能求数值解
    • 应用场合
      • 估计回归参数:对数损失 $\mathop{\arg\min}{\beta} \sum{i=1}^N lnP(y_i|x_i, \beta)$
  • 损失函数估计:极小化损失函数,求解损失最小的参数

    • 最泛用的参数求解方法
      • 适合求解有大量参数的待求解的问题
      • 往往通过迭代方式逐步求解
    • 特别的
      • 线性回归使用 MSE 作为损失函数时,也被称为最小二乘估计
      • 极大似然估计同对数损失函数
  • 参数估计都可以找到合适损失函数,通过迭代求解损失最小化

随机模拟估计参数

  • 需要设计随机模拟实验估计参数
  • 应用场合
    • 蒙特卡洛类似算法:随机化损失

迭代求解参数

  • 损失函数定义不同

    • 包含样本量数量不同
    • 惩罚项设置不同
  • 异步更新参数

    • 同时求解参数数量:全部、部分、单个
    • 参数升维
  • 更新方向

    • 梯度
    • 海瑟矩阵
    • 次梯度
  • 更新方式

    • 叠加惯性
    • 动态学习率

Loss Models

模型(目标函数)在样本整体的损失:度量模型整体预测效果

  • 代表模型在整体上的性质,有不同的设计形式
  • 可以用于 设计学习策略、评价模型

    • 风险函数
    • 评价函数
  • 有时在算法中也会使用整体损失

Expected Risk / Expected Loss / Generalization Loss

期望风险(函数):损失函数 $L(Y, f(X))$(随机变量)期望

  • $P(X, Y)$:随机变量 $(X, Y)$ 遵循的联合分布,未知
  • 风险函数值度量模型预测错误程度

    • 反映了学习方法的泛化能力
    • 评价标准(监督学习目标)就应该是选择期望风险最小
  • 联合分布未知,所以才需要学习,否则可以直接计算条件分布概率,而计算期望损失需要知道联合分布,因此监督学习是一个病态问题

Empirical Risk / Empirical Loss

经验风险:模型关于给定训练数据集的平均损失

  • $\theta$:模型参数
  • $D_i$:样本损失权重,常为 $\frac 1 N$,在 Boosting 框架中不同
  • 经验风险损失是模型 $f(x)$ 的函数

    • 训练时,模型是模型参数的函数
    • 即其为模型参数函数
  • 根据大数定律,样本量容量 $N$ 趋于无穷时,$R{emp}(f)$ 趋于 $R{exp}(f)$

    • 但是现实中训练样本数目有限、很小
    • 利用经验风险估计期望常常并不理想,需要对经验风险进行矫正
  • 例子

    • maximum probability estimation:极大似然估计
      • 模型:条件概率分布(贝叶斯生成模型、逻辑回归)
      • 损失函数:对数损失函数

Structual Risk / Structual Loss

结构风险:在经验风险上加上表示 模型复杂度regularizerpenalty term

  • $J(f)$:模型复杂度,定义在假设空间$F$上的泛函
  • $\lambda$:权衡经验风险、模型复杂度的系数
  • 结构风险最小化
    • 添加 regularization(正则化),调节损失函数(目标函数)
  • 模型复杂度 $J(f)$ 表示对复杂模型的惩罚:模型 $f$ 越复杂,复杂项 $J(f)$ 越大
  • 案例
    • maximum posterior probability estimation:最大后验概率估计
      • 损失函数:对数损失函数
      • 模型复杂度:模型先验概率对数后取负
      • 先验概率对应模型复杂度,先验概率越小,复杂度越大
    • 岭回归:平方损失 + $L2$ 正则化 $\mathop{\arg\min}{\beta} \sum_{i=1}^N (y_i - f(x_i, \beta))^2 + |\beta|$
    • LASSO:平方损失 + $L1$ 正则化 $\mathop{\arg\min}{\beta} \sum_{i=1}^N (y_i - f(x_i, \beta))^2 + |\beta|_1$

Generalization Ability

泛化能力:方法学习到的模型对未知数据的预测能力,是学习方法本质、重要的性质

  • 测试误差衡量学习方法的泛化能力不可靠,其依赖于测试集,而测试集有限
  • 学习方法的泛化能力往往是通过研究泛化误差的概率上界进行

Generalization Error Bound

泛化误差上界:泛化误差的 概率 上界

  • 是样本容量函数,样本容量增加时,泛化上界趋于 0
  • 是假设空间容量函数,假设空间容量越大,模型越难学习,泛化误差上界越大

泛化误差

  • 根据 Hoeffding 不等式,泛化误差满足

    • $H$:假设空间
    • $N$:样本数量
    • $E(h) := R_{exp}(h)$
    • $\hat E(h) := R_{emp}(h)$
  • 证明如下:

  • 对任意 $\epsilon$,随样本数量 $m$ 增大, $|E(h) - \hat E(h)| \leq \epsilon$ 概率增大,可以使用经验误差近似泛化误差

二分类泛化误差上界

  • Hoeffding 不等式

  • 则 $\forall h \in H$,有

    则令 $\sigma = |H| exp(-2N\epsilon^2)$,则至少以概率 $1-\sigma$ 满足如下,即得到泛化误差上界

Probably Approximate Correct 可学习

PAC 可学习:在短时间内利用少量(多项式级别)样本能够找到假设 $h^{‘}$,满足

  • 即需要假设满足两个 PAC 辨识条件

    • 近似条件:泛化误差 $E(h^{‘})$ 足够小
    • 可能正确:满足近似条件概率足够大
  • 同等条件下

    • 模型越复杂,泛化误差越大
    • 满足条件的样本数量越大,模型泛化误差越小
  • PAC 学习理论关心能否从假设空间 $H$ 中学习到好的假设 $h$

    • 由以上泛化误差可得,取 $\sigma = 2|H|e^{-2N\epsilon^2}$,则样本量满足 $N = \frac {ln \frac {2|H|} \sigma} {2 \epsilon^2}$ 时,模型是 PAC 可学习的

Regularization

正则化:(向目标函数)添加额外信息以求解病态问题、避免过拟合

  • 常应用在机器学习、逆问题求解

    • 对模型(目标函数)复杂度惩罚
    • 提高学习模型的泛化能力、避免过拟合
    • 学习简单模型:稀疏模型、引入组结构
  • 有多种用途

    • 最小二乘也可以看作是简单的正则化
    • 岭回归中的 $\mathcal{l_2}$ 范数

模型复杂度

模型复杂度:经常作为正则化项添加作为额外信息添加的,衡量模型复杂度方式有很多种

  • 函数光滑限制

    • 多项式最高次数
  • 向量空间范数

    • $\mathcal{L_0} - norm$:参数个数
    • $\mathcal{L_1} - norm$:参数绝对值和
    • $\mathcal{L_2}$- norm$:参数平方和

$\mathcal{L_0} - norm$

  • $\mathcal{l_0} - norm$ 特点
    • 稀疏化约束
    • 解 $\mathcal{L_0}$ 范数正则化是 NP-hard 问题

$\mathcal{L_1} - norm$

  • $\mathcal{L_1} - norm$ 特点

    • $\mathcal{L_1}$ 范数可以通过凸松弛得到 $\mathcal{L_0}$ 的近似解
    • 有时候出现解不唯一的情况
    • $\mathcal{L_1}$ 范数凸但不严格可导,可以使用依赖次梯度的方法求解极小化问题
  • 应用

    • LASSO
  • 求解

    • Proximal Method
    • LARS

$\mathcal{L_2} - norm$

  • $\mathcal{L_2} - norm$ 特点
    • 凸且严格可导,极小化问题有解析解

$\mathcal{L_1 + L_2}$

  • $\mathcal{L_1 + L_2}$ 特点

    • 有组效应,相关变量权重倾向于相同
  • 应用

    • Elastic Net

稀疏解产生

稀疏解:待估参数系数在某些分量上为 0

$\mathcal{L_1} - norm$ 稀疏解的产生

  • $\mathcal{L_1}$ 范数在参数满足 一定条件 情况下,能对 平方损失 产生稀疏效果
  • 在 $[-1,1]$ 内 $y=|x|$ 导数大于 $y=x^2$(除 0 点)

    • 则特征在 0 点附近内变动时,为了取到极小值,参数必须始终为 0
    • 高阶项在 0 点附近增加速度较慢,所以 $\mathcal{L_1} - norm$ 能产生稀疏解是很广泛的
    • $mathcal{L_1} - norm$ 前系数(权重)越大,能够容许高阶项增加的幅度越大,即压缩能力越强
  • 在 0 附近导数 “不小”,即导数在 0 点非 0

    • 对多项式正则化项
      • $\mathcal{L_1} - norm$ 项对稀疏化解起决定性作用
      • 其他项对稀疏解无帮助
    • 对“非多项式”正则化项
      • $e^{|x|}-1$、$ln(|x|+1)$ 等在0点泰勒展开同样得到 $\mathcal{L_1} - norm$ 项
      • 但是此类正则化项难以计算数值,不常用

$\mathcal{L_1} - norm$ 稀疏解推广

  • 正负差异化:在正负设置权重不同的 $\mathcal{L_1}$,赋予在正负不同的压缩能力,甚至某侧完全不压缩

  • 分段函数压缩:即只要保证在 0 点附近包含 $\mathcal{L_1}$ 用于产生稀疏解,远离 0 处可以设计为常数等不影响精确解的值

    • Smoothly Clipped Absolute Deviation

    • Derivate of SCAD

    • Minimax Concave Penalty

  • 分指标:对不同指标动态设置 $\mathcal{L_0}$ 系数

    • Adaptive Lasso:$\lambda \sum_J w_jx_j$

稀疏本质

稀疏本质:极值、不光滑,即导数符号突然变化

  • 若某约束项导数符号突然变化、其余项在该点处导数为 0,为保证仍然取得极小值,解会聚集(极小)、疏远(极大)该点(类似坡的陡峭程度)

    • 即此类不光滑点会抑制解的变化,不光滑程度即导数变化幅度越大,抑制解变化能力越强,即吸引、排斥解能力越强
    • 容易构造压缩至任意点的约束项
    • 特殊的,不光滑点为 0 时,即得到稀疏解
  • 可以设置的多个极小不光滑点,使得解都在不连续集合中

    • 可以使用三角函数、锯齿函数等构造,但此类约束项要起效果,必然会使得目标函数非凸
      • 但是多变量场合,每个变量实际解只会在某个候选解附近,其邻域内仍然是凸的
      • 且锯齿函数这样的突变非凸可能和凸函数具有相当的优秀性质
    • 当这些点均为整数时,这似乎可以近似求解 整数规划

Early Stopping

Early Stopping:提前终止(训练)

  • Early Stopping 也可以被视为是 regularizing on time
    • 迭代式训练随着迭代次数增加,往往会有学习复杂模型的倾向
    • 对时间施加正则化,可以减小模型复杂度、提高泛化能力

Batch Normalization

Internal Covariate Shift

ICS:由于网络参数变化,引起内部节点(输入)数据分布发生变化的过程

  • 网络中层与层之间高度耦合,具有强关联性

    • 网络中任意层都可以视为单独网络
    • 上层输入可视为作为当前层外部输入
  • 随训练进行,网络中参数不断发生改变

    • 任意层中参数变化会导致之后层输入发生改变
    • 高层需要不断适应输入分布的改变,即其输入分布性质影响 该层训练
    • 由此导致模型训练困难

负面影响

  • 上层网络需要不断调整输入适应数据分布变换,降低网络学习 效率

  • 输入数据量级不稳定、各维度数据量级差距不稳定

    • 降低学习效率
      • 小量级维度参数要求更小的学习率
      • 否则参数可能在最优解附近反复波动
    • 容易出现梯度消失,难以训练饱和非线性模型
      • 大量级维度训练过程中容易陷入梯度饱和区,参数更新 速度慢,减缓网络收敛速度
      • 训练过程中参数更新更有可能使得输入移向激活函数 饱和区
      • 且该效应随着网络深度加深被进一步放大
    • 参数初始化需要更复杂考虑
  • 还可以使用非饱和激活函数ReLU等避免陷入梯度饱和区

Batch Normalization

Batch Normalization:规范化batch数据,使样本各维度 标准化,即均值为0、方差为1

  • $B$:mini-batch
  • $z, y$:某层输入向量、规范化后输入向量 (即以个神经元中激活前标量值$z=Wx+b$为一维)
  • $\odot$:逐元素乘积
  • $E(x)$:均值使用移动平均均值
  • $Var(x)$:方差使用移动平均无偏估计
  • $\gamma, \beta$:待学习向量,用于恢复网络的表示能力
  • $\epsilon$:为数值计算稳定性添加
  • BN可以视为whitening的简化

    • 简化计算过程:避免过高的运算代价、时间
    • 保留数据信息:未改变网络每层各特征之间相关性
  • BN层引入可学习参数$\gamma, \beta$以恢复数据表达能力

    • Normalization操作缓解了ICS问题,使得每层输入稳定 ,也导致数据表达能力的缺失
    • 输入分布均值为0、方差为1时,经过sigmoid、tanh激活 函数时,容易陷入其线性区域
    • $\gamma = \sqrt {Var(z)}, \beta = E(z)$时为等价变换 ,并保留原始输入特征分布信息
  • Whitening:白化,对输入数据变换使得各特征同均值、 同方向、不相关,可以分为PCA白化、ZCA白化

训练

  • 规范化在每个神经元内部非线性激活前$z=Wu$进行,而不是 [也]在上一层输出$u$上进行,即包含BN最终为

    • $act$:激活函数
    • 偏置$b$:可以被省略,BN中减去均值
    • $u$的分布形状可以在训练过程中改变
    • 而$u$两次正则化无必要
    • $z=Wu$分布更可能对称、稠密、类似高斯分布
  • 以batch统计量作为整体训练样本均值、方差估计

    • 每层均需存储均值、方差的移动平均统计量用于测试时 归一化测试数据
  • 对卷积操作,考虑卷积特性,不是只为激活函数(即卷积核) 学习$\gamma, \beta$,而是为每个feature map学习 (即每个卷积核、对每个特征图层分别学习)

预测

  • 预测过程中各参数(包括均值、方差)为定值,BN仅仅对数据 做了线性变换

    • 使用训练总体的无偏统计量对测试数据归一化 (训练时存储)

    • 还可以使用样本指数加权平均统计量

用途

  • BN通过规范化输入数据各维度分布减少ICS,使得网络中每层 输入数据分布相对稳定
  • 实现网络层与层之间的解耦

    • 方便迁移学习
    • 加速模型学习速度:后层网络无需不断适应输入分布变化, 利于提高神经网络学习速度
  • 降低模型对网络超参数、初始值敏感度,使得网络学习更加稳定

    • 简化调参过程
    • 允许使用更大的学习率提高学习效率
    • $a$:假设某层权重参数变动$a$倍
    • 激活函数函数输入不受权重$W$放缩影响
    • 梯度反向传播更稳定,权重$W$的Jacobian矩阵将包含接近 1的奇异值,保持梯度稳定反向传播
  • 允许网络使用饱和激活函数(sigmoid、tanh等),而不至于 停滞在饱和处,缓解梯度消失问题

    • 深度网络的复杂性容易使得网络变化积累到上层网络中, 导致模型容易进入激活函数梯度饱和区
  • 有正则化作用,提高模型泛化性能,减少对Dropout的需求

    • 不同batch均值、方差有所不同,为网络学习过程增加随机 噪声
    • 与Dropout关闭神经元给网络带来噪声类似,一定程度上 有正则化效果

Layer Normalization

层归一化:假设非线性激活前的输入随机变量分布接近,可以直接 基于每层所有非线性激活前输入估计均值、方差

  • $h^l$:第$l$隐层激活前值
  • $\mu^l, \sigma^l$:第$l$隐层对应LN均值、方差 (标量,是同层神经元激活前值统计量)
  • 相对于BN,其适应范围更广

    • 循环神经网络中,BN无法处理长于训练序列的测试序列
    • BN无法应用到在线学习、超大分布式模型任务,此时训练 batch较小,计算的均值、方差无法有效代表训练总体
  • LN假设非线性激活前输入随机变量分布接近,而CNN网络中图像 边缘对应kernel大量隐藏单元未被激活,假设不成立,所以 CNN网络中LN效果没有BN效果好

Dropout

Dropout

Dropout训练时根据随机隐藏部分神经元、对应连接边避免 过拟合

固定概率丢弃

Dropout最简单方法:设置固定概率p,对每个神经元以概率p判定 是否需要保留

  • $d(x)$:丢弃函数
  • $m \in {0, 1}^d$:丢弃掩码,通过概率为p的伯努利 分布随机生成
  • $p$可以设置为0.5,对大部分网络、任务比较有效

    • 此时随机生成多的网络最具多样性
  • 训练时

    • 激活神经元数量为原来的p倍
    • 每个batch分别进行drop,相当于对每个batch都有独特网络
  • 测试时

    • 所有神经元都被激活,造成训练、测试时网络输出不一致, 需将每个神经元输出乘p避免
    • 也相当于把不同网络做平均
  • 在预测时,类似bagging技术将多个模型组合

    • 只是类似,各个drop后的子网并不独立,在不同子网中相同 神经元的权重相同
    • 多个模型组合组合可以一定程度上抵消过拟合
    • 因为在训练时子网中部分神经元被drop,剩余部分权重相较 完全网络有$\frac 1 {1-p}$,所以在完整网络中,各部分 权重需要$ * (1-p)$
  • 讲道理应该是隐藏部分神经元而不是连接,否则会使神经元偏向 某些输入,还不如隐藏部分神经元,这样可以让神经元随机降低 样本权重,理论上能减弱过拟合

丢弃方法

  • 输入层神经元丢弃率更接近1,使得输入变化不会太大

    • 输入层神经元丢失时,相当于给数据增加噪声,提高网络 稳健性
  • 循环神经网络丢弃

    • 不能直接丢弃隐状态,会损害循环网络在时间维度上的记忆 能力
    • 简单方法:可以考虑对非循环连接进行随机丢弃
    • 变分丢弃法:根据贝叶斯对丢弃法是对参数的采样解释, 采样参数需要每个时刻保持不变
      • 需要对参数矩阵的每个元素随机丢弃
      • 所有时刻使用相同的丢弃掩码

解释

  • 集成学习解释

    • 每次丢弃,相当于从原网络采样得到子网络
    • 每次迭代,相当于训练不同的子网络,共享原始网络参数
    • 最终网络可以近似看作是集成了指数个不同网络的组合模型
  • 贝叶斯学习解释

    • 对需要学习的网络$y = f(x, \theta)$,贝叶斯学习假设 参数$\theta$为随机向量
    • 设先验分布为$q(\theta)$,贝叶斯方法预测为

    • $f(x, \theta_m)$:第$m$次应用丢弃方法的网络
    • $\theta_m$:对全部参数的采样

数据预处理

数据说明

数据模式

  • 结构化数据:行数据,可用二维表逻辑表达数据逻辑、存储在数据库中

    • 可以看作是关系型数据库中一张表
    • 行:记录、元组,表示一个样本信息
    • 列:字段、属性,有清晰定义
  • 非结构化数据:相对于结构化数据而言,不方便用二维逻辑表达的数据

    • 包含信息无法用简单数值表示
      • 没有清晰列表定义
      • 每个数据大小不相同
    • 研究方向
      • 社交网络数据
      • 文本数据
      • 图像、音视频
      • 数据流
    • 针对不同类型数据、具体研究方面有不同的具体分析方法,不存在普适、可以解决所有具体数据的方法
  • 半结构化数据:介于完全结构化数据、完全无结构数据之间的数据

    • 一般是自描述的,数据结构和内容混合、没有明显区分
    • 树、图(XMLHTML 文档也可以归为半结构化数据)
  • 结构化数据:先有结构、再有数据
  • 半结构化数据:先有数据、再有结构

数据拼接

  • 利用外键拼接不同来源的数据时,注意不同数据间粒度差异
    • 外键低于问题标签粒度时,考虑对数据作聚合操作再拼接
      • 保证拼接后用于训练的记录粒度和问题一致
      • 避免维度爆炸
      • 各数据来源数据厚薄不同,会改变数据分布
    • 外键高于、等于目标粒度时,可考虑直接直接连接

数据问题

稀疏特征

  • 产生原因
    • 数据缺失
    • 统计数据频繁 0 值
    • 特征工程技术,如:独热编码

缺失值

产生原因

  • 信息暂时无法获取、成本高
  • 信息被遗漏
  • 属性不存在

缺失值影响

  • 建模将丢失大量有用信息
  • 模型不确定性更加显著、蕴含规则更难把握
  • 包含空值可能使得建模陷入混乱,导致不可靠输出

缺失利用

  • 直接使用含有缺失值特征:有些方法可以完全处理、不在意缺失值

    • 分类型变量可以将缺失值、异常值单独作为特征的一种取值
    • 数值型变量也可以离散化,类似分类变量将缺失值单独分箱
  • 删除含有缺失值特征

    • 一般仅在特征缺失率比较高时才考虑采用,如缺失率达到 90%、95%

插值补全

  • 非模型补全缺失值

    • 均值、中位数、众数
    • 同类/前后均值、中位数、众数
    • 固定值
    • 矩阵补全
    • 最近邻补全:寻找与样本最接近样本相应特征补全
  • 手动补全:根据对所在领域理解,手动对缺失值进行插补

    • 需要对问题领域有很高认识理解
    • 缺失较多时费时、费力
  • 建模预测:回归、决策树模型预测

    • 若其他特征和缺失特征无关,预测结果无意义
    • 若预测结果相当准确,缺失属性也没有必要纳入数据集
  • 多重插补:认为待插补值是随机的

    • 通常估计处待插补值
    • 再加上不同噪声形成多组可选插补值
    • 依据某准则,选取最合适的插补值
  • 高维映射:one-hot 编码增加维度表示某特征缺失

    • 保留所有信息、未人为增加额外信息
    • 可能会增加数据维度、增加计算量
    • 需要样本量较大时效果才较好
  • 压缩感知:利用信号本身具有的稀疏性,从部分观测样本中恢复原信号

    • 感知测量阶段:对原始信号进行处理以获得稀疏样本表示
      • 傅里叶变换
      • 小波变换
      • 字典学习
      • 稀疏编码
    • 重构恢复阶段:基于稀疏性从少量观测中恢复信号

异常值

  • 异常值/离群点:样本中数值明显偏离其余观测值的个别值

异常值分析:检验数据是否有录入错误、含有不合常理的数据

非模型异常值检测

  • 简单统计

    • 观察数据统计型描述、散点图
    • 箱线图:利用箱线图四分位距对异常值进行检测
  • $3\sigma$ 原则:取值超过均值 3 倍标准差,可以视为异常值

    • 依据小概率事件发生可能性“不存在”
    • 数据最好近似正态分布

模型异常值检测

  • 基于模型预测:构建概率分布模型,计算对象符合模型的概率,将低概率对象视为异常点

    • 分类模型:异常点为不属于任何类的对象
    • 回归模型:异常点为原理预测值对象
    • 特点
      • 基于统计学理论基础,有充分数据和所用的检验类型知识时,检验可能非常有效
      • 对多元数据,可用选择少,维度较高时,检测效果不好
  • 基于近邻度的离群点检测:对象离群点得分由其距离 k-NN 的距离确定

    • k 取值会影响离群点得分,取 k-NN 平均距离更稳健
    • 特点
      • 简单,但时间复杂度高 $\in O(m^2)$,不适合大数据集
      • 方法对参数 k 取值敏感
      • 使用全局阈值,无法处理具有不同密度区域的数据集
  • 基于密度的离群点检测

    • 定义密度方法
      • k-NN 分类:k 个最近邻的平均距离的倒数
      • DSSCAN 聚类中密度:对象指定距离 d 内对象个数
    • 特点
      • 给出定量度量,即使数据具有不同区域也能很好处理
      • 时间复杂度 $\in O^(m^2)$,对低维数据使用特点数据结构可以达到 $\in O(mlogm)$
      • 参数难以确定,需要确定阈值
  • 基于聚类的离群点检测:不属于任何类别簇的对象为离群点

    • 特点
      • (接近)线性的聚类技术检测离群点高度有效
      • 簇、离群点互为补集,可以同时探测
      • 聚类算法本身对离群点敏感,类结构不一定有效,可以考虑:对象聚类、删除离群点再聚类
      • 检测出的离群点依赖类别数量、产生簇的质量
  • One-class SVM

  • Isolation Forest

异常值处理

  • 删除样本

    • 简单易行
    • 观测值很少时,可能导致样本量不足、改变分布
  • 视为缺失值处理

    • 作为缺失值不做处理
    • 利用现有变量信息,对异常值进行填补
    • 全体/同类/前后均值、中位数、众数修正
    • 将缺失值、异常值单独作为特征的一种取值
  • 很多情况下,要先分析异常值出现的可能原因,判断异常值是否为真异常值

类别不平衡问题

创造新样本

  • 对数据集重采样

    • 尝试随机采样、非随机采样
    • 对各类别尝试不同采样比例,不必保持 1:1 违反现实情况
    • 同时使用过采样、欠采样
  • 属性值随机采样

    • 从类中样本每个特征随机取值组成新样本
    • 基于经验对属性值随机采样
    • 类似朴素贝叶斯方法:假设各属性之间相互独立进行采样,但是无法保证属性之前的线性关系
  • 对模型进行惩罚

    • 类似 AdaBoosting:对分类器小类样本数据增加权值
    • 类似 Bayesian分类:增加小类样本错分代价,如:penalized-SVMpenalized-LDA
    • 需要根据具体任务尝试不同惩罚矩阵

新角度理解问题

  • 将小类样本视为异常点:问题变为异常点检测、变化趋势检测

    • 尝试不同分类算法
    • 使用 one-class 分类器
  • 对问题进行分析,将问题划分为多个小问题

    • 大类压缩为小类
    • 使用集成模型训练多个分类器、组合
  • 需要具体问题具体分析

模型评价

  • 尝试其他评价指标:准确度在不平衡数据中不能反映实际情况
    • 混淆矩阵
    • 精确度
    • 召回率
    • F1 得分
    • ROC 曲线
    • Kappa

数据量缺少

图片数据扩充

Data Agumentation:根据先验知识,在保留特点信息的前提下,对原始数据进行适当变换以达到扩充数据集的效果

  • 对原始图片做变换处理

    • 一定程度内随机旋转、平移、缩放、裁剪、填充、左右翻转,这些变换对应目标在不同角度观察效果
    • 对图像中元素添加噪声扰动:椒盐噪声、高斯白噪声
    • 颜色变换
    • 改变图像亮度、清晰度、对比度、锐度
  • 先对图像进行特征提取,在特征空间进行变换,利用通用数据 扩充、上采样方法

    • SMOTE
  • Fine-Tuning 微调:直接接用在大数据集上预训练好的模型,在小数据集上进行微调

    • 简单的迁移学习
    • 可以快速寻外效果不错针对目标类别的新模型

特征缩放

  • 正则化:针对单个样本,将每个样本缩放到单位范数
  • 归一化:针对单个属性,需要用到所有样本在该属性上值

Normalizaion

归一化/标准化:将特征/数据缩放到指定大致相同的数值区间

  • 某些算法要求数据、特征数值具有零均值、单位方差
  • 消除样本数据、特征之间的量纲/数量级影响
    • 量级较大属性占主导地位
    • 降低迭代收敛速度:梯度下降时,梯度方向会偏离最小值,学习率必须非常下,否则容易引起宽幅震荡
    • 依赖样本距离的算法对数据量机敏感
  • 决策树模型不需要归一化,归一化不会改变信息增益(比),Gini 指数变化

Min-Max Scaling

线性函数归一化:对原始数据进行线性变换,映射到 $[0, 1]$ 范围

  • 训练集、验证集、测试集都使用训练集归一化参数

Z-Score Scaling

零均值归一化:将原始数据映射到均值为 0,标准差为 1 的分布上

其他一些变换方式

  • 对数变换:$X^{‘} = lg(X)$
  • 反余切函数变换:$X^{‘} = \frac {2 arctan(x)} {\pi}$
  • Sigmoid 变换:$X^{‘} = \frac 1 {1 + e^{-x}}$
  • 模糊向量变:$X^{‘} = \frac 1 2 + \frac 1 2 sin \frac {X - \frac{max(X) - min(X)} 2} {max(X) - min(X)} * \pi$

Regularization

正则化:将样本/特征某个范数缩放到单位 1

  • $L_p$:样本的 $L_p$ 范数
  • 使用内积、二次型、核方法计算样本之间相似性时,正则化很有用