深度学习500问——Chapter02:机器学习基础(3)

文章目录

2.10 主成分分析(PCA)

2.10.1 主成分分析(PCA)思想总结

2.10.2 图解PCA核心思想

2.10.3 PCA算法推理

2.10.4 PCA算法流程总结

2.10.5 PCA算法主要优缺点

2.10.6 降维的必要性及目的

2.10.7 KPCA与PCA的区别

2.11 模型评估

2.11.1 模型评估常用方法

2.11.2 误差、偏差和方差有什么区别和联系

2.11.3 经验误差与泛化误差

2.11.4 图解欠拟合、过拟合

2.11.5 如何解决过拟合与欠拟合

2.11.6 交叉验证的主要作用

2.11.7 理解k折交叉验证

2.11.8 混淆矩阵

2.11.9 错误率及精度

2.11.10 查准率与查全率

2.11.11 ROC与AUC

2.11.12 如何画ROC曲线

2.11.13 如何计算TPR、FPR

2.11.14 如何计算AUC

2.11.15 为什么使用Roc和Auc评价分类器

2.11.16 直观理解AUC

2.11.17 代价敏感错误率与代价曲线

2.11.18 模型有哪些比较检验方法

2.11.19 为什么使用标准差

2.11.20 类别不平衡产生原因

2.11.21 常见的类别不平衡问题解决办法


2.10 主成分分析(PCA)

2.10.1 主成分分析(PCA)思想总结

1. PCA就是将高维的数据通过线性变换投影到低维空间上去。

2. 投影思想:找出最能够代表原始数据的投影方法。被PCA降掉的那些维度只能是那些噪声或是冗余的数据。

3. 去冗余:去除可以被其他向量代表的线性相关向量,这部分信息量是多余的。

4. 去噪声,去除较小特征值对应的特征向量,特征值的大小反映了变换后在特征值向量方向上变换的幅度,幅度越大,说明这个方向上的元素差异也越大,要保留。

5. 对角化矩阵,寻找极大线性无关组,保留较大的特征值,去除较小特征值,组成一个投影矩阵,对原始样本矩阵进行投影,得到降维后的新样本矩阵。

6. 完成PCA的关键是——协方差矩阵。协方差矩阵,能同时表现不同维度间的相关性以及各个维度上的方差。协方差矩阵度量的是维度与维度之间的关系,而非样本与样本之间。

7. 之所以对角化,因为对角化之后非对角上的元素都是0,达到去噪声的目的。对角化后的协方差矩阵,对角线上较小的新方差对应的就是那些该去掉的维度。所以我们只取那些含有较大能量(特征值)的维度,其余的就舍掉,即去冗余。

2.10.2 图解PCA核心思想

PCA可解决训练数据中存在数据特征过多或特征累赘的问题。核心思想是将m维特征映射到n维(n < m),这n维形成主元,是重构出来最能代表原始数据的正交特征。

假设数据集是m个n维,(\boldsymbol x^{(1)}, \boldsymbol x^{(2)}, \cdots, \boldsymbol x^{(m)}。如果n=2,需要降维到n'=1,现在想找到某一维度方向代表这两个维度的数据。下图有u_1, u_2两个向量方向,但是哪个向量才是我们所想要的,可以更好代表原始数据呢?

从图可看出,u_1u_2好,为什么呢?有以下两个主要评价指标:

1. 样本点到这个直线的距离足够近。

2. 样本点在这个直线上的投影尽可能的分开。

如果我们需要降维的目标维数是其他任意维,则:

1. 样本点到这个超平面的距离足够近。

2. 样本点在这个超平面上的投影尽可能的分开。

2.10.3 PCA算法推理

 下面以基于最小投影距离为评价指标推理:

假设数据集是m个n维,(x^{(1)}, x^{(2)},...,x^{(m)}),且数据进行了中心化。经过投影变换得到新坐标为w_1,w_2,...,w_n,其中w是标准正交基,即\left | w \right |_2=1w^T_iw_j = 0

经过降维后,新坐标w_1,w_2,...,w_n,其中n'是降维后的目标维数。样本点x^{(i)}在新坐标系下的投影为z^{(i)} = \left(z^{(i)}_1, z^{(i)}2, ..., z^{(i)}{n'} \right),其中z^{(i)}_j=w^T_jx^{(i)}x^{(i)}在低维坐标系里的第j维的坐标。

如果用z^{(i)}去恢复x^{(i)},则得到的恢复数据为x^{(i)} = \sum_{j=1}^{n} x_j^{(i)} w_j =W_z^{(i)},其中W为标准正交基组成的矩阵。

考虑到整个样本集,样本点到这个超平面的距离足够近,目标变为最小化\sum_{i=1}^{n} \left\| \hat{x}^{(i)} - x^{(i)} \right\|_2^2 ,对此式进行推理,可得:

