V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
TongDu
V2EX  ›  Python

[机器学习相关] 含有大量标签错误的数据如何建模?

  •  
  •   TongDu · 2023-02-16 14:48:12 +08:00 · 1817 次点击
    这是一个创建于 376 天前的主题,其中的信息可能已经有所发展或是发生改变。

    想问问各位大佬,在二分类任务中,原始数据很多标签错误(假阳性超 90%),没法通过基于人工或者规则的方法清洗数据,有什么好的算法或者策略来识别出标签错误数据呢? 发现这里没有 AI 算法相关节点,而大家都用 python ,我就发现这里吧。

    第 1 条附言  ·  2023-02-17 09:14:05 +08:00
    我详细阐述一下,我这的应用场景是药物发现领域的分子(样本)在靶点的活性预测。比如我们测定大量的分子与靶点的结合信号,其中可能只有 1%的分子会出信号,出了信号的分子可能是潜在的活性分子,没出信号的分子大概率是没活性的。我们根据人工的经验会选择一些高置信度信号的分子进行验证是否有活性,验证成本很高,一般验证几十个样本左右,验证结果显示中只有 35%左右是真实有活性的。如果随机从出信号的样本中挑选,根据我们经验估计 true positive 的概率不会超过 10%。

    也就是我们拿到 99%的负样本,1%的正样本(其中可能 90%左右就是 false positive ),目的建立模型挑选出 true positive
    14 条回复    2023-02-17 09:55:40 +08:00
    thinkershare
        1
    thinkershare  
       2023-02-16 14:52:28 +08:00
    没啥好办法,我也想要支持知道。
    leimao
        2
    leimao  
       2023-02-16 14:56:00 +08:00
    0/1 二元分类,标签错误 90%
    那你 flip 一下标签,标签正确率不就是 90%了么
    leimao
        3
    leimao  
       2023-02-16 15:00:44 +08:00
    我仔细看了下,你说的是 false positive 90%,不好意思。
    leimao
        4
    leimao  
       2023-02-16 15:03:19 +08:00
    好多年前碰过这个 loss function 对 noisy label 比较 robust 。
    https://arxiv.org/abs/1805.07836
    这些年可能还有新的进展。
    TongDu
        5
    TongDu  
    OP
       2023-02-16 15:24:27 +08:00
    @leimao 谢谢你分享的文献,我复现一下试试。我后面再看看被引文献,应该可以找到更多研究结果。我以前没接触过这个方向,看到过一个用于回归任务的 robust loss function ,https://arxiv.org/abs/1701.03077
    king888
        6
    king888  
       2023-02-16 15:57:12 +08:00
    当然是使用超能力,据时代周刊报道说 openai 是找非洲人工打标签的,每小时 2 刀
    thinkershare
        7
    thinkershare  
       2023-02-16 16:01:49 +08:00
    @TongDu 大部分技术手段都没啥用,我之前研究过,你这个只需要二分类,可能简单点,可以考虑使用元学习 /小样本学习试一试。不过问题一旦稍微复杂了,感觉还是要使用人工打标签才靠谱。
    ml1344677
        8
    ml1344677  
       2023-02-16 16:07:30 +08:00
    没法很好解决 这个问题几乎跟没标注一样了
    qzwmjv
        9
    qzwmjv  
       2023-02-16 16:11:11 +08:00
    false positive 你是怎么知道的?
    wangritian
        10
    wangritian  
       2023-02-16 16:27:00 +08:00
    如果你有办法判断原数据错误,那你根本不需要做这个项目了[狗头]
    NoOneNoBody
        11
    NoOneNoBody  
       2023-02-16 17:24:21 +08:00
    机器学习节点 https://www.v2ex.com/go/ml
    Torch https://www.v2ex.com/go/torch
    Keras https://www.v2ex.com/go/keras
    ……

    还是没搞清这个 90%是怎么来的,有对照数据?还是有其他参考标准?
    jamosLi
        12
    jamosLi  
       2023-02-16 17:27:22 +08:00
    先聚类,再分?
    raycool
        13
    raycool  
       2023-02-16 17:57:27 +08:00
    对于有监督学习,FP 这么高,任何算法都无效吧,还是想办法标注比较好。
    INFP
        14
    INFP  
       2023-02-17 09:55:40 +08:00
    @qzwmjv

    对啊,没有“正确”的 label 你怎么算出来 false positive rate 的哈哈哈。

    anyway ,对于这种情况不建议做任何形式的 imputation 去补 label ,因为这样不过是在错误上构建错误,或者是在已知中预测已知。

    建议考虑 unsupervised learning ,或者 semi-supervised learning 。比如聚类,比如在有一部分确定正确的 label 的情况下用 semi-supervised SVM 去建模,可能会比只用“确定正确”的小部分数据的 test performance 好一些,也肯能不如。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5637 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 09:01 · PVG 17:01 · LAX 01:01 · JFK 04:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.