如何计算区域的下边界?
如下图所示,如何计算曲线的下边界?
设输入的数据为 \(\{(x_n, y_n)\}_{n=1}^{N}\), 直线方程为 \(y = k x + b\)。 根据拉格朗日乘子法,求解优化问题
\[\begin{align}
\min_{k, b} \quad & f(k, b) = \sum_{n=1}^{N}{ (y_n - k x_n - b)^2 } \\
\text{s.t.} \quad & y_n \ge k x_n + b, \quad n = 1, \cdots, N
\end{align}
\]
等价于最小化
\[\begin{align}
\min_{k, b} \quad & g(k, b, \lambda) = \sum_{n=1}^{N}{ [(y_n - k x_n - b)^2 + \lambda_n(k x_n + b - y_n)]} \\
\text{s.t.} \quad & \lambda_n \ge 0, \quad n = 1, \cdots, N
\end{align}
\]
其最优解满足KKT条件
\[\begin{align}
2\sum_{n=1}^{N}{(y_n - k x_n - b)x_n} = \sum_{n=1}^{N} {\lambda_n x_n} \\
2\sum_{n=1}^{N}{(y_n - k x_n - b)} = \sum_{n=1}^{N} {\lambda_n} \\
\lambda_n(y_n - k x_n - b) = 0, \quad n = 1, \cdots, N \\
y_n \ge k x_n + b, \quad n = 1, \cdots, N \\
\lambda_n \ge 0, \quad n = 1, \cdots, N
\end{align}
\]
其中,关于 \(k\) 和 \(b\) 的方程可以写为
\[\begin{align}
(2\sum_{n=1}^{N}{ x_n ^2}) k + ( 2\sum_{n=1}^{N}{ x_n}) b & = 2\sum_{n=1}^{N}{y_n x_n} - \sum_{n=1}^{N} {\lambda_n x_n} \\
(2\sum_{n=1}^{N}{x_n} ) k + 2Nb & = 2\sum_{n=1}^{N}{y_n} - \sum_{n=1}^{N} {\lambda_n}
\end{align}
\]
写成矩阵形式
\[\begin{align}
\left[\begin{array}{cc}
\sum_{n=1}^{N}{ x_n ^2} & \sum_{n=1}^{N}{ x_n} \\
\sum_{n=1}^{N}{x_n} & N
\end{array} \right]
\left[ \begin{array}{c} k \\ b \end{array} \right]
& = \left[\begin{array}{c}
\sum_{n=1}^{N}{y_n x_n} - \frac{1}{2} \sum_{n=1}^{N} {\lambda_n x_n} \\
\sum_{n=1}^{N}{y_n} - \frac{1}{2}\sum_{n=1}^{N} {\lambda_n}
\end{array}\right]
\end{align}
\]
由矩阵的逆运算,可得
\[\begin{align}
\left[\begin{array}{cc}
\sum_{n=1}^{N}{ x_n ^2} & \sum_{n=1}^{N}{ x_n} \\
\sum_{n=1}^{N}{x_n} & N
\end{array} \right] ^{-1}
= \frac{1}{N\sum_{n=1}^{N}{x_n^2} - (\sum_{n=1}^{N}{x_n})^2}
\left[\begin{array}{cc}
N & - \sum_{n=1}^{N}{ x_n} \\
- \sum_{n=1}^{N}{x_n} & \sum_{n=1}^{N}{ x_n ^2}
\end{array} \right]
\end{align}
\]
于是,有
\[\begin{align}
\left[ \begin{array}{c} k \\ b \end{array} \right] & = \frac{1}{N\sum_{n=1}^{N}{x_n^2} - (\sum_{n=1}^{N}{x_n})^2}
\left[\begin{array}{c}
\sum_{n=1}^{N}{y_n x_n} - \frac{1}{2} \sum_{n=1}^{N} {\lambda_n x_n} \\
\sum_{n=1}^{N}{y_n} - \frac{1}{2}\sum_{n=1}^{N} {\lambda_n}
\end{array}\right]
\end{align}\]