2017-03-07 77 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

我已經更新了我的答案。如果這對你有幫助,你可以上傳和/或接受它。 –