test/机器学习.md
2025-06-10 07:35:20 +00:00

67 KiB
Raw Blame History

Entropy

  • 条件熵 H(Y|X):= \sum_j p(x_j) H(Y|X=x_j)
  • 信息增益 (information gain) 或者互信息 (mutual information): g(Y,X):= H(Y)-H(Y|X)=\sum p(x_i, y_j) \log\frac{p(x_i, y_j)}{p(x_i)p(y_j)}
  • 信息增益比 (information gain ratio): g_R(Y,X):= \frac{g(Y,X)}{H(X)}
  • H(Y)\leq log(n)
  • H(Y|Y)=0
  • 如果X与Y无关 H(Y|X)=H(Y)
  • g(Y,X)=H(Y)+H(X)-H(X,Y)
  • H(Y|X)=H(X,Y)-H(X)
  • 交叉熵 (cross entropy): H(p,q)=\sum -p(x_i) \log q(x_i)
  • 相对熵 (relative entropy) 或者 KL 散度 (Kullback-Leibler divergence, KLD): D_{KL}(p||q):=H(p,q)-H(p)= \sum -p(x_i)\log \frac{q(x_i)}{p(x_i)}
  • g(X,Y)=D_{KL}(p(x,y)||p(x)p(y))
  • JS 散度: JS:=1/2 ( D_{KL}(p||m) + D_{KL}(q||m) ) , 这里 m=(p+q)/2 。 p和q支撑集不相交时JS 散度为一个常数 log2
  • 最小化交叉熵=最小化KL=极大似然

Bias-Variance tradeoff

  • 通常“复杂”的模型(增加参数;增加特征等)有较小的 Bias 但会带来较高的 Variance. 可通过像boosting等手段来降低 Bias
  • 通常“简单”的模型(减少参数;减少特征等)有较小的 Variance 但会带来较高的 Bias. 可通过增加样本bagging等手段来降低 Variance.

分类器性能指标

  • 正确分类的比率 Acc=\frac{TP+TN}{TP+TN+FP+FN}
  • 正预测中被分对的比率 Pre=\frac{TP}{TP+FP}
  • 召回率 (recall) 也叫灵敏度 (sensitive) 或者 True Postive Rate(TPR), 正样本中被分对的比率, Rec=TPR=\frac{TP}{TP+FN=P}
  • 特效度 (specificity) 负样本中被分对的比率 Spe=\frac{TN}{FP+TN=N}
  • False Postive Rate 负样本中被分错的比率 FPR=\frac{FP}{FP+TN=N}=1-Spe
  • 正负样本不平衡的情况下,高准确率不一定代表好的分类。比如正样本只有 1 个,实际的例子就是预测地震,每次都预测不地震。
  • F-Measure 又称 F-Score: F=\frac{\alpha^2+1}{\alpha^2}\frac{1}{1/Pre+1/Rec}
  • 计算 Phi coefficient , 可得 Matthews correlation coefficient (MCC)
  • ROC (Receiver operating characteristic) 曲线FPR vs TPR
  • PR (precision recall) 曲线Pre vs Rec
  • TPR = FPR, 它意味着无论一个样本本身是正还是负,分类器预测其为正的概率是一样的,这等同于随机猜测
  • 正样本集合中正负样本的比例大幅变化时ROC 曲线并不会产生过大的变化; 使PR 曲线发生巨大变化;
  • 比例不平衡有大量负样本时,会产生大量错误的正预测 (FP)。ROC曲线变化不明显而给出错误的乐观估计但精确率则会因为FP变化大幅下降使PR曲线下降明显而给出正确估计。我认不平衡导致TP显得过少FP显得过多
  • 考虑阙值分析的,我们使用 ROC 或者 PR分布不平衡的我们使用 F-Score 或者 PR
  • 这些指标只能用来衡量分类性能,不能训练分类器的参数。

聚类

  • 聚合 (agglomerative) 或自下而上 (bottom-up) 聚类1. 构造 N 个类每个类只包含一个样本2. 合并类间距离最小的两个类3. 计算新类与当前各类的距离重复以上步骤,直到类的个数达到阙值。复杂度是 O(N^3m) : \sum_{i=1}^N i^2 再乘以维度m.

  • 分裂聚类自上而下1.将所有数据点视为一个聚类。2.选择一个聚类进行分裂。3. 将所选聚类分裂为两个或多个子聚类。4.用新子聚类更新聚类集合。5. 重复对子聚类重复步骤2-4。6.达到预定条件(如聚类数目或质量标准)后停止

  • k-means: 最小化类内方差也叫类内平方和

  • Lloyd 算法1. 初始化令 t = 0 选择 k 个样本点作为初始聚类中心; 2. 根据上一步的中心进行聚类E步3. 重新计算步骤2的中心M步。 缺点:不平衡即不同类中样本的数量差异很大

  • Hartigan-Wong 算法1. 随机分配所有的点到 k 个类上,计算 k 个类的中心。2. 随机选择一个点移出所属类重新计算类中心。3. 把移出的点重新分配到其距离最近的中心点的类上,其中距离函数中乘以了加权系数 \frac{类的元素个数}{类的元素个数+1} ,使得算法更倾向于把样本分配给样本数量较少的类

  • MacQueen算法在线更新算法只需一次迭代1. 选取头 k 个点作为类中心。2. 依次把下一个点分配到当前类中,更新该类的中心。直到所有的点分配完毕。

  • k-medians把平方距离(L2)改为绝对值距离 (L1)时,中心也由平均值变成了中位数。

  • The Elbow Method当聚类个数超过某个值时能量减少明显变缓。

  • kmeans缺点和解决方案

    • 容易局部收敛在大规模数据集上求解较慢CLARA, CLARANS
    • 离群点和噪声点非常敏感k-medoids, PAM, DBSCAN
    • 初始聚类中心选取敏感1. 层次聚类选初值2. k-mean++
    • 划分聚类像球型GMM
  • k-means++: 思想是使初始中心之间的相互距离尽可能远。1. 从样本集中随机选取一个作为中心2. 对于每个剩余的数据点,计算它到已选择的聚类中心的“距离”; 3. 从剩余的数据点选一个作为新的中心点根据2中的“距离”选取距离远概率大。4. 选出k个中心后再k-means。

  • kmedoids: 不计算中心,而是按准则函数选取类中成员 (medoids) 作为“中心”来代表这个类。

  • k-medoids一种实现方式Partitioning Around Medoids(PAM)。通过不停对换中心来实现。1. 任意选取 k个点作为中心; 2. 将剩余点聚类到中心3. 随机地选一非中心点替换中心点,如果损失减少,则交换; 4.重复直到总的损失不变

  • CLARA (Clustering LARge Applications): 应用于大规模数据。思想为每次随机抽取一小部分样本进行PAM。 1. 几次PAM后得到几组中心2. 对每一组中心将剩余点分配到距离最近的中心所代表的类中计算绝对误差。3. 选取绝对误差最小的那组中心。

  • CLARANS: 在 CLARA 确定中心之后类似PAM 中的方法,不停对换中心。

  • Density-based spatial clustering of applications with noise DBSCAN 1. 按照核心点、边界点、噪声点标记2. 删除噪声点3. 把距离小于ϵ的核心点两两连在一起连通集形成一个聚类4. 将边界点指派到关联的核心点的聚类中。

    • 优点:所有形状的聚类尤其是非凸集;不需指定簇的个数;噪音不敏感,可发现异常点;初始值无影响。
    • 缺点:如果密度不均匀、聚类间距差相差很大时,聚类质量较差;计算效率低。
  • 高斯混合模型聚类: 假设每个点以一定概率被分配到一个类中,高斯分布可做椭圆划分。

采样

  • 任意离散随机变量采样利用均匀分布采样和Cumulative Distribution Function简称CDF
  • 用 rand()% M 产生 rand()% Nrand()% M * rand()% M 产生 M*M; 然后用拒绝采样就近采样 N 的倍数
  • 正态随机变量采样: Box-Muller法
    • U(0,1) 中抽取两个独立随机数 u_1u_2
    • 使用以下公式生成两个独立的标准正态随机变量 Z_1Z_2
       
      Z_1 = \sqrt{-2 \ln(u_1)} \cos(2\pi u_2) \\
      Z_2 = \sqrt{-2 \ln(u_1)} \sin(2\pi u_2)  
      
  • 重要性抽样思想是从一个容易采样的提案分布中抽取样本然后通过权重调整来估计目标分布下函数f的期望值。q 的选取要接近 p否则就需要大量的采样才能收敛
  • 舍选法或接受-拒绝抽样法 (accept-reject sampling method) :通过均匀分布采样大于某阈值选择或舍弃某次采样。建议分布一定比目标分布有更粗的尾。接受一个建议样本的次数 N G(\frac{1}{M})
  • π 称为平稳分布 (Stationary distribution)如果 π^T = π^T Q
  • MCMC采样下面 \alpha= \min(1, \frac{p(j)q(i|j)}{p(i)q(j|i)})
    • 当t步时xt, 用概率分布 q(x|xt) 产生样本 x_{t+1} ;
    • 产生均匀分布 u Uniform(0, 1);
    • 如果 u < α(x_t, x_{t+1})x_{t+1} ; 否则 x_{t} .
  • 建议分布
    • Metropolis 选择q(y|x) = q(x|y)
    • 独立抽样q(y|x) = q(y)
    • 随机游走y = x + ϵ . 参数过大则会导致拒绝率大过小时有非常高的接受率但产生的状态列自相关性太强导致收敛速度太慢。可解释为大自相关使MC均值的估计方差变大
    • 建议分布的选取几个标准Heavy Tails; 和目标分布一样的支撑集;如果目标分布时多峰值时,应该使用高斯混合模型。
  • Gibbs迭代地更新多变量分布中每个维度的样本在其他维度的当前值条件下来近似复杂多维概率分布。

