%
% !TEX TS-program = xelatex
% !TEX encoding   = UTF-8 Unicode
% !TEX spellcheck = el-GR
%
% Fuzzy Systems Assignment 3
%
% Requires compilation with pdfLaTeX or XeLaTeX
%
% authors:
%   Χρήστος Χουτουρίδης ΑΕΜ 8997
%   cchoutou@ece.auth.gr
%
\documentclass[a4paper, 11pt, mainlang=greek, english]{AUThReport/AUThReport}

\CurrentDate{\today}

% Greek report document setup suggestions
%---------------------------------
% \WorkGroup{Ομάδα Χ}

\AuthorName{Χρήστος Χουτουρίδης}
\AuthorAEM{8997}
\AuthorMail{cchoutou@ece.auth.gr}

%\CoAuthorName{Όνομα Επίθετο}
%\CoAuthorAEM{1234}
%\CoAuthorMail{xxx@ece.auth.gr}

\DocTitle{Εργασία 3}
\DocSubTitle{Επίλυση προβλήματος παλινδρόμησης με χρήση μοντέλων TSK}

\Department{Τμήμα ΗΜΜΥ. Τομέας Ηλεκτρονικής}
\ClassName{Ασαφή Συστήματα (Υπολογιστική Νοημοσύνη)}

\InstructorName{Θεοχάρης Ιωάννης}
\InstructorMail{theochar@ece.auth.gr}

\CoInstructorName{Χαδουλός Χρήστος}
\CoInstructorMail{christgc@auth.gr}

% -------------------------------------------------------
% Packages
% -------------------------------------------------------
\usepackage{float}
\usepackage{minted}
\usepackage{xcolor}
\usepackage{amsmath, amssymb, amsfonts}
\usepackage{diagbox}
\usepackage{subcaption} % για υποεικόνες με ξεχωριστά captions

\setminted[cpp]{
	fontsize=\small,
	breaklines,
	autogobble,
	baselinestretch=1.1,
	tabsize=2,
	numbersep=8pt,
	gobble=0
}

