机器学习|优化算法 | 评估方法|分类模型性能评价指标 | 正则化

前文回顾逻辑回归

目录


📚优化算法

📚模型评估方法

关于测试集与训练集

  • 训练集类比为模拟试卷,将测试集类比为正式考试试卷
  • 测试集要尽可能地与训练集互斥(即测试样本尽量不在训练集中出现),显然,正式考试的题在模拟卷里做过,会影响测试结果。
  • 测试集和训练集的划分要尽可能地保持数据分布的一致性(避免因数据划分过程中引入额外的偏差而对最终结果产生影响),显然,只有模拟卷的题型和正式考试的题型差不多,刷模拟卷的效果才更好。

🐇留出法(hold-out)

留出法是直接将数据集D划分为两个互斥的集合,其中一个作为训练集S,另一个作为测试集T。模型是从训练集归纳出来的,性能是在测试集上进行评估。

为了保持训练集和测试集数据分布一致,避免额外的误差,我们可以采用分层随机抽样(分层采样),从而保持相同的类分布。

假设数据集D:1000,其中训练集S(70%),测试集T(30%)。若数据集D包含500正例,500反例,那么最终采样的结果是训练集有350正例,350反例,测试集有150正例,150反例。

留出法具有较高的方差。T的评估可能在很大程度上取决于哪些数据点最终出现在训练集中,哪些数据点最终出现在测试集中。且可用于训练的样本较少,因为有些样本被保留用于测试。因此,单独使用留出法得到的估计结果往往不够稳定可靠。为提高性能,在使用留出法时,一般要采用若干次随机划分、重复进行实验评估后取平均值作为留出法的评估结果。

依然存在的限制:

  • 留出法没有尽可能多地利用数据进行训练
  • 它也无法控制每条记录用于测试和训练的次数

🐇交叉验证法(cross-validation)

最简单的交叉验证(2折交叉):假设我们把数据分成两个大小相等的子集,我们选择其中一个子集进行训练,另一个进行测试。然后我们交换子集的角色,使之前的训练集称为测试集,反之亦然。最后总误差是通过对两次运行的误差求平均得到。

一般地,k折交叉验证是将数据分成k个大小相等的分区,在每次运行过程中,选择一个分区进行测试,而其余分区则用于训练。这个过程重复k次,以便每个分区恰好用于测试一次。总误差是通过对所有k次运行的误差进行平均得到的。类似于留出法,k折交叉法同样可以重复几次

k折交叉法的一种特殊情况:设置k=N(即数据集的大小),这就是所谓的留一法(leave-out-out)。每个测试集只包含一条记录。留一法不受划分方式的影响,每个样本都是一个分区。留一法的评估结果往往被认为是比较准确的,不过当数据集比较大的时候,训练m个模型的计算开销难以承受。

🐇自助法(bootstrap)

在自助法中,训练集被替换采样,即已经选择用于训练的数据被返回原始数据集,这样它被重新选中的概率和原来相等。平均而言,一个大小为N的自举样本包含原始数据集中约63.2%的数据。

没有包含在自举样本中的数据作为测试集。

假设数据集D有N个样本,通过抽取返回的方式从数据集D中抽取N个样本,这抽取出的N个样本就是D’。数据集D中有部分样本从来没有被抽到过,那么没被抽到过的这些数据集就作为测试集D-D’训练集为D’

自助法可以从相同的原始数据集生成许多不同的训练集,这使得它在数据集小、难以有效划分训练/测试集时很有用。但自助法会改变初始数据集的分布,会引入估计偏差。因此,如果我们有足够的数据,留出法和交叉验证法将被更广泛地使用。

🐇比较总结

📚分类模型性能评价指标

🐇混淆矩阵

🐇准确度(Accuracy)

对于给定的测试集,模型正确分类的样本数与总样本数之比。

更高的准确性并不一定意味着在目标任务上有更好的表现(偏向多数类),它的隐含假设是例子之间的类分布是相对平衡的。

考虑一个二元分类例子:0类示例的数量为9990,1类的数量为10,如果预测全部为0,那准确率也有9990/10000=99.9%,但这显然不正确。

🐇精确度(precision)和召回率(Recall,TPR)

精确度召回率
对于给定测试集,分类模型将正类样本预测为正类的数量与将样本预测为正类的综述的比例。对于给定测试集,模型将正类样本分为正类的数量与模型分类正确的数量的比值。
TP / (TP+FP)

TP / (TP+FN)

 一般来说,精确度和召回率是相互矛盾的衡量标准Recall↑Precision↓,反之亦然,why?

