ロジスティック回帰は実際に回帰アルゴリズムですか?
-
16-10-2019 - |
質問
回帰の通常の定義は(私が知っている限り) 入力変数の特定のセットから連続出力変数を予測する.
ロジスティック回帰はバイナリ分類アルゴリズムであるため、カテゴリの出力を生成します。
本当に回帰アルゴリズムですか?もしそうなら、なぜですか?
解決
ロジスティック回帰は、何よりも回帰です。決定ルールを追加することにより、分類器になります。逆になる例を挙げます。つまり、データを取得してモデルを適合させる代わりに、これが本当に回帰問題であることを示すために、モデルから始めます。
ロジスティック回帰では、イベントが発生することをログオッズまたはロジットをモデル化しています。これは連続的な量です。イベント$ a $が発生する確率が$ p(a)$である場合、オッズは次のとおりです。
$$ frac {p(a)} {1 -p(a)} $$
ログのオッズは次のとおりです。
$$ log left( frac {p(a)} {1 -p(a)} right)$$
線形回帰のように、係数と予測因子の線形組み合わせでこれをモデル化します。
$$ operatorname {logit} = b_0 + b_1x_1 + b_2x_2 + cdots $$
人に白髪があるかどうかのモデルが与えられていると想像してください。私たちのモデルは、年齢を唯一の予測子として使用します。ここで、私たちのイベントa =人は白髪を持っています:
白髪のログオッズ= -10 + 0.25 *年齢
...回帰!ここにいくつかのPythonコードとプロットがあります:
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
x = np.linspace(0, 100, 100)
def log_odds(x):
return -10 + .25 * x
plt.plot(x, log_odds(x))
plt.xlabel("age")
plt.ylabel("log odds of gray hair")
それでは、分類器にしましょう。まず、ログオッズを変換して、確率$ p(a)$を出す必要があります。シグモイド関数を使用できます。
$$ p(a)= frac1 {1 + exp( - text {log odds})} $$
これがコードです:
plt.plot(x, 1 / (1 + np.exp(-log_odds(x))))
plt.xlabel("age")
plt.ylabel("probability of gray hair")
これを分類器にするために必要な最後のことは、決定ルールを追加することです。非常に一般的なルールの1つは、$ p(a)> 0.5 $がいつでも成功を分類することです。私たちはその規則を採用します。これは、人が40歳以上であるときはいつでも白髪を予測し、人が40歳未満の場合は灰色でない髪を予測することを意味します。
ロジスティック回帰は、より現実的な例でも分類器としてうまく機能しますが、分類器になる前に、それは回帰手法でなければなりません!
他のヒント
簡潔な答え
はい、ロジスティック回帰は回帰アルゴリズムであり、継続的な結果、つまりイベントの確率を予測します。バイナリ分類器として使用することは、結果の解釈によるものです。
詳細
ロジスティック回帰は、一般化線形回帰モデルの一種です。
通常の線形回帰モデルでは、連続的な結果、 y
, 、予測因子の積とその効果の合計としてモデル化されています。
y = b_0 + b_1 * x_1 + b_2 * x_2 + ... b_n * x_n + e
どこ e
エラーです。
一般化された線形モデルはモデルではありません y
直接。代わりに、変換を使用してのドメインを拡張します y
すべての実数に。この変換はリンク関数と呼ばれます。ロジスティック回帰の場合、リンク関数はロジット関数です(通常、以下の注を参照)。
ロジット関数は次のように定義されています
ln(y/(1 + y))
したがって、ロジスティック回帰の形式は次のとおりです。
ln(y/(1 + y)) = b_0 + b_1 * x_1 + b_2 * x_2 + ... b_n * x_n + e
どこ y
イベントの確率です。
バイナリ分類器として使用するという事実は、結果の解釈によるものです。
注:プロビットはロジスティック回帰に使用される別のリンク関数ですが、ロジットは最も広く使用されています。
あなたが議論するとき、回帰の定義は連続変数を予測しています。 ロジスティック回帰 バイナリ分類器です。ロジスティック回帰とは、通常の回帰アプローチの出力にロジット関数を適用することです。ロジット関数は(-inf、+inf)に[0,1]に変わります。その名前を保つのは歴史的な理由だけだと思います。
「私は画像を分類するためにいくつかの回帰を行いました。特にロジスティック回帰を使用しました。」間違っている。
単に仮想関数を置くため $ f $ 回帰アルゴリズムの場合 $ f:x rightarrow mathbb {r} $. 。したがって、ロジスティック関数です $ p(y = 1 | lambda、x)= dfrac {1} {1+e^{ - lambda^tx}} in [0,1] $ 回帰アルゴリズムを作成します。ここ $ lambda $ 訓練されたデータセットから見つかった係数またはハイパープレーン& $ x $ データポイントです。ここ、 $ sign(p(y = 1 | lambda、x))$ クラスとしてとられます。