我正在尝试了解sklearn.linear_model
中 RidgeClassifier 和 LogisticRegression 的区别。我在文档中找不到它。
我想我很了解LogisticRegression的功能。它计算系数并截取以最小化half of sum of squares of the coefficients + C times the binary cross-entropy loss
,其中C是正则化参数。我从头开始检查了一个简单的实现,结果是一致的。
RidgeClassifier的结果不同,我不知道,在那里如何计算系数和截距?查看Github代码,我没有足够的经验来解开它。
我问的原因是,我喜欢RidgeClassifier的结果-它使我的问题更全面。但是在我使用它之前,我至少想知道它来自哪里。
感谢您的帮助。
答案 0 :(得分:5)
RidgeClassifier()
相比, LogisticRegression()
的工作方式有所不同,但罚款为2。 RidgeClassifier()
的损失函数不是交叉熵。
RidgeClassifier()
通过以下方式使用Ridge()
回归模型来创建分类器:
为了简单起见,让我们考虑使用二进制分类。
根据每个记录所属的类,将目标变量值生成为+1
或-1
。
建立一个Ridge()
回归模型以预测实际值。损失函数为RMSE + l2 penality
如果预测值(基于decision_function()
函数计算)大于0,则将输出类别预测为正,否则为负。
对于多类别分类:
使用label binarizer()
创建多输出回归,每个类一次(One-Vs-Rest建模)并训练Ridge()
回归模型。
从每个类别的Ridge()
回归模型(每个类别的真实数字)中获取预测,然后使用argmax
来预测该类别。