皆さん、こんにちは、
約1200サンプルの小規模なMLプロジェクトに取り組んでおり、以下を予測しようとしています:
- 感情状態(分類—6クラス)
- その感情の強さ(1–5)
データセットには:
journal_text(短く、ノイズの多い振り返り)- メタデータの例として:
- ストレスレベル
- エネルギーレベル
- 睡眠時間
- 日中の時間帯
- 前日の気分
- 雰囲気タイプ
- 顔の感情ヒント
- 継続時間(分)
- 振り返りの質
これまでに行ったこと
1. テキスト処理
TF-IDFを使用:
max_features = 500 → tried 1000+ as wellngram_range = (1,2)stop_words = 'english'min_df = 2
得られた形状:
- 約1200サンプル × 500–1500特徴量
2. メタデータ
- カテゴリカルデータ(
face_emotion_hint)を数値に変換 - 他のデータは数値のまま
- 欠測値の処理(XGBoost には NaN のまま、または簡易補完を適用)
また、エンジニアリングした特徴:
text_lengthword_countstress_energy = stress_level * energy_levelemotion_hint_diff = stress_level - energy_level
StandardScalerを用いてメタデータを標準化
テキストと組み合わせて:
from scipy.sparse import hstack X_final = hstack([X_text, X_meta_sparse]).tocsr() 3. モデル
感情状態(分類)
XGBClassifierを使用:
- 精度 ≈ 66–67%
分類レポートは概ね良好で、混乱は主に隣接クラス間に見られる。
Intensity(初期分類)
- 精度 ≈ 21%(非常に低い)
4. 強度 → 回帰へ切替
XGBRegressorを使用:
- 予測を 1–5 に丸める
評価:
- MAE ≈ 1.22
現在の課題
1. 強度の改善があまり進んでいない
- 特徴量エンジニアリングとチューニングを行っても
- MAE は約 1.2 のまま
- わずかな改善のみ(約0.05–0.1)
2. TF-IDF のチューニングの混乱
- 特徴量を減らす(500)→ 精度が低下
- 増やす(1000–1500)→ やや良くなる
最適なバランスをどう見つけるか分からない
3. 特徴量エンジニアリングの効果は小さい
- 複数の特徴量を追加したが大きな改善はなし
- どんな特徴量が実際に強度に役立つか分からない
観察
- データセットは小さい(1200行)
- ラベルはノイズが多い(主観的な感情+強度)
- モデルは近接クラスを混同する(予想どおり)
- テキストがメタデータよりも支配的に見える
質問
- 順序予測(通常の回帰の代わりに、より良いアプローチはあるか?)
- 特に感情強度のためのより良い特徴量のアイデアはありますか?
- 他のモデル(LightGBM、線形モデルなど)を試すべきですか?
- テキストとメタデータを組み合わせるより良い方法はありますか?
目標
単に精度を最大化するだけでなく、以下を満たすものを作ること:
- ノイズの多いデータを扱えること
- 汎用性が高いこと
- 現実世界の挙動を反映すること
ご提案や洞察をぜひお願いします
[link] [comments]