在信息检索中,我们可以认为:

  • TP = 实际相关的检索文档
  • FP = 实际不相关的检索文档
  • TN = 实际不相关的未检索文档
  • FN = 实际相关的未检索文档

为了尽可能多地检索相关文档(增加查全率),我们尽可能多地检索文档。最极端的情况是所有的文档都会被检索到,其中所有相关的文档肯定都会被检索到(Recall =1)。然而,精度会相当低。Recall↑Precision↓

为了提高精度,我们只检索置信度高的文档,但这样难免会遗漏一些相关的文档,降低查全率。即有PrecisionRecall

🐇精确度和召回率的调和平均(F_score)

该指标用来综合的衡量模型的召回率和精确度,β是权重因子,当β=1,即为F1_score。

有时我们可能有多个混淆矩阵:重复训练几次;在多个数据集上进行训练;多类或多标签

我们如何评价多类分类的精度和召回率?

假设我们有一组照片。每张照片显示一种动物:猫、鱼或母鸡。我们的分类器需要预测每张照片中显示的是哪种动物。

宏查准率、宏查全率和宏F1

 微查准率、微查全率和微F1

🐇假阳性率(FPR)和真阴性率(TFR)

🐇ROC曲线与AUC的值

ROC曲线是衡量分类器性能的一种常见方法。ROC曲线的实际意义在于评估分类器在不同阈值下的真阳性率和假阳性率,以达到最优的分类效果。ROC曲线下面积越接近1,从图中看曲线越接近左上角,说明分类器的性能越好。ROC曲线下面积的值即为AUC值。

设置不同的阈值可以得到不同的混淆矩阵,而每个混淆矩阵又会对应一个TPR、FPR值,在图中对应得到一个点,改变不同的阈值,得到不同的点,最终画出该分类器对应的ROC曲线。

关于分类器阈值以及ROC曲线的实际含义解释,推荐观看该哔哩哔哩视频

  • 横坐标为假阳性率——FPR = FP / (TN+FP)
  • 纵坐标为真阳性率——TPR = TP / (TP+FN)

🐇PR曲线(Precision-recall Curve)

Precision-Recall Curve可以反映分类器在不同的查全率和查准率条件下的性能表现,评估分类器在不同阈值下的查全率和查准率。通常来说,我们希望分类器在保证尽可能高的查准率的基础上,能够达到较高的查全率。因此,我们可以通过对比不同分类器在同一数据集上的Precision-Recall Curve来选择最优的分类器。曲线越接近右上角,表示分类器的性能越好。

  • 横坐标为查全率(召回率,Recall,TPR)——TP / (TP+FN)
  • 纵坐标为查准率(精确度,Precision)——TP / (TP+FP)

其中,召回率是指所有真实正样本中被分类器成功预测为正样本的比例,而精确度则是指所有被分类器成功预测为正样本的样本中真正正样本的比例。(详见上文)

🐇ROC曲线与PR曲线的关系

每一个ROC曲线都有唯一的一个PR曲线与之对应,并且如下图,ROC曲线中在左边的那条线对应PR中在上方的那条线。

ROC曲线与PR曲线的适用场景

 以下是一个直观的极度不平衡的例子

  • 我们可以很明显地看出右边这个图效果是很差的(越靠近右上角的越好),而左边这个图它感觉这个模型效果还是很好的。
  • 当预值为0.5的情况,可以得到右上角这样的一个混淆矩阵,它正类是一个都没预测对,尽管是在这么差的情况下,左边的ROC曲线,看上去分类器效果仍然非常好,而右边这个分类器能够反映出这个模型效果不太好。

所以在这种情况下,我们需要选用 PR曲线,也就是说,如果我们更关心的是正类预测结果,并且给到的数据集非常的不平衡的话,那我们一定要选用PR曲线,而不能选用ROC曲线。

学习视频

机器学习 | 模型评估: ROC曲线与PR曲线(一): ROC曲线与PR曲线的关系

机器学习 | 模型评估: ROC曲线与PR曲线(二): ROC曲线与PR曲线的适用场景

📚模型选择

机器学习的模型选择是指从众多可供选择的机器学习模型中,选择适合当前任务的最优模型的过程。在实际应用中,不同的机器学习模型适用于不同类型的问题,因此需要根据具体任务的特点和数据集的特征来选择最合适的模型。

