作者jigfopsda (jigfopsda)
看板DataScience
标题Re: [问题] ROC worse than random
时间Mon Mar 11 21:23:46 2019
※ 引述《kaltu (ka)》之铭言:
: 问题类别:(ex:ML,SVM,RL,DL,RNN,CNN,NLP,BD,Vis,etc...)
: 资料科学
: 使用工具:(ex:python,Java,C++,tensorflow,keras,MATLAB,etc...)
: Python sklearn
: 问题内容:
: 背景
: 目前试图用GAN来处理small dataset的问题
: 用的是一个大约五十个病人的直肠癌MRI影像
: 有放射科医师label的KRAS值,0和1
: 基本思路是先切成5个fold然後各用DCGAN对0和1label产生一千、共一万张slice
: 然後把generated data跟着true data下去用VGG19判断label
: 问题
: 产生的K-fold ROC是漂亮的worse than random
: http://i.imgur.com/YhS1O0B.jpg
: 查了网路文章,有人说这代表我的classifier依然建立了correlation
: 只是data preparation出问题
: 简单解法就把label flip即可
: 请问真的是这样吗?总觉得不大对劲
: -----
: Sent from JPTT on my Asus ASUS_Z01KDA.
虽然你没有提供资料,但我这边先假设你 train ROC > 0.5, test ROC < 0.5
如果你的 train ROC < 0.5 表示 model 没有学好,
建议检查一下 model 架构或是参数或是图片本身还是数值范围有没有什麽问题。
假设现在 train ROC > 0.5, model 训练一切正常,但是 test ROC < 0.5
表示在你现在的 feature space 下,train 跟 test 的分布显然是不同的,
直接 label flip 是很危险的一件事情。
这边不太精确地打个比方,想像一个情况,
如果今天是做猫狗分类器,在 train 的时候发现有吐舌头的都是狗,
没吐舌头的都是猫。model 分得很好,所以 train ROC > 0.5。
test 的时候却发现猫都有吐舌头,所以全部分错了,导致 test ROC < 0.5
那麽直接 flip label 很显然是不合理的解法,他只对这个 test set 有用,并不是对
所有的猫狗有用。
在这个 case 应该是去检查为什麽 model 会只把吐舌头当作决定性的特徵然後针对
他做修正。
在你的 case 我建议先检查一下 DCGAN 生出来的影像是否符合预期。
确认正确後可以再检查一下是因为图片的哪个区块被分错 class。
还有一个题外话, small image dataset 可以先用平移旋转缩放之类的方式先做
data augmentation
前提是如果直肠癌 MRI 平移旋转缩放後不会让图片变成另一个 class。
以上。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 59.104.3.78
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/DataScience/M.1552310628.A.2D4.html
1F:→ jigfopsda: 承上篇推文,程式有 bug 也是不无可能 03/11 21:24
2F:推 bboybighead2: 推 讲的很清楚 03/16 10:17
3F:推 shaform: 推推 03/20 07:54
4F:推 myfirstjump: 推 07/22 13:20