序列分类 - 机器学习

2025 年 6 月 25 日 | 9 分钟阅读
Sequence Classification- Machine Learning

序列分类是机器学习中的一种问题类型,其中输入数据是数据点的序列,目标是为整个序列预测一个类别标签或分类。

在序列分类中,模型在包含序列及其相应类别标签的已标记数据集上进行训练。模型通常由几层神经网络组成,例如循环神经网络 (RNN)长短期记忆 (LSTM) 网络, 它们可以捕获序列中的时间依赖性和模式。

在将输入数据输入模型之前,将其预处理为数值形式,例如向量序列。模型的输出是可能类别标签的概率分布,预测标签通常是概率最高的那个。

序列分类是一个具有挑战性的问题,因为序列长度可变,数据中存在噪声和变异,并且需要捕获序列中的长期依赖关系和模式。尽管如此,它在自然语言处理、语音识别和生物信息学等各个领域都有重要的应用。

序列分类问题的示例包括

  • 情感分析:预测文本序列的情感(正面、负面或中性)
  • 语音识别:从音频序列预测转录的单词或短语
  • 手势识别:从手或身体动作序列预测动作或手势
  • DNA序列分类:预测 DNA 序列的功能或类型

Python 实现

现在,为了实现,我们将对蛋白质序列进行分类,区分它们是 HBP 还是 NON-HBP。

Sequence Classification- Machine Learning
  • 导入库

输出

Sequence Classification- Machine Learning
  • EDA

EDA 代表探索性数据分析。这是一种分析数据的方法,用于总结其主要特征并深入了解其底层模式和结构。

  • HBP 读取

HBP(富含组氨酸的碱性蛋白)是一种存在于哺乳动物精浆中的蛋白质,参与受精过程。它是一种小型的、高度碱性的蛋白质,含有多个组氨酸残基,被认为参与调节精子运动和获能。

在蛋白质序列中,“HBP”一词还可以指代其他含有组氨酸残基且具有相似碱性电荷的蛋白质或蛋白质域。这些蛋白质可能参与各种生物过程,例如 DNA 结合、转录调控和酶活性。

在这里,我们将看一下 HBP 数据集。

输出

Sequence Classification- Machine Learning
  • Non-HBP 读取

在蛋白质序列中,“non-HBP”一词指的是不含有高比例组氨酸残基且不具有与 HBP 蛋白相同碱性电荷的蛋白质。Non-HBP 蛋白质可以参与广泛的生物过程,包括酶活性、信号转导、结构支持以及 DNA 结合和调控。

在这里,我们将看一下 Non-HBP 数据集。

输出

Sequence Classification- Machine Learning
  • 合并 HBP 和 Non-HBP 序列

现在我们将合并两个数据集,以便创建一个包含这两种蛋白质序列的通用数据集。

输出

Sequence Classification- Machine Learning

我们将使用 keras 库进行文本处理,因为

  • 分词器 (Tokenizer):将序列的每个字符翻译成一个数字。
  • pad_sequences:确保每个序列的长度都相同(max_length)。我们决定使用最大长度 100,这应该足以满足大多数序列。
  • train_test_split:来自 sklearn 将数据分成训练集和测试集。
  • 分词器

输出

Sequence Classification- Machine Learning
  • Conv1d 训练

Conv1D 是一种特定类型的深度学习层,用于卷积神经网络 (CNN),用于分析一维数据序列,包括时间序列、音频信号和自然语言处理 (NLP) 输入。

在 Conv1D 层中,输入序列通过多个滤波器或核进行处理,每个滤波器或核从数据中提取特定特征或模式。滤波器一次沿输入序列滑动一个元素,并且通常很小(例如,3x1 或 5x1);每次卷积操作都会在序列沿线的每个位置产生一个输出值。

现在我们将训练 CNN 并检查其在 Conv1D 层上的准确率。

输出

Sequence Classification- Machine Learning
Sequence Classification- Machine Learning
Sequence Classification- Machine Learning

测试损失:1.14

测试准确率:0.51

我们获得了 51% 的准确率,考虑到蛋白质序列分类相当困难,这已经不错了。

  • 独热编码 (One Hot Encoder)

独热编码是一种将分类变量表示为二元向量的过程。当处理不能直接处理分类数据的算法(例如大多数机器学习算法)时,这很有用。

我们将尝试将蛋白质序列编码为二元向量以提高结果。

输出

Sequence Classification- Machine Learning

输出

Sequence Classification- Machine Learning

输出

Sequence Classification- Machine Learning
  • Conv 2D 训练

Conv2D 是一个可以添加到模型中的内置层,它使用二维卷积运算实现。该层使用一组可学习的滤波器对输入图像或视频数据执行卷积运算。滤波器在输入数据上滑动,并与输入的局部块执行点积,以提取与下游任务相关的特征。

现在我们将训练 CNN 并检查其在 Conv2D 层上的准确率。

输出

Sequence Classification- Machine Learning
Sequence Classification- Machine Learning
Sequence Classification- Machine Learning

测试损失:4.33

测试准确率:0.49

对于蛋白质序列,使用 Conv2D 似乎是个糟糕的主意,尽管存在巨大的错误率。

Siamese 神经网络(聚类算法)

它是一种用于学习两个输入之间相似性的神经网络架构。它由两个相同的神经网络组成,称为孪生网络,它们共享相同的权重和架构。

它的架构通常用于目标是学习两个输入样本之间相似性度量的任务。此类任务的示例包括图像或面部识别、签名验证和文本匹配。

输出

Sequence Classification- Machine Learning

输出

Sequence Classification- Machine Learning

输出

Sequence Classification- Machine Learning
Sequence Classification- Machine Learning

输出

Sequence Classification- Machine Learning

输出

Sequence Classification- Machine Learning

词袋模型作为特征提取器

在 BoW 模型中,每个文档表示为词频向量,其中每个维度代表文档语料库中的一个唯一单词,每个维度中的值代表该单词在文档中的频率。

特征提取器 (Feature Extractor) 是一种用于从文本数据中提取相关特征的方法。

我们将使用词袋模型通过模式识别从数据中提取相关特征。

输出

Sequence Classification- Machine Learning

输出

Sequence Classification- Machine Learning

其他模型

在这里,我们将借助其他模型对蛋白质序列进行分类。

输出

Sequence Classification- Machine Learning

令人惊讶的是,逻辑回归的准确率最高,为 78%,而支持向量分类器的准确率最低,为 40%

由此,我们可以得出结论,在蛋白质序列分类的情况下,使用逻辑回归进行序列分类是最佳选择之一。

结论

序列分类是一项重要的机器学习任务,在广泛的领域都有应用。可以使用各种模型进行序列分类,包括 RNN、CNN 和 Transformer。这些模型使用标记数据进行训练,可用于预测新输入序列的类别或标签。模型的选择取决于输入序列的性质和应用程序的特定要求。