一般来说,模型选择的过程可以分为以下几个主要步骤:

  • 确定问题类型:根据任务的性质和对结果的需求,确定是一个分类问题还是回归问题等。
  • 收集数据并进行预处理:收集与任务相关的数据,并对数据进行清洗、归一化、缺失值处理等预处理操作。
  • 选择评价指标:根据任务的目标,选择评价指标来衡量模型的性能。
  • 初步选取模型:从广泛的机器学习模型中初步筛选出能够适应当前任务的模型。
  • 进行模型评估:使用交叉验证等模型评估方法(见上文)来评估每个模型的性能,并根据评价指标的表现选择最优模型。
  • 对最终模型进行调参:针对选出的最优模型,通过调整超参数(hyperparameters)等方法进一步提升模型的预测性能。

在机器学习中,超参数指的是需要在训练模型前设定的一些参数这些参数的值不能通过训练数据自动学习得到,需要通过手动调整来优化模型的性能。例如正则化参数、学习率这些可用来控制算法的行为相对应的,其他的参数被称为模型参数,它们的值可以根据训练数据进行自动学习

📚特征选择(正则化)

特征分类

  • 相关特性:那些我们需要好好用的
  • 无关属性:那些用不到的
  • 冗杂属性:可以由相关特性推出来的

🐇过拟合的问题

c0749d7151d445ca9388f969a4193d3e.png

🌟如何处理过拟合问题?

  • 丢弃一些不能帮我们正确预测的特征。可以是手工选择保留哪些特征,或者使用一些模型选择的算法来帮忙。
    • 基于封装的方法(Wrapper methods) :它通过使用机器学习算法在子集上进行训练来确定最佳特征子集。封装法主要包括以下步骤:
      • 初始特征子集:从原始特征集合中随机选择一些特征作为初始特征子集。
      • 特征子集搜索:使用机器学习算法在特征子集上进行训练,并计算预测效果。根据预测效果调整特征子集。这里的调整一切基于趋向最优,可能是添加一个特征也可能是删除一个特征。核心思想就是变完和没变之前比一下。
      • 停止条件:当特征子集满足某个停止条件时,停止搜索过程。例如,达到预定的特征数目,或者预测效果不再提升。
      • 最优特征子集:输出预测效果最好的特征子集。
    • 基于过滤的方法(Filter Methods):用快速计算统计量代替模型评估。它的特征子集的选择和模型学习过程是分开的,先对特征进行评估,然后根据评估结果选择特征子集,最后使用机器学习算法进行模型学习。过滤法主要包括以下步骤:

      • 特征评估:计算每个特征与标签之间的相关性、信息增益、卡方值、互信息等指标,用于评估特征的重要性。

      • 特征排名:根据评估指标对特征进行排序,从而确定最重要的特征。

      • 特征选择:选择排名前面的特征作为特征子集。

      • 模型学习:使用选择的特征子集进行模型训练和预测。

      • 过滤法相比封装法计算更简单,a lot less expensive!但它相对来说不够准确。

    • 基于嵌入的方法(Embedded methods) :在算法训练的过程中直接对特征进行筛选。嵌入法主要包括以下步骤:

      • 模型优化:使用特定的机器学习算法对特征进行训练和优化。

      • 特征选择:根据模构建过程中的特征重要性来选择最佳的特征子集。

      • 模型再训练:使用选择的特征子集对模型进行再训练。

      • 嵌入法是一种准确性高、计算复杂度较低、能够考虑到更多特征属性的特征选择方法,但也需要注意可能存在过拟合和受限于具体机器学习算法等问题。

  • 正则化。它可以通过添加一个正则化项来约束模型中权重的大小,从而避免过拟合现象。保留所有的特征,但是减少参数的大小。

基于嵌入的特征选择方法通过调整特征的权重,直接在模型学习过程中进行特征筛选;而正则化方法虽然也可以用于特征选择,但主要目的是通过加入正则化项来约束模型中参数的大小,从而防止模型过度拟合。 正则化方法有时可以同时降低特征的数量,但这不是正则化的主要目的。

🐇代价函数

61649e75ff5e4df1907985b02bc1b717.jpg

🐇正则化线性回归

对于线性回归的求解,我们之前推导了两种学习算法:一种基于梯度下降,一种基于正规方程。

b4903726b92546db8ff126344acf1d30.jpg

🐇正则化的逻辑回归模型

77b091c0d5cb482dbf8b60c235518ca3.jpg

 以上部分参考于【中英字幕】吴恩达机器学习系列课程,以上对应7.1-7.4

补充学习博客:机器学习中正则化项L1和L2的直观理解

参考博客

深度学习评估方法

常用的分类模型性能评价指标

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
青葱年少的头像青葱年少普通用户
上一篇 2023年11月29日
下一篇 2023年11月29日

相关推荐