章の構成(ツリー構造)
第2章: 機械学習(ニューラルネットワーク以前の手法とその原理)
├── 2.1 現代における「古典的」機械学習の立ち位置
│ ├── 2.1.1 ディープラーニング万能論の誤解
│ ├── 2.1.2 非構造化データとテーブルデータ:明確な棲み分け
│ └── 2.1.3 Kaggleが証明するアンサンブル学習の圧倒的実力
├── 2.2 ロジスティック回帰:深層学習の「最小単位」にして現役の万能薬
│ ├── 2.2.1 名前に反した「分類」タスクと、線形回帰の限界
│ ├── 2.2.2 シグモイド関数:無限の積和を0から1の「確率」に押し込める魔法
│ ├── 2.2.3 誤差関数の進化:MSEから交差エントロピー(Cross-Entropy)へ
│ └── 2.2.4 人工ニューロンとの構造的完全一致と、実務で愛される「解釈性」
├── 2.3 決定木(Decision Tree):人間の思考を模倣する直感的なアルゴリズム
│ ├── 2.3.1 ルールベースの条件分岐と「情報利得(ジニ不純度・エントロピー)」
│ ├── 2.3.2 空間を「直線」ではなく「箱」で区切る非線形アプローチ
│ └── 2.3.3 単体モデルの限界:訓練データに縛られる「過学習」の罠
├── 2.4 アンサンブル学習の夜明け:ランダムフォレストの圧倒的堅牢性
│ ├── 2.4.1 弱点を補い合う「三人寄れば文殊の知恵」(バギングの思想)
│ ├── 2.4.2 ランダム性の導入:ブートストラップサンプリングと特徴量のランダム選択
│ └── 2.4.3 チューニング不要の強力なベースラインモデル
└── 2.5 勾配ブースティング(GBDT):極限まで精度を追求する直列的アプローチ
├── 2.5.1 前の木が残した「誤差(勾配)」を次の木が修正する(ブースティングの思想)
├── 2.5.2 XGBoost:決定木と微分の融合、そして計算の並列化による覇権
├── 2.5.3 LightGBMとCatBoost:メモリ効率の極限化とカテゴリ変数への特化
└── 2.5.4 まとめ:データの性質を見極め、最適な武器を選択する
第2章: 機械学習(ニューラルネットワーク以前の手法とその原理)
2.1 現代における「古典的」機械学習の立ち位置
機械学習の歴史とアルゴリズムを学ぶにあたり、現在私たちがどのような時代に立っているのかを正確に認識しておく必要がある。現代は、間違いなくディープラーニング(深層学習)の時代である。ニュースを見ればAIが流暢な文章を生成し、人間を凌駕する精度で画像を認識し、複雑なゲームで世界チャンピオンを打ち破る様子が連日報じられている。これらのブレイクスルーの根底には、すべて多層のニューラルネットワーク(NN)が存在する。
この華々しい活躍を目にすると、「もはやニューラルネットワークさえあれば、他の古いアルゴリズムを学ぶ必要はないのではないか」という疑問を抱くかもしれない。しかし、それはデータ分析の現場を知らない者の完全な誤解である。
2.1.1 ディープラーニング万能論の誤解
実務の現場やデータ分析の最前線において、ニューラルネットワーク「以前」に確立された古典的な機械学習手法は、決して過去の遺物ではない。むしろ、特定の領域においては今なお「最強の武器」として君臨し続けている。
ニューラルネットワークは確かに強力だが、万能薬ではない。その学習には膨大な量のデータと、GPUをはじめとする巨大な計算資源(コンピューティングパワー)が必要不可欠である。さらに、モデルの内部構造があまりにも複雑であるため、「なぜその予測結果に至ったのか」を人間が論理的に説明することが極めて困難であるという「ブラックボックス問題」を抱えている。
一方、本章で解説するロジスティック回帰や決定木ベースのアルゴリズム群は、計算コストが圧倒的に低く、少ないデータからでも効率的に学習でき、何より予測の根拠を人間が解釈しやすいという強みを持っている。
2.1.2 非構造化データとテーブルデータ:明確な棲み分け
なぜ古典的手法が今もなお生き残っているのか。その答えは、対象とする「データの性質」による明確な「棲み分け」が存在するからである。
画像(ピクセルの配列)、音声(波形データ)、自然言語(単語の連続)といったデータは**「非構造化データ」**と呼ばれる。これらのデータは、どこに重要な情報が隠れているかを人間が事前に定義することが難しい。ニューラルネットワークは、この非構造化データの中から、自律的に「特徴(パターンのうねり)」を抽出することにおいて絶対的な優位性を持っている。
しかし、世の中に存在するデータはそれだけではない。顧客の年齢、購買履歴、商品の価格、アクセス日時などが、Excelやデータベースの表のように整然と列と行に並んだデータを**「構造化データ(テーブルデータ)」**と呼ぶ。金融機関の与信審査、小売業の需要予測、医療における患者の診断記録など、実社会のビジネス課題の大部分は、このテーブルデータを分析することによって解決される。
そして驚くべきことに、このテーブルデータにおいては、特徴量同士の複雑な条件分岐を捉えることに長けた「決定木ベースのアンサンブル学習(GBDT系アルゴリズムなど)」が、ニューラルネットワークと同等、あるいはそれ以上のパフォーマンスを叩き出すことが珍しくないのだ。
2.1.3 Kaggleが証明するアンサンブル学習の圧倒的実力
この事実を最も如実に証明しているのが、世界中の優秀なデータサイエンティストが予測精度を競い合う世界最大のデータ分析コンペティションプラットフォーム「Kaggle(カグル)」である。
画像認識や自然言語処理のコンペティションでは、当然のように最新のディープラーニングモデルが上位を独占する。しかし、画像やテキストを含まない純粋なテーブルデータのコンペティションに目を向けると、状況は一変する。上位陣の解法は、未だにXGBoost、LightGBM、CatBoostといった「勾配ブースティング」と呼ばれる手法の巧妙な組み合わせ(アンサンブル)で占められているのである。
トップクラスのデータサイエンティストたちは、「最新の手法が常に最良の手法ではない」という真理を熟知している。彼らはディープラーニング一辺倒になるのではなく、目の前にあるデータの性質を見極め、自らの武器庫から最も切れ味の鋭い道具を適切に選択している。本章の目的は、あなたの武器庫に、時代遅れどころか第一線で戦い続けるための「最強の古典的武器」を揃えることである。
2.2 ロジスティック回帰:深層学習の「最小単位」にして現役の万能薬
第1章で学んだ線形回帰は、連続する数値を予測する「回帰タスク」のための手法であった。これに対して、データがどのクラスに属するかを予測する「分類タスク」の最も基礎的かつ重要なアルゴリズムが**ロジスティック回帰(Logistic Regression)**である。名前に「回帰」と付いているため初学者は混乱しやすいが、実態は分類アルゴリズムである点に注意が必要だ。
2.2.1 線形回帰の限界と分類へのアプローチ
例えば、「メールの文章に含まれる特定の単語の出現回数」などのデータから、そのメールが「迷惑メール(1)」か「正常なメール(0)」かを判定する二値分類タスクを考えてみよう。
この問題を、前章の線形回帰()で無理やり解こうとすると不都合が生じる。線形回帰の出力は から までのあらゆる値を取る可能性があるため、出力が「以上なら迷惑メール」と閾値を設定したとしても、出力が「」や「」といった値になった場合、それをどう解釈すべきかが不明瞭になる。また、外れ値(極端に大きな値を持つデータ)に直線が強く引っ張られ、分類の境界線が大きく歪んでしまうという致命的な弱点もある。
分類タスクにおいて我々が本当に知りたいのは、そのデータが「クラス1(迷惑メール)に属する確率」である。確率は必ず から の間に収まらなければならない。
2.2.2 シグモイド関数:無限の積和を0から1に押し込める魔法
そこで、線形回帰で計算した「積和()」の出力を、 から の範囲に綺麗に押し込めるための変換器を通すというアイデアが生まれた。この変換器として用いられるのが**シグモイド関数(Sigmoid Function)**である。
シグモイド関数 は、以下のような数式で定義される( は自然対数の底であるネイピア数)。
この関数は、 の値が大きくなればなるほど出力は に近づき、 の値が小さく(マイナスに)なればなるほど出力は に近づく。そして のときはちょうど となる美しいS字カーブを描く。
ロジスティック回帰では、線形回帰の出力 をこのシグモイド関数に入力する。
これにより、出力 を「データ がクラス1に属する確率」として数学的に自然に扱うことができるようになったのである。
2.2.3 誤差関数の進化:交差エントロピー(Cross-Entropy)へ
出力が確率になったことで、前章で用いた平均二乗誤差(MSE)は最適な誤差関数ではなくなる。確率の予測において、正解が1であるときに0.1と予測した場合のペナルティを、MSEよりもはるかに厳しく評価する仕組みが必要だ。
そこで分類タスクで導入されるのが**交差エントロピー誤差(Cross-Entropy Loss)**である。データが 個ある場合の二値分類における交差エントロピー誤差 は以下の式で表される( は正解ラベルの または 、 は予測確率)。
一見複雑に見えるが、正解 が のときは左側の項()だけが残り、予測確率 が に近いほど誤差は に近づき、 に近いほど無限大のペナルティを与える構造になっている( のときは右側の項だけが残る)。
学習のプロセス自体は第1章と全く同じである。この交差エントロピー誤差関数を、パラメータ について偏微分し、勾配降下法を用いて誤差が最小になる(最も確率の予測精度が高くなる)最適なパラメータを探索していく。
2.2.4 人工ニューロンとの構造的完全一致と、実務で愛される「解釈性」
ここで特筆すべき重要な事実がある。この「入力の積和を取り、シグモイド関数などの非線形な関数(活性化関数)で変換して出力する」という一連の数学的構造は、後に登場するニューラルネットワークを構成する最小単位(単一の人工ニューロン、またはパーセプトロン)の数学的モデルと完全に一致しているのである。
つまり、ロジスティック回帰の原理を理解することは、巨大な深層学習モデルの根源的なメカニズムを理解することに直結する。
さらに、ロジスティック回帰は単なる「古いNNの一部」ではない。算出された重みパラメータ を見ることで、「どの変数が確率をどれだけ上げるか(下げるか)」という影響度(オッズ比)を明確に計算できる。この「結果の理由を数学的に説明できる(解釈性が高い)」という特性は、ブラックボックスを嫌う医療の診断支援システムや、金融機関の融資審査において、現在でも第一選択として重宝される最大の理由となっている。
2.3 決定木(Decision Tree):人間の思考を模倣する直感的なアルゴリズム
ロジスティック回帰は強力だが、根本は「直線の式」をベースにしているため、データが直線で綺麗に分割できない場合(非線形な境界線を持つ場合)には対応しきれない。そこで、数式によるアプローチとは全く異なる、条件分岐によって空間を切り分けるアプローチが登場する。それが**決定木(Decision Tree)**である。
2.3.1 空間を「直線」ではなく「箱」で区切る
決定木は、人間が物事を判断するときの思考プロセスをそのままアルゴリズムに落とし込んだような直感的なモデルである。
例えば、「ある顧客が商品を買うかどうか」を予測する場合、決定木はデータの中から最も分類に役立つ条件を探し出し、YES/NOの質問を繰り返していく。 「年齢は30歳以上か?」→YES→「年収は500万以上か?」→NO→「買わない」 このように、条件分岐(ノード)を木の枝のように展開し、最終的な予測結果(葉)に行き着く。
数学的に見れば、これは「特徴量の空間を、軸に平行な直線で繰り返し分割し、複数の長方形(箱)の領域に切り分けている」ことと同義である。
複雑なデータであっても、細かく空間を区切っていけば、非線形な境界線を近似して表現することができる。
2.3.2 分割の指標:「情報利得(ジニ不純度・エントロピー)」
では、アルゴリズムは無数にある特徴量と数値の中から、どのようにして「最適な質問(分割の条件)」を見つけ出しているのだろうか。
ここで用いられるのが**「不純度(Impurity)」**という概念である。不純度とは、あるデータの集団の中に、異なるクラス(例:買う人と買わない人)がどれだけ混ざり合っているかを示す指標だ。完全に半々で混ざっている状態が最も不純度が高く、全員が同じクラスである状態が不純度ゼロとなる。代表的な指標として「ジニ不純度」や「情報エントロピー」がある。
決定木の学習アルゴリズムは、すべての変数のすべての分割候補を計算し、「分割前と分割後で、最も不純度が大きく減る(これを情報利得が最大になると呼ぶ)」条件を貪欲に探し出し、枝を分岐させる。これをあらかじめ設定した深さに達するか、不純度がゼロになるまで繰り返すのである。
2.3.3 単体モデルの限界:訓練データに縛られる「過学習」の罠
決定木は、直感的に分かりやすく、カテゴリ変数(男女などの文字列データ)の扱いや、欠損値のあるデータに対しても強いという優れた特性を持つ。しかし、単体の決定木には致命的な弱点が存在する。それは**「過学習(Overfitting)」**を起こしやすいことだ。
過学習とは、手元の訓練データの細かなノイズや外れ値までを過剰に学習してしまい、未知の新しいデータに対する予測精度(汎化性能)が著しく低下してしまう現象である。決定木は、制限を設けなければ、すべての訓練データを100%正解できるまで無限に枝を分岐させ、空間を細かく刻み続けてしまう。結果として出来上がるのは、訓練データにしか通用しない、いびつで複雑すぎるルールセットである。
この単体決定木の弱点を克服し、実用レベルの圧倒的な性能を引き出すために考案されたのが、次のセクションで解説する「アンサンブル学習」という強力なフレームワークである。
2.4 アンサンブル学習の夜明け:ランダムフォレストの圧倒的堅牢性
前節で述べた通り、単体の決定木は訓練データに過剰に適合してしまう「過学習」を起こしやすい。複雑なデータに対して、1本の木だけで完璧なルールを作ろうとすると、どうしてもノイズまで記憶した歪なモデルになってしまうのだ。
この問題を解決するために登場したのが**「アンサンブル学習(Ensemble Learning)」**である。アンサンブルとはフランス語で「一緒に」や「全体」を意味し、機械学習においては「複数のモデル(弱学習器と呼ぶ)を組み合わせて、1つの強力なモデルを作り上げる」というアプローチを指す。
2.4.1 弱点を補い合う「三人寄れば文殊の知恵」(バギングの思想)
アンサンブル学習の代表的な手法であり、決定木をベースにした最も有名なアルゴリズムが**ランダムフォレスト(Random Forest)**である。フォレスト(森)という名の通り、この手法は多数の決定木(木)を同時に構築し、それぞれの予測結果の「多数決(回帰の場合は平均)」をとることで最終的な予測を行う。
「出来の悪い決定木をいくつ集めても、結果は同じではないか」と思うかもしれない。しかし、ここに統計学の面白い性質がある。個々の木がそれぞれ「異なる間違い」をする場合、それらの意見を多数決で統合すると、間違いが互いに相殺され、全体としての予測精度が飛躍的に向上し、かつ過学習しにくくなるのである(これを「バリアンスの低減」と呼ぶ)。まさに「三人寄れば文殊の知恵」の数学的実践である。
この「独立した複数のモデルを作り、並列に予測させて統合する」というアンサンブルの手法を**バギング(Bagging: Bootstrap Aggregating)**と呼ぶ。
2.4.2 ランダム性の導入:ブートストラップサンプリングと特徴量のランダム選択
バギングを成功させるための絶対条件は「それぞれの決定木が、互いに異なる多様な個性を持っていること」である。すべて同じデータ、同じ条件で木を作れば、全く同じ木が何百本もできるだけで意味がない。
ランダムフォレストは、その名の通り「2つのランダム性」を意図的に導入することで、木に多様性を持たせている。
- データのランダム抽出(ブートストラップサンプリング) 元の訓練データから、ランダムに重複を許して(同じデータを何度も選んでよい条件で)データを抽出し、木の本数分だけ「少しずつ異なる訓練データのセット」を擬似的に作り出す。
- 特徴量のランダム選択 各決定木が枝を分岐させる際、すべての特徴量(変数)から最適な条件を探すのではなく、「ランダムに選ばれた一部の特徴量」の中だけで最適な分割を探させる。
この2つのランダム性により、ある木は「年齢と年収」に注目した木になり、別の木は「アクセス頻度と過去の購買額」に注目した木になる。それぞれが偏った知識を持つ「専門家」となり、彼らの意見を統合することで、ノイズに極めて強く、一部のデータ欠損にも動じない堅牢な森が完成する。
2.4.3 チューニング不要の強力なベースラインモデル
ランダムフォレストの最大の実務的メリットは、「細かいパラメータ調整(ハイパーパラメータチューニング)を行わなくても、デフォルトの設定でいきなり高い精度が出やすい」という点にある。
ニューラルネットワークや後述する勾配ブースティングは、学習率や構造の深さなどを慎重に調整しなければ全く学習が進まないことがある。しかしランダムフォレストは、とりあえずデータを入れて「木を100本作る」と指定するだけで、そこそこ優秀な結果を叩き出してくれる。そのため、未知のデータセットを分析する際の「最初の基準(ベースライン)」として、現在でもデータサイエンティストに最も愛用されているアルゴリズムの一つである。
2.5 勾配ブースティング(GBDT):極限まで精度を追求する直列的アプローチ
ランダムフォレストは強力で堅牢だが、「各木が独立して予測を行い、最後に多数決をとる」という並列的な構造上、精度の限界(天井)が存在する。この天井を打ち破り、テーブルデータにおいて極限まで予測精度を高めるために考案されたもう一つのアンサンブル学習が**勾配ブースティング(GBDT: Gradient Boosting Decision Tree)**である。
2.5.1 前の木が残した「誤差」を次の木が修正する(ブースティングの思想)
並列に木を作るバギングに対し、ブースティングは**直列(順番)**に木を作っていくアプローチを取る。
1本目の決定木を作り、予測を行う。当然、最初の木だけでは予測しきれない「誤差(正解とのズレ)」が生じる。 ここで2本目の決定木は、元の目的変数を予測するのではなく、「1本目の木が出した『誤差』」を目的変数として予測するように学習する。 さらに3本目の決定木は、「1本目と2本目を足し合わせてもまだ残っている『誤差』」を予測する。
(は全体の予測モデル、は新しく追加する決定木、は学習率を表す)
これを何百回と繰り返すことで、前の木が間違えた苦手な部分を、次の木が順番に補完していく。第1章で学んだ「誤差を微分して(勾配を求めて)少しずつ正解の谷底へ下っていく勾配降下法」の概念を、パラメータの数値ではなく「決定木という関数そのもの」を使って実行しているため、「勾配(Gradient)」ブースティングと呼ばれる。
ランダムフォレストが「個性がバラバラな専門家の多数決」だとすれば、GBDTは「前の職人が残した微細な削り残しを、次の職人が少しずつ丁寧に削り取っていくリレー作業」と言える。
2.5.2 XGBoost:決定木と微分の融合、そして計算の並列化による覇権
GBDTの理論自体は古くから存在したが、決定木を順番に作るという特性上、計算時間がかかりすぎるという弱点があった。このGBDTをシステムレベルで極限まで最適化し、世界を席巻したライブラリが**XGBoost(Extreme Gradient Boosting)**である。
XGBoostは、単純な一次微分(勾配)だけでなく、二次微分(曲率)まで用いてより正確に谷底の方向を計算する数学的拡張を行った。さらに、直列処理であるはずのGBDTにおいて、「分岐条件の探索」という最も重い計算部分をアルゴリズムの工夫で並列化することに成功した。これにより、高速かつ圧倒的な予測精度を実現し、Kaggleなどのコンペティションで上位を独占する「テーブルデータの覇者」となった。
2.5.3 LightGBMとCatBoost:メモリ効率の極限化とカテゴリ変数への特化
XGBoostの登場以降も、GBDTの進化は止まらない。現在実務でXGBoostと並び、あるいはそれ以上に使用されている2つの派生アルゴリズムを紹介する。
1つは、Microsoftが開発したLightGBMである。データ量が数百万、数千万行と膨大になった場合、XGBoostでも計算とメモリ消費が限界を迎える。LightGBMは、連続する数値を「ヒストグラム(いくつかの階級のまとまり)」に分割して計算を劇的に軽くする技術や、誤差の大きいデータだけを抽出して効率よく木を成長させる(Leaf-wise growth)技術を導入した。これにより、精度を落とすことなくXGBoostの数倍〜十数倍の高速化とメモリ節約を実現し、現在の大規模データ分析の事実上の標準(デファクトスタンダード)となっている。
もう1つは、ロシアのYandexが開発したCatBoostである。これは名前の通り「カテゴリ変数(Categorical features:商品名、都市名などの文字列データ)」の処理に特化したアルゴリズムである。通常、機械学習モデルにカテゴリ変数を入れる際は、事前に数値への変換(エンコーディング)という面倒な前処理が必要だが、CatBoostは内部で自動的かつ極めて効果的にこれを処理してくれる。また、過学習を防ぐ独自の左右対称な木の構造を持ち、パラメータ調整をほとんど行わずとも、カテゴリ変数が多いデータセットに対して最強クラスの精度を叩き出す。
2.5.4 まとめ:データの性質を見極め、最適な武器を選択する
第2章の最後に改めて強調したいのは、「常に最新・最強のアルゴリズムが存在するわけではない」という事実である。
- 結果の理由を人間が論理的に説明し、因果関係を解釈する必要がある場合は、ロジスティック回帰が適している。
- データの前処理を手短に済ませ、とりあえずの精度(ベースライン)を即座に確認したい場合は、ランダムフォレストが頼りになる。
- 大量のテーブルデータが与えられ、何よりも「予測精度の限界」を追求したい場合は、LightGBMやCatBoostといったGBDT系アルゴリズムが最強の武器となる。
- そして、画像や自然言語などの非構造化データから未知のパターンを抽出する際には、次章以降で解説する**ニューラルネットワーク(ディープラーニング)**の出番となる。
データサイエンティストの真の価値は、単に複雑なコードを書けることではない。目の前にある課題とデータの性質を深く理解し、これらの古典的アプローチから最新の手法までを含む多様な選択肢の中から、最も適切で切れ味の鋭いアルゴリズムを「選択し、組み合わせる」ことにあるのだ。