2017-03-07 128 views
1

我有一组数据,每个条目有9个“特征”(正数从1e-3到9e3),我需要使用每个条目的特征来选择5个可能的条目标签。5个标签和9个特征的渐变下降分类

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

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

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 

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

回答

5

你的问题不清楚!为什么?

第一个,如果你有两个标签的训练数据,那么你如何设计一个五类分类问题的模型?在训练期间,你的模型不知道其他三个类是什么,所以在测试期间,它如何预测一个实例属于那些未知的三类?

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

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

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


更新

您提供的算法是接近,但需要做一些修改。只要我们可以总结梯度下降学习如下:

enter image description here


我们可以按如下上述算法转换成更数学符号。

enter image description here

+0

感谢您抽空看看我的问题 - 我已经编辑它来提供更多的细节,并希望更好地反映了我了解梯度下降。 请注意,有五种可能的标签,并且每行数据都被分配了接地真实人标签。 – DEED

+0

我已经更新了我的答案。如果这对你有帮助,你可以上传和/或接受它。 –