WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Probleme beim Finden eines passenden Regressionsmodels

 

Alter_Walter
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 29.10.24
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.10.2024, 12:22     Titel: Probleme beim Finden eines passenden Regressionsmodels
  Antworten mit Zitat      
Hallo liebes Forum,

ich bin noch relativ grün hinter den Ohren was das Arbeiten mit MATLAB angeht. Trotzdem habe ich nun auf der Arbeit die Aufgabe bekommen ein Regressionsmodel zu erstellen. Dieses soll 80% der Daten als Trainings- und 20% als Testdaten nutzen. Spezifischer wird das ganze nicht. Die Daten die mir zur Verfügung stehen sind in der angehängten Excel-Datei.
Ich habe bereits sämtliche Regressionsmodelle ausprobiert (lineare Regression, nicht-lineare Regression, Entscheidungsbäume, RandomForest und weitere). Das beste Ergebnisse erhielt ich bei der Gradient Boosting Methode. Die Werte ähnelten sehr stark den Mittelwerten der gegebenen Dateien was mich stutzig machte. Daher untersuchte ich das Modell auf Werte wie R^2, Mean absolute Error, rRMSE und weitere. Die gaben den Hinweis, dass das Regressionsmodell anscheinend nicht zielführend ist. Jetzt weiß ich nicht mehr weiter und bitte daher um Rat. Hier mein momentaner Code:
Code:

% Daten laden
data = readtable('C:....\AP2 Regression_468.xlsx');

% X entspricht der Kontkaktrollenhärte, der Schleifbandart und Geschwindigkeit
X = data{:, 1:3};  % Unabhängige Variablen (Prädiktoren)
delta_r = data{:, 4};     % Abhängige Variable

% Unterteilung der Daten in Trainings- und Testdaten
cv = cvpartition(delta_r, 'HoldOut', 0.2); % 20% der Daten für den Testdatensatz
idx = cv.test; % Logische Indizes für den Testdatensatz

% Trainings- und Testdaten festlegen
X_train = X(~idx, :);
y_train = delta_r(~idx);
X_test = X(idx, :);
y_test = delta_r(idx);

%% Gradient Boosting mit Hyperparameter-Tuning

% Anpassen der Parameter für fitrensemble
mdl = fitrensemble(X_train, y_train, ...
    'Method', 'LSBoost', ...
    'NumLearningCycles', 100, ... % Anzahl der Bäume
    'LearnRate', 0.1, ...          % Lernrate
    'KFold', 5, ...                % Cross-Validation
    'Learners', templateTree('MinLeafSize', 5)); % Entscheidungsbaum als Grundmodell mit MinLeafSize

% RMSE aus Cross-Validation berechnen
rmse_cv_gbh = kfoldLoss(mdl);
disp(['RMSE aus Cross-Validation: ', num2str(rmse_cv_gbh)]);

% Trainiere ein finales Modell auf dem gesamten Trainingsdatensatz
final_mdl = fitrensemble(X_train, y_train, ...
    'Method', 'LSBoost', ...
    'NumLearningCycles', 1, ...
    'LearnRate', 0.1, ...
    'Learners', templateTree('MinLeafSize', 5)); % Wieder verwende MinLeafSize im Template

% Vorhersage für den Testdatensatz
y_pred_gbh = predict(final_mdl, X_test);
rmse_final = sqrt(mean((y_pred_gbh - y_test).^2));
disp(['RMSE für den Testdatensatz (Gradient Boosting): ', num2str(rmse_final)]);

% Vorhersage für neue Daten
X_new = [
    60, 1, 0;
    60, 1, 700;
    60, 1, 1400;
    60, 1, 2100;
    60, 1, 2800;
    60, 1, 3500;
    60, 1, 4200;
];
y_new_gbh = predict(final_mdl, X_new);
disp('Vorhersagen für neue Daten gradient boosting verbessert:');
disp(y_new_gbh);

%% Bewertung des Regressionsmodells

% Mean absolute Error:
% Durschnittabweichung von tatsächlichen Werten
mae_gbh = mean(abs(y_pred_gbh - y_test));
disp(['MAE (Gradient Boosting): ', num2str(mae_gbh)]);

% R-Squared (Bestimmtheitsmaß):
% zeigt an wie gut das Modell die Varianz der abhängigen Variablen erklärt
ss_total = sum((y_test - mean(y_test)).^2);
ss_residual = sum((y_test - y_pred_gbh).^2);
r_squared = 1 - (ss_residual / ss_total);
disp(['R-squared (Gradient Boosting): ', num2str(r_squared)]);

% Relative Root Mean Squared Error (rRMSE):
% setzt den RMSE in Relation zum Mittelwert der tatsächlichen Werte und
% gibt einen skalierungsunabhängigen Fehler an
rrmse_gbh = rmse_final / mean(y_test);
disp(['Relativer RMSE (Gradient Boosting): ', num2str(rrmse_gbh)]);

% Residualanalyse:
% Ein Residuum ist die Abweichung eines vorhergesagten Wertes vom
% tatsächlich beobachteten Wert
residuals = y_test - y_pred_gbh;
figure;
histogram(residuals);
title('Residual Histogram (Gradient Boosting)');
xlabel('Residual');
ylabel('Frequency');

% Feature Importance:
% zeigt an wie groß der Einfluss der unabhängigen Variablen ist
feature_importance = predictorImportance(final_mdl);
disp('Feature Importance:');
disp(feature_importance);

% Plot der Feature-Wichtigkeit
figure;
bar(feature_importance);
title('Feature Importance');
xlabel('Features');
ylabel('Importance Score');
 

Für jede Hilfe bin ich sehr dankbar!

Mit freundlichen Grüßen
Alter Walter
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 30.10.2024, 08:52     Titel:
  Antworten mit Zitat      
Hallo,

das Anhängen der Datei hat anscheinend nicht geklappt. Bitte nochmal versuchen und ggf. zippen.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Alter_Walter
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 29.10.24
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.11.2024, 08:46     Titel:
  Antworten mit Zitat      
Entschuldige mein Fehler ich hoffe diesmal klappt es.

Anhang.zip
 Beschreibung:

Download
 Dateiname:  Anhang.zip
 Dateigröße:  13.23 KB
 Heruntergeladen:  8 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.