关于Scikit-learn MNIST L1正则化逻辑回归示例的技术问询
关于稀疏逻辑回归MNIST示例的技术问题解答
Q1:代码中C=50.0 / train_samples的设置是否合理?
首先明确scikit-learn中LogisticRegression的C参数是正则化强度的倒数:C越大,正则化越弱;C越小,正则化越强。
你提到的“数据量越大,正则化强度应越弱”是一种宏观直觉,但这里的设置是为了让正则化项和经验损失的量级保持匹配。逻辑回归的损失函数由两部分组成:经验损失(所有样本的损失之和)和正则化项。当训练样本数train_samples增加时,经验损失的总和会线性增大,而默认的正则化项权重是固定的,这会导致正则化项在总损失中的占比被稀释。
用C=50.0 / train_samples的话,正则化项的实际权重是1/C = train_samples/50.0,会随样本数增加而线性增大,这样就能保证正则化项在总损失中的相对权重稳定,避免样本量变大后正则化效果被弱化到失效的程度。这不是代码缺陷,是针对样本量缩放正则化强度的合理做法。
Q2:为何coef矩阵能绘制数字图像?
MNIST数据集的每个样本是28×28的灰度图,被展平成了784维的特征向量。而多分类逻辑回归的coef_矩阵形状为(10, 784)(对应10个数字类别),每一行是一个类别对应的权重向量。
这个权重向量的每个元素对应原图像中一个像素的重要性:
- 正权重表示该像素的数值越高,模型越倾向于判断样本属于当前类别;
- 负权重则表示该像素数值越高,越不利于判断为当前类别。
把每个类别的权重向量reshape回28×28的矩阵后,本质是可视化模型学到的“类别模板”——模型认为哪些像素的模式是区分该类别的关键,所以呈现出类似数字的图像。
内容的提问来源于stack exchange,提问作者user2718067
相关产品推荐
相关产品推荐

