応用機械学習の世界へようこそ!

こんにちは!CS2のカリキュラムの中でも特にエキサイティングな分野へようこそ。これまでの章では、さまざまなモデルの背後にある理論を学んできましたね。ここでは、その理論を実際にソフトウェア(Rなど)を使ってどのように活用するかを見ていきます。特に、教師あり学習(Supervised Learning)に焦点を当てます。

教師あり学習は、生徒(コンピュータ)が先生(データ)から学ぶ様子をイメージしてみてください。先生が答え(ラベル)を与え、生徒は後で新しい問題に正しく答えられるようにパターンを見つけ出そうとします。保険金の支払額を予測するにせよ、契約者が契約を更新するかどうかを判断するにせよ、この章は実務をこなすためのロードマップとなります。

1. 2つの大きな課題:回帰と分類

教師あり学習において、すべての問題は大きく分けて2つのカテゴリーのいずれかに分類されます。自分がどちらを扱っているのかを知ることが、適切なソフトウェアツールを選ぶための第一歩です。

回帰(数値を予測する)

予測したい出力が連続的な数値である場合、回帰(Regression)を使用します。
例: 自動車保険の請求額の正確な金額を予測する。
例え: 明日の気温を予測する。20.5度、21.2度など、数値は無限にあり得ますね。

分類(カテゴリーを予測する)

出力がラベルやカテゴリーである場合、分類(Classification)を使用します。
例: 生命保険の加入希望者が「高リスク」か「低リスク」かを予測する。
例え: メールを「迷惑メール」か「そうでないメール」かに仕分ける。

ちょっとしたコツ: 指を折って数えられるような答え(Yes/No、赤/青/緑)であれば、通常は分類です。一方で、価格や年齢のように無限の可能性がある場合は、回帰となります。

2. ソフトウェアにおける一般的なワークフロー

使用するアルゴリズムが何であれ、ソフトウェア上でのプロセスには標準的な「レシピ」があります。技術的に聞こえるかもしれませんが、心配はいりません。料理のレシピに従うのと同じですよ!

ステップ1:データ準備
ソフトウェアにはきれいなデータが必要です。これには、欠損値の処理や、コンピュータが変数を理解できるようにするための処理(「男性/女性」を0や1に変換するなど)が含まれます。

ステップ2:データの分割(学習用 vs テスト用)
これは非常に重要です!データを以下の2つのセットに分割します。
1. 学習セット(Training Set): モデルがパターンを学習するために「勉強」するデータ。
2. テストセット(Test Set): モデルが実際にどれくらい機能するかを確認するための、未知のデータを用いた「期末試験」。

ステップ3:モデルの適合(フィッティング)
ここで、決定木やGLMなどのアルゴリズムを学習データに適用するようソフトウェアに指示を出します。

ステップ4:予測と評価
適合させたモデルを使ってテストセットの予測を行い、その予測値と「実際の」答えを比較して、どれだけ正解できたかを確認します。

重要なポイント: 学習に使用したデータでモデルをテストしてはいけません。それは学生に前夜に試験問題を見せてしまうようなものです。これでは学習ではなく、単なる暗記になってしまいます!

3. 主要な教師あり学習手法

CS2のカリキュラムでは、ソフトウェアで実装可能な手法がいくつか紹介されています。主要なものを整理しましょう。

一般化線形モデル(GLM)

GLMは、アクチュアリーの世界における「信頼の老舗」です。標準的な線形回帰を拡張し、件数や二値結果など、さまざまなタイプのデータを扱えるようにしたものです。
ソフトウェアでの実装: 通常、分布(請求件数に対するポアソン分布など)とリンク関数(予測子と平均値を関連付ける関数)を選択する必要があります。

決定木

