提交 e0dfa610 编写于 作者: W wizardforcel

2020-12-22 14:45:42

上级 83731fce
......@@ -78,13 +78,13 @@
![](img/54dadcbf-9122-4ff6-89f4-a98ca577f4b8.png)
二次加权 kappa 表达式中的权重*(w <sub>i,j</sub> )*如下:
二次加权 kappa 表达式中的权重`w[ij]`如下:
![](img/e9f8f87c-4ebe-4065-8787-997893e22c33.png)
在上式中,以下内容适用:
*`N`代表类别数
* `N`代表类别数
* `O[ij]`表示已被预测为`i`类的图像数量,其中图像的实际类别为`j`
* `E[ij]`表示预测类别为`i`的预期观察次数,而实际类别为`j`,假设 预测班和实际班
......@@ -94,7 +94,7 @@
图 2.3:Kappa 指标术语
真实标签为*橙色,假设标签之间具有独立性的*时,预测*苹果*的预期计数由以下公式给出:
真实标签为*橙子*,假设标签之间具有独立性时,预测*苹果*的预期计数由以下公式给出:
![](img/81cdd503-0856-413d-806e-2d844b0dae16.png) ![](img/01ae53b3-037d-4047-a4fe-b41a148af503.png) ![](img/be17d2d1-dd00-4ba9-9165-571866d133b2.png)
......@@ -102,13 +102,13 @@
如果您熟悉两个类别变量之间的独立性卡方检验,则假设类别变量之间具有独立性,则列联表中每个单元格中的预期计数都是基于相同的公式计算的。
可以从混淆矩阵中直接追踪模型的观测计数,该模型预测的真实标签为*橙*时,预测的*苹果*等于`5`,如下所示:
可以从混淆矩阵中直接追踪模型的观测计数,该模型预测的真实标签为*橙*时,预测的*苹果*等于`5`,如下所示:
![](img/f6d73ecf-a072-4064-9b92-8e880c0080e6.png)
因此,我们可以看到模型在预测*橙**苹果*时所产生的误差小于我们不使用模型时所获得的误差。 与没有模型的预测相比,Kappa 通常衡量我们的表现如何。
因此,我们可以看到模型在预测*橙**苹果*时所产生的误差小于我们不使用模型时所获得的误差。 与没有模型的预测相比,Kappa 通常衡量我们的表现如何。
如果我们观察二次权重的表达式*w <sub>i,j</sub>* ),我们可以看到,当实际标签与预测标签之间的差异较大时,权重的值会更高 更伟大。 由于类的序数性质,这是有道理的。 例如,让我们用类别标签 0 表示完美状态的眼睛; 患有轻度糖尿病性视网膜病的患者; 中度糖尿病视网膜病变伴两个; 并伴有严重的糖尿病性视网膜病变。 当轻度糖尿病性视网膜病被错误地分类为严重糖尿病性视网膜病而不是中度糖尿病性视网膜病时,这个二次项权重( *w <sub>i,j</sub>*将会更高。 这是有道理的,因为即使我们没有设法预测实际类别,我们也希望预测一个尽可能接近实际状况的状况。
如果我们观察二次权重的表达式`w[ij]`,我们可以看到,当实际标签与预测标签之间的差异较大时,权重的值会更高 更伟大。 由于类的序数性质,这是有道理的。 例如,让我们用类别标签 0 表示完美状态的眼睛; 患有轻度糖尿病性视网膜病的患者; 中度糖尿病视网膜病变伴两个; 并伴有严重的糖尿病性视网膜病变。 当轻度糖尿病性视网膜病被错误地分类为严重糖尿病性视网膜病而不是中度糖尿病性视网膜病时,这个二次项权重`w[ij]`将会更高。 这是有道理的,因为即使我们没有设法预测实际类别,我们也希望预测一个尽可能接近实际状况的状况。
我们将使用`sklearn.metrics.cohen_kappa_score``weights= "quadratic"` 来计算 kappa 得分。 权重越高,kappa 得分越低。
......@@ -146,7 +146,7 @@ Softmax 将是表示输出层中不同类别的概率的最佳激活函数,而
图 2.4:五个严重等级的等级密度
从上图可以看出,将近 73% 的训练数据属于 **0 级**,这代表没有糖尿病性视网膜病。 因此,如果我们碰巧将所有数据点标记为 **Class 0** ,那么我们将具有 73% 的准确率。 在患者健康状况下这是不希望的。 我们宁愿有一个测试说患者没有时有某种健康状况(假阳性),而有一项测试却漏诊时没有发现某种健康状况(假阴性)。 如果模型学会将所有点分类为属于 **0 类**,则 73% 的准确性可能毫无意义。
从上图可以看出,将近 73% 的训练数据属于 **0 级**,这代表没有糖尿病性视网膜病。 因此,如果我们碰巧将所有数据点标记为 **0 类**,那么我们将具有 73% 的准确率。 在患者健康状况下这是不希望的。 我们宁愿有一个测试说患者没有时有某种健康状况(假阳性),而有一项测试却漏诊时没有发现某种健康状况(假阴性)。 如果模型学会将所有点分类为属于 **0 类**,则 73% 的准确性可能毫无意义。
*无严重等级*上,检测较高的严重等级比做好工作更为重要。 使用对数损失或交叉熵成本函数的分类模型的问题在于它偏爱多数类。 这是因为交叉熵误差是从最大似然原理中得出的,该似然原理倾向于将较高的概率分配给多数类别。 我们可以做两件事:
......@@ -188,11 +188,11 @@ def get_im_cv2(path,dim=224):
# 使用仿射变换生成其他数据
我们将在图像像素坐标上使用**仿射变换**,使用`keras` `ImageDataGenerator` 生成其他数据。 我们将主要使用的转换是旋转,平移和缩放。 如果像素空间坐标由 *x = [x <sub>1</sub> x <sub>2</sub> ] <sup>T</sup> ∈R <sup>2</sup>* 定义 ,则像素的新坐标可以通过以下方式给出:
我们将在图像像素坐标上使用**仿射变换**,使用 keras `ImageDataGenerator`生成其他数据。 我们将主要使用的转换是旋转,平移和缩放。 如果像素空间坐标由`x = [x[1] x[2]]^T ∈ R^2`定义 ,则像素的新坐标可以通过以下方式给出:
![](img/48a4bf27-bee5-46b1-8b5b-9fe1f96d8a52.png)
这里, *M = R <sup>2x2</sup>* 是仿射变换矩阵, *b = [b <sub>1</sub> b <sub>2</sub> ] <sup>T</sup> ∈R <sup>2</sup>* 是翻译向量。
这里, `M = R^(2x2)`是仿射变换矩阵, `b = [b[1], b[2]]^T ∈ R^2`是翻译向量。
术语`b[1]`指定沿一个空间方向的翻译,而`b[2]`提供沿另一空间维度的翻译。
......@@ -200,11 +200,11 @@ def get_im_cv2(path,dim=224):
# 回转
以下是旋转的仿射变换矩阵,其中*θ*表示旋转角度:
以下是旋转的仿射变换矩阵,其中`θ`表示旋转角度:
![](img/1fe912fc-2dba-41b7-abe9-03443e5a0be2.png)
在这种情况下,转换向量 *b,*为零。 通过选择一个非零`b`,我们可以得到旋转和平移。
在这种情况下,转换向量`b`为零。 通过选择一个非零`b`,我们可以得到旋转和平移。
例如,下图显示了视网膜的照片,然后是旋转 90 度的同一张照片:
......@@ -214,13 +214,13 @@ def get_im_cv2(path,dim=224):
# 翻译
对于翻译,仿射变换矩阵是单位矩阵,翻译向量 *b,*具有非零值:
对于翻译,仿射变换矩阵是单位矩阵,翻译向量`b`具有非零值:
![](img/53b85765-1bcb-4f23-b8f3-60b223dbf0f7.png)
![](img/73d49d1a-f974-40f0-9638-6ee27f574016.png)
例如,对于垂直方向上五个像素位置和水平方向上三个像素位置的平移,我们可以使用 *b = [5 3] <sup>T</sup>* `M`作为单位矩阵。
例如,对于垂直方向上五个像素位置和水平方向上三个像素位置的平移,我们可以使用`b = [5 3]^T``M`作为单位矩阵。
以下是沿图像的宽度和高度按 24 个像素位置对视网膜进行的图像平移:
......@@ -230,7 +230,7 @@ def get_im_cv2(path,dim=224):
# 缩放比例
缩放可以通过对角矩阵*M∈R <sup>2x2</sup>* 执行,如下所示:
缩放可以通过对角矩阵`M ∈ R^(2x2)`执行,如下所示:
![](img/f7892eff-50fc-4cf8-a629-271ad0cd18e3.png)
......@@ -242,7 +242,7 @@ def get_im_cv2(path,dim=224):
# 反射
可以通过变换矩阵*T∈R <sup>2x2</sup>* 获得关于一条线 *L,*与水平角度为θ的反射,如下所示:
可以通过变换矩阵`T ∈ R^(2x2)`获得关于一条线`L`与水平角度为`θ`的反射,如下所示:
![](img/a5bd446b-cfaa-46c9-9797-36893efc4d5b.png)
......@@ -977,7 +977,7 @@ if __name__ == '__main__':
# 执行回归而不是分类
我们在*公式化损失函数*部分中讨论的一件事是,类别标签不是独立的分类类别,但随着糖尿病性视网膜病变情况的严重性增加,它们确实具有序数意义。 因此,值得通过定义的迁移学习网络进行回归,而不是进行分类,并观察结果如何。 我们唯一需要更改的是输出单位,从 softmax 到线性单位。 实际上,我们将其更改为 ReLU,因为我们希望避免出现负分数。 以下代码块显示了回归网络的`InceptionV3`版本:
我们在“损失函数公式”部分中讨论的一件事是,类别标签不是独立的分类类别,但随着糖尿病性视网膜病变情况的严重性增加,它们确实具有序数意义。 因此,值得通过定义的迁移学习网络进行回归,而不是进行分类,并观察结果如何。 我们唯一需要更改的是输出单位,从 softmax 到线性单位。 实际上,我们将其更改为 ReLU,因为我们希望避免出现负分数。 以下代码块显示了回归网络的`InceptionV3`版本:
```py
def inception_pseudo(dim=224,freeze_layers=30,full_freeze='N'):
......
......@@ -740,9 +740,9 @@ org.tensorflow:tensorflow-android:1.7.0
我们将使用以下两部电影的评论测试该移动应用程序: 《阿凡达》和《星际穿越》。 《阿凡达》电影评论来自[这里](https://www.rogerebert.com/reviews/avatar-2009),其内容如下:
*“看着《阿凡达》,我感觉与 1977 年看到《星球大战》时的感觉差不多。那是另一部我充满不确定性的电影。詹姆斯·卡梅隆的电影一直是毫无疑问的超前嗡嗡声的主题,就像他的《泰坦尼克号》一样 再次,他只是通过制作一部非凡的电影而使怀疑者们保持沉默,好莱坞仍然至少有一个人知道如何花费 2.5 亿美元,或者明智地花费 3 亿美元。*
> “看着《阿凡达》,我感觉与 1977 年看到《星球大战》时的感觉差不多。那是另一部我充满不确定性的电影。詹姆斯·卡梅隆的电影一直是毫无疑问的超前嗡嗡声的主题,就像他的《泰坦尼克号》一样 再次,他只是通过制作一部非凡的电影而使怀疑者们保持沉默,好莱坞仍然至少有一个人知道如何花费 2.5 亿美元,或者明智地花费 3 亿美元。
*“阿凡达》不仅是一种令人震撼的娱乐活动,而且还是一项技术突破。它具有鲜明的绿色和反战信息。它注定要发动一场邪教。它包含如此直观的细节, 像《指环王》一样,它发明了一种新的语言 Na'vi,尽管我很仁慈地怀疑这种语言可以被人类甚至青少年使用,它创造了新的电影明星。 在那些电影中,您觉得必须跟上对话的步伐。”*
> “阿凡达》不仅是一种令人震撼的娱乐活动,而且还是一项技术突破。它具有鲜明的绿色和反战信息。它注定要发动一场邪教。它包含如此直观的细节, 像《指环王》一样,它发明了一种新的语言 Na'vi,尽管我很仁慈地怀疑这种语言可以被人类甚至青少年使用,它创造了新的电影明星。 在那些电影中,您觉得必须跟上对话的步伐。”
审阅者给电影评分为 4/5,而移动应用的评分为 4.8 / 5,如以下屏幕截图所示(“图 7.4”):
......@@ -752,7 +752,7 @@ org.tensorflow:tensorflow-android:1.7.0
同样,我们将评估应用为电影《星际穿越》提供的评分,并从[这里](https://www.rottentomatoes.com/m/interstellar_2014/)获取评论。 评论如下:
*“星际大片代表了导演兼导演克里斯托弗·诺兰(Christopher Nolan)所期待的更多激动人心,发人深省,视觉上灿烂的电影制作人,即使其知识渊博超出了人们的理解范围。”*
> “星际大片代表了导演兼导演克里斯托弗·诺兰(Christopher Nolan)所期待的更多激动人心,发人深省,视觉上灿烂的电影制作人,即使其知识渊博超出了人们的理解范围。”
该影片在*烂番茄*上的平均评分为 7/10,如果将其缩放为 5,则得分为 3.5 / 5,而移动应用预测的评分为 3.37,如下图所示 屏幕截图(“图 7.5”):
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册