Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Kaggle系列-Mechanisms of Action (MoA) Prediction[表格数据多标签]第一名方案

Kaggle系列-Mechanisms of Action (MoA) Prediction[表格数据多标签]第一名方案

作者头像
致Great
发布于 2021-01-18 13:17:55
发布于 2021-01-18 13:17:55
1.6K00
代码可运行
举报
文章被收录于专栏:自然语言处理自然语言处理
运行总次数:0
代码可运行

比赛链接:https://www.kaggle.com/c/lish-moa/overview

赛题背景

连接图是麻省理工学院和哈佛大学广泛研究所、哈佛大学创新科学实验室(LISH)和美国国立卫生研究院共同基金综合网络细胞特征库(LINCS)的一个项目,它提出了这一挑战,目标是通过改进MoA预测算法来推进药物开发。

药物的作用机制是什么?为什么它很重要? 过去,科学家是从天然产物中提取药物或受到传统疗法的启发。在人们认识到驱动其药理活性的生物学机制之前,非常常见的药物,例如扑热息痛(在美国称为对乙酰氨基酚)已投入临床使用数十年。

如今,随着功能更强大的技术的出现,药物发现已经从过去的偶然方法变成了基于对疾病潜在生物学机制的了解而更具针对性的模型。在这个新的框架中,科学家寻求鉴定与疾病相关的蛋白质靶标,并开发出可以调节该蛋白质靶标的分子。作为描述给定分子生物学活性的简写,科学家们将其标记为作用机理或简称MoA。

赛题任务

如何确定新药的MoAs?

基于MoA批注,将根据应用于每个药物MoA批注对的对数损失函数的平均值来评估溶液的准确性。如果成功,你可以开发一种算法,从而根据化合物的细胞特征预测化合物的MoA,从而帮助科学家推进药物发现过程。

在这场比赛中,你将获得一个独特的数据集,结合基因表达和细胞活力的数据。这项数据是基于一项新技术,在100种不同细胞类型的细胞池中同时(在相同的样本中)测量人类细胞对药物的反应(从而解决了事先确定哪些细胞类型更适合某一特定药物的问题)。此外,您还可以访问此数据集中5000多种药物的MoA注释。 按照惯例,数据集被分为测试和训练子集。因此,您的任务是使用训练数据集来开发一个算法,该算法自动将测试集中的每个案例标记为一个或多个MoA类。注意,由于药物可以有多个MoA注释,因此这项任务在形式上是一个多标签分类问题。 如何评估解决方案的准确性? 基于MoA注释,将根据应用于每个药物MoA注释对的对数损失函数的平均值来评估溶液的准确性。 如果成功,你将帮助开发一种算法,根据化合物的细胞特征预测其MoA,从而帮助科学家推进药物发现过程。

赛题数据

在这个比赛中,你将预测不同样本(sig_id)的作用机制(MoA)反应的多个靶标概率,给出各种输入,如基因表达数据和细胞活力数据。

  • train_features.csv:训练集对应的特征数据。特征g-表示基因表达数据,c-表示细胞活力数据。cp_type表示使用化合物(cp_vehicle)或控制扰动(ctrl_vehicle)处理的样品;控制扰动无moa;cp_time和cp_dose表示治疗时间(24、48、72小时)和剂量(高、低)。
  • train_drug.csv 训练集样本的sig_id和drug_id对应关系
  • train_targets_scored.csv:MOA的二分类标签数据
  • train_targets_nonscored.csv:额外没有带有标签的MOA数据
  • test_features.csv:测试数据的特征。需要选手预测测试数据中每一行的每个MoA得分的概率。
  • sample_submission.csv:提交文件

数据分析

https://www.kaggle.com/isaienkov/mechanisms-of-action-moa-prediction-eda

特征数据

训练集和测试集中的特征个数为876个

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Number of rows in training set: 23814
Number of columns in training set: 876
Number of rows in test set: 3982
Number of columns in test set: 876

类别特征可视化

  • cp_type化合物处理方式
  • cp_time 实验时间
  • cp_dose 试验剂量
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ds = df[df['dataset']=='train']
ds = ds.groupby(['cp_type', 'cp_time', 'cp_dose'])['sig_id'].count().reset_index()

ds.columns = [
    'cp_type', 
    'cp_time', 
    'cp_dose', 
    'count'
]

fig = px.sunburst(
    ds, 
    path=[
        'cp_type',
        'cp_time',
        'cp_dose' 
    ], 
    values='count', 
    title='Sunburst chart for all cp_type/cp_time/cp_dose',
    width=500,
    height=500
)

fig.show()

基因细胞特征分布