PCA

  • A^T Cov(X)A= diag(\lambda_1,...,\lambda_m) , A是 m\times m 正交矩阵将随机向量X变换为互相无关的随机向量Y
  • X任何的单位向量线性组合=Y的单位向量线性组合。这个线性组合的方差就是特征根的加权平均所以一定小于最大特征根
  • 如果存在几个相关性很高的特征,比如某特征复制若干遍,则会出现一个主成分的方差异常高于其他的主成分,错误的认为只有一个主成分。一般情况下保留高相关性的特征,除非数量非常庞大显著影响到其他主成分
  • 选几个主成分k一般由贡献率η来决定η=前k个特征的和/全部的和
  • 样本矩阵 X_{N×m} 其中N为样本个数m为特征个数。样本协方差和样本相关矩阵都是无偏估计。样本协方特征根和特征向量是 Cov(X) 的特征值和特征向量的MLE
  • X=X\alpha_1\alpha_1^T+...+X\alpha_m\alpha_m^T=
  • 与回归类似,加入新的特征,新第一主成分的方差(特征根)一定不会减少
  • PCA需要标准化预处理方差大的特征相较于小的数据获得更高的权重这样会导致它们不合常理的干涉第 1 主成分的变化。
  • 最小平方误差理解 PCA: 前 k 个主成分 \alpha_1...\alpha_k 为 k-维超平面使得为样本点到超平面平方距离和最小。这是一个降维的过程也是编码解码的过程,可以推广到非线性降维即自编码器
  • 可以考虑两个空间来思考PCA和回归问题样本点所在的空间dim=m随机向量空间当dim=N样本PCA的时候或无穷总体PCA的时候
  • 主成分回归 (principal component regression, PCR)使用PCA降维后再做Multiple Linear Regression
  • PCR可以用来消除线性规划中的多重共线性问题小特征根会加大估计的方差使得特征对输入变化非常敏感。
  • PCR 先考虑了X的方差然后再考虑新特征与Y之间的相关性这与同时考虑最大化X的方差和与Y的相关性不同。PCR不是PLSR dim y = 1的特殊情形
  • PCA异常值检验
    • 方差得分:考察某异常点往各个主成分上投影的(加权除以 \lambda_i )平方和。这里 \lambda_i 使得各个特征向量之间有可比性。也可以选择前r个或者在后r个特征上的得分。
    • 重构误差:=前k个特征向量的重构误差的加权平均
  • 奇异值分解 (SVD) A_{m\times n}=U_{m\times m}\Sigma_{m\times n} V_{n\times n}^T 这里U和V正交矩阵 \Sigma=diag(1,...,1,0,...)
  • 紧奇异值分解 (compact singular value decomposition)等号;截断奇异值分解 (truncated singular value decomposition)约等于
  • 线性判别分析(Linear Discriminant Analysis, LDA)是有监督的降维方法。思想是将每个类的样本点投影到低维超平面上使得类内方差最小,类外方差最大即使得降维后类间的分隔尽可能的大
  • S_w 类内散度矩阵 (within-class scatter matrix)(也就是样本协方差矩阵m × m):类内样本协方差矩阵,再对类求和
  • S_t 全局散度:所有样本协方差
  • S_b 类间散度矩阵 (between-class scatter matrix) S_t-S_w=\sum |C_i| (\mu_i-\mu)(\mu_i-\mu)^T
  • LDA就是最大化 max_W \frac{W^TS_bW}{W^TS_wW} 求对角线元素乘积;这里 S_b 秩最多k 1也就是说非零特征根最多k 1个所以最大的投影超平面为 k 1维
  • PCA 和 LDA 不同点1有无监督2维数不能超过类别数3 LDA过分依赖类的中心所以当类中心比较接近而依靠方差来分类时PCA投影后分类效果优于LDA
  • 稀疏编码:寻找一组过完备(overcomplete)的基向量基向量个数远大于dim x A = [a_1, · · · , a_M] 来表示样本 x=Ah ,这里 h 稀疏

特征选择

  • 特征选择优点:减少过拟合;减少模型复杂性;减少噪声;提高鲁棒性

过滤法 (Filter)

  • t-检验:适用于二分类。独立双样本 t-检验异方差的情形。检验值越小,说明标签对特征影响越小即特征与标签相关性越低, 特征越应该被移除。
  • F-检验: 从二分类推广到多分类即是ANOVA的均值变异F-检验
  • χ^2 -检验适用于多分类离散样本。Pearson χ^2 检验。用来检验特征样本 Xm 和标签样本Y的相关性

过滤法最大的问题就是没考虑针对后续要使用的学习器去选择特征子集,减弱学习器拟合能力。

嵌入法 (Embedded) 先使用某些机器学习的算法和模型进行训练,利用这些模型对特征打分:

  • 回归和 SVM 中移除系数小的特征;
  • L1 正则的稀疏性,移除 0 权重的特征;
  • 随机森林、GBDT、XGboost 评分,移除低分特征

包裹法 (Wrapper)

  • 向前搜索Forward Selection1从没有任何特征的模型开始。2添加一个新的特征这个特征是当前未被选中的特征中对模型性能提升最大的。3当没有更多的特征可以显著提高模型性能时停止或者达到预设的特征数量上限。
  • 向后搜索Backward Elimination1从包含所有候选特征的模型开始。2移除一个特征这个特征是当前模型中对性能影响最小的。

损失函数的下降也不足以说明特征不重要,因为要考虑相关特征,这就有了 RFE

  • 递归特征消除Recursive Feature Elimination, RFE1从全部特征开始训练一个基线模型2使用模型如决策树、随机森林等评估每个特征重要性3. 根据特征重要性选择一定数量特征进行消除4递归在消除了部分特征的数据集上重新训练模型并重复2和35最终选择在多次迭代后保留下来的特征。优势在于可使RFE能够识别出那些在组合中对模型性能有显著影响的特征。
  • 随机稀疏模型 (Randomized sparse models): 多次随机选取特征训练如L1稀疏模型以被稀疏模型选中为非零特征的次数来排序。
  • 要同时选中高相关特征的重要性除了过滤法外也有改进RF的Boruta通过随机打乱原始特征的值为数据集中的每个特征创建影子特征将影子特征添加到原始数据集中形成扩展数据集并用其训练随机森林模型在每次迭代中比较每个原始特征的重要性与影子特征的最高重要性若原始特征的重要性高于影子特征的最高值则认为该特征是重要的Hit否则是不重要的Miss重复上述过程多次通常100次统计每个特征的“命中”次数和“未命中”次数根据统计结果将特征分为“重要”、“不重要”和“不确定”三类重要特征被保留不重要特征被剔除而不确定特征则根据设定的迭代次数或阈值进一步判断

回归

  • 最小二乘解: min_\theta \| y_{N \times 1}-X_{N\times d} \theta_{d\times 1} \|
 
\hat \theta=(X^T X)^{-1} X^T y \\
Cov(\hat\theta)= \frac{\sigma^2}{X^TX}= \sigma^2 \sum \frac{\alpha_i\alpha_i^T}{ \lambda_i} \\
Var(\hat\theta_i)=\frac{\sigma^2}{RSS_i}  = \frac{\sigma^2}{TSS_i} /(1-R_i^2) 

这里RSS和R2为剩余特征对第i个特征回归

  • 最小二乘同时也是 CCA dim y = 1 时的特殊情形
  • R-sqauredTSS=ESS+RSS, R^2=1-\frac{RSS}{TSS}=\frac{ESS}{TSS} ,增加额外的特征R-Squared一定不减
  • 对于高维 regression 我们定义Adjusted R-Squared: 1-\frac{RSS/(N-d)}{TSS/(N-1)} 有可能会负,且一定小于 R-squared。如果增加更多无意义的变量Adjusted R-squared 会下降R-squared和Adjusted R-squared 之间的差距会越来越大。
  • 对无截距项的R-squared, 如果依然按照有截距项的定义,不再保证[0,1]
  • 不再保证[0,1]的问题也会出现在 out of sample 上
  • 注意当特征个数大于样本个数的时候 X^T X 就会退化MLR能够完美拟合即残差为 0, 最优解不唯一
  • 当 X 本身不满秩即特征之间存在相关性时,也会退化。但最优预测依然唯一存在,只是最优解不再唯一。
  • 重复数据 (XT , XT )T 和数乘 λX 对系数估计和 y 预测没有影响。估计的方差会变小,所以T检验会变大R-Squared没有影响F 检验会被影响,主要是由于样本个数变化引起的 degree 变化。
  • 增加线性相关的特征,不会影响系数估计和 y 的预测,因此也不会影响 R-Squared。会改变F检验的值主要也是因为特征数目的改变引起 degree变化。
  • 增加线性相关的特征变量估计方差增加而减小T检验的值这个可以从 VIF中可以看出。整体的MSE也会因此变大。这也可以用来解释多重共线性时单个系数会不显著。
  • 较大的系数估计方差往往对应较大的系数即特征对输入变化非常敏感,使得估计不稳定,也就会带来过拟合的风险。
  • 增加额外的特征R-Squared一定不减。特征 v2 与 y 无关但与 v1 相关,增加 v2 可以使拟合变得更好(增大 R-squared也被解释成 v2 抑制了 v1 与 y 无关的部分,使得整体的拟合更加好。
  • 局部的比例A比B高但是整体比例B却比A高。隐藏变量的存在使得局部相关性和整体的相关性相反。
  • 增加新的变量后原来变量与新增变量越相关方差就会变得越大。因此整体的MSE也会因此变大。这也可以用来解释多重共线性时单个系数会不显著相关性增大了方差减小了 t 检验值)。
  • 我们有如下公式:
 
