【要約】gzipでテキスト分類(圧縮距離NCD+kNN)を73記事で追試——93.8%は出るが、文字数だけでも89.2%出た [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
筆者が、先行研究「gzipがBERTに勝つ」の妥当性を検証する際、評価手法の不備とデータの性質に直面した。
- ・k=2のkNNにおけるタイブレーク処理が、実質的に「top-2精度」として計算されていた。
- ・このバグにより、多クラス分類において精度が数ポイント不当に高く報告されていた。
- ・また、テキストの「内容」ではなく「文字数」が分類の決定要因となる交絡の懸念があった。
// Approach
筆者は、Pythonのzlibを用いてNCDを実装し、自身のブログ記事を用いた比較実験を行った。
- ・zlib(DEFLATE圧縮、レベル9)により、テキスト間の正規化圧縮距離を算出。
- ・leave-one-out法を用い、2クラス分類および6クラス分類の精度を測定。
- ・TF-IDFを用いた手法を対照群として、NCDの優位性を検証。
- ・意図的にバグを含む評価コードを作成し、精度の水増し幅を実測。
// Result
筆者は、NCDの性能とバグの影響、および文字数による交絡を定量的に示した。
- ・NCD+1NNは2クラス分類で93.8%を記録したが、TF-IDFには及ばなかった。
- ・バグによる精度水増しは、タスクにより1.5〜4.5ポイントであった。
- ・「本文の文字数」のみの閾値分類でも89.2%の精度が出ており、NCDも長さの交絡を排除できていない。
Senior Engineer Insight
> 実戦投入には「交絡」への警戒が不可欠だ。NCDは学習不要で実装が容易だが、本実験が示す通り、データの「長さ」というノイズに極めて脆弱である。大規模トラフィックを扱う現場では、意図しない特徴量が判断基準になることは致命的な誤判断を招く。また、圧縮器のウィンドウサイズ制限など、計算資源の特性が結果を左右する点も忘れてはならない。プロトタイプとしては優秀だが、本番環境ではTF-IDFやTransformer系による堅牢な特徴量設計を優先すべきだ。