吃瓜日记 Task1
Posted Anita429
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了吃瓜日记 Task1相关的知识,希望对你有一定的参考价值。
目录
前言
本文为周志华老师的《机器学习》(西瓜书)和《机器学习公式详解》(南瓜书)第一章和第二章的学习笔记。
一、机器学习的定义
西瓜书引用了Mitchell在《Matchine Learning》中的经典定义,书中的翻译有点晦涩,还是看英文原句比较舒适:
A computer program is said to learn from experience E with respect to some task T and some performance measure P,if its performance on T ,as measured by P,improves with experience E.
自己手动翻译一遍:
对于一个计算机程序,如果它利用经验E提升了它在任务T上的表现(performance,用P来衡量),那么可以认为这个程序从经验E中学习到了关于任务T和P的知识。
本书认为“机器学习是研究‘学习算法’的学问”。我们研究机器学习算法,就是在研究如何让模型从经验数据中快速学习到有效的信息,提升在目标任务上的性能。
二、机器学习中的一些基础概念
数据集是由m条样本(instance/sample)组成的集合,每条样本有d个属性,每个属性可能取不同的值,属性可能是离散的,也可能是连续的,每个属性作为一个坐标轴,就构成了一个d维空间,称作样本空间/属性空间。每个样本的属性构成一个特征空间中的向量,称作特征向量。
将数据集划分为训练集和测试集,让模型在训练集上学习,把模型学习到的潜在规律称作假设,而真正的规律成为ground-truth(GT),让模型学习到的假设更好地逼近GT,就是机器学习的目标。
通常来说,模型预测的目标是有标签的,我们称之为有监督的学习。将一个样本的特征输入到模型中,让模型预测标签,根据标签是离散值还是连续值,我们可以将机器学习任务分为分类任务和回归任务两种。但事实上,有很多情况下,数据是无标签的,例如聚类任务,我们称之为无监督学习。还有一些情况下,我们只有一部分训练数据是有标签的,另一部分数据由于人工成本或其他原因,没有对应的标注,同时使用有标签的数据和无标签的数据进行训练,我们称之为半监督学习。
利用不同的属性,模型可以学到多种不同的假设,而训练的目标就是希望模型能够尽可能地找到与GT相符的假设。但由于训练集是有限的,甚至可能是有偏的,当模型在尽可能地拟合训练集时,很有可能会出现过拟合的状况,即在训练集上表现很好,但在测试集上差强人意。这时候我们认为这个模型的泛化性不好。我们可以用一个函数f来表示我们的模型:y=f(x),x是输入的属性,f是模型,y是模型的输出。输入测试集的每个样本的属性,我们可以得到对应的预测结果。通过检验模型在这些未知样本上的表现,我们可以评估模型的泛化能力。
在训练和选择模型时,我们可以制定一些目标或规则来约束模型,合理的规则能够帮助我们得到更好的模型。奥卡姆剃刀原则告诉我们,当有些时候你无从抉择是,通常是越简单的越好,但对于机器学习,到底什么是简单?NFL没有免费的午餐定理,表明了没有在任何领域都绝对优越的算法。在实际工程中,我们要根据实际情况来选取最合适的算法来解决问题。
三、模型评估与选择
3.1.过拟合、欠拟合、方差、偏差
上面我们提到了模型在训练集上表现很好,但在测试集上表现不好时,我们认为模型过拟合(overfitting)。而欠拟合(underfitting)是指模型在训练集上表现就不够好,通常是由于模型容量过小导致的。对于一个模型,假设空间往往决定了模型容量的大小,当模型容量过低时,会发生欠拟合,而模型容量过大时,会发生过拟合。
对于过拟合和欠拟合的问题,可以通过方差、偏差的角度去理解,选择模型,通常是要在方差和偏差的trad-off之前寻找一个平衡。
如果模型不能够拟合training data,则说明偏差较大,欠拟合;如果模型能够拟合training data,但是不能拟合testing data,说明有较大的方差,就是过拟合的状态。 参考【学习笔记】-李宏毅课程--方差和偏差(variance and bias) - 知乎
3.2拟合方法
- 留出法:将数据集划分为互斥的两个部分,训练集和测试集。通常训练集保留2/3~4/5的样本用于训练。不同的划分方式会导致不同的结果,所以通常要划分很多次,进行训练,再去平均结果。
- K-fold交叉验证(CV):将数据集划分为k个子集,每次取一个子集作为验证集,其他作为测试集,通常来说cv评估结果最好的模型被认为是泛化性比较好的模型,cv具有防止过拟合的作用。
- 自助法bootstrapping:从数据集中,多次有放回地采样,当抽取数量足够多时,大约有36.8%的数据不会被抽取到,没被抽取到的数据就作为测试集。几个比较容易混淆的概念:快速理解bootstrap,bagging,boosting-三个概念_猫二哥的博客-CSDN博客
- 调参与最终模型:除了选择算法之外,还要调节参数,由于可调参数比较多,通常在一个有限的范围内搜索最优参数。选定算法和参数之后,要在全部数据集上训练,得到的模型作为最终模型。
3.3度量方法
不同的评估指标往往会导致不同的评判结果,选择合适的评价指标,对于实际任务来说是很重要的。sklearn里已经实现了很多种度量方法:3.3. Metrics and scoring: quantifying the quality of predictions — scikit-learn 1.2.1 documentation
3.2.1回归问题评价指标
通常有MSE、MAE、R^2等;参考:回归的评估指标 - 知乎
3.2.2分类问题评价指标
对于分类问题,通常可以用accuracy准确率来评估,表示分类正确的样本所占比例。
对于二分类问题,我们可以把结果分为:TP,FP,TN,FN四类,用混淆矩阵来表示。
accuracy:全部数据中预测对的比例
precision:精准率,所有被预测为正的样本有多少为正。 当负样本被预测为正的代价很高时,要求精准率高。
recall:召回率,所有正例中被预测为正的比例。
F1-Score综合平衡了Precision和Recall:
其他指标:ROC曲线、AUC面积、代价敏感错误率与代价曲线等。
在语音唤醒任务中,我们通常用唤醒率FAR错误接受率和FRR错误拒绝率来计算出曲线,选择合适的阈值。
参考:
机器学习的评价指标(一):Accuracy、Precision、Recall、F1 Score - 知乎
https://www.cnblogs.com/HOI-Yzy/p/16578256.html
3.4比较检验
使用统计学中假设检验的方法,来验证模型的性能,对比不同的模型。
略。
其他参考
以上是关于吃瓜日记 Task1的主要内容,如果未能解决你的问题,请参考以下文章