回答:
クリストファーの答えは非常に合理的です。特に、ツリーベースのメソッドは、識別機能に基づいているため、この種のデータには適しています。特定のアプリケーションを知らずに言うのは少し難しいですが、一般的に、一部の機能が他の機能よりもはるかに差別的であると思われる場合は、いくつかの次元削減技術を試してこれを少しきれいにすることができます。
また、次元削減手法を使用すると、特徴ベクトルの形式がやや堅牢になり(通常、混合データ型ではなく直線の数値ベクトルになります)、さまざまな方法を活用できます。また、ハンドエンジニアリング機能を調べることもできます。適切に手作業で設計された機能を使用Random Forest
すると、ほとんどのタスクの最先端に非常に近づくことができます。
データについて詳しく知らずにこの質問に答えることは困難です。とはいえ、次のアドバイスを提供します。
ほとんどの機械学習手法は、混合型のデータを処理できます。ツリーベースの方法(AdaBoostやランダムフォレストなど)は、このタイプのデータでうまく機能します。より重要な問題は、実際にはあなたが気にするのが正しい次元についてです。
その次元数を減らすために何かすることをお勧めします。たとえば、データを最もよく分離する単語またはフレーズを探し、他の単語を破棄します(注:ツリーベースのメソッドはこれを自動的に行います)。
データの性質に関してご提供いただいた情報が少ないため、次のアプローチに従うことをお勧めします。
テキストデータをカテゴリに変換します。カテゴリに含まれる情報の量についてさまざまな代替手段を試すことができますが、各変数に対して特定のカテゴリが存在する必要があります。例として、人々が仕事に就くための望ましい方法に関する調査アンケートのテキストフィールドから来た変数を想定します。
最初に、同様の意味を持つ回答が同じ方法で記述され、同じカテゴリに属することを確認する必要があります(たとえば、「自転車」、「サイクリング」、「自転車」はすべて同じ意味を持ちます)。次に、詳細度の低いカテゴリにさらにマージ(「トラム」、「メトロ」、「バス」を「公共交通機関」にマージ)するか、さらに多く(「ウォーキング」、「ジョギング」、「サイクリング」を「身体活動」)あなたが見つけようとしているものに応じて。
データセットにいくつかの異なる組み合わせを配置することもできます。その後、次の手順で、分析に使用する組み合わせを決定します。順序付けられた変数でテキストデータを「翻訳」できる場合は、必ずこれを行ってください(「小、中、高」の場合は「1,2,3」に変換します)。
カテゴリ変数(順序変数ではなく)をダミー(バイナリ)変数に変換します。ほとんどの分類/機能選択アルゴリズムはこれを自動的に行いますが、選択したものに当てはまることを確認してください。この時点でデータの次元が非常に大きくなることを認識していますが、これは次のステップで処理されます。
データに特徴選択/次元削減手法を適用します。このようなテクニックの有用なレビューは、ここにあります。Pythonを使用している場合、sklearnツールには多くのオプションがあります(詳細については、こちらをご覧ください)。多重共線性も考慮した手法を使用してください。主成分分析またはツリーベースのアルゴリズムを試します。
データを分類するには、Decision Tree Classifier(sklearnからも入手可能)を使用します。また、重要度の重みを機能に設定する機能選択を実行します。オプション(例:max_depth、min_samples_split)に応じて、生成されたツリーの詳細レベルを設定できます。交差適合に基づいて詳細レベルを調整し、オーバーフィットを回避してください。
Principal Component Analysis
またはNon-Negative Matrix Factorization
、変数の数を減らし、スパースデータを強化し、すべての変数を定量に変換します。さらに、質問者は、次元削減モデルの品質を評価して、テキスト変数の有用性を推定できます。