我一直在閱讀一些關於CRF的論文,並對特徵函數有些困惑。一元(節點)和二元(邊緣)特徵f通常具有如下形式:f(yc,xc)= 1 {yc = y c} fg(xc)。條件隨機字段特徵函數
其中{。}是指示函數,如果所包含的條件爲真,則爲1;否則爲0。 fg是從數據中提取有用屬性(特徵)的數據xc的函數。
現在看來,要創建CRF功能,必須知道真正的標籤(yc)。這對訓練是正確的,但在測試階段,真實的類標籤是未知的(因爲我們正在試圖確定它們最有可能的值)。
我錯過了什麼嗎?這如何正確實施?
我一直在閱讀一些關於CRF的論文,並對特徵函數有些困惑。一元(節點)和二元(邊緣)特徵f通常具有如下形式:f(yc,xc)= 1 {yc = y c} fg(xc)。條件隨機字段特徵函數
其中{。}是指示函數,如果所包含的條件爲真,則爲1;否則爲0。 fg是從數據中提取有用屬性(特徵)的數據xc的函數。
現在看來,要創建CRF功能,必須知道真正的標籤(yc)。這對訓練是正確的,但在測試階段,真實的類標籤是未知的(因爲我們正在試圖確定它們最有可能的值)。
我錯過了什麼嗎?這如何正確實施?
與CRF的想法是它爲每個標籤的設置分配一個分數。因此,你所做的,概念上是計算所有可能的標籤分配的分數,然後哪個標籤獲得最大分數就是CRF預測/輸出的分數。如果CRF爲不同的標籤分配提供不同的分數,這只是有意義的。當你這麼想的時候,很明顯標籤必須包含在特徵函數中才能工作。
所以我們假設你的CRF的對數概率函數是F(x,y)。因此它爲數據樣本x和標籤y的每個組合分配一個數字。因此,當您獲得新的數據樣本時,測試期間的預測標籤僅爲argmax_y F(new_x,y)。也就是說,你會發現y的值使得F(new_x,y)最大,這就是預測的標籤。
我明白你的意思了。所以對於參數估計是有意義的。一旦你知道了CRF模型參數,並且你想預測一個測試例子,那麼它是如何工作的?由於測試示例中的標籤未知 –
您從字面上預測得分最高的y值。所以你必須編寫一些隱含或明確的代碼,計算所有可能的y值的得分,然後返回哪個得到最大得分。這是測試時的預測。 –
非常感謝您的解釋。說得通! –