機器學習演算法 lasso

2021-07-30 09:50:18 字數 2350 閱讀 4276

前面已經敘述了基本的線性回歸,區域性加權線性回歸,以及嶺回歸。其中,區域性加權線性回歸做的工作就是進行了特徵的選擇,選擇的策略是進行區域性的約束;嶺回歸是採用的正則化的方法進行特徵的選擇,使用的是

對於這樣的一種優化問題,其實是很難求解的,因為這樣的優化問題不再是乙個凸優化問題。為了求解這樣的問題,一些近似的優化演算法被採用。或者可以採用一些簡單的方法來近似這樣的優化過程。

前向逐步回歸演算法可以得到與lasso差不多的效果,但是前向逐步回歸更加簡單。這是一種貪心演算法,在每一步儘量減少誤差。

(前向逐步回歸流程)

主程式

[plain]view plain

copy

clear all;  

clc;  

%% 匯入資料  

data = load('abalone.txt');  

x = data(:,1:8);  

y = data(:,9);  

%% 處理資料  

ymean = mean(y);  

ydeal = y-ymean;  

xmean = mean(x);  

xvar = var(x,1);  

[m,n] = size(x);  

xdeal = zeros(m,n);  

for i = 1:m  

for j = 1:n  

xdeal(i,j) = (x(i,j)-xmean(j))/xvar(j);  

end  

end  

%% 訓練  

runtime  = 5000;%迭代的步數  

eps = 0.001;%調整步長  

wresult = stagewise(xdeal, ydeal, eps, runtime);  

%% 根據wresult畫出收斂曲線  

hold on   

xaxis = 1:runtime;  

for i = 1:n  

plot(xaxis, wresult(:,i));  

end  

前向逐步回歸函式

[plain]view plain

copy

function [ wresult ] = stagewise( x, y, eps, runtime)  

[m,n] = size(x);%資料集的大小  

wresult = zeros(runtime, n);%最終的結果  

w = zeros(n,1);  

wmax = zeros(n,1);  

for i = 1:runtime  

ws = w'%輸出每一次計算出來的權重  

lowesterror = inf;%定義最小值  

for j = 1:n  

for sign = -1:2:1  

wtest = w;%初始化  

wtest(j) = wtest(j)+eps*sign;%只改變一維變數  

ytest = x*wtest;  

%求誤差  

rsse = rsserror(y, ytest);  

if rsse 

lowesterror = rsse;  

wmax = wtest;  

end  

end  

end  

w = wmax;  

wresult(i,:) = w;  

end  

end  

誤差函式

[plain]view plain

copy

%% rsserror函式主要是利用均方誤差  

function [ error ] = rsserror( y, ytest )  

ydis = y-ytest;%誤差  

[m,n] = size(ydis);  

%求平方  

for i = 1:m  

ydis(i) = ydis(i)^2;  

end  

error = sum(ydis);%求列和  

機器學習 嶺回歸和LASSO回歸

1.用矩陣表示多元線性回歸 y bx a q b y bx t y bx 達到最小時的b值。也即是殘差平方和最小時。b bi 的值。可以證明b的最小二乘估計 xtx 1xty 其中 xtx 1為廣義逆。1.出現多重共線性2.當n 嶺回歸 ridge regression 先對資料做標準化 b k x...

機器學習 模型泛化(LASSO 回歸)

一 基礎理解 二 lasso 回歸 1 對於嶺回歸 2 對於 lasso 回歸1 模擬資料集 2 使用多項式回歸擬合資料 3 使用 lasso regression 改進演算法模型 4 分析 正則化的程度 擬合曲線的上下抖動幅度 1 使用 ridge 改進的多項式回歸演算法,隨著 的改變,擬合曲線始...

機器學習 嶺回歸和Lasso回歸(4)

任何資料都存在雜訊和多重共線性 如何解決多重共線性 1.演算法角度 正則化 2.資料角度 最有效果 嶺回歸與lasso回歸的出現是為了解決線性回歸出現的過擬合 資料間高度線性相關 以及在通過正規方程方法求解 的過程 現的x轉置乘以x不可逆這兩類問題的,這兩種回歸均通過在損失函式中引入正則化項來達到目...