一、问题背景
此次夏令营活动是基于讯飞开放平台“分子性质预测挑战赛”开展实践学习,非常适合想入门并实践机器学习算法 的同学们一起参与,可以跟着手册操作很容易完成,只需要十几分钟~
零基础入门AI(机器学习)竞赛 - 飞书云文档 (feishu.cn)
比赛简介
在当今科技日新月异的时代,人工智能(AI)技术在化学及药物研发中展现出了巨大潜力。精准预测分子性质有助于高效筛选出具有优异性能的候选药物。以PROTACs为例,它是一种三元复合物由目标蛋白配体、linker、E3连接酶配体组成,靶向降解目标蛋白质。本次大赛聚焦于运用先进的人工智能算法预测其降解效能,旨在激发参赛者创新思维,推动AI技术与化学生物学的深度融合,进一步提升药物研发效率与成功率,为人类健康事业贡献智慧力量。
赛事任务
选手根据提供的demo数据集,可以基于demo数据集进行数据增强、自行搜集数据等方式扩充数据集,并自行划分数据。运用深度学习、强化学习或更加优秀人工智能的方法预测PROTACs的降解能力,若DC50>100nM且Dmax<80% ,则视为降解能力较差(demo数据集中Label=0);若DC50<=100nM或Dmax>=80%,则视为降解能力好(demo数据集中Label=1)。
赛题数据
部分赛题数据如下所示:
二、建模过程
解题思路
我们的任务是基于训练集的样本数据,构建一个模型来预测测试集中分子的性质情况。这是一个二分类任务,其中目标是根据分析相关信息以及结构信息等特征,预测该分子的性质标签。具体来说,选手需要利用给定的数据集进行特征工程、模型选择和训练,然后使用训练好的模型对测试集中的用户进行预测,并生成相应的预测结果。
参考代码
# 1. 导入需要用到的相关库
# 导入 pandas 库,用于数据处理和分析
import pandas as pd
# 导入 numpy 库,用于科学计算和多维数组操作
import numpy as np
# 从 lightgbm 模块中导入 LGBMClassifier 类
from lightgbm import LGBMClassifier
# 2. 读取训练集和测试集
# 使用 read_excel() 函数从文件中读取训练集数据,文件名为 'traindata-new.xlsx'
train = pd.read_excel('./data/data280993/traindata-new.xlsx')
# 使用 read_excel() 函数从文件中读取测试集数据,文件名为 'testdata-new.xlsx'
test = pd.read_excel('./data/data280993/testdata-new.xlsx')
# 3 特征工程
# 3.1 test数据不包含 DC50 (nM) 和 Dmax (%),将train数据中的DC50 (nM) 和 Dmax (%)删除
train = train.drop(['DC50 (nM)', 'Dmax (%)'], axis=1)
# 3.2 将object类型的数据进行目标编码处理
for col in train.columns[2:]:
if train[col].dtype == object or test[col].dtype == object:
train[col] = train[col].isnull()
test[col] = test[col].isnull()
# 4. 加载决策树模型进行训练
model = LGBMClassifier(verbosity=-1)
model.fit(train.iloc[:, 2:].values, train['Label'])
pred = model.predict(test.iloc[:, 1:].values, )
# 5. 保存结果文件到本地
pd.DataFrame(
{
'uuid': test['uuid'],
'Label': pred
}
).to_csv('submit.csv', index=None)
评价指标
本次竞赛的评价标准采用f1_score,分数越高,效果越好。f1分数(f1_score),是统计学中用来衡量二分类(或多任务二分类)模型精确度的一种指标。它同时兼顾了分类模型的准确率和召回率。F1分数可以看作是模型准确率和召回率的一种加权平均,它的最大值是1,最小值是0,值越大意味着模型越好。假如有100个样本,其中1个正样本,99个负样本,如果模型的预测只输出0,那么正确率是99%,这时候用正确率来衡量模型的好坏显然是不对的。
优化建议:
1. 提取更多特征:在数据挖掘比赛中,特征总是最终制胜法宝,去思考什么信息可以帮助我们提高预测精准度,然后将其转化为特征输入到模型。对于本次赛题可以从专业角度构建特征,除了Smiles特征外,还有很多特征可以提取有价值的信息,比如InChI是由一系列部分组成,提供了关于分子结构的详细信息。比如开头标识、分子式、连接表、氢原子计数、多可旋转键计数、立体化学信息、同分异构体信息、混合物或互变异构体信息、电荷和自旋多重度信息等。
2. 尝试不同的模型:模型间存在很大的差异,预测结果也会不一样,比赛的过程就是不断的实验和试错的过程,通过不断的实验寻找最佳模型,同时帮助自身加强模型的理解能力。
三、进阶升级(特征融合部分)
三大Boosting算法对比
首先,XGBoost、LightGBM和CatBoost都是目前经典的SOTA(state of the art)Boosting算法,都可以归类到梯度提升决策树算法系列。三个模型都是以决策树为支撑的集成学习框架,其中XGBoost是对原始版本的GBDT算法的改进,而LightGBM和CatBoost则是在XGBoost基础上做了进一步的优化,在精度和速度上都有各自的优点。
以上三大模型的原理细节可参考【原创首发】机器学习公式推导与代码实现30讲.pdf
三者的区别,主要有两个方面。第一个是三个模型树的构造方式有所不同,XGBoost使用按层生长(level-wise)的决策树构建策略,LightGBM则是使用按叶子生长(leaf-wise)的构建策略,而CatBoost使用了对称树结构,其决策树都是完全二叉树。第二个有较大区别的方面是对于类别特征的处理。XGBoost本身不具备自动处理类别特征的能力,对于数据中的类别特征,需要我们手动处理变换成数值后才能输入到模型中;LightGBM中则需要指定类别特征名称,算法即可对其自动进行处理;CatBoost以处理类别特征而闻名,通过目标变量统计等特征编码方式也能实现类别特征的高效处理。
#AI夏令营 #Datawhale #机器学习
参考资料
https://blog.csdn.net/zjn295771349/article/details/84961596
https://blog.51cto.com/u_15671528/5528743