查看: 2439| 回复: 12
跳转到指定楼层
上一主题 下一主题
收起左侧

40个癌症样本400个正常人样本混合一起,如何机器学习呢?

全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
现在有40个癌症样本和400个正常人样本混合一起,如何机器学习呢?

现在每次的性能都是specificity很高,但是sensitivity却很低。怎么变成sensitivity也还可以?

上一篇:机器学习论文对比实验的问题
下一篇:什么算法不是以精度作为目标函数?
推荐
Woof00 2022-2-9 17:07:33 | 只看该作者
全局:
除了上述SMOTE和Weights的办法外,对于有的模型也可以简单处理。
正常情况下,如果输出的是"probability" 而不是具体的class:也就是p_hat = p(y_hat=1)是输出的话,那么得到y_hat一般是当p_hat>0.5时取1。
但是如果数据不平衡,有时候会影响到这个"probability”,因为这个是training data的sample class ratio有关的。所以这个时候cutoff value就不能取0.5了。所以这种情况,调整一下cutoff value就可以了。因为改变这个不会影响auc,所以对模型是无害的,只是最终的decision是有偏向的。
最后说一下,小样本数据,尤其是高维数据,往往机器学习模型都是不能完全收敛的,所以以上这些办法都是有很高风险的。具体情况还得具体分析,没有统一可用的方法。
回复

使用道具 举报

推荐
Woof00 2022-2-10 03:16:26 | 只看该作者
全局:
本帖最后由 Woof00 于 2022-2-9 12:22 编辑
microsat 发表于 2022-2-9 10:09
多谢!

这种调整cutoff的方法,我也用过。疑点有两个:

- Cutoff 一定是要在training sample上选出来的, 不能在testing sample上.
- Cutoff调整能不能保证性能, 主要还是要看数据如何.
(1) 如果样本数量不足, 典型的就是n << p的情况,那模型本身可能就是overfitting的, 另外optimize cutoff的过程也可能是Overfitting的, 所以不能期待仅仅通过调整cutoff提高性能, 比较性能主要还是应该看AUC.
(2) 需要注意的是, optimized cutoff 仅通过training sample来确定,是很有风险的. 毕竟样本那么少, 多对一个少对一个也没有啥大差异, 所以非常容易over optimized 了.
(3) 要特别注意Minority class的样本, 很容易有batch effect. 假设数据采集和预处理都是无差异的,那么batch effect具体有两个可能的源头: (i) 在training set和testing set上,是不是从同样的sample population里random select出来的; (ii) 如果样本太少, 还得看看这两个group是不是overlapping的.

建议小样本数据做机器学习,尤其是高维情况, 要好好检查一下样本质量, 对比下training testing set是不是有足够的代表性, 存在batch effect了就很麻烦了.
SMOTE其实是个不错的方法, 但是同样的, 在高维样本很稀疏的情况下, 可靠性很难保证, 毕竟造数据也是根据原始数据来的.
类似的, Weighting Sample适用用范围也是有限的.
回复

使用道具 举报

全局:
1. DL, ML的角度, 加权和SMOTE等很多处理sample imbalance的方法, cutoff对sensivity and speicficity都有影响
2. 统计学上来说, 40个cancer sample太少了, 检验效能太低, 结果不可靠, 表现之一为模型不收敛, 最简单的解决方法就是增加样本量, 病理slide有很多库的, 如果需要WSI, 在TCGA和TICA里边各种cancer type的svs格式的也是很多的, 如果实在不行, 使用 augmentation也可以尝试
3. 从病理的角度来说, 如果你的training set里cancer图片里边cancer的表现, 比如染色体异常, mitosis异常等判断恶性的标准是否有clear cut, 有不少恶性肿瘤的表现不少本身就是borderline, 病理医生都不好判断, 需要IHC染色等其他手段协助, 也就是说数据本身的特质也可能是sentivity和specificity差别的原因, 尤其在小样本的时候.
回复

使用道具 举报

🔗
阵雨 2022-1-26 00:57:07 | 只看该作者
全局:
biased dataset 可以用 SMOTE 先平衡样本数量。。然后会好不少
回复

使用道具 举报

🔗
winston- 2022-1-26 01:22:10 | 只看该作者
全局:
补充一下楼上的。

你这个问题看上去是比较简单的binary classification。我个人觉得可以从最简单的做起,可以试试见class weight或者sample weight。。
回复

使用道具 举报

🔗
 楼主| microsat 2022-1-26 02:07:58 | 只看该作者
全局:
winston- 发表于 2022-1-25 11:22
补充一下楼上的。

你这个问题看上去是比较简单的binary classification。我个人觉得可以从最简单的做起 ...

请问最简单的class weight和sample weight怎么进行呢?
我用的是svm。
哪儿可以添加weight这个参数?

另外smote能增加性能吗?感觉不会。
回复

使用道具 举报

🔗
winston- 2022-1-26 02:58:37 | 只看该作者
全局:
microsat 发表于 2022-1-25 12:07
请问最简单的class weight和sample weight怎么进行呢?
我用的是svm。
哪儿可以添加weight这个参数?

SMOTE有没有用我觉得可以证实一下,imbalance learn里面有各种down/up sample的方法的。我个人感觉就是你的情况只有400和40个samples,感觉可以用简单的做法,后期也更好理解。

至于怎么做,如果你用scikit learn,最好看看doc,我凭记忆写的:

1. class weight
model= svm.SVC(class_weight=class_weight)

2. class weight
model= svm.SVC()
model.fit(X, y, sample_weight=sample_weight)

Note: 这两个别一起用。至于怎么算weight最简单的就是sample size的反比,你也可以上网查查别的

评分

参与人数 1大米 +1 收起 理由
tCommander + 1 给你点个赞!

查看全部评分

回复

使用道具 举报

🔗
 楼主| microsat 2022-1-26 03:05:14 | 只看该作者
全局:
谢谢!我试试。
回复

使用道具 举报

全局:
可以试试PU的方法?
回复

使用道具 举报

🔗
 楼主| microsat 2022-2-10 01:09:58 | 只看该作者
全局:
多谢!

这种调整cutoff的方法,我也用过。疑点有两个:
1) cutoff调整性能,是不是意味着testing set不再是blind的了,而是透明的了?

2)这种cutoff调整后,虽然training set性能大为提高,但是如果把调整后的模型用在新的测试集上
性能还不如不调整的模型。
这如何是好?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表