決定木(Decision Tree)はフローチャートのように見えます。ソフトウェアは、最も多くの情報を提供する特徴量に基づいてデータを「分割」します。
例え: 「20の質問」ゲーム。(運転者は25歳以上ですか?Yesなら左へ、Noなら右へ。)
一般的な分割基準:
- 回帰の場合:残差平方和(RSS)
- 分類の場合:ジニ不純度(Gini Impurity)またはエントロピー

ランダムフォレストとブースティング

時には1本の木では不十分なことがあります。そこで「アンサンブル」手法を用いて、多数の木を組み合わせます。
- ランダムフォレスト: 独立して多くの木を作り、その平均(回帰)や多数決(分類)をとります。これはバギング(Bagging)と呼ばれます。
- 勾配ブースティング(Gradient Boosting): 木を順番に作成します。新しい木が、前の木が犯した間違いを修正しようと試みる手法です。

ニューラルネットワーク

人間の脳を模した手法で、「ニューロン」の層で構成されています。
構造: 入力層 -> 隠れ層 -> 出力層。
複雑なパターンに対して非常に強力ですが、なぜ特定の予測を行ったのかを正確に理解するのが難しいため、「ブラックボックス」になりがちです。

知っていましたか? ニューラルネットワークは流行していますが、構造化されたテーブルデータを用いた多くのアクチュアリー業務では、勾配ブースティングマシンの方が同等以上の成果を出すこともよくあります!

4. パフォーマンスの測定:ソフトウェアはうまく機能したか?

ソフトウェアがモデルを出力したら、その「誤差」を測定する必要があります。

回帰(連続値)の場合

予測値(\( \hat{y} \))が実際の値(\( y \))からどれだけ離れているかを確認します。
平均二乗誤差(MSE): \( MSE = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2 \)
平方根平均二乗誤差(RMSE): MSEの平方根をとったもの。出力と同じ単位(ドルなど)になるためよく使われます。

分類(カテゴリー)の場合

混同行列(Confusion Matrix)を使用します。以下の表です。
- 真陽性(TP): 「Yes」と予測し、実際に「Yes」だった。
- 真陰性(TN): 「No」と予測し、実際に「No」だった。
- 偽陽性(FP): 「Yes」と予測したが、実際は「No」だった(第1種の過誤)。
- 偽陰性(FN): 「No」と予測したが、実際は「Yes」だった(第2種の過誤)。

重要な指標:正解率(Accuracy)

\( \text{Accuracy} = \frac{TP + TN}{TP + TN + FP + FN} \)

クイックレビュー: 巨大地震のような稀な事象を予測する場合、正解率は誤解を招く可能性があります。事象が1%しか起こらないなら、常に「No」と答えるモデルを作れば正解率は99%になりますが、何の役にも立ちません!

5. 避けるべき一般的な落とし穴

機械学習にソフトウェアを使うときは、以下の「罠」に注意してください。

1. 過学習(Overfitting): モデルが複雑すぎる場合に起こります。学習データのパターンではなく「ノイズ」まで学んでしまい、学習データでは完璧に見えても、新しいデータでは惨めに失敗します。
2. 未学習(Underfitting): モデルが単純すぎる場合(曲線に直線を当てはめるようなもの)です。学習データとテストデータの両方で性能が低くなります。
3. 特徴量選択: 無関係な変数を入れすぎるとモデルが混乱します。契約者の「好きな色」をデータに入れられるからといって、それが自動車事故のリスク予測に役立つとは限りません!

まとめチェックリスト

次へ進む前に、以下の問いに答えられるか確認しましょう。
- 回帰タスクと分類タスクを区別できるか?
- なぜデータを学習セットとテストセットに分けるのか理解しているか?
- バギング(ランダムフォレスト)とブースティングの基本的な違いを知っているか?
- 回帰指標としてMSE、分類ツールとして混同行列を特定できるか?

盛りだくさんで難しく感じるかもしれませんが、大丈夫です。応用機械学習は科学であると同時に芸術でもあります。これらのモデルが実際に動いている様子をたくさん練習すれば、自然と直感的に理解できるようになりますよ!