こんにちは!ぼりたそです!
今回は重回帰分析についてわかりやすくまとめた記事を作成しました。
この記事は以下のポイントでまとめています。
今回は具体的な重回帰分析の実行などは行なっていませんが、以下の記事にてPythonによる重回帰分析の実装を行なっていますので、興味がある方はご参考にしていただければと思います。
では詳細について説明していきます。
重回帰分析とは?
まず、重回帰分析とは何かについて説明します。
重回帰分析は、統計学や機械学習の中でもよく用いられる分析手法の一つです。主に、複数の説明変数(特徴量)と1つの目的変数(ターゲット)との関係を分析するのに使われます。
例を挙げながら説明します。ある店舗の売上を広告費と入店者数から予測すると仮定します。
■説明変数
- 広告費:どれくらい店舗の広告に費用をかけたか
- 入店者数:どれくらいの人が店舗に入店したか
■目的変数
- 店舗の売上:どれくらい店舗で売上があったか
重回帰分析では、これらのデータを使って、目的変数である「売上」を説明変数である「広告費」「入店社数」から予測することが目的です。
数学的に表現すると、重回帰分析では以下のようなモデルを考えます
売上 = $a_1$ × 広告費 + $a_2$ × 入店者数
ここで、$a_1$, $a_2$はそれぞれ回帰係数と呼ばれるもので、変数の相関関係や重要度を把握することができます。
重回帰分析のメリットとデメリット
次に重回帰分析のメリットとデメリットについてご説明します。
まずメリットについてです。
■メリット
次にデメリットについてです。
■デメリット
重回帰分析は複数の説明変数を使用してモデルを構築できるため、予測精度向上や変数の影響度も確認できて便利な手法なのですが、反面で変数を多く採用することによる過学習のリスクや多重共線性のリスクが発生するので要注意ですね。
変数の重要度
次にメリットでも挙げましたが変数の重要度について詳しく説明します。
ここでは冒頭で挙げたように「広告」を「広告費」、「入店者数」で予測するモデルを例として説明します。
結論から言いますと重回帰分析では標準化回帰係数から変数間の重要度を比較や目的変数との関係性を評価することができます。
標準化回帰係数とは、説明変数と目的変数を標準化した後に求められる回帰係数のことを指します。
標準化とは簡単に言うとスケールを合わせるということです。具体的には最小値を0, 最大値を1として変数同士のスケールを揃えるということですね。
例のように標準化せずに「売上」を「広告費」と「入店者数」でモデル構築した場合、広告費が1円増えるのと入店者数が1人増えるのでは同じ1単位増えるだけですが、スケールが全く異なります(そもそも円と人では数値を比較できませんよね)。なので、この1単位のスケールを揃えることを標準化と言います。
標準化回帰係数を算出したら以下のような観点から評価することができます。
多重共線性
最後に重回帰分析のデメリットでも挙げた多重共線性についてご説明します。
多重共線性(Multicollinearity)とは、重回帰分析などの回帰モデルにおいて、説明変数同士が強い相関を持つ状態のことを指します。
多重共線性の影響
多重共線性によって具体的に以下のような影響が生じる可能性が高いです。
小生も実務で重回帰分析を使用することもありますが、多重共線性には苦しめられています。適切な手法を使って解決することで、より信頼性のあるモデルを構築するようにしましょう。
多重共線性の評価
次に多重共線性があるかをどのように評価するかをご説明します。
多重共線性を評価するために、一般的に以下の方法が使われます。
以上の方法を使って、多重共線性の存在を評価することができます。ただし、どの指標を使うかは場合によって異なる場合があるため、複数の評価指標を併用し、結果を総合的に判断することが重要かと思います。
多重共線性へのアプローチ
最後に多重共線性へのアプローチについて説明します。
やっかいな多重共線性ですが、アプローチ方法もきちんとあります。
具体的には以下のようなものがあります。
個人的には重要度の比較がしたいのであれば変数の削除が一番手っ取り早いのかなとは感じています。他の手法も効果的なのですが、変数の解釈などが難しくなるため、本末転倒感がありますね。
単純に予測などに使用する場合であれば2, 3などの手法は効果的だと感じています。
終わりに
以上が重回帰分析についての解説になります。重回帰分析は手法も簡単で変数の影響度などを比較できるので非常に重宝しているのですが、多重共線性などのトラップを回避しなければいけないので注意が必要ですね。実務だと多重共線性には本当に苦しめられます。
きちんと使用すればすごく便利な分析手法になりますので、注意点を踏まえた上で使いこなしていきましょう!