お恥ずかしい話、(ロジスティック回帰?あ〜!分類問題で使う線形回帰でしょ?)という理解でした。
転職時の技術面接で「ロジスティック回帰を分かりやすく説明してくれますか?」と言われた際に、正しく説明できるように、線形回帰についてまとめてみました。
ロジスティック回帰とは?
ロジスティック回帰について、機械学習モデルと統計モデルの2つの側面から説明します。
機械学習モデルとしてのロジスティック回帰
まず、機械学習モデルの1つとしてロジスティック回帰を説明します。
ロジスティック回帰は、教師あり学習の分類タスクに用いられるアルゴリズムです。
回帰という単語が名前に含まれていますが、回帰ではなく分類タスクで使用されます。
ロジスティック回帰とは、線形回帰式とシグモイド関数を用いて説明変数(= 独立変数, x)から目的変数(= 従属変数, y)の発生確率を表すことです。
※「線形とは?」「回帰と分類とは?」などのロジスティック回帰の前提知識を知りたい方はこちらをご参照ください。
統計モデルとしてのロジスティック回帰
次に、統計モデルの1つとしてロジスティック回帰を説明します。
そもそも統計モデリングとは、「観測された現象をどのような説明変数と確率分布で説明できるのか?」を考えることです。
線形モデルにはいくつかの種類が存在しますが、ロジスティック回帰は一般化線形モデルの一種になります。
線形モデルと異なり恒等関数以外のリンク関数を使用できる点が特徴です。
モデル | リンク関数 | 考慮される効果 |
---|---|---|
線形モデル (Linear Model) | 恒等関数のみ | 固定効果のみ ※固定効果とは、全ての個体に共通して発生しているが故に固定値で表すことができる効果 |
一般化線形モデル (Generalized Linear Model) | 恒等関数以外 | 固定効果のみ |
一般化線形混合モデル (Generalized Linear Mixed Model) | 恒等関数以外 | 固定効果+変量効果 ※変量効果とは、個体ごとに様々な理由で発生しているが故に固定値で表すことができない効果 |
いきなり「一般化線形モデル」と言われてもピンとこない方が多いと思いますので、一般化線形モデルの用語を解説していきましょう。
一般化線形モデルとは、線形予測子、リンク関数、確率分布を指定する統計モデルです。
では、線形予測子、リンク関数、確率分布について説明していきましょう。
まず、線形予測子とリンク関数について考えていきましょう。
ここでは具体的にロジスティック回帰の式を使ってみていきましょう。
ロジスティック回帰の回帰式は以下の式になっています。
まずは線形回帰と同じように説明変数\(x\)を使って線形回帰式を作ってみましょう。
\(\hat{y} = \beta_0 + \beta_1 x_1 + \beta_2 x_2 … + \beta_n x_n \)
ロジスティック回帰は発生確率を表すため、最終的な出力を0~1の範囲に収める必要があります。
しかし、上記の式では\(\hat{y}\)が0~1の間に収まりません。そこで、\(\hat{y}\)に関数をつけることで最終的な出力が0~1の範囲に収まるようにします。
この時に使用する関数が以下のロジスティック関数です。
説明変数\(x\)と\(\hat{y}\)で構成される回帰式にロジスティック関数を組み合わせることで、以下のロジスティック回帰式を作ることができます。
\(P=\frac{1}{1 + e^{-\hat{y}}}=\frac{1}{1 + e^{-(\beta_0 + \beta_1 x_1 + \beta_2 x_2 … + \beta_n x_n)}}\)
回帰式にロジスティック関数を組み合わせるというのは、以下のイメージです。
※左の図は\(x\)と\(\hat{y}\)の式、右の図は\(\hat{y}\)と\(P\)の式を表しているので注意してください。
\(x,\hat{y},P\)の全てを3次元で描画すると以下の通りです。※描画の都合上説明変数である\(x\)の個数を1つとしています。
\(x\)から線形回帰式で\(\hat{y}\)を求め、\(\hat{y}\)に対してロジスティック関数を当てはめて\(P\)を求めているのがわかると思います。
では、線形予測子とリンク関数の話に戻しましょう。
線形予測子とは、回帰式の右辺を\(\beta_0 + \beta_1 x_1 + \beta_2 x_2 … + \beta_n x_n\)に変形した際の右辺、つまり\(\beta_0 + \beta_1 x_1 + \beta_2 x_2 … + \beta_n x_n\)を指します。
リンク関数とは、回帰式の右辺を\(\beta_0 + \beta_1 x_1 + \beta_2 x_2 … + \beta_n x_n\)に変形した際の左辺を指します。
例えば、ロジスティック回帰式を使って考えてみましょう。
以下の式の右辺が\(\beta_0 + \beta_1 x_1 + \beta_2 x_2 … + \beta_n x_n\)になるように変形します。
\(P=\frac{1}{1 + e^{-\hat{y}}}=\frac{1}{1 + e^{-(\beta_0 + \beta_1 x_1 + \beta_2 x_2 … + \beta_n x_n)}}\)
変形すると、以下の式になります。
\(\log \left( \frac{p}{1-p} \right)=\hat{y}=\beta_0 + \beta_1 x_1 + \beta_2 x_2 … + \beta_n x_n\)
上記の式の左辺がリンク関数であり、ロジスティック回帰の場合のリンク関数をロジット関数といいます。
次に確率分布について説明します。
確率分布とは、確率変数がとる値とその値をとる確率の対応の様子を表したものです。
例えば、コインを投げた場合で考えてみましょう。
コインを投げた時の確率分布は以下の通りです。
コインを投げた時の確率分布 | ||
---|---|---|
確率変数 | 0(表) | 1(裏) |
確率 | 1/2 | 1/2 |
「コインを投げた際に表と裏のどちらが出るか?」のように結果が2つしかない試行が存在し、片方の事象の発生確率を\(p\)とします。この試行を\(n\)回行って、確率\(p\)の事象が発生する回数\(X\)が従う確率分布を二項分布と呼びます。この\(p\)や\(n\)を確率分布のパラメータと呼びます。
ロジスティック回帰の確率分布はこの二項分布を使用します。
確率分布の説明は以上ですが、ここで疑問が一つ湧いてくると思います。
それは、おそらく(確率分布はこの回帰モデルとどのような関係があるのか…?)という疑問だと思います。
では、回帰モデルと確率分布の関係を説明しましょう。
まずは二項分布のパラメータから見ていきましょう。二項分布は成功確率\(p\)と試行回数\(n\)という2つのパラメータによって決まると説明しました。ロジスティック回帰は各データがどちらの結果になるのかを1回ずつ判別するだけなので、試行回数\(n\)は1となります。また、1つ1つの\(x\)を線形結合した\(\hat{y}\)をロジスティック関数で変換したものを\(p\)とします。つまり、1つ1つの\(x\)に対して\(p\)と\(n\)が存在し、それにより二項分布が存在しています。例えば、\(\hat{y}\)=1.5の場合を考えてみましょう。この場合、\(p\)≒0.8176、\(n\)=1となり、これによって二項分布が決まります。これは\(x\)を線形結合した値が1.5の場合に目的変数が1となる確率はこの二項分布に従うということになります。
一般化線形モデルで登場する確率分布、線形予測子、リンク関数の説明は以上です。
補足:ロジスティック関数とは?
上の説明で「説明変数\(x\)と\(\hat{y}\)で構成される回帰式にロジスティック関数を組み合わせることで、ロジスティック回帰式を作ることができます。」と述べました。
説明の中でロジスティック関数という複雑な関数が急に出てきましたが、この関数について説明します。
まずはロジスティック関数の前提となるオッズ、対数オッズ、ロジット変換について見ていきましょう。
そもそもオッズとは、ある事象が発生する確率としない確率の比で表されます。
オッズ = \(p/(1-p)\)
オッズはギャンブルの世界で使われることが多いので、試合の勝ち負けの例を使ってオッズを見ていきましょう。
自チームと相手チームが試合をし、自チームが20%の確率で相手チームに勝つ可能性がある時のオッズを計算しましょう。
この場合、自チームが勝つ事象の確率が20%であるため、\(p\)=0.2となり、オッズ=0.2/(1-0.2)=0.25となります。
では、\(p\)が変化すると、オッズはどのように変化するのでしょうか?\(p\)の値を変化させて見ていきましょう。
\(p\)=0.01の場合のオッズは、0.0101…
\(p\)=0.20の場合のオッズは、0.25
\(p\)=0.50の場合のオッズは、1.0
\(p\)=0.80の場合のオッズは、4
\(p\)=0.99の場合のオッズは、99
上記のように、オッズは\(p\)の値が小さい場合は0に近づき、\(p\)の値が大きい場合は\(\infty\)に近づいていきます。
(ギャンブルの場合、オッズが低いほど、その事象が起きた場合の儲けが多くなります。例えば、オッズ0.25で1を賭けておくと、当たりの場合には、賭け金の1にオッズの値である4を加えた5を受け取ることができます。)
では次に対数オッズについて見ていきましょう。
オッズは\(p≦0.50\)の場合は0~1の範囲の値を取り、\(p≧0.50\)の場合は1~\(\infty\)の範囲の値を取るため、\(p\)が小さい場合と大きい場合の尺度が一致しておらず、単純に比較することができません。
例えば、\(p\)=0.20の場合のオッズは0.25ですが、逆に\(p\)=0.80の場合のオッズは4となっており、これらのオッズの比較が困難です。
そこで、オッズの対数を取ることで、\(p\)が小さい場合と大きい場合のオッズの尺度を揃えます。
対数オッズは\(p≦0.50\)の場合は\(-\infty\)~0の範囲の値を取り、\(p≧0.50\)の場合は0~\(\infty\)の範囲の値を取るため、\(p\)が小さい場合と大きい場合の尺度が一致します。
例えば、\(p\)=0.20の場合の対数オッズは約-1.39であり、逆に\(p\)=0.80の場合の対数オッズは約1.39となります。
このように対数を取ることで、\(p\)が小さい場合と大きい場合の対数オッズの尺度を揃えて比較できるようになります。
では、次にロジット変換について見ていきましょう。
ある確率値(上記の例でいう\(p\))の対数オッズを取ることをロジット変換と言います。
ロジット変換を行うことで、0~1の範囲しか取らない確率値を\(-\infty\)~\(\infty\)の範囲を取る値に変換することができます。
このロジット変換をロジスティック回帰式に用いることで、0~1の範囲しか取らない確率値である\(p\)と、\(-\infty\)~\(\infty\)の範囲を取る値である線形回帰式の値\(\hat{y}\)を変換することができます。
まず初めに、ロジスティック回帰の確率である\(p\)と線形回帰で求めた\(\hat{y}\)を対数オッズの形で表します。
\(\hat{y} = \log \left( \frac{p}{1-p} \right)\)
次にこの式を以下のように変形していくと、ロジスティック関数が現れます。
\(e^{\hat{y}} = \frac{p}{1 – p}\)
\(e^{\hat{y}} – p e^{\hat{y}} = p\)
\(p(1 + e^{\hat{y}}) = e^{\hat{y}}\)
\(p = \frac{e^{\hat{y}}}{1 + e^{\hat{y}}} = \frac{1}{1 + e^{-\hat{y}}}\)
上記の説明では、0~1の範囲しか取らない値である\(p\)を、\(-\infty\)~\(\infty\)の範囲を取る値\(\hat{y}\)に変換していますが、逆からみると、\(-\infty\)~\(\infty\)の範囲を取る値\(\hat{y}\)を0~1の範囲しか取らない値である\(p\)に変換していると考えることができます。
ロジスティック回帰の例
まずは実際にロジスティック回帰をやってみて、ロジスティック回帰のイメージを掴みましょう。
今回使用するデータは、タイタニック号の乗船者のデータセットです。
このデータセットは、1行のデータが1名の乗船者のデータになっています。
説明のスペースの都合上、4つの説明変数のみ使用します
変数名 | 説明 |
---|---|
Survived | 生存フラグ(0 = 亡くなった, 1 = 生存) |
Age | 乗客の年齢 |
SibSp | 同乗している兄弟/配偶者の数 |
Parch | 同乗している親/子供の数 |
Fare | 料金 |
実際のデータは以下の通りです。
Survived | Age | SibSp | Parch | Fare | |
---|---|---|---|---|---|
0 | 0 | 22.0 | 1 | 0 | 7.2500 |
1 | 1 | 38.0 | 1 | 0 | 71.2833 |
2 | 1 | 26.0 | 0 | 0 | 7.9250 |
3 | 1 | 35.0 | 1 | 0 | 53.1000 |
4 | 0 | 35.0 | 0 | 0 | 8.0500 |
… | … | … | … | … | … |
886 | 0 | 27.0 | 0 | 0 | 13.0000 |
887 | 1 | 19.0 | 0 | 0 | 30.0000 |
888 | 0 | NaN | 1 | 2 | 23.4500 |
889 | 1 | 26.0 | 0 | 0 | 30.0000 |
890 | 0 | 32.0 | 0 | 0 | 7.7500 |
このデータに対してロジスティック回帰を行うと、以下の式を得ることができます。
Survivedが1になる確率\(P=\frac{1}{1 + e^{-\hat{y}}}=\frac{1}{1 + e^{-(-0.02 * Age – 0.32 * SibSp + 0.11 * Parch + 0.02 * Fare – 0.25)}}\)
ロジスティック回帰式の導出
ロジスティック回帰式が以下の形になることは説明済みですが、この式の中で用いられている\(\beta\)の導出方法を見ていきましょう。
\(P=\frac{1}{1 + e^{-\hat{y}}}=\frac{1}{1 + e^{-(\beta_0 + \beta_1 x_1 + \beta_2 x_2 … + \beta_n x_n)}}\)
まずは、与えられたデータから最も良いモデル\(\beta\)を求める前に、モデルの評価指標について考えていきましょう。
そもそも求めたロジスティック回帰式が良いか悪いかはどのように判断するのでしょうか?
ロジスティック回帰モデルの評価指標には対数尤度を使用します。
尤度とは?
対数尤度の前にまずは尤度についてみていきましょう。
まず尤度とは、想定するパラメーターがある値をとる場合に観測している事柄や事象が起こりうる確率のことで、当てはまりの良さを表す統計量です。
このままだと難しいので、タイタニック号の例で考えてみましょう。
あるサンプル(=ある1行のデータ)について、「サンプル1は生存者である(=目的変数が1)」という観測結果が得られたとしましょう。この結果が観測される確率\(P\)はロジスティック回帰モデルで求めることが可能です。ロジスティック回帰の変数である\(\beta\)が\(a\)という値を取る場合、実際に生存者であるサンプル1の説明変数で生存者となる確率\(P_a\)が求められます。
この\(P_a\)は\(\beta\)が\(a\)という値を取る場合のサンプル1の尤度になります。
また、サンプルが生存者でない場合(=目的変数が0)は注意が必要です。ロジスティック回帰モデルは生存者となる確率を求めるため、生存者ではない確率は\(1-P\)で求めます。
全体の尤度とは?
\(\beta\)がある値を取る場合の個々のサンプル(=1行1行のデータ)の尤度を求め、それらの値を全て掛け合わせたものを全体の尤度と呼びます。
なぜ個々のサンプルの尤度を掛けるのかというと、全体の尤度は全てのサンプルで同時に起きる確率だからです。
タイタニック号の例で全体の尤度を考えてみましょう。
以下のロジスティック回帰式を使います。
\(P=\frac{1}{1 + e^{-\hat{y}}}=\frac{1}{1 + e^{-(\beta_0 + \beta_1* Age + \beta_2 * SibSp + \beta_3 * Parch + \beta_4 * Fare )}}\)
対数尤度とは?
尤度の対数を取ったものを対数尤度と呼びます。
なぜ対数を取るかというと、対数を取ることで個々の尤度の掛け算を足し算に変形させて計算を安定させるためです。掛け算の場合、多くの尤度を掛け合わせた場合に値が小さくなって計算が不安定になってしまいます。
全体の尤度を対数尤度に変形することで最も尤度が良くなる\(\beta\)の値が求められるのか?と思うかもしれません。しかし、問題ありません。
そもそも全体の尤度は0~1の範囲を取る正の値の掛け算の結果なので、対数を取っても\(\beta\)に影響はありません。尤度を最大化する\(\beta\)と対数尤度を最大化する\(\beta\)は同値になります。
2つの関数のグラフを見て確認してみましょう。
これはあるケースの尤度関数と対数尤度関数です。
x軸は\(\beta\)、y軸は尤度と対数尤度を表しています。
この2つのグラフを比べれば、尤度と対数尤度も最大値を取る\(\beta\)が等しいことがわかると思います。
ロジスティック回帰の対数尤度
では、ロジスティック回帰の対数尤度の式を見ていきましょう。
ロジスティック回帰で使用する対数尤度の式は以下の通りです。
\(\log L(\beta) = \sum_{i=1}^n \left[ y_i \log(p_i) + (1 – y_i) \log(1 – p_i) \right]\)
\(N\):行数※タイタニック号の乗船者のデータセットの場合は行数である891が該当します。
\(y_i\):i行目の目的変数の値※0か1のいずれかの値になります。
\(p_i\):i行目の目的変数が1となる確率
ロジスティック回帰で使用する対数尤度は、実際の生存者のデータについては生存者と判断される確率が高いほど大きくなり、実際の生存者ではないデータについては生存者ではないと判断される確率が高いほど大きくなります。
対数尤度が最大になるβの求め方
ロジスティック回帰式の評価指標が対数尤度であることは理解できたと思います。
上で説明した通り、対数尤度はロジスティック回帰式内で使用されている\(\beta\)に応じて変化する関数です。つまり、最も良いロジスティック回帰式を求めるためには、対数尤度関数が最大になる\(\beta\)を見つける必要があります。
では、以下の対数尤度関数が最大になる\(\beta\)を見つけていきましょう。
\(\log L(\beta) = \sum_{i=1}^n \left[ y_i \log(p_i) + (1 – y_i) \log(1 – p_i) \right]\)
この対数尤度を最大化するために、対数尤度関数を \(\beta\)の各要素で偏微分し、その勾配が0となる点を求める必要があります。
右辺の式を \(\beta\)で微分したいのですが、現在の右辺である\(\sum_{i=1}^n \left[ y_i \log(p_i) + (1 – y_i) \log(1 – p_i) \right]\)には \(\beta\)の文字が表れていません。
そこで、\(p_i\)を置き換えることで、\(\beta\)のある式に変形しましょう。
\(p_i\)はデータ\( i \)の予測確率であり、ロジスティック回帰モデルでは次のように定義されます。
\(p_i = \frac{1}{1 + e^{-(\mathbf{x}_i^\top \beta)}}\)
また、\(\sigma(z) = \frac{1}{1 + e^{-z}} \)とすると、
\(p_i = \frac{1}{1 + e^{-(\mathbf{x}_i^\top \beta)}} = \sigma(\mathbf{x}_i^\top \beta)\)
と書くことができます。
これを使って右辺を書き換えると以下の式になります。
\(\log L(\beta) = \sum_{i=1}^n \left[ y_i \log(\sigma(\mathbf{x}_i^\top \beta)) + (1 – y_i) \log(1 – \sigma(\mathbf{x}_i^\top \beta)) \right]\)
次は\(\beta\)の各要素で微分したいので、\(\beta\)の各要素が分かる式にしましょう。
\(\beta\)はm個の説明変数の重み、\(x_i\)はi行目の説明変数の値なので、以下のように表すことができます。
\(\beta = \begin{bmatrix}
\beta_1 \\
\beta_2 \\
\vdots \\
\beta_m
\end{bmatrix}\)
\( \mathbf{x}i = \begin{bmatrix}
x_{i1} \\
x_{i2} \\
\vdots \\
x_{im}
\end{bmatrix}\)
これを使って式を書き換えると、以下の式に変形することができます。
\(\log L(\beta) = \sum_{i=1}^n \left[ y_i \log\left(\sigma\left(\sum_{j=1}^m x_{ij} \beta_j\right)\right) + (1 – y_i) \log\left(1 – \sigma\left(\sum_{j=1}^m x_{ij} \beta_j\right)\right) \right]\)
変形して出てきた対数尤度関数を \(\beta\)の各要素(=\(\beta_j\))で偏微分して、対数尤度関数が最大となる \(\beta\)を求めたいのですが、解析的に求めることは困難です。
そこで、勾配降下法を使って求めていきます。
勾配降下法は、関数の勾配(傾き)を利用して、関数の最大値や最小値を数値的に求める方法です。
勾配降下法は次の手順で進みます。
1. 初期値 \(\beta^{(0)}\) を適当に設定します。(通常はすべて0やランダム値を設定します。)
2. 勾配(偏微分の結果)を計算して、目的関数を改善する方向にパラメータを更新します。
3. 更新を繰り返し、収束条件を満たしたら終了します。
更新手順を数式で表すと以下の通りです。
\(\beta^{(t+1)} = \beta^{(t)} + \alpha \nabla \log L(\beta^{(t)})\)
\(\beta^{(t)}\):t 回目の更新時のパラメータベクトル
\(\alpha\):学習率と呼ばれるスカラー値。これにより、更新時に改善する大きさが決まります。
\(\nabla \log L(\beta^{(t)})\) : t 回目の勾配(偏微分ベクトル)
以下の図が更新のイメージになります。
勾配降下法には3種類のやり方が存在します。
主な違いは更新を行う際に、何行分のデータを扱うかです。
手法 | 使用するデータの単位 | 特徴 |
---|---|---|
最急降下法 | 全データセット(すべての行) | 全データを使用して勾配を計算するため、計算コストが高いが安定して収束する。大規模データでは非効率的。 |
確率的勾配降下法 | 1データ点(1行) | 1つのデータ点だけを使用して勾配を計算するため計算が軽いが、ノイズが多く不安定。局所最適解を回避しやすい。 |
ミニバッチ確率的勾配降下法 | ミニバッチ(複数行) | 複数のデータを使用して勾配を計算するため、計算効率と収束の安定性のバランスが良い。バッチサイズを調整可能。 |
ロジスティック回帰でできること
ロジスティック回帰の式を見て、(この式がわかると何が嬉しいの…?)と思う方もいる思います。
では、ロジスティック回帰でできることについて見ていきましょう。
目的変数の予測ができるようになる
線形回帰の式を求めたということは、目的変数と説明変数の関係性を表現できたということになります。つまり、説明変数から目的変数を求めることができます。
以下の説明変数の値をロジスティック回帰の式に入れてみましょう。
Age=22.0, SibSp=1, Parch=0, Fare=7.2500
すると、0.2821…という数字が算出されます。
これは、目的変数が1(=生存者)となる確率が28.21%と言うことを表しています。
以上のように、回帰式を使うと説明変数から目的変数を予測できるようになります。
ロジスティック回帰の前提条件
説明変数間に相関係数の高い組み合わせが存在しないこと
説明変数間に相関係数の高い組み合わせが存在する状態を多重共線性がある状態と言います。
多重共線性はある場合、回帰係数のばらつきが大きくなってしまいます。
※多重共線性に関する詳細な説明は線形回帰の記事にて説明しています。
ロジスティック関数の出力を確率とみなす
ロジスティック回帰では、ロジスティック関数を使って確率を出力を表していますが、他の関数で確率への変換を行う方法も存在します。
例えば、ロジスティック回帰と同様に2値データの分類に用いられる手法として、プロビット回帰があります。プロビット回帰では、確率への変換を行う際にプロビット関数(=標準正規分布の累積分布関数)を用いています。
2つの関数を並べてみると、確率への変換の方法に差があることが分かると思います。
ロジスティック回帰の評価
ここまでの説明で対数尤度関数を最大化する\(\beta\)(=データに最も適合する\(\beta\))を見つけました。
では、このモデルをどのように評価するのでしょうか?
ここでは、ロジスティック回帰モデルを評価する指標であるAccuracy , Recall, Precision, F1の4つを紹介します。
まずは指標を出す際に使われる用語を解説します。
1. TP (True Positive): 正例を正しく予測した数
2. TN (True Negative): 負例を正しく予測した数
3. FP (False Positive): 負例を誤って正例と予測した数
4. FN (False Negative): 正例を誤って負例と予測した数
図で表すと以下の通りです。
– | 正解がPositive | 正解がNegative |
---|---|---|
予測がPositive | TP | FP |
予測がNegative | FN | TN |
では、この用語を使って各指標を説明していきましょう。
指標 | 説明 | 計算式 | どういう場合に使うか |
---|---|---|---|
Accuracy (正解率) | 全予測のうち、正しく分類された割合を表します。 | (TP + TN) / (TP + TN + FP + FN) | 全体の精度を確認したい場合に使用します。 クラスの不均衡が少ないデータ(例:全体のバランスが良い分類タスク)で適しています。 |
Recall (再現率) | 実際に正解であるデータの中で、正しく予測された割合を表します。 | TP / (TP + FN) | 医療診断(例:病気のある患者を見逃さないことが重要) 検出漏れを防ぎたい場合(例:詐欺検出や不正検知) |
Precision (適合率) | 予測を正としたものの中で、実際に正解であった割合を表します。 | TP / (TP + FP) | スパムメール判定(例:スパムでないメールを誤ってスパムとするリスクを減らす) 高精度な予測が重要な場合(例:製品の欠陥検出) |
F1 (再現率と適合率の調和平均) | Precision と Recall のバランスを取るための指標です。 | 2 * (Precision * Recall) / (Precision + Recall) | 不均衡データセットで評価する場合やRecall と Precision を同時に考慮したい場合に使用します。 |
コメント