別名・略称:(なし)
偏微分(Partial Derivative):多変数関数の特定変数による微分
関数 $f(x, y) = x^2 + 3xy + y^2$ について:
2 つの偏微分を並べると勾配 $\nabla f$:
$\nabla f = \left( \frac{\partial f}{\partial x}, \frac{\partial f}{\partial y} \right) = (2x+3y,\ 3x+2y)$
この向きが 関数が最も急に増える方向。 反対向きに進めば最小値に近づく。
線形回帰 $\hat y = \beta_0 + \beta_1 x$ の損失 $L = \sum(y_i - \hat y_i)^2$ を $\beta_1$ で偏微分:
$$\frac{\partial L}{\partial \beta_1} = -2\sum_i x_i (y_i - \beta_0 - \beta_1 x_i)$$
これを 0 にする $\beta_1$ が最小二乗解。 数値最適化なら 勾配降下法:
$$\beta_1^{(t+1)} = \beta_1^{(t)} - \eta \cdot \frac{\partial L}{\partial \beta_1}$$
これを反復するとパラメータが最小値に向かう。 $\eta$ は学習率。
SSDSE-B-2026(47 都道府県・2023 年データ)を題材にした最小コード:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | import numpy as np import sympy as sp # 数式の偏微分(SymPy) x, y = sp.symbols('x y') f = x**2 + 3*x*y + y**2 print('∂f/∂x =', sp.diff(f, x)) # 2*x + 3*y print('∂f/∂y =', sp.diff(f, y)) # 3*x + 2*y # 数値的偏微分(中心差分) def numerical_partial(f, x, i, h=1e-5): x1, x2 = x.copy(), x.copy() x1[i] += h x2[i] -= h return (f(x1) - f(x2)) / (2*h) |