如何确定 sklearn 中 MLP 分类器的“损失函数”?
Posted
技术标签:
【中文标题】如何确定 sklearn 中 MLP 分类器的“损失函数”?【英文标题】:How can I determine "loss function" for MLPClassifier in skilearn? 【发布时间】:2019-04-21 12:45:24 【问题描述】:我想用skilearn的MLPClassifier
mlp = MLPClassifier(hidden_layer_sizes=(50,), max_iter=10, alpha=1e-4,
solver='sgd', verbose=10, tol=1e-4, random_state=1,
learning_rate_init=.1)
我没有找到损失函数的任何参数,我希望它是mean_squared_error
。是否可以为模型确定它?
【问题讨论】:
根据定义,由于MLPClassifier
是一个分类器,您不能使用MSE,因为这会使问题成为回归问题;对于回归问题,您应该使用MLPRegressor
。
@desertnaut 这个特定的软件实现可能存在问题,但对于分类问题,MSE 是可接受的损失函数。在这种情况下,它通常被称为 Brier score。 Yann LeCun 在他的网站上有使用 MSE 作为 MNIST 神经网络中的损失函数的示例。
【参考方案1】:
根据the docs:
此模型使用 LBFGS 或随机梯度下降优化对数损失函数。
Log-loss 基本上是the same as cross-entropy。
没有办法将另一个损失函数传递给MLPClassifier
,所以你不能使用MSE。但是MLPRegressor
使用 MSE,如果你真的想要的话。
但是,一般的建议是坚持使用交叉熵损失进行分类,据说它比 MSE 有一些优势。因此,您可能只想使用 MLPClassifier
来解决您的分类问题。
【讨论】:
以上是关于如何确定 sklearn 中 MLP 分类器的“损失函数”?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 sklearn:: LGBMClassifier() 中为 LightGBM 分类器的 feature_importances_ 中设置“增益”作为特征重要性度量