← 上一篇 下一篇 →

机器学习训练框架有关内容

0 .数据预处理有关

1. 数据样本划分Train-Test-Validation,交叉验证等

这部分李航书里讲的很快阿,默认我们都会,所以这部分参考的周志华的瓜书。

1.1 数据集划分

对于数据集合S,一般划分为训练集、验证集和测试集。训练集用于训练模型,验证集用于调整模型的超参数,测试集用于评估模型的泛化能力。

1.2 交叉验证

交叉验证是一种评估模型性能的方法。
K折交叉验证:将数据集划分为k个子集,每次用k-1个子集训练模型,剩下的子集用于测试模型,重复k次,最后取k次的平均值作为模型的性能指标。
留一交叉验证:将数据集划分为1个元素的测试集和剩余元素组成的训练集,常用于数据不足的情况。
有放回的构建测试集 这个是瓜书里提到的,就是每次从N个数据的数据集中有放回的抽取一个样本,构建测试集,剩下的作为训练集,重复N次。那么一个样本没被抽到的概率是$(1-\frac{1}{N})^N$,当N趋于无穷时,这个概率趋于$\frac{1}{e}$,即63.2%。

2.6 指数损失函数

指数损失函数:$L(Y,f(X)) = \exp(-Yf(X))$
指数损失函数是Adaboost中用到的损失函数,模型预测准确时小于1;模型预测错误时大于1。它作为一个损失函数,具有加权的性质,即对错误分类的样本给予更大的惩罚。
指数损失函数的梯度为:$\nabla L(Y,f(X)) = -Y \exp(-Yf(X))$,因此在梯度下降中更新参数时,可以直接乘以学习率。
关于adaboost,参见这里

2.7 损失函数和风险函数/期望损失的关系,监督学习的目标

损失函数Loss Function:$L(Y,f(X))$,风险函数Risk Function又名期望损失Expected Loss:$E[L(Y,f(X))]$ 在监督学习时我们希望风险函数最小,但是X和Y的联合分布是未知的,所以只能用有限的训练集样本估计风险函数,即经验风险最小化。
监督学习的目标是经验风险最小化:$R_{emp}(f) = \frac{1}{N} \sum_{i=1}^{N} L(y_i,f(x_i))$,其中L为损失函数,N为样本数。
经验风险函数$R_emp(f)$和期望风险函数$R_exp(f)$的关系:当N趋于无穷时,$R_{emp}(f) \rightarrow R_{exp}(f)$,即经验风险最小化等价于期望风险最小化,很柏拉图。

2.8 梯度下降方法,包括批量梯度下降,随机梯度下降,小批量梯度下降

三种方法的不同在于每次更新参数用的样本选择不同。 对于一个损失函数$L(\theta)$,梯度下降的更新公式为:$\theta = \theta - \eta \nabla L(\theta)$,其中$\eta$为学习率。 $\theta$为模型参数
批量梯度下降Batch Gradient Descent:每次更新参数时,用所有样本计算梯度,即$\nabla L(\theta) = \frac{1}{N} \sum_{i=1}^{N} \nabla L(\theta)$,计算量大,但是稳定,收敛速度慢。
随机梯度下降Stochastic Gradient Descent:每次更新参数时,用一个样本计算梯度,即$\nabla L(\theta) = \nabla L(\theta)$,计算量小,但是不稳定,收敛速度快。
小批量梯度下降Mini-batch Gradient Descent:每次更新参数时,用一批样本计算梯度,m=batch_size,即$\nabla L(\theta) = \frac{1}{m} \sum_{i=1}^{m} \nabla L(\theta)$,折中了批量梯度下降和随机梯度下降的优缺点。

3. Train/Test Error Overfitting/Underfitting Regularization Generalization

3.1 Train Error和Test Error

训练误差Train Error:模型在训练集上的误差,用于衡量模型在训练集上的拟合程度。训练误差就是经验风险函数,即$E_{train} = R_{emp}(f) = \frac{1}{N} \sum_{i=1}^{N} L(y_i,f(x_i))$,N为训练集样本数
测试误差Test Error:模型在测试集上的误差,$E_{test} = R_{emp}(f) = \frac{1}{M} \sum_{i=1}^{M} L(y_i,f(x_i))$, M为测试集样本数。

3.3 正则化Regularization

