テデトクログイン

← コースに戻る

重回帰と特徴量 — 行列で書く

ウォームアップ — 第1章の振り返り

1 / 1

傾き w を動かして、原点を通る直線 ŷ = w x の損失(残差二乗和)を最小にしてください。

損失(残差二乗和) = 55.620

入力が1つの直線あてはめを、入力がたくさんある場合へ広げます。ここで「特徴量」という機械学習の中心概念が、実は線形代数の行列積そのものだと分かります。

重回帰 — 内積で予測する

入力が dd 個の特徴量 x1,,xdx_1, \dots, x_d になると、予測は重み付き和です。

y^=w1x1+w2x2++wdxd+b=wx+b\hat{y} = w_1 x_1 + w_2 x_2 + \dots + w_d x_d + b = \mathbf{w}^\top \mathbf{x} + b

これは重みベクトル w\mathbf{w} と特徴量ベクトル x\mathbf{x}内積。全データをまとめると、行列 XX の各行が1サンプル、y^=Xw\hat{\mathbf{y}} = X\mathbf{w} という1つの行列積になります。前レッスンの正規方程式 (XX)1Xy(X^\top X)^{-1}X^\top y は、そのまま重回帰でも使えます。特徴量が増えても解き方は変わりません。

触ってみる — 基底関数で曲線を線形回帰に持ち込む

「線形回帰」は直線しか引けない、と思うかもしれません。ところが特徴量を作り替えれば曲線も引けます。入力 xx から 1,x,x2,x3,1, x, x^2, x^3, \dots という特徴量を作れば、予測は

y^=w0+w1x+w2x2++wkxk\hat{y} = w_0 + w_1 x + w_2 x^2 + \dots + w_k x^k

これは x2,x3x^2, x^3 を新しい特徴量と見れば、やはり重みについて線形。多項式回帰は重回帰の一種です。次数スライダーを動かしてください。

次数 1 訓練データの平均二乗誤差 = 1.112

次数を上げると訓練誤差はどこまでも下がりますが、曲線は点の間で暴れ出します(第8章の過学習の芽)。

次数を上げるほど曲線は点に食いつき、訓練誤差は下がります。でも次数を上げすぎると、点と点のあいだで曲線が暴れ出します。これが特徴量エンジニアリングの光と影 — 表現力を足すほど当てはまるが、当てはめすぎる危険も増える。第8章の過学習の芽が、ここに顔を出しています。

種明かし — 特徴量の正体

特徴量とは、生の入力を「線形和で表現しやすい形」に写す変換です。x(1,x,x2,)x \mapsto (1, x, x^2, \dots) という写像で、非線形な関係を線形回帰の土俵に持ち込む。ニューラルネット(第6章)は、この特徴量そのものをデータから学習する仕組みだと後で分かります。いまは「予測 = 特徴量と重みの内積」という骨格を押さえてください。

試してみよう

操作チャレンジ

1 / 3

点群にちょうど合う「最小の次数」を見つけてください。平均二乗誤差が 0.5 を初めて下回る次数です。

次数 1 訓練データの平均二乗誤差 = 1.1122(目標 < 0.5)