Интуиция
Точка x
на плоскости, определяемой нормалью n
, и точка на плоскости p
подчиняется: n.(x - p) = 0
. Если точка y
не лежит на плоскости, n.(y -p)
не будет равна нулю, поэтому полезным способом определения стоимости является |n.(y - p)|^2
. Это квадрат расстояния y
от плоскости.
При равных весах вы хотите найти n
, который минимизирует общую квадратическую ошибку при суммировании по точкам:
f(n) = sum_i | n.(x_i - p) |^2
Теперь предполагается, что мы знаем некоторую точку p
, лежащую на плоскости. Мы можем легко вычислить единицу как центроид, который является просто компонентным средним для точек в облаке точек и всегда будет лежать в плоскости наименьших квадратов.
Решение
Давайте определим матрицу M
, где каждая строка является ith
точкой x_i
минус центроид c
, мы можем переписать:
f(n) = | M n |^2
Вы должны быть в состоянии убедить себя, что эта версия умножения матриц такая же, как сумма в предыдущем уравнении.
Затем вы можете взять разложение по сингулярному значению из M
, и тогда нужный вам n
будет задан правым единственным вектором M
, который соответствует наименьшему единственному значению.
Чтобы включить вес, вам просто нужно определить вес w_i
для каждой точки. Вычислите c
как средневзвешенное значение точек и измените sum_i | n.(x_i - c) |^2
на sum_i | w_i * n.(x_i - c) |^2
, а матрицу M
аналогичным образом. Затем решите, как и раньше.