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

Python 具有5个标签和9个特征的梯度下降分类,python,machine-learning,classification,gradient-descent,Python,Machine Learning,Classification,Gradient Descent,我有一组数据,每个条目有9个“特征”(正数范围从1e-3到9e3),我需要使用每个条目的特征为条目选择5个可能的标签之一 我知道我需要定义一个评分函数,该函数接受特征,对它们进行加权,并返回一个数字,反映每个标签被赋予这些特征和权重的可能性。损失函数在输入上是凸函数:它将返回评分函数的输出与人工提供的标签之间的差值。评分函数的权重矩阵将通过梯度下降进行优化,以使损失最小化 具体地说,我有这样的东西: entry 1> (ground-truth label), [0.9, 0.2, 1e-

我有一组数据,每个条目有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
for(遍历所有数据)
[特征][权重]=预测
if(预测接近(数量))
分配标签1
else if(预测接近(2号)
分配标签2
其他(等)
铰链损耗函数(预测)=损耗
[重量]=损失*步长
结束

这感觉非常错误,但我是梯度下降新手。关于如何进行多标签分类有什么想法吗?

你的问题不清楚!为什么

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

你可以考虑一些无监督的分类技术,比如聚类,你不需要为训练实例设置真正的标签。但是我不确定你的要求是什么

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

我鼓励你阅读上的wiki文章。如果你有带真实标签的训练数据,你可以使用任何有监督的分类模型,例如logistic回归或支持向量机等,使用梯度下降技术来找出模型参数


更新

您提供的算法很接近,但需要一些修改。我们可以简单地将梯度下降学习总结如下:


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


感谢您查看我的问题-我对其进行了编辑,以提供更多细节,并希望更好地反映我对梯度下降的理解。请注意,有五个可能的标签,每行数据都被指定了地面真相人类标签。我已更新了我的答案。如果这对您有帮助,您可以投票和/或接受它.