Метод наименьших углов (пример) |
|
|
|
|
Метод наименьших углов (англ. least angle regression, LARS) - алгоритм отбора признаков в задачах линейной регрессии. Алгоритм предложили Бредли Эфрон, Тревор Хасти и Роберт Тибширани [1]. 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} ']']); Принята линейная модель [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 Результатом работы алгоритма является последовательность добавляемых признаков (веса которых отличны от нуля). 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
На графике показано изменение вектора параметров
Ось абсцисс - свободная переменная, ось ординат - зависимая. Точками показаны исходные данные, соответствующие задуманной модели. Красная линия - модель LARS с параметрами
Литература
См. также
|
|
| Автор: Strijov | 23.04.2009 13:00 | |



