概要
文章の特徴から作家を判別する、という一つの問題を最初から最後まで追いながら、 データ分析と機械学習の一通り(数える・比べる・分ける・当てる・疑う)を学ぶ教科書です。 各章では、ありがちな間違いを実際に実行し、数字がどれだけ歪むかを測ってから正します。 アンチパターン61箇所と定石35箇所を巻末に一覧にしてあり、Tips集としても引けます。
題材は青空文庫の近代文学8名74作品と、ライトノベル6シリーズ60区間です。 内容語を使わず、字種の比率・文長の分布・読点の前に来る平仮名という文体の特徴だけを数値にして、 クラスタリング、著者判定、ジャンル判別を行います。 一つの題材を最後まで追うことで、前処理から評価の落とし穴までを続けて扱えます。 本文中の図と数値は、この実データで実際に測ったものです。
15年あまり、全学向けのデータサイエンス科目から他大学の理系向け集中講義まで、 さまざまな授業で使ってきた教材を1冊にまとめ直したものです。 入門の語り口のまま、ところどころ発展的な内容(組成データの対数比変換、 ミンコフスキー不等式、ラグランジュ未定乗数法と固有値問題、高次元空間の幾何など)へ深入りします。 大学初年次から大学院初年級まで、専攻を問わず、自分でデータを分析する人を想定しています。
構成
- 第1章 はじめに --- 問いの立て方、データの偏りと構造
- 第2章 テキストを数える --- Zipf の法則、ポアソン分布、機能語と内容語
- 第3章 特徴を設計する --- 前処理、字種比率、文長分布、読点の癖、正規化、組成データと clr 変換
- 第4章 距離を測る --- 距離の公理、ミンコフスキー、コサイン、標準化の要否、効果量、相関の非推移性
- 第5章 まとまりを見つける --- 階層クラスタリング、k-means、ARI とシルエット
- 第6章 次元を減らす --- PCA、バイプロット、MDS、UMAP/t-SNE、スイスロール、超立方体
- 第7章 著者を当てる --- kNN、線形モデル、決定木、ランダムフォレスト、勾配ブースティング、特徴重要度と SHAP
- 第8章 正しく測る --- 交差検証、層別化、適合率と再現率、ROC/AUC、較正、信頼区間の読み方、学習曲線
- 第9章 罠を避ける --- データ漏洩6種、n-gram の罠、入れ子交差検証、多重テスト、偏りとばらつき、次元の呪い、生成AIの罠
- 第10章 学習された表現と比べる --- 手作りの特徴、埋め込み、生テキストを入力する深層モデル
- 第11章 ジャンルを分ける --- 1特徴で解ける問題、交絡、閉世界仮定と「該当なし」
- 付録 marimo教材の使い方・高次元空間の幾何・不偏性をめぐる補足・参考文献・アンチパターンと定石の一覧・索引
本書で実測するアンチパターンの例
| やってしまいがちなこと | 実測すると |
|---|---|
| データ全体で標準化してから、訓練用とテスト用に分ける | 正解ラベルは渡していないのに、テストデータの分布が訓練に混ざる。人工例では、これだけで正解率が0%から100%に変わる |
| 著者と無関係な乱数をたくさん作り、全データを見て「著者とよく対応する列」を選んでから交差検証 | 何も当たらないはずの乱数で、最頻クラスを答え続けるだけの基準線の2倍の正解率が出る。選択を交差検証の内側に入れると基準線まで戻る |
| 長編の各巻を別々の作品として扱い、無作為に分けて交差検証 | 同じ長編の別の巻が訓練とテストの両方に入る。長編ごとに分け直すと正解率が下がる。著者とシリーズが1対1に対応するライトノベルでは、正解率が1から0になる |
| 設定をたくさん試して、最も良かった正解率を報告する | 情報のない乱数でも、平均は基準線を下回るのに、最良の1つだけなら基準線を上回る |
| 平仮名の比率と漢字の比率の強い負の相関を「漢字を多用する作家は平仮名を控える」と読む | 平仮名+片仮名+漢字=1 なので、一方が増えれば他方は減るしかない。合計が固定された比率どうしの相関は、それだけでは何も示さない |
marimo教材
本書の流れを1本で追う通し教材と、個別の実験用のノートブック4本、 それらが読む特徴量ファイルを配布しています (antipattern-ds-notebooks.zip、約1MB)。 通し教材は、青空文庫の本文を実際に数えるところから始めて、特徴の設計、距離と標準化、 デンドログラムと k-means、PCA とバイプロット、交差検証、ジャンル判別まで、 ライトノベルを含む134作品で本書の章順に進みます。 個別のノートブックでは、次元削減の地図と近傍の比較、k-means の反復、分類のしきい値、 漏洩の対照実験を、スライダーや選択欄で条件を変えながら試せます。
uv を入れたうえで、 展開したフォルダで次を実行するとブラウザに教材が表示されます(コードは折りたたんであり、開いて読めます)。
uvx marimo run --sandbox --include-code 00_from_text_to_authors.py
ライトノベルの本文は著作権が存続しているため、本文からは復元できない特徴量のみを扱っています。 近代文学の本文は、通し教材で数える4作品だけを青空文庫の奥付つきで同梱しています。
改訂履歴
- 1.2.0(2026年9月7日)・263ページ
- 内容の点検結果を反映。第3章(組成データ)、第8章(信頼区間)、第9章(n-gram、特徴選択の漏れ)の 実験と説明を中心に、第2・6・10・11章の説明を修正。
- 1.1.1(2026年9月6日)・263ページ
- 初期の公開版。
ライセンスと引用
本文・図版はクリエイティブ・コモンズ表示 4.0 国際ライセンス (CC BY 4.0)、 付属教材のコードは MIT License で提供します。 出典を表示すれば、複製・再配布・改変・授業や出版での利用を自由に行えます。 近代文学の本文は青空文庫に拠ります(すべてパブリックドメイン作品)。
久保山哲二『アンチパターンで学ぶデータ分析 --- 作家の判別を題材に』 バージョン1.2.0、2026年、CC BY 4.0。