Rのロジスティック回帰:方程式の導出[例を使用]

公開: 2020-07-28

この記事では、機械学習で最も一般的でありながら挑戦的な概念の1つであるロジスティック回帰について説明します。 この詳細な記事で、ロジスティック回帰とは何か、およびロジスティック回帰方程式の導出について説明します。

また、概念を非常に簡単に理解するために、Rでのロジスティック回帰の例を共有しました。 ただし、例に取り組む前に、すべてのアイデアを十分に理解していることを確認してください。 これらの概念は両方とも相互に関連しているため、線形回帰精通していると便利です

目次

ロジスティック回帰とは何ですか?

ロジスティック回帰は、一連の独立変数に従ってバイナリ結果を予測します。 これは、ロジット関数を使用してイベントの発生確率を予測し、それにデータを適合させる分類アルゴリズムです。 ロジスティック回帰は、2つの値しか持てない結果の可能性を予測できるため、線形回帰とは異なります。 バイナリ変数がある場合、線形回帰の使用は適切ではありません。理由は次のとおりです。

  • 線形回帰は、必要な範囲外の値を予測します
  • 回帰は、2つの利点を1つの予測された線に分散しない可能性があります

ロジスティック回帰は、線形回帰のように線を生成しません。 これは、0から1より大きい値までの範囲のロジスティック曲線を提供します。

世界のトップ大学からデータサイエンスのオンラインコース学びましょうエグゼクティブPGプログラム、高度な証明書プログラム、または修士プログラムを取得して、キャリアを早急に進めましょう。

チェックアウト: Rプロジェクトのアイデア

ロジスティック回帰方程式の導出

線形回帰方程式からロジスティック回帰方程式を導き出すことができます。 ロジスティック回帰は、glmアルゴリズム(一般化線形モデル)のクラスに分類されます。 NelderとWedderburnは、線形回帰を使用して以前は解決できなかった問題を解決する方法として、1972年にこのモデルを導入しました。 彼らは別々のモデルのクラスを提案し、特別なモデルとしてロジスティック回帰を追加しました。

一般化線形モデルの方程式は次のとおりです。

g(e <y)= a + bx1

g()はリンク関数を表し、E(y)はターゲット変数の期待値を表し、RHS(右側)は線形予測子です。 リンク関数は、yの期待値を線形予測子に「リンク」します。

100人のクライアントのデータがあり、クライアントが特定の製品を購入するかどうかを予測する必要があるとします。 カテゴリの結果変数があるため、ロジスティック回帰を使用する必要があります。

線形回帰方程式から始めます。

g(y)= o +(収入)—(1)

ここでは、理解を容易にするために、独立変数を「収入」として保持しています。

私たちの焦点は、結果として生じる従属変数の確率にあります(顧客は購入するかどうか)。 すでに説明したように、g()はリンク関数であり、成功の確率(p)と失敗の確率(1-p)に基づいています。 pには次の性質が必要です。

  • pは常に正である必要があります
  • pは常に1以下である必要があります

ここで、g()を「p」で表し、ロジスティック回帰方程式を導き出します。

確率は常に正であるため、指数形式で線形方程式をカバーし、次の結果を取得します。

