首页
/ NeuromatchAcademy课程内容解析:广义线性模型中的逻辑回归与正则化

NeuromatchAcademy课程内容解析:广义线性模型中的逻辑回归与正则化

2025-07-10 07:12:15作者:秋阔奎Evelyn

教程概述

本教程是NeuromatchAcademy课程"广义线性模型(GLM)"系列的第二部分,重点介绍GLM框架下的逻辑回归模型及其在神经科学数据分析中的应用。我们将学习如何从神经活动数据中解码实验对象的左右选择行为。

学习目标

  1. 理解逻辑回归模型及其在GLM理论中的推导
  2. 应用逻辑回归从神经响应中解码行为选择
  3. 掌握正则化方法及其超参数的影响

逻辑回归基础

逻辑回归是用于二元分类的广义线性模型,具有以下特点:

  • 使用logistic链接函数将线性预测转换为概率
  • 采用伯努利分布作为噪声模型

逻辑回归模型方程

模型的基本输入/输出关系为:

y^p(y=1x,θ)=σ(θx)\hat{y} \equiv p(y=1|x,\theta) = \sigma(\theta^\top x)

其中σ()\sigma(\cdot)sigmoid函数,将任意实数映射到(0,1)区间:

σ(z)=11+exp(z)\sigma(z) = \frac{1}{1 + \exp(-z)}

Sigmoid函数实现

def sigmoid(z):
    """实现logistic转换函数"""
    return 1 / (1 + np.exp(-z))

该函数呈现典型的S形曲线,当z趋近于正负无穷时,输出分别趋近于1和0。

使用scikit-learn实现逻辑回归

在实际应用中,我们通常使用成熟的机器学习库而非从头实现。scikit-learn提供了高效且易用的逻辑回归实现:

from sklearn.linear_model import LogisticRegression

神经数据解码应用

我们将使用Steinmetz数据集,该数据集记录了实验对象在执行视觉决策任务时的神经活动。任务中实验对象需要通过转动轮子来指示感知到的Gabor刺激方向(左或右)。

数据准备

数据包含两个关键变量:

  • spikes: 形状为(n_samples, n_neurons)的归一化放电率数组
  • choices: 长度为n_samples的向量,0/1表示实验对象的行为选择

解码流程

  1. 数据分割:将数据分为训练集和测试集
  2. 模型训练:使用训练数据拟合逻辑回归模型
  3. 性能评估:在测试集上评估模型解码准确率
# 示例代码
model = LogisticRegression()
model.fit(X_train, y_train)  # 训练模型
accuracy = model.score(X_test, y_test)  # 评估准确率

正则化技术

为了防止过拟合,逻辑回归通常结合正则化技术:

  1. L1正则化(Lasso):产生稀疏权重,自动进行特征选择

    LogisticRegression(penalty='l1', solver='liblinear')
    
  2. L2正则化(Ridge):限制权重幅度,防止个别特征主导预测

    LogisticRegression(penalty='l2')
    
  3. 弹性网络(Elastic Net):结合L1和L2正则化

    LogisticRegression(penalty='elasticnet', l1_ratio=0.5)
    

正则化强度选择

正则化强度通过超参数C控制(C=1/λ),通常使用交叉验证选择最优值:

# 交叉验证选择最佳C值
C_values = np.logspace(-4, 4, 9)
accuracies = [cross_val_score(LogisticRegression(C=C), X, y).mean() 
             for C in C_values]
best_C = C_values[np.argmax(accuracies)]

结果可视化

我们可以绘制不同正则化方法下的权重分布:

def plot_weights(models):
    """绘制各模型权重分布的茎叶图"""
    fig, axs = plt.subplots(len(models), sharex=True)
    for ax, (title, model) in zip(axs, models.items()):
        ax.stem(model.coef_.squeeze())
        ax.set(title=title, ylabel="Weight")
    ax.set(xlabel="Neuron index")
    plt.show()

总结

本教程介绍了:

  1. 逻辑回归作为GLM特例的理论基础
  2. 使用scikit-learn实现神经活动解码
  3. 正则化技术及其在模型优化中的应用

逻辑回归因其简单性、可解释性和良好的性能,成为神经科学数据分析中的重要工具。通过结合正则化技术,我们可以构建更稳健的解码模型,深入理解神经活动与行为之间的关系。