こんにちは、キカガクでインターンをしている中野です。
「ロジスティック回帰」という言葉、どこかで耳にしたことはありませんか?それとも、具体的にはどういうものかを知りたいと思っていますか?今回は、ロジスティック回帰の基本をわかりやすく説明します。
- データ分析や機械学習を学び始めたばかりの方
- 大学や学校で統計学やデータサイエンスに触れる機会がある学生
- 仕事でロジスティック回帰分析を用いてみたいビジネスパーソン
目次
はじめに: ロジスティック回帰分析って何?
ロジスティック回帰分析とは、いくつかの要素から「はい」か「いいえ」のという2つの結果の確率を予測するための統計手法のことです。よりイメージしやすくするために、具体例を用いて考えてみましょう。
例えば、ある人が試験に合格するか、不合格になるか、すなわち合格率を求めたいという状況を考えてみましょう。
試験に合格するかどうかの要因はいくつかありますが、今回は、勉強時間、学習塾に通っているかどうかの有無、睡眠時間の3つの要素で考えてみます。

これら3つの要素と合格/不合格のデータと合格と不合格を結び付けるには、どうすればよいでしょうか?
このような時にロジスティック回帰分析を行います。

すると、ある人のデータ(例えば、勉強時間が3時間、学習塾に通っている、睡眠時間が7時間など)を入力することで合格率を求めることが出来ます。
この勉強時間、学習塾に通っているかどうかの有無、睡眠時間といった条件のことを説明変数と呼び、合格/不合格のことを目的変数と呼びます。

このようにロジスティック回帰分析とは、いくつかの要素(説明変数)から2値の結果(目的変数)が起こる確率を予測することに役立ちます。
なぜこの手法が注目されるのか: この手法を使うメリットや魅力
それでは、ロジスティック回帰の優れている点について解説します。
ロジスティック回帰が優れている点は大きく3つあります。それは、簡易性、確率の予測、柔軟性の3つです。
- 簡易性: ロジスティック回帰は、他の統計手法と比較して理解するのが簡単です。またエクセルのような一般的なソフトウェアでも実行できるため、自分自身で使用することが出来ます。
- 確率の予測: ロジスティック回帰は、目的変数が起こる確率を予測することができます。これは、仕事を行う際にとても有用です。例えば、お客さんが商品を購入する確率や、薬が効いている確率などを関連がある条件を用いて予測することができます。
- 柔軟性: ロジスティック回帰は、さまざまな分野や業界での応用が可能です。マーケティングから医療、金融まで、多岐にわたる分野で課題解決に役立てることが出来ます。
このようにロジスティック回帰は比較的理解しやすく、実務での強力なツールとして、多くの人々にとって欠かせないものとなっています。
ロジスティック回帰分析を使用できる場面
それでは、ロジスティック回帰分析が使用されている場面を紹介していきます。
顧客の購入確率の予測
マーケティングの分野では、顧客が商品を購入するかどうかを予測するためにロジスティック回帰分析は用いられています。
オンラインショッピングサイトでは、ユーザーの過去の閲覧履歴や購入履歴、クリックした広告の種類などが特定に商品を購入するかどうかに影響します。
このことを利用して、ユーザーが特定の商品を購入するかを予測できます。
疾病のリスク予測
ロジスティック回帰分析は医療分野では、患者さんが将来的に特定の疾患を発症するリスクを計算することに用いられています。
たとえば、心臓病の発症リスクを予測する際、高血圧、コレステロール値、喫煙習慣、家族歴などの要因を組み合わせて分析します。
これにより、患者さんが心臓病になる確率やどの要因が影響しやすいのかを理解することが出来ます。
そしてこれらの情報から心臓病の高リスクな患者に対する早期の介入や指導が可能となります。
異常品の検知
製造業の分野でもロジスティック回帰は用いられます。
製造業では品質の管理がとても大事になってきます。そのため、不良品があった際はすぐに検知することが必要です。
ロジスティック回帰では機械のセンサーデータや製品の計測データを基に、その製品が異常である確率を予測することが出来ます。
このことにより生産効率の向上やコスト削減に直結できます。
数学の裏側: オッズとオッズ比とは?
上記のように多岐にわたる分野の問題解決に貢献するロジスティック回帰ですが、この回帰分析は結果の確率を求めるだけでではありません。
説明変数がどれだけ結果(目的変数)にどれだけ影響を及ぼしているのかを示すことが出来ます。
このどれだけ影響を及ぼしているかを示すものとしてオッズとオッズ比というものが使用されます。
それでは、オッズとオッズ比とはどういうものなのでしょうか。
オッズとは、あるイベントが発生する確率を、発生しない確率で割ったものです。すなわち、成功の確率をpとしたとき、オッズは p/1-pと表すことが出来ます。

