機械学習の基礎
- 0.概要
- 1.パターン認識
- 1-1.k近傍法・近傍法
- 1-2.距離計算
- 2.機械学習の分類
- 3.教師あり学習① 線形回帰
- 3-1.Lasso回帰
- 3-2.Ridge回帰
- 4.教師あり学習② ロジスティック回帰
- 5.教師あり学習③ サポートベクターマシン
- 6.教師あり学習④ 決定木
- 6-1.Random Forest
- 6-2.勾配ブースティング
- 7.教師なし学習① 次元圧縮
- 8.教師なし学習② クラスタリング
- 9.機械学習の課題
- 9-1.過剰適合
- 9-2.過少適合
- 10.検証集合
- 10-1.訓練データ・検証データ・テストデータ
- 10-2.交差検証
- 11.性能指標
- キーワードまとめ
Contents
0.章の概要
この章では、機械学習の概要から各手法のアルゴリズム、モデルの評価方法などを解説しています。E資格の試験では、正則化や交差検証、性能評価などのモデルの精度向上に関する内容が重要になります。また、実務で応用するためには、各手法の本質を理解し、どのような目的で使われるのかを把握しておくことも大切です。
※E2024#2~のシラバスより、機械学習の具体的な手法に関する内容が試験範囲外となりました。ただし各手法のアルゴリズムはAIを扱う上で非常に重要であるため、ここでは、それらも含めて解説していきます。
1.パターン認識
学習キーワード: kd-tree、近似最近傍、コサイン距離、ユークリッド距離、マンハッタン距離、Lp距離、マハラノビス距離
概要
パターン認識とは、データの中から特定のパターンや特徴を識別するプロセスを指します。主に機械学習や人工知能の分野で用いられ、画像認識、音声認識、テキスト分類などのタスクに応用されています。機械学習の登場で飛躍的に進歩し、一般的にパターン認識の多くは、教師あり学習を用いています。
k近傍法・近傍法(k-Nearest Neighbors)
k近傍法は新しいデータ(未知のデータ)が与えられたときに、既にラベル付けされたデータの中からそのデータに最も近い「k個の近傍」を見つけ、その中で最も多いクラスに新しいデータを分類する方法です。教師データからモデルのパラメータを推測することはしませんので注意しましょう。
アルゴリズムの手順
- 距離の計算: 新しいデータとすでにあるすべてのデータとの距離(例えばユークリッド距離)を計算します。
- 近傍の選定: 計算された距離を基に、最も近い「k個のデータポイント(近傍)」を選びます。
- クラスの決定: その近傍データの中で多数を占めるクラスを新しいデータのクラスとして予測します。
kの選び方
kの値は分類の精度に大きく影響します。小さすぎると過剰適合(過学習)しやすくなり、ノイズに影響されやすくなります。逆に、大きすぎるとモデルがデータのパターンを十分に捉えられず、全体的に正確性が低下することがあります。一般的に、最適なkの値は試行錯誤やクロスバリデーションによって決定します。
利点
- シンプルで直感的に理解しやすい。
- 学習フェーズが不要で、新しいデータの分類時のみ計算が必要。
欠点
- データが増えるほど全てのデータとの距離を計算する必要があるため、計算コストが高くなる。
- 次元が高くなると性能が低下しやすい(次元の呪い)。
距離計算
距離は、機械学習やパターン認識において、データの類似性や差異を評価するために使用されます。さまざまな距離の定義がありますが、それぞれ異なる特徴や用途に応じて使い分けられます。以下で代表的な距離について説明します。
1. コサイン距離 (Cosine Distance)
コサイン距離は、ベクトル間の角度に基づいた距離です。特にベクトルの方向性を重視するテキスト解析などで利用されます。コサイン距離の算出には、2つのベクトルの類似性を表す尺度「コサイン類似度(Cosine Similarity)」が必要で、以下の式で表されます:
コサイン距離はコサイン類似度を1から引いた値で表されます:
ここで、\(\mathbf{A}\) と \(\mathbf{B}\) は比較する2つのベクトルです。
2. ユークリッド距離 (Euclidean Distance)
ユークリッド距離は、2点間の直線距離を表します。最も一般的な距離の定義です。2点 \(\mathbf{A}\) と \(\mathbf{B}\) のユークリッド距離は次のように計算されます:
ここで、\(x_1, y_1\) は点 \(\mathbf{A}\) の座標、\(x_2, y_2\) は点 \(\mathbf{B}\) の座標です。
多次元データでは以下のように計算されます:
ここで、\(x_i\) と \(y_i\) はそれぞれの次元の座標です。
3. マンハッタン距離 (Manhattan Distance)
マンハッタン距離は、座標軸に沿った移動距離を意味し、各座標の差の総和を2点間距離とする考え方で、次の式で計算されます:
ここで、\(x_1, y_1\) は点 \(\mathbf{A}\) の座標、\(x_2, y_2\) は点 \(\mathbf{B}\) の座標です。
多次元データでは次のように計算されます:
ここで、\(x_i\) と \(y_i\) はそれぞれの次元の座標です。
4. Lp距離 (Lp Norm)
Lp距離は、異なるp値に基づいた一般的な距離です。次のように計算されます:
ここで、\(p\) は距離の種類を決定するパラメータ、\(x_i\) と \(y_i\) はそれぞれの次元の座標です。
5. マハラノビス距離 (Mahalanobis Distance)
マハラノビス距離は、データの分散と相関関係を考慮した距離です。相関が強い方向の距離は実際の距離よりも相対的に短くする方法で、次の式で計算されます:
ここで、\(\mathbf{A}\) と \(\mathbf{B}\) は比較する2つのベクトル、\(\mathbf{\Sigma}\) はデータの共分散行列、\(\mathbf{T}\) は転置行列です。
距離計算まとめ
- コサイン距離: ベクトルの角度に基づく距離で、類似性の評価に向いている。
- ユークリッド距離: 2点間の直線距離で、標準的な距離計算とされる。
- マンハッタン距離: 各次元の絶対差を足し合わせた距離で、格子状の移動や座標軸に沿った問題に適している。
- Lp距離: p次元の一般化された距離で、pによってユークリッド距離やマンハッタン距離に変化する。
- マハラノビス距離: データの相関や分散を考慮した距離で、多次元データや異なるスケールのデータに対して有効。
関連用語の補足
- kd-tree:kd-treeは、高次元空間におけるデータポイントの探索を効率化するためのデータ構造のこと。空間を次元ごとに分割しながら、ポイントを木構造に整理することで、特定のポイントに最も近い点を探す「最近傍探索」が高速に行えるが、高次元データでは性能が低下しやすいという課題がある。(厳密なアルゴリズムは相当難しいので軽く流してOKです。)
- 近似最近傍:近似最近傍探索は、厳密な最近傍探索に比べて高速に近い点を見つけるアルゴリズム。正確さを多少犠牲にしても、処理速度を優先する場面で使われ、kd-treeを含むデータ構造やアルゴリズムを組み合わせて、高次元データでも効率的に最近傍探索が可能。
2.機械学習の分類
学習キーワード: 機械学習、教師あり学習、教師なし学習、半教師あり学習
概要
機械学習は主に次の3つのタイプに分類されます。
- 教師あり学習: 入力データ(特徴量)と出力データ(正解データ)を使って学習し、未知のデータに対して結果を予測するもの
- 教師なし学習: 入力データのみを用いて、データの中からパターンや構造を発見するもの
- 強化学習: 行動と報酬を通じて、最適な行動を学習するもの
教師あり学習(Supervised Learning)
教師あり学習では、入力データ(特徴量)と出力データ(正解データ)をセットで使います。この学習方は、大きく「回帰」と「分類」に分けられます。
回帰
- 目的:連続する数値データを予測すること。
- 出力:連続的な数値
- 例:「明日の気温は何度になるか?」や「この製品の売上はどれくらいか?」といった、具体的な数値を予測する場合に使用します。
分類
- 目的:データをカテゴリーに分類すること。
- 出力:離散的なクラスやカテゴリ
- 例:「この写真に写っているのは犬か猫か?」や「このメールはスパムかどうか?」といったカテゴリを予測する場合に使用します。
要するに、出力データが連続値かカテゴリかによって、どちらの手法を使うかが決まります。
教師なし学習(Unsupervised Learning)
教師なし学習では、出力データを使わずに、入力データのみを用いてデータの構造や法則を見つけます。代表的な手法には「クラスタリング」と「次元削減」があります。
クラスタリング
- 概要:データを類似したグループ(クラスタ)に分ける手法です。似た特徴を持つデータ同士を一つのグループにまとめます。
- 例:顧客を似た購買行動で分類したり、患者データを分析して病気のタイプや進行度合いを推定する場面などで使われます。
次元削減
- 概要:情報をできるだけ失わずに、データの持つ特徴量(次元)を減らし、より簡潔な表現を見つける手法です。次元削減を行うことで、データの複雑さを抑え、計算の効率化や可視化のしやすさを実現します。(※一部の情報が失われるリスクも伴います。)
- 例:主成分分析(PCA)を使って、元の特徴量を少数の新しい特徴に変換し、データの構造を保ちながら圧縮する、など。
半教師あり学習(Semi-Supervised Learning)
半教師あり学習(Semi-supervised Learning)は、少量のラベル付きデータ(正解データ)と大量のラベルなしデータを組み合わせて学習を行う手法です。完全な教師あり学習では、十分なラベル付きデータが必要ですが、ラベル付けにはコストや時間がかかるため、現実的には難しい場合があります。半教師あり学習は、ラベル付けされたデータの不足を補いながら、高精度なモデルを構築できるのが特徴です。
代表的なアプローチを1つ紹介します。
自己学習(Self-training):
- 初めに、ラベル付きデータのみを用いてモデルを訓練し、ラベルなしデータに対して予測を行います。
- 高い信頼度の予測結果をラベル付きデータとして追加し、再度モデルを訓練します。
- このプロセスを繰り返すことで、ラベルなしデータを活用しつつ、モデルを改善します。
半教師あり学習は、ラベル付けのコストが高い状況で特に有効であり、少量のラベル付きデータでも高精度なモデルを作るための強力なアプローチです。
強化学習(Reinforcement Learning)
強化学習は、エージェント(学習者)が環境の中で試行錯誤を繰り返し、報酬を最大化するための最適な行動を学ぶ手法です。エージェントは、行動を選択するたびに「報酬」を得て、その報酬を最大化するために行動方針(ポリシー)を改善していきます。将来的な報酬を考慮して、短期的な利益と長期的な利益のバランスを取ることが重要です。
例:ゲーム(例:将棋、チェス)や、ロボットが障害物を避けて目的地に向かうタスクなどで使われます。
※強化学習は、E資格シラバスの学習キーワードから抜けています。教師あり・教師なし学習よりもアルゴリズムが複雑で理解が難しいため、深入りせずに概念を理解しましょう。
3.教師あり学習① 線形回帰
学習キーワード: ノルム、過少適合、過剰適合、最小二乗法、相関係数、多重共線性、L1正則化、L2正則化
概要
線形回帰(Linear Regression)とは教師あり学習の1つで、ある入力データから出力(目的変数)を予測する際に「直線」で予測するものを指します。
具体的な数式は以下の通りです。
ここで、\( y \) は目的変数、\( x_1, x_2, \ldots, x_p \) は説明変数、\( \beta_0, \beta_1, \ldots, \beta_p \) は回帰係数、そして \( \epsilon \) は誤差項を意味します。説明変数 \( x \) が1つの場合を線形単回帰、2つ以上の場合は線形重回帰と呼びます。
利点
- シンプルで計算が軽く理解しやすい。
- 解釈が容易で、各特徴量の影響を明確に説明できる。(係数が大きいほど結果への寄与度が大きい)
欠点
- 特徴量とターゲット変数が線形関係にある場合にのみ有効。
- 外れ値に影響を受けやすく、モデルの精度が低下する可能性がある。
- 次元が高すぎると過学習(オーバーフィッティング)しやすくなる。
最小二乗法(Least Squares Method)
線形回帰では、最適な回帰係数 \( \beta \) を推定することが目標ですが、その基本的な手法として最小二乗法があります。目的変数 \( y \) と予測値 \( \hat{y} \) との誤差の二乗の合計を最小化することで、回帰係数を求めます。具体的には、次の式を最小化します:
ここで、式上のSSE は二乗和誤差(Sum of Squared Errors)を意味しており、微分効率を考慮して係数1/2がつくこともあります。
正則化(Regularization)
過学習を防ぐために、損失関数に正則化項(罰則項/ペナルティ項)を加えることがあります。重み(回帰係数)は小さい方が過学習を抑えられるため、正則化によりその大きさに罰則をかけることができます。ここでは代表的な正則化の手法を2つ紹介します。
Lasso回帰(L1正則化)
Lasso回帰は、損失関数に対してL1ノルム(絶対値の和)をペナルティとして加えることで、モデルの複雑さを制御します。
ここで、 \(\lambda\) は正則化強度を制御するハイパーパラメータ、 \(\beta_j\) は \(j\) 番目の回帰係数、 \(p\) は回帰係数の総数を表します。
Lasso回帰は、は多くの重み(回帰係数)を0にして不要なパラメータを削除する事が出来ます。
Ridge回帰(L2正則化)
Ridge回帰は、損失関数に対してL2ノルム(二乗の和)をペナルティとして加えます。
ここで、 \(\lambda\) は正則化強度を制御するハイパーパラメータ、 \(\beta_j\) は \(j\) 番目の回帰係数、 \(p\) は回帰係数の総数を表します。
Ridge回帰は、全ての重み(回帰係数)を小さくすることで、多重共線性(Multicollinearity)の問題を軽減し、モデルの安定性を向上させます。
関連用語の補足
- ノルム:ベクトルの大きさや長さを測るための尺度を指します。L1ノルムは絶対値の和、L2ノルムは二乗和の平方根です。
- 過少適合:モデルが学習データのパターンを十分に捉えられず、低精度の状態を指します。(※後ほど細かく解説)
- 過剰適合:モデルが学習データに過剰に適合し、テストデータに対しての性能が低下する状態を指します。(※後ほど細かく解説)
- 相関係数:2つの変数間の線形関係の強さを測る指標で、1から1の範囲で値を取ります。
- 多重共線性:説明変数間に高い相関が存在する状態で、回帰係数の推定が不安定になる現象を指します。
4.教師あり学習② ロジスティック回帰
学習キーワード: ロジット、シグモイド関数、ロジスティック関数、ソフトマックス関数、オッズ/オッズ比
概要
ロジスティック回帰(Logistic Regression)は、2値分類問題を解決するための教師あり学習モデルで、データが特定のクラスに属する確率を予測します。線形回帰と異なり、結果を連続的な数値ではなく、確率を表す0~1で出力するため、シグモイド関数(ロジスティック関数)を用います。また、後にニューラルネットワークの分野で出てくる「単純パーセプトロン」の出力層にシグモイド関数を利用したものが「ロジスティック回帰」になります。
線形回帰の出力(連続値)をシグモイド関数に通すことで確率に変換したものと理解しましょう。
ロジスティック関数とシグモイド関数
「シグモイド関数」は、ロジスティック関数の1つでS字型の曲線を持つ関数です。シグモイド関数は、分類問題に広く使われており、関数を通すことで、出力値が0~1の確率値に変換されます。グラフと数式は以下の通りです。
ここで、\( p \) はある事象が発生する確率(0から1の範囲)を表します。
また、\( z \) は次のように表されます:
$$ z = w_1 x_1 + w_2 x_2 + \cdots + w_n x_n + b $$
- \( x_1, x_2, \cdots, x_n \):特徴量(入力データの特徴)
- \( w_1, w_2, \cdots, w項_n \):重み(各特徴量に対する重要度を示すパラメータ)
- \( b \):バイアス項(モデルの出力に定数として加わる)
- \( e \):自然対数の底(オイラー数、約2.718)
ロジスティック回帰は学習にて適切な重み\( w_1, w_2, \cdots, w_n \)とバイアス項\( b \)を見つけることが目標です。線形回帰の出力(連続値)をシグモイド関数に通すことで確率に変換したものと理解しましょう。
利点
- 説明変数(特徴量)に対するそれぞれの重みがわかるため、説明変数が多い場合に有効、解釈性が高い。
- ハイパーパラメーターが少なく、計算スピードが早い。
欠点
- 線形分離不可能なデータへの適応が難しい。
ロジットとオッズ/オッズ比
ある事象が起こる確率𝑝を起こらない確率1−𝑝で割ったものをオッズと呼び、オッズの対数を取ったものをロジット \( l \) といいます。
また、ロジット \( l \) はモデルの線形関数として次のように表されます:
オッズ比は2つのグループ間でオッズの比率を示す値で、あるグループが他のグループと比べてどれだけ事象が発生しやすいかを評価します。
ソフトマックス関数(Softmax Function)
ロジスティック回帰は2クラス分類に特化していますが、多クラス分類にはソフトマックス関数が使われます。ソフトマックス関数は、複数クラスの確率を同時に求めるための拡張版と認識しましょう。
- \( P(y = i \mid x) \) :特徴量 \( x \) が与えられたとき、クラス \( i \) に属する確率。
- \( z_i \) :クラス \( i \) に対応するスコア(またはロジット)。モデルが出力する値で、各クラスに対するスコアです。
- \( \sum_{j} e^{z_j} \) :全てのクラス \( j \) に対するスコアの指数関数の合計。これにより、確率が0から1の範囲に正規化されます。
5.教師あり学習③ サポートベクターマシン
学習キーワード: サポートベクター、マージン最大化、ハードマージン・ソフトマージン、カーネル法
概要
サポートベクタマシン(Support Vector Machine:SVM)は、「カーネル関数」と「マージン最大化」も用いて次元を増やすことで、非線形データの分割を線形に分割できるようしたアルゴリズムです。特徴空間においてデータポイントを分離する最適な「マージン」を見つけ、回帰や分類を行います。アルゴリズムを理解する上で重要なのは「マージン最大化」と「カーネルトリック」になります。
※詳細のアルゴリズムは非常に難しいため、ここではシラバスに準じ、簡潔に解説していきます。
サポートベクターとマージン最大化
SVMは、データを分離する「超平面(Hyper-Plane)」と呼ばれる境界線を見つけ、その境界から最も近いデータ点(サポートベクター)との距離を最大化します。これがマージン最大化と呼ばれ、分類の精度が向上します。
- \( \mathbf{w} \):超平面の傾きを表す重みベクトル。
- \( \mathbf{x} \):データポイントを表すベクトル。
- \( b \):バイアス項。
ハードマージンとソフトマージン
SVMでは、ハードマージンとソフトマージンのアプローチがあります。ハードマージンはデータが完全に線形分離可能な場合に使用され、境界から外れるデータ点がない場合です。しかし、現実のデータはノイズや外れ値が含まれるため、ソフトマージンが一般的に用いられており、ソフトマージンでは、境界を多少許容しつつ最適な分類を行います。
カーネル法
SVMは線形分離が難しい場合、カーネル法を使用してデータをより高次元にマッピングし、線形分離を可能にします。(この手法をカーネルトリックといいます。)よく使われるカーネルには、RBFカーネル(ガウシアンカーネル)や多項式カーネルがあります。
- \( \phi(\mathbf{x}) \):データを高次元空間にマッピングする関数。
- \( K(\mathbf{x_i}, \mathbf{x_j}) \):データポイント \( \mathbf{x_i} \) と \( \mathbf{x_j} \) のカーネル関数。
利点
- 分類精度が高く、特に少量のデータや高次元データで効果的。
- 非線形データにもカーネル法を使うことで対応可能。
- 過学習のリスクが低い(ソフトマージンの手法をとることが多いため)
欠点
- 大規模データセットでは計算コストが高く、処理に時間がかかることがある。
- ハイパーパラメーター(カーネルの選択や正則化パラメーター)のチューニングが難しい。
6.教師あり学習④ 決定木
学習キーワード: 分類木、回帰木、CART、Gini係数、アンサンブル、バギング、ブースティング
概要
決定木(Decision Tree)は、データをツリー構造で分割し、予測を行うためのモデルです。決定木は以下のように構成されます:
- ノード:データを分割する条件が設定される部分です。根ノード(ルートノード)はツリーの最上部にあり、データ全体に対する最初の分割を行います。
- 枝(エッジ):ノード間の接続を示します。データが特定の条件を満たすかどうかに基づいて分岐します。
- リーフノード:ツリーの末端部分で、予測結果を示します。リーフノードにはクラスラベルや回帰値が設定されます。
アルゴリズム
決定木のアルゴリズムは、以下のステップでデータを分割していきます:
- 最適な分割の選定:各ノードでデータを分割する条件(特徴量と閾値)を選びます。この選定には、Gini係数(CARTアルゴリズム)などの指標が使用されます:
- ツリーの構築:データが完全に分割されるまで、または停止条件(最大深さや最小サンプル数)に達するまで分割を続けます。
- 剪定:過剰適合を防ぐために、ツリーのサイズを調整します。これには、枝を削除することでモデルを簡素化します。
※上図はイメージあり、実際に学習させたモデルではありません。
分類木と回帰木
決定木には2つの主要なタイプがあります:
- 分類木:カテゴリカルな出力を予測します。
- 回帰木:連続値の予測を行います。
回帰木では、訓練時に各リーフノードに分類された各データの平均値を出力することで回帰として扱います。
CART (Classification and Regression Trees)
CARTは決定木の構造を決めるための手段(アルゴリズム)です。データをどのように分割し、どの分割が最適かを決定するプロセスを指します。
CARTの基本的な流れ
- データを2つのグループに分割します。
- 各分割では、「どの特徴量で」「どの値を基準に」分けるかを決定します。この時、分類問題ではGini係数、回帰問題では平均二乗誤差などの基準が使われます。
- 分割を繰り返し、最適な構造のツリーを構築します。
Gini係数
分類問題におけるノードの不純度を測る指標で、ノードがどれだけ純粋であるかを示します。最適な分割を決定するためにGini係数を最小化します。数式は以下の通りです:
ここで、\( p_i \) はノード内のクラス \( i \) の確率です。
Gini係数は0から1の範囲で値を取り、0に近いほど「純粋」、つまりデータが一つのクラスに偏っていることを意味します。一方、1に近いと、データが複数のクラスに分散しており「不純」であることを示します。簡単に言うと、Gini係数が低い分割ほど、データがより一貫しているため、分割の質が良いと判断されます。CARTアルゴリズムでは、このGini係数を最小化するようにデータを分割していきます。
ランダムフォレスト(Random Forest)
ランダムフォレストは、複数の決定木を組み合わせて精度を向上させるアンサンブル学習の手法です。各決定木はブートストラップサンプリング(元のデータセットからランダムにサンプルを抽出して新しいデータセットを作成する方法)で選ばれた異なるデータセットを使って学習します。
利点
- 高い予測精度: 複数の決定木を組み合わせることで、精度が向上し、過学習のリスクが減少する。
- 頑健性: 特徴量のサブセットを使用するため、ノイズや異常値に対して強い耐性がある。
- 計算効率: 並列処理が可能なため、大規模なデータセットでも比較的高速に訓練できる。
欠点
- 解釈性: 多くの決定木を組み合わせるため、モデルの解釈が難しくなることがある。
- パラメータ: パラメーターが多く、チューニングが難しい場合がある。(木の数や使用特徴量の数)
ランダムフォレストでは、「特徴量をランダムに選んで分割を行う」ことで、各決定木が独立して学習します。最終的な予測は、各木の結果を多数決で決める(分類の場合)か、平均化する(回帰の場合)ことで求められます。このアプローチにより、過学習を防ぎモデルの汎化性能が向上します。
一般的にランダムフォレストは、精度が高く、特に大量のデータやノイズが多い状況でも強力なモデルです。
「特徴量をランダムに選んで分割を行う」の補足
通常、決定木では全ての特徴量(例えば、年齢、収入、職業など)から最適な分割点を選んで木を構築します。しかし、ランダムフォレストでは、各決定木が分岐を決定する際に使える特徴量をランダムに選びます。
例えば、もし全てのデータに10個の特徴量がある場合、各決定木はその中から3〜5個程度の特徴量をランダムに選んで、その中から最適な分割を決めます。この手法は、各決定木が独自の判断をし、モデル全体が多様な木の集合になることで、バラツキを抑えて過学習を防ぎ、モデルの精度を高める効果があります。
勾配ブースティング(Gradient Boosting)
勾配ブースティングは、ブースティングと呼ばれる手法の一種で、複数のモデルを順番に作り、前のモデルがうまくいかなかった部分(誤差)を減らすために、次のモデルを訓練していく手法です。具体的には、最初のモデルが予測する結果と実際の結果との誤差(残差)を次のモデルが修正しながら学習を進めます。このプロセスを繰り返すことで、全体として精度の高い予測モデルを作り上げます。
内容が煩雑であるため、具体例を交えながらその手順を解説します。
アルゴリズムの手順
- 初期モデルの構築:まず、最初の単純なモデルを作ります。このモデルは、例えば「データ全体の平均値を予測する」だけのものです。
例:ある家の価格を予測するなら、その地域の家の平均価格を使うようなイメージです。 - 残差の計算:最初のモデルが出した予測と実際の家の価格の差(残差)を計算します。この残差が、「どれだけ予測が間違っていたか」を示します。
例:予測が300万円、実際が350万円なら、残差は50万円です。 - 新しいモデルの訓練:次に、この残差をうまく説明できるモデルを新たに作ります。このモデルは、最初の予測の誤差を補正するために使います。
例:新しいモデルは、家の立地や間取りなどを元に、この50万円の差を埋める予測を行います。 - モデルの更新:新しいモデルの予測を、元のモデルの予測に足します。これによって、元の予測が修正され、より正確な結果が得られるようになります。
例:最初の予測が300万円、新しいモデルの補正予測が+40万円なら、次の予測は340万円となります。 - ステップ3と4の繰り返し:この手順を何度も繰り返します。毎回、前のモデルの誤差(残差)を次のモデルで補正していくことで、予測が少しずつ正確になっていきます。
- 最終予測の決定:最後に、全てのモデルの予測を足し合わせて、最終的な予測を作ります。この方法で、複数のモデルが協力してより良い予測を行います。
例:最初は300万円、次に340万円、さらに最終的には350万円というふうに予測が改善され、最終的に実際の価格に近づきます。
利点
- 高い予測精度: 小さなモデルを逐次的に改善することで、高い精度を得ることができます。
- 柔軟性: さまざまな損失関数や基礎モデル(決定木など)を使うことができます。
欠点
- 計算コスト: モデルを多数訓練するため、計算リソースと時間がかかります。
- 過学習のリスク: モデルの数や学習率を適切に設定しないと、過学習のリスクがあります。
関連用語の補足
- アンサンブル学習:アンサンブル学習は、複数のモデルを組み合わせることで予測精度を向上させる手法です。決定木においては、以下のバギングやブースティングが用いられます。
- バギング:バギングは、データのブートストラップサンプルを用いて複数の決定木を訓練し、それらの予測を平均化または多数決で統合する手法です。代表的なアルゴリズムはランダムフォレストです。
- ブースティング:弱い学習器(決定木など)を逐次的に訓練し、前のモデルが誤分類したデータに重点を置いて次のモデルを改善する手法です。代表的なアルゴリズムにはAdaBoostや勾配ブースティングがあります。
7.教師なし学習① 次元圧縮
学習キーワード: 主成分分析、寄与率、SNE、Crowding Problem、t-SNE
次元圧縮の概要
次元圧縮は、高次元データの特徴やパターンをより少ない次元で表現する手法です。データの冗長性を減らし、計算の効率化や視覚的な理解を容易にする目的で使用されます。特に、可視化やモデルの学習速度向上など、多くの機械学習・データ解析の場面で重要な役割を果たします。
主な次元圧縮の手法には、主成分分析(PCA) や t-SNE などがあり、これらはデータの構造や特性に応じて選択されます。
主成分分析(Principal components analysis)
PCAは、データの次元を削減しつつ、データの分散を最大化する新しい軸(主成分)を見つけ出す手法です。各次元の寄与率(重要度)に基づき、最も情報量が多い軸にデータを投影し、次元を圧縮します。これにより、データの全体的な相関関係を保持しながら、次元の削減を行います。
具体例
例えば、3人の学生のテストの点数(数学、国語、英語の3科目)があるとします。それぞれの点数は次の通りです。
- 学生A: 数学90点、国語85点、英語80点
- 学生B: 数学70点、国語65点、英語60点
- 学生C: 数学50点、国語55点、英語50点
このデータをPCAで次元削減する場合、まずデータの分散を調べ、最も重要な方向(主成分)を見つけます。例えば、英語と国語が似た傾向を持っている場合、英語と国語の2つをまとめて「文系成績」として表現できるかもしれません。そうすると、元々3つあった次元(数学、国語、英語)を「文系成績」と「数学成績」の2次元に圧縮できる可能性があります。
- 固有値: 固有値は各主成分がデータの分散をどれだけ説明できるかを示す値です。固有値が大きいほど、その主成分はデータの重要な特徴を捉えていることを意味します。
- 寄与率: 寄与率は、各主成分が全体の分散のうちどれだけを説明しているかをパーセンテージで示したものです。例えば、第1主成分が全体の70%の分散を説明できる場合、寄与率は70%となります。
- 累積寄与率: 累積寄与率は、複数の主成分が合計でどれだけの分散を説明しているかを示します。例えば、第1主成分と第2主成分の累積寄与率が90%であれば、この2つの主成分だけで全データの90%の情報を保持していることになります。
数式で表すと、次のようになります。
- X: 入力データ
- W: 主成分ベクトル
- Z: 圧縮されたデータ
ここで、\(W\) は共分散行列の固有ベクトルを表します。
利点
- データの全体的な構造を捉えることができる。
- 計算が高速で、大規模データに適している。
欠点
- 非線形なデータ構造を十分に捉えられない。
t-SNE(t-Distributed Stochastic Neighbor Embedding)
t-SNEは、非線形次元圧縮手法で、特に高次元データの可視化に用いられます。t-SNEは、データ点間の局所的な距離を維持しながら、2次元や3次元空間にデータを投影します。
t-SNEが解決しようとする問題にCrowding Problemがあります。これは、高次元空間では距離が広がりやすいのに対し、低次元空間ではその広がりを正確に再現できない現象です。t-SNEは局所的な距離を強調してこの問題を解決します。
利点
- 非線形な次元圧縮が可能で、データのクラスタリングやパターンを可視化しやすい。
- 高次元データを視覚的に表現するのに非常に有効。
欠点
- 計算コストが高く、大規模データに対しては処理時間がかかることがある。
- 結果がランダム性に依存し、再現性が必ずしも高くない。
関連用語の補足
- SNE(Stochastic Neighbor Embedding):SNEは、t-SNEのベースとなった手法です。SNEも次元圧縮を目的としていますが、重なりの問題(overlapping)を抱えており、それをt-SNEが改善しました。
8.教師なし学習② クラスタリング
学習キーワード: k-means、階層的クラスタリング、デンドログラム、ウォード法、群平均法
概要
クラスタリングは、データを類似性に基づいてグループ(クラスター)に分割する教師なし学習の手法です。データに事前のラベルがなくても、データの規則性、グループ構造を発見することが目的です。代表的な手法に k-means クラスタリングや 階層的クラスタリング があります。
k-means法
k-meansクラスタリングは、データを事前に設定した \(k\) 個のクラスターに分ける手法です。アルゴリズムの手順は以下の通りです:
- 初期化:クラスタ数 \(k\) を設定し、データ空間上にランダムに \(k\) 個の初期クラスタ中心(セントロイド)を設定します。
- 割り当てステップ:各データポイントを、最も近いクラスタ中心に割り当てます(ユークリッド距離などの距離指標を使用)。
- 更新ステップ:各クラスタ内のデータポイントの平均を計算し、新しいクラスタ中心を再設定します。
- 繰り返し:クラスタ中心の移動がほとんどなくなるまで、割り当てと更新のステップを繰り返します。
※k-means法を可視化できるサイトがあります。アルゴリズムが非常に分かりやすいので是非ご参考にしてください。
http://tech.nitoyon.com/ja/blog/2013/11/07/k-means/
利点
- 計算が効率的 アルゴリズムがシンプルで、大規模データでも高速に処理可能。
- 解釈が容易: 各クラスターの中心が明確に定義され、結果の解釈がしやすい。
欠点
- クラスタ数 \(𝑘\) の事前指定が必要: 適切なクラスタ数を事前に決めるのが難しい。
- 初期値に依存: 初期のクラスタ中心の選び方によって結果が変わる。(この問題点を改善した手法としてk-means++法があります。)
- 球状のクラスターにのみ適合: 非線形構造のデータには適さないことがある。
階層的クラスタリング(Hierarchical Clustering)
階層的クラスタリングは、データを階層的にグループ分けする手法です。データを少しずつ統合したり、分割したりしてクラスタを形成していきます。クラスタリング結果をデンドログラムと呼ばれる木状の図で表し、クラスタの階層構造を視覚的に理解できます。
階層的クラスタリングには、データを最初は個別に分割し、徐々に統合する 凝集型(ボトムアップ法)と、全データを1つのクラスターとし、徐々に分割する 分割型(トップダウン法)があります。
利点
- クラスタ数を事前に決めなくて良い: k-means法とは異なり、階層的クラスタリングでは事前にクラスタ数を指定する必要がない。
- デンドログラムによる可視化: クラスタの階層的な関係をデンドログラムで視覚的に確認できるため、全体像を把握しやすい。
- 柔軟なクラスタリング: 凝集型や分割型など、異なるアプローチでクラスタを形成できる。
欠点
- 計算コストが高い: 特に大規模データでは計算量が膨大になるため、処理に時間がかかる。
- 一度分割したクラスタの修正不可: 分割や統合の過程が一方向のため、誤ったクラスタを修正することができない。
- ノイズや外れ値に敏感: 外れ値があるとクラスタリング結果に悪影響を与える可能性がある。
ウォード法と群平均法
階層的クラスタリングでは、クラスタ間の距離を計算してデータを分割します。代表的な方法に次の2つがあります:
- ウォード法:ウォード法では、クラスタ内のデータ間の広がりを示す分散に注目します。この方法では、クラスタ間の距離を計算しながら、クラスタ内のデータ間の分散の増加が最小限となるようにクラスタを結合または分割します。分散が小さいほど、データが均質にまとまっているため、バランスの取れたクラスタリングが実現します。
- 群平均法:群平均法では、クラスタ内のすべてのデータペアの距離の平均を基準にクラスタ間の距離を計算します。2つのクラスタを結合する際に、各クラスタ内のデータ間の距離を全て計算し、その平均値を用いてクラスタ間の距離を決定します。この方法は、クラスタ内のデータが均等に広がり、極端なデータの影響を受けにくいのが特徴です。
9.機械学習の課題
学習キーワード: 汎化誤差、訓練誤差、バイアス、バリアンス、正則化、次元の呪い
9-1.過剰適合(Overfitting)
過剰適合は、モデルが訓練データに過度に適応し、ノイズや偶然のパターンまで学習してしまう現象です。この結果、訓練データに対しては高精度の予測ができる一方、未知のデータ(テストデータ)に対しては性能が低下します。主に、モデルが複雑すぎる場合に発生します。
数式で表すと、以下の通りです。
ここで、\(E_{\text{test}}\)はテストデータでの誤差、\(E_{\text{train}}\)は訓練データでの誤差です。
原因
- バリアンスが高い: データの変動に過剰に適応し、訓練データに依存しすぎる。
- 次元の呪い: 特徴量が多すぎると、モデルがデータに過剰適合しやすくなる。
対策
- 正則化: モデルにペナルティを加えて過剰な調整を防ぐ(例:L1やL2正則化)。
- データの増加: 訓練データ量を増やすことで過剰適合のリスクを減らす。
- モデルの簡略化: 複雑すぎるモデルをシンプルにすることで、過剰適合を抑える。
9-2.過少適合(Underfitting)
過少適合は、モデルがデータの本質的なパターンを捉えられず、訓練データでも新しいデータでも低精度な予測をする状態です。モデルが単純すぎる場合に発生し、バイアスが高くなります。
数式で表すと、次のようになります。
ここで、\(E_{\text{test}}\)と\(E_{\text{train}}\)両方が大きい場合、モデルが過少適合していることを示します。
原因
- バイアスが高い: モデルが単純すぎて、データのパターンを捉えられない。
- 不十分なモデル構造: モデルの表現力が不足しているため、十分な予測ができない。
対策
- モデルの複雑化: パラメータ数を増やすか、複雑なモデルを使用する。
- 特徴量の追加: モデルに関連する新しい特徴量を追加する。
バイアス(Bias)とバリアンス(Variance)のトレードオフ
バイアスとは、モデルがデータの複雑なパターンを捉えきれず、予測が全体的にずれてしまうことを指します。一方、バリアンスは、モデルが訓練データに対して過剰に適合し、新しいデータに対する予測が不安定になることを意味します。バイアスが高いと、モデルは過少適合し、バリアンスが高いと過剰適合になります。
機械学習モデルでは、バイアスとバリアンスのバランスを取ることが重要です。モデルの複雑さを調整し、汎化誤差(新しいデータに対する誤差)を最小限にするためには、このトレードオフを理解することが必要です。
以下は、バイアスとバリアンスのトレードオフを示す図です。
左図:モデルが単純すぎてデータを捉えきれておらず、バイアスが高い。
中央図:モデルが複雑すぎて訓練データに過剰に適合し、バリアンスが高い。
右図:バイアスとバリアンスのバランスが取れた理想的な状態。
関連用語の補足
- 汎化誤差: 訓練されたモデルが、未知のデータに対してどの程度の精度で予測できるかを示す誤差。過少適合や過剰適合の両方によって大きくなる可能性がある。
- 訓練誤差: 訓練されたモデルが、訓練データに対してどの程度の精度で予測できるかを示す誤差。過少適合の場合に大きくなる。
- 次元の呪い: 高次元データにおいて、次元数が増えるとデータ間の距離が広がり、学習が難しくなる現象。
- 正則化: モデルの複雑さにペナルティを課すことで、過剰適合を防ぐ技法(例:L1、L2正則化)。
10.検証集合
学習キーワード: 訓練誤差、汎化誤差、ホールドアウト法、k-分割交差検証法
概要
機械学習では、モデルの性能を正確に評価することが非常に重要です。モデルが訓練データで高い精度を出しても、未知のデータに対しても同じ性能を発揮できなければ、そのモデルは実際の問題解決には不十分です。このため、データセットをいくつかの部分に分け、異なる目的で使用します。
10-1. 訓練データ・検証データ・テストデータ
機械学習のプロセスでは、一般的にデータを3つに分けて使用します。それぞれに異なる役割があります。
- 訓練データ(Training Data):モデルに学習させるためのデータ。
- 検証データ(Validation Data):モデルを調整や評価するためのデータ。
- テストデータ(Test Data):最終的なモデルの汎化性能を確認するためのデータ。
この3つのデータセットをうまく使い分けることで、過剰適合を防ぎ、モデルの性能を公平に評価することができます。
10-2. 交差検証(Cross-Validation)
交差検証は、データを効率よく使ってモデルの性能を評価するための方法です。 特に、データが少ない場合に有効で、モデルの過剰適合や過少適合を確認するために役立ちます。代表的な方法は以下の通りです。
- ホールドアウト法(Holdout Method):データを一度だけ訓練データと検証データに分けて、簡易的にモデルを評価します。
- k-分割交差検証法(k-Fold Cross-Validation):データをk個に分け、そのうち1つを検証データ、残りを訓練データとしてモデルを評価します。これをk回繰り返し、結果を平均します。
交差検証を行うことで、データの偏りを減らし、より正確にモデルの性能を評価できます。また、データが少ない場合でも効率的にデータを活用できる点が大きなメリットです。
※実際は最初にテストデータを別で切り分け、その後学習データと検証データに分けます。
これらより、過剰適合を防ぎながら、モデルのパフォーマンスをより正確に評価でき、実際に運用する際にも信頼性の高いモデルを構築することが可能です。
11.性能指標
学習キーワード: 正解率(Accuracy)、適合率(Precision)、再現率(Recall)、F値、ROC曲線、AUC、Intersection-over-Union (IoU)、mean Average Precision(mAP)、多クラス分類の評価指標(micro平均/macro平均)、RMSE/MSE、MAE、混同行列
概要
ここでは、機械学習モデルや分類器の性能を評価するために重要な指標について説明していきます。モデルのパフォーマンスを正確に把握するためには、単一の評価指標に依存するのではなく、さまざまな指標を組み合わせて評価することが必要です。たとえば、正解率だけではモデルの真の性能を捉えきれない場合があるため、適合率、再現率、F値などの他の指標も考慮します。また、ROC曲線やAUCといった視覚的な評価方法や、回帰タスクではRMSEやMAEなどの誤差指標も重要な要素です。
この章では、それぞれの評価指標がどのような場面で有効かを解説しながら、モデルの評価方法を総合的に理解していきます。
正解率 (Accuracy)
正解率は、モデルが全体のデータに対してどれだけ正確に予測できたかを示す指標です。計算式は次のようになります:
ここで、TP(True Positive)は真陽性、TN(True Negative)は真陰性、FP(False Positive)は偽陽性、FN(False Negative)は偽陰性を表します。正解率は高いほど良いとされますが、クラス不均衡がある場合には、他の指標と併用して評価することが重要です。
適合率 (Precision)
適合率は、モデルが陽性と予測したデータのうち、実際に正しかった割合を示します。計算式は以下の通りです:
適合率が高いと、モデルの陽性予測の信頼性が高いことを意味します。偽陽性が多いと、適合率は低下します。
再現率 (Recall)
再現率は、実際の陽性データのうち、モデルがどれだけ正しく予測できたかを示す指標です。計算式は次のようになります:
再現率が高い場合、モデルが実際の陽性を逃さずに予測できていることを意味します。特に陽性クラスの見逃しが重要な場合に重視されます。
F値 (F1 Score)
F1スコアは、適合率と再現率の調和平均で、両者のバランスを考慮した指標で、計算式は以下の通りです:
F1スコアが高いほど、モデルが適合率と再現率の両方をうまく満たしていることを示します。
ROC曲線とAUC
ROC曲線(Receiver Operating Characteristic Curve)は、モデルの予測性能を視覚的に表現するグラフです。縦軸に再現率(True Positive Rate, TPR)、横軸に偽陽性率(False Positive Rate, FPR)を取り、異なる閾値におけるTPRとFPRの関係をプロットします。
AUC(Area Under the Curve)はROC曲線の下の面積を表し、モデルの全体的な分類能力を測定します。AUC = 1は完璧なモデルを示し、AUC = 0.5はランダムな予測を意味します。
Intersection-over-Union (IoU)
IoUは、主に画像認識タスクで使用される評価指標で、予測された領域と実際の領域の重なり具合を示します。計算式は次の通りです:
予測領域と実際の領域の共通部分(Intersection)を、全体の領域(Union)で割ることで、どれだけの範囲が一致しているかを示します。高いIoU値は、正確な物体検出を意味します。
mAP(mean Average Precision)
mAPは、物体検出タスクにおいて、複数のクラスに対する適合率の平均を表す重要な指標です。具体的には、以下の手順で計算されます。
計算手順
-
Precision-Recall曲線の作成
各クラスごとに、検出した物体のスコア(信頼度)に基づいてPrecision(適合率)とRecall(再現率)をプロットし、Precision-Recall曲線を作成します。これにより、異なるしきい値での性能を視覚化できます。 -
Average Precision (AP)の計算
各クラスのPrecision-Recall曲線の下の面積を計算し、これをAPと呼びます。APは、そのクラスにおける検出精度を示します。たとえば、犬と猫の二つのクラスがある場合、それぞれのクラスについてAPを計算します。 -
全クラスのAPの平均をmAPとして計算
最後に、全クラスのAPを合計し、クラスの数で割ることでmAPを求めます。例えば、犬のAPが0.8、猫のAPが0.6であれば、mAPは次のように計算されます。
mAP = (0.8 + 0.6) / 2 = 0.7
mAPの値が高いほど、モデルの検出性能が良好であることを示します。
※以下に具体例を示しながら解説されているQiitaの記事がありますのでご参考ください。
https://qiita.com/cv_carnavi/items/08e11426e2fac8433fed
多クラス分類の評価指標(micro平均/macro平均)
多クラス分類の評価指標として、micro平均とmacro平均がよく使われます。これらは特に適合率(Precision)や再現率(Recall)などの評価指標を集約する際に用いられ、タスクに応じて使い分けられます。
- micro平均:全てのクラスのTP(True Positive: 真陽性)、FP(False Positive: 偽陽性)、FN(False Negative: 偽陰性)を合計し、全体のパフォーマンスを評価します。クラスごとの違いを考慮せず、全体を重視します。
- macro平均:各クラスごとに適合率や再現率などの指標を計算し、その平均を取ります。クラス間の違いを平等に扱うため、クラス数に関係なく各クラスのパフォーマンスを同じ重みで評価します。
micro平均は、全体のデータセットにおけるバランスを考慮し、全てのクラスに対するパフォーマンスを総合的に評価します。
ここで、\(n\)はクラスの総数を表します。
macro平均は、クラス間の不均衡を考慮せず、すべてのクラスを平等に扱うため、少数クラスの影響が大きくなります。
いずれも0.0(= 0%)~1.0(= 100%)の範囲で評価され、1.0に近づくほどパフォーマンスが高いとされます。
RMSE/MSEとMAE
MSE(Mean Squared Error)とRMSE(Root Mean Squared Error)は、回帰モデルの予測誤差を測定する指標です。MSEは誤差の二乗平均で、RMSEはMSEの平方根を取ったものです。計算式は次の通りです:
ここで、\(n\)はデータの総数、\(y_i\)は実際の値(真値)、\(\hat{y_i}\)は予測値を表します。
一方、MAE(Mean Absolute Error)は、誤差の絶対値の平均を計算する指標です。計算式は次のようになります:
RMSEは大きな誤差に対して敏感であるため、外れ値の影響を受けやすい一方、MAEは外れ値に対してよりロバストな指標です。
混同行列 (Confusion Matrix)
混同行列は、モデルの予測結果を可視化するための行列で、予測の正誤を集計します。次のような形式で表示されます:
予測:正 | 予測:負 | |
---|---|---|
実際:正 | TP (真陽性) | FN (偽陰性) |
実際:負 | FP (偽陽性) | TN (真陰性) |
この行列を使うことで、モデルがどの程度正しく予測できているか、また誤分類がどの程度発生しているかを簡単に把握できます。
キーワードまとめ
kd-tree、近似最近傍、コサイン距離、ユークリッド距離、マンハッタン距離、Lp距離、マハラノビス距離、機械学習、教師あり学習、教師なし学習、半教師あり学習、ノルム、過少適合、過剰適合、最小二乗法、相関係数、多重共線性、L1正則化、L2正則化、ロジット、シグモイド関数、ロジスティック関数、ソフトマックス関数、オッズ/オッズ比、サポートベクター、マージン最大化、ハードマージン・ソフトマージン、カーネル法、分類木、回帰木、CART、Gini係数、アンサンブル、バギング、ブースティング、 主成分分析、寄与率、SNE、Crowding Problem、t-SNE、k-means、階層的クラスタリング、デンドログラム、ウォード法、群平均法、汎化誤差、訓練誤差、バイアス、バリアンス、正則化、次元の呪い、訓練誤差、汎化誤差、ホールドアウト法、k-分割交差検証法正解率(Accuracy)、適合率(Precision)、再現率(Recall)、F値、ROC曲線、AUC、Intersection-over-Union (IoU)、mean Average Precision(mAP)、多クラス分類の評価指標(micro平均/macro平均)、RMSE/MSE、MAE、混同行列