Может быть, я просто устал, но у меня возникли проблемы при попытке понять алгоритм прямой поэтапной регрессии. Из раздела «Элементы статистического обучения», стр. 60:
Прямая стадия регрессии (FS) еще более ограничена, чем прямая пошаговая регрессия. Он начинается как пошаговая регрессия вперед, с перехватом, равным [среднее значение] y, и центрированными предикторами с коэффициентами, изначально равными 0.
На каждом шаге алгоритм определяет переменную, наиболее коррелированную с текущим остатком. Затем он вычисляет простой коэффициент линейной регрессии остатка для этой выбранной переменной, а затем добавляет его к текущему коэффициенту для этой переменной. Это продолжается до тех пор, пока ни одна из переменных не будет иметь корреляции с невязками, то есть наименьших квадратов не будет, если N> p.
Итак, это алгоритм?
b[1]=mean(y)
b[2..n]=0
r=(y-X*b)
index, maxCorr = max(transpose(r)*X)
while(abs(maxCorr) > someThreshold)
b[index]=b[index]+regress(r,X[1..n][index])
r=(y-X*b)
index, maxCorr = max(transpose(r)*X)
Где b - вектор-столбец коэффициентов, X - матрица входных данных, а y - вектор-столбец выходных данных. Т.е. у = Х * б + ошибка.
На вопрос, потому что этот алгоритм дает мне только несколько ненулевых коэффициентов в наборе данных, на котором я его тестирую (с порогом = .0001), и точность прогноза совсем не очень хорошая.
источник