具有5个标签和9个特征的梯度下降分类

时间:2017-03-07 07:06:58

标签: python machine-learning classification gradient-descent

我有一组数据,每个条目都有9"功能" (正数从1e-3到9e3),我需要使用每个条目的功能为条目选择5个可能的标签之一。

我知道我需要定义一个评分函数,该函数接收特征,对它们进行加权,并返回一个数字,反映每个标签被赋予这些特征和权重的可能性。损失函数将在输入上凸出:它将返回评分函数的输出与人工提供的标签之间的差异。评分函数的权重矩阵将通过梯度下降进行优化,以使损失最小化。

具体来说,我有一些看起来像这样的东西:

entry 1> (ground-truth label), [0.9, 0.2, 1e-2, 6.853, 0.882 ... 1]
    *prediction: label 3* *actually: label 4* *loss = some number, update weights*
entry 2> (ground-truth label), [features 1...9]
    *prediction: label 1* *actually: label 1* *loss = 0, don't update weights*
...
entry 80,000> (etc...)

如何选择将这些功能映射到五种可能标签之一的可能性的评分函数?

看起来像是:

for (loop through all data)
    [features] <dot product> [weights] = prediction
    if(prediction near (number))
        assign label 1
    else if (prediction near (number 2)
        assign label 2
    else (etc...)

    hinge_loss_function(prediction) = loss
    [weights] = loss*stepsize
end for

这感觉非常错误,但我是渐渐下降的新手。关于如何进行多标签分类的任何想法?

1 个答案:

答案 0 :(得分:5)

你的问题不明确!为什么呢?

首先,如果您有两个标签的培训数据,那么如何为五个类别分类问题设计模型?在训练期间,您的模型不知道其他三个类是什么,因此在测试期间如何预测实例属于那些未知的三个类?

您可以考虑一些无监督的分类技术,例如群集,您不需要为训练实例提供真正的标签。但我不确定你的要求是什么!

第二,梯度下降(优化算法)不是分类问题求解技术,而是可用于解决最小化问题。比如说,您已经设计了一个具有目标函数的模型(包括模型参数)。您可以使用梯度下降来最小化该目标函数,以找出最佳模型参数。

我鼓励您阅读gradient descent上的wiki文章。如果你有真实标签的训练数据,你可以使用说法,任何监督分类模型,例如逻辑回归或SVM等梯度下降技术来找出模型参数。

<强>更新

您提供的算法已关闭,但需要进行一些修改。我们可以简单地总结梯度下降学习如下:

enter image description here

我们可以将上述算法转换为更为数学的符号,如下所示。

enter image description here

相关问题