giovedì 2 aprile 2026

Spiegazione algoritmo Hypersoil

 Riassunto di Claude.ai

Ayuba, D.L.; Guillemaut, J.-Y.; Marti-Cardona, B.; Mendez, O. A Hybrid Framework for Soil Property Estimation from Hyperspectral Imaging. Remote Sens. 2025, 17, 2568. https://doi.org/10.3390/rs17152568  

Spettro ASD (2151 bande, 350–2500 nm)
         │
         ├──► BLOCCO 1: HyperKon CNN  ──────────────► 128 numeri (embedding)
         │                                                    │
         └──► BLOCCO 2: Feature artigianali ────────► ~6900 numeri          
                                                             │
                                              ┌──────────────┘
                                              ▼
                                    Vettore combinato (~7028 numeri)
                                              │
                              ┌───────────────┼───────────────┐
                              ▼               ▼          ▼
                         Random Forest    XGBoost                    KNN
                              │               │           │
                              └───────────────┴───────────────┘
                                              │
                                    Media pesata ottimizzata
                                              │
                                              ▼
                              CaCO3,  FeO,  Fe2O3  (predizioni) 

 

BLOCCO 1 — Backbone CNN HyperKon
Scopo
Estrarre automaticamente pattern spettrali complessi che le feature artigianali non riescono a catturare. La CNN "impara a vedere" strutture nella forma dello spettro.
Pre-addestramento auto-supervisionato (NT-Xent / SimCLR)
Prima di usare le etichette chimiche, la CNN viene pre-addestrata su tutti gli spettri disponibili (anche quelli senza etichetta) usando l'apprendimento contrastivo.
L'idea: due versioni distorte dello stesso spettro devono produrre rappresentazioni simili; spettri diversi devono produrre rappresentazioni diverse.

In pratica impara a dare più peso alle bande spettrali più informative per ogni campione.

BLOCCO 2 — Feature artigianali
Queste feature catturano aspetti interpretabili dello spettro, ispirati alla spettroscopia classica.
Derivate spettrali (eq. 4 del paper)

d^n R(λ) / dλ^n
```
- **1ª derivata**: evidenzia i punti di massima variazione della riflettanza → posizione delle bande di assorbimento
- **2ª derivata**: evidenzia la curvatura → profondità delle bande di assorbimento
- **3ª derivata**: evidenzia variazioni di curvatura → asimmetrie delle bande

Usano filtro **Savitzky-Golay** (finestra=11, polinomio di grado 2/3/4) che deriva e liscia simultaneamente per ridurre il rumore.

### Trasformata wavelet discreta - DWT (eq. 5)
```
R(λ) = A_4 + D_4 + D_3 + D_2 + D_1
```
Decompone lo spettro in **approssimazioni** (A, variazioni lente = forma generale) e **dettagli** (D, variazioni rapide = caratteristiche fini). Si usa il wavelet Meyer (`dmey`) che è ottimale per segnali spettrali continui. Per ogni coefficiente si estrae media, deviazione standard e massimo → 15 valori totali.

### SVD — Singular Value Decomposition (eq. 6)
Lo spettro viene riorganizzato in una matrice di Hankel e decomposto:
```
B = U Σ V^T
```
I **valori singolari** σ₁ ≥ σ₂ ≥ ... misurano quanto "energia spettrale" è concentrata in ogni componente principale. I loro **rapporti** σᵢ/σᵢ₊₁ descrivono la struttura gerarchica dello spettro → 9 valori totali.

### FFT — Trasformata di Fourier (eq. 7)
```
F(k) = Σ R(n) × e^(-i2πkn/N)
```
Le prime 20 componenti in frequenza (parte reale + immaginaria) catturano i pattern periodici nello spettro, utili per rilevare strutture ripetitive come le bande di assorbimento degli ossidi metallici → 40 valori totali.

### Feature statistiche
Media, deviazione standard, percentili 25/75, range, posizione del massimo e del minimo → 7 valori totali.

---

## BLOCCO 3 — Ensemble ML (RF + XGBoost + KNN)

I ~7028 valori combinati (128 CNN + ~6900 artigianali) vengono normalizzati con `StandardScaler` (media 0, varianza 1) e passati ai tre modelli.

### Random Forest (`n_estimators=100, max_depth=20, min_samples_leaf=5`)
Crea 100 alberi decisionali ognuno su un sottoinsieme casuale dei dati e delle feature. La predizione è la media di tutti gli alberi. Robusto all'overfitting grazie alla diversità degli alberi.

**`max_depth=20`**: ogni albero può fare fino a 20 divisioni → abbastanza complesso da catturare non-linearità.

**`min_samples_leaf=5`**: ogni foglia deve avere almeno 5 campioni → evita di memorizzare singoli punti.

### XGBoost (`learning_rate=0.1, n_estimators=100, max_depth=5`)
Costruisce gli alberi **in sequenza**: ogni nuovo albero corregge gli errori del precedente (gradient boosting). Più potente del Random Forest per pattern complessi ma più sensibile all'overfitting.

**`reg_alpha=0.01, reg_lambda=1.0`**: regolarizzazione L1 e L2 che penalizzano la complessità del modello.

**`early_stopping_rounds=15`**: si ferma se la performance sul validation set non migliora per 15 iterazioni consecutive.

### KNN (`n_neighbors=7, weights="distance"`)
Per predire un nuovo campione, trova i 7 spettri più simili nel dataset di training e fa una media pesata delle loro etichette, dove il peso è inversamente proporzionale alla distanza nello spazio delle feature.

**`n_neighbors=7`**: con 11 campioni di training, 7 vicini è un buon compromesso — troppo pochi (1-2) portano a overfitting, troppi (>9) a underfitting.
 

 

Spettro grezzo: 2151 numeri
[0.12, 0.14, 0.18, 0.23, ..., 0.31, 0.28]
  350nm                              2500nm
         │
         │  Il backbone trasforma progressivamente
         │
         ▼
STEM (Conv 1D, kernel=7)
  Legge 7 bande alla volta, scorre lungo tutto lo spettro
  2151 bande → 64 "mappe di caratteristiche" × 537 posizioni
         │
         ▼
SPECTRAL ATTENTION
  Impara quali delle 64 mappe sono più informative
  Es: "le bande intorno a 900nm contano di più per Fe2O3"
         │
         ▼
STAGE 1 (3 blocchi ResNeXt)
  64 → 128 caratteristiche
  Impara pattern semplici: pendenze, picchi singoli
         │
         ▼
STAGE 2 (4 blocchi ResNeXt)
  128 → 256 caratteristiche
  Combina i pattern: forma delle bande di assorbimento
         │
         ▼
STAGE 3 (6 blocchi ResNeXt)
  256 → 512 caratteristiche
  Pattern complessi: interazioni tra bande diverse
         │
         ▼
STAGE 4 (3 blocchi ResNeXt)
  512 → 512 caratteristiche
  Pattern di alto livello: "firma chimica" dello spettro
         │
         ▼
GLOBAL CONTEXT MODULE
  Comprime 512×537 → 128 numeri
  Media globale + massimo globale → proiezione lineare
         │
         ▼
Embedding: 128 numeri
[0.83, -0.21, 1.45, 0.07, ..., -0.93, 0.44] 

 

 

Nessun commento:

Posta un commento

Mappa frane da news on line

Correva l'anno 2008 ed il mio direttore di Dipartimento mi aveva chiesto di lavorare sui Big Data per estrarre dati di geolocalizzazione...