【问题标题】:Why do I get some negative values (predictors) as output of regressor estimators (Lasso, Ridge, ElasticNet)为什么我会得到一些负值(预测变量)作为回归估计器(Lasso、Ridge、Elastic Net)的输出
【发布时间】:2013-11-30 16:26:21
【问题描述】:

对于我的回归问题,我使用 scikit-learn 的 GridSearchCV 来获得最佳 alpha 值,并在我的估计器(Lasso、Ridge、ElasticNet)中使用这个 alpha 值。 我在训练数据集中的目标值不包含任何负值。但是一些预测值是负的(大约 5-10%)。 我正在使用以下代码。 我的训练数据包含一些 Null 值,我正在通过该功能替换它们。

return Lasso(alpha=best_parameters['alpha']).fit(X,y).predict(X_test)

知道为什么我会得到一些负值吗? X,y 和 X_test 的形状为 (20L, 400L) (20L,) (10L, 400L)

【问题讨论】:

    标签: machine-learning regression scikit-learn lasso-regression


    【解决方案1】:

    Lasso 只是正则化的线性回归,因此实际上对于每个训练的模型,都有一些值的预测变量将为负数。

    考虑一个线性函数

    f(x) = w'x + b
    

    其中 w 和 x 是向量,' 是转置运算符

    无论wb 的值是什么,只要w 不是零向量 - 总是有x 的值对应f(x)<0。用于计算 w 和 b 的训练集不包含任何负值也没关系,因为线性模型总是(可能在一些非常大的值中)越过 0 值。

    【讨论】:

    • 感谢您的解释。当我的特征(原始 1500,特征选择后减少到 400)超过样本时,知道什么是更好的估计器吗?使用带有 n_estimators=300 的 DecisionTreeRegressor 的 AdaBoostRegressor,并没有提高分数,但至少没有得到任何负值。
    • 老实说,最好的解决方案是收集更多数据。对于如此小的数据集,您无法期望任何合理的结果。
    猜你喜欢
    • 2020-09-19
    • 2017-01-21
    • 2021-01-16
    • 1970-01-01
    • 1970-01-01
    • 2022-12-06
    • 2020-08-09
    • 2013-05-10
    • 2016-10-02
    相关资源
    最近更新 更多