如何在sklearn逻辑回归中选择初始偏差值?
在训练逻辑回归时,它经历一个迭代过程,在每个过程中它计算 x 变量的权重和偏差值以最小化损失函数。
来自官方 sklearn 代码类 LogisticRegression | scikit-learn 中的线性模型,逻辑回归类的拟合方法如下
def fit(self, X, y, sample_weight=None):
"""
Fit the model according to the given training data.
Parameters
----------
X : {array-like, sparse matrix} of shape (n_samples, n_features)
Training vector, where n_samples is the number of samples and
n_features is the number of features.
y : array-like of shape (n_samples,)
Target vector relative to X.
sample_weight : array-like of shape (n_samples,) default=None
Array of weights that are assigned to individual samples.
If not provided, then each sample is given unit weight.
.. versionadded:: 0.17
*sample_weight* support to LogisticRegression.
我猜sample_weight = weight
x 变量如果没有给出就设置为 1,偏差值也是 1 吗?
回答
您听起来有些困惑,也许在这里寻找与神经网络的权重和偏差的类比。但这种情况并非如此; sample_weight
这里与神经网络的权重无关,即使作为一个概念。
sample_weight
是不是这样,如果(业务)问题需要,我们可以给一些样本比其他样本更多的权重(即更重要),而这种重要性直接影响损失。它有时用于数据不平衡的情况;引用文档的实际使用部分的提示(它是关于决策树的,但基本原理是相同的):
类平衡可以通过从每个类中采样相同数量的样本来完成,或者最好通过将每个类的样本权重 (
sample_weight
)的总和归一化为相同的值来完成。
并来自Cross Validated的相关线程:
样本权重用于增加单个数据点的重要性(假设您的某些数据更值得信赖,然后它们会获得更高的权重)。所以:样本权重的存在是为了改变数据点的重要性
您可以在 SO 线程中看到更改某些样本的权重如何改变最终模型的实际演示。(同样,它是关于决策树的,但基本原理是相同的)。
澄清了这一点之后,现在应该很明显,这里没有任何类型的“偏差”参数的空间。事实上,在你的问题的入门款是错误的:回归并没有计算这样的重量和偏见; 它返回系数和截距项(有时本身称为偏差),而这些系数和截距与 无关sample_weight
。