例えば、ある広告を見た人が商品を買った確率が60%であった場合、ある広告を見た人が商品を買うオッズは以下のようになります。
オッズ = 0.6/(1-0.6) = 1.5
よってある広告をみて商品を購入するオッズが1.5と導かれます。
一方、オッズ比とは、2つのグループのオッズの比率を示すものであり、あるグループの事象の発生確率がもう一つのグループと比べてどれだけ高いか、または低いかを示す指標として用いられます。

例えば、広告Aを見た人が商品を購入するオッズが2で、広告Aを見ずに商品を購入するオッズが0.25の時、オッズ比は以下のように求められます。
オッズ比 = 2 / 0.25 = 8
このオッズ比が8というのは1より大きいということで広告Aが商品を購入するという結果に及ばす影響が大きいことがわかります。
このように、オッズ比を用いて解釈することによって、それぞれの要因がどのように結果にむずびついているのかがより理解できるようになります。
さらに、最も影響力のある特徴や条件を特定し、それに対する対策や戦略を練ることが可能となります。
オッズ比からわかるのは、あくまでその要因が結果に及ばす影響が大きいかということです。
つまり、オッズ比が8というのは広告Aを見ることで8倍購入してもらいやすいという意味ではなく、ただ広告Aという要因が購入するという結果に及ばす影響が大きいということがわかります。
ロジスティック回帰の種類:3つのモデルとは
ロジスティック回帰分析には複数の種類があり、それぞれ異なるシナリオやデータ構造に対応しています。以下に、主要な3つのロジスティック回帰のモデルを紹介します。
1. 二項ロジスティック回帰(Binomial Logistic Regression)
もっとも一般的に使用されるタイプです。目的変数が2値(例えば、合格/不合格、買う/買わないなど)である場合に使用されます。
2. 多項ロジスティック回帰(Multinomial Logistic Regression)
結果が2値以上、通常は3値以上に分かれる場合に使用されるモデルです。たとえば、商品のレビューが「良い」「普通」「悪い」の3つのカテゴリに分けられる場合などに適用されます。
3. 順序ロジスティック回帰(Ordinal Logistic Regression)
結果が順序性を持つカテゴリ(例:低、中、高)である場合に使用されます。このモデルは、カテゴリ間に順序関係があるときに有用です。例えば、顧客満足度調査で「不満」「普通」「満足」といった順序性のあるレベルがある場合に使用されます。
これらのモデルは、状況やデータの種類に応じて選ばれます。
正確な分析と有用な洞察を得るためには、適切なロジスティック回帰のモデルを選ぶことが重要です。
ロジスティック回帰の実装
それでは、最後にロジスティック回帰を実際に実装してみましょう。
ロジスティック回帰分析の実装は以下の手順で行います。
ライブラリやモジュールのインポート
まず始めに、今回の実装に使用するライブラリやモジュールをインポートしておきましょう。
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
import matplotlib.pyplot as plt
import seaborn as sns
データの準備
次にデータセットを準備します。
今回は 、scikit-learn の中の有名なアヤメ (iris) の花のデータセットを使用していきましょう。
このデータセットは説明変数は、がくの長さと幅、花弁の長さと幅の4つです。
上記の4つの説明変数を分析することにより3種類のアヤメの種類に分類することを目的としています。
from sklearn.datasets import load_iris
dataset = load_iris()
x = dataset.data
t = dataset.target
feature_names = dataset.feature_names
データセットを学習用とテスト用に分割します。なぜ学習用とテスト用に分割する必要があるのかわからない方は以下の記事の「学習用データセットとテスト用データセットへ分割」を参考にしてください。
参考 機械学習の基礎 | 機械学習 実践(教師あり学習:回帰)キカガクx_train, x_test, t_train, t_test = train_test_split(x, t, test_size=0.3, random_state=0)
モデルの定義
次に、モデルを定義していきましょう。
ロジスティック回帰は scikit-learn の LogisticRegression()
クラスで使用可能です。
model = LogisticRegression(C=1.0)
モデルの学習
次に、学習用データを使用して、ロジスティック回帰モデルの学習をしていきましょう。
学習には、オブジェクトの fit()
メソッドを使用します。
model.fit(x_train, t_train)
モデルの検証
次に、このモデルの精度を確認します。
テストデータ (x_test
, t_test
) における精度(正解率)を確認し、学習していないデータへの精度を検証しておきます。テストデータにおける精度は score()
メソッドで確認可能です。
print('test score : ', model.score(x_test, t_test))
結果は以下のようになりました。

