多くの因子型変数(単語、説明、時間、基本的に数値以外のもの)を含む機械学習をやろうとしています。私は通常randomForest
に頼っていますが、> 32レベルの要因では動作しません。多くのレベルの要素を扱うR機械学習パッケージ
誰かが良い選択肢を提案できますか?
多くの因子型変数(単語、説明、時間、基本的に数値以外のもの)を含む機械学習をやろうとしています。私は通常randomForest
に頼っていますが、> 32レベルの要因では動作しません。多くのレベルの要素を扱うR機械学習パッケージ
誰かが良い選択肢を提案できますか?
可能な分割の数がレベルの数とともに指数関数的に増加するため、ツリーメソッドは機能しません。しかし、これは典型的には、各単語(説明などの)のインジケータ変数を作成することによって対処されます。つまり、すべての可能な組み合わせを選択するのではなく、一度に単語を使用できます。一般的には、レベルを常にインジケータに展開することができます(また、glmなど暗黙的に行うモデルもあります)。 SVMなどの他のメソッドを使ってテキストを処理する場合もMLで同様です。その答えは、メソッドのように入力データ構造について考える必要があるかもしれないということです。また、レベルにある種の順序がある場合は、線形化することもできます(したがって、c-1の分割だけです)。
randomForestのメソッドを32以上のクラスを持つクラス変数に使用すると、理論上間違いはありません。計算コストがかかりますが、randomForestメソッドを使用して任意の数のクラスを処理することは不可能ではありません。通常のRパッケージのrandomForestは、与えられたクラス変数の最大クラス数として32を設定します。したがって、クラス変数が32以上のものに対してrandomForestを実行することはできません。
変数の線形化は非常に良い提案です - 私はクラスのランク付けの方法を使って、それらを32のメタクラスに均等に分割しました。したがって、実際に64の異なるクラスがある場合、クラス1とクラス2のすべてのもので構成されます。唯一の問題は、ランク付けの賢明な方法を考え出すことです。あなたが作業している場合、どの単語がどのように単語ごとにランク付けされるべきかを知ることは非常に困難です。
n個の異なる予測セットを作る方法があります。各セットには、32以上のクラスを持つ各クラス変数の中の31個のクラスの特定のサブセットを含むすべてのインスタンスが含まれています。すべてのセットを使用して予測を行い、パッケージに付属する可変重要度測定を使用して、使用されるクラスが最も予測性の高い実装を見つけることができます。最も予測性の高い31のクラスを見つけたら、これらの最も予測的なクラスを1から31として指定するすべてのデータを使用して新しいバージョンのRFを実装し、その他はすべて「その他のクラス」にして、予測変数の多くを保存しておきたいと考えています。
幸運を祈る!
一般に、私が多くの要因レベルがある状況で見つけたベストパッケージは、gbm
パッケージを使用することです。
最大1024個の要因レベルを処理できます。
1024以上のレベルがある場合、私は通常、最も頻繁に発生する要因レベル1023を維持してデータを変更し、残りのレベルを1つのレベルとしてコードします。