Regresia lazo este o tehnică utilă pentru selecția și regularizarea variabilelor în regresia liniară. În acest tutorial, vom parcurge un exemplu de efectuare a regresiei lasso pe setul de date „carbig” disponibil în MATLAB. Codul furnizat va încărca setul de date, va preprocesa datele, va efectua regresia lasso, va reprezenta calea soluției și va afișa coeficienții rezultați.

Regresia Lasso

Regresia lasso, prescurtare de la Least Absolute Shrinkage and Selection Operator, este o metodă de regresie liniară utilizată pentru selecția și regularizarea variabilelor. Este o tehnică populară în statistică și învățare automată, în special în situațiile în care există un număr mare de variabile potențiale de predicție.

În regresia liniară tradițională, scopul este de a se potrivi unui model liniar care prezice relația dintre variabila dependentă (variabila pe care doriți să o preziceți) și variabilele independente (variabilele utilizate pentru a face predicția). Cu toate acestea, atunci când există multe variabile independente, unele dintre ele pot să nu contribuie prea mult la predicție, ceea ce duce la o supraadaptare sau o generalizare slabă a datelor noi.



Regresia lasso abordează această problemă prin introducerea unui termen de penalizare în funcția obiectivă de regresie liniară. Termenul de penalizare se bazează pe suma valorilor absolute ale coeficienților de regresie înmulțită cu o constantă (parametrul de regularizare, adesea notat ca lambda sau alfa). Efectul acestei penalități este că încurajează coeficienții unor variabile să devină exact zero, efectuând efectiv selecția variabilelor prin micșorarea coeficienților variabilelor mai puțin importante.

Caracteristica cheie a regresiei lasso este capacitatea sa de a efectua atât selecția variabilelor, cât și regularizarea simultan. Prin micșorarea unor coeficienți la zero, se poate elimina automat variabilele irelevante sau redundante din model, ceea ce poate duce la un model mai simplu și mai interpretabil. Mai mult, termenul de penalizare ajută la prevenirea supraadaptării prin descurajarea coeficienților mari, ceea ce duce la o mai bună generalizare a datelor noi.

Regresia lasso poate fi aplicată la diferite tipuri de modele liniare, inclusiv regresia cu cele mai mici pătrate obișnuite, regresia logistică și regresia multivariată. Este deosebit de util în situațiile în care există un spațiu de caracteristici cu dimensiuni mari și prezența variabilelor irelevante sau redundante poate împiedica performanța modelului.



Cod MATLAB pentru regresia lazo

Iată un exemplu de cod MATLAB care demonstrează cum se efectuează regresia lasso pe un set de date folosind funcțiile MATLAB încorporate:

% Load the dataset
load carbig

Această linie încarcă setul de date numit „carbig” în MATLAB. Se presupune că setul de date „carbig” este un set de date preexistent în mediul MATLAB.

% Define the predictor variables (features) and the response variable
X = [MPG Horsepower Weight];  % Choose three predictor variables (you can modify this)
y = Acceleration;            % Response variable

Aici, variabilele de predicție (caracteristicile) sunt definite folosind trei coloane din setul de date „carbig”, și anume „MPG”, „Cai putere” și „Greutate”. Aceste variabile sunt atribuite variabilei X. Variabila de răspuns „Accelerație” este atribuită variabilei y.

% Remove rows with NaN values
nan_rows = any(isnan(X), 2);
X = X(~nan_rows, :);
y = y(~nan_rows);

Această secțiune elimină rânduri din variabilele de predicție X și din variabila de răspuns y care conțin valori NaN (Nu-un număr). Verifică valorile NaN în X folosind funcția isnan, iar any(isnan(X), 2) returnează un vector logic care indică ce rânduri au valori NaN. Vectorul logic este apoi utilizat pentru a selecta rândurile fără valori NaN atât pentru X, cât și pentru y.

% Preprocess the data (if necessary)
% Here, we standardize the predictor variables by subtracting the mean and dividing by the standard deviation
X = zscore(X);

Acest pas preprocesează variabilele predictor X. Funcția zscore standardizează datele prin scăderea mediei și împărțirea la abaterea standard pentru fiecare variabilă. Această standardizare asigură că toate variabilele sunt la o scară similară, ceea ce este adesea recomandat pentru regresia lasso.

% Perform lasso regression
[B, FitInfo] = lasso(X, y, 'Alpha', 1);

Această linie efectuează regresia lasso folosind funcția lasso. Acesta ia ca intrări variabilele predictor X și variabila răspuns y. Argumentul 'Alpha', 1 specifică faptul că trebuie utilizată regresia lasso (valoarea alfa de 1). Funcția returnează coeficienții estimați (B) și informații suplimentare despre potrivire (FitInfo).

