Datawhale夏令营2024-分子预测赛学习笔记

 

一、问题背景

     此次夏令营活动是基于讯飞开放平台“分子性质预测挑战赛”开展实践学习,非常适合想入门并实践机器学习算法 的同学们一起参与,可以跟着手册操作很容易完成,只需要十几分钟~

‌​‌​​​​‬‬⁠⁠​​⁠​⁠⁠​​​​​‍‌‍‌‬‬​​​⁠​‬​​‍‍‍​‌​‌零基础入门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)。

赛题数据

     部分赛题数据如下所示:

3bf77f3c987d4187b2759646bd7a3c69.png

二、建模过程

解题思路

     我们的任务是基于训练集的样本数据,构建一个模型来预测测试集中分子的性质情况。这是一个二分类任务,其中目标是根据分析相关信息以及结构信息等特征,预测该分子的性质标签。具体来说,选手需要利用给定的数据集进行特征工程、模型选择和训练,然后使用训练好的模型对测试集中的用户进行预测,并生成相应的预测结果。

ce306045bc9b441283cd979ec64bf4a5.png

参考代码

# 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

 

  • 16
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
计算机夏令营面试中,常问的专业问题涵盖了计算机科学与技术的基础知识、实际应用能力以及专业发展方向等多个方面。以下是几个常见的问题及回答: 1. "请介绍一下你的专业背景和学习经历。" 回答时可以简要概括自己的专业背景,包括计算机科学相关的课程和项目经验。同时,突出个人学习方法和对计算机科学的热情,以及如何与团队合作等。 2. "你在哪个领域的计算机技术有专长?" 可以根据个人兴趣和学习经历选择一个具体领域,如人工智能、网络安全、数据分析等。接着可以分享相关项目经验,参与的竞或开源项目等,突出自己在该领域的学习和实践能力。 3. "你对编程语言的了解和应用如何?" 回答时可以先介绍熟悉的编程语言,如C++、Java等,并简单说明掌握的能力和项目开发经验。可以结合实例,讲述自己解决问题或优化程序的经验,以及对新兴编程语言或开发框架的学习能力。 4. "你在实际项目中遇到过哪些挑战,如何解决的?" 可以选择一个具体的项目案例,介绍自己在项目中所面临的难题,如性能优化、需求变更等,并展示自己的解决方案。可以突出自己的分析思路、团队合作能力和解决问题的效果。 5. "你未来的发展方向是什么?" 可以通过介绍自己对计算机科学与技术的热情和兴趣,以及在学校或实习中获得的经验来回答这个问题。可以提及个人的职业规划,如继续深耕某个领域、不断学习新技术或追求研究方向等。 6. "你在课外有参与过哪些计算机相关的活动或项目?" 可以分享一些有趣的课外活动或计算机相关的项目,如参加编程比、担任学生科技协会的职位、参与开源项目等。突出自己的团队合作能力、创新思维和对计算机技术的探索精神。 在面试中,回答问题时需简洁明了,突出自己的优势和个人特点,同时展示学习能力和团队合作能力。此外,可以提前了解常见的计算机领域知识和技术趋势,以便更好地回答相关问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值