机器学习(周志华)学习笔记 - 性能度量(上)

本文深入探讨了模型评估的各种标准,包括均方误差、误差和精度、查准率和查全率等,解释了它们在不同任务中的应用及相互之间的矛盾关系。

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

1. 对模型的泛化误差进行估计的标准称为性能度量

性能度量的标准有很多,不同的性能度量下各个模型的表现不同。  模型的好坏与具体的任务有关

2. 性能度量的标准

1)均方误差    

    \frac{1}{m}\sum (f(x) - y_{i})^{2}     回归任务最常用的性能度量         对于独立分布D和概率分布密度平p(.)     \int (f(x) - y_{i} )^{2}\cdot p(x)dx

2) 误差和精度 

      多用于二分类问题 和多分类问题       误差:     E(f, D) = \frac{1}{m}\sum \amalg (f(x) != y_{i})    

                                                                精度:     acc(f, D) = \frac{1}{m}\sum \amalg (f(x) = y_{i}) = 1 - E(f,D)    

     对于独立分布D, 概率密度分布函数 p(x) 

     误差的一般表示方法 :      E(f , D) = \int p(x) \cdot \amalg(f(x) != y_{i})dx

  

3)  查准率和查全率  (嘻嘻, 并没有那么难)

                      正例反例               我把一个样本判断为正例  如果这个样本是正例, 则我判断对了, 为真正例, 否则为假正例

实际情况预测结果 
 正例反例
正例TP (真正例)FN(假反例)
反例FP (假正例)TN(真反例)

         查准率: 模型找出的符合条件的样本, 真正符合条件的占多少           找出的是不是都正确      

           P = \frac{TP}{TP + FP}

 

 

         查全率: 模型找出来的, 占样本中全部符合条件的样本的比例           能不能找全,找的有多全

         R = \frac{TP}{TP+FN}

 

    查全率和查准率是一对矛盾的度量。 一般来说查准率高时,查全率一般较低, 查全率高时, 查准率一般较低。

原因: 为了让查全率高尽可能多的增加选择样本的数量, 如果将所有的样本全部都选上,则查全率可以达到 100%, 插准率 最低为 P/M (取决于样本)。

 为了让查准率高,需要选择尽可能把握大的, 因此难免会漏掉一些好的样本, 查全率变低。

 

P-R 图

     在很多情形下, 可以根据学习器的预测结果对样例进行排序, 排在前面的是学习器认为最可能是正例的样本,排在最后的是学习器认为最不可能是正例的样本。

以查全率为横轴, 以查准率为纵轴, 得到了查准率和查全率的曲线,  P-R 图片

 如果模型A的曲线包围了模型B曲线则说明 模型A的表现比较好

如果模型A的曲线和模型B的曲线有交叉,则很难断定谁优谁劣。     如果一定要判断某个模型的好坏, 一种可靠的依据是比较曲线下方的面积。

平衡点(Break- Even Point)度量:  查准率等于查全率的取值

 

 

 

 

### 周志华机器学习》书籍复习指南 为了有效准备期末考试,建议采用结构化的复习方法来理解周志华所著《机器学习》的核心概念。这本书籍涵盖了广泛的理论和技术细节,在复习过程中应当注重以下几个方面: #### 1. 掌握基础概念 确保对监督学习、无监督学习和支持向量机等基本术语的理解深入透彻[^1]。 #### 2. 关键算法详解 重点研究书中提到的关键算法,比如决策树、朴素贝叶斯分类器以及K近邻算法等。对于每种算法,不仅要了解其工作原理,还要熟悉如何应用这些算法解决实际问题。 #### 3. 数学推导的重要性 注意书中涉及的各种数学公式的推导过程,特别是概率论、线性代数和最优化方面的知识。这部分内容虽然可能较为抽象复杂,但对于构建坚实的理论基础至关重要。 #### 4. 实践练习不可或缺 通过编程实现一些简单的机器学习项目或实验可以帮助加深理解和记忆。尝试使用Python或其他工具包重现书本上的案例,并探索不同参数设置下模型性能的变化[^2]。 ```python from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsClassifier # 加载鸢尾花数据集 data = load_iris() X_train, X_test, y_train, y_test = train_test_split(data.data, data.target) # 创建并训练kNN分类器 clf = KNeighborsClassifier(n_neighbors=3).fit(X_train, y_train) print(f'Accuracy on test set: {clf.score(X_test, y_test):.2f}') ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值