Модифицированная ортогонализация Грама-Шмидта
Материал из MachineLearning.
(→Литература) |
|||
(1 промежуточная версия не показана) | |||
Строка 143: | Строка 143: | ||
Тогда в начале <tex>j</tex>-го шага все столбцы <tex>g_j , . . . , g_n</tex> по построению будут ортогональны всем столбцам <tex>g_1, . . . , g_{j-1}</tex>. При этом подматрицы <tex>G_j ,\ R_j ,\ T_j</tex> и вектор <tex>\alpha_j</tex> останутся такими же, как и до модификации. | Тогда в начале <tex>j</tex>-го шага все столбцы <tex>g_j , . . . , g_n</tex> по построению будут ортогональны всем столбцам <tex>g_1, . . . , g_{j-1}</tex>. При этом подматрицы <tex>G_j ,\ R_j ,\ T_j</tex> и вектор <tex>\alpha_j</tex> останутся такими же, как и до модификации. | ||
- | Описанная модификация обладает важным преимуществом. Теперь на каждом шаге можно выбрать столбец <tex>g_m \in {g_j , . . . , g_n}</tex>, добавление которого наиболее выгодно. Чтобы не менять обозначений, будем полагать, что перед добавлением столбцы <tex>g_j</tex> и <tex>g_m</tex> переставляются местами (при реализации придётся сохранять соответствие между старой и новой нумерацией признаков, но мы не будем останавливаться на столь мелких технических деталях). | + | Описанная модификация обладает важным преимуществом. Теперь на каждом шаге можно выбрать столбец <tex>g_m \in \{g_j , . . . , g_n\}</tex>, добавление которого наиболее выгодно. Чтобы не менять обозначений, будем полагать, что перед добавлением столбцы <tex>g_j</tex> и <tex>g_m</tex> переставляются местами (при реализации придётся сохранять соответствие между старой и новой нумерацией признаков, но мы не будем останавливаться на столь мелких технических деталях). |
Возможны альтернативные критерии выбора добавляемого столбца: | Возможны альтернативные критерии выбора добавляемого столбца: | ||
Строка 151: | Строка 151: | ||
2) столбец, наиболее коррелированный с вектором ответов: <tex>\frac{y^Tg_m}{||g_m||} \to \max_m</tex>; его добавление ведёт к скорейшему убыванию функционала <tex>Q</tex>; | 2) столбец, наиболее коррелированный с вектором ответов: <tex>\frac{y^Tg_m}{||g_m||} \to \max_m</tex>; его добавление ведёт к скорейшему убыванию функционала <tex>Q</tex>; | ||
- | 3) столбец, добавление которого ведёт к наименьшему увеличению нормы | + | 3) столбец, добавление которого ведёт к наименьшему увеличению нормы вектора коэффициентов <tex>||\alpha_j||</tex>, что соответствует применению регуляризации; |
- | + | ||
4) столбец, после добавления которого значение функционала качества <tex>Q</tex> на независимой контрольной выборке <tex>X^k = \{x'_1, . . . , x'_k\}</tex> окажется минимальным, что соответствует применению скользящего контроля (hold-out CV). | 4) столбец, после добавления которого значение функционала качества <tex>Q</tex> на независимой контрольной выборке <tex>X^k = \{x'_1, . . . , x'_k\}</tex> окажется минимальным, что соответствует применению скользящего контроля (hold-out CV). | ||
Строка 219: | Строка 218: | ||
13: <tex>\ \ \ \ g_i</tex> := <tex>g_i - \tilde{g}_jr_{ji}</tex>; (ортогонализация <tex>g_i</tex> относительно <tex>g_j</tex>); | 13: <tex>\ \ \ \ g_i</tex> := <tex>g_i - \tilde{g}_jr_{ji}</tex>; (ортогонализация <tex>g_i</tex> относительно <tex>g_j</tex>); | ||
- | 14: <tex>\ \ \ \ Z_i</tex> := <tex>Z_i - | + | 14: <tex>\ \ \ \ Z_i</tex> := <tex>Z_i - r^2_{ji}</tex>; (теперь <tex>Z_i = ||g_i||^2</tex>); |
15: <tex>\ \ \ \ D_i</tex> := <tex>D_i - d_jr_{ji}</tex>; (теперь <tex>D_i = y^Tg_i</tex>); | 15: <tex>\ \ \ \ D_i</tex> := <tex>D_i - d_jr_{ji}</tex>; (теперь <tex>D_i = y^Tg_i</tex>); | ||
Строка 236: | Строка 235: | ||
*''К.В. Воронцов'', [[Машинное обучение (курс лекций, К.В.Воронцов)|Машинное обучение (курс лекций)]] | *''К.В. Воронцов'', [[Машинное обучение (курс лекций, К.В.Воронцов)|Машинное обучение (курс лекций)]] | ||
- | {{ | + | {{ЗаданиеВыполнено|DValov|Константин Воронцов|7 января 2010}} |
+ | |||
+ | [[Категория:Линейная регрессия]] | ||
+ | [[Категория:Методы отбора признаков]] |
Текущая версия
Модифицированная ортогонализация Грама-Шмидта - известный алгоритм ортогонализации, который строит ортогональные векторы
, линейная оболочка которых совпадает с линейной оболочкой .
Введение
Рассмотрим ортогональное разложение , где - верхняя треугольная матрица размера × , - ортогональная × - матрица, . Для любой матрицы существует бесконечно много разложений указанного вида. Имея одно из них, легко выразить псевдообратную матрицу через и :
.
Для вычисления псевдообратной достаточно построить какое-нибудь ортогональное разложение матрицы , обратить верхнюю треугольную матрицу и умножить её на . Этот метод во многом удобнее явного обращения матрицы.
Метод ортогонализации Грама-Шмидта
Для построения разложения воспользуемся процессом ортогонализации Грама-Шмидта. Запишем матрицы и по столбцам:
;
.
Волной здесь и далее обозначается операция нормирования вектора:
.
Процесс ортогонализации Грама-Шмидта строит ортогональные векторы , линейная оболочка которых совпадает с линейной оболочкой :
;
;
· · ·
.
Легко проверить, что для всех из , , векторы и ортогональны.
Вспомогательные утверждения
Лемма 1.1. На -м шаге процесса, , матрица представима в виде ортогонального разложения , где
- ортонормированная матрица;
- верхняя треугольная матрица,
По окончании процесса ортогонализации получаем ортогональное разложение .
С вычислительной точки зрения процесс Грама-Шмидта удобен тем, что на каждом шаге матрицы и получаются путём дописывания справа по одному столбцу к матрицам и соответственно. При этом предыдущие столбцы не изменяются (если не считать изменением дописывание нулей снизу к матрице - при разумной программной реализации эти нули всё равно не хранятся).
В следующей лемме утверждается, что обратная матрица также является верхней треугольной и формируется путём дописывания столбцов справа.
Лемма 1.2. Пусть матрицы невырождены и в блочной записи имеют вид
;
, ,
где - скаляр, - вектор-столбец размера . Тогда матрицы могут быть вычислены по рекуррентной формуле
;
, ,
где - скаляр, - вектор-столбец размера .
Замечание 1.1. Обеспечить невырожденность матрицы в процессе ортогонализации очень просто. Допустим, матрица невырождена. Поскольку - верхняя треугольная, вырожденность может возникнуть только в том случае, если . Такое возможно только при , а это означает, что вектор линейно зависит от векторов . Если в ходе процесса оказывается равным нулю, то коэффициент обнуляется и -й признак далее не учитывается, как будто его вообще не существовало. Если не равен, но близок к нулю, может возникнуть проблема неустойчивости решения, поскольку на приходится делить. На практике признак исключают, например, по такому условию: , где имеет порядок .
Назовём вектор текущим вектором коэффициентов на -м шаге. Этот вектор имеет размерность . По окончании процесса .
Лемма 1.3. Пусть выполняются условия предыдущей леммы. Тогда на -м шаге процесса вектор может быть вычислен по рекуррентной формуле
,
, .
Назовём величину текущим значением функционала на -м шаге. Оно равно кратчайшему расстоянию от до линейной оболочки столбцов . По окончании процесса . Следующая лемма показывает, что текущее значение от шага к шагу только уменьшается.
Лемма 1.4. Значения могут быть вычислены в ходе ортогонализации по рекуррентной формуле
;
.
Лемма 1.5. Текущий вектор невязок на -м шаге процесса ортогонализации вычисляется по рекуррентной формуле
;
.
Алгоритм 1.1. Ортогонализация Грама-Шмидта
1: инициализация: := := ;
2: для :=
3: для :=
4: := ; (вычисление -й компоненты вектор-столбца );
5: := ; (ортогонализация относительно );
6: := ;
Модифицированная ортогонализация Грама-Шмидта
Если вместо := вычислять := , то формально результат не изменится, поскольку .
Данная модификация повышает численную устойчивость алгоритма. Это объясняется тем, что вектор обладает минимальной нормой среди всех векторов вида , где - произвольные коэффициенты. Поэтому при скалярном умножении на ошибки накапливаются существенно медленнее.
Прежде чем переходить к следующей модификации, запишем основную часть алгоритма ортогонализации, вычисляющую и .
Изменим порядок ортогонализации столбцов. До сих пор мы ортогонализовали столбец относительно предыдущих столбцов . Но можно сделать и подругому - ортогонализовать все последующие столбцы относительно :
:= .
Тогда в начале -го шага все столбцы по построению будут ортогональны всем столбцам . При этом подматрицы и вектор останутся такими же, как и до модификации.
Описанная модификация обладает важным преимуществом. Теперь на каждом шаге можно выбрать столбец , добавление которого наиболее выгодно. Чтобы не менять обозначений, будем полагать, что перед добавлением столбцы и переставляются местами (при реализации придётся сохранять соответствие между старой и новой нумерацией признаков, но мы не будем останавливаться на столь мелких технических деталях).
Возможны альтернативные критерии выбора добавляемого столбца:
1) столбец с максимальной нормой , что соответствует выбору столбца , максимально некоррелированного с ; применение этого критерия решает проблему вырожденности (см. Замечание 1.1); здесь существенно, чтобы матрица была заранее стандартизована;
2) столбец, наиболее коррелированный с вектором ответов: ; его добавление ведёт к скорейшему убыванию функционала ;
3) столбец, добавление которого ведёт к наименьшему увеличению нормы вектора коэффициентов , что соответствует применению регуляризации;
4) столбец, после добавления которого значение функционала качества на независимой контрольной выборке окажется минимальным, что соответствует применению скользящего контроля (hold-out CV).
Алгоритм 1.2. Решение линейной задачи наименьших квадратов путём ортогонализации Грама-Шмидта с последовательным добавлением признаков
Вход:
- матрица информации;
- вектор ответов;
- параметр критерия останова.
Выход:
- вектор коэффициентов линейной комбинации;
- минимальное значение функционала.
1: инициализация:
:= := := := :=
2: для :=
3: выбор по критериям и
4: перестановка местами столбцов:
5: := ; нормировка: :=
6: вычисление текущего значения функционала:
:= ; (эффективное вычисление := );
:=
7: обращение верхней треугольной матрицы :
(вектор-столбец длины );
8: вычисление текущего вектора коэффициентов:
9: если то
10: прекратить добавление столбцов; выход;
11: для :=
12: := ; (компоненты вектор-столбца );
13: := ; (ортогонализация относительно );
14: := ; (теперь );
15: := ; (теперь );
16: конец цикла по .
Наконец, можно использовать совокупность критериев, выбирая тот столбец, добавление которого выгодно с нескольких точек зрения.
В Алгоритме 1.2 применяются первые два критерия.
Алгоритм состоит из основного цикла по , в котором поочерёдно добавляются столбцы. На шаге 3 принимается решение, какой из оставшихся столбцов добавить, затем он меняется местами со столбцом . Шаги 5–8 обновляют текущие значения функционала , обратной матрицы и коэффициентов . На шаге 9 проверяется условие останова: если достаточная точность аппроксимации уже достигнута, то добавлять оставшиеся столбцы не имеет смысла. Таким образом, Алгоритм 1.2 осуществляет отбор информативных признаков (features selection). Шаги 11–15 реализуют вложенный цикл, в котором все последующие столбцы ортогонализуются относительно только что добавленного столбца. Заодно обновляются значения квадратов норм столбцов и скалярных произведений , необходимые для эффективного выбора признака на шаге 3 в следующей итерации.
Литература
- К.В. Воронцов, Машинное обучение (курс лекций)
Данная статья была создана в рамках учебного задания.
См. также методические указания по использованию Ресурса MachineLearning.ru в учебном процессе. |