Метод наименьших углов (пример)
Материал из MachineLearning.
Метод наименьших углов (англ. least angle regression, LARS) - алгоритм отбора признаков в задачах линейной регрессии. Алгоритм предложили Бредли Эфрон, Тревор Хасти и Роберт Тибширани [1].
LARS решает следующую задачу. Пусть назначена линейная регрессионная модель. При большом количестве свободных переменных возникает проблема неустойчивого оценивания весов модели. LARS предлагает метод выбора такого набора свободных переменных, который имел бы наиболее значимую статистическую связь с зависимой переменной. Также LARS предлагает метод оценки весов.
Алгоритм LARS похож на алгоритм шаговой регрессии. Различие в том, что алгоритм LARS, вместо последовательного добавления свободных переменных, на каждом шаге изменяет их веса. Веса увеличиваются так, чтобы доставить наибольшую корреляцию с вектором регрессионных остатков. Основным достоинством LARS является то, что он выполняется за число шагов, не превышающее число свободных переменных. Частным случаем алгоритма LARS является алгоритм LASSO.
Содержание |
Постановка задачи
Задана выборка - матрица , столбцы которой соответствуют независимым переменным, а строки - элементам выборки и вектор , содержащий элементы зависимой переменной. Назначена линейная модель .
Обозначим множество столбцов матрицы как . Пусть выполнены условия нормировки
Предполагается, что векторы линейно независимы.
Критерием качества модели назначена среднеквадратичная ошибка
Требуется найти для каждого шага LARS вектор весов и набор столбцов, доставляющий наибольшую корреляцию векторов и .
Описание алгоритма
LARS последовательными шагами строит оценку коэффициентов . На -м шаге только элементов вектора отличны от нуля. Алгоритм последовательно вычисляет приближение вектора значений зависимой переменной
Для приближений используется вектор корреляций столбцов матрицы с вектором остатков
На -м шаге новое значение приближения вектора значений зависимой переменной вычисляется как
Здесь - нормированный вектор, задающий биссектрису между добавляемым вектором — столбцом матрицы и вектором регрссионных остатков.
Он вычисляется следующим образом. Пусть - подмножество индексов столбцов матрицы . Это подмножество задает подматрицу
где множитель и - мощность множества . Обозначим ковариационную матрицу
где - вектор, состоящий из единиц.
Вычислим единичный вектор
Вектор образует со столбцами матрицы одинаковые углы, меньшие . Справедливы равенства
Выполнение алгоритма
Назначим начальную оценку вектора значений зависимой переменной . Вычислим текущую оценку и вектор корреляций
Найдем текущий набор индексов , соответствующих признакам с наибольшими абсолютными значениями корреляций
Пусть для Построим матрицы , . Вычислим вектор и вектор скалярных произведений
Пересчитаем значение вектора
где
Минимум берется по всем положительным значениям аргументов для каждого .
Алгоритм повторяется раз.
Замечание
Величина в формуле (*) интерпретируется следующим образом. Определим
при условии . Корреляция по добавляемому -му признаку равна
Для получаем
Это означает, что все рассматриваемые на данном шаге максимальные абсолютные корреляции уменьшаются на одну и ту же величину. Из предыдущих двух соотношений мы видим, что при корреляция принимает наибольшее значение при
Аналогично, корреляция принимает наибольшее значение при
Таким образом, в выражении (*) - минимальная положительная величина, при которой новый индекс может быть добавлен в набор .
Для иллюстрации работы алгоритма задумаем модель (более подробно см.).
f = inline('w(1)*x.^0 + w(2)*x.^(1/2) + w(3)*x.^1', 'w','x'); % synthetic model b = [1 -2 2]'; % parameters x = [0.1:0.1:1]'; % independent variable y = f(b,x); % dependent variable
Пусть имеется выборка, в которой вектор-столбцы матрицы
и вектор .
% We use the following features to find the model we thought of g = {'x.^0', 'x.^(1/2)', 'x.^1', 'x.^(3/2)', 'x.*log(x)'}; % make the sample set; columns are independent variables X = eval([ '[' g{1} ' ' g{2} ' ' g{3} ' ' g{4} ' ' g{5} ']']);
Принята линейная модель . Требуется последовательно отобрать вектор-столбцы матрицы , которые имеют наибольшую корреляцию с вектором остатков. Алгоритм LARS в данном примере сделает шагов.
[n,p] = size(X); muA = zeros(n,1); % estimation of the dependent variable beta = zeros(p,1); % estimation of parameters betaLtst = beta'; % keep parameters in a storage for i = 1:p % correlation coefficients between each feature (column of X) and vector of residuals c = X'*(y-muA); % note that columns of X are centered and normalized [C, A] = max(abs(c)); % find maximal value of correlation and corresponding index j of column in X % A = find(C == abs(c)); % Aplus = find(C==c); % never used Sj = sign(c(A)); % get sign of j-th correlation coefficient XA = X(:,A).*(ones(n,1)*Sj'); % % XA = X(:,A)*Sj; % G = XA'*XA; % norm of XA oA = ones(1,length(A)); % vector of ones AA =(oA*G^(-1)*oA')^(-0.5); % inverse matrix in the normal equation wA = AA*G^(-1)*oA'; % parameters to compute the unit bisector uA = XA*wA; % compute the unit bisector a = X'*uA; % product vector to compute new gamma if i<p % for all columns of X but the last M = [(C-c)./(AA-a);(C+c)./(AA+a)]; M(find(M<=0)) = +Inf; gamma = min(M); else gamma = C/AA; end muA = muA + gamma*uA; % make new approximation of the dependent variable beta(A) = beta(A) + gamma*wA.*Sj; % make new parameters betaLtst = [betaLtst; beta']; % store the parameters at k-th step end
Результатом работы алгоритма является последовательность добавляемых признаков (веса которых отличны от нуля).
0.5739 0 0 0 0 0.5739 0.0311 0 0 0 0.5739 0.0311 0 0 0 0.5739 0.0439 0 0 0 0.5739 0.0439 0.2135 0 0
Литература
- Tibshirani R. Regression shrinkage and Selection via the Lasso. // Journal of the Royal Statistical Society.Series B(Metodological). 1996 Vol. 32, \No 1, p.267-288.
- Efron B., Hastie T., Johnstone J., Tibshirani R. Least Angle Regression. // The Annals of Statistics, 2004. Vol. 32, \No 2, p. 407-499.