【2通りの方法】最小二乗法を行列を使って解く方法をわかりやすく解説

2024年3月7日

当ページのリンクには広告やプロモーションが含まれています。

高次式に最小二乗法を適用するには「行列」を使うのが便利

下記のデータが得られた時に、xからyを予測する回帰式を求めたいとします。

 

【6つもあった!】Excelで単回帰分析の最小二乗法を解く方法をすべて実演

【6つの方法を実演!】Excelで最小二乗法を計算する方法をわかりやすく

で回帰式をExcelで求める6通りの方法を紹介しましたが、この方法では直線の回帰式しか求められません。

つまり

y=ax+b

のようなxの1次式の回帰式しか求められません。

そこで今回は、2次式や3次式などの高次の回帰式を求める方法を紹介します。

行列演算を使うのですが、2通りの方法があります。

係数を微分する方法と、変数を微分する方法です。

今回の例題は2次式で十分に近似できますが、3次式や4次式などの複雑な回帰式であっても、この方法は使えます。

尚、このように高次式による回帰式は多項式回帰とも呼ばれます。

 

最小二乗法を行列で解く2通りの方法

二乗誤差を係数で偏微分する方法

xからyを推定する式を

f(x) = ax2+bx+c

と置きます。

すると、実測値yと推定値f(x)との誤差は

y-f(x)

なので、二乗誤差

e = {y-f(x)}2

が最小となるような係数a、b、cを求めることになります。

しかし、1点だけについて誤差を小さくしても仕方ないので、10点すべてについての合計誤差

E = Σ{y-f(x)}2

が最小となるような係数a、b、cを求めます。

 

この二乗誤差Eを書き直すと

E = Σ{y-f(x)}2

= Σ(y- ax2-bx-c)2

となります。

このEは各係数で偏微分した式がすべてゼロとなる時に最小値を取ります。

すなわち、

∂E/∂a = 0

∂E/∂b = 0

∂E/∂c = 0

をすべて満たすようなa、b、cを求める問題に帰着します。

 

一見、難しそうに思えますが、例えばaで偏微分する時にはその他の変数はすべて定数と見なせるので簡単です。

∂E/∂a = -2Σx2(y- ax2-bx-c) = 0

この時、高校で習った合成関数の微分の技を使っています。

{g(f(x))}’=g’(f(x))f’(x)

詳しくは、下記サイトを参照して下さい。

>> 【基本】合成関数の微分 | なかけんの数学ノート

 

bやcでの偏微分も同じようにできます。

∂E/∂b = -2Σx(y- ax2-bx-c) = 0

∂E/∂c = -2Σ(y- ax2-bx-c) = 0

 

これらの3式は、次のように規則的な形に書き直せます。

∂E/∂a = -2Σx2(y- ax2-bx-c) = 0

aΣx4+bΣx3+cΣx2=Σx2y

 

∂E/∂b = -2Σx(y- ax2-bx-c) = 0

aΣx3+bΣx2+cΣx1=Σx1y

 

∂E/∂c = -2Σ(y- ax2-bx-c) = 0

aΣx2+bΣx1+cΣx0=Σx0y

 

そして行列を使うと、更にきれいな形になります。

これを

と置くと

Ax = b

と書けます。

そして、行列Aとbは観測した10組のデータがあるので、次にように計算できて定数行列になります。

クリックすると拡大します

 

後は、x=A-1bを解くだけです。

これもExcelで次のように計算できます。

クリックすると拡大します

 

これで誤差Eを最小化する係数a、b、cが求まりました。

yを推定する近似式(回帰式)は

f(x) = 1.8x2-5.7x+6.7

です。

 

二乗誤差の変数で微分する方法

もう一つの方法でもxからyを推定する式を

f(x) = ax2+bx+c

と置きます。

すると誤差は

f(x)-y

と表せます。

観察データは10組ありますので、10個の誤差が計算できます。

そして、これをまとめて次のように行列で表すことができます。

クリックすると拡大します

 

すると、二乗誤差である

||Ax – b||2

を最小にするようなa、b、cを求める問題に帰着します。

 

これは次のように式変形できます。

||Ax – b||2

= (Ax – b) T (Ax – b)

= (x TA T – b T)(Ax – b)

= xTATAx – xTATb – bTAx + bTb

= xTATAx – 2xTATb + bTb

 

これを最小化するxは、xで微分してゼロと置いた式を解けば求まります。

行列の微分で一見難しそうですが、すべての項はスカラーですので簡単です。

第一項は対称行列であるATAの各成分にx行列の各成分の二乗を掛けているので、x2の微分が2xになるように2ATAxになります。

また第二項は、ATbの各成分に2xTの各成分を掛けているので、2xの微分が2になるように2ATbになります。

第三項は定数で微分するとゼロなので、整理すると

ATAx = ATb

となります。

これをxについて解くと、

x = (ATA)-1ATb

です。

 

後は数字を入れて計算するだけです。

Excelで次のように計算できます。

クリックすると拡大します

 

クリックすると拡大します

 

yを推定する近似式(回帰式)は

f(x) = 1.8x2-5.7x+6.7

になりました。

これは、一番目の方法で計算した結果と同じです。

 

補足

ここで紹介した2つの方法は勾配降下法などのような近似解を求める数値的解法ではなく、ズバリの解を求める解析的解法です。

4次や5次などの高次の回帰式でも同じやり方で解析的に求められるので、大変便利な方法だと思います。

 

Udemyの関連講座

いちばん理解できる統計学ベーシック講座その2【相関分析・回帰分析】

統計学の基礎を学べるベーシック講座「その2」です。統計学を用いたデータ分析の基礎となる「相関分析・回帰分析」について豊富な図を用いて説明していきます。相関分析や回帰分析という一生モノのスキルをぜひこの機会に一緒に身につけましょう!

 

【データ分析入門(最初の3日)】文系の方や統計・データサイエンスにつまずいた方も実務で使える(考え方とExcel活用)

データ分析の流れ(課題を捉え、分析し、結果を伝える)を通して理解します。演習では架空の会社を想定したデータで、エクセルを利用してグラフ作成・記述統計・回帰分析を行い最終報告までのスキルを身につけます。社内データ分析者向けの入門講座です。

 

【ゼロから始めるデータ分析】 ビジネスケースで学ぶPythonデータサイエンス入門

分析コンペティションに参加しながら回帰分析による売上予測、機械学習での顧客ターゲティングなど実践的なビジネス課題でデータ分析の一連の流れを身に着けよう。 プログラミング初心者にもおすすめ。

 

イメージでわかる線形代数 – 連立方程式と固有値問題 -:社会人になってから学ぶ数学(初級編)

最先端科学・テクノロジーに繋がる強力な数学理論「線形代数」を1時間で理解できる!小学校から大学まで一気に駆け上るスピード感のあるコースです。

 

線形代数の理論とPythonによる実践

機械学習や統計解析の理論としての前提である線形代数を分かりやすく,かつ本格的に解説します. 理論だけでなくPythonによる実践方法についても学習できます.データサイエンスを目指す人には必須のカリキュラムです.

 

【現役データサイエンティストが教える】AI・機械学習を学ぶための線形代数〜エクセルとPythonで実践

機械学習やAIの技術を学ぶためには、線形代数の理解がとても大切です!このコースでは線形代数学(ベクトルや行列)について学びながら、エクセルとPythonで簡単な行列計算を実践してみましょう!

 

コンピュータビジョン数学基礎:数式とPythonで学ぶ最適化と最小二乗問題

専門的な数式に取り組むための数学の背景知識をマスターしよう