今回の結果は、正解率が0.977…となりました。
この結果の意味することは、がくの長さと幅、花弁の長さと幅の4つの説明変数のデータが100個あったときに、適切なアヤメの品種を提示できたものが97個あったことを意味します。
この結果はかなり精度の高い分類モデルを作成できたことがわかります。
各オッズの確認
最後にそれぞれのオッズを確認して、どの説明変数(がくの長さと幅、花弁の長さと幅)が品種の決定に影響を及ぼしているかを確認してみましょう。
fig = plt.figure(figsize=(7, 15))
for i in range(len(model.coef_)):
ax = fig.add_subplot(3, 1, i+1)
odds_ratio = np.exp(model.coef_[i])
ax.barh(y=dataset.feature_names, width=odds_ratio)
ax.set_title('Class {} '.format(i))
上記のコードを行った結果は、以下の通りです。

例えば、class0という品種のオッズ比を見た場合、sepal width つまりがくの長さのオッズ比が一番大きいことから、
がくの長さがclass0の品種を決定するうえで大きな影響を持つことがわかります。
このように、手軽にロジスティック回帰分析を行うことでデータの分類そして分析することできます。
まとめ: ロジスティック回帰を学んだ先に何があるのか
以上です。本記事は、ロジスティック回帰について紹介させていただきました。
ロジスティック回帰分析は、2値の結果を予測する際の強力なツールであり、幅広い分野で用いられています。
そして、この手法を使用することで、どの要因がその結果に最も影響を与えているのかを明らかにすることができます。
ぜひ色々試してみてください。
まずは無料で学びたい方・最速で学びたい方へ
まずは無料で学びたい方: Python&機械学習入門コースがおすすめ

AI・機械学習を学び始めるならまずはここから!経産省の Web サイトでも紹介されているわかりやすいと評判の Python&機械学習入門コースが無料で受けられます!
さらにステップアップした脱ブラックボックスコースや、IT パスポートをはじめとした資格取得を目指すコースもなんと無料です!
最速で学びたい方:キカガクの長期コースがおすすめ

続々と転職・キャリアアップに成功中!受講生ファーストのサポートが人気のポイントです!
AI・機械学習・データサイエンスといえばキカガク!
非常に需要が高まっている最先端スキルを「今のうちに」習得しませんか?
無料説明会を週 2 開催しています。毎月受講生の定員がございますので確認はお早めに!
- 国も企業も育成に力を入れている先端 IT 人材とは
- キカガクの研修実績
- 長期コースでの学び方、できるようになること
- 料金・給付金について
- 質疑応答