【Datawhale AI夏令营】分子性质AI预测挑战赛学习记录

#AI夏令营 #Datawhale #夏令营

学习时间:2024 年 7.1~7.7


学习活动基于讯飞开放平台分子性质预测挑战赛开展实践学习


前言

利用所学知识,解决实际问题,加强动手能力


一、赛题背景与任务

1.背景

在当今科技日新月异的时代,人工智能(AI)技术正以前所未有的深度和广度渗透到科研领域,特别是在化学及药物研发中展现出了巨大潜力。精准预测分子性质有助于高效筛选出具有优异性能的候选药物。以PROTACs为例,它是一种三元复合物由目标蛋白配体、linker、E3连接酶配体组成,靶向降解目标蛋白质。本次大赛聚焦于运用先进的人工智能算法预测其降解效能,旨在激发参赛者创新思维,推动AI技术与化学生物学的深度融合,进一步提升药物研发效率与成功率,为人类健康事业贡献智慧力量。通过此次大赛,我们期待见证并孵化出更多精准、高效的分子性质预测模型,共同开启药物发现的新纪元。

2.任务

选手根据提供的demo数据集,可以基于demo数据集进行数据增强、自行搜集数据等方式扩充数据集,并自行划分数据。运用深度学习、强化学习或更加优秀人工智能的方法预测PROTACs的降解能力,若DC50>100nM且Dmax<80% ,则视为降解能力较差(demo数据集中Label=0);若DC50<=100nM或Dmax>=80%,则视为降解能力好(demo数据集中Label=1)。

机器学习问题通用流程

机器学习问题通用流程

二、Task 1:初步了解,跑通baseline

在Datawhale贡献者团队的帮助下体验了一站式 baseline

  1. 导入库: pandas(用于数据处理和分析)和 LGBMClassifier(决策树分类器)等。
  2. 读取数据:代码通过使用 pd.read_excel 函数从文件中读取训练集和测试集数据,并将其存储在 traindata-new.xlsx 和 testdata-new.xlsx 两个数据框中。
  3. 特征工程:
    • test数据不包含 DC50 (nM) 和 Dmax (%),将train数据中的 DC50 (nM) 和 Dmax (%)删除。
  4. LGB树模型训练和预测:
    • 创建了一个 LGBMClassifier 的实例,即LGB分类器。
    • 使用 fit 函数对训练集中的特征和目标进行拟合,训练了决策树模型。
    • 对测试集使用已训练的模型进行预测,得到预测结果。
    • 将预测结果和相应的 uuid 组成一个DataFrame,并将其保存到 submit.csv 文件中。

三、Task 2:深入了解相关知识并改进baseline

数据字段理解(由Datawhale贡献者团队提供)

赛题介绍部分并没有给出关于数据字段的具体介绍,所以这里对每个数据字段进行解释:

1.数据集包含了多个字段,如uuid(唯一标识符)、Label(降解能力的标签,0表示降解能力较差,1表示降解能力好)、Uniprot、Target、E3 ligase、PDB等,这些都是与PROTACs分子相关的信息。

2.还包括了降解能力相关的数值指标,如DC50(半数降解浓度)、Dmax(最大降解效率)、IC50(半抑制浓度)、EC50(半有效浓度)等。

3.还包括了与分子物理化学性质相关的字段,如Molecular Weight(分子量)、Exact Mass(精确质量)、XLogP3(预测的脂水分配系数)等。

具体说明如下:

  • UUID: 一个唯一的标识符,用于识别数据记录。
  • Label: 可能指的是化合物或数据集的标签或名称。
  • Uniprot: 一个蛋白质数据库,提供关于蛋白质序列、结构和功能的信息。
  • Target: 目标蛋白,即PROTACs设计来降解的特定蛋白质。
  • E3 ligase: E3连接酶,一种在泛素化过程中扮演角色的酶,帮助标记蛋白质以供降解。
  • PDB: 蛋白质数据银行,一个包含蛋白质和核酸结构的数据库。
  • Name: 化合物的名称。
  • Smiles: 一种表示分子结构的字符串格式。
  • DC50 (nM): 半最大降解浓度,即达到最大降解效果一半时的化合物浓度。
  • Dmax (%): 最大降解效率,表示化合物能实现的最大降解效果的百分比。
  • Assay: 实验方法,这里可能指的是用于测定DC50、Dmax等的实验。
  • Percent degradation: 分子降解的百分比。
  • IC50 (nM, Protac to Target): 半最大抑制浓度,针对PROTACs与其目标蛋白的复合物。
  • EC50 (nM, Protac to Target): 半最大有效浓度,即达到一半最大生物效应的浓度。
  • Kd (nM, Protac to Target): 解离常数,表示PROTACs与其目标蛋白复合物的结合强度。
  • Ki (nM, Protac to Target): 抑制常数,用于描述抑制剂与酶的结合强度。
  • delta G, delta H, -T*delta S: 分别表示结合反应的吉布斯自由能变化、焓变和熵变,这些热力学参数用于描述分子间相互作用的能量状态。
  • kon, koff: 分别表示分子结合和解离的速率常数。
  • t1/2 (s, Protac to Target): 半衰期,即分子浓度减少到初始浓度一半所需的时间。
  • Assay (Protac to Target, kon/koff/t1/2): 可能是指测定结合和解离速率常数以及半衰期的实验方法。

