Case a grappolo per profili energetici
In Clevergy offriamo agli utenti diverse funzionalità per risparmiare energia . Mostriamo all'utente come consuma a casa e come avere un miglior rapporto con l'energia. Per questo, diamo loro diversi spunti sotto forma di funzionalità, come il consumo per disaggregazione degli elettrodomestici, il consumo generale per mesi e giorni, il consumo stimato in bolletta, le possibilità di risparmio attraverso la modifica della potenza contrattuale o un cambio di fornitore di energia elettrica e approfondimenti molto più utili.
Il problema
In questo momento andremo a perfezionare una funzionalità che permetta di capire come stanno spendendo rispetto alle famiglie “simili” alla tua . Perché 120 kWh non è né troppo né poco, è quello che è, ed è fondamentale capire se si può migliorarlo. Per realizzare questa funzionalità abbiamo affrontato il problema di classificare le abitazioni dei nostri clienti in gruppi simili in termini di profilo energetico delle abitazioni, in modo da confrontare i consumi, e collocarle quindi in un percentile di spesa rispetto alle altre abitazioni.
La prima cosa che dobbiamo definire è: cosa significa "case simili"?
In questo caso affrontiamo la questione da un punto di vista multifattoriale.
Abitazioni simili non possono essere abitazioni che hanno consumi simili. Una casa piccola che consuma n kWh in un luogo freddo essenzialmente per un consumo basale di riscaldamento, non ha nulla a che vedere con una casa grande che consuma la stessa energia nelle ore di punta a causa del consumo degli elettrodomestici della cucina.
D'altra parte, non possiamo nemmeno classificare in base ai "vicini" spaziali, poiché le case molto vicine potrebbero non avere nulla a che fare l'una con l'altra dal punto di vista del consumo energetico.
Preelaborazione dei dati
Abbiamo studiato fattori comparabili nella classificazione delle case e abbiamo trovato diversi elementi chiave per poterle raggruppare.
- Metri quadrati . Da un punto di vista energetico, è pratico classificare le abitazioni principalmente in base alla dimensione.
- Potenziale di consumo di energia elettrica . Abbiamo visto che per quanto le case siano simili per caratteristiche, non ha senso ad esempio raggruppare come simili una casa con riscaldamento a gas e una con riscaldamento elettrico (studi statistici indicano che il riscaldamento elettrico è quasi il 50% delle abitazioni consumo), quindi proponiamo di stimare un volume di Kw “disponibili” moltiplicando i dispositivi che sappiamo avere una casa per la sua potenza nominale media.
- Profilo climatico . La Spagna è un paese in cui possiamo trovare profili climatici molto diversi anche all'interno delle stesse organizzazioni regionali. Abbiamo utilizzato per il nostro raggruppamento i profili del Mediterraneo, dell'entroterra freddo, dell'entroterra caldo, dell'Atlantico e del Cantabrico. Abbiamo assegnato ogni provincia completa a uno di questi climi.
- Tipologia abitativa . Sappiamo che questo è un presupposto che può avere sfumature, ma preferiamo usarlo per caratterizzare il livello di prestazione energetica che prendiamo come case unifamiliari e appartamenti distinti.
Una volta calcolate queste colonne per ogni casa, procediamo a calcolare il raggruppamento delle abitazioni in base a queste caratteristiche.
Un primo approccio alla soluzione
Nel primo approccio, abbiamo proposto la possibilità di utilizzare le librerie matematiche Python per costruire un servizio che eseguisse la classificazione in tre passaggi:
- Un PCA (analisi delle componenti principali). Questo filtro modificherebbe le dimensioni del set di dati per renderlo bidimensionale, da due colonne a una singola coppia di valori, per poter eseguire K-medie su un vettore bidimensionale.
- Uno studio di un possibile numero di centroidi . Per ottenere un risultato ottimale, abbiamo eseguito una simulazione di clustering per diversi valori dei centroidi totali, calcolando l'errore di ciascuna esecuzione e salvando quello con la deviazione più piccola.
- Assegnazione cluster a ciascuna casa utilizzando K-mean .
Una volta che abbiamo la classificazione usiamo VertexAI di GCP per addestrare un modello di classificazione che ci permette di avere un'API da interrogare nel caso in cui riceviamo case che non sono ancora raggruppate, e restituisce il cluster più simile alla nuova casa.
Più facile è meglio
Una volta terminato il proof of concept del classificatore ci siamo resi conto che il processo di classificazione basato sul servizio VertexAI , pur essendo per noi molto comodo, introduce l'errore inerente al modello sommato all'errore introdotto dall'algoritmo K-means, quindi abbiamo ha deciso di eliminarlo dall'equazione calcolando direttamente l'agglomerato di una nuova casa attraverso la minima distanza dai baricentri.
D'altra parte, e tenendo conto che il nostro proof of concept non ha un'entità sufficiente, né corrisponde pienamente a nessun dominio , abbiamo deciso di eliminare il servizio e includerlo in uno dei nostri servizi.
Poiché i nostri servizi sono programmati in Kotlin, abbiamo deciso di utilizzare WEKA , che ci consente anche di eliminare la parte di analisi dei componenti principali e di eseguire il clustering su più dimensioni.
In questo modo eliminiamo quasi tutta la complessità e abbiamo risultati sorprendenti, e lo abbiamo fatto con 4 righe di codice!
Conclusioni
In un processo analitico non supervisionato, come nel caso dell'applicazione dell'algoritmo K-means, è essenziale effettuare iterazioni che consentano di analizzare la qualità della soluzione . In questo contesto, ci siamo impegnati a preparare un set di dati all'ingresso dell'algoritmo contenente i dati elaborati in ciascuna colonna per darci un risultato ideale.
Utilizziamo sempre metriche di controllo per sapere se otteniamo precisione nei nostri sistemi e, in questo caso d'uso specifico, lavoriamo con una linea di base che ci consente di sapere se dobbiamo ottimizzare il numero di cluster in base agli errori accumulati in ogni iterazione.
In ingegneria, è un'ottima decisione eseguire il refactoring di un processo, indipendentemente da quanto sia stato costoso, se il risultato sarà più leggero e semplice. È essenziale non aver paura di distruggere e rifare se ci sono garanzie che il refactoring consentirà una manutenzione più semplice e una migliore tolleranza ai guasti.

![Che cos'è un elenco collegato, comunque? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































