【要約】友達から久々にLINEが来たので、マルチ勧誘リスクを機械学習で判定してみた [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
ユーザーが、久々の連絡に対してマルチ勧誘のリスクを判断できないという心理的課題に直面した。技術的には、勧誘のプロセスを正確に捉えることが困難である。具体的には以下の課題がある。
- ・勧誘は段階的に進むため、単発のメッセージでは判定が難しい。
- ・初期の挨拶は無害なため、単純な単語判定では誤検知が発生する。
- ・実データの収集が困難であり、学習データの確保が課題となる。
// Approach
会話の文脈を捉えるため、メッセージを累積させて段階的なラベルを付与する手法を採用した。具体的には以下のステップで実装を行っている。
- ・相手のメッセージのみを対象とし、形態素解析とn-gram、TF-IDFで特徴量化する。
- ・メッセージを順次追加した「累積テキストデータ」を作成し、多段階のラベルを付与する。
- ・小規模データでの過学習を防ぐため、OneVsRestClassifierを用いたロジスティック回帰を採用する。
- ・FastAPIとReactを用い、ローカルで動作する推論システムを構築する。
// Result
ChatGPTで生成した100件のデータを用いた検証において、高いF1スコアを記録した。開発プロセスでは、Codexを活用して迅速な実装を実現している。
- ・f1_micro: 0.924
- ・f1_macro: 0.9115
- ・Codexにより、要件定義からフロントエンド実装までを短時間で完了した。
Senior Engineer Insight
> プロトタイプとしての完成度は高いが、実運用には課題が多い。まず、生成AIによるデータは分布が偏るため、実データでの検証が必須だ。また、運用時には入力データの分布シフトや予測精度の監視(MLOps)が不可欠となる。さらに、累積テキストによる特徴量生成は、会話が長くなるほど計算コストが増大する点に留意すべきである。