マルチクラスのテキスト分類問題に取り組んでいます。同じための勾配ブースティングモデルを構築しました。
データセットについて:
データセットには、"Test_name" と "Description" の 2 つの列があります。
Test_Name 列には 6 つのラベルがあり、"Description" 列には対応する説明があります。
問題に対する私のアプローチ
データ準備
説明用の単語ベクトルを作成します。
単語ベクトルを使用してコーパスを構築します。
数字、空白、ストップワードの削除、小文字への変換などの前処理タスク。
ドキュメント ターム マトリックス (dtm) を作成します。
上記の dtm からまばらな単語を削除します。
上記のステップにより、対応する列の各単語の頻度を示すカウント頻度マトリックスが得られます。
カウント頻度マトリックスをバイナリ インスタンス マトリックスに変換します。これは、ドキュメント内の単語の出現を 0 または 1 として示します。存在する場合は 1、存在しない場合は 0 です。
変換された dtm を使用して、元のメモ データセットのラベル列を追加します。ラベル列には 6 つのラベルがあります。
モデル構築
H2o パッケージを使用して、gbm モデルをビルドします。
得られた結果
クラス ラベルのうち 4 つは適切に分類されていますが、残りの 2 つは適切に分類されていません。
以下は出力です:
Extract training frame with `h2o.getFrame("train")`
MSE: (Extract with `h2o.mse`) 0.1197392
RMSE: (Extract with `h2o.rmse`) 0.3460335
Logloss: (Extract with `h2o.logloss`) 0.3245868
Mean Per-Class Error: 0.3791268
Confusion Matrix: Extract with `h2o.confusionMatrix(<model>,train = TRUE)`)
Body Fluid Analysis = 401 / 2,759
Cytology Test = 182 / 1,087
Diagnostic Imaging = 117 / 3,907
Doctors Advice = 32 / 752
Organ Function Test = 461 / 463
Patient Related = 101 / 113
Totals = 1,294 / 9,081
臓器機能検査と患者関連の誤分類誤差は比較的高くなります。どうすればこれを修正できますか?