g代表gene特征数据,c代表cell特征数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
train_columns = train.columns.to_list()
g_list = [i for i in train_columns if i.startswith('g-')]
c_list = [i for i in train_columns if i.startswith('c-')]
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def plot_set_histograms(plot_list, title):
    fig = make_subplots(
        rows=4, 
        cols=3
    )
    
    traces = [
        go.Histogram(
            x=train[col], 
            nbinsx=100, 
            name=col
        ) for col in plot_list
    ]

    for i in range(len(traces)):
        fig.append_trace(
            traces[i], 
            (i // 3) + 1, 
            (i % 3) + 1
        )

    fig.update_layout(
        title_text=title,
        height=1000,
        width=WIDTH
    )
    fig.show()

plot_list = [
    g_list[
        np.random.randint(0, len(g_list)-1)
    ] for i in range(50)
]

plot_list = list(set(plot_list))[:12]
plot_set_histograms(plot_list, 'Randomly selected gene expression features distributions')

特征相关性

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
columns = g_list + c_list
for_correlation = random.sample(columns, 50)
data = df[for_correlation]

f = plt.figure(
    figsize=(18, 18)
)

plt.matshow(
    data.corr(), 
    fignum=f.number
)

plt.xticks(
    range(data.shape[1]), 
    data.columns, 
    fontsize=14, 
    rotation=50
)

plt.yticks(
    range(data.shape[1]), 
    data.columns, 
    fontsize=14
)

cb = plt.colorbar()
cb.ax.tick_params(
    labelsize=13
)

目标分析

纵向为特征列,横向为目标列(206个),每个单元为对应特征与目标的相关性系数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
correlation_matrix['train_features'] = columns
correlation_matrix = correlation_matrix.set_index('train_features')

correlation_matrix

与目标列相关性比较高的特征如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
count_features = total_scores['train_best_column'].value_counts().reset_index().sort_values('train_best_column')

count_features.columns = [
    'column', 
    'count'
]

count_features = count_features.tail(33)

fig = px.bar(
    count_features, 
    x='count', 
    y="column", 
    orientation='h', 
    title='Columns from training set with number of high correlations with target columns', 
    width=WIDTH,
    height=700
)

fig.show()

另外也有高阶的相关系系数分析

  • 二阶相关性
  • 三阶相关性

Hungry for Gold 第一名方案

分享链接:https://www.kaggle.com/c/lish-moa/discussion/201510 代码链接:https://www.kaggle.com/markpeng/final-best-lb-cleaned/notebook

模型1 3-Stage NN

半监督学习:该模型为三阶段的NN网络组成,首先是特征工程,主要包括基因特征数据,细胞特征数据以及实验分类特征,然后进行分位数变化以及归一化,之后输入到StageNN1 然后预测得到没有标签数据的预测,之后合并标注数据进行StageNN2训练预测得到第二次没有标签的预测输出,之后合并带有标签的数据得到最后测试集的预测。

模型2 2-Stage NN+TabNet

这里主要用到了Tabnet工具,可以利用神经网络在表格数据上进行大放异彩。使用方法大家可以参照Github链接:

dreamquark-ai/tabnet https://github.com/dreamquark-ai/tabnet

其中2-FC代表简单的两层全连接神经网络,如下图所示

模型3 Simple NN

这里和模型1比较相似,但是进行的监督学习,没有用到半监督学习。同时这里加入了基于K-Means聚类的特征

模型4 2-heads ResNet:基于多输入的残差网络

原始开源开源代码:https://www.kaggle.com/demetrypascal/fork-of-2heads-looper-super-puper-plate

残差网络拓扑图,其中网络用到也是最基本的Dense网络结构:

模型5 DeepInsight CNNs

利用 EfficientNet B3 提取特征

利用ResNeSt提取特征

特征多样性

为了更好地理解模型的多样性,下面是最好的单一模型的平均相关性热图。对每对模型采用Pearson方法计算相关系数。我们以目标相关系数的均值作为每个模型的最终值。

  • 基于线上提交得出的模型相关性热力图
  • 基于线下OOF得出的模型相关性热力图

可以看到模型相关性系数都很低,一般在0.52-0.70,模型具有多样性和差异性,那么融合之后的收益会很大

总结

  • 本方案使用神经网络在白表格数据上做了大量尝试,并取得很大的成效
  • 为了提高模型融合的收益,需要保证模型多样性,所以作者也使用了不同的训练方法和模型结构
  • 使用CNN等预训练模型提取特征图
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
从 0 到 1 走进 Kaggle
本文结构: kaggle 是什么 如何参赛 解决问题一般步骤 进一步: 如何探索数据 如何构造特征 提交结果 ---- kaggle 是什么? Kaggle 是一个数据科学竞赛的平台,很多公司会发布一些接近真实业务的问题,吸引爱好数据科学的人来一起解决。 https://www.kaggle.com/ 点击导航栏的 competitions 可以看到有很多比赛,其中正式比赛,一般会有奖金或者工作机会,除了正式比赛还有一些为初学者提供的 playground,在这里可以先了解这个比赛,练习能力,再去参加正
杨熹
2018/04/03
1.1K0
从 0 到 1 走进 Kaggle
Python数据挖掘|银行信用卡客户流失预测(kaggle)
越来越多的客户不再使用信用卡服务,银行的经理对此感到不安。如果有人能为他们预测哪些客户即将流失,他们将不胜感激,因为这样他们可以主动向客户提供更好的服务,并挽回这些即将流失的客户。
刘早起
2021/01/07
5.5K0
Python数据挖掘|银行信用卡客户流失预测(kaggle)
Kaggle系列-Tweet Sentiment Extraction第一名方案
“My ridiculous dog is amazing。” [sentiment:positive]
致Great
2021/01/18
1.2K0
时间序列预测(三)基于Prophet+XGBoost的销售额预测
前面我们介绍了如何使用Prophet和LSTM,不知道你们发现了没有,前者似乎太简单了,后者呢好像又很复杂。那有没有什么很好的方法能很好的中和下呢?
HsuHeinrich
2023/05/25
1.5K0
时间序列预测(三)基于Prophet+XGBoost的销售额预测
weekly kaggle 练习题解读(House Prices)
今天给大家来讲讲《House Prices: Advanced Regression Techniques》(房价预测模型)的思路:
机械视角
2019/10/23
1.2K0
weekly kaggle 练习题解读(House Prices)
Kaggle初探--房价预测案例之数据分析
本文数据来源kaggle的House Prices: Advanced Regression Techniques大赛。
zhuanxu
2018/08/23
1.9K0
Kaggle初探--房价预测案例之数据分析
Kaggle系列-IEEE-CIS Fraud Detection第一名复现
想象一下,站在杂货店的收银台,身后排着长队,收银员没有那么安静地宣布您的信用卡被拒绝了。在这一刻,你可能没有想到决定你命运的数据科学。 非常尴尬有木有?当然你肯定有足够的资金为50个最亲密的朋友办一场盛大的纳乔派对,然后你又试了一次,但是还是同样的结果。此时你只能站在另外一边,让收银员为下一个客户服务时,你收到了银行的短信。“如果你真的想花500美元买切达干酪,请按1。” 虽然现在可能很麻烦(而且常常很尴尬),但这种防欺诈系统实际上每年为消费者节省数百万美元。来自ieee计算智能协会(ieee-cis)的研究人员希望在改善客户体验的同时,提升这个数字。有了更高准确度的欺诈检测率,您就可以在没有麻烦的情况下继续使用您的芯片。 ieee-cis在各种人工智能和机器学习领域,包括深层神经网络、模糊系统、演化计算和群智能等等。今天,他们正与世界领先的支付服务公司Vesta Corporation合作,为防欺诈行业寻求最佳解决方案,现在邀请您也加入此次挑战。 在本次竞赛中,您将在一个具有挑战性的大型数据集上对你的机器学习模型进行基准测试。这些数据来自Vesta的真实电子商务交易,并且包含了从设备类型到产品功能的各种特征。您还可以创建新的特征来改善结果。 如果成功,您将提高全球数百万人的欺诈交易警报的有效性,帮助数十万企业减少欺诈损失并增加收入。当然,你也可以为你自己减少误报的麻烦。
致Great
2021/01/21
7130
过关斩将打进 Kaggle 竞赛 Top 0.3%,我是这样做的
导读:刚开始接触数据竞赛时,我们可能会被一些高大上的技术吓到。各界大佬云集,各种技术令人眼花缭乱,新手们就像蜉蝣一般渺小无助。今天本文就分享一下在 kaggle 的竞赛中,参赛者取得 top0.3% 的经验和技巧。让我们开始吧!
Python数据科学
2019/07/16
9380
一款非常棒的特征选择工具:feature-selector
本篇主要介绍一个基础的特征选择工具feature-selector,feature-selector是由Feature Labs的一名数据科学家williamkoehrsen写的特征选择库。feature-selector主要对以下类型的特征进行选择:
Python数据科学
2018/12/19
2.4K0
[Kaggle] Heart Disease Prediction
文章目录 1. 数据探索 2. 特征处理管道 3. 训练模型 4. 预测 kaggle项目地址 1. 数据探索 import pandas as pd train = pd.read_csv('./train.csv') test = pd.read_csv('./test.csv') train.info() test.info() abs(train.corr()['target']).sort_values(ascending=False) <class 'pandas.core.fra
Michael阿明
2021/02/19
6350
kaggle实战-银行用户流失预测
近年来,不论是传统行业还是互联网行业,都面临着用户流失问题。一般在银行、电话服务公司、互联网公司、保险等公司,经常使用客户流失分析和客户流失率作为他们的关键性业务指标之一。
皮大大
2023/08/25
2.3K0
药物发现 | 基于人工智能的胰腺癌协同药物组合发现
【优质期刊】文献【泛读,精读】笔记。关注癌症,生信,多组学,数据库,科研工具,精准医学,临床研究,生物技术,计算机技能,大语言模型的应用。
生信菜鸟团
2025/06/20
1440
药物发现 | 基于人工智能的胰腺癌协同药物组合发现
CMap数据库学习及结果可视化
CMap是一个生物信息学数据库和工具,旨在通过比较基因表达谱来揭示药物、基因和疾病之间的潜在关联。CMap数据库主要用于寻找药物、化合物和生物过程之间的关系,并用于药物重定位(drug repurposing)和疾病机制研究。
凑齐六个字吧
2024/08/29
1.2K0
CMap数据库学习及结果可视化
kaggle-(Santander Value Prediction Challenge)
https://www.kaggle.com/greenarrow2018/santander-value-prediction-challenge
西红柿炒鸡蛋
2020/10/26
7370
kaggle-(Santander Value Prediction Challenge)
【数据挖掘实战】 房价预测
本次竞赛有 79 个解释变量(几乎)描述了爱荷华州艾姆斯住宅的各个方面,需要预测每套住宅的最终价格。
机器学习司猫白
2025/01/21
1550
【数据挖掘实战】 房价预测
Ebiomedicine | 通过稀疏可解释网络发现药物作用机制
今天为大家介绍的是来自Angel Rubio团队的一篇论文。尽管深度神经网络(DDNs)在预测癌症药物疗效方面取得了成功,但其决策过程缺乏可解释性仍然是一个重大挑战。先前的研究提出模仿基因本体结构,以便解释网络中的每个神经元。然而,这些先前的方法需要大量的GPU资源,并且阻碍了其向全基因组模型的扩展。作者开发了SparseGO,这是一种稀疏且可解释的神经网络,用于预测癌症细胞系中的药物反应及其作用机制(MoA)。为了确保模型的泛化性,作者在多个数据集上对其进行了训练,并使用三种交叉验证方案评估其性能。该模型的高效性使其能够使用基因表达数据。此外,SparseGO结合了可解释人工智能(XAI)技术DeepLIFT和支持向量机,以计算方式发现药物的作用机制。与其他方法相比,SparseGO的稀疏实现显著减少了GPU内存使用量和训练速度,使其能够处理基因表达数据而不是突变数据。使用基因表达数据的SparseGO提高了准确性,并使其可以用于药物重新定位。此外,基因表达数据可以使用265种药物进行训练来预测其作用机制。
DrugOne
2024/06/18
2650
Ebiomedicine | 通过稀疏可解释网络发现药物作用机制
独家 | Two Sigma用新闻来预测股价走势,带你吊打Kaggle(附代码)
可以根据历史数据预测股票价格吗?最直接的回答可能是:“不能”。这是因为股市价格波动很大,并且取决于很多因素。量化所有这些因素几乎是不可能的,因此预测股价仍然是一门没人能掌握的艺术。撇开所有的负面因素不谈,有没有什么方法可以尽可能接近股价?有很多方法可以回答这个问题,但是在这里我们将看到机器学习是如何处理这个问题的。
量化投资与机器学习微信公众号
2019/02/26
4.1K1
kaggle
整整80个特征。label标签是不是正态分布,如果不是正态分布很多算法就用不上了,因为回归分析就是基于正态分布的。
西红柿炒鸡蛋
2020/06/28
1.1K0
AI应用实战课学习总结(4)医疗数据可视化
这是一个从UCI网站(https//archive.ics.uci.edu/ml/index.php)获取的美国威斯康辛州的乳腺癌数据集,它包括了一些对乳腺细胞测量之后的特征数据(如厚度、大小等)和标签数据(诊断结果:良性or恶性),现经常被拿来做机器学习分类算法的入门教学。
郑子铭
2025/02/27
2560
AI应用实战课学习总结(4)医疗数据可视化
【机器学习实战】kaggle 欺诈检测---如何解决欺诈数据中正负样本极度不平衡问题
使用机器学习模型识别欺诈性信用卡交易,这样可以确保客户不会为未曾购买的商品承担费用。
机器学习司猫白
2025/01/21
2740
【机器学习实战】kaggle 欺诈检测---如何解决欺诈数据中正负样本极度不平衡问题
推荐阅读
相关推荐
从 0 到 1 走进 Kaggle
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验