【发布时间】:2018-01-11 17:35:19
【问题描述】:
我正在阅读 documentation 的逻辑回归并遇到了困惑。特别是,我对fit_intercept 和intercept_scaling 的用法感到困惑
fit_intercept : bool,默认值:True
指定是否应将常数(也称为偏差或截距)添加到 决策函数。
intercept_scaling:浮点数,默认为 1。
仅在使用求解器
liblinear和self.fit_intercept时有用 设置为True。在这种情况下,x变为[x, self.intercept_scaling], 即恒定值等于的“合成”特征intercept_scaling附加到实例向量。拦截 变为intercept_scaling * synthetic_feature_weight。注意!合成特征权重受 l1/l2 正则化 与所有其他功能一样。减少正则化对 合成特征权重(因此在截距上)
intercept_scaling必须增加。
据我了解,截距充当数据集的虚拟功能,因为每次进行预测时都会将其添加到输出中。
在intercept_scaling下的段落中,提到了-
具有常数值的“综合”特征等于 intercept_scaling 附加到实例向量
但这两个不是一回事吗?这是我的主要问题和困惑。
最后,文档提到这仅在我使用 liblinear 作为求解器时才有用。如果这两个确实相同并且我将fit_intercept 保留为True,那么会发生什么?
【问题讨论】:
-
您是否看到部分说 [
intercept_scalingis] 仅当...self.fit_intercept设置为True时才有用? -
文档确实有些混乱。
fit_intercept只是告诉 sklearn 向决策函数添加拦截的指令。不过既然要学会拦截,那么synthetic_feature_weight就派上用场了,基本上就是拦截了。intercept_scaling在正则化中起作用,因为截距也会受到惩罚,因此您可以通过增加intercept_scaling来增加截距项的权重来抵消惩罚。 -
@kazemakase,已编辑,谢谢
-
@Scratch'N'Purr,这是有道理的。谢谢。如果你不介意,你能把它作为答案吗?
-
@ClockSlave 没问题。我只是将其添加为答案。干杯!
标签: python scikit-learn