\hat y=X(X^TX)^{-1}X^Ty=:Hy  \\
\hat y - y=:e=(I-H) \epsilon 
 
\frac{RSS}{\sigma^2} \sim \chi^2_{N-d} \\
\frac{ESS}{\sigma^2} \sim \chi^2_{d-1}((Xθ)^T (H  \frac{1}{N} J)(Xθ)) 

J := ones(N,N)\\
\frac{TSS}{\sigma^2} \sim \chi^2_{N-1}((Xθ)^T (I  \frac{1}{N} J)(Xθ))
  • F检验 F= \frac{ESS/d-1}{RSS/N-d} = \sim F_{d-1,N-d}
  • T检验 T_i = \frac{\hat\theta_i}{\sqrt{\hat\sigma^2 c_{ii}}} \sim t_{N-d} ,这里 c_{ii}= (X^T X)^{1} 的对角线上第 i 个元素, \hat\sigma^2=RSS/(N-d) 。 p-value 越小或者 Ti 越大说明特征 xi 可以有效预测 y。 T 检验不显著的原因可能是特征本身与 y 无关或者特征过多把单个特征的解释性稀释了。
  • 增加线性相关的特征,不会影响系数估计和 y 的预测,因此也不会影响 R-Squared
  • 加入线性相关的特征会改变 F 检验的值,主要因为特征数目的改变引起 degree 变化
  • 多重共线性主要会影响:
    • 参数估计的方差增大,方差增大会导致:两个特征相关性高夹角很小,所以任一特征向量的微小变动都会引起它们张成的线性子空间大幅变动,而使得 y 的投影变化很大
    • 难以区分每个特征的重要性比如原本相似重要性的三个特征对某特征x3加入多重共线性使其变成会给你错误判断x1, x2不重要这与PCA类似
    • 变量的显著性 T 检验失去意义
  • 多重共线性的检测方法:
    • F 检验很显著(或者 R-Squared很大但是每个特征的T检验不显著
    • 定义容忍度 (Tolerance) 和方差扩大因子 (Variance Inflation Factor, VIF) T_i:= 1-R_i^2 , V_i=1/T_i 容忍度越小或者 VIF 越大,说明该特征的多重共线性就越严重。一般 10 以上的 VIF 被认为严重多重共线性5 以下则不需要处理;中间视情况而定。
    • 回归系数的正负号与预期的相反;
  • 解决多重共线性问题的方法包括:
    • 手动删除高相关的特征;
    • 增加样本容量;
    • Ridge, LASSO
    • PCR
    • 逐步回归 (Stepwise Regression): 利用加进线性相关的特征对拟合并没有太多改善。选择每个特征1维回归F检验最大作为第一变量然后选择第2,3...变量
  • LASSO和RIDGE中较大的正则系数给出较小的参数的先验方差, 以防止过拟合
  • LASSO求解:
    • 次梯度法。但并不能得到真正的稀疏解,只会使解的部分数值尽可能小;而近端梯度和坐标下降能得到。
    • 坐标梯度下降
    • 近端梯度下降
    • 修正 LARS。 但LARS 是给出不同 λ 的一系列 LASSO 的解,不能给出指定 λ 的解。
  • LASSO 的一些性质:
    • 在正交的假设下LASSO 的解是在 OLS 解的基础上套上了 soft thresholding function。可解释 LASSO 的稀疏性
    • LASSO 系数不像 Ridge 按比例缩小而是按绝对数值减少,因此可以达到 0
    • 当 LASSO 面对一组互相关的特征时它们只会选择其中一项特征。因此除去稀疏性Ridge往往比LASSO拥有较小的偏差而更好
    • \lambda \geq 2 \| X^T y \|_{\infty}所有的系数都会等于0
  • Ridge 的一些性质:
    • 样本矩阵正交时Ridge 的解与 OLS 的解差因子 \lambda+1
    • Ridge 是有偏估计
    • Ridge 是对 OLS 解的压缩 \hat \| \theta(\lambda)\| \leq \| \theta\| 。但单个系数也有可能随着 k 的增加而增加
    • Ridge 能够降低 OLS 的 MSE. 但当 λ 选取不恰当时MSE 也有可能高于 OLS 即虽然正则项降低了方差,但增加了更多的偏差。
    • 当 Ridge 面对一组互相关的特征时,它会趋于给相关特征分配相似的系数。
    • X 的列向量间相关性不高时,改变 λ 的值并不能显著的改善 MSE
    • Ridge 系数只是按比例缩小而不会真的达到 0. 因此 Ridge 没有 LASSO 那样的稀疏性来做特征选择。
  • 内核岭回归 (Kernel Ridge Regression, KRR)预测y可以写成与x相关的只有內积项的公式可以使用 SVM 中的核技巧代替内积
  • Reduce Multicollinearity 通过拓展矩阵ridge等价于OLS
  • 通过X 的紧奇异值分解
 
\hat y_{ridge}=U diag(\frac{\lambda_i}{\lambda_i+\lambda})U^Ty\\
\hat y_{OLS}=U I U^Ty\\
\hat y_{PCR}=U  diag(I_k, 0) U^Ty 

OLS 可以看做 λ = 0 的情形PCR 则可以看做前 k 个λ为0, 其余的主成分无穷. ridge为PCR的smoothingridge偏向于惩罚小的主成分。

  • λ 的选取:
    • 岭迹法 (ridge trace): 使得绝大多数参数估计的系数都有符合实际意义的绝对值和符号;或所有系数作为 λ 的函数相对稳定。
    • 使得所有 VIF ≤ 10.
    • 给定一个常数c > 1, 我们选取λ, s.t. RSS(λ) < cRSS.
  • ridge LASSO 都sensitive to the outliersridge对大系数的惩罚更重一点所以对outliers 更敏感Ridge 的主要作用是除去多重共线性而不是降低方差
  • 较大的系数估计方差往往对应较大的系数;正则化是参数估计 bias 和 variance 的权衡,正则化系数越大,参数估计的 variance 就小而 bias 就越大;
  • L2 正则有 Weight Decay 特点,但不会达到 0, 因此不会有 L1 的稀疏性。
  • 从梯度更新公式可以看出L2权重按比例缩小L1权重减去的是一个绝对数值
  • L1 的梯度下降方法:
    • 次梯度法
    • 近端梯度下降(Proximal Gradient Descent, PGD)。在OLS的梯度下降走一步基础上 \leq 阙值的分量归为0
    • 坐标下降
  • Best subset selection也就是L0 正则求解方法Forward-Stepwise Selection从没有特征开始逐项选择拟合最好的特征Backward-Stepwise Selection: 从全特征开始,逐项剔除拟合最差的特征
  • 弹性网 (Elastic Net):约束形状与 1 < p < 2 的范数约束形状十分相似,我们可以近似的看成一个介于 Ridge 和 LASSO 之间的Lp 正则
  • 弹性网不会像 LASSO 那样只选择其中一个,而是趋于把相关特征分配相似的系数,从而解决的 LASSO 丢失信息的问题。
  • 当样本矩阵正交时:
    • L0 \hat \theta_i I_{\theta_i \geq \sqrt{\lambda} }
    • L1: \hat \theta_i (1-\frac{\lambda}{|\hat \theta_i |})^+
    • L2: \frac{1}{1+\lambda} \hat \theta_i
    • Elastic Net: \frac{1}{1+\lambda_2} \hat \theta_i^{LASSO}
  • LASSO 像是L2和L0的结合压缩 OLS 系数的同时让一部分系数为 0.
  • 弹性网像是L2和l1的结合在LASSO的基础上再进行压缩。
  • LARS算法的工作原理可以简要概述为以下几个步骤
    • 初始化:所有回归系数初始化为零。
    • 选择变量:在每一步,选择当前与残差最相关的变量,将其加入到活跃集合中。
    • 计算方向:沿着这个方向向前移动,使得新的残差与所有在活跃集合中的变量等角度相关。
    • 更新系数:逐步增加选择变量的系数,直到另一个变量与残差同样相关,或某个变量的系数变为零。
    • 重复步骤:重复选择变量和更新系数的步骤,直到满足停止条件(如达到预定的变量数或误差标准)。
  • PLSR: 同时考虑 x 的方差y 的方差以及 x, y 之间的相关性。
  • CCA: 只考虑了 x, y 之间的相关性。Special case dim y = 1 : Linear regression
  • PCA: 只考虑了 x 的方差。
  • 高斯过程回归:非参数的贝叶斯回归方法,通过高斯过程先验对数据进行建模,进而预测新的数据点的输出的分布。可提供有意义的置信区间和后验样本以及预测值,而内核岭回归仅提供预测。
  • 逻辑斯蒂回归 (Logistic regression):
 
P(Y=1|X=x)=\frac{1}{1+e^{-x^T \theta}}:=logistic(x^T \theta) 
  • logistic 函数类似一个概率分布 (CDF)
  • 标签imbalance不会影响逻辑斯蒂回归的齐次项系数只会影响截距。所以适当调整阙值imbalance 并不会影响预测。
  • 逻辑斯蒂回归在样本线性可分时表现很差。因为当 ||θ|| → ∞ 时logistic 函数会成为在 0 点跳跃的阶梯函数。会使参数趋于无穷大来最大化似然函数。可加入 L1, L2 正则来避免过拟合。
  • 二阶的牛顿法求解逻辑斯蒂回归等价于求多个加权最小二乘解因此被称为Iteratively Reweighted Least Squares (IRLS)
  • 广义线性模型 (Generalized linear model, GLM)logistic函数换成任意一个函数。
  • 特别的probit(正态分布的CDF) 函数时候为probit 回归。logistic比probit有更粗的 tail. 因此当样本中有 outliers 或者取值跨度很大时logistic更加robust
  • 多类别逻辑回归:(up to a const.)
 
P(Y=k|X=x)=\frac{e^{x^T \theta_k}}{\sum\limits_{i=1}^K e^{x^T \theta_i}} 

Softmax 可以看做最值指标函数的smoothing。MLE等价于交叉熵损失函数。(i为样本 k为类)

 
\sum_i \sum_k 1_{y_i=k} \log P(Y=k|X=x_i) 
  • 分位回归: \min\limits_{\theta} \sum\limits_{y_i > x^T \theta} (y_i - x^T \theta) \tau + \sum\limits_{y_i < x^T \theta} ( x^T \theta - y_i) (1-\tau)
    • 能够更加全面的描述响应变量条件分布的全貌。
    • 对离群点则表现的更加稳健
    • 对误差项不要求很强的假设,因此对非正态而言更加稳健。

感知机

  • 分类函数 f(x)=sign(w^T x+b)
  • Loss函数 \sum\limits_{x_i 误分点} - y_i (w^T x+b)
  • 使用随机梯度下降法 (stochastic gradient descent, SGD)每次更新梯度 associate with 随机误分点。训练集线性不可分时,该算法不收敛。

K近邻法 (K-nearest neighbor, K-NN)

  • 选取最近的K个点集每个点加权评分。
  • 一般最优的 K 值通过交叉验证来获得。
  • kd搜索树是二叉搜索树 (binary search tree, BST), 在训练集中,找到按某个维度的中位数做划分
  • kd树搜索找出目标点 x 对应的叶节点 l 作为起始点;逐级往上搜索,如果新的最近点出现更新最近点;搜索到某个节点时,考察兄弟点, 考察某两集合,如果相交则对该点的子树递归,不相交则继续往上搜。
  • 当要搜寻 K 个最邻近点时:将最先搜索到的 K 个点作为初始值替换当前K个点中的最远距离的点。
  • 当样本点个数远大于维度: N \gg 2^k 时效率较高否则kd Tree 几乎和线性搜索一样遍历所有点。
  • Ball 树,为了解决 kd 树在高维上效率低下的问题:
    1. 先构建一个包含所有样本的最小球体;
    2. 从球中选择一个离球的中心最远的点然后选择第二个点离第一个点最远将球中所有的点分配到离这两个聚类中心最近的一个上然后计算每个聚类的中心以及聚类能够包含它所有数据点所需的最小半径。得到两个子超球体和kd树里左右子树对应
    3. 对于这两个子超球体递归得到ball 树。
  • ball Tree 的结点个数由样本个数确定

朴素贝叶斯法

  • 独立假设下
 
\max\limits_k  P(Y=c_k| X=x ) = \max\limits_k P(Y=c_k) \prod\limits_i P(X^i =x^i|Y=c_k) 
  • 最大化 Y 的后验概率MAP实际上就是最小化 0-1损失函数 (L0-norm) 下的贝叶斯风险。
  • 朴素贝叶斯由于简单的无关假设,是一种高偏差低方差的算法。尤其是特征之间存现相关时,偏差会比较大。
  • 独立性假设做一定的放松,独依赖估计(One-Dependent Estimator, ODE)。SPODE (Super-Parent ODE)假设所有特征都依赖于同一个特征超父然后通过交叉验证等模型选择方法来确定超父。AODE (Average ODE)将样本的特征依次作为超父来计算概率最后求和。
  • 每个特征的独立性可以 conditional on k 个父特征拓展为 KDE。随着k增加所需的训练样本数量将以指数级增加。KDE 的表述即是贝叶斯网

最大熵模型

  • 寻求最优的 P(Y|X) 最大化他的经验条件熵max H(Y|X),在某些给定特征函数相关的约束条件下。
  • 转化为等价的对偶极小极大问题:\max\limits_\omega \min\limits_P L(P,\omega)
  • 对偶极小的解: P_\omega(y|x) = \frac{1}{Z(\omega,x)} exp(\sum \omega_i f_i(x,y)) ,这里 f_i 为特征函数。因此最大熵模型与逻辑斯蒂回归模型类似都被叫做对数线性模型
  • \omega 为参数的模型 P_\omega(y|x) 的MLE等同于上面的对偶极大 \max\limits_\omega
  • 最优化问题可以使用经典的牛顿法和拟牛顿法, 还有一种迭代尺度法 (improved iterative scaling, IIS): 找到对数似然的一个可以迭代递增的下界,再通过最大化下界迭代求解

支持向量机 (SVM)

  • 函数间隔 y_i(w_i^T x+ b) ;几何间隔 y_i(w_i^T x+ b)/\|\omega\|
  • 可分SVM \min\limits_{\omega,b} \|\omega\|^2 /2 s.t. y_i(w_i^T x+ b)-1 \geq 0
  • 不可分SVM原始问题
 
\min\limits_{\omega,b,\xi} \|\omega\|^2 /2   + C \sum \xi_i  \\
\, \\
 s.t. \,\,\, y_i(w_i^T x+ b) \geq 1- \xi_i,  \, \,  \xi_i \geq 0 
  • 等价的 KKT condition (原始变量 \omega,b,\xi ,对偶变量 \alpha_i, \mu_i )
    • \alpha_i=0 xi在临界平面之内
    • 0<\alpha_i < C xi 在临界平面上
    • \alpha_i=C :ξ < 1xi 越过临界超平面但在分离平面正确一侧;ξ = 1xi 在分离平面上;ξ > 1xi 在分离平面错误一侧。
  • 把所有 \alpha_i >0 即所有越过临界平面的 xi 叫做软间隔 (soft margin) 的支持向量
  • SVM 具有稀疏性(样本):分离平面即分类器完全由支持向量(α > 0来决定。
  • 不可分SVM对偶问题
  
\min\limits_{\alpha} \frac{1}{2} \sum\limits_{i,j} \alpha_i \alpha_j y_i y_j (x_i^T x_j) - \sum\limits_i \alpha_i 

\sum\limits_i  \alpha_i y_i=0  , \,\,  0\leq \alpha_i \leq C  

       对偶问题最优解与原问题之间关系

 
\omega=\sum \alpha_iy_ix_i\\
b=y_j-\sum y_i \alpha_i(x_i^T x_j) 
  • 合页损失函数 (hinge loss function),无约束优化问题:
 
\min\limits_{\omega,b} C(1-y_i(w_i^T x+ b))^+ +  \|\omega\|^2/2 

SVM是一种自动正则化的方法。能够很好的处理高维数据。因为它只取决于线性超平面和支持向量计算成本不会随着维数的增加而急剧增加。

  • 核技巧:不直接定义点的映射,而是定义映射后的內积即核函数代替原空间里的內积
  • 序列最小化求解对偶问题 (sequential minimal optimization, SMO)
    • 每次只优化两个 α1, α2固定其他
    • 调整b使第一步中的最优解满足KKT。
    • 选取另外一对α直到所有的α都满足KKT。
  • 多类SVM
    • 一对多法 (one-versus-rest, OVR; one-versus-all): 把某个类别的样本归为一类其他剩余的样本归为另一类需要k个SVM将未知样本分类为具有最大分类函数值。这种方法存在 bia。
    • 一对一法 (one-versus-one, OVO): 在任意两类样本之间设计一个SVM。分类时用最后得票最多的类别
  • SVR回归损失函数 \min\limits_{\omega,b} C \sum (|y_i-(w_i^T x+ b)|-\epsilon)^+ + \|\omega\|^2/2 考虑上/下松弛变量,等价于

 \min C \sum (\xi_i + \hat\xi_i  ) +  \|\omega\|^2/2\\
s.t. \, \,0 \leq\xi_i , \hat\xi_i ;  \,  \,  -\epsilon - \hat\xi_i  \leq  y_i-(w_i^T x+ b)  \leq  \epsilon  + \xi_i 

类似SVR的对偶问题得到原变量和对偶变量关系 \omega = \sum(\alpha_i-\hat\alpha_i)x_i ,只有在带宽内的点有 \alpha_i-\hat\alpha_i=0

  • 对比岭回归KRR和SVR。类似都使用 L2 正则都可以使用核技巧。不同损失函数不同KRR 有解析解KRR对中等规模训练速度通常更快SVR适用于较大的训练集SVR稀疏性预测比KRR快。
  • One Class SVM

 \min\limits_{r,o}  V(r,o)+ C \sum \xi_i\\
s.t. \,\, \|x_i-o\|\leq r+ \xi_i; \,\,\, \xi_i \geq0 
  • 校准概率 (Calibrate Probability):在 score g(xi)基础上再训练一个 [0, 1] 之间的函数 (calibration regressor) 来表示xi被预测成1的校准概率。

决策树

构建决策树

  • 选择最大的信息增益ID3/信息增益比C4.5/最小相对基尼指数的特征进行分裂
  • 用信息增益比代替是因为要排除那些提供很多信息但同时自身熵也很大的特征。比如取值非常多的特征,每个样本被该特征分裂成节点都是 1 个样本
  • 回归树 (regression tree),通过最小化平方误差来寻找最优特征和切分
  • 利用某叶结点对应的划分的子空间中样本个数/总样本可以作为输入X的概率分布估计。
  • 决策树的优点:易于解释;不是很依赖于预处理;缺失值和异常点不敏感。
  • 决策树的缺点计算量较大连续特征类别化样本扰动敏感过拟合特征选择一。对multicollinearity鲁棒弱 interaction 的特征低效;不是概率模型

剪枝

  • 预剪枝 (pre-pruning),以下值达到阙值:所有样本点属于类别个数;样本个数;树的深度;衡量指标的值
  • 后剪枝 (post-pruning)
  • 代价函数 C_\alpha(T):=C(T)+\alpha |T| , C(T) 为决策树的叶节点熵加权和
  • C_\alpha(T-T_t)- C_\alpha(T)= C_\alpha(T_t^p) - C_\alpha(T_t) T_t 为减掉的子树, T_t^p 为剪枝后的叶节点。等式说明子树代价函数的剪枝变化=整体树代价函数的剪枝变化
  • CART 剪枝,逐步减去使得 g(t) 最小的 t ,这里 g(t)=\frac{C(T_t^p)-C(T_t)}{|T_t|-1} ,构造决策树包含序列 T_{i+1} \subset T_i 。 满足性质:(1) \alpha_{i+1} \geq \alpha_i (2) \forall \alpha \in [\alpha_i, \alpha_{i+1}) T_i 是最优的。

类别特征

  • 独热编码 (one-hot encoding)缺点:划分样本不平衡,某个划分几乎就是原始样本集;把样本划分到很多过分零散的小空间上。

提升方法

AdaBoost

  • 步骤1等权重初始化数据2计算Gm的(加权)错误率 e_m 选取错误最小的分类器作为m轮的基础分类器3计算Gm的权重 \alpha_m =\frac{1}{2}\log\frac{1-e_m}{e_m} (为了最小化指数损失函数);5更新数据权重误分类的样本点权值扩大正确的减小。6重复3-57得到最终分类器 f(x)=sign(\sum \alpha_m G_m(x))
  • 加法模型 (additive model),通常使用向前分布算法 (forward stagewise algorithm)
  • AdaBoost 算法是向前分步法的特例,逐步优化损失函数:
 
(\alpha_m,G_m) = \arg\min\limits_{\alpha,G} \sum\limits_{样本i} exp(-y_i (\sum\limits_{l=1}^{m-1}\alpha_lG_l(x_i) + \alpha  G(x) )   ) 

GBDT 梯度提升树

  • 梯度提升树 (Gradient Boosting Decision Tree,GBDT)
    • 初始化 f_0(x) 为一最优常数函数;
    • 通过梯度计算残差 r_m^i=-\frac{\partial L(y_i,f)}{\partial f}|_{f=f_{m-1}(x_i)}
    • 对数据集合 \{(x_i, r^i_m) \}_i 拟合出m轮基本树的叶节点划分(不需要每个学习器拟合太好来节省计算时间)
    • 优化计算划分上的输出值(当损失函数是平方误差时,就是回归树里用的均值)
    • 更新 f_m(x) = f_{m-1}(x)+ m轮拟合出的树
  • 每一轮拟合残差必须与原始的损失函数一致
  • 对于平方损失来说,梯度计算的“残差”=y f(x)
  • 分类问题的区别: P(Y=1|x)=\frac{1}{1+exp(-f_m(x))} 损失函数是y的交叉熵残差 r_m^i= y_i - \frac{1}{1+exp(-f_{m-1}(x_i))}
  • AdaBoost每一轮没有在拟合残差而是直接最小化指数损失而梯度提升树在拟合残差。

XGBoost

  • XGBoost叶节点划分采用按层生长 (level(depth)-wise learning) 每一层的所有 leaf 都分裂逐层往下分裂。对每个特征进行线性扫描找出Gain = Obj_unsplit Obj_split最大的切分点然后再遍历所有特征找出最大的特征分裂。
  • XGBoost优化计算划分上的输出值最小化目标函数使用二阶的牛顿法对损失函数 L(y_i, f)f=f_{m-1}(x_i) 二阶Taylor展开。
  • 因为是按层生长XGboost 通常会规定最大深度然后从下往上后剪枝。这是因为分裂虽然是最优但依然有可能Gain是负的。
  • 防止过拟合:
    • shrinkage参数: f_m = f_{m1} + ϵ Tree_m
    • 列(特征)抽样 (column subsampling): 与随机森林类似, 每次随机地从所有特征中抽取少量的特征进行分裂。
  • XGBoost按层生长带来了很多没必要的开销。 LightGBM中我们采用leaf-wise learning
  • DART (Dropouts meet Multiple Additive Regression Trees): 训练第m棵树时随机丢弃前面m 1棵树中的K棵。同时需要数乘正则化。后面提到的随机森林就可以看做DART dropout 所有的树。

LightGBM

  • XGBoost不足预排序后需要保存特征值及排序后的索引因此内存占用和计算消耗巨大且最佳切分点容易过拟合预排序后特征对梯度的访问是一种随机访问对内存 (cache) 不友好。
  • LightGBM (Light Gradient Boosting Machines) :更少的内存(直方图 (Histogram))、更少的样本 (GOSS)、更少的特征 (EFB)。
  • 直方图将数据离散化成K个桶(bin)把数据放入对应的桶中然后寻找K个桶的最佳切分点来近似以减少计算量。优势简化了计算不是很精确的分割起到了正则化的效果同时提升也不需要单独学习器过高的精度直方图差加速分裂后左右子树需要重新计算直方图但其中一个直方图确定时另外一个可以由父直方图减去得到。
  • 直接丢掉小梯度数据可提高速度但是也降低精度。为了权衡这两,考虑单边梯度采样算法 (Gradient-based One-Side Sampling, GOSS): 保留前a × 100%大梯度数据同时在抛弃的小梯度样本中再随机选取b × 100%。需要在后面取出的小梯度样本前面乘一个常数 (1 a)/b, 以尽量保证它的原始分布。
  • 互斥特征合并 (Exclusive Feature Bundling, EFB):把互斥特征(即特征不会同时为非零值,像 one-hot捆绑成一个特征来减少特征的维度。捆绑把冲突样本总个数小于阙值的几个特征捆绑成一个bundle合并为了确保bundle中每个特征可以被区分开来我们对特征进行平移确保不同特征的值区间没有交集。

LightGBM还用到了以下技术

  • Leaf-wise分裂每次从当前所有叶子中找到 Gain 最大一般也是数据量最大的一个叶子进行分裂。优点Leaf-wise 可以降低更多的误差,得到更好的精度。缺点:树的深度较深,产生过拟合。
  • 并行学习 (Parallel Learning):特征并行、数据并行?
  • 顺序访问LightGBM 因为是将样本投入 bin 中,所以是顺序访问,对 cache 比较友好。
  • 类别特征LightGBM 按照某一特征类别的梯度统计排序以后,然后按照最优的切分分裂。

CatBoost

  • CatBoost作用处理 GBDT 中的类别特征使用Ordered TS解决由类别特征编码造成的目标泄露 (Target Leakage)问题用Ordered Boosting解决由梯度提升方法造成的预测偏移 (Prediction shift)问题。
  • one-hot编码面对大量类别会造成维度灾难。目标变量统计 (Target Statistics) 使用类别标签的统计量来数值化特征的类别。
    • Greedy TS: 使用所有相同类别对应的标签均值来数字化类别。就是目标 (自身标签) 泄露的由来。
    • Holdout TS: 训练集一分为二DTS Dtrain。用DTS来独立地计算训练集Dtrain中样本的TS。 但是却大大减少了训练样本的数量。
    • Leave-one-out TS: 训练集样本xi使用D/xi计算TS; 测试集样本使用训练集全样本计算TS。但两种类别的条件分布不一致。
  • CatBoost使用Ordered TS
    • 对训练集样本随机排序;
    • 对训练集样本xi使用它置换下前面的历史样本计算TS
    • 对测试集样本xi使用训练集全样本计算TS。
  • Ordered Boosting希望m1轮训练所用的样本和m轮计算残差所用的样本应该是各自独立采样这样便可获得无偏残差 (Unshifted Residuals)。样本xi的m轮残差只在它用历史样本训练的学习器fm-1上来计算。

集成学习

Bagging 随机森林

  • 集成学习(Ensemble learning)包括提、装袋Bagging、Stacking。
  • 如果装袋的弱分类器是决策树,则称为随机森林(Random Forest, RF)
    • 自助法在训练数据中生成M组数据
    • 随机地从所有特征中抽取少量的特征(一般√特征总数)。在这特征子集中用决策树的方法生成节点,平行的训练多个弱分类器。(随机抽取的目的是避免某些信息增益比较高的特征频繁出现而使决策树之间相关度高);
    • 对M个弱分类器的输出求平均回归或者取众数分类
  • 提升是提高精度,降低偏置;装袋在不增加偏置的情况下降低方差。
  • 对于样本x, 装袋也可以把弱分类器的类别输出频率作为y=f(x)的概率分布估计。
  • 自助采样可以产近1/3的袋外样本没有被用到的, 可当做测试集来计算模型的袋外误差 (OOB Error)。
  • 特征个数越多RF 树的个数也需要越多。因为足够多的树才能保证每个特征等概率被选上。
  • 增加RF树的个数不会overfitting, 但由于fully grown tree可能过拟合增加这样的树就有可能过拟合。

RF在重要性选择的应用

  • Gini Importance / Mean Decrease in Impurity (MDI)对于每棵树计算每个特征在所有分裂节点上减少的Gini不纯度总和然后将所有树的结果相加并除以树的总数。缺点RF求平均稀释相关特征导致所有的特征重要性都被低估。这一点 GBDT 就会选出其中一个而优于RF。
  • permutation Importance / Mean Decrease in Accuracy (MDA):在 OOB数据上计算OOB Error1; 随机打乱某特征取值得到OOB Error2。Error2-Error1越大说明该特征越重要。优点避免过拟合对特征选择带来的 偏差。缺点当有相关特征存在时MDA容易低估特征的重要性。
  • Boruta 对特征重要性的选择类似于filtering, 会保留所有相关的重要特征。
  • 决策树可由以下指标来选取特征重要性:
    • weight: 特征被分裂次数。
    • cover: 被分割的样本数即用分裂样本数作为权重加权分裂次数。假设在某次分裂中当前节点包含n个样本那么这次分裂的样本数就是n。
    • gain: 由该特征分裂前后损失函数的减少总量。每次分裂前后损失函数如均方误差、Gini不纯度等的减少量之和。
  • 两样本近似性 Prox_{ij}:= 两样本被分到同一个叶节点的树的棵数/RF总棵数。作用
    • 找出异常点 (outlier location)。 OL_i = \frac{|D|}{\sum\limits_{x_k \in D}Prox_{ik}^2} 越大说明xi与同类样本的近似性越小就越有可能是异常点。
    • 聚类填补缺失值 (Missing value replacement)缺失xi情况1用同类未缺失样本的众数离散或者中位数连续暴力填补2建立RF考虑没有缺失样本xjProxij作为权重来计算加权众数或者均值3重复步骤2建立RF。
  • 孤立森林 (Isolation Forest, IForest)是无监督学习,它的思想是拥有异常点的样本训练树结构时,很快就会把异常点孤立地分配到一个叶节点中,异常点在树中深度很浅。为无监督学习,因此使用随机选取特征和最佳切分点。
  • IForest仅对全局稀疏点敏感不擅长处理局部的相对稀疏点
  • 极限随机树(extremely randomized trees, ExtraTrees)。两种树都特征随机、模型随机。随机森林样本随机(自助法),最优分裂;极限随机树分裂随机,使用全样本。

Stacking

  • Stacking步骤数据集 T=\{(x_i,y_i)\}
    • 训练集T上训练好 p_k
    • z_i:= (p_1(x_i),...,p_K(x_i))
    • 元学习器 f 在 \{(z_i,y_i)\} 上学习;
    • 预测 y=f(p_1(x),...,p_K(x)) .
  • 直接用初级学习器的训练集来产生次级训练集,则过拟合风险会比较大。
  • 解决方法: T=T_1 \cup,...,\cup T_J T_j^C 训练pp作用 T_j 产生 T_j^* T^*=T_1^* \cup,...,\cup T_J^* f 在 T^* 上学习。

EM算法

  • 求解含有隐变量模型 p(x;\theta)=\sum\limits_z p(x,z;\theta) 最大似然估计:
    • E步 \max\limits_\theta p(x;\theta) \geq \max\limits_\theta E_{p(Z|X,\theta_i)}(\log(p(X,Z;\theta)))=: \max\limits_\theta Q(\theta,\theta_i)
    • M步 \theta_{i+1}= \arg \max\limits_\theta Q(\theta,\theta_i)
  • 不直接求MLE因为X分布很复杂Z;\thetaX|Z;\theta 简单;不一定是凸函数难以优化或者最大值不存在。
  • 计算 p(Z|X,\theta_i) 有时候容易(当 p(X;θ) 容易知道时)用贝叶斯公式;有时候比较难,用变分推断。
  • EM只保证收敛到梯度为 0 的点。
  • 对任意分布 q(z) 非z变量本来的分布 p(z|x;\theta) ),有等式

 \log p(X;\theta) = E_q \big[\log \frac{p(X,Z;\theta)}{q(Z)}\big] - E_q \big[\log \frac{p(Z|X;\theta)}{q(Z)}\big] \\
\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\, =: ELBO(q, X;\theta)+ KL(q(z)|p(z|x;\theta)) 

ELBO为证据下界 (Evidence Lower Bound, ELBO)。EM算法也可用ELBO解释因为 KL\geq 0 可通过最大化ELBO来求 p(X;\theta) 的MLE。但是为了下界更贴合选择 q(z)=p(z|x;\theta_i) (对应E步)。

  • 变分推断的思想:通过优化参数 \phi ,将复杂的后验分布 q(z|x) 用一个更简单的分布 q(z;\phi) 来近似。ELBO等式左边不依赖于 \phi 所以该最优近似等价于优化ELBO。为了化简计算q(z;\phi) 做分量无关即平均场变分族 (mean-field variational family)的假设。此时变分推断为逐个坐标依次更新,该法称为坐标上升变分推断 (Coordinate Ascent Variational Inference, CAVI)。
  • VAE

隐马尔可夫模型 (HMM)

  • 隐马尔可夫模型Hidden Markov Model简称HMM描述一个含有隐含未知参数的马尔可夫过程。状态本身是不可见的只能通过观察到的输出结果来推断状态序列。

    • 状态集合:模型中所有可能的状态的集合,通常表示为 ( S = {s_1, s_2, ..., s_N} )。
    • 观测集合:与状态集合相关联的观测结果的集合,通常表示为 ( O = {o_1, o_2, ..., o_M} )。
    • 状态转移概率:在任意两个状态之间转移的概率,通常表示为 ( a_{ij} = P(s_{t+1} = s_j | s_t = s_i) )。
    • 观测概率:在某个状态下观测到某个结果的概率,通常表示为 ( b_i(o) = P(o_t | s_t = s_i) )。
    • 初始状态概率:模型开始时各个状态的概率分布,通常表示为 ( \pi_i = P(s_1 = s_i) )。
  • 隐马尔可夫模型的三个主要问题:

    • 评估问题Evaluation给定模型参数和一个观测序列计算这个序列出现的概率。采用前向-后向算法Forward-Backward Algorithm解决一种动态规划方法。
    • 解码问题Decoding给定模型参数和观测序列寻找最有可能产生这个观测序列的状态序列。维特比算法Viterbi Algorithm解决一种动态规划方法。
    • 学习问题Learning给定观测序列调整模型参数以最大化观测序列出现的概率。鲍姆-韦尔奇算法Baum-Welch Algorithm一种期望最大化EM算法。

条件随机场 (CRF)

  • 成对马尔可夫性 (pairwise Markov): 对任意两node v ≁ w; 局部马尔可夫性 (local Markov): 如果对任意一个节点v和邻居的外部; 全局马尔可夫性 (global markov): 任意两个被C分开的点集A, B。
  • 全局(强于)局部(强于)成对。在正概率下三者等价。
  • 一个无向图满足以上任意一个马尔可夫性,则我们称其为概率无向图 (probability undirected graph) 或者马尔可夫随机场 (Markov random field).
  • 一个点集中任意两点都有边连接我们称其为无向图的一个团 (clique), 若没有包含他的更大的团即不能再加进点成团,则我们称为最大团 (maximal clique)。
  • 概率无向图的联合分布可以被最大团分解。
  • 设Y的无向图构成一个马尔科夫随机场给定X称P(Y|X)是条件随机场 (conditional random field, CRF), 如果在条件X下每个点的分布只与其相邻点有关。
  • 类似HMM也有三个问题和算法。
  • 模型联系
模型联系 非序列 序列化
生成模型 朴素贝叶斯 HMM
判别模型 最大熵(逻辑斯蒂) CRF

数据处理和网络优化

交叉验证

  • 留 P 法 (Leave P Out Cross Validation, LPOCV): 选P个作为验证集剩下的训练集。跑遍所有可能即一共验证 C_P^N 次。P = 1时叫做留一法 (Leave One Out, LOOCV),几乎无偏但计算消耗很大。
  • K-Fold交叉验证(K-fold CV)把样本集分成K份K 1份作为训练集剩下的1份作为验证集最后取K次验证的平均误差来评估模型当K = N 时就是LOOCV也可重复多次取平均即多次K折交叉验证 (Repeated K-Fold CV)当类别样本数量不均匀时可以分别在类别内做划分即Stratified K-fold
  • K的选取是一个trade-offK越大训练集的数据越多模型的Bias越小训练集之前的相关性越大而导致更大的Variance。

正则化

  • 权重衰减 (Weight Decay): \theta_{k+1} ← (1 β) \theta_{k} \alpha g_k , 梯度更新时引入一个小的衰减系数。简单情况与L2正则效果相同复杂不一定
  • 提前停止 (Early Stop): 在验证集上错误率小于阙值时就停止更新。
  • 数据增强 (Data Augmentation): 主要应用于图像处理包括旋转Rotation、翻转Flip、缩放Zoom In/Out、平移Shift将图、加噪声Noise等。
  • 标签平滑 (Label Smoothing): 对 x 的标签 one-hot 向量增加噪声平滑。
  • 丢弃法 (Dropout Method): 隐藏层中随机选择一部分神经元,并将它们的输出值设为零。每次迭代都相当于训练一个不同的子网络,这些子网络共享原网络的参数,最终的网络可以近似看作集成学习了指数级个不同网络的组合模型。
  • 特征选择特征抽样剪枝Bagging提升

归一化

  • 目的:
    • 便于不同量纲
    • 加快梯度下降。某个特征特别的大,很大可能导致梯度不平衡;归一化样本让参数等高线接近圆形。
    • 靠近Sigmoid函数的中心而远离梯度为0的饱和区域
    • 避免太大数据的数值问题
  • 方法:归一化:把数据压缩到[0, 1];标准化。
  • 需要标准化的算法PCASVM, KNN, 聚类回归模型虽然对于y的预测没有影响但影响梯度下降速度有惩罚项的回归如Lasso,Ridge方差大的变量系数小会受到较小的惩罚特征选择/提取中需要根据一些统计检测或者评分函数做特征排名。
  • 不需要标准化的算法:概率模型(逻辑回归),树模型,集成学习(随机森林,提升树)

处理类别不平衡

  • 随机过采样:随机复制少数类样本,可能过拟合。
  • SMOTE (synthetic minority oversampling technique)对少数类样本使用KNN选取K个邻近少数点邻近点和中心点做随机插值。问题一类K 邻近点全是少数点不带什么新信息另一类K邻近点都是多数点可能是噪声。
  • Border-line SMOTE为解决SMOTE的问题只选取那些多数类和少数类的“边界点”作为中心点。
  • 随机欠采样:随机删除多数类的样本,可能会丢失重要信息的点。
  • 数据清洗方法 (data cleaning techniques):删除 Tomek Links 中的多数点Edited Nearest Neighbours(ENN) 剔除多数类的一个点如果其K个近邻点有超过一半都不属于多数类。问题无法控制欠采样的数量。
  • EasyEnsemble将多数类随机分成数量与少数类一样的多份子样本再集成。
  • BalanceCascade每次从多数类中抽出和少数类数目一样的子样本

数据预处理

  • 标准/归一化
  • 填补缺失值:
    • 无监督情况下缺失某些特征:统计填补,同一特征未缺失样本的中位数/均值。可能引入噪声或者会改变特征原有的分布;标签填补:局部近似样本的统计量填充;
    • 缺失标签聚类填补KNN填补领近点的众数/均值;把缺失的特征当做标签缺失时,该方法可用在上面的无监督情况。
    • 缺失特征:随机森林; 回归填补将已知特征值和标签代入回归方程来反解出缺失特征值极大似然填补把缺失值的x作为隐含变量使用EM算法估计。
  • 处理样本不平衡:过采样和欠采样
  • 噪声 (noise)/异常值/离群点outliers处理均方差几个方差以外的数据点聚类/DBSCAN随机森林/孤立森林One Class SVMPCA
  • 降维:特征提取;特征选择;特征捆绑;
  • 类别特征编码: (男, 女, 收入高, 中, 低),则样本:(男, 高) → (1,0,1,0,0)
  • 离散化 (Discretization),也叫量化 (quantization) 或者装箱 (binning)。
  • 二值化:将数值特征用阈值过滤得到布尔值。

梯度下降

  • 非常大的神经网络中,大部分的局部最小解是等价,没有必要找全局最小值,这反而可能导致过拟合。主要是想逃离鞍点 (Saddle Point)和尖锐最小值 (Sharp Minima)。

批量大小

  • 批量大小越大,随机梯度的方差越小。线性缩放规则 (Linear Scaling Rule): 当批量大小增加 m 倍时,学习率也增加 m 倍,该规则在批量大小比较小时适用。批量越大,越有可能收敛到尖锐最小值;批量越小,越有可能收敛到平坦最小值。

学习率

  • 学习率在前面需要大来保证收敛速度,在最优点附近时要小以避免来回振荡。但是在刚开始训练时,由于参数是随机初始化的,梯度大,大的学习率会使训练不稳定。为此,最初几轮采用小的学习率,该方法称为学习率预热 (Learning Rate Warmup)。逐渐预热(Gradual Warmup) \alpha_t = \alpha_0 \frac{t}{T_W}
  • 固定衰减学习率:分段常数衰减;逆时衰减 \frac{1}{1+\beta t} ;指数衰减;余弦衰减。
  • 周期性学习率:当鞍点或者尖锐最小值附近时,增大学习率有助于逃离;当处于平坦时,增大学习率依然有可能在该平坦最小值的吸引域 (Basin of Attraction) 内。因此考虑周期性学习率来逃离:三角循环学习率 (Triangular Cyclic Learning Rate);带热重启的随机梯度下降 (Stochastic Gradient Descent with Warm Restarts, SGDR): 每间隔一定周期后重新初始化为某个预先设定值,然后逐渐衰减。
  • 自适应学习率
    • AdaGrad算法(Adaptive Gradient Algorithm):较大的梯度累积使用相对较小的学习率;较小的梯度累积使用相对较大的学习率。但整体是学习率逐渐缩小。 G_t=\sum\limits_{k=0}^tg^k\odot g^k 放到分母上。缺点:学习率是个严格递减的过程,所以经过一定次数的迭代学习率非常小,很难再找到最优点。
    • RMSprop 算法 (Root Mean Square Propagation):为了解决上面缺点,对梯度平方累积使用了指数加权移动平均 (Exponentially Weighted Moving Average, EWMA) G_t 中指数加权求和。
    • AdaDelta算法在RMSprop算法基础上对参数的增量进行EWMA放到分子上。在一定程度上抑制学习率的波动即分子分母有互相抵消的效果有相同量纲而避免初始学习率的选取

梯度估计

  • 动量法 (Momentum Method): 对参数增量使用加权移动平均(Weighted Moving Average, WMA)。最近一段时间内的梯度方向不一致时,比如在迭代后期收敛值附近,动量法会起到减速作用,增加稳定性;相反,当方向都一致时比如在迭代初期,动量法会起到加速作用,可加速。自适应学习率在迭代的任意时刻增加过快时自动的减速;动量法是在接近收敛点的时候自动减速。
  • Nesterov 动量法:将梯度取在前面动量更新后的参数上。
  • Adam算法(Adaptive Moment Estimation Algorithm): 动量法和 RMSprop的联合对梯度和梯度平方都是用 EWMA。
  • 梯度截断像RNN中梯度爆炸问题大的梯度更新参数反而远离最优点。

初始化

  • 预训练初始化 (Pre-trained Initialization)。
  • 固定值初始化比如偏置通常用0在LSTM遗忘门中偏置通常初始化为 1或2; 对于使用ReLU的神经元有时也可以将偏置设为0.01使得ReLU神经元在训练初期更容易激活。
  • 神经网络不能把权重全部初始化成一样或0这会导致每一层的神经元值相同甚至恒为0。线性规划和逻辑斯蒂回系数可以全部初始化为0因为线性回归没有激活函数逻辑斯蒂函数不过原点。
  • 随机初始化 (Random Initialization):从一些固定方差的随机器中产生初始值。
  • 为了缓解梯度消失或爆炸,尽可能保持每个神经元的输入和输出的方差一致,根据神经元的连接数量来自适应地调整初始化分布的方差,这类方法称为方差缩放 (Variance Scaling)。 Var(\omega_i)=\frac{1}{M_{l-1}}
  • Xavier 初始化: Var(\omega_i)=\frac{1}{(M_{l-1}+M_l)/2} .
  • He 初始化ReLU激活通常有一半的神经元输出为0, 因此: Var(\omega_i)=\frac{2}{M_{l-1}}
  • 另外为了避免梯度消失或梯度爆炸,我们希望误差项在反向传播中具有范数保持性 (Norm-Preserving)选取W为正交矩阵。方法标准高斯分布初始化矩阵用奇异值分解得到。

超参数优化

  • 超参数 (Hyperparameter) 包括:
    • 网络结构:连接关系、层数、每层的神经元数量、激活函数类型等;
    • 优化参数,包括优化方法、学习率、小批量样本数量等;
    • 正则化系数。
  • 超参数优化方法网格搜索 (Grid Search) 和随机搜索 (Random Search)
  • 贝叶斯优化:利用前面采集的超参及其函数值, H_t = \{(x_1, y_1), · · · , (x_t, y_t)\} 建立高斯过程回归,来选取下一个待搜索的点。

神经网络归一化

  • 逐层归一化 (Layer-wise Normalization) 好处:
    • 神经网络低层输入的微小变化在非线性激活函数作用下都会引起高层输入的分布变化Internal Covariate Shift (ICS)。对每一个神经层的输入进行归一化操作,使其分布保持稳定。
    • 使大部分神经层的输入处于不饱和区域,从而让梯度变大,避免梯度消失问题。
  • 批量归一化(Batch Normalization, BN):每一层输入样本维归一化。训练时小批量样本,测试时全样本。
  • 批量归一化缺点:
    • 要求足够大的批量大小。难应用到在线学习。
    • 很难处理像RNN这样的动态序列网络。序列长度可能不一致后续的隐藏序列长度也不一致。这可能导致随着时间推移样本会越来越少使得样本均值和方差不可信。
    • 要求测试集样本时间序列长度必须小于训练集,否则超过的部分就没有可以用的均值和方差。
  • 层归一化(Layer Normalization, LN): 逐层对每个神经元即每个分量维度做归一化。
  • BN可以看做样本矩阵样本数 * 特征维度列方向或样本维的归一化LN行方向上或特征维的归一化。
  • 权重归一化 (Weight Normalization): 将权重矩阵 W 的行向量在参数化成长度和单位向量: W_{i,:} = g_i e_i
  • 局部响应归一化 (Local Response Normalization, LRN):卷积层的输出特征映射 Y\in R^{M ×N ×P} ,切片矩阵 Y^p \in R^{M ×N } 。LRN为 Y^p 除以类似某邻域切片 Y^{p'} 平方和。
  • 如果有个神经元的活性值非常大LRN能使和它邻近的特征映射中P 方向上的神经元近似地归一化为0, 从而起到抑制作用,增强模型的泛化能力。
  • 最大汇聚也有抑制作用,区别是对同一个特征映射中的邻近位置中的神经元。

前馈神经网络

  • FNN \phi: x=a^{(0)} \rightarrow z^{(1)} \rightarrow a^{(1)} \rightarrow \dots \rightarrow z^{(L)} \rightarrow a^{(L)}
  • 反向传播算法的FNN训练过程
    • 正向计算每一层 z^{(l)}, a^{(l)} ;
    • 反向计算每一层 \delta^{(l)}:= \frac{\partial L}{\partial z^{(l)}} = f'(z^{(l)}) \odot ( (W^{(l+1)})^T \delta^{(l+1)} ) ;
    • 计算每一层梯度 \frac{\partial L}{\partial W^{(l)}}=\delta^{(l)}(a^{(l-1)})^T \frac{\partial L}{\partial b^{(l)}}=\delta^{(l)}
  • 这里我们用z(l)做中间变量因为容易计算导数
  • 当网络层数很深时,梯度就会不停衰减,这就是所谓的梯度消失 (Vanishing Gradient) 问题。消失是指相比较当前迭代的参数值W(l)梯度值非常小即梯度对参数的更新不明显。
  • 梯度消失的方法:
    • 学习率;
    • ReLU;
    • 残差网络;
    • 归一化(也适用梯度爆炸);
    • 初始化(也适用梯度爆炸);
    • 对特定神经网络RNN: LSTMGAN: W-GAN。

卷积神经网络

  • 卷积运算实际上是把互相关中的卷积核旋转180◦
  • 卷积核的步长 (Stride) S 是指卷积核在滑动时的时间间隔为S零填充(Zero Padding) P是在输入向量两端进行补P个零。
  • 输入图像有 M 个神经元卷积核大小为K, 则卷积以后的神经元数量:(M K + 2P)/S + 1
    • 窄卷积 (Narrow Convolution): S = 1, P = 0. 输出长度为 M K + 1;
    • 等宽卷积 (Equal-Width Convolution): S = 1, P = (K 1)/2. 输出长度为 M;
    • 宽卷积 (Wide Convolution): S = 1, P = K1. 输出长度为 M +K1。
  • 图像神经元之间插入0, 来输出高维的特征映射,这样的卷积称为微步卷积(Fractionally-Strided Convolution). 在卷积核中添加0, 使输出的特征映射维数降低,这样的卷积称为空洞卷积 (Atrous Convolution) 也称为膨胀卷积 (Dilated Convolution).
  • 卷积层 X M\times N \times D 张量 \rightarrow W U\times V \times D \times P 张量 \rightarrow Y M'\times N' \times P 张量。这里对D求和D代表颜色通道。非线性激活函数一般用ReLU作用是舍弃一些卷积后产生的特征图中的负值即与该特征不大关联的数据。
  • 汇聚层Pooling Layer作用是进行特征选择降低特征数量扩大感受野使得网络对一些小的局部形态改变保持不变性。但会丢失一部分信息。
  • 卷积网络是由卷积层、汇聚层、全连接层交叉堆叠而成。
  • 卷积层反向传播。 \delta^{l,d}:= \frac{\partial L}{\partial Z^{l,d}} = f_l'(Z^{l,d}) \odot \sum_p (rot(W^{l+1,p,d}) \otimes \delta^{l+1,p} ) Z^{l,d} 是M*N向量
  • 汇聚层反向传播。 \delta^{l,p}:= \frac{\partial L}{\partial Z^{l,p}} = f_l'(Z^{l,p}) \odot up( \delta^{l+1,p} ) 。up上采样 (up sampling)函数对于最大汇聚每个区域除最大值处以外都是0; 对于平均汇聚被平均的分配到前一层每一格中。如果区域是有重叠的,重叠处的值直接叠加。

循环神经网络

  • h_t = f(U h_{t-1} + W x_t +b) f是非线性激活函数通常为 Logistic 函数或 Tanh 函数。
  • 序列到类别输出 y=g(h_T)
  • 同步的序列到序列 y_t=g(h_t)
  • 异步的序列到序列:也称为编码器-解码器。编码和前面一样,解码 h_{T+t} = f_2(h_{T+t-1} ,y_{t-1}), \, \, y_t = g(h_{T+t}) 用前面的输出y而非输入x。
  • 随时间反向传播BackPropagation Through Time, BPTT z_t:=U h_{t-1} + W x_t +b

 \delta_{t,k}:= \frac{\partial L_t}{\partial z_{k}} =diag(f'(z_k)) U^T \delta_{t,k+1} \\
\frac{\partial L}{\partial U}=\sum\limits_{t=1}^T \sum\limits_{k=1}^t \delta_{t,k} h_{k-1}^T\\
\frac{\partial L}{\partial W}=\sum\limits_{t=1}^T \sum\limits_{k=1}^t \delta_{t,k} x_{k-1}^T\\
\frac{\partial L}{\partial b}=\sum\limits_{t=1}^T \sum\limits_{k=1}^t \delta_{t,k} 
  • 因为 \frac{h_{t+1}}{h_t}=f'(z_{t+1})U^T 长距离的梯度为多个乘积如果U的最大特征根大于1, 梯度趋于无穷大即梯度爆炸问题 (Gradient Exploding Problem); 如果U 的最大特征根小于1, 这个梯度趋于0梯度消失问题 (Vanishing Gradient Problem)。消失不是说∂U梯度消失而是∂hk梯度消失即参数U的更新主要靠当前时刻t的几个相邻状态来更新长距离的状态对参数 U 没有影响。
  • 解决梯度爆炸问题,我们可以
    • 权重衰减:给参数增加正则化项来限制参数的取值范围;
    • 梯度截断。
  • 长短期记忆网络 (LSTM)“门”指的是Logistic函数取值在 (0, 1) 之间,它设置了每个单元中应该通过的数据数量。
    • 遗忘门 (forget gate)控制上一个时刻的内部状态ct-1需要遗忘多少信息
    • 输入门:控制当前时刻的候选状态需要保存多少信息;
    • 输出门控制当前时刻的内部状态ct需要输出多少信息。
  • GRU不再额外增加内部状态且只设有重置门 (reset gate) 和更新门 (update gate)。 GRU 更容易进行训练。在小规模数据时CRU 效果与 LSTM 类似但在数据规模较大时LSTM效果更好。
  • 堆叠循环神经网络 (Stacked Recurrent Neural Network, SRNN) 也称为循环多层感知器 (Recurrent Multi Layer Perceptron, RMLP)多层RNN多个层的 h_t^{(l)}
  • 双向循环神经网络 (Bidirectional Recurrent Neural Network, Bi-RNN) h_t^{(1)} 依赖于前面的 h_{t-1}^{(1)} 和下面输入x h_t^{(2)} 依赖于后面的 h_{t+1}^{(2)} 和下面输入x输出y依赖于 h_t^{(1)}h_t^{(2)}
  • 递归神经网络 (Recursive Neural Network, RecNN),类似于树结构输出为树根,输入为叶子。