正则化/结构风险最小化:$R_{struc}(f) = \frac{1}{N} \sum_{i=1}^{N} L(y_i,f(x_i)) + \lambda J(f)$,其中J(f)为模型的复杂度,$\lambda$为正则化系数。
和上述的经验风险最小化不同,结构风险最小化在经验风险最小化的基础上加上了模型的复杂度,在保证模型拟合训练集的情况下,选择最简单的模型,具体是加入了$J(f)$,即对模型的惩罚,定义为一个泛函。
常见的正则化方法有L1正则化和L2正则化。L1正则化是指$J(f) = ||w||1$,L2正则化是指$J(f) = 1/2||w||_2^2$,其中w为模型的参数。
L0正则化:$L0(w) = \lambda \sum
{i}I(w_i \neq 0)$,L0是向量中非0元素的个数,效果同L1,不用L0而用L1是因为L0的优化是NP-Hard的,L1是L0的最优凸近似。
L1正则化:$L1(w) = \lambda \sum_{i}|w_i|$,L1正则化可以使得模型的参数稀疏,即有些参数为0,适用于特征选择。又名稀疏特征算子(Lasso Regularization)
L2正则化:$L2(w) = \lambda \sum_{i}w_i^2$,L2正则化可以使得模型的参数分布在一个范围内,适用于防止过拟合。又名岭回归

3.4 泛化能力Generalization 泛化误差上界

泛化能力Generalization:模型在未知数据上的表现能力,泛化能力好的模型在新的数据上预测能力良好。可用测试误差来评价,但是过于依赖测试数据集。因此可定义 泛化误差==期望损失函数:$R_{exp}(f) = E[L(Y,f(X))]$,即模型在所有可能的数据上的误差;如果对于模型f1和f2,有$R_{exp}(f1)>R_{exp}(f2)$那么说明f2的泛化性能比f1好。
泛化误差上界:由于泛化误差未知,用泛化误差上界来估计泛化误差,泛化误差上界定理可以估计泛化误差的上界,证明方法见李航书P25-P27(过程不可能问的,问了就是难为不打算发offer)。只需要知道泛化误差上界是样本容量和假设空间的函数;样本容量越大,泛化误差上界越小(好理解,大数定律);假设空间容量越大,模型越复杂越难学,泛化误差上界越大。

4. 评价指标,如准确率,精确率,召回率,F1,ROC-AUC等

这个李航书上也没有,李航是默认大家都是超天才,这部分参考瓜书。
TP、FP、TN、FN分别表示真正例、假正例、真负例、假负例。 准确率是最符合我们常识的,P和R是相对应的。F1是混合指标。

4.1 准确率Accuracy

准确率Accuracy:$ACC = \frac{TP+TN}{TP+TN+FP+FN}$,即预测正确的样本数占总样本数的比例

4.2 精确率Precision

精确率Precision:$P = \frac{TP}{TP+FP}$,即预测为正例的样本中真正例的比例

4.3 召回率Recall

召回率Recall:$R = \frac{TP}{TP+FN}$,即真正例中预测为正例的比例

4.4 F1 Score

F1 Score:$F1 = \frac{2PR}{P+R}$,即精确率和召回率的调和平均数

4.5 四种指标的常见应用场景,错分类代价

准确率:适用于正负样本比例相近的情况。(如果有100个样本99个正例子1个反例子,那么分类器只要一直判断正例子,这个分类器无疑比较离谱,但是他的Acc很高,因此Acc不擅长处理样本不平衡的情况)
精确率 当反例被错误预测成正例(FP)的代价很高时,适合用精确率。 召回率当正例被错误的预测为反例(FN)产生的代价很高时,适合用召回率。根据公式可知,召回率越高,FN越小。如癌症检测,反例是癌症患者,FN是没检测出癌症,这个代价是很高的,召回律的场景可以记成:宁可错不能漏。
F1 Score当FN和FP的代价差别很大时,适合用F1 Score。F1 Score是精确率和召回率的调和平均数,当FN和FP的代价差别很大时,F1 Score会更好的评价模型的性能。

4.6 AUC-ROC曲线

ROC曲线是以真正例率(Recall)为纵轴,假正例率(FPR)为横轴,AUC是ROC曲线下的面积,AUC的取值范围在0.5-1之间,AUC越大,模型的性能越好。
曲线下面积AUC:AUC是ROC曲线下的面积,AUC的取值范围在0.5-1之间,AUC越大,模型的性能越好。AUC=0.5说明模型在抛硬币。AUC在0.7-0.9是可以接受的。