西瓜书第一,二章笔记
datawhale吃瓜教程task1学习笔记
第一章
第一张主要介绍了一些机器学习研究内容和基本术语,以及发展现状。
基本术语
由于有些术语过于基础,在此不做赘述大家可以去读西瓜书。
1、分类任务:若模型的预测值是离散的,如“好瓜”,“坏瓜”,这是分类任务。在二分类任务中有两个标签(label)一个是正类,一个是反类
2、回归任务:若模型的预测值是连续的,如“西瓜的成熟度是0.99“那么这就是一个回归问题。回归问题的结果是一个实值
3、聚类任务:聚类就是我们不知道样本的label,只知道feature,让模型根据样本feature的规律和特点对样本分类,聚类是强化学习的一种
4、监督学习:已知样本label,让模型学习其中的信息是监督学习
5、无监督学习:不知道模型的label,让模型根据feature学习信息是无监督学习
6、泛化:在训练集上训练出的模型适应新样本的能力,叫做模型的泛化能力,一般情况下我们希望得到一个泛化能力较强的模型
NFL 没有免费的午餐
简述这个定理,他说的就是一个事,任何一个机器学习模型都是在一定的条件和情景的限制下才是有效的,对于别的问题是无效的。抛离实际问题谈”什么学习算法好“是无意义的
第二章
第二章讲述模型的评估与选择,讲解很多衡量模型性能的指标,选择模型的方法等等。
过拟合:把样本的特征学习的太好了会导致过拟合,过拟合会导致模型的泛化能力下降。
欠拟合:模型没有完全学习到样本的特征,导致模型的能力不足。
数据集划分方法
k折交叉验证
交叉验证是划训练集和测试集的一种方法,对数据集D进行分层采样得到k个互斥的子集,在训练时每次选取一个集合作为测试集其余的并在一起作为训练集。以10折交叉验证为例,将样本D划分为10个子集 D 1 , D 2 , ⋅ ⋅ ⋅ , D 10 D_1,D_2,···,D_{10} D1,D2,⋅⋅⋅,D10,每次选取一个集合作为测试集,第一次训练取 D 10 D_{10} D10为测试集剩下的为训练集,第二次训练取 D 9 D_{9} D9为测试集剩下的为训练集,这样以此类推10次下来就能得到10个不同的训练集和测试集。k一般取10,5,20。
留一法
留一法是k折交叉验证的一个特例,当一共有m个样本时,k=m就是留一法的情况,即每次只取一个样本为测试集,这样每次的训练集几乎取到了所有的样本,因此留一法的评估结果往往比较准确。但是当样本量很大时,训练m个模型的开销是难以忍受的
自助法
自助法是在原有数据集上人工采样生成新的数据集:在有m个样本的数据集D中进行有放回的m次随机采样,每次取出一个样本到新集合D’,取出复制一份到新数据集后返回D中,这样在下次随机抽样中这个数据就还有可能被抽到,这样重复采样m次就能得到一个与D大小一样的D’。在随机采样的过程中由于样本有一定几率被重复采样,所以相当于在新数据集中引入了误差项,这对集成学习是非常有利的。在样本量较少的情况下非常适合使用自助法,但在样本量充足的情况下还是使用交叉验证法和留出法比较好一些。
性能度量
均方误差MES
在回归问题中常使用均方误差来衡量模型性能,公式:
M
E
S
=
1
n
∑
i
=
1
n
(
y
^
i
−
y
)
2
MES=\frac{1}{n}\sum^{n}_{i=1}(\hat y_i-y)^2
MES=n1i=1∑n(y^i−y)2
表示模型的估计值与实际值之间差值的均值。
P,R,P-R曲线,F1值
在分类问题中,经常使用P值,R值,P-R曲线,F1分数来衡量模型性能。
针对模型的预测值和样本类别的实际值引入下面混淆矩阵:纵轴是真实值,横轴是预测值
正 | 反 | |
---|---|---|
正 | TP(真正例) | FN(假反例) |
反 | FP(假正例) | TN(真反例) |
P(查准率)= T P T P + F P \Large\frac{TP}{TP+FP} TP+FPTP
R(查全率,召回率) T P T P + F N \Large\frac{TP}{TP+FN} TP+FNTP
P反应模型正确找出正例的能力,R反应模型找全正例的能力。P和R呈负相关关系,在模型能力恒定的情况下,想让准确率高,查全率就不会高;想让查全率高,那准确率就不会高。
计算出所有阈值下的P和R来绘制曲线就得到了P-R曲线,一般P-R曲线越靠近右上角(曲线与坐标轴围成的面积越大),模型性能越强。
如何观察P-R曲线来选择阈值?
在P-R曲线明显下降的那个点之前选择阈值。
BEP
为了综合考虑查准率和查全率,人们设计了“平衡点”(BEP)这个指标,他是P值=R值的点,通过比较BEP值的高低可以衡量不同分类器的性能。
F1值是BEP的进阶版,他考虑的模型的性能点更全面,更能客观的反映一个模型的性能。F1的计算公式:
F
1
=
2
∗
P
∗
R
P
+
R
=
2
∗
T
P
样
例
总
数
+
T
P
−
T
N
F1=\frac{2*P*R}{P+R}=\frac{2*TP}{样例总数+TP-TN}
F1=P+R2∗P∗R=样例总数+TP−TN2∗TP
对于F1值我们可以通过对P和R进行加权计算的方式,有倾向性的考量模型的性能,通过参数
β
\beta
β进行调整:
F
β
=
(
1
+
β
2
)
∗
P
∗
R
(
β
2
∗
P
)
+
R
F_\beta=\frac{(1+\beta^2)*P*R}{(\beta^2*P)+R}
Fβ=(β2∗P)+R(1+β2)∗P∗R
当
β
>
1
\beta>1
β>1时,查全率有更大影响,当
β
<
1
\beta<1
β<1时,查准率有更大影响。
宏F1和微F1
进行多次训练和测试就会得到多个混淆矩阵,如何综合多个混淆矩阵得出F1值,有宏F1和微F1两种方式。假设一共得到n个混淆矩阵
宏F1就是先计算出每个混淆矩阵的P值和R值再计算平均P值和平均R值,使用平均P值和平均R值计算F1值得到宏F1。
还可以计算n个混淆矩阵的平均TP,FP,TN,FN,再使平均的TP,FP,TN,FN计算F1值得到微F1
ROC曲线,AUC曲线
P-R曲线考虑的是P值和R值之间的权衡,而ROC曲线考虑的是真正例率TPR和假正例率FPR之间的权衡。
T
P
R
=
T
P
T
P
+
F
P
=
P
F
P
R
=
F
P
T
N
+
F
P
TPR=\frac{TP}{TP+FP}=P\\ FPR=\frac{FP}{TN+FP}
TPR=TP+FPTP=PFPR=TN+FPFP
TPR是模型能正确识别正例的比率,FPR是模型误将反例识别为正例的比率。
ROC曲线就是在以FPR为横轴,TPR为纵轴,以不同阈值下的值为坐标点绘制的曲线。ROC曲线越接近左上角,模型的性能越好。模型的对角线(0,0)——(1,1)对应随机猜想模型(即胡乱猜),当ROC曲线位于对角线上方时说明模型的效果比随便瞎猜样本的类别要好,当ROC曲线在对角线下方时说明模型有重大问题,他预测的结果还不如随便瞎猜的好。
ROC曲线在类别比例不均衡时特别有用,因为他不受正例和反例比例的影响。
但在实际的训练和测试过程中,当数据量比较小时,我们往往得不到光滑的ROC曲线而是阶梯形的。
与P-R曲线类似,ROC曲线也有两个或多个模型曲线交叉的时候,这时往往很难绝对的说某个模型的性能比其他的更优,于是就用ROC曲线下面积AUC(即ROC与坐标轴围成的面积)来衡量,往往AUC越大模型性能越好。