接下来的部分讨论了与E3连接酶的相互作用,以及形成的三元复合物(目标蛋白、PROTACs、E3连接酶)的类似参数。

  • IC50, EC50, Kd, Ki: 与三元复合物相关的参数,与前面提到的类似,但这里特指三元复合物。
  • delta G, delta H, -T*delta S: 描述三元复合物的热力学参数。
  • kon, koff, t1/2: 描述三元复合物的动力学参数。

最后,描述了与细胞活性相关的参数,包括:

  • IC50, EC50, GI50, ED50, GR50: 这些参数描述了化合物在细胞水平上的活性,如半最大抑制浓度、半最大效应浓度等。
  • PAMPA Papp: 一种评估药物分子在仿生膜上的通透性的方法。
  • Caco-2 A2B/B2A Papp: 使用Caco-2细胞系评估药物分子的肠道吸收能力。
  • Article DOI: 文章的数字对象标识符,用于唯一标识科学文献。
  • Molecular Weight, Exact Mass: 分子量和精确质量。
  • XLogP3: 预测的辛醇/水分配系数,用于预测脂溶性。
  • Heavy Atom Count, Ring Count: 重原子数和环的数量。
  • Hydrogen Bond Acceptor/Donor Count: 氢键受体/供体计数。
  • Rotatable Bond Count: 可旋转键的数量。
  • Topological Polar Surface Area: 拓扑极性表面积。
  • Molecular Formula, InChI, InChI Key: 分子式、国际化学标识符及其密钥。

尝试改进baseline:
1.修改决策树分类器参数:将学习率learning_rate调整为0.001,迭代次数(决策树的数量)调整为200
得到结果为:0.76789

2.采用随机森林分类器:RandomForestClassifier(n_estimators=100, random_state=42)
得到结果为:0.73004

3.采用梯度提升分类器:HistGradientBoostingClassifier(max_iter=100)
得到结果为:0.7013

四、Task 3:进阶->数据预处理与特征工程

1.数据预处理是在数据分析和建模之前对原始数据进行的一系列操作,旨在将数据转换为更适合分析和建模的形式。这些操作通常包括数据清理(处理缺失值、异常值、重复值等)、数据集成(合并多个数据源的数据)、数据变换(标准化、归一化、编码等)和数据规约(减少数据量但保留关键信息)。

2.特征工程则是从原始数据中提取、构建和选择对建模有用的特征的过程。这包括特征构建(通过组合、转换或衍生新的特征)、特征选择(选择最相关和有信息量的特征)和特征提取(将高维数据转换为低维表示)。

查看赛题数据可知(如下图),数据存在大量缺失以及无用数据等,进而需要提高数据质量,增强数据的可用性和可理解性,从而提高后续分析和模型训练的效果和准确性

在这里插入图片描述在这里插入图片描述

# test数据不包含 DC50 (nM) 和 Dmax (%),将train数据中的DC50 (nM) 和 Dmax (%)删除
train = train.drop(['DC50 (nM)', 'Dmax (%)'], axis=1)

# 当测试数据集中每列特征的非空值小于15个时删除该特征。
def remove_features_with_few_non_nulls(data):
    for col in data.columns:
        if data[col].notnull().sum() < 15:
            data.drop(col, axis=1, inplace=True)
    return data

train = remove_features_with_few_non_nulls(train)
test = remove_features_with_few_non_nulls(test)

num_train_rows = len(train) #用于后续将train, test分离
# 使用pd.concat将清洗后的训练集和测试集合并成一个名为data的DataFrame,便于进行统一的特征工程处理
data = pd.concat([train, test], axis=0, ignore_index=True)

#独立热编码 One-Hot Encoding
data = pd.get_dummies(data)

data.fillna(0, inplace=True) #剩余的所有缺失值用0填充
cols = data.columns[2:]

# 无量纲化
from sklearn.preprocessing  import MinMaxScaler

scaler = MinMaxScaler(feature_range=(0, 1))
scaler = scaler.fit(data[cols])
data[cols] = scaler.transform(data[cols])
data = pd.DataFrame(data)

经过对数据的处理后:
1.采用随机森林分类器:RandomForestClassifier(n_estimators=100, random_state=42)
得到结果为:0.76732

2.采用SVM 分类器:svm.SVC(kernel=‘linear’)
得到结果为:0.73937

五、Task4:持续尝试,上分!

神经网络

神经网络在多特征二分类问题上有广泛应用,

以下是一般的实现步骤,用于处理具有多个特征的二分类任务:

步骤如下:

  1. 准备数据集:拥有多个特征(输入变量)和对应的二分类标签(0 或 1)。
  2. 定义神经网络模型:模型通常由多个线性层和非线性激活函数组成。
  3. 选择损失函数:对于二分类问题,常用的损失函数是二元交叉熵损失(Binary Cross Entropy Loss)。
  4. 选择优化器:例如随机梯度下降(SGD)等,用于更新模型的参数以最小化损失。
  5. 训练模型:通过前向传播计算预测值,根据损失函数进行反向传播来更新参数。
  6. 进行预测:使用训练好的模型对新的数据进行分类预测。

根据赛题数据特点,在多特征二分类问题上常用的神经网络模型中选择MLP(多层感知机)。

多层感知机(Multilayer Perceptron,MLP)

由多个全连接层组成,能够学习特征之间的复杂非线性关系。


总结:

对项目的背景、应用领域等有基本的了解,并在本赛题数据背景下做了相关方向的思考,如分类方法分类器的选取,处理数据的特征工程、调整分类器的参数等,以此来获得更好的分类性能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

有品位的小丑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值