% Plot the lasso solution path
lassoPlot(B, FitInfo, 'PlotType', 'Lambda', 'XScale', 'log');
xlabel('Log(\lambda)');
ylabel('Standardized Coefficients');
title('Lasso Solution Path');

Această secțiune generează o diagramă (prezentată mai jos) a căii soluției lasso folosind funcția lassoPlot. Vizualizează coeficienții standardizați (B) în raport cu logul valorilor lambda din structura FitInfo. Tipul de grafic este specificat ca „Lambda”, iar axa x este scalată logaritmic.



% Find the optimal lambda (lambda with the minimum mean squared error)
mseValues = FitInfo.MSE;
[~, idxLambdaMinMSE] = min(mseValues);
lambdaMinMSE = FitInfo.Lambda(idxLambdaMinMSE);

Această parte determină valoarea lambda optimă prin găsirea lambda cu eroarea pătratică medie minimă (MSE) din structura FitInfo. Valorile medie pătratică ale erorii sunt preluate din câmpul MSE și stocate în variabila mseValues. Funcția min este apoi utilizată pentru a găsi valoarea minimă MSE și indexul corespunzător (idxLambdaMinMSE). În final, valoarea lambda optimă se obține prin accesarea valorii lambda la indexul idxLambdaMinMSE din structura FitInfo și alocarea acesteia variabilei lambdaMinMSE.

% Retrieve the coefficients corresponding to the optimal lambda
coefficients = B(:, idxLambdaMinMSE);
intercept = FitInfo.Intercept(idxLambdaMinMSE);

Această secțiune preia coeficienții corespunzători valorii lambda optime. Coeficienții sunt extrași din matricea B folosind indicele idxLambdaMinMSE, care reprezintă valoarea lambda selectată cu MSE minimă. Valoarea de interceptare se obține și din câmpul Intercept din structura FitInfo la indexul corespunzător.

% Display the coefficients
disp('Intercept:');
disp(intercept);
disp('Coefficients:');
disp(coefficients);

În cele din urmă, această parte afișează interceptarea și coeficienții în fereastra de comandă MATLAB. Interceptarea și coeficienții sunt imprimați folosind funcția disp, oferind o reprezentare clară a rezultatelor.

Acest cod oferă un flux de lucru de bază pentru efectuarea regresiei lasso pe setul de date „carbig” din MATLAB, inclusiv încărcarea datelor, preprocesarea, adaptarea modelului, vizualizarea și afișarea coeficienților rezultați.



Concluzie

În concluzie, acest tutorial a demonstrat procesul de efectuare a regresiei lasso folosind MATLAB. Codul furnizat a prezentat pașii implicați în încărcarea setului de date „carbig”, definirea variabilelor de predicție și răspuns, preprocesarea datelor, adaptarea modelului de regresie lasso, trasarea traseului soluției și preluarea coeficienților.

Regresia lasso este o tehnică valoroasă pentru selecția și regularizarea caracteristicilor în regresia liniară. Prin penalizarea valorilor absolute ale coeficienților, regresia lasso încurajează dispersitatea și poate gestiona eficient seturile de date cu dimensiuni mari. Codul prezentat în acest tutorial servește ca punct de plecare pentru implementarea regresiei lasso în MATLAB și poate fi adaptat pentru alte seturi de date și scenarii.

Prin înțelegerea și aplicarea principiilor regresiei lasso, cercetătorii și practicienii pot obține informații despre importanța variabilă și pot produce modele care sunt mai interpretabile și mai robuste.



Citiri suplimentare despre regresii folosind MATLAB

Iată câteva tutoriale legate de diferite analize de regresie folosind MATLAB:



Noțiuni introductive cu regresia liniară simplă și multiplă în MATLAB
Regresia liniară simplă (SLR) și regresia liniară multiplă (MLR) sunt două modele statistice populare utilizate pentru... blog.devgenius.io»







Regresia liniară multiplă în MATLAB: un ghid cuprinzător
Regresia liniară multiplă este o tehnică statistică puternică folosită pentru a modela relația dintre mai multe...levelup.gitconnected.com”





Regresia polinomială în MATLAB: modelarea relațiilor neliniare
În acest tutorial, vom explora cum să folosim regresia polinomială pentru a modela relații neliniare în MATLAB...levelup.gitconnected. com»







Regresia neliniară în MATLAB: potrivirea modelelor complexe la date
Regresia neliniară este o tehnică puternică folosită pentru a adapta modele complexe la date care nu urmează un nivel liniar... .gitconnected.com»