\sum^m_{i=1} | \hat{x}^{(i)} - x^{(i)} |^2_2 \\= \sum^m_{i=1} | Wz^{(i)} - x^{(i)} |^2_2 \ \\= \sum^m_{i=1} \left( Wz^{(i)} \right)^T \left( Wz^{(i)} \right) - 2\sum^m_{i=1} \left( Wz^{(i)} \right)^T x^{(i)} + \sum^m_{i=1} \left( x^{(i)} \right)^T x^{(i)} \ \\= \sum^m_{i=1} \left( z^{(i)} \right)^T \left( z^{(i)} \right) - 2\sum^m_{i=1} \left( z^{(i)} \right)^T x^{(i)} + \sum^m_{i=1} \left( x^{(i)} \right)^T x^{(i)} \ \\= - \sum^m_{i=1} \left( z^{(i)} \right)^T \left( z^{(i)} \right) + \sum^m_{i=1} \left( x^{(i)} \right)^T x^{(i)} \ \\= -tr \left( W^T \left( \sum^m_{i=1} x^{(i)} \left( x^{(i)} \right)^T \right)W \right) + \sum^m_{i=1} \left( x^{(i)} \right)^T x^{(i)} \\\ = -tr \left( W^TXX^TW \right) + \sum^m_{i=1} \left( x^{(i)} \right)^T x^{(i)}

在推导过程中,分别用到了\bar{x}^{(i)}=W_z^{(i)},矩阵转置公式(AB)^T=B^TA^TW^TW = I,z^{(i)} = W^Tx^{(i)}以及矩阵的迹,最后两步是将代数和转为矩阵形式。由于W的每个一个向量w_j是标准正交基,sum^m_{i=1} x^{(i)} \left( x^{(i)} \right)^T是数据集的协方差矩阵,\sum^m_{i=1} \left( x^{(i)} \right)^T x^{(i)}是一个常量。最小化\sum_{i=1}^{n} \left\| \hat{x}^{(i)} - x^{(i)} \right\|_2^2又可等价于\underbrace{\arg \min}_W - tr \left( W^TXX^TW \right) s.t.W^TW = I,利用拉格朗日函数可得到J(W) = -tr(W^TXX^TW) + \lambda(W^TW - I),对W进行求导,可得-XX^TW + \lambda W = 0,也即XX^TW = \lambda WXX^Tn'个特征向量组成的矩阵,\lambdaXX^T的特征值。W即为我们想要的矩阵。对于原始数据,只需要z^{(i)} = W^Tx^{(i)},就可把原始数据集降维到最小投影距离的n'维数据集。

基于最大投影方差的推导,这里就不再赘述,有兴趣的同仁可自行查阅资料。

2.10.4 PCA算法流程总结

输入:n维样本集D=(x^{(1)}, x^{(2)},...,x^{(m)}),目标降维的维数n'

输出:降维后的新样本集D'=(z^{(1)}, z^{(2)},...,z^{(m)})

主要步骤如下:

1. 对所有的样本进行中心化,x^{(i)} = x^{(i)} - \frac{1}{m} \sum^m_{j=1} x^{(j)}

2. 计算样本的协方差矩阵XX^T

3. 对协方差矩阵XX^T进行特征值分解。

4. 取出最大的n'个特征值对应的特征向量w_1,w_2,...,w_{n'}

5. 标准化特征向量,得到特征向量的矩阵W

6. 转化样本集中每个样本z^{(i)} = W^Tx^{(i)}

