ブレイマンのコードを使用して教師なしランダムフォレスト分類を実行する方法


8

私はブレイマンのランダムフォレストコード(http://stat-www.berkeley.edu/users/breiman/RandomForests/cc_manual.htm#c2)を使用して、衛星データの分類(教師あり学習)を行っています。サンプルサイズが2000、変数サイズが10のトレーニングとテストのデータセットを使用しています。データは2つのクラスAとBに分類されます。教師あり学習モードでは、アルゴリズムは非常に低い分類エラー(<2%)で良好に実行されます。ここで、テストデータセットにクラスラベルのない教師なし分類を試し、アルゴリズムがクラスを予測する方法を確認します。ブレイマンのコードを使用して教師なし分類を実装する方法はありますか?この方法のエラーは、監視あり分類よりも高くなりますか?アルゴリズムのデータと実行パラメーターの設定を以下に示します。

DESCRIBE DATA 1 mdim = 10、ntrain = 2000、nclass = 2、maxcat = 1、1 ntest = 2000、labelts = 1、labeltr = 1、

SET RUN PARAMETERS 2 mtry0 = 3、ndsize = 1、jbt = 500、look = 100、lookcls = 1、2 jclasswt = 0、mdim2nd = 0、mselect = 0、


1
さらに詳しく説明できますか?クラスを予測するには、教師付き分類を使用する必要があります。
Simone

変数とサンプルの数が同じ2つのデータセットがあるとしましょう。最初のデータセットにはクラス情報(AおよびB)が含まれていますが、2番目のデータセットにはクラス情報がありません。RFコードを使用して、最初のデータセットを2つのクラスに非常に正確に分類しました。上記の実行パラメーターは、データセットでクラス情報が必要な特定の分類用です。今私の質問は、2番目のデータセットを2つのクラスに分類する方法ですか?
Bijoy 2013年

回答:


3

モデルの精度が高いことを前提として、それを使用して、ラベルなしデータセット内のレコードのクラスラベルを予測できます。ただし、ラベルなしデータのパフォーマンスを評価することはできません。

ラベル付けされたデータのモデルの品質を交差検証によって評価する必要があることに注意してください。トレーニングエラー率を確認するだけでは不十分です。

モデルが十分に正確でない場合は、半教師あり学習について考えるかもしれません。ラベルなしのデータは、帰納的学習によってモデルの品質を向上させるために使用されます。精度は常に、ラベル付きデータの相互検証によって計算する必要があります。

[Crimisini et al。をご覧ください。ディシジョンフォレスト:分類、回帰、密度推定、多様体学習、半教師あり学習の統合フレームワーク]第7章は半教師あり学習について、7.4は半教師あり学習による帰納についてです。


コメントをありがとうSimone ...あなたのコメントで述べたように、私の目的はRFを使用してラベルなしデータセット内のレコードのクラスラベルを予測することです。ただし、ブリーマンとカトラーのRFコードを使用してこれが可能かどうかを知りたいのですが?
Bijoy 2013年

私はそのコードにそれほど精通していません。また、少し古いかもしれません。WEKAまたはRを試してください。最近のランダムフォレストの実装を提供しています。
Simone

9

監視なしの方がうまくいくとは思いませんが、試してみるのはいい練習になるでしょう。ランダムフォレストを使用した教師なし学習は、データを大まかに表す独立変数に基づいて共同分布を作成することによって行われます。次に、この分布を使用して特定の数の観測をシミュレートします。たとえば、1000の観測がある場合、さらに1000をシミュレートできます。次に、それらにラベルを付けます。例:1:=実際の観測、0:=シミュレーション観測。その後、通常のランダムフォレスト分類器を実行して、実際の観測とシミュレーションの観測を区別します。近接計算オプションをオンにする必要があることに注意してください。実際に役立つ出力はこれです。これは、これらのラベルを割り当てようとしたときにランダムフォレストが行うことに基づいた、観測間の近接性の説明です。これで、どのように 特定のしきい値に近い観測値をまとめることを意味します。別の簡単なオプションは、階層的クラスタリングを行うことですが、この特定の距離行列を使用します。Rを使用できる場合、ほとんどの階層型クラスタリングパッケージでは、関数カスタム距離行列をフィードできます。次に、カットオフポイントを選択し、それを樹状図などとして視覚化できます。特定のしきい値に近い観測値をまとめることを意味します。別の簡単なオプションは、階層的クラスタリングを行うことですが、この特定の距離行列を使用します。Rを使用できる場合、ほとんどの階層型クラスタリングパッケージでは、関数カスタム距離行列をフィードできます。次に、カットオフポイントを選択し、それを樹状図などとして視覚化できます。

これは以前、ランダムフォレストのクラスタリングに関する非常に優れたチュートリアルであり、彼らはこの目的のために作成したいくつかの便利なR関数を共有していましたが、リンクは現在無効になっているようです。多分それは後で戻ってくるでしょう。また、チェックアウトしたい場合は、非常にきちんとしたランダムglm Rパッケージ(ランダムフォレストに類似していますが、duh ... glmsに基づいています)を作成しました。作成者にいつでも書いて、デッドリンクで利用可能であったランダムフォレスト分類の資料を求めることができます。私はRコードを持っていますが、ここに貼り付けるには大きすぎます。プライベートメッセージを送っていただければ、あなたに送ることができます。


このRパッケージもこれに対応しているようですが、詳しくは調べていません。artax.karlin.mff.cuni.cz
help


4

監視されていない設定でランダムフォレストを使用する場合は、ブライマンが「近接度」と呼ぶもので得られる距離メトリックに焦点を当てます。これは、サンプルがターミナルノードで共起する時間を表すNxN行列である必要があります。RのrandomForestでは、これは(Breimanを使用したことがないが、使用できると確信しています)を介して取得されます。

rf = randomForest( ... )
1 - rf$proximities

監視されていない設定では、ランダムフォレストはクラスがいくつあるべきかわからないので、それがあなたの仕事になります。これは、k = 2を選択する、KNN、PAMなど、さまざまな方法で実行できます。

ご想像のとおり、これは監視されたランダムフォレストとはかなり異なるため、2つの手順の分類精度を比較してもわかりにくい場合があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.