误差分析

此系列笔记来源于

Coursera上吴恩达老师的机器学习课程


误差分析

评估一个学习算法

步骤:

1、首先我们先将数据集分为两部分 训练集 和 测试集 ,一般按 7 : 3 的比例

2、用训练集去学习 Θ 并且 最小化 Jtrain(Θ)

3、计算测试集的 测试误差 error Jtest(Θ)

测试误差的计算:

1、对于线性回归

image-20220510192237363

2、对于逻辑回归

image-20220510192255521

image-20220510192341641

这将能告诉我们测试集数据被错误分类的比例

模型选择

当我们的假设函数与训练集非常拟合时,不能代表这个假设函数就是优秀的,可能会产生过度拟合,即对于新样本的表现并不如意。因此,我· 们需要选择更合适的假设函数模型。

步骤:

1、我们根据多项式次数分成好几个模型

2、将数据集分成三部分,一般来说为 训练集60%、验证集(Cross validation cv)20%、测试集20%

3、计算各模型的误差值

(1)用训练集来优化 Θ参数

(2)用验证集来找出误差最小的多项式次数的模型

(3)用测试集来估计泛化误差值‘

高偏差 bias 和 高误差 variance

高偏差对应着欠拟合underfitting,高误差对应着过度拟合overfitting

高误差时,Jtrain(Θ)JCV(Θ) 都很高,且 Jtrain(Θ)JCV(Θ)

高偏差时,Jtrain(Θ) 很小, JCV(Θ) 远高于 Jtrain(Θ)

image-20220512233926697

正则化 与 偏差和误差

对于正则化的参数 λ 我们也要进行选择,如果太小,会出现过度拟合,太大则会出现欠拟合。

步骤:

1、建立一个 λ列表,一般依次为两倍关系,(i.e. λ∈{0,0.01,0.02,0.04,0.08,0.16,0.32,0.64,1.28,2.56,5.12,10.24})

2、建立一个不同degrees的模型集合 或者是其他不同变量

3、遍历每个λ,对于每个λ遍历所有模型来学习 Θ

4、用学习到的 Θ 计算errorCV(不使用正则化)

5、选择在 Cross Validation set 上产生最低误差的最佳组合

6、使用最佳组合的 Θλ 应用于测试集,看看其效果

学习曲线

高偏差:high bias

样本量少时:

Jtrain(Θ)很小, JCV(Θ)很大

样本量多时:

Jtrain(Θ)JCV(Θ)都很大,且两者值逐渐靠近

image-20220513204410459

高误差:high variance

样本量少时:

Jtrain(Θ)很小, JCV(Θ)很大

样本量多时:

Jtrain(Θ) 逐渐增加,JCV(Θ)逐渐减小,且不趋于平稳状态。Jtrain(Θ)<JCV(Θ),但两者差距始终很大

![image-20220513204626698](https://img2022.cnblogs.com/blog/1754203/202205/1754203-20220513204626958-1354891981.png)

在此之后我们应该做的:

image-20220513205724832

对于神经网络来说,隐藏层、参数越少,往往更容易欠拟合,但是更好计算。相反,隐藏层、参数越多,往往更容易过渡拟合,此时我们可以采用正则化来解决这一问题,但是这将增大电脑的计算量

低阶多项式一般会 high bias 和 low variance,往往模型的拟合程度不是很好

高阶多项式一般会 low bias 和 high variance,模型对训练集的拟合程度非常好,但新样本则并不。

一般我们希望选择一个介于两者之间的模型。

对偏斜类的误差度量

简单解释下偏斜类,举个例子,判断病人是否得了癌症,数据集中为1的占比量非常大,或者为0的占比量非常大,这样的数据倾斜会导致我们算法训练出来的效果偏差十分巨大。

对此我们提出精准率Precision 和 召回率Recall 来对偏斜类进行误差度量

预测类 \ 实际类 1 0
1 True positive False positive
0 Fake negative Fake negative

我们定义 Precision=TruepositiveTruepos+Fakepos

即 预测是阳性的数据中真实为阳性的比例

定义 Recall=TruepositiveTruepos+Fakeneg

即 真实为阳性的数据中被预测到的比例

精准率和召回率之间的权衡

在上面用癌症作为例子的逻辑回归中,我们最初定义

0hθ(x)1,如果 hθ(x)0.5,预测 1;如果 hθ(x)<0.5,预测 0

当我们增大 0.5 时, 我们会得到一个高精准率,低回归率结果

反之减小 0.5 时,我们会得到一个低精准率,高回归率的结果

我们令这个 0.5 变为 临界值threshold

我们通过改变临界值,来获得一个不同P值和R值的结果

那么精准率和召回率应该如何权衡呢?

我们可以通过调和平均数来计算F值,以此来评判这个算法,在这里越高越好

F:2PRP+R

另外,当我们有一个低偏差,高方差(多参数)的训练模型(如神经网络)时,有一个庞大的训练集(包含足够多的特征)往往能帮我们训练出高性能的模型。

posted @   Yra  阅读(475)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示