【機械学習】重回帰分析とは

2022 年 6 月 6 日 by higakik

重回帰分析とは

具体例があるとわかりやすいと思いますので、「健康診断の結果から寿命を重回帰分析にて予測する」という設定で進めていきます。

まず、今回求めたいものは「寿命」となるわけですが、BMI数値のデータのみでは流石に分かりそうにないです。
肝臓の数値や中性脂肪値、コレステロール値なども必要そうです。
さらに言えば現在の年齢や喫煙者かどうかなども寿命に大きく関わりそうです。
このように、たくさんのデータ(入力変数)から、ある特定のものの予測することを「重回帰分析」と言います。
補足ですが、BMI値のみから寿命を予測する場合にはこちらを「単回帰分析」と言います。

モデルの作り方

今回使うデータは説明用に、年齢、喫煙年数(20本/年)、血圧、BMIとします。
これらのデータは、主に「入力変数」と呼ばれますので覚えておきましょう。
そして予測したい「寿命」を予測値と呼びます。
予測値を求めるには今回の入力変数を全て足せばいいというわけではなく、
色々と学習準備をしないといけません。

データ加工

それぞれの入力変数は例えば、年齢は30歳、喫煙年数は10年、血圧は140mmHgなど、数値も単位もバラバラですよね。
これを大体同じくらいの大きさになるようにデータを加工する必要があります。

重みをかける

次に重要度を考慮するためにそれぞれの入力変数に重みをかけていきます。
重みとは簡単に説明すると、目的変数の予測値に対する重要性を考慮して、
予測する際の影響度を変化させるものです。
仮に今回使用する入力変数に視力が入っていたとしましょう。
視力は確かに目の病気にかかっていて、寿命に関わる危機状態の場合も考えられなくないですが、確率としてはほとんど少なく、普通は目が悪いだけで、寿命に関係するほど重要ではないでしょう。
この場合、視力についての重みは0にして今回の予測に不必要なものとしたりします。
このように、それぞれの入力変数に重みをかけて、寿命に関係するものほど分析に影響を
与えるようにするのが重みをかける意味です。

バイアス、バリアンス

バイアスやバリアンスを加えたりもします。
バイアスとは予測値と正解値との偏りのことで、バリアンスとはばらつきの誤差のことです。
同じデータ100件用意して、正解値の平均寿命が80歳、予測値の平均寿命が110歳
だとすると、これはバイアスが大きいと言うことになります。
また、正解値の寿命が70~90歳以内に全てあるのに、予測値では20~150歳の範囲
となっていると、これはバリアンスが大きいと言うことになります。
どちらに関しても小さい方がいいので、それをうまく反映させるために
モデルに誤差を小さくするよう追加します。

終わりに

大体このくらいを考慮して、学習させるためのロジックを考えれば、それっぽい重回帰分析は可能です。
しかし、使うデータや求めたいものによってかなり幅広くモデル作成で行うことは変わります。
今回は最低限必要そうなものを紹介しましたが実際に作成する場合には、より学習する必要があります。
そのため、理論的には簡単に見えますが一から作成するのはかなり難しいです。
(線形代数や微分の知識が必須だったり。。)
モデルについてはネットにたくさん出回っていますので、既存のものから自分が使いたいように変更するのが楽ですし、お勧めします。
PythonのScikit-learnなどのツールはとても簡単にデータ加工や分析、数式の実装ができますので、これから機械学習を触ってみたい方は、そちらから挑戦してみてください。

TrackBack