评估方法的优缺点

本文探讨了过拟合和欠拟合的概念,以及如何通过留出法、交叉验证法和自助法进行模型评估。同时,介绍了性能度量如查全率、查准率和F1分数,并提到了ROC曲线。在模型调参方面,讨论了选择参数范围和步长的重要性,以及性能度量对算法和数据的依赖。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、过拟合:当学习器把训练样本学的太好,很可能把已经训练的样本特点当做了所有潜在样本都会有的一般性质,这样就会导致泛华能力下降(泛化能力指学习的模型应用在未知的样本中的能力)。

2、欠拟合:指学习能力低下,认为很一般的特点都是所有的特点。

评估方法:

  1. 留出法:若训练集包含绝大多数样本,则训练出的样本可能就接近想要的训练模型,但是由于测试集较小,评估结果可能就不够准确,基本划分的数据集的模式:2:1,4:1前面分别用做训练,后面的用作测试。
  2. 交叉验证法:等分,分层采样,取均值,缺陷则是:在数据集较大开销太大,花费时间较多。
  3. 自助法:循环从整体数据中取放进样例中,又放回的抽取,最终初始数据有0.368的样本未出现,用于测试。自助法能从初始数据集中出现的样本用于测试,这样的测试也称为包外估计。优点:自助法在数据集较小,难以有效划分训练\测试集时候很有用,能从初始数据集中产生多个不同的训练集,缺点:但是改变了数据集分布,这会引入估计偏差

但是在初始数据量足够时候,留出法和交叉验证法更常用。

调参与最终参数模型:

调参的一般准则:对每个参数选定一个范围和一个变化的步长,这是这是在计算开销与性能的折中方案。

性能度量:衡量模型泛华能力的度量,性能不仅取决于算法和数据,还决定任务需求。

回归任务最常用的性能度量均方误差。

查全率 (TP/(TP+FN))、查准率(TP/(TP+FP)):TP真正例 FP假正例 TN真反例 FN假反例

F1是基于查全率与查准率的调和平均定义的:2*TP/(样例总数+TP-TN)

ROC:受试工作特征。  横轴TPR(真正例)=TP/(TP+FN),纵轴FPR(假正例):FP/(TN+FP)。

规范化:将不同变化范围的值映射到相同固定范围内,常见的是[0,1],也称归一化。

偏差:期望输出与真实标记的差别,刻画学习算法本身的拟合能力。

泛化误差可分解为偏差、方差(度量了同样大小训练集的变动所导致的学习性能的变化吗,刻画了数据扰动所造成的影响)、与噪声(表达了在当前任务上任何学习算法所能达到的期望泛化误差的下界)之和。

### 四种评估范型的优缺点 在IT领域中,常见的四种评估范型包括成本效益分析法(CBAM)、功能点分析(Function Point Analysis, FPA)、COCOMO模型以及敏捷评估方法。以下是每种范型的优缺点: #### 1. **成本效益分析法(CBAM)** - **优点** - 提供了一种系统的框架来量化不同架构策略的成本和收益[^1]。 - 能够帮助决策者基于数据做出更明智的选择,尤其是在资源有限的情况下。 - 结合ATAM的结果,进一步优化了质量和经济效益之间的平衡。 - **缺点** - 需要大量的前期准备工作,例如场景定义、优先级排序等,这可能增加项目的初始开销[^1]。 - 对于复杂的系统,难以精确预测某些质量属性的实际效果及其对应的经济价值。 #### 2. **功能点分析(FPA)** - **优点** - 功能点是一种标准化的方法,能够较为准确地衡量软件的功能规模[^3]。 - 不依赖具体的编程语言或技术栈,适用于多种类型的项目。 - 可以为预算制定提供可靠的依据。 - **缺点** - 主要关注功能性需求,对于非功能性需求的支持较弱。 - 计算过程繁琐,尤其是当系统非常庞大时,可能会耗费较多时间。 #### 3. **COCOMO模型** - **优点** - COCOMO模型提供了从简单到复杂的多个层次(基本版、中级版、高级版),可以根据具体需求选择适用版本[^4]。 - 它考虑到了开发环境和技术难度等因素的影响,因此估算更加全面。 - **缺点** - 输入参数众多且复杂,可能导致初学者难以掌握。 - 如果输入的数据不够准确,则会显著降低最终估计结果的有效性。 #### 4. **敏捷评估方法** - **优点** - 敏捷评估强调快速反馈循环,允许团队不断调整计划以适应变化的需求[^5]。 - 更加注重人的因素而非文档驱动的过程,提高了灵活性和协作效率。 - **缺点** - 缺乏长期规划的能力,尤其不适合那些生命周期较长或者稳定性要求极高的大型项目。 - 过度依赖团队成员的经验水平和个人能力,可能存在较大的主观偏差风险。 ```python # 示例代码展示如何通过简单的函数实现一种基础的成本效益计算逻辑 def calculate_cost_benefit(revenue, cost): """ Calculate the net benefit by subtracting costs from revenues. :param revenue: Total expected monetary gain :param cost: Associated expenses incurred during implementation :return: Net financial outcome as a result of applying chosen strategy """ return revenue - cost example_revenue = 100_000 example_cost = 70_000 net_outcome = calculate_cost_benefit(example_revenue, example_cost) print(f"The calculated net benefit is ${net_outcome}.") ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值