В случае, если кто-то обнаружит это позже, матрица X будет n x m, поэтому никогда не будет обратимой для n, не равного m. Нормальные уравнения для решения OLS будут включать инверсию матрицы X ^ T * X, и, пока X высокий и имеет линейно независимые столбцы, это всегда будет обратимо ( обычно в случае, если у вас есть больше измерений чем переменные для оценки).
В случае, если X ^ T * X не является обратимым, вам придется сделать какое-то упрощающее предположение. Обычно это предположение (грубо говоря), что веса b малы, если нет достаточно данных, чтобы показать обратное. Это захвачено преобразованием проблемы квадратов, чтобы получить
свести к минимуму || Xb - y || ^ 2 + лямбда * || b || ^ 2
где лямбда - положительный скаляр. По существу это наказывает большие значения параметров b. Вы можете, конечно, сделать этот штраф произвольно большим или маленьким, сделав масштабное лямбда. Вместо решения OLS
b_ols = inv (X ^ T * X) * X ^ T * y
Вы можете сделать математику, чтобы найти решение регуляризованной задачи:
b_reg = inv (X ^ T * X + лямбда * I) * X ^ T * y
Матрица всегда будет обратимой для любого положительного значения лямбды. Чтобы найти «хорошее» значение лямбды, вам обычно нужно сделать что-то вроде перекрестной проверки