7. 得到输出矩阵D'=(z^{(1)}, z^{(2)},...,z^{(m)})。注:在降维时,有时不明确目标维数,而是指定降维到的主成分比重阈值k(k\in (0,1])。假设n个特征值为\lambda _1\geqslant \lambda _2\geqslant ...\geqslant \lambda _n,则n'可从\sum^{n'}{i=1} \lambda_i \geqslant k \times \sum^n{i=1} \lambda_i得到。

2.10.5 PCA算法主要优缺点

优缺点简要说明
优点

1. 仅仅需要以方差衡量信息差,不受数据集以外的因素影响。

2. 各主成分之间正交,可消除原始数据成分间的相互影响的因素

3. 计算方法简单,主要运算是特征值分解,易于实现

缺点

1. 主成分各个特征维度的含义具有一定的模糊性,不如原始样本特征的解释性强

2. 方差小的非主成分也可能含有对样本差异的重要信息,因降维丢弃可能对后续数据处理有影响

2.10.6 降维的必要性及目的

降维的必要性:

1. 多重共线性和预测变量之间相互关联。多重共线性会导致解空间的不稳定,从而可能导致结果的不连贯。

2. 高维空间本身具有稀疏性。一维正态分布有68%的值落于正负标准差之间,而在十维空间上只有2%。

3. 过多的变量,对查找规律造成冗余麻烦。

4. 仅在变量层面上分析可能会忽略变量之间的潜在联系。例如几个预测变量可能落入仅反映数据某一方面特征的一个组内。

降维的目的:

1. 减少预测变量的个数。

2. 确保这些变量是相互独立的。

3. 提供一个框架来解释结果。相关特征,特征是重要特征更能在数据中明确显示出来;如果只有两维或者三维的话,更便于可视化展示。

4. 数据在低维下更容易处理、更容易使用。

5. 去除数据噪声。

6. 降低算法运算开销。

2.10.7 KPCA与PCA的区别

应用PCA算法前提是假设存在一个线性超平面,进而投影。那如果数据不是线性的呢?该怎么办?这时候就需要KPCA,数据集从n维映射到线性可分的高维N>n,然后再从N维降维到一个低纬度。

KPCA用到了核函数思想,使用了核函数的主成分分析一般称为核主成分分析(kernelized PCA,简称KPCA)。

假设高维空间数据由n维空间数据通过映射\phi产生。

n维空间的特征分解为:\sum^m_{i=1} x^{(i)} \left( x^{(i)} \right)^T W = \lambda W

其映射为\sum^m_{i=1} \phi \left( x^{(i)} \right) \phi \left( x^{(i)} \right)^T W = \lambda W

通过在高维空间进行协方差矩阵的特征值分解,然后用PCA一样的方法进行降维。由于KPCA需要核函数的运算,因此它的计算量要比PCA大很多。

2.11 模型评估

2.11.1 模型评估常用方法

一般情况来说,单一评分标准无法完全评估一个机器学习模型,只用good和bad偏离真实场景去评估某个模型,都是一种欠妥的评估方式。下面介绍常用的分类模型和回归模型评估方法。

分类模型常用评估方法:

指标描述
Accuracy准确率
Precision精准度/查准率
Recall召回率/查全率
P-R曲线查准率为纵轴,查全率为横轴,作图
F1F1值
Confusion Matrix混肴矩阵
ROCROC曲线
AUCROC曲线下的面积

回归模型常用评估方法:

指标描述
Mean Square Error(MSE,RMSE)平均方差
Absolute Error(MAE,RAE)绝对误差
R-SquaredR平方值

2.11.2 误差、偏差和方差有什么区别和联系

在机器学习中,Bias(偏差),Error(误差),和Variance(方差)存在以下区别和联系:

对于Error:

  • 误差(error):一般地,我们把机器学习的实际预测输出与样本的真实输出之间的差异称为“误差”。
  • Error = Bias + Variance + Noise,Error反映的是整个模型的准确度。

对于Noise:

  • 噪声:描述了在当前任务上任何学习算法所能达到的期望泛化误差的下界,即刻画了学习问题本身的难度。

对于Bias:

  • Bias衡量模型拟合训练数据的能力(训练数据不一定是整个training dataset,而是只用于训练它的那一部分数据,例如:mini-batch),Bias反映的是模型在样本上的输出与真实值之间的误差,即模型本身的精准度。
  • Bias越小,拟合能力越高(可能产生overfitting);反之,拟合能力越低(可能产生underfitting)。
  • 偏差越大,越偏离真实数据,如下图第二行所示,

对于Variance:

  • 方差公式:S_{N}^{2}=\frac{1}{N}\sum_{i=1}^{N}(x_{i}-\bar{x})^{2}
  • Variance描述的是预测值的变化范围,离散程度,也就是离其期望值的距离。方差越大,数据的分布越分散,模型的稳定程度越差。
  • Variance反映的是模型每一次输出结果与模型输出期望之间的误差,即模型的稳定性。
  • Variance越小,模型的泛化的能力越高;反之,模型的泛化能力越低。
  • 如果模型在训练集上拟合效果比较优秀,但是在测试集上拟合效果比较差劣,则方差较大,说明模型的稳定程度较差,出现这种现象可能是由于模型对训练集过拟合造成的。如下图右列所示。

2.11.3 经验误差与泛化误差

经验误差(empirical error):也叫训练误差(training error),模型在训练集上的误差。

泛化误差(generalization error):模型在新样本集(测试集)上的误差称为“泛化误差”。

2.11.4 图解欠拟合、过拟合

根据不同的坐标方式,欠拟合与过拟合图解不同。

1. 横轴为训练样本数量,纵轴为误差

如上图所示,我们可以直观看出欠拟合和过拟合的区别:

  • 模型欠拟合:在训练集以及测试集上同时具有较高的误差,此时模型的偏差较大;
  • 模型过拟合:在训练集上具有较低的误差,在测试集上具有较高的误差,此时模型的方差较大;
  • 模型正常:在训练集以及测试集上,同时具有相对较低的偏差以及方差。

2. 横轴为模型复杂度,纵轴为误差

红线为测试集上的Error,蓝线为训练集上的Error。

  • 模型欠拟合:模型在A点处,在训练集以及测试集上同时具有较高的误差,此时模型的偏差较大。
  • 模型过拟合:模型在C点处,在训练集上具有较低的误差,在测试集上具有较高的误差,此时模型的方差较大。
  • 模型正常:模型复杂程度控制在点B处为最优。

3. 横轴为正则项系数,纵轴为误差

红线为测试集上的Error,蓝线为训练集上的Error。

  • 模型欠拟合:模型在C点处,在训练集以及测试集上同时具有较高的误差,此时模型的偏差较大。
  • 模型过拟合:模型在A点处,在训练集上具有较低的误差,在测试集上具有较高的误差,此时模型的方差较大。它通常发生在模型过于复杂的情况下,如参数过多等,会使得模型的预测性能变弱,并且增加数据的波动性。虽然模型在训练时的效果可以表现的很完美,基本上记住了数据的全部特点,但这种模型在未知数据的表现能力会大减折扣,因为简单的模型泛化能力通常都是很弱的。
  • 模型正常:模型复杂程度控制在点B处为最优。

2.11.5 如何解决过拟合与欠拟合

如何解决欠拟合:

  1. 添加其他特征项。组合、泛化、相关性、上下文特征、平台特征等特征是特征添加的重要手段,有时候特征项不够会导致模型欠拟合。
  2. 添加多项式特征。例如将线性模型添加二次项或三次项使模型泛化能力更强。例如,FM(Fatcorization Machine)模型、FFM(Field-aware Factorization Machine)模型,其实就是线性模型,增加了二阶多项式,保证了模型一定的拟合程度。
  3. 可以增加模型的复杂程度。
  4. 减小正则化系数。正则化的目的是用来防止过拟合的,但是现在模型出现了欠拟合,则需要减少正则化参数。

如何解决过拟合:

  1. 重新清洗数据,数据不纯会导致过拟合,此类情况需要重新清洗数据。
  2. 增加训练样本数据。
  3. 降低模型复杂程度。
  4. 增大正则项系数。
  5. 采用dropout方法。dropout方法,通俗的讲就是在训练的时候让神经元以一定的概率不工作。
  6. early stopping。
  7. 减少迭代次数。
  8. 增大学习率。
  9. 添加噪声数据。
  10. 树结构中,可以对树进行剪枝。
  11. 减少特征项。

欠拟合和过拟合这些方法,需要根据实际问题,实际模型,进行选择。

2.11.6 交叉验证的主要作用

为了得到更为稳健可靠的模型,对模型的泛化误差进行评估,得到模型泛化误差的近似值。当有多个模型可以选择时,我们通常选择“泛化误差”最小的模型。

交叉验证的方法有许多种,但是最常用的是:留一交叉验证、k折交叉验证。

2.11.7 理解k折交叉验证

1. 将含有N个样本的数据集,分成k份,每份含有N/K个样本。选择其中1份作为测试集,测试集就有K种情况。

2. 在每种情况中,用训练集训练模型,用测试集测试模型,计算模型的泛化误差。

3. 交叉验证重复K次,每份验证一次,平均K次的结果或者使用其他结合方式,最终得到一个单一的估测,得到模型的最终泛化误差。

4. 将K种情况下,模型的泛化误差取均值,得到模型最终的泛化误差。

5. 一般2\leqslant K \leqslant10。k折交叉验证的优势在于,同时重复运用随机产生的子样本进行训练和验证,每次的结果验证一次,10折交叉验证是最常用的。

6. 训练集种样本数量要足够多,一般至少大于总样本数的50%。

7. 训练集和测试集必须从完整的数据集中均匀取样。均匀取样的目的是希望减少训练集、测试集与原始数据之间的偏差。当样本数量足够多时,通过随机取样,便可以实现均匀取样的效果。

2.11.8 混淆矩阵

第一种混淆矩阵:

真实情况T or F预测为正例1,P预测为负例0,N
本来label标记为1,预测结果真为T、假为FTP(预测为1,实际为1)FN(预测为0,实际为1)
本来label标记为0,预测结果真为T、假为FFP(预测为1,实际为0)TN(预测为0,实际为0)

第二种混淆矩阵:

预测情况P or N实际label为1,预测对了为T实际label为0,预测对了为T
预测为正例1,PTP(预测为1,实际为1)FP(预测为1,实际为0)
预测为负例0,NFN(预测为0,实际为1)TN(预测为0,实际也0)

2.11.9 错误率及精度

1. 错误率(Error Rate):分类错误的样本数占样本总数的比例。

2. 精度(accuracy):分类正确的样本数占样本总数的比例。

2.11.10 查准率与查全率

将算法预测的结果分成四种情况:

  1. 正确肯定(True Positive,TP):预测为真,实际为真
  2. 正确否定(True Negative,TN):预测为假,实际为假
  3. 错误肯定(False Positive,FP):预测为真,实际为假
  4. 错误否定(False Negative,FN):预测为假,实际为真

则:

查准率(Precision)=TP/(TP+FP)

理解:预测出为阳性的样本中,正确的有多少。区别准确率(正确预测出的样本,包括正确预测为阳性、阴性,占总样本比例)。 例,在所有我们预测有恶性肿瘤的病人中,实际上有恶性肿瘤的病人的百分比,越高越好。

查全率(Recall)=TP/(TP+FN)

理解:正确预测为阳性的数量占总样本中阳性数量的比例。 例,在所有实际上有恶性肿瘤的病人中,成功预测有恶性肿瘤的病人的百分比,越高越好。

2.11.11 ROC与AUC

​ ROC全称是“受试者工作特征”(Receiver Operating Characteristic)。

​ ROC曲线的面积就是AUC(Area Under Curve)。

​ AUC用于衡量“二分类问题”机器学习算法性能(泛化能力)。

​ ROC曲线,通过将连续变量设定出多个不同的临界值,从而计算出一系列真正率和假正率,再以假正率为横坐标、真正率为纵坐标绘制成曲线,曲线下面积越大,推断准确性越高。在ROC曲线上,最靠近坐标图左上方的点为假正率和真正率均较高的临界值。

​ 对于分类器,或者说分类算法,评价指标主要有Precision,Recall,F-score。下图是一个ROC曲线的示例。

ROC曲线的横坐标为False Positive Rate(FPR),纵坐标为True Positive Rate(TPR)。其中TPR = \frac{TP}{TP+FN} ,FPR = \frac{FP}{FP+TN}

​ 下面着重介绍ROC曲线图中的四个点和一条线。​ 第一个点(0,1),即FPR=0, TPR=1,这意味着FN(False Negative)=0,并且FP(False Positive)=0。意味着这是一个完美的分类器,它将所有的样本都正确分类。​ 第二个点(1,0),即FPR=1,TPR=0,意味着这是一个最糟糕的分类器,因为它成功避开了所有的正确答案。​ 第三个点(0,0),即FPR=TPR=0,即FP(False Positive)=TP(True Positive)=0,可以发现该分类器预测所有的样本都为负样本(Negative)。​ 第四个点(1,1),即FPR=TPR=1,分类器实际上预测所有的样本都为正样本。​ 经过以上分析,ROC曲线越接近左上角,该分类器的性能越好。

​ ROC曲线所覆盖的面积称为AUC(Area Under Curve),可以更直观的判断学习器的性能,AUC越大则性能越好。

2.11.12 如何画ROC曲线

​ 下图是一个示例,图中共有20个测试样本,“Class”一栏表示每个测试样本真正的标签(p表示正样本,n表示负样本),“Score”表示每个测试样本属于正样本的概率。

步骤:

  1. 假设已经得出一系列样本被划分为正类的概率,按照大小排序。
  2. 从高到低,依次将“Score”值作为阈值threshold,当测试样本属于正样本的概率大于或等于这个threshold时,我们认为它为正样本,否则为负样本。举例来说,对于图中的第4个样本,其“Score”值为0.6,那么样本1,2,3,4都被认为是正样本,因为它们的“Score”值都大于等于0.6,而其他样本则都认为是负样本。
  3. 每次选取一个不同的threshold,得到一组FPR和TPR,即ROC曲线上的一点。以此共得到20组FPR和TPR的值。
  4. 根据3、中的每个坐标点,画图。

2.11.13 如何计算TPR、FPR

1、分析数据 y_true = [0, 0, 1, 1];scores = [0.1, 0.4, 0.35, 0.8]。

2、列表。

样本预测属于P的概率(score)真实类别
y[0]0.1N
y[1]0.4N
y[2]0.35P
y[3]0.8P

3、将截断点依次取为score值,计算TPR和FPR。 当截断点为0.1时: 说明只要score>=0.1,它的预测类别就是正例。 因为4个样本的score都大于等于0.1,所以,所有样本的预测类别都为P。 scores = [0.1, 0.4, 0.35, 0.8];y_true = [0, 0, 1, 1];y_pred = [1, 1, 1, 1]; 正例与反例信息如下:

正例反例
正例TP=2FN=0
反例FP=2TN=0

由此可得: TPR = TP/(TP+FN) = 1; FPR = FP/(TN+FP) = 1;

当截断点为0.35时: scores = [0.1, 0.4, 0.35, 0.8];y_true = [0, 0, 1, 1];y_pred = [0, 1, 1, 1]; 正例与反例信息如下:

由此可得: TPR = TP/(TP+FN) = 1; FPR = FP/(TN+FP) = 0.5;

当截断点为0.4时: scores = [0.1, 0.4, 0.35, 0.8];y_true = [0, 0, 1, 1];y_pred = [0, 1, 0, 1]; 正例与反例信息如下:

由此可得: TPR = TP/(TP+FN) = 0.5; FPR = FP/(TN+FP) = 0.5;

当截断点为0.8时: scores = [0.1, 0.4, 0.35, 0.8];y_true = [0, 0, 1, 1];y_pred = [0, 0, 0, 1];

正例与反例信息如下:

由此可得: TPR = TP/(TP+FN) = 0.5; FPR = FP/(TN+FP) = 0;

4、根据TPR、FPR值,以FPR为横轴,TPR为纵轴画图。

2.11.14 如何计算AUC

  • 将坐标点按照横坐标FPR排序 。
  • 计算第i个坐标点和第i+1个坐标点的间距dx
  • 获取第i或者i+1个坐标点的纵坐标y。
  • 计算面积微元ds=ydx
  • 对面积微元进行累加,得到AUC。

2.11.15 为什么使用Roc和Auc评价分类器

​ 模型有很多评估方法,为什么还要使用ROC和AUC呢?​ 因为ROC曲线有个很好的特性:当测试集中的正负样本的分布变换的时候,ROC曲线能够保持不变。在实际的数据集中经常会出现样本类不平衡,即正负样本比例差距较大,而且测试数据中的正负样本也可能随着时间变化。

2.11.16 直观理解AUC

​ 下图展现了三种AUC的值:

​ AUC是衡量二分类模型优劣的一种评价指标,表示正例排在负例前面的概率。其他评价指标有精确度、准确率、召回率,而AUC比这三者更为常用。​ 一般在分类模型中,预测结果都是以概率的形式表现,如果要计算准确率,通常都会手动设置一个阈值来将对应的概率转化成类别,这个阈值也就很大程度上影响了模型准确率的计算。​ 举例:​ 现在假设有一个训练好的二分类器对10个正负样本(正例5个,负例5个)预测,得分按高到低排序得到的最好预测结果为[1, 1, 1, 1, 1, 0, 0, 0, 0, 0],即5个正例均排在5个负例前面,正例排在负例前面的概率为100%。然后绘制其ROC曲线,由于是10个样本,除去原点我们需要描10个点,如下:

​ 描点方式按照样本预测结果的得分高低从左至右开始遍历。从原点开始,每遇到1便向y轴正方向移动y轴最小步长1个单位,这里是1/5=0.2;每遇到0则向x轴正方向移动x轴最小步长1个单位,这里也是0.2。不难看出,上图的AUC等于1,印证了正例排在负例前面的概率的确为100%。

​ 假设预测结果序列为[1, 1, 1, 1, 0, 1, 0, 0, 0, 0]。

​ 计算上图的AUC为0.96与计算正例与排在负例前面的概率0.8 × 1 + 0.2 × 0.8 = 0.96相等,而左上角阴影部分的面积则是负例排在正例前面的概率0.2 × 0.2 = 0.04。

​ 假设预测结果序列为[1, 1, 1, 0, 1, 0, 1, 0, 0, 0]。

​ 计算上图的AUC为0.88与计算正例与排在负例前面的概率0.6 × 1 + 0.2 × 0.8 + 0.2 × 0.6 = 0.88相等,左上角阴影部分的面积是负例排在正例前面的概率0.2 × 0.2 × 3 = 0.12。

2.11.17 代价敏感错误率与代价曲线

不同的错误会产生不同代价。以二分法为例,设置代价矩阵如下:

当判断正确的时候,值为0,不正确的时候,分别为Cost_{01}Cost_{10}

Cost_{10}:表示实际为反例但预测成正例的代价。

Cost_{01}:表示实际为正例但是预测为反例的代价。

代价敏感错误率=样本中由模型得到的错误值与代价乘积之和 / 总样本。

其数学表达式为:E(f;D;cost)=\frac{1}{m}\left( \sum_{x_{i} \in D^{+}}({f(x_i)\neq y_i})\times Cost_{01}+ \sum_{x_{i} \in D^{-}}({f(x_i)\neq y_i})\times Cost_{10}\right)

D^+,D^-​分别代表样例集的正例子集和反例子集,x是预测值,y是真实值。

代价曲线: 在均等代价时,ROC曲线不能直接反应出模型的期望总体代价,而代价曲线可以。 代价曲线横轴为[0,1]的正例函数代价:

P(+)Cost=\frac{pCost_{01}}{pCost_{01}+(1-p)*Cost_{10}}

其中p是样本为正例的概率。

代价曲线纵轴维[0,1]的归一化代价:

Cost_{norm}=\frac{FNRpCost_{01}+FNR*(1-p)Cost_{10}}{pCost_{01}+(1-p)*Cost_{10}}

其中FPR为假阳率,FNR=1-TPR为假阴率。

注:ROC每个点,对应代价平面上一条线。

例如,ROC上(TPR,FPR),计算出FNR=1-TPR,在代价平面上绘制一条从(0,FPR)到(1,FNR)的线段,面积则为该条件下期望的总体代价。所有线段下界面积,所有条件下学习器的期望总体代价。

2.11.18 模型有哪些比较检验方法

正确性分析:模型稳定性分析,稳健性分析,收敛性分析,变化趋势分析,极值分析等。 有效性分析:误差分析,参数敏感性分析,模型对比检验等。 有用性分析:关键数据求解,极值点,拐点,变化趋势分析,用数据验证动态模拟等。 高效性分析:时空复杂度分析与现有进行比较等。

2.11.19 为什么使用标准差

方差公式为:S^2_{N}=\frac{1}{N}\sum_{i=1}^{N}(x_{i}-\bar{x})^{2}

标准差公式为:S_{N}=\sqrt{\frac{1}{N}\sum_{i=1}^{N}(x_{i}-\bar{x})^{2}}

样本标准差公式为:S_{N}=\sqrt{\frac{1}{N-1}\sum_{i=1}^{N}(x_{i}-\bar{x})^{2}}

与方差相比,使用标准差来表示数据点的离散程度有3个好处

1、表示离散程度的数字与样本数据点的数量级一致,更适合对数据样本形成感性认知。

2、表示离散程度的数字单位与样本数据的单位一致,更方便做后续的分析运算。

3、在样本数据大致符合正态分布的情况下,标准差具有方便估算的特性:68%的数据点落在平均值前后1个标准差的范围内、95%的数据点落在平均值前后2个标准差的范围内,而99%的数据点将会落在平均值前后3个标准差的范围内。

2.11.20 类别不平衡产生原因

类别不平衡(class-imbalance)是指分类任务中不同类别的训练样例数目差别很大的情况。

产生原因:

​ 分类学习算法通常都会假设不同类别的训练样例数目基本相同。如果不同类别的训练样例数目差别很大,则会影响学习结果,测试结果变差。例如二分类问题中有998个反例,正例有2个,那学习方法只需返回一个永远将新样本预测为反例的分类器,就能达到99.8%的精度;然而这样的分类器没有价值。

2.11.21 常见的类别不平衡问题解决办法

防止类别不平衡对学习造成的影响,在构建分类模型之前,需要对分类不平衡性问题进行处理。主要解决方法有:

1、扩大数据集

​ 增加包含小类样本数据的数据,更多的数据能得到更多的分布信息。

2、对大类数据欠采样

​ 减少大类数据样本个数,使与小样本个数接近。​ 缺点:欠采样操作时若随机丢弃大类样本,可能会丢失重要信息。​ 代表算法:EasyEnsemble。其思想是利用集成学习机制,将大类划分为若干个集合供不同的学习器使用。相当于对每个学习器都进行欠采样,但对于全局则不会丢失重要信息。

3、对小类数据过采样

​ 过采样:对小类的数据样本进行采样来增加小类的数据样本个数。

​ 代表算法:SMOTE和ADASYN。

​ SMOTE:通过对训练集中的小类数据进行插值来产生额外的小类样本数据。

​ 新的少数类样本产生的策略:对每个少数类样本a,在a的最近邻中随机选一个样本b,然后在a、b之间的连线上随机选一点作为新合成的少数类样本。​ ADASYN:根据学习难度的不同,对不同的少数类别的样本使用加权分布,对于难以学习的少数类的样本,产生更多的综合数据。 通过减少类不平衡引入的偏差和将分类决策边界自适应地转移到困难的样本两种手段,改善了数据分布。

4、使用新评价指标

​ 如果当前评价指标不适用,则应寻找其他具有说服力的评价指标。比如准确度这个评价指标在类别不均衡的分类任务中并不适用,甚至进行误导。因此在类别不均衡分类任务中,需要使用更有说服力的评价指标来对分类器进行评价。

5、选择新算法

​ 不同的算法适用于不同的任务与数据,应该使用不同的算法进行比较。

6、数据代价加权

​ 例如当分类任务是识别小类,那么可以对分类器的小类样本数据增加权值,降低大类样本的权值,从而使得分类器将重点集中在小类样本身上。

7、转化问题思考角度

​ 例如在分类问题时,把小类的样本作为异常点,将问题转化为异常点检测或变化趋势检测问题。 异常点检测即是对那些罕见事件进行识别。变化趋势检测区别于异常点检测在于其通过检测不寻常的变化趋势来识别。

8、将问题细化分析

​ 对问题进行分析与挖掘,将问题划分成多个更小的问题,看这些小问题是否更容易解决。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/429868.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

什么是跨站脚本攻击(XSS)

厦门微思网络​​​​​​https://www.xmws.cn 华为认证\华为HCIA-Datacom\华为HCIP-Datacom\华为HCIE-Datacom Linux\RHCE\RHCE 9.0\RHCA\ Oracle OCP\CKA\K8S\ CISP\CISSP\PMP\ ​ 跨站脚本攻击&#xff08;Cross-site Scripting&#xff0c;通常称为XSS&#xff09;&#xf…

MCU设计--M3内核详解(2)

内核架构 FETCH取指单元DEC指令译码EXEC执行LSU内存取数ETM_INTF调试接口STATUS状态上报 内核-寄存器 不同指令集支持不同的寄存器分配。R13用于主堆栈指针(MSP)&#xff0c;进程堆栈指针(PSP)R13 连接寄存器存储子程序指针&#xff0c;提高速度R15 程序计数器PC 剩下的一些 …

Gemma模型一些细节讲解

Gemma模型报告中提到的几个点进行代码细节解读一下&#xff1a; &#xff08;1&#xff09;Embedding层共享参数 &#xff08;2&#xff09;输入输出层均进行RMSNorm Embedding层共享参数 共享embedding的权重给最后的llm_head层。是词嵌入层的共享&#xff0c;与旋转位置编码…

羊大师揭秘羊奶探秘,不止于营养的美味饮品

羊大师揭秘羊奶探秘&#xff0c;不止于营养的美味饮品 羊奶作为一种古老而珍贵的乳制品&#xff0c;不仅具有丰富的营养价值&#xff0c;还拥有独特的口感和风味&#xff0c;使其成为一种不止于营养的美味饮品。以下是对羊奶的深入探秘&#xff1a; 独特的风味&#xff1a;羊…

【JavaEE进阶】 Linux搭建Java部署环境

文章目录 &#x1f343;前言&#x1f334;Linux权限&#x1f6a9;用户操作&#x1f6a9;三种角色&#x1f6a9;文件类型和访问权限&#x1f388;文件类型&#x1f388;基本权限 &#x1f6a9;修改文件权限 &#x1f38d;搭建Java部署环境&#x1f6a9;apt&#x1f388;apt常用命…

【C++基础】STL容器面试题分享||上篇

&#x1f308;欢迎来到C基础专栏 &#x1f64b;&#x1f3fe;‍♀️作者介绍&#xff1a;前PLA队员 目前是一名普通本科大三的软件工程专业学生 &#x1f30f;IP坐标&#xff1a;湖北武汉 &#x1f349; 目前技术栈&#xff1a;C/C STL 1.请说说 STL 的基本组成部分2.详细的说&…

08 OpenCV 腐蚀和膨胀

文章目录 作用算子代码 作用 膨胀与腐蚀是数学形态学在图像处理中最基础的操作。其卷积操作非常简单&#xff0c;对于图像的每个像素&#xff0c;取其一定的邻域&#xff0c;计算最大值/最小值作为新图像对应像素位置的像素值。其中,取最大值就是膨胀&#xff0c;取最小值就是腐…

Pytorch学习 day01(Jupyter安装、常用函数、三种编辑器的对比)

Jupyter 安装过程中遇到的问题&#xff1a; Anaconda的base环境会自动安装Jupyter&#xff0c;但是如果我们要在其他环境中安装Jupyter&#xff0c;就需要注意&#xff0c;该环境的python版本不能高于3.11&#xff0c;且用以下代码安装&#xff1a; conda install nb_conda_…

【深度学习】脑部MRI图像分割

案例4&#xff1a;脑部MRI图像分割 相关知识点&#xff1a;语义分割、医学图像处理&#xff08;skimage, medpy&#xff09;、可视化&#xff08;matplotlib&#xff09; 1 任务目标 1.1 任务简介 本次案例将使用深度学习技术来完成脑部MRI(磁共振)图像分割任务&#xff0c…

java spring 03 启动细节

启动类ClassPathXmlApplicationContext public ClassPathXmlApplicationContext(String[] configLocations, boolean refresh, Nullable ApplicationContext parent)throws BeansException {super(parent);setConfigLocations(configLocations);if (refresh) {refresh();}}其中…

扬帆启航!携手飞桨get开源贡献新技能!

亲爱的开发者朋友们&#xff0c;“飞桨启航计划第二期”正式启动啦&#xff01;这是一个专为开源爱好者设计的远程项目&#xff0c;旨在通过集训营的形式&#xff0c;鼓励大家积极参与到开源项目中来&#xff0c;提升代码实践能力&#xff0c;并与飞桨开源社区共同成长&#xf…

Sublime Text4代码配色自定义方案

文章目录 前言Settings设置效果图 前言 关于Sublime Text对于我的使用体验&#xff0c;只能说内置的代码主题真的都太low了&#xff0c;一点都不好看。所以接下来我分享一下我自定义代码配色。当然&#xff0c;大家也可以通过我给的中文翻译注释来自定义自己喜欢的颜色。废话不…

【数字经济】数字化转型与制造企业绿色创新质量(2000-2022)

数据来源&#xff1a;企业年报等时间跨度&#xff1a;2000-2022年数据范围&#xff1a;A股上市制造企业数据指标&#xff1a; 股票代码 省份代码 总资产 年份 城市代码 企业年龄 股票简称 上市状态 资产负债率 行业名称 绿色专利申请 企业成长 …

面试经典150题——逆波兰表达式求值

Man cannot live like a beast, he should pursue knowledge and virtue. -- Dante 1. 题目描述 2. 题目分析与解析 2.1 思路一 这个波兰式我记得在之前上编译原理的时候学过&#xff0c;是对输入的代码进行解析用的。可能有一部分读者对于波兰表达式并不太熟悉&#xff0c;…

怎样获得CNVD原创漏洞证书

1. 前言 因为工作变动&#xff0c;我最近把这一年多的工作挖漏洞的一些工作成果提交到了CNVD漏洞平台&#xff08;https://www.cnvd.org.cn/&#xff09;&#xff0c;获得了多张CNVD原创漏洞证书。本篇博客讲下怎么获得CNVD原创漏洞证书&#xff0c;以供大家参考。 2. CNVD原创…

Python常用验证码标注和识别(需求分析和实现思路)

目录 一、需求分析 图像验证码识别&#xff1a; 文本验证码识别&#xff1a; 二、实现思路 三、案例与代码 四、总结与展望 在当今的数字时代&#xff0c;验证码&#xff08;CAPTCHA&#xff09;作为一种安全机制&#xff0c;广泛应用于网站和应用程序中&#xff0c;以防…

Anthropic官宣Claude3:建立大模型 推理、数学、编码和视觉等方面 新基准

文章目录 1. product2. Main2.1 核心能力2.2 打榜表现 3. My thoughtsReference Claude 3 在推理、数学、编码、多语言理解和视觉方面&#xff0c;全面超越GPT-4在内的所有大模型&#xff0c;重新树立大模型基准。 1. product https://claude.ai/ 国内暂不能使用&#xff0c;…

全球首个隐私计算一体机国际标准发布 蚂蚁摩斯参与编制

近日&#xff0c;IEEE 标准协会&#xff08;IEEE-SA&#xff09;正式发布并推行了全球首个隐私计算一体机国际标准《隐私计算一体机技术要求》&#xff08;IEEE 3156-2023&#xff09;。该标准由蚂蚁集团推动&#xff0c;中科院信息工程研究所、北京交通大学、中国信息通信研究…

7.1.2 Selenium的用法1

目录 1. 初始化浏览器对象和访问页面 2. 查找节点及节点交互 2.1 查找单个节点 &#xff08;1&#xff09;获取方法1——特定方法 &#xff08;2&#xff09;通用方法 2.2 查找多个节点 2.3 节点交互 3. 动作链 4. 执行 JavaScript 之下拉进度条 5. 获取节点信息 5.…

Ubuntu篇——crontab修改编辑器

输入命令: crontab -e 如果你的系统是第一次使用crontab服务&#xff0c;会首先让你选择一个编辑器 如果已经选择过编辑器&#xff0c;后续想要修改默认编辑器&#xff0c;可以输入sudo select-editor进行修改。