1

我有一個句子的數據集,這些句子已經用層次結構中的標籤進行了註釋。層次結構是音樂流派的選擇。它是一棵樹,而不是一個DAG - 每個節點只有一個父母和一個父母。下面是一個提取物爲例:機器學習的分層分類自上而下的方法

root = music 
    parent = latin 
      child = afro-cuban 
        child = salsa 
      child = brazilian 
        child = axe 
    parent = non-latin 
      child = classical 
    ... 

對於句子Mozart is the best例如,從收集的註解,多數同意這句話類標籤或地面真相是classical。從層次結構來看,我們知道classical也是non-latin音樂的一種形式,其形式爲music。而i prefer salsa可能已註釋爲latin

就分類而言,扁平化層次結構 - 我所做的 - 直觀地不能解決問題,因爲我們完全忽略了類層次結構。由於我們面臨着多類分類問題,因此它在使用Weka和分類器時也會產生較低的結果。

我的問題是,我讀過非常模糊的文獻和關於如何實施分層分類的在線文章。我想使用Weka和Python。但我只想澄清如何在這種情況下進行分層分類。所以我的問題是:

1)什麼是最好的建議去解決這個問題?實施自頂向下的方法是最佳選擇嗎?如果我這樣做,我該如何避免在每個級別上錯誤分類的問題?即它可以預測級別1上的latin,級別2上的classical。關於二元分類器呢?我接受建議。

2)訓練和測試數據是如何進入這個的?

3)如何評估分類性能?特別是採用自上而下的方法,因爲我們將對每個單獨的級別進行評估。

回答

0

我不知道我完全理解你的問題,但是從我確實瞭解,這聽起來是Decision tree,或最先進的算法,像Random Forest將是一個不錯的選擇。 您需要構建樹,也許可以使用一些NLP技術來刪除不必要的詞,如「is」,「I」,「the」(可能需要檢查更深層的詞)並將這些詞用作樹的特徵。對於第二個問題,你應該閱讀一些關於機器學習的內容。 Andrew Ng course on Coursera是一個很好的選擇。但是對於你的問題,培訓是你選擇訓練的數據的一部分,測試數據就是你評估算法性能的部分。這也應該回答你的第三個問題

+0

謝謝你的回答。我意識到培訓和測試數據的目的,以及他們的工作和機器學習。我只是不明白你會如何以分層的方式去做。所以你建議從我的句子中提取特徵?這隻會在較小的空間中產生句子。這如何解決我的等級問題?問題是,一個班級屬於多個級別。正如我所解釋的,一個節點也可以被歸類爲它的父節點,因爲在概念上,這也是正確的。如何做到這一點? – user47467

+0

從句子中提取功能 - 是的,首先,這將刪除你很多不必要的數據,其次是在你的例子中給出的句子,它將保留有意義的單詞。 層次問題將在樹中解決,而且也很直觀。 例如,在一句話中:_「我更喜歡莎莎」_莎莎將是一個強大的功能,並且當它進入你的分類器時,它可能會表明一個強烈的信號,非洲古巴或拉丁或音樂,取決於什麼是你的標籤 你對哪一部分樹完全感興趣?頂層?第二個? – lazary

+0

我對樹木沒有預先知識,所以如果你知道或者可以幫助我解決這個問題,那會很棒。我對整棵樹感興趣,我想這取決於句子的類標籤。 – user47467

1

survey article做了很好的解釋層次分類的各種策略。

通過控制用於訓練每個子分類的訓練數據,可以防止不一致的預測,例如您提供的拉丁語 - >經典示例。例如,你首先訓練一個二元分類器來區分拉丁和非拉丁,使用所有的數據進行訓練。然後訓練一個分類器來區分非洲裔古巴人和巴西人,只使用這兩類中的例子作爲訓練數據。在推斷時,如果拉丁/非拉丁分類器預測「拉丁語」,則只會將未標記的示例傳遞給非古巴/巴西分類器。