Fuzzy Rules based systems
Di Alessandro Rezzani
Sommario
Introduzione ...................................................................................................................................................... 1
Logica fuzzy e insiemi fuzzy ............................................................................................................................... 1
Sistemi fuzzy ...................................................................................................................................................... 2
Sistemi fuzzy per la classificazione e la regressione ...................................................................................... 2
Implementazione in R ........................................................................................................................................ 3
Conclusioni ........................................................................................................................................................ 6
Bibliografia ......................................................................................................................................................... 6
Introduzione
I Fuzzy Rule Based Systems rappresentano un’applicazione della logica fuzzy a problemi di machine
learning. In questo articolo cercheremo di descriverne il funzionamento, introducendo prima i concetti
principali della logica fuzzy. Descriveremo inoltre l’implementazione dei Fuzzy Rule Based Systems che si
trova nel package R frbs.
Logica fuzzy e insiemi fuzzy
La logica binaria, che costituisce la base per il funzionamento dei computer, prevede che i predicati possano
assumere solamente due stati: vero e falso. Tuttavia tale semplificazione risulta spesso imprecisa e non
aderente alla realtà, la quale contempla numerose sfaccettature: non esistono infatti soltanto il bianco ed il
nero, ma esistono numerose sfumature che si pongono tra questi due valori estremi. La logica fuzzy tiene in
considerazione proprio queste sfumature, discostandosi così dalla logica binaria.
Nella logica tradizionale un elemento appartiene o non appartiene ad un determinato insieme, mentre
nella logica fuzzy, un dato elemento appartiene ad un insieme fuzzy con un grado di verità che può
assumere infiniti valori nell'intervallo [0,1]. Il grado di verità (o di appartenenza ad un insieme fuzzy) è
definito da una funzione di appartenenza (membership).
La teoria degli insiemi fuzzy (fuzzy set) propone quindi un nuovo concetto di insieme, che generalizza quello
classico. Molti concetti “fuzzy” derivano da corrispondenti concetti del linguaggio umano, essi sono spesso
piuttosto vaghi. Per questo la teoria degli insiemi fuzzy contiene strumenti in grado di rappresentare
proprio tali concetti linguistici. Per esempio la temperatura può essere descritta da una variabile fuzzy che
www.dataskills.it E-mail [email protected]
possiede i valori “linguistici” freddo e caldo. Ciascun elemento avrà un grado di appartenenza a ciascun
valore (insieme fuzzy), per esempio 0.90 caldo e 0.10 freddo.
Volendo essere un po’ più formali, possiamo dire che una variabile linguistica è costituita dai seguenti
elementi:
x
il nome della variabile (es. temperatura)
T
l’insieme di definizione della variabile (es [0°,50°])
Fi
i fuzzy set definiti per la variabile (ovvero i valori linguistici, es. caldo e freddo)
ai(x)
le funzioni di appartenenza a ciascun set
Le funzioni di appartenenza possono avere varie forme (triangolari, trapezoidali, sigmoidali , gaussiane):
Sistemi fuzzy
Un generico sistema fuzzy funziona tramite la realizzazione di tre fasi:
-
-
La fuzzificazione: in questa fase le grandezze sono trasformate in base alle funzioni di appartenenza
L’applicazione di regole (che, nel caso di sistemi di machine learning, saranno determinate nella
fase di training). L’applicazione delle regole determina il valore dell’uscita a fronte della
combinazione degli input. Le regole sono costituite da un insieme di proposizione IF….THEN.
La defuzzificazione: il valore di uscita che deriva dall’applicazione delle regole fuzzy va convertito in
un valore deterministico attraverso un processo chiamato defuzzificazione. Esistono numerosi
metodi per la defuzzificazione. Uno dei più semplici da comprendere è quello basato sulla media
dei massimi: il valore di uscita è ottenuto come media aritmetica dei valori per i quali è massima
l’altezza del fuzzy set determinato dalle regole.
Sistemi fuzzy per la classificazione e la regressione
L’utilizzo dei sistemi fuzzy per la classificazione e la regressione prevede due fasi:
www.dataskills.it E-mail [email protected]
1) La fase di apprendimento, nella quale, attraverso i dati di training si identifica la struttura, ovvero
l’insieme delle regole. In seguito sono ottimizzati i parametri delle funzioni di appartenenza.
2) Fase predittiva, nella quale si applicano, ai nuovi dati, le tre fasi tipiche dei sistemi fuzzy, descritte
poco sopra, ovvero: fuzzificazione, applicazione delle regole, defuzzificazione
Implementazione in R
Esamineremo ora il package frbs, che contiene una delle implementazioni in R dei sistemi fuzzy.
Le funzioni principali sono:
frbs.learn()
per effettuare il training del sistema
predict()
per ottenere la prediction
frbs.gen()
per costruire un oggetto frbs manualmente, inputando le regole
summary()
per mostrare un oggetto frbs
plotMF()
per visualizzare la funzione di membership
Senza entrare nel dettaglio di tutti i metodi utilizzabili nel package (i dettagli si trovano nella
documentazione del package stesso, oppure nell’articolo citato in bibliografia), diciamo soltanto che
esistono oltre 20 tipologie diverse per la costruzione/ training del sistema fuzzy. Tali tipologie di sistemi
possono essere suddivisi in base al metodo di training:
-
Discesa del gradiente
Partizioni
Reti neurali
Algoritmi genetici
Clusterizzazione
Riportiamo qui il codice R di un esempio sul dataset iris:
library(frbs)
#preparing the data
all.iris <-iris
all.iris[, 5] <- unclass(all.iris[, 5])
#test set & training set
sets <- sample(2, nrow(all.iris), replace=TRUE, prob=c(0.7, 0.3))
tra.iris <-all.iris[sets==1,]
www.dataskills.it E-mail [email protected]
tst.iris <- all.iris[sets==2,1:(ncol(all.iris)-1)]
real.iris<-all.iris[sets==2,(ncol(all.iris))]
## Define range of input data. (Only for the input variables)
range.data.input <- apply(all.iris[, -ncol(all.iris)], 2, range)
## Set the method and its parameters.
method.type <- "FRBCS.W"
control <- list(num.labels = 5, type.mf = "GAUSSIAN", type.tnorm = "MIN",
type.snorm = "MAX", type.implication.func = "ZADEH")
#learning phase
object.cls <- frbs.learn(tra.iris, range.data.input, method.type, control)
## Predicting step
res.test <- predict(object.cls, tst.iris)
## Display the FRBS model
summary(object.cls)
## Plot the membership functions
plotMF(object.cls)
www.dataskills.it E-mail [email protected]
#confusion matrix
table(real.iris,res.test)
#rules
object.cls$rule
www.dataskills.it E-mail [email protected]
Conclusioni
I sistemi di classificazione e regressione basati sulla logica fuzzy sono particolarmente interessanti poiché
produconi, assieme ad una prediction, anche le regole che la determinano. Tutto ciò è particolarmente utile
nell’ottica della prescriptive analytics (si veda: http://www.dataskills.it/dalla-predictive-analytics-allaprescriptive-analytics/) . Le capacità predittive sono buone e rendono lo strumento utilizzabile nei casi in
cui non si desideri utilizzare una “black-box machine”, ovvero uno strumento di machine learning che non
dia alcuna indicazione su come si sia arrivati ad un certo risultato. È da segnalare però, che,
l’implementazione R non è particolarmente performante dal punto di vista dei tempi di learning (per lo
meno sulla macchina utilizzata per i test: una VM con 8 GB di RAM e 2 core virtuali).
Bibliografia
Riza, Bergmeir, “Frbs: Fuzzy Rule-Based Systems for Classication and Regression in R”, Journal of Statistical
Software, May 2015, Volume 65, Issue 6
Veronesi, Visioli, “Logica Fuzzy”, FrancoAngeli, 2001
www.dataskills.it E-mail [email protected]