Η μέθοδος Μερικών Ελαχίστων Τετραγώνων (PLS) εξάγει λανθάνοντες παράγοντες που μεγιστοποιούν τη συνδιακύμανση μεταξύ προβλεπτικών μεταβλητών και στόχου πριν εκτελέσει παλινδρόμηση.
Σε αντίθεση με την PCA, οι εκπαιδευμένοι άξονες ενσωματώνουν πληροφορίες στόχου, διατηρώντας την προβλεπτική απόδοση ενώ μειώνουν τη διαστατικότητα.
Η ρύθμιση του αριθμού λανθανόντων παραγόντων σταθεροποιεί τα μοντέλα παρουσία ισχυρής πολυσυγγραμμικότητας.
Η εξέταση των φορτίων αποκαλύπτει ποιοι συνδυασμοί χαρακτηριστικών σχετίζονται περισσότερο με τον στόχο.
Αυτή η μέθοδος πρέπει να ερμηνεύεται μέσω των υποθέσεών της, των συνθηκών δεδομένων και του τρόπου με τον οποίο οι επιλογές παραμέτρων επηρεάζουν τη γενίκευση.
Δεδομένου ενός πίνακα προβλεπτικών μεταβλητών \(\mathbf{X}\) και ενός διανύσματος απόκρισης \(\mathbf{y}\), η PLS εναλλάσσει ενημερώσεις λανθανόντων βαθμολογιών \(\mathbf{t} = \mathbf{X} \mathbf{w}\) και \(\mathbf{u} = \mathbf{y} c\) ώστε η συνδιακύμανσή τους \(\mathbf{t}^\top \mathbf{u}\) να μεγιστοποιείται. Η επανάληψη αυτής της διαδικασίας αποδίδει ένα σύνολο λανθανόντων παραγόντων στους οποίους ένα γραμμικό μοντέλο παλινδρόμησης
$$
\hat{y} = \mathbf{t} \boldsymbol{b} + b_0
$$
προσαρμόζεται. Ο αριθμός παραγόντων \(k\) επιλέγεται τυπικά μέσω διασταυρωτικής επικύρωσης.
from__future__importannotationsimportjapanize_matplotlibimportmatplotlib.pyplotaspltimportnumpyasnpfromsklearn.cross_decompositionimportPLSRegressionfromsklearn.datasetsimportload_linnerudfromsklearn.model_selectionimportKFold,cross_val_scorefromsklearn.pipelineimportPipelinefromsklearn.preprocessingimportStandardScalerdefevaluate_pls_latent_factors(cv_splits:int=5,xlabel:str="Number of latent factors",ylabel:str="CV MSE (lower is better)",label_best:str="best={k}",title:str|None=None,)->dict[str,object]:"""Cross-validate PLS regression for different latent factor counts.
Args:
cv_splits: Number of folds for cross-validation.
xlabel: Label for the number-of-factors axis.
ylabel: Label for the cross-validation error axis.
label_best: Format string for the best-factor annotation.
title: Optional plot title.
Returns:
Dictionary with the selected factor count, CV score, and loadings.
"""japanize_matplotlib.japanize()data=load_linnerud()X=data["data"]y=data["target"][:,0]max_components=min(X.shape[1],6)components=np.arange(1,max_components+1)cv=KFold(n_splits=cv_splits,shuffle=True,random_state=0)scores=[]pipelines=[]forkincomponents:model=Pipeline([("scale",StandardScaler()),("pls",PLSRegression(n_components=int(k))),])cv_score=cross_val_score(model,X,y,cv=cv,scoring="neg_mean_squared_error",).mean()scores.append(cv_score)pipelines.append(model)scores_arr=np.array(scores)best_idx=int(np.argmax(scores_arr))best_k=int(components[best_idx])best_mse=float(-scores_arr[best_idx])best_model=pipelines[best_idx].fit(X,y)x_loadings=best_model["pls"].x_loadings_y_loadings=best_model["pls"].y_loadings_fig,ax=plt.subplots(figsize=(8,4))ax.plot(components,-scores_arr,marker="o")ax.axvline(best_k,color="red",linestyle="--",label=label_best.format(k=best_k))ax.set_xlabel(xlabel)ax.set_ylabel(ylabel)iftitle:ax.set_title(title)ax.legend()fig.tight_layout()plt.show()return{"best_k":best_k,"best_mse":best_mse,"x_loadings":x_loadings,"y_loadings":y_loadings,}metrics=evaluate_pls_latent_factors()print(f"Best number of latent factors: {metrics['best_k']}")print(f"Best CV MSE: {metrics['best_mse']:.3f}")print("X loadings:", metrics['x_loadings'])print("Y loadings:", metrics['y_loadings'])
Το MSE διασταυρωτικής επικύρωσης μειώνεται καθώς προστίθενται παράγοντες, φτάνει σε ελάχιστο και στη συνέχεια επιδεινώνεται αν συνεχίσετε να προσθέτετε περισσότερους.
Η εξέταση των x_loadings_ και y_loadings_ δείχνει ποια χαρακτηριστικά συνεισφέρουν περισσότερο σε κάθε λανθάνοντα παράγοντα.
Η τυποποίηση των εισόδων διασφαλίζει ότι χαρακτηριστικά μετρημένα σε διαφορετικές κλίμακες συνεισφέρουν ισομερώς.
Wold, H. (1975). Soft Modelling by Latent Variables: The Non-Linear Iterative Partial Least Squares (NIPALS) Approach. In Perspectives in Probability and Statistics. Academic Press.
Geladi, P., & Kowalski, B. R. (1986). Partial Least-Squares Regression: A Tutorial. Analytica Chimica Acta, 185, 1–17.