【问题标题】:How to focus on label(s) that is(are) difficult to predict?如何专注于难以预测的标签?
【发布时间】:2019-10-14 22:16:31
【问题描述】:

我正面临二元分类问题。我正在使用一些机器学习模型和 Python 3。我注意到某些模型在给定类上的性能比其他模型更好。我想将它们结合起来以提高我的准确性和精确度。我知道在回归问题中这样做的方法,比如预测的加权平均值。但我不确定它在分类问题中是否有意义。而且,您必须知道更好的方法。

这是我的算法,可以帮助我识别特别难以预测的标签:

"""
each value is in {0, 1}
ytrue : real values
ypred : predicted values
"""
def errorIdentifier(ytrue, ypred):
    n = len(ytrue)
    ytrue = list(ytrue)
    ypred = list(ypred)
    error = [0,0]
    for i in range(n):
        if ytrue[i] != ypred[i] :
            error[ytrue[i]] += 1
    return error

您可以猜到,我需要为我使用的每个模型调用它。

【问题讨论】:

    标签: python machine-learning classification


    【解决方案1】:

    不同模型更好地预测不同类别的问题是经典的机器学习问题。它的出现是因为各种算法更擅长对不同的特征进行建模,因此倾向于在​​某个类别上获得更高的准确性。

    为了克服这个问题,我们可以利用多个模型并集成结果以提高准确性。这种方法称为ensemble learning

    有许多方法,例如baggingboosting 等,以及一些众所周知的集成学习算法,例如RandomForest。您必须研究各种技术以找到最适合您需求的技术。

    【讨论】:

    • 感谢您的回答。我知道装袋和提升。但是,我想要组合我想要组合的模型。 RandomForest 基于决策树进行集成学习,sklearn 的 bagging 分类器也是如此,但您可以选择算法(base estimator)。这不符合我的愿望。我想通过使用 SVM、神经网络、XGBoost 等模型进行集成学习。但可能我错了......你有什么想法吗?
    • 是的,您可以堆叠自己的模型。这是stacking models 的一个很好的例子。您还可以在自己的模型中使用元算法,例如 AdaBoost。
    • 谢谢你的例子,我认为这个想法很棒!让我们看看它是否给出了好的结果:)
    猜你喜欢
    • 1970-01-01
    • 2020-05-03
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多