Pre-requisite: Linear Regression
この記事では、Logistic Regressionの基礎とPythonでの実装について説明します。 ロジスティック回帰は、基本的に教師あり分類アルゴリズムです。 分類問題では、ターゲット変数(または出力)、yは、与えられた特徴(または入力)、Xのセットに対して離散値のみを取ることができます。
一般的な信念とは異なり、ロジスティック回帰は回帰モデルである。 このモデルは、与えられたデータエントリが “1” として番号付けされたカテゴリに属する確率を予測する回帰モデルを構築します。 線形回帰がデータが線形関数に従うと仮定するように、ロジスティック回帰はシグモイド関数を使用してデータをモデル化します。
Logistic regression は、決定閾値を持ち込む場合にのみ分類手法になります。
閾値の値の決定は、精度と想起の値に大きく影響される。 理想的には、精度とリコールの両方が1であることが望ましいのですが、これはめったにないことです。 精度とリコールのトレードオフの場合、我々はthresold:-
1 を決定するために、以下の議論を使用します。 低精度/高リコール。 偽陽性の数を必ずしも減らすことなく偽陰性の数を減らしたいアプリケーションでは、Precisionの値が低く、Recallの値が高い決定値を選択する。 例えば、がん診断のアプリケーションでは、患者が誤ってがんと診断されても、それを気にせず、がんと診断されないようにしたい。 これは、がんでないことはさらなる医学的疾患によって検出できるが、すでに拒絶された候補者では病気の存在を検出できないからである
2. 高精度/低リコール。 必ずしも偽陰性の数を減らすことなく偽陽性の数を減らしたいアプリケーションでは、Precisionの値が高いかRecallの値が低い判定値を選択することになる。 例えば、パーソナライズされた広告にポジティブまたはネガティブに反応するかどうか顧客を分類する場合、我々は顧客が広告にポジティブに反応することを絶対に確認したいのです。 「0″ or “1” which may represent “win” vs “loss”, “pass” vs “fail”, “dead” vs “alive”, etc.
まず最初に、ロジスティック回帰の最も単純な形、つまり二項ロジスティック回帰を調べます。
Binomial Logistic Regression
勉強時間数と試験の結果を対応付けるデータセット例を考えてみましょう。 結果は合格(1)か不合格(0)の2つの値しかとれない。
Hours(x) | 0.50 | 0.75 | 1.00 | 1.25 | 1.50 | 1.75 | 2.1 | 1.0 | 2.25 | 2.50 | 2.75 | 3.00 | 3.25 | 3.50 | 3.75 | 4.00 | 4.25 | 4.50 | 4.75 | 5.00 | 5.50 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Pass(y) | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 3 | 0 | 1 | 0 | 0 | 3 | 0 | 00 | 1 | 0 | 1 | 1 |
だから。 があります
i。e. yは “0 “か “1 “の2種類しかとれないカテゴリ変数である。
我々のモデルを一般化するために、次のように仮定する:
- データセットには’p’の特徴変数と’n’のオブザベーションが存在する。
- 特徴行列は次のように表されます:
ここで、オブザベーションの特徴値を表します:
ここで、慣習として=1としています。 ( - 観測値、 、は次のように表されます:
- は観測に対する予測応答、すなわち、 を表します。
Linear Regressionを経験された方は、Linear Regressionで予測に使用した仮説が
ここで、, は回帰係数であることを思い出すと思います。
Let regression coefficient matrix/vector, be:
Then, in the more compact form,
The reason for taking = 1 is pretty clear now.
We need to do a matrix product, but there was no
actly multiplied to in original hypothesis formula.
We have been selected in a lot of matrix product.
ここで、上記の問題に線形回帰を適用しようとすると、先ほどの仮説で連続値が得られる可能性が高いです。 また、1より大きい値や0より小さい値を取るのは意味がありません。
そこで、分類のための仮説にいくつかの修正を加えます。
ここにg(z)のプロットがあります。
上のグラフから次のことが推測できます。
- g(z) tends towards 1 as
- tends towards 0 as
- g(z) is always bounded between 0 and 1
So, now we can define conditions probabilities for two labels(0 and 1) for observation as.で、このグラフは0と1の間の条件付き確率を表しています。
尤度とは、あるモデルと特定のパラメータ値(ここでは)が与えられたときの、データ(学習例)の確率にほかならない。 の各可能な値に対して、データから提供される支持を測定します。
そして計算を簡単にするために対数尤度をとります。
ロジスティック回帰のコスト関数は、パラメータの尤度の逆数に比例します。 したがって、対数尤度の式を使ってコスト関数Jの式を求めると、次のようになる:
そして我々の目的はコスト関数が最小になるように推定することである!
Gradient descent algorithm
を使って、まずwの偏微分を取る。ここでyとh(x)はそれぞれ応答ベクトルと予測応答ベクトルを表す。
ここで、minを求めるために、
ここでいう学習率は、明示的に設定する必要があります。
Note: Gradient descent is one of the many way to estimate .
Basically, these are more advanced algorithms that can be easily run in Python once you have defined your cost function and your gradients.gradientは、Pythonで簡単に実行することができます。 これらのアルゴリズムとは:
- BFGS(Broyden-Fletcher-Goldfarb-Shanno algorithm)
- L-BFGS(Like BFGS but uses limited memory)
- Conjugate Gradient
gradient descentと比べ、これらのアルゴリズムのいずれかを用いる利点/不利点を挙げてみましょう。
- Advantages
- 学習速度を選ぶ必要がない
- しばしば速く実行できる(常にそうとは限らない)
- 勾配の数値近似ができる(常にうまく行くとは限らない)
。
- デメリット
- より複雑
- 詳細を学ばないとブラックボックス
Multinomial Logistic Regression
Multinomial Logistic Regressionでは、次のようなことができる。 出力変数が2つ以上の離散出力を持つことができる。 桁のデータセットについて考えてみましょう。 ここで、出力変数は、(0, 12, 3, 4, 5, 6, 7, 8, 9)から値を取ることができる数字値です。
以下は、数字データセットで予測を行うためにscikit-learnを使って多項ロジスティック回帰を実装したものです。Logistic Regression model accuracy(in %): 95.6884561892
最後に、ロジスティック回帰について考えるべきポイントをいくつか挙げておきます。
- 独立変数は、元の独立変数のべき乗項や他の非線形変換であってもよい。
- 従属変数は正規分布である必要はないが、一般的には指数関数族(2項、ポアソン、多項、正規など)の分布を仮定する;2値ロジスティック回帰は応答の2項分布を仮定する。
- 誤差は独立である必要があるが、正規分布ではない
- パラメータの推定に普通の最小二乗法(OLS)ではなく、最尤推定(MLE)を使用するので、大きなサンプル近似に依存する
この記事は Nikhil Kumar によって投稿されたものです。 GeeksforGeeks が好きで貢献したい場合は、contribute.geeksforgeeks.org を使用して記事を書くか、[email protected] に記事を郵送することもできます。 あなたの記事が GeeksforGeeks のメインページに掲載され、他の Geeks を助けることができます
。