提交 325cb511 编写于 作者: W wizardforcel

2020-12-22 14:47:13

上级 e0dfa610
......@@ -136,19 +136,19 @@ Softmax 将是表示输出层中不同类别的概率的最佳激活函数,而
现在我们已经定义了训练方法,损失函数和验证指标,让我们继续进行数据探索和建模。
请注意,输出级别中的分类具有序数性质,因为严重性随级别而增加。 因此,回归可能会派上用场。 我们还将尝试通过回归来代替分类,以了解运气如何。 回归的挑战之一是将原始分数转换为类。 我们将使用一个简单的方案,将分数散列到最接近的整数严重性等级
请注意,输出级别中的分类具有序数性质,因为严重性随级别而增加。 因此,回归可能会派上用场。 我们还将尝试通过回归来代替分类,以了解运气如何。 回归的挑战之一是将原始分数转换为类。 我们将使用一个简单的方案,将分数散列到最接近的整数严重性类别
# 考虑到阶级失衡
# 考虑到类别失衡
在分类方面,班级失衡是一个主要问题。 下图描述了五个严重等级的等级密度:
在分类方面,类别失衡是一个主要问题。 下图描述了五个严重性类别的类别密度:
![](img/5969eeb1-ca28-4fbb-b96c-12d2f4088362.png)
图 2.4:五个严重等级的等级密度
图 2.4:五个严重性类别的类别密度
从上图可以看出,将近 73% 的训练数据属于 **0 **,这代表没有糖尿病性视网膜病。 因此,如果我们碰巧将所有数据点标记为 **0 类**,那么我们将具有 73% 的准确率。 在患者健康状况下这是不希望的。 我们宁愿有一个测试说患者没有时有某种健康状况(假阳性),而有一项测试却漏诊时没有发现某种健康状况(假阴性)。 如果模型学会将所有点分类为属于 **0 类**,则 73% 的准确性可能毫无意义。
从上图可以看出,将近 73% 的训练数据属于 **0 **,这代表没有糖尿病性视网膜病。 因此,如果我们碰巧将所有数据点标记为 **0 类**,那么我们将具有 73% 的准确率。 在患者健康状况下这是不希望的。 我们宁愿有一个测试说患者没有时有某种健康状况(假阳性),而有一项测试却漏诊时没有发现某种健康状况(假阴性)。 如果模型学会将所有点分类为属于 **0 类**,则 73% 的准确性可能毫无意义。
*无严重等级*上,检测较高的严重等级比做好工作更为重要。 使用对数损失或交叉熵成本函数的分类模型的问题在于它偏爱多数类。 这是因为交叉熵误差是从最大似然原理中得出的,该似然原理倾向于将较高的概率分配给多数类别。 我们可以做两件事:
严重性类别 0 上,检测较高的严重性类别比做好工作更为重要。 使用对数损失或交叉熵成本函数的分类模型的问题在于它偏爱多数类。 这是因为交叉熵误差是从最大似然原理中得出的,该似然原理倾向于将较高的概率分配给多数类别。 我们可以做两件事:
* 丢弃具有更多样本的类别中的数据,或者丢弃低频类别的上样本,以保持样本在各个类别之间的分布均匀。
* 在损失函数中,权重与类别的密度成反比。 这将确保当模型无法对低频类别进行分类时,对成本函数施加更高的惩罚。
......@@ -1000,7 +1000,7 @@ def inception_pseudo(dim=224,freeze_layers=30,full_freeze='N'):
![](img/8e955dd6-0917-4280-936d-2df33cbe371e.png)
一旦我们预测了回归分数,就将其舍入到最接近的严重性状况等级(零到四)。
一旦我们预测了回归分数,就将其舍入到最接近的严重性类别(零到四)。
# 使用 keras 顺序 utils 作为生成器
......@@ -1181,7 +1181,7 @@ folds=5):
```
从前面的代码中我们可以看到,计算出每一折的预测平均值,并通过四舍五入预测分数将其转换为最接近的严重性等级。 用于回归的 Python 脚本位于 [GitHub 链接](https://github.com/PacktPublishing/Python-Artificial-Intelligence-Projects/tree/master/Chapter02)中。 名称为`TransferLearning_reg.py`。 可以通过运行以下命令来调用相同的命令:
从前面的代码中我们可以看到,计算出每一折的预测平均值,并通过四舍五入预测分数将其转换为最接近的严重性类别。 用于回归的 Python 脚本位于 [GitHub 链接](https://github.com/PacktPublishing/Python-Artificial-Intelligence-Projects/tree/master/Chapter02)中。 名称为`TransferLearning_reg.py`。 可以通过运行以下命令来调用相同的命令:
```py
python TransferLearning_reg.py --path '/media/santanu/9eb9b6dc-b380-486e-b4fd-c424a325b976/book AI/Diabetic Retinopathy/Extra/assignment2_train_dataset/' --class_folders '["class0","class1","class2","class3","class4"]' --dim 224 --lr 1e-4 --batch_size 32 --epochs 5 --initial_layers_to_freeze 10 --model InceptionV3 --folds 5 --outdir '/home/santanu/ML_DS_Catalog-/Transfer_Learning_DR/Regression/'
......@@ -1213,7 +1213,7 @@ Processing Time 138.52878069877625 secs
```
从前面的日志中可以看到,假设我们刚刚使用回归得分将模型映射到最接近的严重性条件,该模型可实现约 66% 的不错的验证准确性和`0.466`的二次 Kappa 得分。 建议读者进行实验,看看是否基于预测的二级模型对进行评分,并且眼睛是左眼还是右眼比将朴素的评分映射到最近的严重性等级给出了更好的结果。
从前面的日志中可以看到,假设我们刚刚使用回归得分将模型映射到最接近的严重性条件,该模型可实现约 66% 的不错的验证准确性和`0.466`的二次 Kappa 得分。 建议读者进行实验,看看是否基于预测的二级模型对进行评分,并且眼睛是左眼还是右眼比将朴素的评分映射到最近的严重性类别给出了更好的结果。
# 概要
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册