神经行为领域机器学习实战指南 (二):核心概念与分类任务入门
在上一篇帖子中,我们探讨了机器学习在神经行为学领域的广阔应用前景,并完成了基础环境的搭建。相信大家已经对机器学习能为我们的研究带来什么有了一个初步的印象。
本篇目标:
- 掌握机器学习的三大范式及其核心思想。
- 理解数据在机器学习中的基本构成:样本、特征与标签。
- 了解数据集划分(训练集、验证集、测试集)的意义与实践。
- 熟悉模型、参数与超参数的区别。
- 认识并警惕过拟合与欠拟合现象。
- 初步了解什么是分类任务,以及它在神经行为学中的典型应用。
一、 机器学习基础概念:构建你的知识框架
1. 机器学习的三大范式:
机器学习算法种类繁多,但根据学习方式和数据特点,主要可以分为三大类:
-
监督学习 (Supervised Learning):
- 核心思想: 从“有标签”的数据中学习。就像老师教学生识字,我们给机器一堆图片(数据),并告诉它每张图片对应的是什么(标签,例如“猫”或“狗”)。机器通过学习这些“输入-输出”对,从而能够对新的、未见过的图片进行正确的分类。
- 神经行为学应用举例:
- 根据小鼠的运动轨迹特征(输入),判断其行为状态(标签:如探索、静止、梳毛)。
- 根据被试的脑电信号特征(输入),判断其所处的睡眠分期(标签:如觉醒、REM、NREM1-3)。
- 根据神经元集群的放电模式(输入),预测动物即将做出的选择(标签:如左转、右转)。
- 主要任务: 分类 (Classification) 和回归 (Regression)。我们后续会详细展开。
-
无监督学习 (Unsupervised Learning):
- 核心思想: 从“无标签”的数据中学习。机器需要自己探索数据中潜在的结构、模式或关系,没有标准答案作为指导。就像让一个人整理一堆混杂的积木,他可能会根据颜色、形状或大小自发地将它们归类。
- 神经行为学应用举例:
- 对大量动物行为视频片段进行分析,自动发现新的、未被定义过的行为模式。
- 分析高维神经数据,降低数据维度以便可视化,或发现功能相关的神经元集群。
- 识别行为序列中的异常模式,可能预示着疾病的发生。
- 主要任务: 聚类、降维、关联规则挖掘。
-
强化学习:
- 核心思想: 通过“试错”与“奖励/惩罚”来学习。智能体在一个环境中采取行动 (Action),环境会根据行动给出相应的状态变化和奖励 或惩罚。智能体的目标是学习一个策略,以最大化长期累积奖励。
- 神经行为学应用举例:
- 模拟动物在迷宫中学习寻找食物的过程,理解其决策策略。
- 构建模型来解释多巴胺等神经调质在奖赏学习中的作用。
- 开发更智能的实验范式,让实验动物通过与环境互动自主学习任务。
- 主要任务: 策略学习、价值函数估计。
2. 数据的基本构成:样本、特征与标签
在机器学习中,我们通常将数据组织成结构化的形式:
- 样本 : 数据集中的每一个独立观测单元。
- 神经行为学举例: 一只小鼠在某一时间段内的行为记录;一段5秒钟的EEG信号;一个被试在某次试验中的反应。
- 特征: 用来描述样本的各个属性或测量值。它们是模型的输入。
- 神经行为学举例:
- 对于小鼠行为:平均速度、运动总距离、在特定区域停留时间、头部朝向角度。
- 对于EEG信号:特定频段的功率、不同电极之间的相干性。
- 对于被试反应:反应时间、按键准确率。
- **特征工程 ** 是机器学习中至关重要的一步,它指的是从原始数据中提取、构建和选择最能代表问题本质的特征。好的特征能极大提升模型性能。
- 神经行为学举例:
- 标签: 我们希望模型预测的结果,通常只在监督学习中使用。
- 神经行为学举例:
- 行为状态:“探索”、“休息”、“社交”。
- 睡眠分期:“WAKE”、“REM”、“N1”、“N2”、“N3”。
- 疾病诊断:“健康”、“患病”。
- 预测值:下一个时间点的神经元放电率(这是一个回归问题)。
- 神经行为学举例:
3. 数据集划分:训练、验证与测试
为了客观评估模型的性能并防止模型“作弊”(即记住训练数据而不是学会泛化规律),我们需要将数据集划分为几个互不重叠的子集:
-
训练集:
- 用途: 用来“喂”给模型进行学习和参数调整。模型通过观察训练集中的特征和标签之间的关系来构建自身。
- 占比: 通常占总数据集的60%-80%。
-
验证集:
- 用途: 在模型训练过程中,用来调整模型的“超参数”(见下文)以及进行初步的模型选择。它帮助我们监控模型是否出现过拟合,并指导我们如何优化模型结构或学习过程。
- 占比: 通常占总数据集的10%-20%。
-
测试集:
- 用途: 在模型训练和超参数调整都完成后,用来对最终选定的模型进行一次“期末考试”。测试集上的性能是衡量模型泛化能力(即在新数据上表现好坏)的最终标准。测试集在整个模型开发过程中只能使用一次,以保证评估的公正性。
- 占比: 通常占总数据集的10%-20%。
4. 模型、参数与超参数:机器如何学习?
-
模型:
- 定义: 简单来说,模型就是机器学习算法从数据中学到的“规律”或“函数”。它接收输入特征,并输出预测结果(如类别标签或连续值)。
- 例子: 线性回归模型、决策树模型、支持向量机模型、神经网络模型。
-
参数:
- 定义: 模型内部的变量,其值是通过学习算法在训练数据上“学习”或“估计”出来的。参数是模型的核心,它们定义了模型如何将输入映射到输出。
- 例子:
- 线性回归模型中的权重和偏置。
- 神经网络中的权重和偏置。
- 特点: 模型自己从数据中学习得到,我们不直接设置。
-
超参数:
- 定义: 在模型开始学习之前,由我们(研究者/开发者)手动设定的参数。它们控制着学习过程本身,而不是模型最终学到的具体映射关系。
- 例子:
- K-近邻算法中的 K 值(选择多少个邻居)。
- 决策树的最大深度。
- 神经网络的学习率、隐藏层数量、每层神经元数量。
- 特点: 需要人为设定,通常通过验证集进行调优。
区分参数和超参数非常重要: 参数是模型从数据中学习的,超参数是我们用来指导学习过程的。
5. 过拟合与欠拟合:学习的两种极端
理想的机器学习模型应该能够很好地捕捉数据中的真实模式,并将其泛化到新的、未见过的数据上。但在实践中,模型可能会出现两种常见的学习问题:
-
过拟合:
- 现象: 模型在训练集上表现非常好(例如准确率极高),但在验证集或测试集上表现却差得多。
- 原因: 模型过于复杂,不仅学习了训练数据中的真实模式,还把训练数据中的噪声和随机波动也“记住”了。它对训练数据“死记硬背”,失去了泛化能力。
- 神经行为学场景: 你的模型能完美区分训练集里几只特定小鼠的行为,但换一批新的小鼠,分类效果就一落千丈。
- 如何缓解:
- 获取更多训练数据。
- 降低模型复杂度(例如,减少决策树深度,减少神经网络层数/神经元数)。
- 特征选择,去除无关或冗余特征。
- 使用正则化技术。
- 交叉验证。
-
欠拟合:
- 现象: 模型在训练集和测试集上表现都很差。
- 原因: 模型过于简单,未能捕捉到数据中真实存在的复杂模式。
- 神经行为学场景: 你试图用一个简单的线性模型去区分复杂的社交行为和探索行为,结果模型在任何数据上都分不清楚。
- 如何缓解:
- 增加模型复杂度。
- 添加更多有用的特征。
- 减少正则化程度。
平衡是关键: 我们的目标是找到一个复杂度适中的模型,既能充分学习数据中的规律,又能避免记住噪声,从而在未知数据上表现良好。验证集和后续将介绍的交叉验证是帮助我们实现这一平衡的重要工具。
二、 监督学习(一):分类任务初探
掌握了上述基础概念后,我们现在可以正式进入监督学习的世界,并从最常见的任务之一——分类 开始。
1. 什么是分类任务?
分类任务的目标是根据输入样本的特征,将其分配到预先定义的、离散的类别 中的某一个。
- 二分类: 只有两个类别。例如:健康/患病,药物有效/无效,物体出现/未出现。
- 多分类 (Multi-class Classification): 有三个或更多类别。例如:小鼠行为状态(探索、静止、梳毛、社交),睡眠分期(WAKE, REM, N1, N2, N3)。
2. 神经行为学中的典型分类问题:
回顾一下,分类任务在我们的领域无处不在:
- 行为识别/分期:
- 根据运动学特征(如速度、加速度、位置信息)将动物行为自动分类为“行走”、“奔跑”、“静止”、“梳毛”、“进食”等。
- 根据脑电图 (EEG) 和肌电图 (EMG) 特征自动进行睡眠分期(如:清醒期、快速眼动睡眠期、非快速眼动睡眠期)。
- 对果蝇的求偶行为序列进行自动标注和分类。
- 神经解码:
- 根据特定脑区(如视觉皮层)的神经元放电模式,判断被试看到的是图片A还是图片B。
- 根据运动皮层的神经活动,预测被试接下来要向左移动还是向右移动手臂。
- 疾病诊断/状态判断:
- 基于步态特征或社交行为指标,区分自闭症谱系障碍模型动物与对照组动物。
- 根据早期行为或生理指标,预测个体未来是否可能发展出某种神经退行性疾病。
- 刺激/环境分类:
- 根据声音特征,判断声音是来自同种个体还是异种个体。
3. 分类任务的一般流程:
- 数据准备: 收集并标记数据(特征 + 对应的类别标签)。
- 特征工程: 提取和选择最相关的特征。
- 数据集划分: 分为训练集、验证集和测试集。
- 模型选择: 选择一个或多个合适的分类算法(我们接下来几讲会详细介绍)。
- 模型训练: 使用训练集训练模型,调整模型参数。
- 模型评估与调优: 使用验证集评估模型性能,调整超参数,防止过拟合。
- 最终测试: 使用测试集对最终模型进行评估,得到其泛化能力的客观度量。
- 模型应用/部署: 将训练好的模型用于新的、未标记的数据进行预测。