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

Hypersoil su campioni Mugello

Durante la tesi di dottorato avevo provato a determinare il contenuto di CaCO3 in suoli naturali basandomi solo sul picco di assorbimento ca...