首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >手把手教你卷积神经网络(CNN)模型:模型性能评估和预测策略

手把手教你卷积神经网络(CNN)模型:模型性能评估和预测策略

作者头像
生信菜鸟团
发布2025-11-19 19:39:48
发布2025-11-19 19:39:48
1280
举报
文章被收录于专栏:生信菜鸟团生信菜鸟团

手把手教你卷积神经网络(CNN)模型:模型性能评估和预测策略

引言:mRNA修饰预测的重要性

N6-甲基腺苷(m6A)是真核生物中最常见的mRNA修饰类型,参与mRNA剪接、稳定性调控和翻译等关键过程。研究表明,m6A修饰异常与多种疾病密切相关,包括癌症、神经退行性疾病等。传统实验方法鉴定m6A位点成本高且耗时长,而机器学习方法特别是深度学习,为高效预测mRNA修饰位点提供了新思路。

在此系列的前四篇里我们已经系统回顾了很多具有代表性的m6A-SNP预测模型,在接下来几篇我们将深入解析模型原理/代码实现和最新的深度学习研究成果,展示人工智能如何助力RNA修饰功能研究。

本篇将承接上篇继续解析如何构建卷积神经网络(CNN)来预测mRNA序列中的m6A修饰位点,主要涵盖模型性能评估、预测策略。

模型示例结构图
模型示例结构图

模型示例结构图

四、评估与预测策略

基础评估指标

基础评估指标
基础评估指标

基础评估指标

准确率 (Accuracy):整体预测正确率

查准率 (Precision):预测为正的样本中,多少是真正的正样本

查全率 (Recall):所有正样本中,模型能识别出来多少

F1 值 (F1-score):Precision 和 Recall 的调和平均,更平衡的指标

混淆矩阵:直观展示 TP/TN/FP/FN

ROC 曲线与 AUC:评估整体分类能力

PR 曲线与 AUPRC:在类别不平衡时更敏感,重点反映模型对正类的识别表现

混淆矩阵示例
混淆矩阵示例

混淆矩阵示例

  1. 基础评估指标输出
代码语言:javascript
复制
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score

y_pred = (model.predict(X_test) > 0.5).astype(int)

print("Accuracy:", accuracy_score(y_test, y_pred))
print("Precision:", precision_score(y_test, y_pred))
print("Recall:", recall_score(y_test, y_pred))
print("F1:", f1_score(y_test, y_pred))
  1. 混淆矩阵
代码语言:javascript
复制
from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay
import matplotlib.pyplot as plt

cm = confusion_matrix(y_test, y_pred)
disp = ConfusionMatrixDisplay(confusion_matrix=cm)
disp.plot()
plt.show()
  1. ROC曲线与AUC
代码语言:javascript
复制
from sklearn.metrics import roc_curve, roc_auc_score

y_prob = model.predict(X_test).ravel()
fpr, tpr, _ = roc_curve(y_test, y_prob)
auc_val = roc_auc_score(y_test, y_prob)

plt.plot(fpr, tpr, label=f"ROC curve (AUC={auc_val:.2f})")
plt.xlabel("False Positive Rate")
plt.ylabel("True Positive Rate")
plt.legend()
plt.show()
  1. PR曲线与AUPRC
代码语言:javascript
复制
from sklearn.metrics import precision_recall_curve, average_precision_score

precision, recall, _ = precision_recall_curve(y_test, y_prob)
ap = average_precision_score(y_test, y_prob)

plt.plot(recall, precision, label=f"PR curve (AP={ap:.2f})")
plt.xlabel("Recall")
plt.ylabel("Precision")
plt.legend()
plt.show()
  1. 正负样本概率分布密度图
代码语言:javascript
复制
import seaborn as sns
#可以用于调整阈值
sns.kdeplot(y_prob[y_test==0], label="Negative")
sns.kdeplot(y_prob[y_test==1], label="Positive")
plt.xlabel("Predicted probability")
plt.ylabel("Density")
plt.legend()
plt.show()

为什么选择AUPRC?

  • 正负样本高度不平衡时更可靠
  • 直接反映模型对正样本的识别能力

2. 双阈值策略

传统单阈值问题

  • 0.5阈值不适合不平衡数据
  • 大量样本处于中间模糊区域

双阈值方案

代码语言:javascript
复制
def double_threshold_classify(prob, low=..., high=...): #可以自行根据密度图选择
    if prob >= high:
        return 1    # 高置信度正样本
    elif prob <= low:
        return 0    # 高置信度负样本
    else:
        return -1   # 不确定区域

优势

  • 只保留高置信度预测
  • 减少边界误判
  • 提升结果可靠性

五、模型部署与RNA变异预测

SNP效应预测流程

代码语言:javascript
复制
def predict_snp_effect(model, wt_seq, mt_seq):
    """ 预测SNP对m6A修饰的影响 """
    # 编码序列
    wt_encoded = one_hot_encode_with_position(wt_seq).reshape(1, 101, 6)
    mt_encoded = one_hot_encode_with_position(mt_seq).reshape(1, 101, 6)
    
    # 预测概率
    wt_prob = model.predict(wt_encoded)[0][0]
    mt_prob = model.predict(mt_encoded)[0][0]
    
    # 计算变化量
    delta = mt_prob - wt_prob
    return wt_prob, mt_prob, delta

# 应用示例
wt_seq = "ACTG...A...TGAC"  # 野生型序列(含中心A)
mt_seq = "ACTG...G...TGAC"  # 突变型序列(A→G)
wt_prob, mt_prob, delta = predict_snp_effect(model, wt_seq, mt_seq)

可以使用双重筛选标准进行预测

1.首先依据模型验证阶段确定的分数阈值筛选出高置信度的m6A预测位点;

2.再对Δscore应用Z-score标准化,筛选出变化幅度显著(Z>2或Z<-2)的样本。

只有同时满足分数阈值和显著性要求的突变,才被认定为真正的gain或loss事件

代码语言:javascript
复制
def classify_snp_effect(wt_prob, mt_prob, delta, z_score):
    """ 根据Z-score和双阈值分类SNP效应 """
    if delta > 0 and z_score > ... and mt_prob >= ...:
        return "Gain"       # 获得新修饰位点
    elif delta < 0 and z_score < ... and wt_prob >= ...:
        return "Loss"       # 丢失原有修饰位点
    else:
        return "Uncertain" # 不确定变化

关键点回顾: 5. 双阈值策略提升预测可靠性

  1. 动态学习率和早停防止过拟合
  2. 同时使用Z-score标准化和分类阈值双重筛选标准进行预测
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-11-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信菜鸟团 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 手把手教你卷积神经网络(CNN)模型:模型性能评估和预测策略
    • 引言:mRNA修饰预测的重要性
    • 四、评估与预测策略
      • 基础评估指标
      • 2. 双阈值策略
    • 五、模型部署与RNA变异预测
      • SNP效应预测流程
      • 可以使用双重筛选标准进行预测
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档