\newcommand{\repo}{https://git.hoo2.net/hoo2/FuzzySystems/src/branch/master/Work\%203}
\usepackage{hyphenat}
\hyphenation{Sup-er-con-du-cti-vi-ty}

\begin{document}

% Request a title page or header
\InsertTitle
%\InsertTitle[img/background.png][0.8\textwidth][2cm]

% =====================================================================
\section{Εισαγωγή}
Στην παρούσα εργασία μελετούμε τη μοντελοποίηση παλινδρόμησης με ασαφή νευρωνικά μοντέλα τύπου Takagi–Sugeno–Kang (TSK).
Τα TSK συνδυάζουν ασαφή διαμέριση του χώρου εισόδων (μέσω συναρτήσεων συμμετοχής και κανόνων IF–THEN) με παραμετρικά (συνήθως γραμμικά) συμπεράσματα στην έξοδο.
Η πρακτική σημασία τους έγκειται στην ικανότητα (α) να προσεγγίζουν μη γραμμικές σχέσεις με μικρό αριθμό κανόνων, (β) να εκπαιδεύονται αποδοτικά με \emph{υβριδικές} μεθόδους (οπισθοδιάδοση για τις MF και Ελάχιστα Τετράγωνα για τις παραμέτρους εξόδου), και (γ) να παρέχουν διαγνωστικές απεικονίσεις (MFs, καμπύλες μάθησης, σφάλματα) χρήσιμες για ερμηνεία και ρύθμιση.

Θεωρούμε δύο σενάρια:
\begin{enumerate}
	\item Το \emph{Airfoil Self-Noise} ως εισαγωγικό παράδειγμα με 5 εισόδους, και
	\item Το \emph{Superconductivity} με υψηλή διαστασιμότητα, όπου εφαρμόζουμε επιλογή χαρακτηριστικών και αναζήτηση πλέγματος (grid search) πάνω σε 5-fold cross validation.
\end{enumerate}

\subsection{Παραδοτέα}
Τα παραδοτέα της εργασίας αποτελούνται από:
\begin{itemize}
	\item Την παρούσα αναφορά.
	\item Τον κατάλογο \textbf{source}, με τον κώδικα της \textsc{Matlab}.
	\item Το \href{\repo}{σύνδεσμο με το αποθετήριο} που περιέχει τον κώδικα της \textsc{Matlab} καθώς και αυτόν της αναφοράς.
\end{itemize}


% =====================================================================
\section{Υλοποίηση}
Υλοποιήθηκε κοινή υποδομή συναρτήσεων για \textbf{διαχωρισμό συνόλων}, \textbf{προ-επεξεργασία}, \textbf{αξιολόγηση} και \textbf{συστηματική απεικόνιση αποτελεσμάτων}, ώστε να εξυπηρετούνται και τα δύο σενάρια.
Η αναπαραγωγή γίνεται εκτελώντας τα scripts \texttt{scenario1.m} και \texttt{scenario2.m}, τα οποία καλούν τις βοηθητικές συναρτήσεις.

\subsection{Διαχωρισμός δεδομένων — \texttt{split\_data()}}
Η \texttt{split\_data} δέχεται το πλήρες dataset και διαχωρίζει σε \textbf{train/validation/test} με ποσοστά (εδώ 60/20/20), επιστρέφοντας \emph{ξεχωριστά} τα $X$ και $y$ για κάθε υποσύνολο.
Χρησιμοποιούμε \texttt{seed} για \emph{αναπαραγωγιμότητα} (\texttt{rng(seed,'twister')}), ώστε τυχόν συγκρίσεις μεταξύ μοντέλων να γίνονται επί των ίδιων χωρισμάτων.

\subsection{Προεπεξεργασία δεδομένων — \texttt{preprocess\_data()}}
Η προεπεξεργασία είναι απαραίτητη για σταθερή εκπαίδευση.
Υλοποιήθηκαν δύο τρόποι: \textbf{Min–Max} κλιμάκωση σε $[0,1]$ και \textbf{z-score} (μέση τιμή/τυπική απόκλιση).
Σε όλα τα σενάρια \emph{υπολογίζονται τα στατιστικά \textbf{μόνο} στο train} και εφαρμόζονται σε val/test (\emph{no leakage}).
Πειραματιστήκαμε με z-score, ωστόσο καταλήξαμε σε Min–Max (mode=1), που αποδείχθηκε επαρκής και σταθερή επιλογή.

\subsection{Αξιολόγηση — \texttt{evaluate()}}
Η \texttt{evaluate} υπολογίζει \textbf{MSE}, \textbf{RMSE}, \textbf{$R^2$}, \textbf{NMSE} και \textbf{NDEI} βάσει των προβλέψεων και της αλήθειας (\texttt{pred, truth}).
Ο δείκτης $R^2 = 1-\frac{\mathrm{SS}_{\mathrm{res}}}{\mathrm{SS}_{\mathrm{tot}}}$ και τα κανονικοποιημένα μεγέθη (NMSE, NDEI$=\sqrt{\text{NMSE}}$) επιτρέπουν συγκρίσεις μεταξύ ρυθμίσεων.

\subsection{Εμφάνιση αποτελεσμάτων}
Υλοποιήθηκαν οι \texttt{plot\_results1} (Σενάριο~1) και \texttt{plot\_results2} (Σενάριο~2) που:
\begin{itemize}
	\item δημιουργούν \textbf{συνοπτικό} σχήμα με \emph{όλες} τις MF ανά είσοδο (πριν/μετά),
	\item σχεδιάζουν \textbf{καμπύλες μάθησης} (train/val),
	\item δίνουν \textbf{Predicted vs Actual} και \textbf{σφάλμα πρόβλεψης (residuals)},
	\item και αποθηκεύουν συστηματικά αρχεία εικόνων στους φακέλους \texttt{figures\_scn1} / \texttt{figures\_scn2}.
\end{itemize}



% =====================================================================
\section{Σενάριο 1 — Εφαρμογή σε απλό Dataset (Airfoil Self-Noise)}

Για την παρούσα εργασία εκπαιδεύτηκαν 4 TSK μοντέλα με \textbf{bell-shaped} συναρτήσεις συμμετοχής (gbellmf) μέσω \texttt{genfis} (Grid Partition) και \texttt{anfis} (υβριδική βελτιστοποίηση, 100 epochs).
Τα μοντέλα είναι:
\begin{itemize}
	\item \textbf{Model 1:} \texttt{TSK0-2MF} — \emph{constant} έξοδος (singleton), 2 MF ανά είσοδο.
	\item \textbf{Model 2:} \texttt{TSK0-3MF} — \emph{constant}, 3 MF ανά είσοδο.
	\item \textbf{Model 3:} \texttt{TSK1-2MF} — \emph{linear} έξοδος, 2 MF ανά είσοδο.
	\item \textbf{Model 4:} \texttt{TSK1-3MF} — \emph{linear}, 3 MF ανά είσοδο.
\end{itemize}
Για κάθε μοντέλο, ως \emph{τελικό} επιλέγεται αυτό με το μικρότερο σφάλμα στο \emph{validation}.

\subsection{Συναρτήσεις συμμετοχής}
Οι συναρτήσεις συμμετοχής πριν και μετά την εκπαίδευση φαίνονται παρακάτω.
\InsertFigure{H}{0.7}{fig:scn1_mf1}{../source/figures_scn1/model_1_mfs_all_inputs.png}{Συναρτήσεις συμμετοχής πριν/μετά για το Model~1 (TSK0-2MF).}
\InsertFigure{H}{0.7}{fig:scn1_mf2}{../source/figures_scn1/model_2_mfs_all_inputs.png}{Συναρτήσεις συμμετοχής πριν/μετά για το Model~2 (TSK0-3MF).}
\InsertFigure{H}{0.7}{fig:scn1_mf3}{../source/figures_scn1/model_3_mfs_all_inputs.png}{Συναρτήσεις συμμετοχής πριν/μετά για το Model~3 (TSK1-2MF).}
\InsertFigure{H}{0.7}{fig:scn1_mf4}{../source/figures_scn1/model_4_mfs_all_inputs.png}{Συναρτήσεις συμμετοχής πριν/μετά για το Model~4 (TSK1-3MF).}

Από τα παραπάνω παρατηρούμε ότι οι MF αναπροσαρμόζονται ομαλά μετά την εκπαίδευση.
Με 3 MF/είσοδο αυξάνεται η εκφραστικότητα, αλλά ενδέχεται να αυξηθεί το ρίσκο υπερεκπαίδευσης αν δεν υπάρξει επαρκές regularization/early stopping μέσω validation.

\subsection{Διαγράμματα μάθησης}
Στα σχήματα \ref{fig:scn1_learning_curves1} και \ref{fig:scn1_learning_curves2} παραθέτουμε τα διαγράμματα μάθησης.
\begin{figure}[H]
	\centering
	\begin{subfigure}{0.48\textwidth}
		\includegraphics[width=\linewidth]{../source/figures_scn1/model_1_learning_curves.png}
		\caption{Learning curves — Model~1}
	\end{subfigure}\hfill
	\begin{subfigure}{0.48\textwidth}
		\includegraphics[width=\linewidth]{../source/figures_scn1/model_2_learning_curves.png}
		\caption{Learning curves — Model~2}
	\end{subfigure}
	\caption{Καμπύλες μάθησης (train/validation).}
	\label{fig:scn1_learning_curves1}
\end{figure}
\begin{figure}[H]
	\centering
	\begin{subfigure}{0.48\textwidth}
		\includegraphics[width=\linewidth]{../source/figures_scn1/model_3_learning_curves.png}
		\caption{Learning curves — Model~3}
	\end{subfigure}\hfill
	\begin{subfigure}{0.48\textwidth}
		\includegraphics[width=\linewidth]{../source/figures_scn1/model_4_learning_curves.png}
		\caption{Learning curves — Model~4}
	\end{subfigure}
	\caption{Καμπύλες μάθησης (train/validation).}
	\label{fig:scn1_learning_curves2}
\end{figure}

Παρατηρούμε μια σταθερή αποκλιμάκωση του train error και επιλογή εποχών μέσω του ελαχίστου validation.
Τα μοντέλα με \emph{linear} έξοδο (ιδίως με 2 MF) συγκλίνουν ταχύτερα.

\subsection{Σφάλματα πρόβλεψης (residuals)}
Στα σχήματα \ref{fig:scn1_error1} και \ref{fig:scn1_error2} βλέπουμε τα σφάλματα πρόβλεψης.
\begin{figure}[H]
	\centering
	\begin{subfigure}{0.48\textwidth}
		\includegraphics[width=\linewidth]{../source/figures_scn1/model_1_error.png}
		\caption{Residuals — Model~1}
	\end{subfigure}\hfill
	\begin{subfigure}{0.48\textwidth}
		\includegraphics[width=\linewidth]{../source/figures_scn1/model_2_error.png}
		\caption{Residuals — Model~2}
	\end{subfigure}
		\caption{Χρονοσειρές σφάλματος πρόβλεψης στα δεδομένα ελέγχου.}
	\label{fig:scn1_error1}
\end{figure}

\begin{figure}[H]
	\centering
	\begin{subfigure}{0.48\textwidth}
		\includegraphics[width=\linewidth]{../source/figures_scn1/model_3_error.png}
		\caption{Residuals — Model~3}
	\end{subfigure}\hfill
	\begin{subfigure}{0.48\textwidth}
		\includegraphics[width=\linewidth]{../source/figures_scn1/model_4_error.png}
		\caption{Residuals — Model~4}
	\end{subfigure}
	\caption{Χρονοσειρές σφάλματος πρόβλεψης στα δεδομένα ελέγχου.}
	\label{fig:scn1_error2}
\end{figure}

Από τα διαγράμματα παρατηρούμε ότι, για τα καλύτερα μοντέλα, τα σφάλματα πρόβλεψης (residuals) κατανέμονται τυχαία γύρω από το μηδέν, χωρίς να εμφανίζουν συγκεκριμένο μοτίβο.
Αντίθετα, αν τα σφάλματα παρουσίαζαν κάποια εμφανή δομή ή συστηματική τάση, αυτό θα σήμαινε ότι το μοντέλο δεν περιγράφει επαρκώς τη σχέση εισόδου–εξόδου και πιθανόν θα χρειαζόταν μεγαλύτερη πολυπλοκότητα (π.χ. περισσότερες συναρτήσεις συμμετοχής).

\subsection{Σύγκριση Actual–Predicted}
Όσων αφορά τη σύγκριση μεταξύ του μοντέλου πρόβλεψης από την εκτέλεση του script έχουμε τα αποτελέσματα του σχήματος \ref{fig:scn1_predicted_vs_actual1} και \ref{fig:scn1_predicted_vs_actual2}:
\begin{figure}[H]
	\centering
	\begin{subfigure}{0.48\textwidth}
		\includegraphics[width=\linewidth]{../source/figures_scn1/model_1_pred_vs_actual.png}
		\caption{Predicted vs Actual — Model~1}
	\end{subfigure}\hfill
	\begin{subfigure}{0.48\textwidth}
		\includegraphics[width=\linewidth]{../source/figures_scn1/model_2_pred_vs_actual.png}
		\caption{Predicted vs Actual — Model~2}
	\end{subfigure}
	\caption{Συσχέτιση προβλέψεων με τις πραγματικές τιμές (ideal: γραμμή $y=x$).}
	\label{fig:scn1_predicted_vs_actual1}
\end{figure}

\begin{figure}[H]
	\centering
	\begin{subfigure}{0.48\textwidth}
		\includegraphics[width=\linewidth]{../source/figures_scn1/model_3_pred_vs_actual.png}
		\caption{Predicted vs Actual — Model~3}
	\end{subfigure}\hfill
	\begin{subfigure}{0.48\textwidth}
		\includegraphics[width=\linewidth]{../source/figures_scn1/model_4_pred_vs_actual.png}
		\caption{Predicted vs Actual — Model~4}
	\end{subfigure}
	\caption{Συσχέτιση προβλέψεων με τις πραγματικές τιμές (ideal: γραμμή $y=x$).}
	\label{fig:scn1_predicted_vs_actual2}
\end{figure}

\subsection{Συνολικά αποτελέσματα}
Συνολικά έχουμε:
\begin{table}[H]
	\centering
	\begin{tabular}{lcccc}
		\textbf{Metrics} & \textbf{Model-1} & \textbf{Model-2} & \textbf{Model-3} & \textbf{Model-4} \\
		\hline
		MSE   & 16.926  & 17.141  & 12.895  & 30.475 \\
		RMSE  & 4.1142  & 4.1401  & 3.5910  & 5.5204 \\
		$R^2$ & 0.66468 & 0.66043 & 0.74454 & 0.39627 \\
		NMSE  & 0.33532 & 0.33957 & 0.25546 & 0.60373 \\
		NDEI  & 0.57907 & 0.58272 & 0.50543 & 0.77700 \\
	\end{tabular}
	\caption{Δείκτες απόδοσης στο test set για τα 4 μοντέλα του Σεναρίου~1.}
	\label{tab:scn1_metrics}
\end{table}

Παρατηρούμε πως το \textbf{Model~3 (TSK1-2MF)} πετυχαίνει την καλύτερη ισορροπία (χαμηλότερα MSE/RMSE, υψηλότερο $R^2$), επιβεβαιώνοντας ότι \emph{γραμμική έξοδος με μετριοπαθή διαμέριση (2 MF)} είναι επαρκής για το Airfoil.
Η αύξηση σε 3 MF (Model~4) αυξάνει την πολυπλοκότητα και επιδεινώνει τη γενίκευση.




% =====================================================================
\section{Σενάριο 2 — Dataset με υψηλή διαστασιμότητα (Superconductivity)}
\subsection{Στόχος και μεθοδολογία}
Σε αυτό το σενάριο ο στόχος μας είναι η αποδοτική μοντελοποίηση με περιορισμό της εκθετικής αύξησης κανόνων.
Ακολουθούμε:
\begin{enumerate}
	\item \textbf{Split 60/20/20} σε Train/Val/Test και \textbf{Min–Max} κλιμάκωση με \emph{στατιστικά train}.
	\item \textbf{5-fold CV grid search} πάνω σε δύο \emph{ελεύθερες} παραμέτρους:
	\begin{itemize}
		\item πλήθος χαρακτηριστικών $k\_{\text{feat}}\in\{5,8,11,15\}$ (επιλογή με ReliefF),
		\item ακτίνα επιρροής SC $r_\alpha\in\{0.25,0.5,0.75,1.0\}$ (καθορίζει περίπου \#κανόνων).
	\end{itemize}
	\item \textbf{Τελική εκπαίδευση} με τα βέλτιστα $(k_{\text{feat}}^{*}, r_{\alpha}^{*})$ και αξιολόγηση στο test.
\end{enumerate}

\subsection{Διαγνωστικά Grid Search}
\begin{figure}[!ht]
	\centering
	\includegraphics[width=0.85\textwidth]{../source/figures_scn2/scn2_cv_heatmap.png}
	\caption{Heatmap μέσου σφάλματος CV ανά $(k\_{\text{feat}}, r_\alpha)$ — με επικάλυψη του \#κανόνων.}
	\label{fig:scn2_heatmap}
\end{figure}

\begin{figure}[!ht]
	\centering
	\begin{subfigure}{0.5\textwidth}
		\includegraphics[width=\linewidth]{../source/figures_scn2/scn2_error_vs_rules.png}
		\caption{Μέσο CV σφάλμα ως προς τον αριθμό κανόνων.}
	\end{subfigure}\hfill
	\begin{subfigure}{0.5\textwidth}
		\includegraphics[width=\linewidth]{../source/figures_scn2/scn2_error_vs_features.png}
		\caption{Καλύτερο CV σφάλμα ανά πλήθος χαρακτηριστικών.}
	\end{subfigure}
	\caption{Σχέση σφάλματος με πολυπλοκότητα (κανόνες) και μείωση διαστασιμότητας (χαρακτηριστικά).}
	\label{fig:scn2_tradeoffs}
\end{figure}

Παρατηρούμε πως υπάρχει το τυπικό \emph{U-σχήμα} ως προς τους κανόνες: λίγοι κανόνες υποπροσαρμόζουν, υπερβολικά πολλοί οδηγούν σε υπερεκπαίδευση.
Ως προς τα χαρακτηριστικά, μια \emph{μέτρια} τιμή $k\_{\text{feat}}$ δίνει την καλύτερη ισορροπία θορύβου/πληροφορίας.

\subsection{Τελικό μοντέλο: καμπύλες, προβλέψεις, residuals}
Για το τελικό μοντέλο μετά την εκπαίδευση και αξιολόγηση έχουμε:
\begin{figure}[H]
	\centering
	\includegraphics[width=0.8\textwidth]{../source/figures_scn2/scn2_final_learning_curves.png}
	\caption{Καμπύλες μάθησης του τελικού μοντέλου (train/validation).}
\end{figure}

\begin{figure}[H]
	\centering
	\includegraphics[width=0.8\textwidth]{../source/figures_scn2/scn2_final_pred_vs_actual.png}
	\caption{Σύγκριση \emph{Predicted vs Actual} στο test set.}
	\label{fig:scn2_pred_vs_actual}
\end{figure}

\begin{figure}[H]
	\centering
	\includegraphics[width=0.8\textwidth]{../source/figures_scn2/scn2_final_error_series.png}
	\caption{Residuals (σειρά σφάλματος) στο test set.}
\end{figure}

\subsection{Ενδεικτικές συναρτήσεις συμμετοχής (subset)}
\begin{figure}[H]
	\centering
	\includegraphics[width=0.95\textwidth]{../source/figures_scn2/scn2_final_mfs_subset.png}
	\caption{Ενδεικτικές MF για επιλεγμένες εισόδους πριν/μετά την εκπαίδευση.}
\end{figure}

\subsection{Δείκτες απόδοσης τελικού μοντέλου (Test set)}
Στην εκτέλεση που παραθέτουμε, το τελικό μοντέλο προέκυψε με \emph{12 κανόνες} και η επίδοση στο test είναι:
\begin{table}[H]
	\centering
	\begin{tabular}{lcc}
		\textbf{Metric} & \textbf{Τιμή} \\
		\hline
		MSE   & 208.506 \\
		RMSE  & 14.4397 \\
		$R^2$ & 0.820108 \\
		NMSE  & 0.179892 \\
		NDEI  & 0.424137 \\
	\end{tabular}
	\caption{Απόδοση τελικού μοντέλου στο test (Superconductivity).}
	\label{tab:scn2_metrics}
\end{table}

Παρατηρούμε πως η επίδοση είναι ισχυρή ($R^2\approx0.82$) με σχετικά μικρό αριθμό κανόνων, επιβεβαιώνοντας ότι ο συνδυασμός \emph{ReliefF + SC} ελέγχει αποτελεσματικά την πολυπλοκότητα.

\subsection{Συμπεράσματα}
Η επιλογή χαρακτηριστικών και η ρύθμιση της ακτίνας $r_\alpha$ είναι κρίσιμες.
Το grid search με 5-fold CV παρείχε αξιόπιστη εκτίμηση σφάλματος και οδήγησε σε μοντέλο με \emph{καλή γενίκευση} και \emph{περιορισμένο} πλήθος κανόνων.
Αν υιοθετούσαμε \emph{Grid Partition} με 2–3 MF/είσοδο για ίδιο πλήθος χαρακτηριστικών, ο αριθμός κανόνων θα κλιμακωνόταν εκθετικά ($\sim m^{d}$), καθιστώντας το μοντέλο δυσκολότερο στην εκπαίδευση και λιγότερο ελέγξιμο.
Το SC αποφεύγει αυτή την «έκρηξη κανόνων» δημιουργώντας data-driven κανόνες με συμπαγή κάλυψη του χώρου εισόδου.



% =====================================================================
\subsection{Επίλογος}
Αναπτύξαμε μια ολοκληρωμένη διαδικασία παλινδρόμησης με μοντέλα TSK, η οποία καλύπτει όλα τα στάδια — από τον σωστό διαχωρισμό και την προεπεξεργασία των δεδομένων, μέχρι την εκπαίδευση, την αξιολόγηση και την ανάλυση των αποτελεσμάτων.

Στο \textbf{Σενάριο~1} φάνηκε ότι ένα μοντέλο με γραμμική έξοδο και μικρό αριθμό συναρτήσεων συμμετοχής μπορεί να αποδώσει ικανοποιητικά.
Στο \textbf{Σενάριο~2} διαπιστώσαμε ότι ο συνδυασμός \emph{επιλογής χαρακτηριστικών, Subtractive Clustering και διασταυρούμενης επικύρωσης (cross validation)} επιτρέπει τη δημιουργία αποδοτικών και εύκολα ερμηνεύσιμων μοντέλων, χωρίς την εκθετική αύξηση της πολυπλοκότητας που εμφανίζεται στις παραδοσιακές μεθόδους grid partition.
\end{document}