p = exp(0+(収入))= e((0+(収入))—(2)

確率を1未満にするには、pをpより大きい数で割る必要があります。

p = exp(0+(収入))/(0+(収入))+ 1 = e(0+(収入))/(0+(収入))+ 1 —(3)

式を使用することによって。 (1)、(2)、および(3)では、pを次のように定義できます。

p = ey / 1 + ey —(4)

ここで、pは成功の確率であるため、1-pは失敗の確率である必要があります。

q = 1 – p = 1-(ey / 1 + ey)—(5)

(4)を(5)で割ってみましょう。

p / 1 – p = ey

両側でログを取得すると、次のようになります。

log(p / 1 – p)= y

これがリンク機能です。 以前に確立したyの値を代入すると、次のようになります。

log(p / 1 – p)= o +(収入)

これで、ロジスティック回帰方程式ができました。 結果の確率を提供するため、その値は常に0から1より上に留まります。

について読む:初心者のための9つの興味深い線形回帰プロジェクトのアイデアとトピック

Rでのロジスティック回帰の例

Rでのロジスティック回帰の場合、UCLA(カリフォルニア大学ロサンゼルス校)のデータを使用しています。 ここでは、私たちが持っているデータに基づいて、許可を得る可能性を予測するモデルを作成する必要があります。 GPA、GREスコア、学生の学部大学のランク、および告白を含む4つの変数があります。

df <-read.csv(“ https://stats.idre.ucla.edu/stat/data/binary.csv”)

str(df)

##'data.frame':400obs。 4つの変数のうち:

## $ admit:int 0 1 1 1 0 1 1 010…

## $ gre:int380660800640520760560400540700…

## $ gpa:num 3.61 3.67 4 3.19 2.93 3 2.98 3.083.393.92…

## $ランク:int 3 3 1 4 4 2 1 232…

変数は数値または整数のいずれかです。

sum(is.na(df))

## [1] 0

また、null値がなく、変数の制限の平均が0.5より小さいため、受け入れよりも拒否のイベントが多いことがわかります。

システムがランクのすべてのカテゴリで許可を適切に配布することを確認する必要があります。 1つのランクに5つの拒否(または情報の承認)しかない場合、分析でそのランクを使用する必要はありません。

xtabs(〜admit +rank、data = df)

##ランク

##認める123 4

## 0 28 97 93 55

## 1 33 54 28 12

今すぐ関数を実行してみましょう:

df $rank <-as.factor(df $rank)

logit <-glm(admit〜gre + gpa +rank、data = df、family =” binomial”)

要約(ロジット)

##

## 電話:

## glm(formula = admit〜gre + gpa +rank、family =“ binomial”、

##データ=df)

##

##逸脱度残差:

##最小1Q中央値3Q最大

## -1.6268 -0.8662 -0.6388 1.1490 2.0790

##

##係数:

##推定標準エラーz値Pr(> | z |)

##(インターセプト)-3.989979 1.139951 -3.500 0.000465 ***

## gre 0.002264 0.001094 2.070 0.038465 *

## gpa 0.804038 0.331819 2.423 0.015388 *

##ランク2-0.6754430.316490 -2.134 0.032829 *

##ランク3-1.3402040.345306 -3.881 0.000104 ***

##ランク4-1.5514640.417832 -3.713 0.000205 ***

## —

##重要。 コード:0'***' 0.001'**' 0.01'*'0.05'。' 0.1'' 1

##

##(二項ファミリーの分散パラメーターを1と見なします)

##

##帰無仮説:399自由度で499.98

##残差逸脱度:394自由度で458.52

## AIC:470.52

##

##フィッシャースコアリングの反復回数:4

関数を実行する前に、ランク変数を整数から因数分解に変換したことに注意してください。 あなたが同じことをすることを確認してください。

最終結果:

学生のGPAが3.8、GREスコアが790であり、彼がランク1の大学で勉強したとします。 私たちのモデルを使用して、将来的に認められる可能性を見つけましょう。

x <-data.frame(gre = 790、gpa = 3.8、rank = as.factor(1))

p <-predict(logit、x)

p

## 1

## 0.85426

私たちのモデルは、その少年が将来入院する可能性が85%あると予測しています。

また読む:機械学習プロジェクトのアイデア

最終的な考え

この記事は以上です。 ご参考になったと思います。 ロジスティック回帰とそれに関連するトピックについて質問や考えがある場合は、以下のコメントセクションで共有してください。

R、データサイエンスのすべてについて知りたい場合は、IIIT-BとupGradのデータサイエンスのエグゼクティブPGプログラムをご覧ください。このプログラムは、働く専門家向けに作成されており、10以上のケーススタディとプロジェクト、実践的なハンズオンワークショップ、メンターシップを提供しています。業界の専門家、業界のメンターと1対1で、400時間以上の学習とトップ企業との仕事の支援。

ロジスティック回帰と線形回帰はどのように異なりますか?

線形回帰の目標は最適な線を特定することですが、ロジスティック回帰はさらに一歩進んで、線の値をシグモイド曲線に適合させます。 これら2つの方法の主な違いは、従属変数がバイナリの場合にロジスティック回帰が適用されることです。 従属変数が連続で、回帰直線が線形の場合、線形回帰が使用されます。 通常の最小二乗法を使用して線形回帰を推定しますが、最尤推定法を使用してロジスティック回帰を推定します。 線形回帰の出力は連続的ですが、ロジスティック回帰の出力には、限られた数の離散ポテンシャル値しかありません。

ロジスティック回帰の使用はいつ役に立ちますか?

カテゴリ従属変数は、ロジスティック回帰を使用して予測されます。 私たちが持っているデータを無限のスケールで測定できる場合、ロジスティック回帰を適用できます。 発生の可能性を推定するには、ロジスティック回帰分析が役立ちます。 これは、任意の2つのクラスの確率を決定するのに役立ちます。 ロジスティック回帰を使用して予測できるのは、分類と確率の結果のみです。 スパム検出、糖尿病予測、癌診断など、さまざまな分類の問題を解決するために使用できます。

ロジスティック回帰を使用する場合の制限は何ですか?

1.ロジスティック回帰には線形の決定面があるため、非線形の問題に対処することはできません。

2.ロジスティック回帰アルゴリズムは外れ値に敏感です。

3.スケーリングと正規化の両方がロジスティック回帰の重要な基準であるため、データの準備には時間がかかる場合があります。

4. 2つのクラスを完全に分離する機能が存在する場合、モデルはトレーニングできなくなります。 これは「完全な分離」と呼ばれます。

5.観測数が特徴の数より少ない場合は、過剰適合を引き起こす可能性があるため、ロジスティック回帰を適用しないでください。

6.もう1つの欠点は、ロジスティック回帰の各データポイントが他のすべてのデータポイントから独立している必要があることです。 観測値が接続されている場合、モデルはそれらの観測値の関連性を過大評価する傾向があります。