1

私は、階層からのラベルで注釈が付けられた文のデータセットを持っています。階層は音楽ジャンルの選択です。これはツリーであり、DAGではなく、各ノードには親と親がそれぞれ1つしかありません。ここでは一例として、抽出物である:例えば、文Mozart is the bestについては機械学習の階層分類トップダウンアプローチ

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

、収集された注釈から、大半がこの文章や地面の真実のためのクラスラベルがclassicalであることに同意します。階層から、我々はclassicalもという形式のnon-latin音楽の形式であることを知っています。一方、i prefer salsalatinと注釈されている可能性があります。

分類の面では、クラス階層を完全に無視しているため、直感的に問題を解決することはできません。また、Wekaを使用している間に、結果が低くなります。また、複数の分類器の問題に直面しているため、分類器が選択されています。

私の問題は、階層分類がどのように実装されているか、非常にあいまいな文献やオンライン記事を読んだことです。私はWekaとPythonを使いたいです。しかし、私はちょうどこの状況で階層的な分類を実行する方法を明確にしたかっただけです。だから私の質問は:

1)これを回避するための最善の提案は何ですか?トップダウンアプローチを実施するのが最善の選択肢でしょうか?これを行うと、各レベルで誤って分類されてしまうという問題を避けるにはどうすればよいですか?すなわち、レベル1でlatin、レベル2でclassicalと予測できます。バイナリクラシファイアはどうですか?私は提案に開放されています。

2)トレーニングデータとテストデータはどのようにして入力されますか?

3)どのように分類性能を評価できますか?特にトップダウンのアプローチでは、各レベルごとに評価が行われるため、

答えて

0

私はあなたの問題を完全に理解しているとは確信していませんが、私が理解したところではDecision tree、またはRandom Forestのような最も高度なアルゴリズムが良い選択です。 "is"、 "I"、 "the"などの不要な単語を削除するためのNLPテクニックを使用してください(おそらく、それをより深く確認する必要があります)。

2番目の質問については、おそらく機械学習についてのいくつかを読むべきです。まずはAndrew Ng course on Courseraをお勧めします。しかし、あなたの質問のために、訓練はあなたが訓練することを選んだデータの一部であり、テストデータはあなたのアルゴリズムの性能を評価するものです。これはまた、あなたの3番目の質問に答える必要があります

+0

お返事ありがとうございます。私は、データの訓練とテストの目的、そしてそれらが何をするのか、そして一般的な機械学習の目的を認識しています。私はちょうどあなたが階層的な方法でそれをやり遂げる方法を理解していない。だから私の文章から特徴を抽出することをお勧めしますか?これは、より小さな空間に文を生成するだけです。これはどのように私の階層的な問題を解決するのですか?問題は、クラスが複数のレベルに属していることです。私が説明したように、概念的には正解でもあるので、ノードを親として分類することもできます。どのようにこれを行うのですか? – user47467

+0

文章からの特徴抽出 - まず最初に、不要なデータがたくさん残ってしまいます。例文の中で2番目に意味のある言葉が残っています。 階層的な問題はツリー内で解決され、非常に直感的です。 例えば:_ "i prefer salsa" _というサルサは強力な機能であり、クラシファイアに入ると、おそらくアフリカキューバやラテンや音楽に強い信号を示しているでしょう。あなたのラベルは です。正確にどの部分に興味がありますか?トップレベル?二つ目? – lazary

+0

私は木を知っているわけではないので、もしあなたがこのwekaをどうやってやっているのか分かっていれば、それは素晴らしいことでしょう。私は木全体に興味があります。これは、文章のクラスラベルに依存していると思いますか? – user47467

1

このsurvey articleは、階層分類のためのさまざまな戦略を説明してくれてうれしいです。

あなたが与えたlatin->古典的な例のように、各サブクラスファイターを訓練するために使用される訓練データを制御することによって、矛盾した予測を防ぐことができます。たとえば、トレーニング用にすべてのデータを使用して、ラテンと非ラテンを区別するバイナリクラシファイアを最初にトレーニングします。これらの2つのクラスの例のみをトレーニングデータとして使用して、アフリカ - キューバンとブラジルの間を区別するためにクラシファイアをトレーニングします。推測時に、latin/non-latinクラシファイアが 'latin'を予測する場合にのみ、非表示の例をafro-cuban/barzilian分類器に渡します。