tag:blogger.com,1999:blog-62612589219631242172024-03-19T14:40:12.856-07:00theoria e praticaUnknownnoreply@blogger.comBlogger13125tag:blogger.com,1999:blog-6261258921963124217.post-15363691664414254202017-08-01T04:45:00.001-07:002017-08-01T04:45:29.189-07:00selfies<br />
<table border="1">
<tbody>
<tr>
<td><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCKh0BZlOObEfFYHGoIkJaTteFew_LUkuL2PMgPX5A8hrmVhafGeVkH7SglTxgALEhdptQo83Ollp8gATRhVrCisKC7OGajQaXOIsCfRmp9bsxAzNUuL9ekQpKvNw3YDI2rE4rZUad-g/s1600/vlcsnap-2014-12-25-16h57m07s13.jpg" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" data-original-height="480" data-original-width="640" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCKh0BZlOObEfFYHGoIkJaTteFew_LUkuL2PMgPX5A8hrmVhafGeVkH7SglTxgALEhdptQo83Ollp8gATRhVrCisKC7OGajQaXOIsCfRmp9bsxAzNUuL9ekQpKvNw3YDI2rE4rZUad-g/s200/vlcsnap-2014-12-25-16h57m07s13.jpg" width="200" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">tratativa de selfie</td></tr>
</tbody></table>
</td>
<td><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2IUSi49ZZ0HjFQmRHP6ZHioa8ARdeBTCpdbVSJNNVnlkm4szGRHtSsBLb9A-YElzqE907PPTSbESDTd0zMC6BO3p3yzdV442nA8d9joCJ4o64nSypP5Wen9qKFZgKZQoCjO-Qgl37tw/s1600/vlcsnap-2014-12-25-16h56m09s205.jpg" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" data-original-height="480" data-original-width="640" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2IUSi49ZZ0HjFQmRHP6ZHioa8ARdeBTCpdbVSJNNVnlkm4szGRHtSsBLb9A-YElzqE907PPTSbESDTd0zMC6BO3p3yzdV442nA8d9joCJ4o64nSypP5Wen9qKFZgKZQoCjO-Qgl37tw/s200/vlcsnap-2014-12-25-16h56m09s205.jpg" width="200" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">operacion selfie</td></tr>
</tbody></table>
</td></tr>
<tr><td class="tr-caption" style="text-align: center;"><br /></td>
</tr>
</tbody></table>
<table>
<tbody>
<tr>
<td><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBMULXg3wa38lh-r4ilBSg3f9Vu5XAbR8ax4FknVDlOp5PwLspmmkO7Y2Kxh0IYoeVDZP3ITPDkZ3GuUshkTJ79cj056qnWkpB6kph9VHKlb6Yl39lyp3Slp-1EdHjvBjRIgkKvozCNg/s1600/vlcsnap-2015-01-01-16h38m19s10.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="480" data-original-width="640" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBMULXg3wa38lh-r4ilBSg3f9Vu5XAbR8ax4FknVDlOp5PwLspmmkO7Y2Kxh0IYoeVDZP3ITPDkZ3GuUshkTJ79cj056qnWkpB6kph9VHKlb6Yl39lyp3Slp-1EdHjvBjRIgkKvozCNg/s200/vlcsnap-2015-01-01-16h38m19s10.jpg" width="200" /></a></div>
</td>
<td><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjitTTCdwfyL76dBGyn0fPp31PB2e1o3hpDrzJZDZRiRp-aVnpNABCBch11_zS8aPLi9EaBLPnQUbdoWfB7a5CZSgx3dx_UPgg6aFCDPCzynqASTRoswiE-co3e9Oy45x-Gv6L2tkx8GA/s1600/vlcsnap-2015-01-01-16h38m43s1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="480" data-original-width="640" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjitTTCdwfyL76dBGyn0fPp31PB2e1o3hpDrzJZDZRiRp-aVnpNABCBch11_zS8aPLi9EaBLPnQUbdoWfB7a5CZSgx3dx_UPgg6aFCDPCzynqASTRoswiE-co3e9Oy45x-Gv6L2tkx8GA/s200/vlcsnap-2015-01-01-16h38m43s1.jpg" width="200" /></a></div>
</td>
<td><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7QcdCK8MXiBNeY7huy47nedPP4JP0Lo5i0H990rU5UQqaYC_lV6K2O37SwyYt8NpuvhUwyPjV2GgbnhF11e14FFAp_K3W6kFeFiIyAGEJDO88_F3ErI_47cSCfKwqiQOZ2EW6_hioCA/s1600/vlcsnap-2015-01-01-16h38m48s48.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="480" data-original-width="640" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7QcdCK8MXiBNeY7huy47nedPP4JP0Lo5i0H990rU5UQqaYC_lV6K2O37SwyYt8NpuvhUwyPjV2GgbnhF11e14FFAp_K3W6kFeFiIyAGEJDO88_F3ErI_47cSCfKwqiQOZ2EW6_hioCA/s200/vlcsnap-2015-01-01-16h38m48s48.jpg" width="200" /></a></div>
</td>
<td><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtmU5cZFVnzvmas4rOBbMu_16Vd0i03m80nWMfy1UTIi9TgXMA3dS7B0AywsS7c4Z1PEzNhw74GUhv3UBkimQAu4xTZ5B3cSSg66Czkx1m82gVB1N9CoRmuPfeXH_00Djx4i82mr5p3w/s1600/vlcsnap-2015-01-01-16h38m53s99.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="480" data-original-width="640" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtmU5cZFVnzvmas4rOBbMu_16Vd0i03m80nWMfy1UTIi9TgXMA3dS7B0AywsS7c4Z1PEzNhw74GUhv3UBkimQAu4xTZ5B3cSSg66Czkx1m82gVB1N9CoRmuPfeXH_00Djx4i82mr5p3w/s200/vlcsnap-2015-01-01-16h38m53s99.jpg" width="200" /></a></div>
</td>
<td><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvYd8R9X1uk9rGJfvUK22keu-fQ9cLJPQ0IABA5JWT8L4piWy48nfY47VY7ezxmsIfSQPtTkGv7z40g4tqLQS6EdLLN3g3C7jDFyCsPlKBkt5pdrVJGKlaI0N06Bpi1wXanwQFFTYzeQ/s1600/vlcsnap-2015-01-01-16h38m57s138.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="480" data-original-width="640" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvYd8R9X1uk9rGJfvUK22keu-fQ9cLJPQ0IABA5JWT8L4piWy48nfY47VY7ezxmsIfSQPtTkGv7z40g4tqLQS6EdLLN3g3C7jDFyCsPlKBkt5pdrVJGKlaI0N06Bpi1wXanwQFFTYzeQ/s200/vlcsnap-2015-01-01-16h38m57s138.jpg" width="200" /></a></div>
</td>
</tr>
<tr><td colspan="5">interrupcion de lectura</td></tr>
</tbody></table>
<br />Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6261258921963124217.post-76693148413806257602017-06-07T05:47:00.005-07:002017-06-07T05:51:06.754-07:00Pratical Maching Learning 3 Trasformazioni: Ingegnerizzazione dell'ingresso e dell'uscita<br /> Transformations: Engineering the input and output<br /><br /><br /> Nel capitolo precedente abbiamo esaminato una vasta gamma di metodi di apprendimento macchina: alberi decisionali, regole decisionali, modelli lineari, schemi basati su istanze, tecniche di previsione numerica, algoritmi di clustering e reti bayesiane. Tutte sono solide e robuste tecniche che sono eminentemente applicabili ai problemi pratici di data mining. Ma la riuscita data mining richiede molto di più di selezionare un algoritmo di apprendimento e di eseguirlo sui dati. Per prima cosa, molti metodi di apprendimento hanno diversi parametri e devono essere scelti valori adeguati. Nella maggior parte dei casi, i risultati possono essere migliorati notevolmente mediante una scelta appropriata dei valori dei parametri e la scelta appropriata dipende dai dati in questione. Ad esempio, gli alberi decisionali possono essere piantati o non eseguiti e nel primo caso è necessario scegliere un parametro di potatura. Nel metodo k-nearest-neighbor-neighbor di apprendimento basato su istanze, dovrà essere scelto un valore per k. Più in generale, lo schema di apprendimento stesso deve essere scelto dalla gamma di schemi disponibili. In ogni caso, le scelte giuste dipendono dai dati stessi.<br /><br /> È tentato di provare diversi schemi di apprendimento e di diversi valori dei parametri sui tuoi dati e vedere quali funzionano meglio. Ma fa attenzione! La scelta migliore non è necessariamente quella che esegue meglio i dati formativi. Abbiamo ripetutamente avvertito il problema dell'overfitting, dove un modello appreso è troppo strettamente legato ai particolari dati formativi da cui è stato costruito. Non è corretto supporre che le prestazioni sui dati di addestramento rappresentino fedelmente il livello di prestazione che si può aspettare sui nuovi dati a cui il modello appreso verrà applicato in pratica.<br /><br /><br /> Fortunatamente, abbiamo già incontrato la soluzione a questo problema nel capitolo 5. Ci sono due buoni metodi per valutare le prestazioni previste di uno schema di apprendimento: l'uso di un grande set di dati che è abbastanza separato dai dati formativi, nel caso di Dati abbondanti e convalida incrociata (sezione 5.3), se i dati sono scarsi. In quest'ultimo caso, in pratica viene utilizzata una sola convalida incrociata di 10 volte, anche se per ottenere una stima più attendibile, l'intera procedura deve essere ripetuta 10 volte. Una volta scelti i parametri idonei per il programma di apprendimento, utilizzare l'intero set di formazione - tutti i percorsi di formazione disponibili - per produrre il modello finale appreso che deve essere applicato a dati freschi.<br /><br /> Si noti che le prestazioni ottenute con il valore del parametro selezionato durante il processo di sintonizzazione non sono una stima attendibile della performance del modello finale, poiché il modello finale potenzialmente sovrascrive i dati utilizzati per la sintonizzazione. Per accertare quanto sarà efficace, è necessario un altro set di dati di grandi dimensioni che è abbastanza separato da tutti i dati utilizzati durante l'apprendimento e l'accordatura. Lo stesso vale per la convalida incrociata: è necessaria una convalida incrociata per la parametrizzazione e una convalida incrociata esterna per la stima degli errori. Con una convalida incrociata di 10 volte, ciò comporta l'esecuzione dello schema di apprendimento 100 volte. Riassumendo: nel valutare le prestazioni di un sistema di apprendimento, qualsiasi parametrizzazione che va avanti dovrebbe essere trattata come se fosse parte integrante del processo di formazione.<br /><br /><br /> Ci sono altri importanti processi che possono migliorare notevolmente il successo quando si applicano le tecniche di apprendimento delle macchine ai problemi pratici di data mining e sono oggetto di questo capitolo. Essi costituiscono una sorta di ingegneria dei dati: ingegnerizzazione dei dati di input in una forma adatta allo schema di apprendimento scelto e ingegnerizzazione del modello di output per renderlo più efficace. Puoi guardarli come un sacco di trucchi che puoi applicare ai problemi pratici di estrazione dei dati per aumentare la probabilità di successo. A volte funzionano; Altre volte non lo fanno - e allo stato attuale dell'arte, è difficile dire in anticipo se vogliono o no. In una zona come questa dove il processo e l'errore è la guida più affidabile, è particolarmente importante essere impegnativi e capire quali sono i trucchi.<br /><br /> Iniziamo esaminando quattro modi diversi in cui l'input può essere massaggiato per renderlo più appropriato per i metodi di apprendimento: selezione degli attributi, discretizzazione degli attributi, trasformazione dei dati e pulizia dei dati. Si consideri la prima selezione degli attributi. In molte situazioni pratiche ci sono troppi attributi per i sistemi di apprendimento da gestire e alcuni di loro - forse la stragrande maggioranza - sono chiaramente irrilevanti o ridondanti. Di conseguenza, i dati devono essere elaborati per selezionare un sottoinsieme degli attributi da utilizzare nell'apprendimento. Naturalmente, i metodi di apprendimento stessi provano a selezionare gli attributi in modo appropriato e ignorano quelli irrilevanti o ridondanti, ma in pratica la loro prestazione può essere spesso migliorata tramite la preselezione. Ad esempio, gli esperimenti mostrano che l'aggiunta di attributi inutili provoca la deteriorazione della performance di schemi di apprendimento come gli alberi decisionali e le regole, la regressione lineare, gli studenti basati sull'istanza e i metodi di cluster.<br /><br /><br /> La discretizzazione degli attributi numerici è assolutamente indispensabile se l'attività comporta attributi numerici ma il metodo di apprendimento scelto può trattare solo quelli categorici. Anche i metodi che possono gestire gli attributi numerici spesso producono risultati migliori o funzionano più velocemente se gli attributi sono predisposti. La situazione conversa, in cui gli attributi categorici devono essere rappresentati numericamente, si verifica anche se meno spesso; E descriviamo anche tecniche per questo caso. La trasformazione dei dati copre una varietà di tecniche. Una trasformazione, che abbiamo incontrato prima, quando si esamina i dati relazionali del Capitolo 2 e le macchine vettoriali di supporto nel Capitolo 6, è aggiungere nuovi attributi sintetici il cui scopo è quello di presentare le informazioni esistenti in una forma adatta all'apprendimento macchina, Schema per "raccogliere". Tecniche più generali che non dipendono così intimamente dalla semantica del particolare problema di data mining a portata di mano includono analisi dei componenti principali e proiezioni casuali.<br /><br /> I dati impuri innescano l'estrazione dei dati. Abbiamo sottolineato nel capitolo 2 la necessità di conoscere i tuoi dati: comprendere il significato di tutti i diversi attributi, le convenzioni utilizzate per codificarle, il significato dei valori mancanti e i dati duplicati, i rumori di misura, gli errori tipografici e la presenza di sistemi Errori, anche quelli deliberati. Molte semplici visualizzazioni spesso aiutano con questo compito. Ci sono anche metodi automatici di pulizia dei dati, di rilevamento di outliers e di individuazione di anomalie, che descriviamo.<br /><br /> Dopo aver studiato come massaggiare l'input, ci rivolgiamo alla questione dell'ingegnere l'output dei sistemi di apprendimento macchina. In particolare esaminiamo tecniche per combinare diversi modelli appresi dai dati. Ci sono alcune sorprese in negozio. Ad esempio, spesso è vantaggioso prendere i dati formativi e ottenere diversi set di formazione da lui, imparare un modello da ciascuno e combinare i modelli risultanti! Infatti, le tecniche per farlo possono essere molto potenti. È ad esempio possibile trasformare un metodo relativamente debole di apprendimento in un aspetto estremamente forte (in un preciso senso che spiegheremo). Inoltre, se sono disponibili diversi schemi di apprendimento, può essere vantaggioso non scegliere il risultato ottimale per il tuo set di dati (utilizzando la convalida incrociata), ma utilizzare tutti e combinare i risultati. Infine, il modo standard e ovvio di modellare una situazione di apprendimento multiclass come una classe a due classi può essere migliorata utilizzando una tecnica semplice ma sottile.<br /><br /><br /> Molti di questi risultati sono contraddittori, almeno in un primo momento. Come può essere una buona idea utilizzare insieme diversi modelli? Come puoi fare meglio che scegliere il modello che esegue meglio? Sicuramente tutto questo è in contrasto con il rasoio di Occam, che promuove la semplicità. Come puoi ottenere prestazioni di prima classe combinando modelli indifferenti, come sembra una di queste tecniche? Ma considerate comitati di persone, che spesso presentano decisioni più saggi di esperti individuali. Ricordiamo l'opinione di Epicurus che, di fronte a spiegazioni alternative, dovremmo conservarle tutte. Immagina un gruppo di specialisti ognuno dei quali eccelle in un dominio limitato anche se nessuno è competente in tutto il board. Nel lottare per capire come funzionano questi metodi, i ricercatori hanno esposto tutti i tipi di connessioni e collegamenti che hanno portato a miglioramenti ancora maggiori.<br /><br /> Un altro fatto straordinario è che la prestazione di classificazione può spesso essere migliorata con l'aggiunta di una notevole quantità di dati che non sono contrassegnati, in altre parole i valori di classe sono sconosciuti. Ancora una volta, questo sembra volare direttamente davanti al buon senso, piuttosto come un fiume che scorre in salita o una macchina di movimento perpetua. Ma se fosse vero - ed è come mostreremo nella sezione 7.6 - avrebbe grande importanza pratica perché esistono molte situazioni in cui i dati etichettati sono scarsi ma i dati non etichettati sono abbondanti. Leggete su e preparatevi ad essere sorpresi.<br /> Attribute selection<br /><br /> La maggior parte degli algoritmi di apprendimento macchina sono progettati per imparare quali sono gli attributi più appropriati da utilizzare per prendere le loro decisioni. Ad esempio, i metodi decision tree scelgono l'attributo più promettente per dividersi in ogni punto e dovrebbero - in teoria - non selezionare mai gli attributi irrilevanti o inutili. Avere più caratteristiche dovrebbe sicuramente - in teoria - portare a un potere più discriminante, mai meno. "Qual è la differenza tra teoria e pratica?" Chiede una vecchia domanda. "Non c'è differenza", risponde la risposta, "nella teoria. Ma in pratica esiste. "Anche qui esiste: in pratica, l'aggiunta di attributi irrilevanti o distruttivi a un set di dati spesso" confonde "i sistemi di apprendimento delle macchine.<br /><br /><br /> Gli esperimenti con un utente di alberi decisionali (C4.5) hanno dimostrato che l'aggiunta a set di dati standard di un attributo binario casuale generato gettando una moneta imparziale influenza la prestazione di classificazione, causandone un deterioramento (tipicamente dal 5 al 10% nelle situazioni testate). Ciò accade perché a un certo punto negli alberi che vengono appresi, l'attributo irrilevante viene sempre scelto per raggrupparsi, causando errori casuali quando vengono elaborati i dati del test. Come può essere questo, quando i discenti degli alberi decisionali sono abilmente progettati per scegliere l'attributo migliore per la suddivisione in ogni nodo? La ragione è sottile. Mentre procedi più in basso nell'albero, sempre meno dati sono disponibili per aiutare a prendere la decisione di selezione. A un certo punto, con pochi dati, l'attributo casuale "sembrerà buono" solo per caso. Poiché il numero di nodi a ogni livello aumenta in modo esponenziale con la profondità, la probabilità dell'attributo rogue sembra buona da qualche parte lungo la "frontiera moltiplica" quando l'albero si approfondisce. Il vero problema è che si raggiunge inevitabilmente profondità in cui solo una piccola quantità di dati è disponibile per la selezione degli attributi. Se il set di dati fosse più grande, non avrebbe necessariamente aiutato, probabilmente andresti più in profondità.<br /><br /><br /> Gli studenti di "alberi divide-and-conquer" e di "regole separate-and-conquer" soffrono di questo effetto perché inesorabilmente riducono la quantità di dati su cui basano giudizi. Gli studenti basati su istanze sono molto sensibili a attributi irrilevanti perché lavorano sempre nei quartieri locali, prendendo in considerazione solo poche istruzioni di formazione per ogni decisione. Infatti, è stato dimostrato che il numero di istanze di formazione necessarie per produrre un livello di prestazione predeterminato per l'apprendimento basato su istanze aumenta in modo esponenziale con il numero di attributi irrilevanti presenti. Naïve Bayes, invece, non frammenta lo spazio di istanza e ignora fortemente gli attributi irrilevanti. Presuppone con la progettazione che tutti gli attributi sono indipendenti l'uno dall'altro, un presupposto che è giusto per gli attributi "distracter" casuali. Ma attraverso questa stessa ipotesi, Naïve Bayes paga un prezzo pesante in altri modi perché il suo funzionamento è danneggiato con l'aggiunta di attributi ridondanti.<br /><br /> Il fatto che i distrattori irrilevanti degradino le prestazioni degli alberi decisionali "state-of-the-art" e degli studenti di regola è, in un primo momento, sorprendente. Ancora più sorprendente è che gli attributi rilevanti possono anche essere dannosi. Ad esempio, supponiamo che in un set di dati a due classi un nuovo attributo venisse aggiunto che abbia lo stesso valore della classe da prevedere la maggior parte del tempo (65%) e il valore opposto il resto del tempo distribuito in modo casuale tra le istanze . Gli esperimenti con i set di dati standard hanno dimostrato che ciò può causare la deteriorazione della precisione di classificazione (da 1% a 5% nelle situazioni testate). Il problema è che il nuovo attributo è (naturalmente) scelto per dividere in alto l'albero. Ciò ha l'effetto di frammentare l'insieme di istanze disponibili nei nodi sottostanti in modo che altre scelte siano basate su dati più sparsi.<br /><br /> A causa dell'effetto negativo di attributi irrilevanti sulla maggior parte dei sistemi di apprendimento in macchina, è comune precedere l'apprendimento con una fase di selezione degli attributi che cerca di eliminare tutti gli attributi ma gli attributi più rilevanti. Il modo migliore per selezionare gli attributi rilevanti è manualmente, basato su una profonda comprensione del problema dell'apprendimento e di ciò che gli attributi significano. Tuttavia, i metodi automatici possono anche essere utili. Ridurre la dimensionalità dei dati eliminando gli attributi non idonei migliora le prestazioni degli algoritmi di apprendimento. Inoltre li velocizza, anche se questo può essere sovrapposto al calcolo della selezione degli attributi. Ancora più importante, la riduzione della dimensione riduce una rappresentazione più compatta e più facilmente interpretabile del concetto di destinazione, mettendo a fuoco l'attenzione dell'utente sulle variabili più rilevanti.<br /> Scheme-independent selection<br /><br />Quando si seleziona un buon sottoinsieme di attributi, ci sono due approcci fondamentalmente diversi. Uno è fare una valutazione indipendente basata sulle caratteristiche generali dei dati; L'altro è quello di valutare il sottoinsieme utilizzando l'algoritmo di apprendimento macchina che sarà finalmente utilizzato per l'apprendimento. Il primo è chiamato il metodo del filtro, perché il set di attributo viene filtrato per produrre il sottoinsieme più promettente prima che l'apprendimento inizi. Il secondo è il metodo del wrapper, perché l'algoritmo di apprendimento è avvolto nella procedura di selezione. Fare una valutazione indipendente di un sottoinsieme di attributi sarebbe facile se ci fosse un buon modo per determinare quando un attributo era rilevante per scegliere la classe. Tuttavia, non esiste una misura di "rilevanza" universalmente accettata, sebbene né siano stati proposti diversi.<br /><br /> Un semplice metodo indipendente dal sistema di selezione degli attributi è quello di utilizzare abbastanza attributi sufficienti per dividere lo spazio di istanza in modo tale da separare tutte le istanze di formazione. Ad esempio, se vengono utilizzati solo uno o due attributi, ci saranno generalmente più istanze che hanno la stessa combinazione di valori di attributo. All'altro estremo, l'insieme completo di attributi probabilmente distingue le istanze in modo univoco in modo che nessuna due istanze abbiano gli stessi valori per tutti gli attributi. (Questo non sarà necessariamente il caso, tuttavia, i set di dati contengono talvolta istanze con gli stessi valori di attributo, ma classi diverse). È molto intuitivo selezionare il più piccolo sottoinsieme di attributi che distingue in modo univoco tutti i casi. Ciò può essere facilmente trovato utilizzando una ricerca esaustiva, anche se a considerevoli spese di calcolo. Purtroppo, questa forte prevenzione verso la coerenza dell'attributo impostato sui dati di addestramento è statisticamente ingiustificata e può portare ad overfitting: l'algoritmo può andare a lunghezze inutili per riparare un'inconsistenza che è stata in effetti semplicemente causata dal rumore.<br /><br /> Gli algoritmi di apprendimento delle macchine possono essere utilizzati per la selezione degli attributi. Ad esempio, è possibile applicare un algoritmo dell'albero di decisione all'insieme completo di dati e quindi selezionare solo gli attributi effettivamente utilizzati nell'albero. Anche se questa selezione non avrebbe alcun effetto se la seconda fase ha semplicemente costruito un altro albero, avrà un effetto su un diverso algoritmo di apprendimento. Ad esempio, l'algoritmo di prossimità più vicino è notoriamente suscettibile di attributi irrilevanti e la sua prestazione può essere migliorata utilizzando un costruttore di decisioni come filtro per la selezione degli attributi in primo luogo. Il metodo di prossimità più vicino può risultare anche migliore dell'algoritmo dell'albero di decisione utilizzato per il filtraggio. Come un altro esempio, il semplice schema 1R descritto nel Capitolo 4 è stato utilizzato per selezionare gli attributi di un utente di albero di decisione valutando l'effetto della ramificazione su diversi attributi (anche se un metodo basato su errori come 1R non può essere la scelta ottimale per Come vedremo più avanti quando si copre il problema relativo della discretizzazione supervisionata). Spesso l'albero decisionale esegue altrettanto bene quando solo i due o tre attributi principali vengono utilizzati per la sua costruzione - ed è molto più facile da capire. In questo approccio, l'utente determina quanti attributi utilizzare per costruire l'albero decisionale.<br /><br /> Un'altra possibilità è quella di utilizzare un algoritmo che costruisca un modello lineare - ad esempio una macchina vettoriale lineare di supporto - e classifica gli attributi in base alla dimensione dei coefficienti. Una variante più sofisticata applica l'algoritmo di apprendimento ripetutamente. Costruisce un modello, classifica gli attributi basati sui coefficienti, elimina il rango più alto e ripete il processo finché non vengono rimossi tutti gli attributi. Questo metodo di eliminazione delle funzioni ricorsive è stato trovato per produrre risultati migliori su determinati set di dati (ad esempio, quando identificano importanti geni per la classificazione dei tumori) che semplicemente attributi di classifica basati su un singolo modello. Con entrambi i metodi è importante assicurarsi che gli attributi siano misurati sulla stessa scala; Altrimenti i coefficienti non sono comparabili. Si noti che queste tecniche solo producono una classifica; È necessario utilizzare un altro metodo per determinare il numero appropriato di attributi da utilizzare.<br /><br /> Gli attributi possono essere selezionati anche utilizzando metodi di apprendimento basati su istanze. Potresti campionare istanze in modo casuale dal set di allenamento e controllare i record vicini delle stesse e diverse classi - "vicino a colpi" e "vicino a miss". Se un colpo vicino ha un valore diverso per un determinato attributo, tale attributo sembra irrilevante e Il suo peso dovrebbe essere diminuito. D'altra parte, se una mancanza di prossimità ha un valore diverso, l'attributo sembra essere rilevante e il suo peso dovrebbe essere aumentato. Naturalmente, questo è il tipo di procedura standard utilizzato per il ponderazione degli attributi per l'apprendimento basato su istanze, descritto nella sezione 6.4. Dopo aver ripetuto molte volte questa operazione, viene eseguita la selezione: vengono scelti solo gli attributi con pesi positivi. Come nella formulazione incrementale standard dell'apprendimento basata su istanze, diversi risultati verranno ottenuti ogni volta che il processo viene ripetuto, a causa del diverso ordinamento di esempi. Ciò può essere evitato utilizzando tutte le istruzioni di formazione e tenendo conto di tutti i colpi vicini e quasi mancanti di ciascuno.<br /><br /><br /> Uno svantaggio più grave è che il metodo non rileverà un attributo ridondante perché è correlato ad un altro attributo. Nel caso estremo, due attributi identici verrebbero trattati allo stesso modo, sia selezionati sia entrambi respinti. È stata suggerita una modifica che sembra andare in qualche modo per affrontare questo problema prendendo in considerazione i pesi attributi correnti per calcolare i colpi e le missioni più vicini. Un altro modo per eliminare gli attributi ridondanti e quelli irrilevanti è quello di selezionare un sottoinsieme di attributi che correlano individualmente con la classe ma hanno poca intercorrelazione. La correlazione tra due attributi nominali A e B può essere misurata usando l'incertezza simmetrica:<br /><br /><br />........<br /><br /><br /> dove H è la funzione di entropia descritta nella sezione 4.3. Le entropie si basano sulla probabilità associata ad ogni valore attributo; H (A, B), l'entropia congiunta di A e B, è calcolata dalle probabilità congiunte di tutte le combinazioni di valori di A e B. L'incertezza simmetrica è sempre tra 0 e 1. La selezione delle caratteristiche basate sulla correlazione determina la bontà Un insieme di attributi che utilizzano<br /><br /><br /> ............<br /><br /><br /> dove C è l'attributo di classe e gli indici i e j si trovano su tutti gli attributi dell'insieme. Se tutti gli attributi m nel sottogruppo si correlano perfettamente con la classe e gli uni con gli altri, il numeratore diventa m e il denominatore diventa m 2, che è anche m. Quindi, la misura è 1, che risulta essere il valore massimo che può raggiungere (il minimo è 0). Chiaramente questo non è ideale, perché vogliamo evitare attributi ridondanti. Tuttavia, qualsiasi sottoinsieme di questo set avrà anche valore 1. Quando si utilizza questo criterio per cercare un buon sottoinsieme di attributi, è opportuno interrompere i legami a favore del sottogruppo più piccolo.<br /> Searching the attribute space<br /><br />La maggior parte dei metodi per la selezione degli attributi comporta la ricerca dello spazio degli attributi "per il sottoinsieme" che è più probabile per predire la classe migliore. La Figura 7.1 illustra lo spazio degli attributi per il dataset meteo - ora troppo "familiare". Il numero di sottoinsiemi di attributi possibili aumenta in modo esponenziale con il numero di attributi, rendendo la ricerca esaustiva per tutti, ma i problemi più semplici.<br /><br /> Tipicamente, lo spazio viene ricercato avidamente in una delle due direzioni, dall'alto verso il basso o dal basso verso l'alto nella figura. Ad ogni fase, viene apportata una modifica locale al sottoinsieme di attributi corrente aggiungendo o eliminando un singolo attributo. La direzione verso il basso, in cui si inizia senza attributi e li aggiunge uno alla volta, viene chiamata in avanti selezione. L'alto, in cui si inizia con l'insieme completo e si elimina gli attributi uno alla volta, è l'eliminazione all'indietro. Nella selezione in avanti, ciascun attributo che non è già presente nel sottosistema corrente viene provocato ad esso e viene determinato il set di attributi risultante, ad esempio convalida incrociata come descritto nella sezione seguente. Questa valutazione produce una misura numerica delle prestazioni attese del sottoinsieme.<br /><br /> L'effetto di aggiungere ogni attributo a sua volta è quantificato da questa misura, il migliore è scelto e la procedura continua. Tuttavia, se nessun attributo produce un miglioramento quando viene aggiunto al sottoinsieme corrente, la ricerca termina. Si tratta di una procedura di ricerca avida e garantita per trovare un insieme di attributi localmente ma non necessariamente globalmente ottimali. L'eliminazione all'indietro opera in modo completamente analogo. In entrambi i casi, una leggera bias viene spesso introdotta verso piccoli set di attributi. Ciò può essere fatto per la selezione in avanti insistendo che se la ricerca continua, la misura di valutazione non deve solo aumentare ma anche aumentare di almeno una piccola quantità predeterminata. Una simile modifica funziona per l'eliminazione all'indietro.<br /><br /> Esistono metodi di ricerca più sofisticati. La selezione avanti e l'eliminazione all'indietro possono essere combinate in una ricerca bidirezionale; Ancora uno può cominciare con tutti gli attributi o con nessuno di loro. "La miglior prima ricerca" è un metodo che non si limita a terminare quando la prestazione inizia a scendere, ma mantiene un elenco di tutti i sottolivelli degli attributi valutati finora, ordinati in base alla misura di prestazioni, in modo che possa rivisitare una configurazione precedente. Dato sufficiente tempo esplorerà l'intero spazio, a meno che non sia impedito da qualche tipo di criterio di arresto. La ricerca del fascio è simile ma tronca la sua lista di sottoinsiemi di attributi in ogni fase in modo che contenga solo un numero fisso - la larghezza del fascio - dei candidati più promettenti. Le procedure di ricerca di algoritmi genetici sono basate sul principio della selezione naturale: esse "evolvono" i sottotitoli di una buona funzionalità utilizzando perturbazioni casuali di un elenco corrente di sottosezioni di candidati.<br /> Scheme-specific selection<br /><br /> La prestazione di un sottoinsieme di attributi con 'selezione specifica del sistema' viene misurata in termini di prestazioni di classificazione dello schema di apprendimento utilizzando solo quegli attributi. Dato un sottoinsieme di attributi, la precisione viene stimata utilizzando la normale procedura di convalida incrociata descritta nella Sezione 5.3. Naturalmente, altri metodi di valutazione come le prestazioni su un set di holdout (sezione 5.3) o lo stimatore di bootstrap (sezione 5.4) potrebbero essere ugualmente ben utilizzati.<br /> L'intero processo di selezione degli attributi è di calcolo intensivo. Se ogni valutazione comporta una convalida incrociata di 10 volte, la procedura di apprendimento deve essere eseguita 10 volte. Con gli attributi k, la selezione in avanti euristica o l'eliminazione all'indietro moltiplicano il tempo di valutazione per un fattore fino a k2 e per le ricerche più sofisticate, la penalità sarà molto maggiore, fino a 2k per un algoritmo esaustivo che esamina ciascuno dei due sottotitoli possibili da 2k . <br /><br /> Buoni risultati sono stati dimostrati su molti set di dati. In termini generali, l'eliminazione all'indietro produce set di attributi maggiori e una migliore precisione di classificazione, rispetto alla selezione in avanti. La ragione è che la misura di prestazioni è solo una stima e una stima ottimistica stimola entrambe queste procedure di ricerca a fermare "eliminazione prematuramente-indietro" con troppi attributi e la selezione in avanti con insufficiente. Ma la selezione avanzata è utile se si pone l'accento sulla comprensione delle strutture decisionali coinvolte, poiché spesso riduce il numero di attributi con un effetto molto limitato sulla precisione della classificazione. L'esperienza sembra dimostrare che le tecniche di ricerca più sofisticate non sono generalmente giustificate, anche se in certi casi possono produrre risultati molto migliori.<br /><br /> Un modo per accelerare il processo di ricerca è quello di smettere di valutare un sottoinsieme di attributi, non appena diventa evidente che è improbabile che ciò porti ad una precisione maggiore di un altro sottoinsieme di candidati. Questo è un lavoro per un test di significato statistico associato, eseguito tra il classificatore basato su questo sottoinsieme e tutti gli altri classificatori candidati basati su altri sottoinsiemi. La differenza di prestazioni tra due classificatori su una determinata istanza di prova può essere considerata -1, 0 o 1 a seconda che il primo classificatore sia peggiore, uguale o superiore alla seconda in quella istanza. T-test accoppiato (descritto nella sezione 5.5) può essere applicato a queste cifre sull'intero set di test, trattando efficacemente i risultati per ogni istanza come stima indipendente della differenza di prestazioni. Poi la convalida incrociata per un classificatore può essere terminata prematuramente non appena si scopre che è significativamente peggiore di un altro - cosa che naturalmente non può mai accadere. Potremmo voler scartare i classificatori in modo più aggressivo modificando il t-test per calcolare la probabilità che un classificatore sia migliore di un altro classificatore da almeno una piccola soglia specificata dall'utente. Se questa probabilità diventa molto piccola, possiamo scartare l'ex classificatore sulla base del fatto che è molto improbabile che si esegua sostanzialmente meglio di quest'ultimo.<br /><br /> Questa metodologia si chiama ricerca di corsa e può essere implementata con diverse strategie di ricerca sottostanti. Quando viene utilizzato con la selezione in avanti, corriamo contemporaneamente tutte le eventuali aggiunte a un singolo attributo e rilasciamo quelle che non si eseguono abbastanza bene. Nell'eliminazione all'indietro, corriamo tutte le delezioni a un attributo. La ricerca di Schemata è un metodo più complicato appositamente progettato per la corsa; Gestisce una serie iterativa di razze che determinano ciascuno se un attributo particolare deve essere incluso. Gli altri attributi di questa gara sono inclusi o esclusi a caso in ogni punto della valutazione. Non appena una gara ha un vincitore chiaro, inizia la successiva iterazione delle gare, usando il vincitore come punto di partenza. Un'altra strategia di ricerca è quella di classificare gli attributi innanzitutto, utilizzando, ad esempio, il loro guadagno di informazioni (supponendo che siano discreti) e quindi correre la classifica. In questo caso la gara non include attributi, l'attributo top-ranking, i primi due attributi, i primi tre e così via.<br /><br /> Qualunque sia il modo in cui lo fai, la selezione degli attributi specifici dello schema non consente in alcun modo un miglioramento uniforme delle prestazioni. A causa della complessità del processo, che è notevolmente aumentato dall'effetto di retroazione di includere un algoritmo di apprendimento della macchina target nel ciclo di selezione dell'attribuzione, è abbastanza difficile prevedere le condizioni in cui si rivelerà utile. Come in molte situazioni di "apprendimento macchina", "prova ed errore" usando la propria particolare fonte di dati è l'arbitro finale.<br /><br /> C'è un tipo di classificatore per cui la selezione degli attributi specifici per lo schema è una parte essenziale del processo di apprendimento: la tabella di decisione. Come indicato nella sezione 3.1, l'intero problema delle tabelle di decisione di apprendimento consiste nella selezione degli attributi giusti da includere. Di solito questo viene fatto misurando la prestazione della configurazione della tabella per i sottoinsiemi degli attributi e scegliendo il sottoinsieme più performante. Fortunatamente, la convalida incrociata di una sola uscita è molto conveniente per questo tipo di classificatore. Ottenere l'errore cross-validation da una tabella di decisione derivata dai dati di addestramento è solo una questione di manipolazione dei conteggi delle classi associati a ciascuna delle voci della tabella, in quanto la struttura della tabella non cambia quando le istanze vengono aggiunte o eliminate. Lo spazio dell'attributo viene generalmente ricercato dalla ricerca di prima scelta, poiché questa strategia è meno probabile che si blocchi ad un massimo locale rispetto ad altri, ad esempio la selezione in avanti.<br /><br /> Concludiamo la nostra discussione con una storia di successo. Un metodo di apprendimento per il quale un approccio di selezione degli attributi specifici per schemi ha mostrato buoni risultati è Naïve Bayes. Anche se questo metodo si occupa molto di attributi casuali, ha il potenziale per essere falsato quando ci sono dipendenze tra gli attributi e soprattutto quando vengono aggiunti quelli ridondanti. Tuttavia, sono stati riportati buoni risultati utilizzando l'algoritmo di selezione in avanti - più in grado di rilevare quando si aggiunge un attributo ridondante rispetto all'approccio di eliminazione all'indietro - in combinazione con una metrica molto semplice e quasi "ingenua" che determina la La qualità di un sottoinsieme di attributi per essere semplicemente la performance dell'algoritmo appreso sul set di formazione. Come è stato sottolineato nel Capitolo 5, le prestazioni di allenamento non sono certamente un indicatore affidabile delle prestazioni test-set. Tuttavia, gli esperimenti mostrano che questa semplice modifica a Naïve Bayes migliora notevolmente la sua performance su quei set di dati standard per i quali non si comporta bene come classificatori a base di alberi o regole e non ha alcun effetto negativo sui risultati sui set di dati su cui Naïve Bayes già fa bene. Bayes selettivo Naïve, come viene chiamato questo metodo di apprendimento, è una tecnica di apprendimento abile che esegue in modo affidabile e 'ben in pratica'.<br /> Discretizing numeric attributes<br /><br /> Alcuni algoritmi di classificazione e raggruppamento si occupano solo di attributi nominali e non possono gestire quelli misurati su una scala numerica. Per utilizzarli su set di dati generali, gli attributi numerici devono prima essere "discretizzati" in un piccolo numero di gamme distinte. Anche gli algoritmi di apprendimento che gestiscono gli attributi numerici talvolta li trattano in modi che non sono del tutto soddisfacenti. I metodi statistici di cluster spesso assumono che gli attributi numerici hanno una distribuzione normale - spesso non un assunto molto plausibile nella pratica - e l'estensione standard del classificatore Naïve Bayes per gestire gli attributi numerici adotta la stessa ipotesi. Anche se la maggior parte degli alunni di decisione e degli studenti decision rule possono gestire gli attributi numerici, alcune implementazioni funzionano molto più lentamente quando gli attributi numerici sono presenti perché ordinano ripetutamente i valori degli attributi. Per tutte queste ragioni si pone la domanda: quale è un buon modo per discretizzare gli attributi numerici in intervalli prima di ogni apprendimento?<br /><br /> Abbiamo già incontrato alcuni metodi per discretizzare gli attributi numerici. Lo schema di apprendimento 1R descritto nel Capitolo 4 utilizza una tecnica semplice ma efficace: ordinare le istanze dal valore dell'attributo e assegnare il valore a intervalli nei punti che cambia il valore della classe, ad eccezione di un certo numero minimo di istanze nella classe di maggioranza Sei) deve trovarsi in ognuna delle gamme, il che significa che ogni gamma può includere una miscela di valori di classe. Questo è un metodo di "discrezionalizzazione" globale che viene applicato a tutti gli attributi continui prima dell'inizio dell'apprendimento.<br /><br /> I discenti del "albero decisionale", d'altra parte, trattano gli attributi numerici a livello locale, esaminando gli attributi ad ogni nodo dell'albero quando viene costruito per vedere se valgono degradandosi e solo a quel punto decidere sul Il posto migliore per dividere attributi continui. Anche se il metodo di costruzione dell'albero che abbiamo esaminato nel capitolo 6 considera solo le divisioni binarie di attributi continui, si può immaginare una discretizzazione completa che si svolge a quel punto, dando una divisione multipla su un attributo numerico. I pro ei contro dell'approccio locale e globale sono chiari. La discretizzazione locale è adattata al contesto reale fornito da ciascun nodo ad albero e produrrà discrezioni diverse dello stesso attributo in luoghi diversi dell'albero se ciò sembra opportuno. Tuttavia, le sue decisioni si basano su meno dati come aumenta la profondità dell'albero, il che compromette la loro affidabilità. Se gli alberi vengono sviluppati per uscire a foglie di singolo istanza prima di essere rimosse, come nella tecnica normale di potatura indietro, è chiaro che molte decisioni di discrezionalità saranno basate su dati grossolanamente inadeguati.<br /><br /> Quando si utilizza la discretizzazione globale prima di applicare un metodo di apprendimento, ci sono due modi possibili per presentare i dati discretizzati al discente. Il più ovvio è trattare attributi discretizzati come quelli nominali: ogni intervallo di discretizzazione è rappresentato da un valore dell'attributo nominale. Tuttavia, poiché un attributo discretizzato deriva da un numero numerico, i suoi valori vengono ordinati e trattandolo come nomina scarta queste informazioni di ordinazione potenzialmente preziose. Naturalmente, se uno schema di apprendimento può gestire direttamente gli attributi ordinati, la soluzione è ovvia: ogni attributo discretizzato viene dichiarato di tipo "ordinato".<br /> Se il metodo di apprendimento non è in grado di gestire gli attributi ordinati, esiste ancora un modo semplice per consentirlo di sfruttare le informazioni di ordinazione: trasformare ogni attributo discretizzato in un insieme di attributi binari prima che venga applicato lo schema di apprendimento. Supponendo che l'attributo discretizzato abbia valori k, viene trasformato in attributi binari k-1, i cui i - 1 sono impostati su false ogni volta che il valore ith dell'attributo discretizzato è presente nei dati e altrimenti vero.<br /> Gli attributi restanti sono impostati su false. In altre parole, l'attributo binario (i - 1) indica se l'attributo discretizzato è minore di i. Se un allievo degli alberi decisionali divide su questo attributo, utilizza implicitamente le informazioni di ordinazione che codifica. Si noti che questa trasformazione è indipendente dal particolare metodo di discretizzazione applicato: è semplicemente un modo per codificare un attributo ordinato utilizzando un insieme di attributi binari.<br /> Unsupervised discretization<br /><br /> Ci sono due approcci fondamentali al problema della discretizzazione. Uno è quello di quantizzare ciascun attributo in assenza di qualsiasi conoscenza delle classi delle istanze nel set di formazione "cosiddetta" discretizzazione non supervisionata. L'altro è quello di prendere in considerazione le classi quando si discretizza la discretizzazione-supervisione. Il primo è l'unica possibilità quando si tratta di problemi di clustering in cui le classi sono sconosciute o inesistenti.<br />L'ovvio modo di discretizzare un attributo numerico è quello di dividere la propria gamma in un numero prestabilito di intervalli uguali: un punto fisso fisso e indipendente dal dato. Questo viene spesso fatto al momento della raccolta dei dati. Ma, come qualsiasi metodo di discretizzazione non supervisionato, esegue il rischio di distruggere le distinzioni che si sarebbero dimostrate utili nel processo di apprendimento utilizzando gradazioni troppo grossolane o da scelte sfortunate di confine che inutilmente si riuniscono molti casi di classi diverse.<br /><br /> Il binning di uguale intervallo spesso distribuisce istanze molto in modo non uniforme: alcuni contenitori contengono molti istanze e altri non contengono nessuno. Questo può compromettere seriamente la capacità dell'attributo di contribuire a costruire buone strutture decisionali. Spesso è meglio permettere che gli intervalli siano di diversa grandezza, scegliendoli in modo che gli stessi esempi di formazione rientrino in ciascuno di essi. Questo metodo, la frequenza di equalizzazione, divide l'intervallo dell'attributo in un numero predefinito di cestini basati sulla distribuzione di esempi lungo quell'asse - talvolta chiamata equalizzazione dell'istogramma, poiché se si esegue un istogramma del contenuto dei cestini risultanti, esso sarà completamente piatto. Se si visualizza il numero di scomparti come risorsa, questo metodo lo utilizza al meglio.<br /><br /> Tuttavia, la binning di frequenza a pari frequenza è ancora sconosciuta alle classi di istanze e questo può causare conflitti difettosi. Ad esempio, se tutte le istanze in un contenitore hanno una classe e tutte le istanze del prossimo bin di livello superiore hanno un altro tranne il primo, che ha la classe originale, è certamente opportuno rispettare le divisioni di classe e includere quella prima istanza nel Cestino precedente, sacrificando la proprietà a frequenza uguale per l'omogeneità. La discretizzazione supervisionata - tenendo conto delle classi durante il processo - ha sicuramente vantaggi.<br />Tuttavia, si è scoperto che il binning di frequenza a pari frequenza può dare ottimi risultati, almeno in combinazione con lo schema di apprendimento Naïve Bayes, quando il numero di scomparti viene scelto in modo dipendente dai dati impostandolo alla radice quadrata del numero Di casi. Questo metodo si chiama discretizzazione proporzionale a k-interval.<br /> Entropy-based discretization<br /><br />Poiché il criterio utilizzato per la suddivisione di un attributo numerico durante la formazione di un albero di decisione funziona bene in pratica, sembra una buona idea estenderla ad una discretizzazione più generale dividendo ricorrendo intervalli fino a quando non è il momento di interrompere. Nel capitolo 6 abbiamo visto come ordinare le istanze dal valore dell'attributo e considerare, per ogni punto di splitting possibile, il guadagno informativo della divisione risultante. Per discretizzare l'attributo, una volta determinata la prima divisione, il processo di suddivisione può essere ripetuto nelle parti superiori e basse dell'intervallo, e così via, in modo ricorsivo.<br />Per vedere che ciò funziona in pratica, rivediamo l'esempio a pagina 189 per discretizzare l'attributo di temperatura dei dati meteo, i cui valori sono <br /><br /> .......<br /><br />(I valori ripetuti sono stati collassati insieme.) Il guadagno di informazioni per ciascuna delle 11 posizioni possibili per il punto di interruzione è calcolato nel modo consueto. Ad esempio, il valore dell'informazione della temperatura di prova <71,5, che divide l'intervallo in quattro sì e due no per cinque sì e tre no, è<br /><br /><br />info([4, 2], [5, 3]) = (6 14) * info([4, 2]) + (8 14) * info([5, 3]) = 0.939 bits<br /><br /><br />Questo rappresenta la quantità di informazioni necessarie per specificare i singoli valori di sì e non dato la suddivisione. Cerchiamo una discretizzazione che rende i sottointervalli più pura possibile; Di conseguenza, scegliamo di dividere nel punto in cui il valore dell'informazione è più piccolo. (Questo è lo stesso della suddivisione in cui il guadagno di informazioni, definito come la differenza tra il valore dell'informazione senza la suddivisione e quello con la divisione, è più grande.) Come prima, mettiamo le soglie numeriche a metà tra i valori che delimitano i limiti di un concetto.<br /><br /><br />Figure 7.3 The result of discretizing the temperature attribute.<br /><br /><br /><br /><br /><br /> Il grafico con l'etichetta A in Figura 7.2 mostra i valori di informazioni in ogni punto di taglio possibile in questa prima fase. La divisione più pulita - il più piccolo valore d'informazione - è a una temperatura di 84 (0,827 bit), che separa solo il valore finale, senza alcun caso, dall'elenco precedente. Le classi di istanza sono scritte sotto l'asse orizzontale per facilitare l'interpretazione. L'invocazione dell'algoritmo nell'intervallo inferiore delle temperature, da 64 a 83, produce il grafico con l'etichetta B. Questo ha un minimo a 80.5 (0.800 bit), che divide i due valori successivi, entrambi i casi di sì. Ricorrendo ancora all'algoritmo nell'intervallo più basso, ora da 64 a 80, viene generato il grafico con l'etichetta C (indicata punteggiata per distinguerla dagli altri). Il minimo è a 77.5 (0.801 bit), dividendo un'altra no instance. Il grafico D ha un minimo di 73,5 (0,764 bit), dividendo due istanze di sì. Il grafico E (nuovamente tratteggiato, puramente per renderlo più facilmente visibile), per l'intervallo di temperatura da 64 a 72, ha un minimo di 70,5 (0,796 bit), che divide due nodi e un sì. Infine, il grafico F, per l'intervallo da 64 a 70, ha un minimo di 66,5 (0,4 bit).<br /><br /> La discretizzazione finale dell'attributo di temperatura è mostrata in Figura 7.3. Il fatto che la ricorsione si verifica solo nel primo intervallo di ciascuna divisione è un artefatto di questo esempio: in generale, sia gli intervalli superiori che quelli più bassi dovranno essere ulteriormente divisi. Sotto ogni divisione è l'etichetta del grafico della Figura 7.2 che è responsabile per esso, e sotto questo è il valore effettivo del punto di divisione.<br /><br /> Può essere dimostrato teoricamente che un punto di taglio che minimizza il valore dell'informazione non si verificherà mai tra due istanze della stessa classe. Ciò porta ad una ottima ottimizzazione: bisogna solo considerare potenziali divisioni che separano istanze di classi diverse. Si noti che se le etichette di classe sono state assegnate agli intervalli basati sulla classe di maggioranza nell'intervallo, non ci sarebbe alcuna garanzia che gli intervalli adiacenti ricevessero diverse etichette. Potrebbe essere tentato di considerare gli intervalli di fusione con la stessa classe di maggioranza (ad esempio, i primi due intervalli di Figura 7.3), ma come vedremo più avanti (pagine 302-304) non è una cosa buona da fare in generale. <br /><br /> L'unico problema da considerare è il criterio di arresto. Nell'esempio di temperatura, la maggior parte degli intervalli identificati erano "pura" in quanto tutti i loro casi hanno la stessa classe e non c'è chiaramente alcun punto nel tentativo di dividere tale intervallo. (Le eccezioni erano l'intervallo finale, che abbiamo tacitamente deciso di non dividere e l'intervallo da 70,5 a 73,5). In generale, tuttavia, le cose non sono così semplici.<br /><br /> Un buon modo per fermare la procedura di discretizzazione della divisione basato su entropia risulta essere il principio MDL che abbiamo incontrato nel Capitolo 5. In conformità a questo principio, vogliamo ridurre al minimo la dimensione della "teoria" più la dimensione delle informazioni necessarie Per specificare tutti i dati forniti dalla teoria. In questo caso, se si divide, la "teoria" è il punto di divisione e stiamo confrontando la situazione in cui si divide con quello in cui non lo facciamo. In entrambi i casi supponiamo che le istanze siano note, ma le loro etichette di classe non lo sono. Se non dividiamo, le classi possono essere trasmesse codificando l'etichetta di ogni istanza. Se lo facciamo, codiciamo prima il punto di divisione (in log2 [N-1] bit, dove N è il numero di istanze), quindi le classi delle istanze sotto quel punto e poi le classi di quelle sopra. Potete immaginare che se la divisione è una buona cosa - diciamo, tutte le classi che seguono sono sì e tutte quelle che sopra non sono - allora c'è molto da guadagnare dividendo. Se esiste un numero uguale di istanze sì e no, ogni istanza costa 1 bit senza divisione, ma non più di 0 bit con la suddivisione: non è proprio 0 poiché i valori della classe associati alla suddivisione devono essere codificati, ma questa penalità è Ammortizzato in tutti i casi. In questo caso, se ci sono molti esempi, la pena di dover codificare il punto di divisione sarà ben oltrepassata dalle informazioni salvate dalla suddivisione.<br /><br /> Abbiamo sottolineato nella sezione 5.9 che quando applica il principio MDL, il diavolo è nei dettagli. Nel caso relativamente semplice della discretizzazione, la situazione è tractable anche se non semplice. Le quantità di informazioni possono essere ottenute esattamente sotto alcune ipotesi ragionevoli. Non andiamo nei dettagli, ma il risultato è che la ripartizione dettata da un particolare punto di taglio è valsa la pena, mentre se la gain di informazioni per quella divisione supera un certo valore che dipende dal numero di istanze N, il numero di classi k , L'entropia degli istanze E, l'entropia delle istanze in ciascun sottointervallo E1 e E2 e il numero di classi rappresentate in ciascun sottointervallo k1 e k2:<br /><br />.........<br /><br /><br /><br /> Il primo componente è l'informazione necessaria per specificare il punto di suddivisione; La seconda è una correzione dovuta alla necessità di trasmettere quali classi corrispondono ai subintervalli superiori e inferiori.<br /> Quando applicato all'esempio di temperatura, questo criterio impedisce qualsiasi condivisione. La prima divisione rimuove solo l'esempio finale e, come si può immaginare, pochissime informazioni reali si guadagnano quando trasmettono le classi - in realtà, il criterio MDL non creerà mai un intervallo che contenga solo un esempio. La mancata discretizzazione della temperatura impedisce effettivamente di svolgere alcun ruolo nella struttura decisionale finale poiché lo stesso valore discreto sarà dato a tutte le istanze. In questa situazione, questo è perfettamente appropriato: l'attributo di temperatura non si verifica nei buoni alberi decisionali o nelle regole per i dati meteorologici. In effetti, la mancata discrezione equivale a attribuire la selezione.<br /> Other discretization methods<br /><br /> Il metodo basato su entropia con il criterio di arresto MDL è una delle migliori tecniche generali per la discretizzazione controllata. Tuttavia, molti altri metodi sono stati studiati. Ad esempio, invece di procedere dall'alto verso il basso per intervalli di suddivisione ricorsiva fino a quando non si soddisfi un certo criterio di arresto, è possibile lavorare in basso, prima di immettere ciascuna istanza nel proprio intervallo e di considerare se si possono fondere intervalli adiacenti. Puoi applicare un criterio statistico per vedere quali sarebbero i due migliori intervalli da unire e unirli se la statistica supera un certo livello di confidenza preimpostato, ripetendo l'operazione fino a quando non si verifica un potenziale di fusione. Il test c2 è adatto ed è stato utilizzato per questo scopo. Invece di specificare una soglia di significatività preimpostata, sono disponibili tecniche più complesse per determinare automaticamente un livello appropriato.<br /><br /> Un approccio piuttosto diverso è quello di contare il numero di errori che una discretizzazione fa quando prevede la classe di ogni istruzione, supponendo che ogni intervallo riceve la classe di maggioranza. Ad esempio, il metodo 1R descritto in precedenza è basato su errori: si concentra sugli errori piuttosto che sull'entropia. Tuttavia, la migliore discretizzazione possibile in termini di conteggio degli errori si ottiene utilizzando il maggior numero possibile di intervalli e questo caso degenerato dovrebbe essere evitato limitando il numero di intervalli in anticipo. Ad esempio, si potrebbe chiedere quale sia il modo migliore per discretizzare un attributo in intervalli k in modo da ridurre al minimo il numero di errori?<br /><br /> Il metodo 'brute-force' per trovare il modo migliore di partizionare un attributo in intervalli k in modo da minimizzare il conteggio degli errori è esponenziale in k e quindi impossibile. Tuttavia, ci sono sistemi molto più efficienti che si basano sull'idea di programmazione dinamica. La programmazione dinamica si applica non solo alla misura di conteggio degli errori ma anche a qualsiasi funzione di impurità addizionali e può trovare la suddivisione delle istanze N in intervalli di k in modo da minimizzare l'impurità nel tempo proporzionale a kN 2. Ciò dà un modo di Trovando la migliore discretizzazione basata su entropia, dando un potenziale miglioramento della qualità della discretizzazione (ma in pratica trascurabile) sul metodo ricostruttivo basato su entropia descritto in precedenza. La notizia per la discretizzazione basata sugli errori è ancora migliore, perché esiste un metodo che minimizza il conteggio degli errori nel tempo lineare in N.<br /> Entropy-based versus error-based discretization<br /><br />Figure 7.4 Class distribution for a two-class, two-attribute problem.Perché non utilizzare la discretizzazione basata sugli errori, in quanto la discretizzazione ottimale può essere trovata molto rapidamente? La risposta è che c'è un grave inconveniente alla discretizzazione basata sugli errori: non può produrre intervalli adiacenti con la stessa etichetta (come i primi due della Figura 7.3). La ragione è che la fusione di due intervalli non influenzerà il conteggio degli errori ma libererà un intervallo che può essere utilizzato altrimenti dove ridurre il conteggio degli errori.<br /><br /> Perché qualcuno vuole generare intervalli adiacenti con la stessa etichetta? Il motivo è meglio illustrato con un esempio. La Figura 7.4 mostra lo spazio di istanza per un semplice problema a due classi con due attributi numerici che vanno da 0 a 1. Le istanze appartengono a una classe (i punti) se il loro primo attributo (a1) è inferiore a 0,3 oppure se è inferiore a 0,7 E il loro secondo attributo (a2) è inferiore a 0,5. Altrimenti, appartengono all'altra classe (triangoli). I dati della Figura 7.4 sono stati generati artificialmente in base a questa regola.<br /><br /><br /> Ora supponiamo che stiamo cercando di discretizzare entrambi gli attributi in modo da apprendere le classi dagli attributi discretizzati. La migliore discretizzazione divide a1 in tre intervalli (da 0 a 0.3, da 0.3 a 0.7 e da 0.7 a 1.0) e da a2 in due intervalli (da 0 a 0.5 e da 0.5 a 1.0). Tenendo conto di questi attributi nominali, sarà facile imparare a distinguere le classi a parte con un semplice albero di decisione o un algoritmo di regole. Discretizzare a2 non è un problema. Per a1, tuttavia, i primi e gli ultimi intervalli avranno etichette opposte (puntino e triangolo rispettivamente).<br /> Il secondo avrà qualunque etichetta che si verifica nella maggior parte delle regioni da 0,3 a 0,7 (infatti è dotato dei dati riportati in Figura 7.4). In entrambi i casi, questa etichetta deve inevitabilmente essere la stessa di una delle etichette adiacenti, ovviamente ciò è vero qualunque sia la probabilità di classe che si verifica nella regione media. Quindi questa discretizzazione non sarà raggiunta con alcun metodo che minimizzi i conteggi di errore, perché un tale metodo non può produrre intervalli adiacenti con la stessa etichetta. Il punto è che ciò che cambia poiché il valore di a1 attraversa il limite a 0.3 non è la classe di maggioranza, ma la distribuzione di classi. La classe di maggioranza resta dot. La distribuzione, tuttavia, cambia notevolmente, dal 100% prima del confine fino a poco più del 50% dopo. E la distribuzione si ripresenta mentre il limite a 0,7 è attraversato, dal 50% allo 0%. I metodi di discretizzazione basati sull'entropia sono sensibili ai cambiamenti nella distribuzione anche se la classe di maggioranza non cambia. I metodi basati su errori non lo sono.<br /> Converting discrete to numeric attributes<br /><br /> C'è un problema converso alla discretizzazione. Alcuni algoritmi di apprendimento, in particolare il metodo basato sull'istanza più vicina e le tecniche di previsione numerica che comportano la regressione, gestiscono naturalmente solo gli attributi numerici. Come possono essere estesi a attributi nominali?<br /><br /> Nell'apprendimento basato sullo stesso modo, come descritto nella sezione 4.7, gli attributi discreti possono essere trattati come numerici definendo la "distanza" tra due valori nominali uguali a 0 e tra due valori diversi da 1 a meno della I valori reali coinvolti. Invece di modificare la funzione di distanza, questo può essere ottenuto utilizzando una trasformazione di attributo: sostituire un attributo nominale valutato k con k attributi binari sintetici, uno per ogni valore che indica se l'attributo ha tale valore. Se gli attributi hanno un peso uguale, questo raggiunge lo stesso effetto sulla funzione di distanza. La distanza è insensibile ai valori degli attributi perché vengono codificate solo informazioni "stesse" o "diverse", non le sfumature di differenza che possono essere associate ai diversi valori possibili dell'attributo. Ulteriori distinzioni possono essere fatte se gli attributi hanno pesi che riflettono la loro importanza relativa.<br /><br /> Se i valori dell'attributo possono essere ordinati, si creano ulteriori possibilità. Per un problema di previsione numerica, il valore della classe media corrispondente ad ogni valore di un attributo nominale può essere calcolato dalle istanze di addestramento e utilizzato per determinare un ordine che questa tecnica è stata introdotta per gli alberi di modello nella Sezione 6.5. (È difficile trovare un modo analogo di ordinare valori di attributo per un problema di classificazione.) Un attributo nominale ordinato può essere sostituito con un numero intero in modo ovvio, ma ciò implica non solo un ordine, ma anche una metrica sull'attributo valori. L'implicazione di una metrica può essere evitata creando attributi binari sintetici k-1 per un attributo nominale valore k, nel modo descritto a pagina 297. Questa codifica implica ancora un'ordinazione tra diversi valori dell'attributo - i valori adiacenti differiscono in giusto Uno degli attributi sintetici, mentre quelli distanti differiscono in molti - ma non implica una pari distanza tra i valori degli attributi.<br /> Some useful transformations<br /><br /> 'Resourceful data miners' dispongono di una casella degli strumenti piena di tecniche, come la discretizzazione, per la trasformazione dei dati. Come abbiamo sottolineato nella Sezione 2.4, l'attività di data mining non è mai stata una questione di semplice acquisizione di un set di dati e di applicare ad esso un algoritmo di apprendimento. Ogni problema è diverso. Devi pensare ai dati e a ciò che significa, ed esaminarla da diversi punti di vista - creativamente! - per giungere ad una prospettiva adeguata. La trasformazione in diversi modi può aiutarti ad iniziare.<br /><br /> Non è necessario creare la propria casella degli strumenti implementando le tecniche. Ambienti complessi per l'estrazione dei dati, come quelli descritti nella parte II di questo libro, contengono una vasta gamma di strumenti appropriati per l'utilizzo. Non è necessariamente una comprensione dettagliata di come vengono implementati. Ciò che serve è capire cosa fanno gli strumenti e come possono essere applicati. Nella Parte II elenchiamo e descrivere brevemente tutte le trasformazioni del banco dati Weka Data Mining<br /><br /> I dati spesso richiedono trasformazioni matematiche generali di un insieme di attributi. Potrebbe essere utile definire nuovi attributi applicando funzioni matematiche specifiche a quelle esistenti. Due attributi di data potrebbero essere sottratti per dare un terzo attributo che rappresenta l'età - un esempio di una trasformazione semantica guidata dal significato degli attributi originali. Altre trasformazioni potrebbero essere suggerite dalle proprietà note dell'algoritmo di apprendimento. Se si sospetta una relazione lineare che coinvolge due attributi A e B e l'algoritmo è in grado di dividere in asse parallelo (come la maggior parte degli alberi di decisione e degli studenti di regole), il rapporto A / B potrebbe essere definito come un nuovo attributo. Le trasformazioni non sono necessariamente matematiche ma possono implicare conoscenze del mondo come i giorni della settimana, le vacanze civiche oi numeri atomici chimici. Potrebbero essere espressi come operazioni in un foglio di calcolo o come funzioni implementate da programmi informatici arbitrari. Oppure è possibile ridurre diversi attributi nominali a concatenare i loro valori, generando un attributo singolo k1 ¥ k2 rispettivamente da attributi con valori k1 e k2. La discretizzazione converte un attributo numerico a quello nominale e abbiamo visto in precedenza come convertire anche nell'altra direzione.<br /><br /> Come un altro tipo di trasformazione, è possibile applicare una procedura di clustering al set di dati e quindi definire un nuovo attributo il cui valore per un'istanza specifica è il cluster che lo contiene utilizzando un'etichetta arbitraria per i cluster. In alternativa, con il clustering probabilistico, è possibile aumentare ogni istanza con le probabilità di adesione per ogni cluster, inclusi molti nuovi attributi in quanto esistono cluster.<br /><br /> A volte è utile aggiungere rumore ai dati, forse per testare la robustezza di un algoritmo di apprendimento. Per assumere un attributo nominale e modificare una determinata percentuale dei suoi valori. Per ignorare i dati rinominando la relazione, i nomi degli attributi ei valori degli attributi nominali e delle stringhe - perché è spesso necessario anonimizzare i set di dati sensibili. Per casualizzare l'ordine di istanze o generare un campione casuale del set di dati reamblierizzandolo. Per ridurre un set di dati rimuovendo una determinata percentuale di istanze o tutte le istanze che dispongono di determinati valori per attributi nominali o valori numerici al di sopra o al di sotto di una determinata soglia. Oppure per rimuovere gli outlier applicando un metodo di classificazione al set di dati e eliminando istanze non classificate.<br /><br /> Diversi tipi di richieste di input per le proprie trasformazioni. Se è possibile immettere file di dati sparse (vedere la sezione 2.4), potrebbe essere necessario essere in grado di convertire i set di dati in un modulo nonsparse e viceversa. L'input di testo e l'immissione di una serie temporale richiedono le proprie conversioni specializzate, descritte nelle sottosezioni che seguono. Ma innanzitutto esaminiamo due tecniche generali per trasformare i dati con attributi numerici in una forma di dimensione inferiore che può essere più utile per l'estrazione dei dati.<br /> Principal components analysis<br /><br /> In un set di dati con attributi numerici k, è possibile visualizzare i dati come una nuvola di punti nello spazio k-dimensionale: le stelle del cielo, uno sciame di mosche congelato nel tempo, una trama bidimensionale di dispersione su carta. Gli attributi rappresentano le coordinate dello spazio. Ma gli assi utilizzati, il sistema di coordinate in sé, sono arbitrari. È possibile posizionare gli assi orizzontali e verticali sulla carta e rappresentare i punti della trama di dispersione usando queste coordinate oppure si potrebbe disegnare una linea retta arbitraria per rappresentare l'asse X e una perpendicolare al suo rappresentare Y. Per registrare le posizioni di Le mosche si possono utilizzare un sistema di coordinate convenzionali con un asse nord-sud, un asse est-ovest e un asse di salita. Ma altri sistemi di coordinate farebbero altrettanto bene. Le creature come le mosche non sanno a nord, a sud, ad est e ad ovest, sebbene, essendo soggette alla gravità, possono percepire come qualcosa di speciale. Per quanto riguarda le stelle del cielo, chi dice quale sia il sistema di coordinate "giusto"? Nel corso dei secoli i nostri antenati si sono mossi da una prospettiva geocentrica a quella eliocentrica a un puro relativismo, ogni turno di prospettiva è accompagnato da turbolenti sconvolgimenti religioso-scientifici e dolorosa esame del ruolo dell'umanità nell'universo di Dio.<br /><br /> Torna al dataset. Proprio come in questi esempi, non c'è niente da impedirti di trasformare tutti i punti dati in un diverso sistema di coordinate. Ma a differenza di questi esempi, nell'attività di data mining spesso c'è un sistema di coordinate preferito, definito non da una convenzione esterna ma dai dati stessi. Qualunque sia la coordinazione che usi, la nuvola dei punti ha una certa varianza in ogni direzione, indicando il grado di diffusione attorno al valore medio in quella direzione. E 'un fatto curioso che se si aggiungono le varianze lungo ciascun asse e poi trasformano i punti in un sistema di coordinate diverso e fanno lo stesso, si ottiene la stessa varianza totale in entrambi i casi. Ciò è sempre vero purché i sistemi di coordinate siano ortogonali, cioè ogni asse è ad angolo retto rispetto agli altri.<br /><br /> L'idea di analisi dei componenti principali è quella di utilizzare un particolare sistema di coordinate che dipende dalla nube dei punti come segue: posizionare il primo asse nella direzione della massima varianza dei punti per massimizzare la varianza lungo quel asse. Il secondo asse è perpendicolare ad esso. In due dimensioni non esiste alcuna scelta - la sua direzione è determinata dal primo asse - ma in tre dimensioni può trovarsi ovunque nel piano perpendicolare al primo asse e in dimensioni più elevate c'è ancora più scelta, sebbene sia costantemente vincolata Essere perpendicolare al primo asse. A seconda di questo vincolo, scegliere il secondo asse nel modo che massimizza la varianza lungo di essa. Continuare, scegliendo ogni asse per massimizzare la quota della restante varianza.<br /><br /> Come fai a fare questo? Non è difficile, dato un programma informatico appropriato e non è difficile capire, dato gli strumenti matematici appropriati. Tecnicamente - per coloro che capiscono i termini corsivi - calcolate la matrice di covarianza delle coordinate originali dei punti e la diagonali per trovare gli autovettori. Questi sono gli assi dello spazio trasformato, ordinati in ordine di autovalore, poiché ogni autovalore dà la varianza lungo il suo asse.<br /><br /> La Figura 7.5 mostra il risultato della trasformazione di un particolare set di dati con 10 attributi numerici, corrispondenti a punti nello spazio tridimensionale. Immaginate il set di dati originale come nuvola di punti in 10 dimensioni, non possiamo disegnarlo! Scegli il primo asse lungo la direzione della più grande varianza, la seconda perpendicolare ad essa lungo la direzione della prossima varianza più grande e così via. La tabella fornisce la varianza lungo ciascun nuovo asse di coordinate nell'ordine in cui sono stati scelti gli assi. Poiché la somma delle varianze è costante indipendentemente dal sistema di coordinate, vengono espresse come percentuali di quel totale. Chiamiamo componenti assi e diciamo che ognuno "rappresenta" la propria quota della varianza. La Figura 7.5 (b) elabora la varianza che ogni componente rappresenta per il numero del componente. Puoi utilizzare tutti i componenti come nuovi attributi per l'estrazione dei dati, oppure puoi scegliere solo i primi, i componenti principali e scartare il resto. In questo caso, tre componenti principali rappresentano l'84% della varianza nel set di dati; Sette rappresentano più del 95%.<br /><br /> <br /><br />Figure 7.5 Principal components transform of a dataset: (a) variance of each component and (b) variance plot.<br /><br /><br /> Nei set di dati numerici è comune utilizzare l'analisi dei componenti principali prima dell'estrazione dei dati come forma di pulizia dei dati e generazione di attributi. Ad esempio, si potrebbe desiderare di sostituire gli attributi numerici con gli assi principali del componente o con un sottoinsieme di essi che rappresenta una determinata proporzione - ad esempio, il 95% - della varianza. Si noti che la scala degli attributi influenza l'esito dell'analisi dei componenti principali ed è pratica comune standardizzare tutti gli attributi a zero di media e di unità di varianza in primo luogo. Un'altra possibilità è quella di applicare ricorsivamente l'analisi dei componenti principali in un discente di un albero decisionale. Ad ogni stadio un apprendente ordinario dell'albero di decisione sceglie di dividere in una direzione parallela ad uno degli assi. Tuttavia, supponiamo che una prima trasformazione dei componenti sia eseguita innanzitutto e il discente sceglie un asse nello spazio trasformato. Questo equivale a una spaccatura lungo una linea obliqua nello spazio originale. Se la trasformazione viene eseguita nuovamente prima di ogni divisione, il risultato sarà un albero di decisione multivariato le cui divisioni sono in direzioni non parallele con gli assi o tra loro.<br /> Random projections<br /><br /> L'analisi dei componenti principali trasforma linearmente i dati in uno spazio di dimensione inferiore. Ma è costoso. Il tempo necessario per trovare la trasformazione (che è una matrice che comprende gli autovettori della matrice di covarianza) è cubica nel numero di dimensioni. Questo rende impossibile per i set di dati con un gran numero di attributi. Un'alternativa molto più semplice è quella di utilizzare una proiezione casuale dei dati in uno spazio sottostante con un numero predeterminato di dimensioni. È molto facile trovare una matrice di proiezione casuale. Ma sarà un bene? <br /><br /> In realtà, la teoria mostra che le proiezioni casuali preservano in media le relazioni di distanza abbastanza bene. Ciò significa che potrebbero essere utilizzati in combinazione con alberi di kD o alberi a sfera per fare la ricerca di prossimità più vicina in spazi con un numero enorme di dimensioni. Prima trasformare i dati per ridurre il numero di attributi; Poi costruisci un albero per lo spazio trasformato. Nel caso della classificazione di prossimità più vicina è possibile rendere il risultato più stabile e meno dipendente dalla scelta della proiezione casuale, costruendo un classificatore di insieme che utilizza più matrici casuali.<br /> Non sorprende che le proiezioni casuali eseguano peggio di quelle scelte accuratamente dall'analisi dei componenti principali quando utilizzati per elaborare i dati pre-elaborati per una serie di classificatori standard. Tuttavia, i risultati sperimentali hanno dimostrato che la differenza non è troppo grande e che tende a diminuire come aumenta il numero di dimensioni. E, naturalmente, le proiezioni casuali sono molto più economiche in termini computazionali.<br /> Text to attribute vectors<br /><br /> Nella sezione 2.4 abbiamo introdotto gli attributi di stringa che contengono pezzi di testo e hanno osservato che il valore di un attributo di stringa è spesso un documento intero. Gli attributi di stringa sono fondamentalmente nominali, con un numero non specificato di valori. Se vengono trattati semplicemente come attributi nominali, possono essere costruiti modelli che dipendono dal fatto che i valori di due attributi di stringa siano uguali o meno. Ma ciò non cattura alcuna struttura interna della stringa o mette in evidenza aspetti interessanti del testo che rappresenta.<br /><br /> Potresti immaginare di decomporre il testo in un attributo di stringa in paragrafi, frasi o frasi. Generalmente, tuttavia, la parola è l'unità più utile. Il testo in un attributo di stringa è di solito una sequenza di parole e spesso è meglio rappresentata in termini di parole che contiene. Ad esempio, è possibile trasformare l'attributo stringa in un insieme di attributi numerici, uno per ogni parola, che rappresenta la frequenza di visualizzazione della parola. L'insieme di parole - cioè l'insieme di nuovi attributi - è determinato dal set di dati e di solito è abbastanza grande. Se ci sono diversi attributi di stringa le cui proprietà devono essere trattate separatamente, i nuovi nomi degli attributi devono essere distinti, forse da un prefisso determinato dall'utente.<br /><br /> La conversione in parole-tokenizzazione - non è un'operazione così semplice in quanto suona. I gettoni possono essere formati da sequenze alfabetiche contigue con caratteri non alfabetici scartati. Se i numeri sono presenti, anche le sequenze numeriche possono essere mantenute. I numeri possono comportare segni + o - possono contenere punti decimali e possono avere una notazione esponenziale - in altre parole, devono essere analizzati in base a una definita sintassi di numero. Una sequenza alfanumerica può essere considerata come un singolo token. Forse il carattere spaziale è il delimitatore del token; Forse lo spazio bianco (tra cui la linguetta e i caratteri della nuova linea) è il delimitatore, e forse anche la punteggiatura. I periodi possono essere difficili: talvolta dovrebbero essere considerati parte della parola (ad esempio, con iniziali, titoli, abbreviazioni e numeri), ma a volte non dovrebbero (ad esempio, se sono dei delimitatori delle frasi). I trattini e gli apostrofi sono analogamente problematici.<br /><br /> Tutte le parole possono essere convertite in minuscole prima di essere aggiunte al dizionario. Le parole su una lista fissa e predeterminata di parole di funzione o di parole chiave come le e, e, ma, potrebbero essere ignorate. Tenere presente che gli elenchi delle parole chiave dipendono dalla lingua. Infatti, così sono anche le convenzioni di capitalizzazione (tedesco capitalizza tutti i nomi), la sintassi di numero (gli europei utilizzano la virgola per un punto decimale), le convenzioni di punteggiatura (lo spagnolo ha un punto interrogativo iniziale) e, naturalmente, i set di caratteri. Il testo è complicato!<br /> Anche le parole a bassa frequenza come hapax legomena3 vengono spesso scartate. A volte si ritiene utile mantenere le parole più frequenti k dopo che le parole di stop sono state rimosse - o forse le parole di alto livello k per ogni classe.<br /><br />Oltre a tutte queste opzioni di cancellazione, c'è anche la questione di quale valore debba essere l'attributo di ogni parola. Il valore può essere il conteggio di parole: il numero di volte che la parola appare nella stringa o può semplicemente indicare la presenza o l'assenza della parola. Le frequenze di parola potrebbero essere normalizzate per dare il vettore di attributo di ogni documento la stessa lunghezza euclidea. In alternativa, le frequenze fij per parola i nel documento j possono essere trasformate in vari modi standard. Una misura di frequenza logaritmica standard è log (1 + fi). Una misura che è ampiamente utilizzata nel recupero delle informazioni è TF * IDF, o "Frequenza di termine frequenza inversa del documento". Qui, la frequenza di termine è modulata da un fattore che dipende da come comunemente la parola viene utilizzata in altri documenti. La metrica TF * IDF viene definita tipicamente come<br /><br /> ....<br /><br /> L'idea è che un documento è caratterizzato essenzialmente dalle parole che appaiono spesso in esso, che rappresenta il primo fattore, a meno che le parole utilizzate in ogni documento o quasi ogni documento siano inutili come discriminatori, il che rappresenta il secondo. TF ¥ IDF viene utilizzato per riferirsi non solo a questa particolare formula ma anche a una classe generale di misure dello stesso tipo. Ad esempio, il fattore di frequenza fij può essere sostituito da un termine logaritmico come il log (1 + fi l).<br /> Time series<br /><br /> Nei dati della serie temporale, ogni istanza rappresenta un passaggio temporale diverso e gli attributi forniscono valori associati a quel tempo, come ad esempio nella previsione meteorologica o nella previsione del mercato azionario. A volte è necessario essere in grado di sostituire il valore dell'attributo nell'istanza corrente con il valore corrispondente in un'altra istanza in passato o in futuro. È ancora più comune sostituire il valore di un attributo con la differenza tra il valore corrente e il valore in un'istanza precedente. Ad esempio, la differenza - spesso chiamata Delta - tra il valore attuale e quello precedente è spesso più informativo del valore stesso. La prima istanza, in cui il valore temporizzato è sconosciuto, può essere rimosso o sostituito con un valore mancante. Il valore Delta è essenzialmente la prima derivata scalata da una costante che dipende dalla dimensione del passo di tempo. Le successive trasformazioni Delta prendono derivati più alti.<br /><br /> In alcune serie temporali, le istanze non rappresentano campioni regolari, ma l'ora di ogni istanza è data da un attributo timestamp. La differenza tra i timbri è la dimensione del passo per quella istanza e se vengono presi differenze successive per altri attributi, dovrebbero essere suddivisi per la dimensione del passo per normalizzare il derivato. In altri casi, ogni attributo può rappresentare un tempo diverso, anziché ogni istanza, in modo che la serie temporale sia da un attributo al successivo piuttosto che da un'istanza all'altra. Quindi, se le differenze sono necessarie, devono essere presi tra il valore di un attributo e il valore dell'attributo successivo per ogni istanza.<br /> Automatic data cleansing<br /><br /> Un problema che pregiudica l'estrazione pratica dei dati è una scarsa qualità dei dati. Gli errori in grandi database sono estremamente comuni. Anche i valori di attributo ei valori di classe sono spesso inaffidabili e danneggiati. Anche se un modo per affrontare questo problema è quello di controllare accuratamente i dati, le tecniche di data mining possono aiutare a risolvere il problema.<br /> Improving decision trees<br /><br /> È un fatto sorprendente che gli alberi decisionali indotti dai dati formativi possono spesso essere semplificati, senza perdita di precisione, scartando istanze erroneamente classificate dall'insieme di addestramento, ricollegando e poi ripetendo finché non ci sono casi erronei. Gli esperimenti sui set di dati standard hanno dimostrato che questo non influenza difficilmente l'accuratezza di classificazione di C4.5, un sistema standard di induzione degli alberi decisionali. In alcuni casi migliora leggermente; In altri si deteriora leggermente. La differenza è raramente statisticamente significativa - e anche quando è, il vantaggio può andare in entrambi i modi. Quanto influisce la tecnica è la dimensione dell'albero di decisione. Gli alberi risultanti sono invariabilmente molto più piccoli di quelli originali, anche se eseguono circa lo stesso.<br /><br /> Qual è la ragione di questo? Quando un 'metodo di induzione di un albero di decisione' 'elimina' un sottogruppo, si applica un test statistico che decide se il sottotesto è "giustificato" dai dati. La decisione di "eliminare" accetta un piccolo sacrificio nell'accuratezza della classificazione sul set di formazione nella convinzione che questo migliorerà le prestazioni test-set. 'Alcune istanze di formazione' che sono state classificate correttamente dall'albero non trattato saranno ora classificate in modo errato dal potato. In effetti, è stata presa la decisione di ignorare questi esercizi formativi.<br />Ma questa decisione è stata applicata solo localmente, nel sottogruppo eliminato. Il suo effetto non è stato permesso di percolare ulteriormente l'albero, forse con conseguente scelte differenti di attributi per il ramo. Rimuovere le istanze erronee dal set di allenamento e ricollegare l'albero decisionale mentre "sta prendendo" le decisioni di potatura alla loro conclusione logica. Se la strategia di potatura è buona, ciò non dovrebbe nuocere alla prestazione. Può perfino migliorarla permettendo di scegliere meglio scelte di attributo.<br /><br /> Senza dubbio sarebbe meglio consultare un esperto umano. Le istruzioni di formazione non classificate potrebbero essere presentate per la verifica e quelle che sono state trovate sbagliate potrebbero essere cancellate o meglio ancora, corrette.<br /> Si noti che stiamo supponendo che le istanze non siano classificate in modo errato "in qualsiasi modo sistematico". Se le istanze sono danneggiate sistematicamente sia in kit di allenamento che in serie di test, un valore di classe potrebbe essere sostituito da un altro; è solo prevedibile che la formazione sul set di addestramento errato avrebbe reso migliori prestazioni sul set di test (anche errato).<br /><br /> È interessante notare che è stato dimostrato che quando viene aggiunto un disturbo artificiale agli attributi (piuttosto che a classi), la prestazione test-set migliora se lo stesso rumore viene aggiunto allo stesso modo del set di allenamento. In altre parole, quando il disturbo dell'attributo è il problema, non è una buona idea addestrare su un set "pulito" se la prestazione deve essere valutata su un "sporco". Un metodo di apprendimento può imparare a compensare il rumore degli attributi, in una certa misura, se viene data una probabilità. In sostanza, può capire quali attributi sono inaffidabili e, se sono tutti inaffidabili, come meglio utilizzarli insieme per ottenere un risultato più affidabile. Per rimuovere il rumore dagli attributi per il set di allenamento nega l'opportunità di imparare come combattere meglio quel rumore. Ma con rumore di classe (anziché rumore di attributo), è meglio allenarsi su casi senza rumori, se possibile.<br /> Robust regression<br /><br /> I problemi causati da dati rumorosi sono noti, per la regressione lineare, da anni. Gli statisticisti spesso controllano i dati per gli outlier e li rimuovono manualmente. Nel caso della regressione lineare, gli outlier possono essere identificati visivamente anche se non è mai completamente chiaro se un outlier è un errore o un valore sorprendente, ma corretto. Gli outliers influenzano drasticamente la solita regressione dei minimi quadrati perché la misura a distanza quadrata accentua l'influenza dei punti lontani dalla linea di regressione.<br /><br /> I metodi statistici che affrontano il problema degli outlier sono chiamati robusti. Un modo per rendere più regolare la regressione è quello di utilizzare una misura a distanza assoluta invece del solito quadrato. Questo indebolisce l'effetto degli outliers. Un'altra possibilità è cercare di identificare automaticamente gli outlier e rimuoverli dalla considerazione. Ad esempio, si potrebbe formare una linea di regressione e quindi rimuovere dalla considerazione il 10% dei punti che si trovano più lontani dalla linea. Una terza possibilità è ridurre al minimo la media (piuttosto che la media) dei quadrati delle divergenze dalla linea di regressione. Si scopre che questo stimatore è molto robusto ed effettivamente combina con outliers nella direzione X così come outliers nella direzione Y - che è la direzione normale che si pensa di outliers.<br /><br /> Un set di dati spesso utilizzato per illustrare una regressione robusta è il grafico delle telefonate internazionali effettuate dal Belgio dal 1950 al 1973, mostrate nella Figura 7.6. Questi dati sono tratti dall'indagine statistica belga pubblicata dal Ministero dell'Economia. La trama sembra mostrare una tendenza al rialzo nel corso degli anni, ma esiste un gruppo di punti anomalo dal 1964 al 1969. Risulta che durante questo periodo i risultati sono stati erroneamente registrati nel numero totale di minuti delle chiamate. Gli anni 1963 e 1970 sono anche parzialmente colpiti. Questo errore provoca una grande frazione di outliers nella direzione Y.<br /><br /> Non sorprende che la solita linea di regressione a minori quadrati sia gravemente influenzata da questi dati anomali. Tuttavia, la linea mediana minore di quadrati resta notevolmente imperturbabile. Questa linea ha un'interpretazione semplice e naturale. Geometrico, corrisponde alla ricerca della striscia più stretta che copre metà delle osservazioni, dove lo spessore della striscia è misurato in direzione verticale, questa striscia è contrassegnata grigio in Figura 7.6; È necessario guardare da vicino per vederlo.La linea mediana minore di quadrati sta nel centro esatto di questa fascia. Si noti che questa nozione è spesso più facile da spiegare e visualizzare rispetto alla normale definizione di regressione minima quadrati. Purtroppo, c'è un grave svantaggio per le tecniche di regressione basate sul mediano: hanno un elevato costo computazionale, che spesso li rende impossibili per problemi pratici.<br /><br /><br />Figure 7.6 Number of international phone calls from Belgium, 1950–1973.<br /><br /><br /> Detecting anomalies - Individuazione di anomalie<br /><br /> Un grave problema con qualsiasi forma di rilevamento automatico di dati apparentemente errati è che il bambino può essere gettato fuori con l'acqua del bagno. A dispetto della consultazione di un esperto umano, non esiste veramente alcun modo di dire se un'istanza particolare sia veramente un errore o se semplicemente non si inserisce il tipo di modello che viene applicato. Nella regressione statistica, le visualizzazioni aiutano. Di solito è visivamente apparente, anche al non esperto, se si inserisce una curva sbagliata, ad esempio viene applicata una linea retta per i dati che si trova su una parabola. Gli outliers della Figura 7.6 sono sicuramente all'occhio. Ma la maggior parte dei problemi non può essere così facilmente visualizzata: la nozione di "tipo di modello" è più sottile di una linea di regressione. E anche se è noto che ottimi risultati sono ottenuti sulla maggior parte dei set di dati standard scartando istanze che non si inseriscono in un modello di albero decisionale, questo non è necessariamente di grande comodità quando si tratta di un particolare set di dati nuovo. Il sospetto rimarrà che forse il nuovo set di dati è semplicemente inadatto alla modellazione degli alberi decisionali.<br /><br /> Una soluzione che è stata provata è quella di utilizzare diversi "schemi di apprendimento", come ad esempio un albero di decisione e un discente più vicino e una funzione discriminante lineare, per filtrare i dati. Un approccio conservativo è quello di chiedere che tutti e tre i sistemi non riescano a classificare correttamente un'istanza prima che sia ritenuto errato e rimosso dai dati. In alcuni casi, filtrando i dati in questo modo e utilizzando i dati filtrati come input in un sistema di apprendimento finale, si ottiene una prestazione migliore rispetto a un semplice utilizzo dei tre schemi di apprendimento e la possibilità di votare sul risultato. Formare tutti e tre i regimi sui dati filtrati e lasciarli votare possono dare risultati ancora migliori. Tuttavia, esiste un pericolo per le tecniche di voto: alcuni algoritmi di apprendimento sono più adatti a determinati tipi di dati rispetto ad altri e il metodo più appropriato può semplicemente uscire dalla votazione! Esamineremo un metodo più sottile per combinare l'output di classificatori diversi, chiamati impilamento, nella sezione successiva. La lezione, come al solito, è conoscere i tuoi dati e guardarla in molti modi diversi.<br /><br /> Un possibile pericolo con gli approcci di filtraggio è che essi potrebbero concepire semplicemente sacrificando istanze di una particolare classe (o gruppo di classi) per migliorare la precisione delle restanti classi. Anche se non esistono modi generali per evitare questo, non è stato trovato come un problema comune nella pratica.<br /> Infine, vale la pena di notare ancora una volta che il filtraggio automatico è un povero sostituto per ottenere i dati giusti in primo luogo. Se questo è troppo tempo e costoso per essere pratico, l'ispezione umana potrebbe essere limitata a quei casi che sono identificati dal filtro come sospetti.<br /> Combining multiple models<br /><br /> Quando le persone sagge fanno decisioni critiche, di solito prendono in considerazione i pareri di diversi esperti piuttosto che affidarsi al proprio giudizio o a quello di un solitario consulente fidato. Ad esempio, prima di scegliere una nuova direzione politica importante, un dittatore benigno consulta molto: lui o lei sarebbe stato mal consigliato di seguire ciecamente un parere di un esperto. In un contesto democratico, la discussione di diversi punti di vista può produrre un consenso; Se no, può essere richiesto un voto. In entrambi i casi, vengono combinati diversi pareri di esperti.<br /><br /> Nell'esportazione dei dati, un modello generato dall'applicazione della macchina può essere considerato come un esperto. Esperto è probabilmente una parola troppo forte! - a seconda della quantità e della qualità dei dati formativi e se l'algoritmo di apprendimento è appropriato al problema in questione, l'esperto può in verità essere purtroppo ignorante - ma noi usiamo comunque il termine. Un approccio evidente per rendere le decisioni più affidabili è combinare l'output di diversi modelli. Diverse tecniche di apprendimento automatico fanno questo imparando un insieme di modelli e utilizzandoli in combinazione: tra questi sono noti protagonisti i sistemi chiamati imbottigliamento, potenziamento e impilamento. Possono tutti, più spesso, aumentare le prestazioni predittive su un singolo modello. E sono tecniche generali che possono essere applicate ai problemi di previsione numerica e alle attività di classificazione.<br /><br /> Bagging, boosting e stacking sono stati sviluppati solo negli ultimi dieci anni, e la loro performance è spesso sorprendentemente buona. I ricercatori di apprendimento delle macchine hanno lottato per capire perché. E durante quella lotta sono emersi nuovi metodi che talvolta sono ancora migliori. Ad esempio, mentre i comitati umani raramente usufruiscono di distrazioni rumorose, scuotendo l'imbottigliamento aggiungendo varianti casuali di classificatori possono migliorare le prestazioni. L'analisi più stretta ha rivelato che l'amplificazione - forse il più potente dei tre metodi - è strettamente connessa alla tecnica statistica stabilita di modelli additivi e questa realizzazione ha portato a procedure migliorate. <br /><br /> Questi modelli combinati condividono lo svantaggio di essere difficili da analizzare: possono comprendere decine o addirittura centinaia di modelli individuali e, anche se funzionano bene, non è facile capire in termini intuitivi quali fattori contribuiscono alle decisioni migliorate. Negli ultimi anni sono stati sviluppati metodi che combinano i vantaggi delle prestazioni dei comitati con modelli comprensibili. Alcuni producono modelli di albero di decisione standard; Altri introducono nuove varianti di alberi che forniscono percorsi opzionali. Chiudiamo introducendo un'ulteriore tecnica di combinazione di modelli utilizzando i codici di output di correzione degli errori. Questo è più specializzato delle altre tre tecniche: si applica solo ai problemi di classificazione, e anche solo a quelli che hanno più di tre classi.<br /> Bagging<br /><br /> Combinando le decisioni di diversi modelli significa amalgamare le varie uscite in una singola previsione. Il modo più semplice per farlo in caso di classificazione è quello di votare (forse un voto ponderato); Nel caso di previsione numerica, è quello di calcolare la media (forse una media ponderata). Baging e boosting entrambi adottano questo approccio, ma derivano i modelli individuali in modi diversi. Nel saccheggio, i modelli ricevono un peso uguale, mentre in aumento, la ponderazione viene utilizzata per dare più influenza a quelli più efficaci, proprio come un dirigente potrebbe inserire valori diversi sulla consulenza di diversi esperti a seconda di quanto siano esperti.<br /><br /> Per introdurre il "baging", supponiamo che diversi set di dati di formazione della stessa dimensione siano scelti a caso dal dominio del problema. Immagina di utilizzare una particolare tecnica di apprendimento macchina per costruire una struttura di decisione per ogni set di dati. Potreste prevedere che questi alberi siano praticamente identici e fare la stessa previsione per ogni nuova istanza di test. Sorprendentemente, questo assunto è di solito piuttosto sbagliato, soprattutto se i set di dati di formazione sono piuttosto piccoli. Questo è un fatto piuttosto inquietante e sembra lanciare un'ombra su tutta l'impresa! Il motivo è che l'induzione di un albero di decisione (almeno il metodo top-down standard descritto nel capitolo 4) è un processo instabile: piccole modifiche ai dati di formazione possono facilmente determinare un diverso attributo scelto in un particolare nodo, Ramificazioni significative per la struttura del sotto-albero sotto quel nodo. Ciò implica automaticamente che ci sono istanze di prova per cui alcuni alberi di deciosione producono previsioni corrette e altri non lo fanno.<br /><br /> Ritornando all'analogia degli esperti precedenti, considerate gli esperti come gli alberi decisionali individuali. Possiamo combinare gli alberi facendo voto su ciascuna istanza di prova. Se una classe riceve più voti di qualsiasi altra cosa, viene considerata come quella corretta. In linea di massima, più è più meraviglioso: le previsioni generate dal voto diventano più affidabili, in quanto si prendono in considerazione più voti. Le decisioni si peggiorano raramente se vengono scoperti nuovi set di formazione, per loro sono stati creati alberi, e le loro previsioni partecipano anche al voto. In particolare, il classificatore combinato raramente sarà meno preciso di un albero decisionale costruito da un solo set di dati. (Tuttavia, non è garantito un miglioramento. Si può dimostrare teoricamente che esistono situazioni patologiche in cui le decisioni combinate sono peggiori.)<br /><br /> L'effetto della combinazione di più ipotesi può essere visto attraverso un dispositivo teorico noto come la decomposizione della bias-variance. Supponiamo che possiamo avere un numero infinito di gruppi di allenamento indipendenti della stessa dimensione e utilizzarli per fare un numero infinito di classificatori. Un'istanza di prova viene elaborata da tutti i classificatori e una sola risposta è determinata a maggioranza. In questa situazione idealizzata, gli errori verranno ancora verificati in quanto nessun schema di apprendimento è perfetto: il tasso di errore dipenderà dal modo in cui il metodo di apprendimento della macchina corrisponde al problema in questione e vi è anche l'effetto di rumore nei dati che non possono essere imparati. Supponiamo che il tasso di errore previsto sia stato valutato mediando l'errore del classificatore combinato su un numero infinito di esempi di test indipendentemente scelti. Il tasso di errore per un determinato algoritmo di apprendimento viene definito bias per il problema dell'apprendimento e misura quanto bene il metodo di apprendimento corrisponda al problema. Questa definizione tecnica è un modo per quantificare la nozione vaguer della bias che è stata introdotta nella Sezione 1.5: misura l'errore "persistente" di un algoritmo di apprendimento che non può essere eliminato anche prendendo in considerazione un infinito numero di corsi di formazione. Naturalmente, non può essere calcolato esattamente in situazioni pratiche; Può essere approssimato.<br /><br /> Una seconda fonte di errore in un modello appreso, in una situazione pratica, deriva dal particolare set di formazione utilizzato, che è inevitabilmente finito e pertanto non è pienamente rappresentativo della popolazione effettiva di casi. Il valore atteso di questa componente dell'errore, su tutti i possibili set di addestramento della dimensione indicata e tutti i possibili set di test, è chiamata la varianza del metodo di apprendimento per quel problema. L'errore totale previsto di un classificatore è costituito dalla somma di polarizzazione e di varianza: questa è la decomposizione della variazione di bias. Combinando più classificatori riduce l'errore atteso riducendo la componente della varianza. Più classificatori inclusi, maggiore sarà la riduzione della varianza. Naturalmente, sorge una difficoltà nel mettere in pratica questo metodo di voto: di solito c'è solo un set di formazione, e ottenere maggiori dati è impossibile o costoso.<br /><br /> Il baging tenta di neutralizzare l'instabilità dei metodi di apprendimento simulando il processo descritto in precedenza utilizzando un set di formazione specificato. Invece di prelevare ogni volta un nuovo dataset di formazione indipendente, i dati di formazione originali vengono modificati eliminando alcune istanze e replicando altri. Le istanze vengono campionate in modo casuale, con sostituzione, dal dataset originale per creare una nuova delle medesime dimensioni. Questa procedura di campionamento replica inevitabilmente alcune delle istanze e elimina altri. Se questa idea colpisce un accordo, è perché abbiamo descritto nel capitolo 5 quando si spiega il metodo di bootstrap per la stima dell'errore di generalizzazione di un metodo di apprendimento (Sezione 5.4): infatti, il termine bagging indica l'aggregazione di bootstrap. Bagging applica lo schema di apprendimento - ad esempio, un induttore di alberi decisionali - ad ognuno di questi set di dati artificialmente derivati e dei classificatori generati da loro votano per la classe da prevedere. L'algoritmo è riassunto in Figura 7.7.<br /><br /> La differenza tra il bagaglio e la procedura idealizzata descritta in precedenza è il modo in cui vengono tracciati i set di dati di formazione. Invece di ottenere i set di dati indipendenti dal dominio, l'imballaggio contiene solo i resoconti dei dati di formazione originali. I set di dati generati dal riesaminamento sono diversi tra loro, ma non sono certamente indipendenti perché tutti sono basati su un set di dati. Tuttavia, si scopre che il «baging» produce un modello combinato che spesso esegue significativamente meglio il modello singolo costruito dai dati di formazione originali e non è mai peggiorato.<br /><br /><br />Figure 7.7 Algorithm for bagging.<br /><br /><br /> Bagging può essere applicato anche ai metodi di apprendimento per la previsione numerica, ad esempio, alberi modello. L'unica differenza è che, invece di votare sul risultato, le previsioni individuali, essendo numeri reali, sono mediati. La decomposizione della varianza di bias può essere applicata alla previsione numerica anche mediante la decomposizione del valore atteso dell'errore medio delle predizioni sui dati freschi. La bias è definita come l'errore medio quadrato previsto per la mediazione su modelli costruiti da tutti i possibili set di dati di formazione della stessa dimensione e la varianza è la componente dell'errore previsto di un singolo modello che è dovuto ai dati di formazione specifici che è stato costruito . Può essere dimostrato teoricamente che la mediazione su più modelli costruiti da gruppi di allenamento indipendenti riduce sempre il valore atteso dell'errore medio-quadrato. (Come abbiamo già detto, il risultato analogo non è vero per la classificazione.)<br /> Bagging with costs<br /><br /> Bagging aiuta maggiormente se il metodo di apprendimento sottostante è instabile in quanto piccoli cambiamenti nei dati di input possono portare a classificatori molto diversi. Infatti può contribuire ad aumentare la diversità nell'insieme dei classificatori rendendo il metodo di apprendimento il più instabile possibile. Ad esempio, quando si assorbono gli alberi decisionali, che sono già instabili, le prestazioni migliori vengono spesso ottenute passando la potatura, che li rende ancora più instabili. Un altro miglioramento può essere ottenuto cambiando il modo in cui le previsioni sono combinate per la classificazione. Come originariamente formulato, il bagaglio usa il voto. Ma quando i modelli possono produrre stime di probabilità e non solo classificazioni semplici, rende intuitivo il senso di mediare queste probabilità invece. Non solo questo migliora spesso la classificazione leggermente, ma il classificatore a sacco crea anche stime di probabilità - spesso più accurate di quelle prodotte dai singoli modelli. Le implementazioni del bagaglio usano comunemente questo metodo di combinazione delle previsioni.<br /><br /> Nella Sezione 5.7 abbiamo mostrato come fare un classificatore a costi sensibili riducendo al minimo il costo previsto delle previsioni. Le stime di probabilità accurate sono necessarie perché vengono utilizzate per ottenere il costo previsto di ogni previsione. Bagging è un candidato primario per la classificazione dei costi, perché produce stime molto accurate di probabilità da alberi decisionali e altri classificatori potenti, ma instabili. Tuttavia, uno svantaggio è che i classificatori a sacco sono difficili da analizzare.<br /><br /> Un metodo chiamato MetaCost combina i vantaggi predittivi del bagaglio con un modello comprensibile per la previsione dei costi. Costruisce un classificatore di ensemble che utilizza il bagaglio e lo usa per rielaborare i dati di addestramento fornendo ad ogni istanza di formazione la previsione che minimizza il costo previsto, sulla base delle stime di probabilità ottenute dal bagaglio. MetaCost scarta quindi le etichette di classe originali e impara un singolo nuovo classificatore - ad esempio un singolo albero di decisione «potato» - dai dati ridefiniti. Questo nuovo modello prende automaticamente in considerazione i costi perché sono stati inseriti nelle etichette di classe! Il risultato è un singolo classificatore sensibile al costo che può essere analizzato per vedere come vengono fatte le previsioni.<br /><br /> Oltre alla tecnica di classificazione "sensibile ai costi" appena menzionata, la sezione 5.7 descrive anche un metodo di apprendimento "sensibile ai costi" che impara un classificatore sensibile ai costi modificando la percentuale di ciascuna classe nei dati di addestramento per riflettere la matrice di costo. MetaCost sembra produrre risultati più accurati di questo metodo, ma richiede più calcolo. Se non c'è bisogno di un modello comprensibile, la fase di postprocesso di MetaCost è superflua: è meglio utilizzare il classificatore a sacco direttamente in combinazione con il metodo minimo di costo previsto.<br /> Randomization<br /><br /> Bagging genera un insieme diversificato di classificatori introducendo la casualità nell'ingresso algoritmo di apprendimento, spesso con ottimi risultati. Ma ci sono altri modi per creare la diversità introducendo la randomizzazione. Alcuni algoritmi di apprendimento hanno già un componente casuale integrato. Ad esempio, quando imparano i perceproni multilayer utilizzando l'algoritmo di backpropagation (come descritto nella sezione 6.3), i pesi di rete sono impostati su valori scelti casualmente. Il classificatore imparato dipende dai numeri casuali perché l'algoritmo può trovare un diverso minimo locale della funzione di errore. Un modo per rendere più stabile il risultato della classificazione è quello di eseguire diverse volte il discente con diversi numeri di numero casuale e combinare le previsioni dei classificatori per votazione o mediazione.<br /><br /> Quasi tutti i metodi di apprendimento sono suscettibili di una sorta di randomizzazione. Consideriamo un algoritmo che scelto con ansia l'opzione migliore ad ogni passo, ad esempio un elemento che decide l'attributo migliore da dividere in ogni nodo. Potrebbe essere randomizzato scegliendo in modo casuale una delle migliori opzioni N invece di un singolo vincitore o scegliendo un sottoinsieme di opzioni casuale e scegliendo il meglio da quello. Naturalmente, c'è un compromesso: più casualità genera più varietà nello studente ma rende meno utilizzati i dati, probabilmente diminuendo l'accuratezza di ogni singolo modello. La migliore dose di casualità può essere prescritta solo mediante esperimento.<br /> Sebbene il bagaglio e la randomizzazione producano risultati simili, a volte si paga per combinarli perché introducono casualità in modi diversi, forse complementari. Un algoritmo popolare per l'apprendimento delle foreste casuali costruisce un albero di decisione randomizzato in ogni iterazione dell'algoritmo di bagaglio e spesso produce ottimi predittori.<br /><br /> La randomizzazione richiede più lavoro di "baging" perché l'algoritmo di apprendimento deve essere modificato, ma può essere applicato con profitto ad una maggiore varietà di discenti. Abbiamo notato in precedenza che l'imbottigliamento non funziona con algoritmi di apprendimento stabili la cui produzione è insensibile a piccoli cambiamenti nell'ingresso. Ad esempio, è inutile mettere in borsa i classificatori vicini più vicini perché la loro produzione cambia molto poco se i dati di allenamento sono perturbati dal campionamento. Ma la randomizzazione può essere applicata anche a studenti stabili: il trucco è quello di randomizzare in un modo che rende i classificatori diversi senza sacrificare troppe prestazioni. Le previsioni di una classificatrice di prossimità più vicina dipendono dalle distanze tra le istanze, che a sua volta dipendono fortemente da quali attributi vengono utilizzati per calcolarli, per cui i classificatori più vicini possono essere randomizzati utilizzando diversi sottoinsiemi di attributi selezionati in modo casuale.<br /> Boosting<br /><br /> Abbiamo spiegato che il bagging sfrutta l'instabilità inerente agli algoritmi di apprendimento. Intuitivamente, unendo più modelli aiuta solo quando questi modelli sono significativamente diversi l'uno dall'altro e quando ciascuno tratta una percentuale ragionevole dei dati correttamente. Idealmente, i modelli si completano, ognuno di essi è uno specialista in una parte del dominio dove gli altri modelli non funzionano molto bene, proprio come i dirigenti umani cercano consulenti le cui competenze e l'esperienza complementano, piuttosto che duplicare, l'un l'altro.<br /><br /> Il metodo di rafforzamento per la combinazione di modelli multipli sfrutta questa intuizione cercando esplicitamente modelli che si completano a vicenda. Innanzitutto, le somiglianze: come l'imbottigliamento, aumentando l'uso dei voti (per la classificazione) o la media (per la previsione numerica) per combinare l'output di singoli modelli. Ancora una volta come l'imballaggio, combina modelli dello stesso tipo - ad esempio, alberi decisionali. Tuttavia, il potenziamento è iterativo. Mentre nella confezione di singoli modelli sono costruiti separatamente, per incrementare ogni nuovo modello è influenzato dalle prestazioni di quelle costruite in precedenza. Boosting incoraggia nuovi modelli a diventare esperti per casi trattati in modo non corretto da quelli precedenti. Una differenza finale è che aumentare i pesi di un modello di contributo per la sua performance piuttosto che dare pari peso a tutti i modelli.<br /><br /> Ci sono molte varianti sull'idea di "boosting". Descriviamo un metodo ampiamente utilizzato chiamato AdaBoost.M1 che è stato progettato specificamente per la classificazione. Come "baging", può essere applicato ad ogni algoritmo di classificazione di apprendimento. Per semplificare le cose, supponiamo che l'algoritmo di apprendimento possa gestire istanze ponderate, dove il peso di un'istanza è un numero positivo. La presenza di pesi di istanza modifica il modo in cui viene calcolato un errore di classificatore: è la somma dei pesi delle istanze erronee suddivise per il peso totale di tutte le istanze, anziché la frazione di istanze Che sono erroneamente classificati. Ponderando le istanze, l'algoritmo di apprendimento può essere costretto a concentrarsi su un particolare insieme di istanze, vale a dire quelle con peso elevato. Tali casi diventano particolarmente importanti perché c'è un maggiore incentivo a classificarli correttamente. L'algoritmo C4.5, descritto nella sezione 6.1, è un esempio di un metodo di apprendimento che può ospitare istanze ponderate senza modifiche perché già usa la nozione di istanze frazionarie per gestire i valori mancanti.<br /><br /><br />model generation<br /><br /> Assign equal weight to each training instance.<br /><br /> For each of t iterations:<br /><br /> Apply learning algorithm to weighted dataset and store<br /><br /> resulting model.<br /><br /> Compute error e of model on weighted dataset and store error.<br /><br /> If e equal to zero, or e greater or equal to 0.5:<br /><br /> Terminate model generation.<br /><br /> For each instance in dataset:<br /><br /> If instance classified correctly by model:<br /><br /> Multiply weight of instance by e / (1 – e).<br /><br /> Normalize weight of all instances.<br /><br />classification<br /><br /> Assign weight of zero to all classes.<br /><br /> For each of the t (or less) models:<br /><br /> Add –log(e / (1 – e)) to weight of class predicted by model.<br /><br /> Return class with highest weight.<br /><br /><br /> Figure 7.8 Algorithm for boosting.<br /><br /><br />L'algoritmo di incremento, riassunto in Figura 7.8, inizia assegnando il peso uguale a tutte le istanze nei dati di allenamento. Quindi chiama l'algoritmo di apprendimento per formare un classificatore per questi dati e ridimensiona ogni istanza secondo l'output del classificatore. Il peso di istanze classificate correttamente è diminuito e quello di quelli erronei è aumentato. Questo produce un insieme di istanze "facili" con peso ridotto e una serie di "hard" con peso elevato. Nella successiva iterazione - e tutte le successive - viene creato un classificatore per i dati ripensati, che si concentra quindi sulla classificazione corretta delle istanze dure. Quindi i pesi dei casi vengono aumentati o diminuiti in base all'uscita di questo nuovo classificatore. Di conseguenza, alcune istanze dure potrebbero diventare ancora più difficili e più semplici potrebbero diventare ancora più semplici; D'altra parte, altre istanze dure potrebbero diventare più facili e quelle più facili potrebbero diventare più difficili - tutte le possibilità possono verificarsi in pratica. Dopo ogni iterazione, i pesi riflettono quanto spesso i casi siano stati erroneamente classificati dai classificatori prodotti finora. Mantenendo una misura di "durezza" con ogni istanza, questa procedura fornisce un modo elegante per generare una serie di esperti che si completano a vicenda.<br /><br /> Quanto i pesi devono essere alterati dopo ogni iterazione? La risposta dipende dall'errore complessivo dell'attuale classificatore. Più specificamente, se e indica l'errore del classificatore sui dati ponderati (una frazione tra 0 e 1), i pesi vengono aggiornati<br /><br /> <br /><br /> weight <- weight * e (1 - e)<br /><br /><br /> Per istanze correttamente classificate ei pesi rimangono invariati per quelli errati. Naturalmente, questo non aumenta il peso di istanze erroneamente classificate come precedentemente affermato. Tuttavia, dopo che tutti i pesi sono stati aggiornati vengono rinormalizzati in modo che la loro somma rimanga la stessa di quanto prima. Il peso di ogni istanza è diviso per la somma dei nuovi pesi e moltiplicato per la somma dei vecchi. Questo aumenta automaticamente il peso di ogni istanza erronea e riduce quella di ogni classificazione correttamente classificata.<br /> Ogni volta che l'errore sui dati di formazione ponderati supera o è uguale a 0,5, la procedura di incremento elimina il classificatore corrente e non esegue ulteriori iterazioni. La stessa cosa accade quando l'errore è 0, perché tutti i pesi di istanza diventano 0.<br /><br /> Abbiamo spiegato come il metodo di incremento genera una serie di classificatori. Per formare una previsione, la loro produzione viene combinata usando un voto ponderato. Per determinare i pesi, si noti che un classificatore che esegue bene i dati di formazione ponderati da cui è stato costruito (e vicino a 0) dovrebbe ricevere un peso elevato e un classificatore che esegue male (e vicino a 0,5) dovrebbe ricevere un livello basso uno. Più specificamente,<br /><br />....<br /><br />che è un numero positivo tra 0 e infinito. Per inciso, questa formula spiega perché i classificatori che eseguono perfettamente i dati di formazione devono essere eliminati, perché quando e è 0 il peso è indefinito. Per fare una previsione, i pesi di tutti i classificatori che votano per una particolare classe sono sommati e viene scelta la classe con il più grande totale.<br /><br /> Abbiamo cominciato assumendo che l'algoritmo di apprendimento possa far fronte a istanze ponderate. Abbiamo spiegato come adattare gli algoritmi di apprendimento per far fronte a istanze ponderate alla fine della sezione 6.5 sotto la regressione lineare ponderata localmente. Invece di cambiare l'algoritmo di apprendimento, è possibile generare un set di dati non ponderato dai dati ponderati mediante il riesaminamento, la stessa tecnica che utilizza bagging. Mentre per 'bagging' ogni istanza viene scelta con probabilità uguali, per 'i casi boosting' vengono scelte con probabilità proporzionale al loro peso. Di conseguenza, i casi con peso elevato vengono replicati frequentemente e quelli con peso ridotto non possono essere mai selezionati. Una volta che il nuovo set di dati diventa grande come quello originale, viene inserito nel metodo di apprendimento anziché nei dati ponderati. E 'così semplice.<br /><br /> Uno svantaggio di questa procedura è che alcuni casi con peso ridotto non lo fanno nel set di dati ricampionato, quindi le informazioni vengono perse prima che il metodo di apprendimento venga applicato. Tuttavia, questo può essere trasformato in un vantaggio. Se il metodo di apprendimento produce un classificatore il cui errore supera 0,5, il potenziamento deve terminare se i dati ponderati vengono utilizzati direttamente, mentre con la ricampiunatura potrebbe essere possibile produrre un classificatore con errore inferiore a 0,5 scartando il set di dati ricampionato e generando un nuovo da un Diversi semi casuali. A volte aumentando le iterazioni può essere eseguita mediante il riesaminamento che quando si utilizza la versione ponderata originale dell'algoritmo.<br /><br /> L'idea di amplificazione(boosting) è nata da un ramo della ricerca di apprendimento in macchina noto come teoria dell'apprendimento computazionale. I teorici sono interessati ad aumentare perché è possibile trarre garanzie di prestazioni. Ad esempio, può essere dimostrato che l'errore del classificatore combinato sui dati di addestramento si avvicina allo zero molto rapidamente in quanto vengono eseguite più iterazioni (esponenzialmente rapidamente nel numero di iterazioni). Purtroppo, come spiegato nella Sezione 5.1, le garanzie per l'errore di formazione non sono molto interessanti perché non necessariamente indicano buone prestazioni sui dati freschi. Tuttavia, si può dimostrare teoricamente che il potenziamento solo fallisce su dati nuovi se i singoli classificatori sono troppo "complessi" per la quantità di dati formativi presenti o se i loro errori di formazione diventano troppo grandi troppo rapidamente (in un preciso senso spiegato da Schapire et al 1997). Come al solito, il problema sta nel trovare il giusto equilibrio tra la complessità dei singoli modelli e la loro adattabilità ai dati.<br /><br /> Se il "boosting" riesce a ridurre l'errore sui dati di prova nuovi, spesso lo fa in modo spettacolare. Un risultato molto sorprendente è che l'esecuzione di iterazioni più potenziate può ridurre l'errore nei nuovi dati a lungo dopo che l'errore del classificatore combinato sui dati di formazione è sceso a zero. I ricercatori sono stati perplessi da questo risultato perché sembra contraddire il rasoio di Occam, che dichiara che di due ipotesi che spiegano la prova empirica ugualmente bene, più semplice è preferibile. Esecuzione di ulteriori iterazioni incrementali senza ridurre l'errore di addestramento non spiega meglio i dati di addestramento e aggiunge certamente complessità al classificatore combinato. Fortunatamente, la contraddizione può essere risolta considerando la fiducia del classificatore nelle sue previsioni. La fiducia è misurata dalla differenza tra la probabilità stimata della classe vera e quella della classe più probabile prevista diversa dalla vera classe - una quantità nota come margine. Maggiore è il margine, più sicuro che il classificatore è nel predire la vera classe. Si scopre che il potenziamento può aumentare il margine molto tempo dopo che l'errore di allenamento è sceso a zero. L'effetto può essere visualizzato plottando la distribuzione cumulativa dei valori di margine di tutte le istanze di addestramento per diversi numeri di incremento delle iterazioni, dando un grafico conosciuto come la curva di margine. Quindi, se la spiegazione delle prove empiriche prende in considerazione il margine, il rasoio di Occam rimane sempre più forte.<br /><br /> La cosa bella di stimolare(boosting) è che un potente classificatore combinato può essere costruito da quelli molto semplici purché raggiungano un errore inferiore al 50% sui dati ripensati. Di solito, questo è facile - certamente per imparare problemi con due classi! I metodi semplici di apprendimento sono chiamati studenti deboli e aumentano i convertiti dei discenti deboli in forti. Ad esempio, i buoni risultati per i problemi a due livelli possono essere ottenuti incoraggiando alberi decisionali estremamente semplici che dispongono di un unico livello chiamato ceppi di decisione. Un'altra possibilità è quella di applicare il potenziamento ad un algoritmo che apprende un'unica regola congiunta (ad esempio un singolo percorso in un albero di decisione) e classifica le istanze in base alla regola o meno. Naturalmente, i set di dati multiclassici rendono più difficile ottenere i tassi di errore inferiori a 0,5. Gli alberi decisionali possono ancora essere potenziati, ma solitamente devono essere più complessi dei ceppi di decisione. Sono stati sviluppati algoritmi sofisticati che permettono ai modelli molto semplici di essere accresciuti con successo nelle situazioni multiclass.<br /><br /> "Boosting" produce spesso classificatori che sono significativamente più accurati su dati freschi di quelli generati dal "bagaglio". Tuttavia, a differenza di "baging", "boosting" a volte fallisce in situazioni pratiche: può generare un classificatore che è significativamente meno accurato di un singolo classificatore costruito dagli stessi dati. Ciò indica che il classificatore combinato sovrappone i dati.<br /> Regressione additiva - Additive regression <br /><br />Quando è stato inizialmente studiato il "potenziamento", ha provocato un forte interesse tra i ricercatori perché potrebbe coinvolgere prestazioni di prima classe da parte degli studenti indifferenti. I statisticamente scoprirono presto che potrebbe essere ricostruito come un algoritmo avido per il montaggio di un modello additivo. I modelli additivi hanno una lunga storia nelle statistiche. In generale, il termine si riferisce a qualsiasi modo di generare le previsioni sommando i contributi ottenuti da altri modelli. La maggior parte degli algoritmi di apprendimento per i modelli additivi non costruisce i modelli di base in modo indipendente ma assicura che si completino l'un l'altro e cerchi di formare un insieme di modelli di base che ottimizzano le prestazioni predittive secondo un determinato criterio.<br /><br /> L'accrescimento implica la modellazione additiva in avanti. Questa classe di algoritmi inizia con un ensemble vuoto e incorpora nuovi membri in sequenza. A ogni fase viene aggiunto il modello che massimizza la prestazione predittiva dell'intero insieme, senza alterare quelli già presenti nell'insieme. L'ottimizzazione della performance del gruppo implica che il prossimo modello dovrebbe concentrarsi su quegli esercizi di formazione su cui l'ensemble si esegue male. Questo è esattamente ciò che aumenta rendendo tali casi pesi più grandi.<br /><br /> Ecco un noto metodo per la modellazione addizionale di stagne per la previsione numerica. Innanzitutto creare un modello di regressione standard, ad esempio un albero di regressione. Gli errori che esibiscono sui dati di addestramento - le differenze tra i valori previsti e quelli osservati - sono chiamati residui. Correggere quindi questi errori imparando un secondo modello - forse un altro albero di regressione - che cerca di prevedere i residui osservati. A tal fine, sostituire i valori originali della classe con i loro residui prima di apprendere il secondo modello. Aggiungendo le previsioni fatte dal secondo modello a quelle del primo, si ottiene automaticamente un errore inferiore sui dati di addestramento. Di solito alcuni residui rimangono, perché il secondo modello non è perfetto, quindi continuiamo con un terzo modello che impara a prevedere i residui dei residui e così via. La procedura è riconducibile all'uso delle regole con eccezioni per la classificazione che abbiamo incontrato nella Sezione 3.5. <br /><br /> Se i singoli modelli minimizzano l'errore quadrato delle previsioni, come fanno i modelli di regressione lineare, questo algoritmo minimizza l'errore quadrato dell'intero insieme. In pratica, inoltre, funziona bene quando lo studente di base utilizza invece una approssimazione euristica, come ad esempio i regressori e gli studenti di modelli descritti nella sezione 6.5. Infatti, non c'è alcun motivo per usare la regressione lineare standard come lo studente di base per la regressione additiva, perché la somma dei modelli di regressione lineare è ancora un modello di regressione lineare e l'algoritmo di regressione riduce minimamente l'errore quadrato. Tuttavia, è una storia diversa se lo studente di base è un modello di regressione basato su un singolo attributo, quello che minimizza l'errore quadrato. Gli statisti chiamano questa semplice regressione lineare, in contrasto con il metodo multiattributo standard, chiamato correttamente regressione lineare multipla. Infatti, utilizzando la regressione additiva in combinazione con una semplice regressione lineare e l'iterazione fino a quando l'errore quadrato dell'assemblea non diminuisce ulteriormente, produce un modello additivo identico alla funzione di regressione lineare multipla di minori quadrati.<br /><br /> La regressione additiva in avanti per la stagionatura è soggetta a sovrapposizione perché ogni modello aggiunto è più adatto ai dati dell'addestramento. Per decidere quando fermarsi, utilizzare la convalida incrociata. Ad esempio, eseguire una convalida incrociata per ogni numero o iterazioni fino a un massimo specificato dall'utente e scegliere quello che minimizza la stima cross-convalidata di errore quadrato. Questo è un buon criterio di arresto perché la convalida incrociata fornisce una stima abbastanza affidabile dell'errore sui dati futuri. Incidentalmente, usando questo metodo in combinazione con una semplice regressione lineare, poiché il principio di base combina la regressione lineare multipla con la selezione degli attributi incorporati, perché il contributo successivo più importante viene incluso solo se diminuisce l'errore convalidato.<br /><br /> Per la comodità di implementazione, la regressione additiva in fase di lancio avviene normalmente con un modello di livello 0 che prevede semplicemente la media della classe sui dati di addestramento in modo che ogni modello successivo si adatta ai residui. Ciò suggerisce un'altra possibilità per prevenire l'overfitting: invece di sottrarre l'intera predizione di un modello per generare valori target per il modello successivo, ridurre le previsioni moltiplicandole da un fattore costante specificato dall'utente tra 0 e 1 prima di sottrarre. Ciò riduce l'adattabilità del modello ai residui e, di conseguenza, riduce la possibilità di overfitting. Naturalmente, può aumentare il numero di iterazioni necessarie per arrivare ad un buon modello di additivi. Riducendo il moltiplicatore smorza efficacemente il processo di apprendimento, aumentando la possibilità di fermarsi al momento giusto, ma anche aumentando il tempo di esecuzione.<br /> Additive logistic regression<br /><br /> La regressione additiva può essere applicata anche alla classificazione come la regressione lineare può. Ma sappiamo dalla sezione 4.6 che la regressione logistica supera la regressione lineare per la classificazione. Si scopre che un adattamento simile può essere fatto a modelli addizionali modificando il metodo di modellazione di stagne per eseguire la regressione logistica addizionale. Utilizzare la transizione logit per tradurre il problema di "probabilità di stima" in un problema di regressione, come abbiamo fatto nella sezione 4.6 e risolvere l'attività di regressione utilizzando un insieme di modelli - ad esempio, alberi di regressione - proprio come per la regressione degli additivi. Ad ogni fase, aggiungere il modello che massimizza la probabilità dei dati forniti dal classificatore dell'assemblea. Supponiamo che fj sia il modello di regressione j nel complesso e fj (a) è la sua predizione ad esempio a. Assumendo un problema a due categorie, utilizzare il modello addizionale Sfj (a) per ottenere una stima di probabilità per la prima classe:<br /><br /> .....<br /><br /> Questo assomiglia molto all'espressione utilizzata nella sezione 4.6 (pagina 121), tranne che qui viene abbreviata usando la notazione vettoriale per l'istanza a e la somma ponderata originale dei valori degli attributi viene sostituita da una somma di modelli arbitrariamente complessi di regressione f.<br /><br /><br /> La Figura 7.9 mostra la versione a due livelli dell'algoritmo LogitBoost, che esegue la regressione logistica addizionale e genera i singoli modelli fj. Qui yi è 1 per un'istanza nella prima classe e 0 per un'istanza nel secondo. In ogni iterazione questo algoritmo si adatta a un modello di regressione fj a una versione ponderata di<br /><br /><br /> Figure 7.9 Algorithm for additive logistic regression.<br /><br /><br /> Il set di dati originale basato su valori di classe dummy zi e pesi wi. Supponiamo che p (1 | a) sia calcolato usando i fj che sono stati costruiti nelle iterazioni precedenti. La derivazione di questo algoritmo è al di là dell'ambito di questo libro, ma può essere dimostrato che l'algoritmo massimizza la probabilità dei dati rispetto all'insieme se ogni modello fj viene determinato riducendo al minimo l'errore quadrato sul problema di regressione corrispondente. Infatti, se si utilizza la regressione lineare multipla per formare il fj, l'algoritmo converge al modello di regressione lineare-logistica di massima probabilità: è un'incarnazione del metodo di minore squares ripetutamente iterativamente menzionato nella sezione 4.6.<br /><br /> Superficialmente, LogitBoost sembra abbastanza diverso da AdaBoost, ma i predittori che producono differiscono soprattutto perché il primo ottimizza la probabilità direttamente, mentre quest'ultima ottimizza una funzione di perdita esponenziale che può essere considerata come una approssimazione. Da una prospettiva pratica, la differenza è che LogitBoost utilizza un metodo di regressione come base di apprendimento mentre AdaBoost funziona con gli algoritmi di classificazione.<br /> Abbiamo mostrato solo la versione a due livelli di LogitBoost, ma l'algoritmo può essere generalizzato a problemi multiclasse. Come per la regressione degli additivi, il rischio di overfitting può essere ridotto riducendo le previsioni del singolo fj con un moltiplicatore predeterminato e utilizzando la convalida incrociata per determinare un numero appropriato di iterazioni.<br /> Option trees<br /><br /> Baging, boosting e randomization tutti producono gruppi di classificatori. Ciò rende molto difficile analizzare quali tipi di informazioni sono state estratte dai dati. Sarebbe bello avere un unico modello con le stesse prestazioni predittive. Una possibilità è quella di generare un set di dati artificiali, campionando casualmente punti dallo spazio di istanza e assegnandoli le etichette di classe previste dal classificatore dell'assemblea e quindi imparare un albero di decisione o una regola impostata da questo nuovo set di dati. Per ottenere prestazioni similari predittive dall'albero dall'alloggiamento può essere richiesto un enorme set di dati, ma nel limite questa strategia dovrebbe essere in grado di replicare le prestazioni del "classificatore d'insieme", e certamente se "l'insieme stesso" consiste Di alberi decisionali. <br /><br /> Un altro approccio è quello di derivare una singola struttura che possa rappresentare un insieme di classificatori in modo compatto. Ciò può essere fatto se l'insieme è costituito da alberi decisionali; Il risultato è chiamato un albero delle opzioni. Gli alberi di opzioni differiscono dagli alberi decisionali in quanto contengono due tipi di nodi: nodi di decisione e nodi di opzione. La Figura 7.10 mostra un semplice esempio per i dati meteo, con un solo nodo di opzione. Per classificare un'istanza, filtrarlo attraverso l'albero. Ad un nodo di decisione prendere solo uno dei rami, come al solito, ma in un nodo di opzione prendere tutti i rami. Ciò significa che l'istanza termina in più di una foglia, e le classificazioni ottenute da queste foglie devono in qualche modo essere combinate in una classificazione globale. Questo può essere fatto semplicemente votando, prendendo la votazione di maggioranza in un nodo di opzione per essere la previsione del nodo. In questo caso non ha senso avere nodi di opzione con solo due opzioni (come nella Figura 7.10) perché ci sarà solo una maggioranza se entrambi i rami sono d'accordo. Un'altra possibilità è quella di mediare le stime di probabilità ottenute dai diversi percorsi, utilizzando una media ponderata o un approccio Bayesiano più sofisticato.<br /><br /><br /> Figure 7.10 Simple option tree for the weather data.<br /><br /><br /> Gli alberi delle opzioni possono essere generati modificando un utente esistente di albero di decisione per creare un nodo di opzione se ci sono diverse divisioni che sembrano utili in base al loro guadagno di informazioni. Tutte le scelte all'interno di una certa tolleranza specificata dall'utente del meglio possono essere fatti in opzioni. Durante la potatura, l'errore di un nodo di opzione è l'errore medio delle sue opzioni.<br /><br /> Un'altra possibilità è quella di far crescere un albero delle opzioni aggiungendo incrementalmente i nodi. Questo è comunemente fatto usando un algoritmo di amplificazione e gli alberi risultanti sono solitamente chiamati alberi di decisione alternati anziché alberi di opzione. In questo contesto i nodi di decisione vengono chiamati nodi di divisione e i nodi di opzione sono chiamati nodi di previsione. I nodi di previsione sono foglie se non sono stati aggiunti nodi di splitter. L'albero di decisione alternato standard si applica a problemi a due livelli e con ogni nodo di previsione viene associato un valore numerico positivo o negativo. Per ottenere una previsione per un'istanza, filtrare tutte le ramificazioni applicabili e riassumere i valori di tutti i nodi di previsione che si incontrano; Predire una classe o l'altra a seconda che la somma sia positiva o negativa.<br /><br /> Un albero di esempio semplice per i dati meteo è mostrato in Figura 7.11, dove un valore positivo corrisponde alla classe play = no e negativo da giocare = si. Per classificare un'istanza con outlook = soleggiato, temperatura = caldo, umidità = normale, e vento = falso, filtrarlo verso le corrispondenti foglie, ottenendo i valori -0.255, 0.213, -0.430 e -0.331. La somma di questi valori è negativa; Quindi prevedere il gioco = yes. Gli alberi di decisione alternati hanno sempre un nodo di previsione alla radice, come in questo esempio.<br /><br /> <br /><br /> Figure 7.11 Alternating decision tree for the weather data.<br /><br /><br /> L'albero alternato viene coltivato ad esempio mediante un algoritmo di amplificazione, un algoritmo di amplificazione che impiega un principiante di base per la previsione numerica, come il metodo LogitBoost descritto in precedenza. Supponiamo che lo studente di base produce una sola regola congiuntiva in ogni amplificazione iterazione. Poi un albero di decisione alternato può essere generato semplicemente aggiungendo ciascuna regola all'albero. I punteggi numerici associati ai nodi di previsione vengono ottenuti dalle regole. Tuttavia, l'albero risultante sarebbe cresciuto molto rapidamente perché le regole di diverse iterazioni di potenziamento sono probabilmente diverse. Quindi, gli algoritmi di apprendimento per gli alberi decisionali alternati considerano solo quelle regole che estendono uno dei percorsi esistenti nell'albero aggiungendo un nodo di splitter e due nodi di previsione corrispondenti (supponendo le divisioni binarie). Nella versione standard dell'algoritmo, ogni posizione possibile nell'albero è considerata per l'aggiunta e un nodo viene aggiunto in base a una misura di prestazione che dipende dal particolare algoritmo di boosting impiegato. Tuttavia, l'euristica può essere utilizzata anziché una ricerca esaustiva per accelerare il processo di apprendimento.<br /> Logistic model trees<br /><br /> Gli alberi di opzioni e gli alberi alternati producono prestazioni di classificazione molto buona basate su una singola struttura, ma possono essere difficili da interpretare quando esistono molti nodi di opzioni perché diventa difficile vedere come viene derivata una particolare previsione. Tuttavia, si scopre che il potenziamento può anche essere utilizzato per costruire alberi decisionali molto efficaci che non includono alcuna opzione a tutti. Ad esempio, l'algoritmo LogitBoost è stato utilizzato per indurre gli alberi con modelli di regressione logistica lineare alle foglie. Questi sono chiamati alberi di modello logistico e vengono interpretati allo stesso modo degli alberi di modello per la regressione descritta nella sezione 6.5<br /><br /> LogitBoost esegue la regressione logistica addizionale. Supponiamo che ogni iterazione dell'algoritmo di boosting sia adatta a una semplice funzione di regressione passando attraverso tutti gli attributi, trovando la semplice funzione di regressione con l'errore più piccolo e aggiungendolo nel modello additivo. Se l'algoritmo LogitBoost viene eseguito fino alla convergenza, il risultato è un modello di regressione multiplo-logistica di massima probabilità. Tuttavia, per ottenere prestazioni ottimali sui dati futuri, di solito non è necessario aspettare la convergenza - e per farlo è spesso dannoso. Un numero appropriato di incrementi di iterazioni può essere determinato stimando le prestazioni previste per un determinato numero di iterazioni utilizzando la convalida incrociata e arrestando il processo quando la prestazione cessa di aumentare.<br /><br /> Una semplice estensione di questo algoritmo porta ad alberi di modelli logistici. Il processo di amplificazione termina quando non esiste un'altra struttura nei dati che possono essere modellati utilizzando una funzione di regressione logistica lineare. Tuttavia, può essere ancora una struttura che i modelli lineari possono adattarsi se l'attenzione è limitata a sottotitoli dei dati ottenuti, ad esempio, da un criterio di albero decisionale standard come il guadagno di informazioni. Quindi, una volta che nessun ulteriore miglioramento può essere ottenuto aggiungendo più semplici modelli lineari, i dati vengono divisi e l'incremento viene ripreso separatamente in ciascun sottoinsieme. Questo processo prende il modello logistico generato finora e lo raffina separatamente per i dati in ogni sottoinsieme. Ancora una volta, la convalida incrociata viene eseguita in ogni sottoinsieme per determinare un numero appropriato di iterazioni da eseguire in quel sottoinsieme.<br /><br /> Il processo viene applicato ricorsivamente fino a diventare troppo piccoli. L'albero risultante sarà sicuramente inutilizzabile i dati formativi e uno dei metodi standard di apprendimento degli alberi decisionali può essere utilizzato per "tagliarlo". Gli esperimenti indicano che l'operazione di potatura è molto importante. Utilizzando una strategia che sceglie la dimensione dell'albero giusto utilizzando la convalida incrociata, l'algoritmo produce alberi piccoli ma molto precisi con modelli logistici lineari alle foglie.<br /> Stacking<br /><br /> Generalizzazione impilata o impilamento per breve, è un modo diverso di combinare più modelli. Sebbene sia sviluppato qualche anno fa, è meno ampiamente usato che l'imbottigliamento e il potenziamento, in parte perché è difficile analizzare teoricamente e in parte perché non esiste un modo migliore per farlo, l'idea di base può essere applicata in molte varianti diverse.<br /><br /> A differenza dell'invasatura e del potenziamento, l'impilamento non viene normalmente utilizzato per combinare modelli dello stesso tipo, ad esempio un insieme di alberi decisionali. Viene invece applicato ai modelli costruiti da diversi algoritmi di apprendimento. Supponi di avere un induttore di albero decisionale, un alunno Naïve Bayes e un metodo di apprendimento basato su istanze e si desidera formare un classificatore per un dato set di dati. La procedura consueta sarebbe quella di stimare l'errore previsto di ciascun algoritmo mediante la convalida incrociata e di scegliere quello migliore per formare un modello per la previsione dei dati futuri. Ma non c'è un modo migliore? Con tre algoritmi di apprendimento disponibili, non possiamo utilizzare tutti e tre per la previsione e combinare le uscite insieme?<br /><br /> Utilizzare tutti e tre per la previsione e combinare le uscite insieme? Un modo per combinare le uscite è quello di voto - lo stesso meccanismo utilizzato per l'imbottigliamento. Tuttavia, la votazione (non ponderata) ha senso solo se i programmi di apprendimento eseguono comparabilmente bene. Se due dei tre classificatori fanno previsioni grossolanamente sbagliate, saremo in difficoltà! Invece, l'impilamento introduce il concetto di un metalloario, che sostituisce la procedura di voto. Il problema con il voto è che non è chiaro quale classifiere di fiducia. L'impilamento cerca di capire quali classificatori sono quelli affidabili, utilizzando un altro algoritmo di apprendimento - il metalearner - per scoprire come combinare meglio l'output dei discenti di base.<br /><br /> L'ingresso al metamodello - chiamato anche il livello-1 - sono le previsioni dei modelli di base o dei modelli di livello 0. Un'istanza di livello 1 ha altretanti attributi in quanto ci sono studenti di livello 0 e i valori degli attributi forniscono le previsioni di questi discenti sull'istanza livello-0 corrispondente. Quando il pilota impilato viene utilizzato per la classificazione, un'istanza viene prima inserita nei modelli di livello 0 e ciascuno indovina un valore di classe. Queste asserzioni vengono alimentate nel modello di livello 1, che li unisce nella predizione finale.<br /><br /> Resta il problema di addestrare il livello-1 allievo. Per fare questo, dobbiamo trovare un modo per trasformare i dati di formazione livello-0 (usati per formare i livelli di 0 livello) nei dati formativi di livello 1 (utilizzati per addestrare il livello 1). Questo sembra semplice: ogni modello di livello 0 classifichi un'istanza di addestramento e attribuisca alle loro previsioni il valore reale della classe dell'istanza per ottenere un'istanza di formazione livello-1. Purtroppo, questo non funziona bene. Permetterebbe che le regole venissero apprese come credono sempre l'uscita del classificatore A e ignorano B e C. Questa regola potrebbe essere appropriata per determinati classificatori di base A, B e C; Se è così, sarà probabilmente appreso. Ma solo perché sembra opportuno sui dati di formazione non significa necessariamente che funziona bene sui dati di prova perché inevitabilmente imparerà a preferire i classificatori che sovrascrivono i dati di formazione su quelli che prendono decisioni più realistiche.<br /><br /> <br /><br />Di conseguenza, l'impilamento non modifica semplicemente i dati di formazione livello-0 in dati di livello 1 in questo modo. Ricordiamo dal capitolo 5 che ci sono metodi migliori per valutare la prestazione di un classificatore che utilizzare l'errore sul set di formazione. Uno è quello di tenere alcuni istanze e li usa per una valutazione indipendente. Applicando questo allo stacking, riserviamo alcune istanze per formare i dati di addestramento per il livello 1 e generare classificatori di livello 0 dai dati rimanenti. Una volta che i classificatori di livello 0 sono stati costruiti, vengono utilizzati per classificare le istanze nel set di holdout, formando i dati di formazione livello-1 come descritto in precedenza. Poiché i classificatori di livello 0 non sono stati addestrati in questi casi, le loro previsioni sono imparziali; Pertanto i dati di formazione del livello 1 riflettono accuratamente la reale performance degli algoritmi di apprendimento livello-0. Una volta che i dati di livello 1 sono stati generati da questa procedura di tenuta, i discenti di livello 0 possono essere reapplicati per generare classificatori dal set completo di formazione, facendo un uso leggermente migliore dei dati e portando a migliori previsioni.<br /> Il metodo di holdout inevitabilmente priva il modello livello-1 di alcuni dei dati formativi. Nel capitolo 5, la convalida incrociata è stata introdotta come mezzo per eludere questo problema per la stima degli errori. Questo può essere applicato in combinazione con l'impilamento eseguendo una convalida incrociata per ogni livello-0 studente. Ogni istanza dei dati di addestramento avviene esattamente in una delle pieghe di prova della convalida incrociata e le previsioni degli induttori di livello 0 costruite dalla corrispondente piega di formazione vengono utilizzati per costruire un'istanza di formazione livello-1 da essa. Questo genera un'istanza di formazione livello-1 per ogni istanza di livello-0. Naturalmente, è lento perché un classificatore di livello 0 deve essere addestrato per ogni piega della convalida incrociata, ma consente al classificatore livello-1 di utilizzare pienamente i dati di formazione.<br /><br /> Dato un'istanza di prova, la maggior parte dei metodi di apprendimento è in grado di produrre probabilità per ogni etichetta di classe anziché fare una singola predizione categorica. Questo può essere sfruttato per migliorare le prestazioni dello stacking utilizzando le probabilità di formare i dati del livello-1. L'unica differenza alla procedura standard è che ogni attributo nominale livello-1, che rappresenta la classe prevista da un livello-0, viene sostituito da diversi attributi numerici, ognuno dei quali rappresenta una probabilità di classe prodotta dal livello-0 apprendente. In altre parole, il numero di attributi nei dati di livello 1 viene moltiplicato per il numero di classi. Questa procedura ha il vantaggio che il livello-1 apprendente è riservato alla fiducia che ogni livello-0 studente associati alle sue previsioni, ampliando così la comunicazione tra i due livelli di apprendimento.<br /><br /> Rimane una domanda in sospeso: quali algoritmi sono adatti al livello 1? In linea di principio, è possibile applicare qualsiasi schema di apprendimento. Tuttavia, poiché la maggior parte dei lavori è già fatta dai discenti di livello 0, il classificatore di livello 1 è fondamentalmente solo un arbitro e ha senso scegliere un algoritmo piuttosto semplice per questo scopo. Secondo le parole di David Wolpert, inventore di impilamento, è ragionevole che i "generalizzatori di livello 1" relativamente globali e lisci dovrebbero funzionare bene. Semplice modelli lineari o alberi con modelli lineari alle foglie di solito funzionano bene.<br /> L'impilatura può essere applicata anche alla previsione numerica. In questo caso, i modelli livello-0 e il modello livello-1 prevedono valori numerici. Il meccanismo di base rimane lo stesso; L'unica differenza sta nella natura dei dati del livello-1. Nel caso numerico, ogni attributo level-1 rappresenta la previsione numerica effettuata da uno dei modelli di livello 0 e invece di un valore di classe il valore di destinazione numerico è associato alle istanze di formazione livello-1.<br /> Error-correcting output codes<br /><br /> I codici di output di correzione degli errori sono una tecnica per migliorare le prestazioni degli algoritmi di classificazione nei problemi di apprendimento multiclass. Ricordiamo dal capitolo 6 che alcuni algoritmi di apprendimento - ad esempio, vettori standard di supporto vettoriale - funzionano solo con problemi a due livelli. Per applicare tali algoritmi a set di dati multiclass, il set di dati viene scomposto in più problemi indipendenti a due classi, l'algoritmo viene eseguito su ciascuno e le uscite dei classificatori risultanti vengono combinate. I codici di output di correzione degli errori sono un metodo per sfruttare al meglio questa trasformazione. Infatti, il metodo funziona così bene che spesso è vantaggioso applicarlo anche quando l'algoritmo di apprendimento può gestire direttamente i set di dati multiclass.<br /><br /> Nella Sezione 4.6 (pagina 123) abbiamo imparato a trasformare un set di dati multiclass in più di due classi. Per ogni classe viene generato un set di dati contenente una copia di ogni istanza nei dati originali, ma con un valore di classe modificato. Se l'istanza ha la classe associata al set di dati corrispondente, viene contrassegnato sì; Altrimenti no. Quindi i classificatori sono costruiti per ognuno di questi set di dati binari, i classificatori che emettono una figura di fiducia con le loro previsioni, ad esempio, la probabilità stimata che la classe è sì. Durante la classificazione viene inserita un'istanza di prova in ogni classificatore binario e la classe finale è quella associata al classificatore che prevede sì in modo più sicuro. Naturalmente, questo metodo è sensibile all'accuratezza delle figure di fiducia prodotte dai classificatori: se alcuni classificatori hanno un parere esagerato delle proprie previsioni, il risultato complessivo "soffrirà".<br /><br /> Si consideri un problema multiclass con le quattro classi a, b, c e d. La trasformazione può essere visualizzata come mostrato nella Tabella 7.1 (a), dove sì e no vengono mappati rispettivamente a 1 e 0. Ciascuno dei valori di classe originali viene convertito in una parola di codice a 4 bit, 1 bit per classe, ei quattro classificatori prevedono i bit in modo indipendente. Interpretando il processo di classificazione in termini di queste parole di codice, gli errori si verificano quando il bit binario errato riceve la confidenza più alta.<br /><br /> Tuttavia, non dobbiamo utilizzare le parole del codice specifiche mostrate. Infatti, non vi è alcuna ragione per cui ogni classe deve essere rappresentata da 4 bit. Guardate invece il codice della tabella 7.1 (b), dove le classi sono rappresentate da 7 bit. Quando viene applicato ad un set di dati, è necessario costruire sette classificatori invece di quattro. Per vedere cosa potrebbe acquistare, considera la classificazione di un'istanza particolare. Supponiamo che appartiene alla classe a, e che le previsioni dei singoli classificatori sono 1 0 1 1 1 1 (rispettivamente). Ovviamente, confrontando questa parola di codice con quelle della Tabella 7.1 (b), il secondo classificatore ha commesso un errore: prevedeva 0 anziché 1, anziché sì. Tuttavia, confrontando i bit previsti con la parola di codice associata a ciascuna classe, l'istanza è chiaramente più vicino a quella di qualsiasi altra classe. Ciò può essere quantificato dal numero di bit da modificare per convertire la parola di codice prevista in quelle di Tabella 7.1 (b): la distanza Hamming o la discrepanza tra le stringhe dei bit è 1, 3, 3 e 5 Rispettivamente le classi a, b, c e d. Possiamo tranquillamente concludere che il secondo classificatore ha commesso un errore e ha identificato correttamente come una vera classe di istanza.<br /><br /> Lo stesso tipo di correzione degli errori non è possibile con le parole di codice della Tabella 7.1 (a), perché ogni stringa predittiva di 4 bit diversi da queste quattro parole a 4 bit ha la stessa distanza di almeno due di esse. I codici di output non sono "correzione degli errori".Che cosa determina se un codice è corretto o meno? Si consideri la distanza Hamming tra le parole di codice che rappresentano classi diverse. Il numero di errori che possono essere corretti dipende dalla distanza minima tra qualsiasi coppia di parole di codice, ad esempio d. Il codice è in grado di correggere fino a (d - 1) / 2 errori a 1 bit, perché se questo numero di bit della parola di codice corretta è flipped, sarà ancora il più vicino e sarà quindi identificato correttamente. Nella tabella 7.1 (a) la distanza Hamming per ogni coppia di parole di codice è 2. Quindi la distanza minima d è anche 2 e possiamo correggere non più di 0 errori! Tuttavia, nel codice della tabella 7.1 (b) la distanza minima è 4 (infatti, la distanza è 4 per tutte le coppie). Ciò significa che è garantito per correggere errori a 1 bit.<br /><br /> Abbiamo identificato una proprietà di un buon codice di correzione degli errori: le parole di codice devono essere ben separate in termini di distanza Hamming. Poiché comprendono le righe della tabella di codice, questa proprietà viene chiamata separazione di righe. Esiste un secondo requisito che occorre soddisfare un buon codice di correzione degli errori: la separazione delle colonne. La distanza Hamming tra ogni coppia di colonne deve essere grande, come deve essere la distanza tra ogni colonna e il complemento di ogni altra colonna. Nella tabella 7.1 (b), le sette colonne sono separate da un altro (e dai loro complementi) da almeno un bit.<br /> La separazione delle colonne è necessaria perché se due colonne sono identiche (o se è un complemento di un altro), i corrispondenti classificatori faranno gli stessi errori. La correzione dell'errore è indebolita se gli errori sono correlati in altre parole, se molte posizioni di bit sono simultaneamente non corrette. Maggiore è la distanza tra le colonne, più errori sono probabili essere corretti.<br /><br /> Con meno di quattro classi è impossibile costruire un codice di correzione degli errori efficace, poiché non è possibile ottenere una buona separazione delle righe e una buona separazione di colonne contemporaneamente. Ad esempio, con tre classi ci sono solo otto colonne possibili (23), quattro dei quali sono complementi degli altri quattro. Inoltre, le colonne con tutti gli zeri o tutti non forniscono alcuna discriminazione. Ciò lascia solo tre colonne possibili, e il codice risultante non è affatto un errore di correzione. (Infatti, è la codifica standard "una per classe").<br /><br /> Se ci sono poche classi, è possibile costruire un codice esauriente di correzione degli errori, come quello della tabella 7.1 (b). In un codice esaustivo per le classi k, le colonne comprendono tutte le possibili stringhe di k-bit, ad eccezione dei complementi e delle banali tutte le stringhe zero o tutte. Ogni parola di codice contiene 2k-1 - 1 bit. Il codice è costruito come segue: la parola di codice per la prima classe è costituita da tutti; Che per la seconda classe ha zeri 2k-2 seguiti da 2k-2-1; Il terzo ha 2k-3 zeri seguiti da 2k-3 quelli seguiti da zero di 2k-3 seguiti da 2k-3 - 1; e così via. La parola di codice ith è costituita da una sequenza alternata di zero e di quelli 2k-i, l'ultima corsa è una breve.<br /> Con più classi, i codici esaustivi sono impossibili perché il numero di colonne aumenta in modo esponenziale e troppi classificatori devono essere costruiti. In questo caso vengono utilizzati metodi più sofisticati che possono costruire un codice con buone proprietà di correzione degli errori da un numero minore di colonne.<br /><br /> I codici di output di correzione degli errori non funzionano per gli algoritmi di apprendimento locale come i partecipanti basati sull'istanza, che prevedono la classe di un'istanza guardando istanze di formazione vicine. Nel caso di un classificatore di prossimità più vicino, tutti i bit di output sarebbero stati predetti utilizzando la stessa istanza di formazione. Il problema può essere eluso utilizzando diversi sottotitoli di attributo per predire ogni bit di output, decorrelating le previsioni.<br /> Utilizzo di dati non contrassegnati - Using unlabeled data<br /><br /> Quando abbiamo introdotto il processo di apprendimento macchina nel Capitolo 2 abbiamo tracciato una netta distinzione tra l'apprendimento-classificazione e il clustering supervisionati e non supervisionati. Recentemente i ricercatori hanno iniziato ad esplorare il territorio tra i due, talvolta chiamati apprendimento semiservizzato, in cui l'obiettivo è la classificazione, ma l'input contiene sia i dati non etichettati che quelli contrassegnati. Non puoi classificare senza dati etichettati, naturalmente, perché solo le etichette indicano le classi. Ma a volte è attraente aumentare una piccola quantità di dati etichettati con una grande quantità di dati non contrassegnati. Risulta che i dati non contrassegnati possono aiutare a imparare le classi. Come può essere questo?<br /><br /> Innanzitutto, perché lo desideri? Molte situazioni presentano enormi volumi di dati grezzi, ma assegnare classi è costoso perché richiede una visione umana. L'estrazione del testo fornisce alcuni esempi classici. Supponiamo di classificare le pagine Web in gruppi predefiniti. In un ambito accademico potresti essere interessato alle pagine del docente, alle pagine di studenti laureati, alle pagine di informazione sui corsi, alle pagine del gruppo di ricerca e alle pagine dei reparti. È possibile scaricare facilmente migliaia o milioni di pagine rilevanti da siti web universitari. Ma l'etichettatura dei dati formativi è un laborioso processo manuale. Oppure supponiamo che il tuo lavoro è quello di utilizzare l'apprendimento macchina per individuare i nomi nel testo, distinguendo tra nomi personali, nomi aziendali e nomi di località. È possibile scaricare facilmente megabyte o gigabyte di testo, ma fare questo in dati di formazione selezionando i nomi e classificandoli può essere eseguito solo manualmente. Catalogando articoli di notizie, ordinando la posta elettronica, imparando gli interessi di lettura degli utenti, le applicazioni 'sono legioni'. Lasciando il testo a parte, supponi che vuoi imparare a riconoscere alcune persone famose nelle notizie televisive. È possibile registrare facilmente centinaia o migliaia di ore di notizie, ma l'etichettatura è ancora manuale. In uno qualsiasi di questi scenari sarebbe estremamente interessante poter sfruttare un'ampia gamma di dati non contrassegnati per ottenere prestazioni eccellenti da pochi esempi etichettati, in particolare se sei stato lo studente che ha dovuto fare l'etichettatura!<br /> Clustering for classification<br /><br /> Come utilizzare i dati non etichettati per migliorare la classificazione? Ecco una semplice idea. Usa Bayes Naïve per apprendere le classi da un piccolo set di dati etichettato e quindi estenderlo ad un grande set di dati non etichettato utilizzando l'algoritmo di clustering iterativo EM (aspettativa-massimizzazione) di Sezione 6.6. La procedura è questa. Innanzitutto, formi un classificatore utilizzando i dati etichettati. In secondo luogo, applicarlo ai dati non etichettati per etichettarlo con probabilità di classe (il passo "aspettativa"). In terzo luogo, treni un nuovo classificatore che utilizza le etichette per tutti i dati (la "massimizzazione"). Quarto, iterare fino alla convergenza. Potresti pensare a questo come clustering iterativo, in cui i punti di partenza e le etichette cluster vengono raccolte dai dati etichettati. La procedura EM garantisce di trovare parametri di modello che hanno ogni probabilità uguale o maggiore in ogni iterazione. La questione chiave, che può essere risolta solo empiricamente, è se queste stime di parametri di maggiore probabilità migliorino la precisione della classificazione.<br /><br /> Intuitivamente, questo potrebbe funzionare bene. Considera la classificazione dei documenti. Alcune frasi sono indicative delle classi. Alcuni si verificano in documenti etichettati, mentre altri si verificano solo in quelli non etichettati. Ma ci sono probabilmente alcuni documenti che contengono entrambi, e la procedura EM li usa per generalizzare il modello appreso per utilizzare frasi che non appaiono nel dataset di etichetta. Ad esempio, sia il supervisore che l'argomento di dottorato possono indicare la home page dello studente universitario. Supponiamo che solo la prima frase si verifichi nei documenti etichettati. EM iterativamente generalizza il modello per classificare correttamente i documenti che contengono solo questi ultimi.<br /><br /> Questo potrebbe funzionare con qualsiasi classificatore e qualsiasi algoritmo di clustering iterativo. Ma è fondamentalmente una procedura di bootstrap, e si deve fare attenzione a garantire che il ciclo di feedback è positivo. Utilizzando probabilità piuttosto che decisioni difficili sembra utile perché consente alla procedura di convergere lentamente invece di saltare a conclusioni che possono essere sbagliate. Naïve Bayes e la procedura probabilistica di EM descritta in Sezione 6.6 sono particolarmente opportune scelte perché condividono la stessa ipotesi fondamentale: l'indipendenza tra gli attributi o, più precisamente, l'indipendenza condizionale tra gli attributi attribuiti alla classe.<br /><br /> Naturalmente, l'assunzione dell'indipendenza è universalmente violata. Anche il nostro piccolo esempio usava l'argomento PhD a due parole, mentre le implementazioni effettive avrebbero probabilmente usato singole parole come attributi e l'esempio sarebbe stato molto meno convincente se avessimo sostituito uno dei singoli termini del Dottorato o argomento. La frase di dottorandi è probabilmente più indicativa di facoltà rispetto alle domande di studenti universitari; L'argomento della ricerca di frasi è probabilmente meno discriminante. È proprio il fatto che il dottorato di ricerca e l'argomento non sono condizionatamente indipendenti a causa della classe che fa funzionare l'esempio: è la loro combinazione che caratterizza le pagine dei laureati.Tuttavia, il collegamento di Naïve Bayes e EM in questo modo funziona bene nel campo della classificazione dei documenti. In un particolare compito di classificazione ha raggiunto le prestazioni di un apprendente tradizionale utilizzando meno di un terzo delle istanze di formazione etichettate, nonché cinque volte più etichettati. Questo è un buon compromesso quando le istanze etichettate sono costose ma quelle non marcate sono praticamente gratuite. Con un numero ridotto di documenti etichettati, la precisione della classificazione può essere migliorata in modo drammatico incorporando molti non etichettati.<br /><br /> Sono state dimostrate due raffinatezze alla procedura per migliorare le prestazioni. Il primo è motivato da prove sperimentali che, quando ci sono molti documenti etichettati, l'incorporazione di dati non contrassegnati può ridurre piuttosto che aumentare l'accuratezza. I dati contrassegnati dalla mano sono (o dovrebbero essere) intrinsecamente meno rumorosi di quelli automaticamente etichettati. La soluzione è introdurre un parametro di ponderazione che riduce il contributo dei dati non contrassegnati. Questo può essere incorporato nella fase di massimizzazione di EM massimizzando la probabilità ponderata delle istanze etichettate e non etichettate. Quando il parametro è vicino a zero, i documenti non etichettati hanno poca influenza sulla forma della superficie di salita in collina di EM; Quando vicino ad uno, l'algoritmo ritorna alla versione originale in cui la superficie è ugualmente interessata da entrambi i tipi di documento.<br /><br /> La seconda raffinatezza consiste nel permettere ad ogni classe di avere diversi cluster. Come spiegato nella sezione 6.6, l'algoritmo di clustering EM presuppone che i dati siano generati in modo casuale da una miscela di diverse distribuzioni di probabilità, una per cluster. Fino ad ora è stata presa in considerazione una corrispondenza tra i componenti e le classi della miscela. In molte circostanze questo è irrealistico, inclusa la classificazione dei documenti, perché la maggior parte dei documenti affronta più argomenti. Con diversi cluster per classe, ciascun documento etichettato viene assegnato in modo casuale a ciascuno dei suoi componenti in modo probabilistico. La fase di massimizzazione dell'algoritmo EM rimane come prima, ma il passaggio di aspettativa viene modificato per non solo etichettare probabilmente ogni esempio con le classi, ma assegnarlo probabilmente ai componenti all'interno della classe. Il numero di cluster per classe è un parametro che dipende dal dominio e può essere impostato tramite la convalida incrociata.<br /> Co-training<br /><br /> Un'altra situazione in cui i dati non contrassegnati possono migliorare le prestazioni della classificazione è quando ci sono due prospettive diverse e indipendenti sull'attività di classificazione. L'esempio classico riporta ancora documenti, questa volta i documenti Web, in cui le due prospettive sono il contenuto di una pagina Web ei collegamenti ad essa da altre pagine. Queste due prospettive sono ben note per essere utili e diverse: i motori di ricerca Web di successo capitalizzano su entrambi, utilizzando ricette segrete. Il testo che etichette un collegamento ad un'altra pagina Web dà un'idea rivelatrice su come si tratta di questa pagina, forse anche più rivelatrice del contenuto personale della pagina, in particolare se il collegamento è indipendente. Intuitamente, un collegamento denominato il mio consulente è una prova forte che la pagina di destinazione è una home page di un membro del docente.<br /><br /> L'idea, chiamata co-formazione, è questo. Dati alcuni esempi etichettati, innanzitutto imparare un modello diverso per ogni prospettiva - in questo caso un modello basato su contenuti e basato su un collegamento ipertestuale. Quindi utilizzare ciascuno di essi separatamente per etichettare gli esempi non etichettati. Per ogni modello, seleziona l'esempio più etichette con fiducia come positivo e quello con cui confida con certezza l'etichetta come negativa, e aggiungi questi al pool di esempi etichettati. Meglio ancora, mantenere il rapporto degli esempi positivi e negativi nella piscina etichettata scegliendo di più di un tipo rispetto all'altro. In entrambi i casi, ripetere l'intera procedura, addestrando entrambi i modelli sulla serie aumentata di esempi etichettati, finché la piscina non etichettata viene esaurita.<br /><br /> Ci sono alcune prove sperimentali, usando Naïve Bayes in tutto come il discente, che questa procedura di bootstrapping supera quella che utilizza tutte le funzionalità di entrambe le prospettive per imparare un singolo modello dai dati etichettati. Essa si basa su due viste diverse di un'istanza che sono ridondanti ma non completamente correlate. Sono stati proposti vari domini, da celebrità di notizie in televisione newscast utilizzando video e audio separatamente a robot mobili con visione, sonar e sensori di gamma. L'indipendenza dei punti di vista riduce la probabilità che entrambe le ipotesi concordino su un'etichetta errata.<br /> EM and co-training<br /><br /> Sui set di dati con due set di funzionalità veramente indipendenti, gli esperimenti hanno dimostrato che la co-formazione offre risultati migliori rispetto all'utilizzo di EM come descritto in precedenza. Ancora migliori prestazioni possono essere raggiunte combinando i due in una versione modificata di co-training chiamata co-EM. Il co-formazione tira due classificatori che rappresentano diverse prospettive A e B e usa entrambi per aggiungere nuovi esempi al pool di formazione scegliendo tutti gli esempi non etichettati che classificano in modo più positivo o negativo. I nuovi esempi sono pochi in numero e determinati etichettati. Co-EM, d'altra parte, traina prospettiva A sui dati etichettati e lo usa per etichettare probabilmente tutti i dati non etichettati. Successivamente esso addestra il classificatore B sia sui dati etichettati che sui dati non contrassegnati con le etichette tentativi del classificatore A e quindi ripamera probabilmente tutti i dati da utilizzare dal classificatore A. Il processo si estrae finché i convertitori di classificazione non convergono. Questa procedura sembrerebbe eseguire costantemente meglio della co-formazione perché non si impegna alle etichette di classe generate dai classificatori A e B ma piuttosto reimpira le loro probabilità ad ogni iterazione.<br /><br /> La gamma di applicabilità del co-EM, come la co-formazione, è ancora limitata dal requisito di molteplici prospettive indipendenti. Ma ci sono alcune prove sperimentali che suggeriscono che anche quando non esiste una naturale separazione delle caratteristiche in prospettive indipendenti, i vantaggi possono essere ottenuti realizzando una tale suddivisione e utilizzando co-formazione - o, meglio ancora, co-EM - sui dati split . Questo sembra funzionare anche quando la divisione è fatta casuale; Le prestazioni potrebbero essere sicuramente migliorate progettando la suddivisione in modo che i set di funzionalità siano al massimo indipendenti. Perché questo lavoro? I ricercatori hanno ipotizzato che questi algoritmi riescano in parte perché la divisione li rende più robusti per le ipotesi che i loro classificatori sottostanti fanno.<br /><br /> Non vi è alcuna ragione particolare per limitare il classificatore di base a Naïve Bayes. Le macchine vettoriali di supporto rappresentano probabilmente la tecnologia di maggior successo per la categorizzazione dei testi oggi. Tuttavia, per l'iterazione EM è necessario che il classificatore etichettare i dati probabilisticamente; Deve anche essere in grado di utilizzare esempi probabilmente ponderati per la formazione. Le macchine vettoriali di supporto possono essere facilmente adattate per fare entrambi. Abbiamo spiegato come adattare gli algoritmi di apprendimento per affrontare le istanze ponderate nella sezione 6.5 sotto la regressione lineare ponderata localmente (pagina 252). Un modo per ottenere le stime di probabilità dalle macchine vettoriali di supporto è quello di adattare un modello logistico unidimensionale all'uscita, effettivamente eseguendo la regressione logistica come descritto nella sezione 4.6 sull'output. Eccellenti risultati sono stati segnalati per la classificazione di testo usando co-EM con il classificatore di macchine vettoriali di supporto (SVM). Essa supera le altre varianti di SVM e sembra abbastanza robusta per diverse proporzioni di dati etichettati e non etichettati.<br /> Le idee di co-formazione e EM - e in particolare la loro combinazione nell'algoritmo co-EM - sono interessanti, provocatorie e hanno un potenziale impressionante. Ma ciò che li fa funzionare è ancora controverso e poco compreso. Queste tecniche sono oggetto di ricerca attuale: non sono ancora entrate nel mainstream di apprendimento automatico e sono state sfruttate per la pratica data mining.<br /> Letture<br /><br /> La selezione degli attributi, sotto la selezione funzionalità di termini, è stata studiata nel campo del riconoscimento dei modelli per decenni. L'eliminazione all'indietro, ad esempio, è stata introdotta nei primi anni '60 (Marill e Green 1963). Kittler (1978) analizza gli algoritmi di selezione delle funzioni che sono stati sviluppati per il riconoscimento del pattern. Miglior prima ricerca e algoritmi genetici sono tecniche standard di intelligenza artificiale (Winston 1992, Goldberg 1989).<br /><br /> Gli esperimenti che mostrano le prestazioni degli studenti degli alberi decisionali che si deteriorano quando vengono aggiunti nuovi attributi sono riportati da John (1997), che fornisce una bella spiegazione della selezione degli attributi. L'idea di trovare il più piccolo set di attributi che intaglia i casi in modo univoco è da Almuallin e Dietterich (1991, 1992) ed è stato ulteriormente sviluppato da Liu e Setiono (1996). Kibler e Aha (1987) e Cardie (1993) studiarono entrambi l'utilizzo di algoritmi ad alberi decisionali per identificare le caratteristiche per l'apprendimento più vicino; Holmes e NevillManning (1995) hanno usato 1R per ordinare le funzioni per la selezione. Kira e Rendell (1992) hanno utilizzato metodi basati su istanze per selezionare le funzionalità, portando ad uno schema denominato RELIEF per l'eliminazione ricorsiva delle funzioni. Gilad-Bachrach et al. (2004) mostrano come questo schema può essere modificato per funzionare meglio con gli attributi ridondanti. Il metodo di selezione delle funzionalità basato sulla correlazione è stato sviluppato da Hall (2000).<br /> L'uso di metodi di wrapper per la selezione delle funzioni è dovuto a John et al. (1994) e Kohavi e John (1997), e algoritmi genetici sono stati applicati all'interno di un framework wrapper da Vafaie e DeJong (1992) e Cherkauer e Shavlik (1996). Il metodo selettivo di apprendimento Naïve Bayes è dovuto a Langley e Sage (1994). Guyon et al. (2002) presentano e valutano lo schema di eliminazione delle funzioni ricorsive in combinazione con le macchine vettoriali di supporto. Il metodo della ricerca corsa è stato sviluppato da Moore e Lee (1994).<br /><br /> Dougherty et al. (1995) forniscono un breve resoconto della discretizzazione supervisionata e non supervisionata, insieme a risultati sperimentali che confrontano il metodo basato su entropia con il binning di uguale larghezza e il metodo 1R. Frank e Witten (1999) descrivono l'effetto di utilizzare le informazioni di ordinazione in attributi discretizzati. La discretizzazione proporzionale del k-interval per Naïve Bayes è stata proposta da Yang e Webb (2001). Il metodo basato sulla entropia per la discretizzazione, compreso l'utilizzo del criterio di arresto MDL, è stato sviluppato da Fayyad e Irani (1993). Il metodo statistico bottom-up che utilizza il test c2 è dovuto a Kerber (1992) e la sua estensione a un livello di significatività determinata automaticamente è descritta da Liu e Setiono (1997). Fulton et al. (1995) approfondiscono l'uso della programmazione dinamica per la discretizzazione e derivano il tempo quadratico legato ad una funzione di impurità generale (ad esempio, entropia) e quella lineare per la discretizzazione basata sugli errori. L'esempio utilizzato per mostrare la debolezza della discretizzazione basata sugli errori è adattato da Kohavi e Sahami (1996), che sono stati i primi a identificare chiaramente questo fenomeno.<br /> L'analisi dei componenti principali è una tecnica standard che si può trovare nella maggior parte dei libri di testo delle statistiche. Fradkin e Madigan (2003) analizzano le prestazioni di proiezioni casuali. La metrica TF ¥ IDF è descritta da Witten et al. (1999b).<br />Gli esperimenti sull'uso del C4.5 per filtrare i propri dati formativi sono stati riportati da John (1995). L'approccio più conservatore di un filtro di consenso che coinvolge diversi algoritmi di apprendimento è stato studiato da Brodley e Friedl (1996). Rousseeuw e Leroy (1987) descrivono la rilevazione di outlier nella regressione statistica, compreso il metodo meno mediano di quadrati; Presentano anche i dati telefonici di Figura 7.6. È stato Quinlan (1986) che ha notato che la rimozione del rumore dagli attributi dell'istanza formativa può ridurre la prestazione di un classificatore su istanze di test simili, in particolare a livelli di rumore più alti.<br /><br /> La combinazione di più modelli è un argomento di ricerca popolare nella ricerca di apprendimento macchina, con molte pubblicazioni correlate. Il termine bagging (per "bootstrap aggregating") è stato coniato da Breiman (1996b), che ha esaminato le proprietà di bagaglio teoricamente ed empiricamente per la classificazione e la previsione numerica. Domingos (1999) ha introdotto l'algoritmo MetaCost. La randomizzazione è stata valutata da Dietterich (2000) e confrontata con il saccheggio e il potenziamento. Bay (1999) suggerisce di utilizzare la randomizzazione per l'apprendimento degli ensemble con i classificatori più vicini. Foreste casuali sono state introdotte da Breiman (2001).<br /> Freund e Schapire (1996) hanno sviluppato l'algoritmo di amplificazione AdaBoost.M1 e hanno derivato i limiti teorici per la sua performance. Più tardi, hanno migliorato questi limiti utilizzando il concetto di margini (Freund e Schapire 1999). Drucker (1997) ha adattato AdaBoost.M1 per la previsione numerica. L'algoritmo LogitBoost è stato sviluppato da Friedman et al. (2000). Friedman (2001) descrive come far aumentare la resistenza in presenza di dati rumorosi. Domingos (1997) descrive come derivare un singolo modello interpretabile da un ensemble utilizzando esempi di addestramento artificiale. Gli alberi opzionali bayesiani sono stati introdotti da Buntine (1992) e la maggioranza dei voti è stata inserita negli alberi opzionali da Kohavi e Kunz (1997). Freund e Mason (1999) hanno introdotto alberi decisionali alternati; Gli esperimenti con gli alberi decisionali multiclass alternati sono stati segnalati da Holmes et al. (2002). Landwehr et al. (2003) ha sviluppato alberi di modello logistico utilizzando l'algoritmo LogitBoost.<br /> La generalizzazione impilata è nata da Wolpert (1992), che ha presentato l'idea nella letteratura della rete neurale e viene applicata alla previsione numerica di Breiman (1996a). Ting e Witten (1997a) confrontano empiricamente i diversi modelli di livello-1 e hanno scoperto che un semplice modello lineare esegue meglio; Hanno anche dimostrato il vantaggio di utilizzare le probabilità come dati di livello 1. È stata inoltre studiata una combinazione di impilamento e imbottigliamento (Ting e Witten 1997b).<br /> L'idea di utilizzare i codici di output di correzione degli errori per la classificazione ha ottenuto un'ampia accettazione dopo un lavoro di Dietterich e Bakiri (1995); Ricci e Aha (1998) hanno mostrato come applicare tali codici ai classificatori più vicini.<br /><br /> Blum e Mitchell (1998) hanno promosso l'uso della co-formazione e hanno sviluppato un modello teorico per l'utilizzo di dati etichettati e non etichettati da diverse prospettive indipendenti. Nigam e Ghani (2000) hanno analizzato l'efficacia e l'applicabilità della co-formazione, correlandolo all'uso tradizionale di EM standard per riempire i valori mancanti. Essi hanno anche introdotto l'algoritmo co-EM. Nigam ed altri (2000) hanno esplorato esattamente come l'algoritmo di clustering EM possa utilizzare dati non attribuiti per migliorare un classificatore iniziale costruito da Naïve Bayes, come riportato nella sezione Clustering for classification. Fino a questo punto, la co-formazione e la co-EM sono stati applicati principalmente a piccoli problemi a due classi; Ghani (2002) ha usato errorcorrecting dei codici di output per affrontare situazioni multiclass con molte classi.<br /> Brefeld e Scheffer (2004) hanno esteso co-EM per utilizzare una macchina vettoriale di supporto piuttosto che Naïve Bayes. Seeger (2001) pone dubbi sul fatto che questi nuovi algoritmi dispongano davvero di offrire qualcosa di più di quelli tradizionali, correttamente utilizzati.<br /> Spostamento: Estensioni e Applicazioni<br /><br /> L'apprendimento automatico è una nuova tecnologia per estrarre conoscenze dai dati, una tecnologia che molte persone stanno prendendo sul serio. Non vogliamo sovraccaricare. Il tipo di apprendimento delle macchine che conosciamo non riguarda i grossi problemi: visioni futuristiche di servi robotici autonomi, confusioni filosofiche di coscienza, questioni metafisiche del libero arbitrio, domande evoluzionarie o teologiche da dove viene l'intelligenza, dibattiti linguistici sull'apprendimento delle lingue, Teorie psicologiche dello sviluppo del bambino, o spiegazioni cognitive di quale intelligenza è e come funziona. Per noi, è molto più prosaico: l'apprendimento automatico riguarda algoritmi per l'inferire della struttura dai dati e dai modi per convalidare tale struttura. Questi algoritmi non sono abstrusi e complicati, ma non sono del tutto ovvie e banali.<br /><br /> Guardando in avanti, la sfida principale è applicazioni. Le opportunità abbondano. Ovunque ci siano dati, le cose possono essere apprese da esso. Ogni volta che ci sono troppi dati per le persone a pompare su se stessi, la meccanica dell'apprendimento dovrà essere automatica. Ma l'ispirazione non sarà certamente automatica! Le applicazioni non provengono da programmi informatici, né da esperti di apprendimento macchina, né dai dati stessi, ma dalle persone che lavorano con i dati e dai problemi da cui nasce. Ecco perché abbiamo scritto questo libro e il sistema Weka descritto nella Parte II - per potenziare coloro che non sono esperti di apprendimento macchina per applicare queste tecniche ai problemi che sorgono nella vita quotidiana di lavoro. Le idee sono semplici. Gli algoritmi sono qui. Il resto è davvero su di te!<br /> Naturalmente, lo sviluppo della tecnologia non è certo finito. L'apprendimento automatico è un argomento di ricerca calda e nuove idee e tecniche emergono continuamente. Per dare un sapore alla portata e alla varietà dei fronti della ricerca, chiudiamo la parte I guardando alcune aree attuali nel mondo della data mining.<br /> Learning from massive datasets<br /><br /> L'enorme proliferazione di banche dati molto grandi nelle aziende e nelle istituzioni scientifiche odierne rende necessario che gli algoritmi di apprendimento macchina operino su set di dati massicci. Due dimensioni separate diventano critiche quando ogni algoritmo viene applicato a set di dati molto grandi: spazio e tempo.<br /><br /> Supponiamo che i dati siano così grandi che non possano essere tenuti nella memoria principale. Ciò non comporta alcuna difficoltà se il piano di apprendimento funziona in modo incrementale, elaborando un'istanza in un momento durante la generazione del modello. Un'istanza può essere letto dal file di input, il modello può essere aggiornato, l'istanza successiva può essere letto e così via, senza mai tenere più di un'istanza di formazione nella memoria principale. Normalmente, il modello risultante è piccolo rispetto alla dimensione del set di dati e la quantità di memoria disponibile non impone vincoli gravi. Il metodo Naïve Bayes è un eccellente esempio di questo tipo di algoritmo; Ci sono anche versioni incrementali di induttori di alberi decisionali e sistemi di apprendimento regole. Tuttavia, gli algoritmi incrementali per alcuni dei metodi di apprendimento descritti in questo libro non sono ancora stati sviluppati. Altri metodi, quali schemi basati su istanze di base e regressione localizzata, hanno bisogno di accedere a tutte le istanze di formazione a tempo di previsione. In questo caso, devono essere impiegati meccanismi sofisticati di caching e indicizzazione per mantenere solo le parti più frequentemente utilizzate di un set di dati in memoria e per consentire l'accesso rapido alle istanze rilevanti nel file.<br /><br /> L'altra dimensione critica quando si applicano algoritmi di apprendimento a set di dati massivi è il tempo. Se il tempo di apprendimento non scala linearmente (o quasi linearmente) con il numero di istanze di addestramento, sarà infine impossibile elaborare set di dati molto grandi. In alcune applicazioni il numero di attributi è un fattore critico e solo i metodi che scendono linearmente nel numero di attributi sono accettabili. In alternativa, il tempo di previsione potrebbe essere il problema cruciale. Fortunatamente, ci sono molti algoritmi di apprendimento che scalano graziosamente durante la formazione e il test. Ad esempio, il tempo di formazione per Naïve Bayes è lineare sia nel numero di istanze che nel numero di attributi. Per gli induttori di albero di decisione dall'alto verso il basso abbiamo visto nel paragrafo 6.1 (pagine 196-198) che il tempo di addestramento è lineare nel numero di attributi e, se l'albero è uniformemente cespuglio, è log-lineare nel numero di istanze (se il sottotrezza Non viene utilizzato o, se è, con un ulteriore fattore di log).<br /><br /> Quando un set di dati è troppo grande per un particolare algoritmo di apprendimento da applicare, esistono tre modi per rendere l'apprendimento possibile. Il primo è banale: invece di applicare lo schema al set completo, utilizzare solo un piccolo sottoinsieme per la formazione. Naturalmente, le informazioni vengono perse quando viene utilizzato il sottoamplificazione. Tuttavia, la perdita può essere trascurabile poiché la prestazione predittiva di un modello appreso spesso si appiattisce molto prima che tutti i dati di addestramento siano incorporati. Se questo è il caso, può essere facilmente verificato osservando le prestazioni del modello su un set di test di holdout per gruppi di formazione di dimensioni diverse.<br /> Questo tipo di comportamento, chiamato legge di diminuzione dei rendimenti, può sorgere perché il problema dell'apprendimento è semplice, in modo che un piccolo volume di dati di formazione è sufficiente per imparare un modello accurato. In alternativa, l'algoritmo di apprendimento potrebbe essere incapace di cogliere la struttura dettagliata del dominio sottostante. Questo è spesso osservato quando Naïve Bayes è impiegato in un dominio complesso: i dati addizionali di formazione potrebbero non migliorare le prestazioni del modello, mentre l'accuratezza dell'albero di decisione può continuare a salire. In questo caso, ovviamente, se la prestazione predittiva è l'obiettivo principale, devi passare all'algoritmo di apprendimento più complesso. Ma attenzione al sovraffollamento! Fare attenzione a non valutare le prestazioni dei dati formativi.<br /><br /> La parallelazione è un altro modo per ridurre la complessità temporale dell'apprendimento. L'idea è di dividere il problema in parti più piccole, risolvere ciascuna con un processore separato e unire i risultati insieme. A tal fine, è necessario creare una versione parallela dell'algoritmo di apprendimento. Alcuni algoritmi si prestano naturalmente alla parallelizzazione. I metodi di prossimità più vicini, ad esempio, possono essere facilmente distribuiti tra più processori suddividendo i dati in più parti e consentendo a ciascun processore di trovare il prossimo più vicino nella sua parte del set di allenamento. Gli studenti degli alberi decisionali possono essere paralleli permettendo ad ogni processore di costruire un sottotrapo dell'albero completo. Bagging e impilamento (anche se non aumentando) sono naturalmente algoritmi paralleli. Tuttavia, la parallelizzazione è solo un rimedio parziale perché con un numero fisso di processori, la complessità del tempo asintotico dell'algoritmo non può essere migliorata.<br /><br /> Un modo semplice per applicare qualsiasi algoritmo a un grande set di dati è quello di dividere i dati in pezzi di dimensioni limitate e apprendere i modelli separatamente per ciascuno, combinando il risultato utilizzando il voto o la media. A questo scopo può essere impiegato uno schema simile a quello di bagaglio o uno schema sequenziato. Il potenziamento ha il vantaggio che i nuovi pezzi possono essere ponderati in base ai classificatori appresi dai precedenti blocchi, trasferendo così la conoscenza tra i pezzi. In entrambi i casi il consumo di memoria aumenta linearmente con la dimensione del set di dati; Quindi è necessaria una forma di potatura per i set di dati molto grandi. Ciò può essere fatto mettendo da parte alcuni dati di convalida e solo aggiungendo un modello da un nuovo pezzo al classificatore di commissione se aumenta la prestazione del comitato sul set di convalida. Il set di convalida può anche essere utilizzato per identificare una dimensione del pezzo appropriata eseguendo il metodo con diverse dimensioni del pezzo in parallelo e monitorando le prestazioni sul set di convalida.<br /> Il modo migliore ma più impegnativo per consentire a un paradigma di apprendimento di affrontare grandi set di dati sarebbe quello di sviluppare nuovi algoritmi con complessità computazionale più bassa. In alcuni casi, è probabilmente impossibile derivare algoritmi esatti con una complessità inferiore. Gli studenti degli alberi decisionali che trattano di attributi numerici rientrano in questa categoria. La loro complessità temporale asintotica è dominata dal processo di ordinamento per i valori di attributo numerico, una procedura che deve essere eseguita almeno una volta per ogni dato set di dati. A volte possono essere derivati algoritmi stocastici che approssimano la vera soluzione ma richiedono una quantità molto minore di tempo.<br /><br /> La conoscenza della priorità può consentire di ridurre notevolmente la quantità di dati che deve essere elaborata da un algoritmo di apprendimento. A seconda di quale attributo è la classe, la maggior parte degli attributi in un set di dati enorme potrebbe risultare irrilevante quando viene presa in considerazione la conoscenza della priorità. Come al solito, paga per accuratamente ingegnerizzare i dati che vengono trasmessi allo schema di apprendimento e fare il massimo uso di qualsiasi informazione preliminare sul problema di apprendimento a portata di mano. Se non è disponibile una conoscenza di base insufficiente, gli algoritmi di filtraggio degli attributi descritti nella Sezione 7.1 possono spesso ridurre drasticamente la quantità di dati, forse a scapito di una minore perdita di prestazioni predittive. Alcuni di questi - ad esempio, la selezione degli attributi utilizzando alberi decisionali o lo schema di apprendimento 1R - sono lineari nel numero di attributi.<br /><br /> Solo per dare una sensazione per la quantità di dati che possono essere gestite da semplici implementazioni di algoritmi di apprendimento macchina su ordinari microcomputer, abbiamo eseguito l'albero decisionale J4.8 su un set di dati con 600.000 istanze, 54 attributi (10 numeri e 44 binari ) E una classe con sette valori. Abbiamo utilizzato un processore Pentium 4 con un clock da 2,8 GHz e una macchina virtuale Java con un "compilatore appena in tempo". Ci sono voluti 40 minuti per caricare il file di dati, costruire l'albero utilizzando potatura a errori ridotti e classificare tutti Le istanze di formazione. L'albero aveva 20.000 nodi. Si noti che questa implementazione è scritta in Java e l'esecuzione di un programma Java è spesso più volte più veloce di un programma corrispondente scritto in C perché il codice byte di Java deve essere tradotto in codice macchina prima che possa essere eseguito. (Nella nostra esperienza la differenza è di solito un fattore da tre a cinque se la macchina virtuale utilizza un compilatore justin-time.)<br /> Oggi esistono set di dati che meritano veramente l'aggettivo massivo. I set di dati scientifici provenienti da astrofisica, fisica nucleare, scienza della terra e biologia molecolare sono misurate in centinaia di gigabyte - o addirittura di terabyte. Quindi sono i set di dati che contengono record di transazioni finanziarie. L'applicazione di programmi standard per l'apprendimento automatico a tali set di dati nella loro interezza è una proposta molto impegnativa.<br /> Incorporating domain knowledge<br /><br /> Durante tutto questo libro abbiamo sottolineato l'importanza di conoscere i tuoi dati durante l'attività di estrazione dei dati pratici. La conoscenza del dominio è assolutamente indispensabile per il successo. I dati sui dati vengono spesso chiamati metadati e una delle frontiere dell'apprendimento automatico è lo sviluppo di schemi che permettano ai metodi di apprendimento di tenere in considerazione metadati in modo utile.<br /><br /> Non si deve guardare molto per esempi di come metadati possono essere applicati. Nel Capitolo 2 abbiamo diviso gli attributi in nominal e numerici. Ma abbiamo anche notato che molte distinzioni più fini sono possibili. Se un attributo è numerico, l'ordine è implicito, ma a volte c'è un punto zero e talvolta non (per intervalli di tempo, ma per date non c'è). Anche l'ordine può essere non standard: i gradi angolari hanno un ordine diverso da quello degli interi, perché 360 ° è lo stesso di 0 ° e 180 ° è uguale a -180 ° o addirittura a 900 °. Gli schemi di discretizzazione assumono ordini ordinari ordinari, come gli schemi di apprendimento che soddisfano gli attributi numerici, ma sarebbe una questione di routine per estenderli alle ordinazioni circolari. Possono essere ordinati anche dati categorici. Immagina quanto sarebbe più difficile la nostra vita se non ci fosse un ordinamento convenzionale per le lettere dell'alfabeto. (La ricerca di un elenco nella rubrica telefonica di Hong Kong presenta un problema interessante e non triviale!) E i ritmi della vita quotidiana si riflettono nelle ordinazioni circolari: giorni della settimana, mesi dell'anno. Per complicare ulteriormente le questioni ci sono molti altri tipi di ordinamento, come le ordinazioni parziali sui sottoinsiemi: il sottoinsieme A può includere il sottoinsieme B, il sottoinsieme B può includere il sottoinsieme A o nessuno dei due può includere l'altro. L'estensione dei programmi di apprendimento ordinario per tenere conto di questo tipo di informazioni in modo soddisfacente e generale è un problema di ricerca aperta.<br /><br /> Metadati spesso coinvolge rapporti tra attributi. Si distinguono tre tipi di relazioni: semantiche, causali e funzionali. Una relazione semantica tra due attributi indica che se il primo è incluso in una regola, anche il secondo dovrebbe essere. In questo caso, è noto a priori che gli attributi hanno un senso solo insieme. Ad esempio, nei dati agricoli che abbiamo analizzato, un attributo chiamato produzione di latte misura quanta latte produce una vacca individuale e lo scopo della nostra indagine ha significato che questo attributo aveva una relazione semantica con tre altri attributi, identificatore della mucca, Identificatore e agricoltore. In altre parole, un valore di produzione di latte può essere compreso solo nel contesto della mucca che ha prodotto il latte e la mucca è ulteriormente legata ad una mandria specifica di un determinato contadino. Le relazioni semantiche, naturalmente, dipendono dal problema: non dipendono solo dal set di dati, ma anche da ciò che stai cercando di fare con esso.<br /> Le relazioni causali si verificano quando un attributo provoca un'altra. In un sistema che cerca di prevedere un attributo causato da un altro, sappiamo che l'altro attributo deve essere incluso per rendere significativa la predizione. Ad esempio, nei dati agricoli menzionati in precedenza, c'è una catena di identificazione di coltivatori, branchi e mucche, attraverso attributi misurati come la produzione di latte, fino all'attributo che registra se una determinata mucca è stata mantenuta o venduta dall'agricoltore. Le regole apprese dovrebbero riconoscere questa catena di dipendenza.<br /><br /> Le dipendenze funzionali si verificano in molti database e le persone che creano dei database cercano di identificarli allo scopo di normalizzare le relazioni nel database. Quando apprendere dai dati, il significato di una dipendenza funzionale di un attributo su un altro è che se quest'ultimo viene utilizzato in una regola non c'è bisogno di considerare l'ex. I programmi di apprendimento spesso riscoprono le dipendenze funzionali già note. Non solo questo genera norme senza senso, o più accuratamente tautologiche, ma anche altri, modelli più interessanti possono essere oscurati dalle relazioni funzionali. Tuttavia, è stato molto lavoro nella progettazione automatica dei database sul problema di inferire dipendenze funzionali dalle query di esempio e i metodi sviluppati dovrebbero risultare utili per eliminare le regole tautologiche generate dai sistemi di apprendimento.<br /> Prendendo in considerazione questi tipi di metadati o conoscenze precedenti del dominio quando si effettua l'induzione utilizzando uno qualsiasi degli algoritmi che abbiamo incontrato non sembra presentare alcuna sfida tecnica o profonda. L'unico vero problema - ed è un grande - è come esprimere i metadati in modo generale e facilmente comprensibile in modo che possa essere generato da una persona e utilizzato dall'algoritmo.<br /><br /> Sembra interessante appendere la conoscenza dei metadati nella stessa rappresentazione che genera lo schema di apprendimento macchina. Ci concentriamo su regole, che sono la norma per gran parte di questo lavoro. Le regole che specificano i metadati corrispondono alla conoscenza precedente del dominio. Considerati esempi di addestramento, regole aggiuntive possono essere ricavate da uno dei regimi di induzione di regole che abbiamo già incontrato. In questo modo, il sistema potrebbe essere in grado di combinare "esperienza" (da esempi) con "teoria" (dalla conoscenza del dominio). Sarebbe in grado di confermare e modificare la sua conoscenza programmata basata su prove empiriche. Mettendo loop, l'utente racconta al sistema ciò che lui sa, gli dà alcuni esempi e fa il resto per se stesso!<br /> Per utilizzare le conoscenze precedenti espresse come regole in modo sufficientemente flessibile, è necessario che il sistema sia in grado di eseguire una deduzione logica. Altrimenti, la conoscenza deve essere espressa proprio nel modo giusto per l'algoritmo di apprendimento per sfruttarlo, probabilmente troppo esigente per l'uso pratico. Consideriamo i metadati causali: se A causa B e B provoca C, allora vorremmo che il sistema deduce che A causa C anziché dover dire esplicitamente questo fatto. Anche se in questo semplice esempio, esplicitamente affermando che il nuovo fatto presenta un piccolo problema, in pratica, con metadati estesi, sarà irrealistico aspettarsi che gli utenti del sistema esprimano tutte le conseguenze logiche della loro conoscenza precedente.<br /><br /> <br /><br />Una combinazione di deduzione dalla conoscenza del dominio prefissato e dall'induzione da esempi di formazione sembra un modo flessibile di accedere ai metadati. Ad un estremo, quando gli esempi sono scarsi (o inesistenti), la deduzione è il primo (o unico) mezzo per generare nuove regole. Dall'altro, quando gli esempi sono abbondanti ma i metadati sono scarsi (o inesistenti), le tecniche standard di apprendimento delle macchine descritte in questo libro sono sufficienti. Situazioni pratiche spaziano il territorio tra.<br /> Questa è una visione imponente ei metodi di programmazione logica induttiva, menzionati nella sezione 3.6, offrono un modo generale di specificare la conoscenza del dominio in modo esplicito attraverso istruzioni in una lingua logica formale. Tuttavia, le soluzioni di programmazione logica correnti subiscono gravi carenze in ambienti reali. Tendono a essere fragili e mancano di robustezza, e possono essere così computazionali per essere completamente impossibili su set di dati di qualsiasi dimensione pratica. Forse questo deriva dal fatto che utilizzano la logica del primo ordine, cioè consentono di introdurre le variabili nelle regole. I sistemi di apprendimento della macchina che abbiamo visto, i cui input e output sono rappresentati in termini di attributi e valori costanti, eseguono le loro lavorazioni nella logica proposizionale senza variabili, riducendo notevolmente lo spazio di ricerca e evitando ogni sorta di difficili problemi di circolarità e terminazione. Alcuni aspirano a realizzare la visione senza la fragilità di accompagnamento e la infallibilità computazionale delle soluzioni complete di programmazione logica adottando sistemi di ragionamento semplificati. Altri inseriscono la loro fede nel meccanismo generale delle reti bayesiane, introdotte nella sezione 6.7, in cui i vincoli causali possono essere espressi nella struttura di rete iniziale e le variabili nascoste possono essere postulate e valutate automaticamente. Sarà interessante vedere se sistemi che consentano la definizione flessibile di diversi tipi di conoscenze di dominio diventeranno ampiamente distribuiti.<br /> Text and Web mining<br /><br /> La data mining riguarda la ricerca di modelli nei dati. Allo stesso modo, l'estrazione del testo riguarda la ricerca di modelli nel testo: è il processo di analisi del testo per estrarre informazioni utili a scopi particolari. Rispetto al tipo di dati che abbiamo parlato in questo libro, il testo è non strutturato, amorfo e difficile da affrontare. Tuttavia, nella moderna cultura occidentale, il testo è il veicolo più comune per lo scambio formale delle informazioni. La motivazione per cercare di estrarre le informazioni da esso è convincente, anche se il successo è solo parziale.<br /><br /> La somiglianza superficiale tra testo e data mining nasconde reali differenze. Nel capitolo 1 abbiamo caratterizzato l'attività di data mining come estrazione di informazioni implicite, precedentemente sconosciute e potenzialmente utili da dati. Tuttavia, con l'estrazione del testo, le informazioni da estrarre sono chiaramente ed esplicitamente indicate nel testo. Non è nascosto affatto la maggior parte degli autori vanno a grandi dolori per assicurarsi che si esprimano in modo chiaro e inequivocabile. Dal punto di vista umano, l'unico senso in cui è "sconosciuto" è che le restrizioni temporali lo rendono impossibile per le persone a leggere il testo stesso. Il problema, ovviamente, è che le informazioni non sono apposte in un modo che sia responsabile dell'elaborazione automatica. L'estrazione del testo tenta di portarla in una forma adatta al consumo da parte di computer o da persone che non hanno tempo per leggere il testo completo<br /><br /> Un requisito comune per entrambi i dati e l'estrazione del testo è che le informazioni estratte dovrebbero essere potenzialmente utili. In un certo senso, ciò significa azione utile capace di creare una base per le azioni da intraprendere automaticamente. Nel caso del data mining, questa nozione può essere espressa in un modo relativamente indipendente dal dominio: i modelli attivati sono quelli che consentono di fare previsioni non triviali su nuovi dati della stessa fonte. La prestazione può essere misurata conteggiando i successi e gli errori, le tecniche statistiche possono essere applicate per confrontare metodi di estrazione dati diversi sullo stesso problema e così via. Tuttavia, in molte situazioni di estrazione del testo, è difficile caratterizzare ciò che "azione" significa in un modo indipendente dal particolare dominio a portata di mano. Ciò rende difficile trovare misure eque e obiettive di successo.<br /> Come abbiamo sottolineato in tutto questo libro, "potenzialmente utile" viene spesso dato un'altra interpretazione nella pratica di data mining: la chiave per il successo è che le informazioni estratte devono essere comprensibili in quanto aiutano a spiegare i dati. Ciò è necessario ogni volta che il risultato sia destinato al consumo umano piuttosto che (o anche) per l'azione automatica. Questo criterio è meno applicabile all'estrazione del testo perché, a differenza dell'estrazione dei dati, l'input è comprensibile. L'estrazione del testo con l'output comprensibile equivale a riassumere le caratteristiche salienti da un grande corpo di testo, che è un sottocampo di per sé: sintesi di testo.<br /> Abbiamo già riscontrato un importante problema di estrazione del testo: la classificazione dei documenti, in cui ogni istanza rappresenta un documento e la classe dell'istanza è l'argomento del documento. I documenti sono caratterizzati dalle parole che appaiono in essi. La presenza o l'assenza di ciascuna parola può essere considerata come un attributo booleano oppure i documenti possono essere trattati come sacchetti di parole, piuttosto che insiemi, tenendo conto delle frequenze di parola. Abbiamo incontrato questa distinzione nel paragrafo 4.2, dove abbiamo imparato a estendere Naïve Bayes alla rappresentazione "bag-of-words", dando la versione multinomiale dell'algoritmo.<br /><br /> Naturalmente, c'è un immenso numero di parole diverse, e la maggior parte di loro non è molto utile per la classificazione dei documenti. Questo presenta un classico problema di selezione delle funzioni. Alcune parole, ad esempio, le parole di funzione, spesso chiamate stopwords, possono essere eliminate a priori, ma anche se queste si verificano molto spesso, non sono molte di esse. Altre parole si verificano così raramente che sono improbabili per essere utili per la classificazione. Paradossalmente, sono frequenti le parole rare: quasi la metà delle parole in un tipico documento o corpus di documenti si verificano una sola volta. Tuttavia, tale numero enorme di parole rimane dopo che queste classi di parole vengono rimosse, che la selezione di ulteriori funzionalità può essere necessaria utilizzando i metodi descritti nella Sezione 7.1. Un altro problema è che il modello "bag- (o set-) di parole" trascura l'ordine di parola e gli effetti contestuali. C'è un forte caso per individuare frasi comuni e trattarle come singole unità.<br /> La classificazione dei documenti è l'apprendimento supervisionato: le categorie sono note in anticipo e sono fornite in anticipo per ogni documento di formazione. La versione senza sorveglianza del problema si chiama cluster di documenti. Qui non esiste una classe predefinita, ma vengono ricercati gruppi di documenti cognati. Il cluster di documenti può aiutare il recupero di informazioni creando collegamenti tra documenti simili, che a sua volta consente di recuperare documenti correlati una volta che uno dei documenti è stato considerato rilevante per una query <br /><br /> Ci sono molte applicazioni di classificazione dei documenti. Un compito di categorizzazione relativamente semplice, l'identificazione delle lingue, fornisce un importante pezzo di metadati per i documenti nelle collezioni internazionali. Una semplice rappresentazione che funziona bene per l'identificazione della lingua è caratterizzare ogni documento da un profilo che consiste nei n-grammi o sequenze di n lettere consecutive che appaiono. I più frequenti 300 grammi n-grammi sono altamente correlati con il linguaggio. Un'applicazione più impegnativa è l'assegnazione di autori in cui l'autore di un documento è incerto e deve essere indovinato dal testo. Qui, le parole d'ordine, non le parole di contenuto, sono il gifting, perché la loro distribuzione è dipendente dall'autore, ma indipendente dall'argomento. Un terzo problema è l'assegnazione di frasi chiave a documenti provenienti da un vocabolario controllato di possibili frasi, dato un gran numero di documenti formativi che sono contrassegnati da questo vocabolario.<br /><br /> Un'altra classe generale di problemi di estrazione dei testi è l'estrazione dei metadati. Metadati sono stati menzionati in precedenza come dati sui dati: nel campo del testo il termine si riferisce generalmente a caratteristiche salienti di un lavoro, come il suo autore, titolo, classificazione di soggetti, intestazioni di soggetto e parole chiave. I metadati sono una sorta di riepilogo di documenti altamente strutturati (e quindi attivi). L'idea di metadati è spesso estesa per comprendere parole o frasi che rappresentano oggetti o "entità" nel mondo, portando alla nozione di estrazione di entità. I documenti ordinari sono pieni di tali termini: numeri di telefono, numeri di fax, indirizzi di strada, indirizzi e-mail, firme e-mail, abstract, tabelle di contenuto, elenchi di riferimenti, tabelle, figure, didascalie, annunci di riunione, indirizzi web e altro ancora. Inoltre, ci sono innumerevoli entità specifiche di dominio, come numeri di libri internazionali standard (ISBN), simboli di scorta, strutture chimiche e equazioni matematiche. Questi termini agiscono come singoli elementi vocabolario e molte attività di elaborazione dei documenti possono essere migliorate significativamente se identificate come tali. Possono aiutare la ricerca, l'interconnessione e il cross-referencing tra documenti.<br /><br /> Come identificare le entità testuali? L'apprendimento di rotazione, vale a dire la ricerca di dizionario, è un'idea, in particolare quando è associato a risorse esistenti: elenchi di nomi e organizzazioni personali, informazioni sulle località dei giornalisti o dizionari di abbreviazione e acronimo. Un'altra è usare modelli di capitalizzazione e punteggiatura per nomi e acronimi; Titoli (Ms.), suffissi (Jr.) e prefissi baronali (von); O statistiche linguistiche inusuali per i nomi stranieri. Sono sufficienti espressioni regolari per i costrutti artificiali come i locatori di risorse uniformi (URL); Grammari espliciti possono essere scritti per riconoscere date e somme di denaro. Anche il compito più semplice offre opportunità per imparare ad affrontare l'enorme variazione che i documenti realmente presenti. Come un esempio, cosa potrebbe essere più semplice di cercare un nome in una tabella? Ma il nome del leader libico Muammar Gheddafi è rappresentato in 47 modi diversi su documenti ricevuti dalla Biblioteca del Congresso!<br /><br /> Molti documenti brevi descrivono un particolare tipo di oggetto o evento, che unisce entità in un composito di livello superiore che rappresenta l'intero contenuto del documento. Il compito di identificare la struttura composita, che può spesso essere rappresentata come un modello con slot che sono riempiti da singoli pezzi di informazioni strutturate, si chiama estrazione di informazioni. Una volta che le entità sono state trovate, il testo viene analizzato per determinare le relazioni tra di loro. I problemi tipici di estrazione richiedono la ricerca della struttura predicato di un piccolo insieme di proposizioni predeterminate. Questi sono di solito abbastanza semplici da catturare con tecniche di analisi poco profonde come piccole grammatiche finite di stato, anche se le questioni possono essere complicate da riferimenti ambigui dei pronomi e frasi preposizionali allegate e altri modificatori. L'apprendimento automatico è stato applicato all'estrazione di informazioni cercando regole che estraggono i riempitivi per le slot nel modello. Queste regole possono essere raggruppate in forma di pattern-action, i modelli che esprimono vincoli sul slot-filler e sulle parole nel suo contesto locale. Questi vincoli possono coinvolgere le stesse parole, i loro segni parziali e le loro classi semantiche.<br /><br /> Prendendo un ulteriore passo avanti l'estrazione delle informazioni, le informazioni estratte possono essere utilizzate in un passaggio successivo per apprendere le regole, non le regole su come estrarre informazioni, ma le regole che caratterizzano il contenuto del testo stesso. Queste regole potrebbero prevedere i valori di alcuni slot-filler dal resto del testo. In determinate situazioni fortemente vincolate, come ad esempio le posizioni di lavoro su Internet per lavori connessi al calcolo, l'estrazione di informazioni basata su alcuni esempi di formazione costruiti manualmente può competere con un intero database costruito manualmente in termini di qualità delle regole dedotte.<br /> Il World Wide Web è un enorme repository di testo. Quasi tutto è diverso dal normale testo "puro" perché contiene un taglio strutturale esplicito. Alcuni marcatori sono interni e indicano la struttura o il formato del documento; L'altro marchio è esterno e definisce i collegamenti ipertestuali espliciti tra i documenti. Queste fonti di informazioni forniscono una ulteriore leva per estrarre i documenti Web. L'estrazione del Web è come l'estrazione del testo, ma sfrutta le informazioni aggiuntive e spesso migliora i risultati capitalizzando l'esistenza di directory di argomenti e altre informazioni sul Web.<br /><br /> Le risorse di Internet che contengono directory relazionali di dati telefoniche o cataloghi di prodotti - utilizzano i comandi di formattazione HTML (HTML) per indicare chiaramente le informazioni che contengono agli utenti Web. Tuttavia, è molto difficile estrarre automaticamente dati da tali risorse. A tal fine, i sistemi software esistenti utilizzano moduli di parsing semplici chiamati wrapper per analizzare la struttura della pagina e estrarre le informazioni necessarie. Se i wrapper sono codificati manualmente, spesso, questo è un tipo banale di estrazione del testo perché si basa sulle pagine con una struttura fissa e predeterminata da cui le informazioni possono essere estratte algoritmicamente. Ma le pagine raramente obbediscono alle regole. Le loro strutture variano; I siti web si evolvono. Gli errori che sono insignificanti per i lettori umani lanciano completamente inutili le procedure di estrazione automatica. Quando si verifica un cambiamento, la regolazione manualmente di un involucro può essere un incubo che comporta l'acquisizione della testa intorno al codice esistente e la patchizzazione in un modo che non provoca rottura altrove.<br /><br /> Immettere automaticamente i wrapper di apprendimento ad avvolgimento da esempi. L'input è un set di formazione di pagine insieme a tuple che rappresentano le informazioni derivate da ciascuna pagina. L'output è un insieme di regole che estrae le tuple analizzando la pagina. Ad esempio, potrebbe cercare determinati elementi di delimitatore HTML, i limiti di paragrafo (<p>), le voci di elenco (<li>) o grassetto (<b>) che il progettista di pagine web ha utilizzato per disattivare elementi chiave di informazioni, E imparare la sequenza in cui vengono presentate le entità. Ciò potrebbe essere compiuto ripetendo su tutte le scelte di delimitatori, fermandosi quando si incontra un involucro coerente. Poi il riconoscimento dipenderà solo da una serie minima di segnali, fornendo una certa difesa contro i testi estranei ei marcatori nell'ingresso. In alternativa, si potrebbe seguire il consiglio di Epicurus alla fine della Sezione 5.9 e cercare un robusto involucro che utilizza più segnali per proteggere contro la variazione accidentale. Il grande vantaggio dell'induzione di avvolgimento automatico è che quando gli errori sono causati da varianti stilistiche è semplice aggiungerli ai dati di formazione e reindirizzare un nuovo involucro che li tiene conto. L'induzione di avvolgimento riduce i problemi di riconoscimento quando si verificano piccoli cambiamenti e rende molto più facile produrre nuovi set di regole di estrazione quando le strutture cambiano radicalmente.<br /><br /> Uno sviluppo chiamato il Web semantico mira a consentire alle persone di pubblicare informazioni in modo tale che la struttura e la semantica siano esplicite in modo che possano essere ripristinati anziché semplicemente letti. Ciò renderebbe superfluo l'induzione dell'involucro. Ma se e quando viene implementato il Web semantico, il requisito del markup manuale, per non parlare dei grandi volumi di pagine precedenti, aumenta probabilmente la domanda di introduzione automatica della struttura dell'informazione.<br /> L'estrazione del testo, inclusa l'estrazione del Web, è una tecnologia che è ancora in crescita, a causa della sua novità e delle difficoltà intrinseche, in uno stato fluido, forse allo stato di apprendimento automatico alla metà degli anni '80. Non esiste un reale consenso su ciò che riguarda: interamente interpretato, tutte le elaborazioni linguistiche naturali rientrano nell'ambito dell'estrazione del testo. Di solito è difficile fornire valutazioni generali e significative in quanto l'attività mineraria è altamente sensibile al particolare testo in esame. Le tecniche di smistamento automatico dei testi hanno molto da fare prima di competere con la capacità delle persone, anche senza conoscenze specifiche del dominio, di raccogliere informazioni dalle grandi raccolte di documenti. Ma andranno molto, perché la domanda è immensa.<br /> Adversarial situations<br /><br /> Una prima applicazione di apprendimento automatico è il filtraggio e-mail spazzatura. Mentre scriviamo queste parole (alla fine del 2004), il flagello dell'e-mail indesiderato è un problema che brucia, ma al tempo che li leggete la bestia sarà stata vinta o almeno addomesticata. A prima vista, il filtraggio e-mail di rottura di spazzatura sembra presentare un problema standard della classificazione dei documenti: divide i documenti in "ham" e "spam" sulla base del testo che contengono, guidati da dati formativi, di cui sono copiose quantità. Ma non è un problema standard perché coinvolge un aspetto contraddittorio. I documenti che vengono classificati non vengono scelti in modo casuale da un insieme inimmaginabile di tutti i documenti possibili; Contengono e-mail che vengono progettati con cura per evadere il processo di filtraggio, progettato appositamente per battere il sistema<br /><br /> I primi filtri anti-spam hanno semplicemente scartato messaggi contenenti parole "spammy" che connotano cose come il sesso, il lucre e il quackery. Naturalmente, molte corrispondenze legittime riguardano il genere, il denaro e la medicina: bisogna affrontare un equilibrio. Così i progettisti di filtri reclutarono schemi Bayesian di classificazione dei testi che hanno imparato a trovare un equilibrio appropriato durante il processo di formazione. Gli spammer si adattarono rapidamente alle tecniche che nascondevano le parole spammie scritte in modo scorretto; Li ha travolti con un testo legittimo, forse stampato in bianco su uno sfondo bianco in modo che solo il filtro lo abbia visto; O semplicemente mettere il testo di spam altrove, in un'immagine o un URL che la maggior parte dei lettori di posta elettronica scarica automaticamente.<br /> Il problema è complicato dal fatto che è difficile confrontare obiettivamente gli algoritmi di rilevazione di spam; Anche se i dati formativi sono abbondanti, le questioni relative alla privacy impediscono la pubblicazione di grandi corporazioni pubbliche di email rappresentative. E ci sono forti effetti temporali. Spam cambia rapidamente il carattere, invalidando test statistici sensibili come la convalida incrociata. Infine, i cattivi possono anche usare l'apprendimento macchina. Ad esempio, se riuscivano a trovare esempi di ciò che i filtri bloccano e ciò che lascia attraverso, potrebbero utilizzare questo come dati di formazione per imparare a evadere.<br /><br /> Ci sono, purtroppo, molti altri esempi di "situazioni di apprendimento contraddittorie" nel nostro mondo di oggi. Chiaramente legato alla posta indesiderata è lo spam di motori di ricerca: i siti che tentano di ingannare i motori di ricerca di Internet inserendoli in modo prominente nelle liste dei risultati di ricerca. Le pagine altamente classificate offrono vantaggi economici diretti ai propri proprietari perché presentano opportunità di pubblicità, fornendo una forte motivazione ai cercatori di profitti. Poi ci sono le guerre di virus del computer, in cui i progettisti di virus e software di protezione antivirus reagiscono alle innovazioni di un altro. Qui la motivazione tende ad essere una rottura generale e una negazione del servizio, piuttosto che guadagno monetario.<br /> La sicurezza della rete informatica è una battaglia in continua espansione. Le protezioni induriscono le reti, i sistemi operativi e le applicazioni e gli aggressori trovano vulnerabilità in tutte e tre le aree. I sistemi di rilevamento delle intrusioni sniffano modelli inusuali di attività che potrebbero essere causati da un'attività di ricognizione dell'hacker.<br /> Gli aggressori lo rendono conto e cercano di oscurare i loro sentieri, forse lavorando indirettamente o diffondendo le loro attività per un lungo periodo - o, viceversa, colpendo molto velocemente. Data mining viene applicato a questo problema nel tentativo di scoprire connessioni semantiche tra le tracce di attaccanti nei dati della rete computer che i sistemi di rilevamento delle intrusioni mancano. Questo è un problema di grande scala: i registri di controllo utilizzati per monitorare la sicurezza della rete di computer possono ammontare a gigabyte al giorno anche in organizzazioni di medie dimensioni.<br /><br /> Molti sistemi automatizzati di rilevazione delle minacce si basano sulla corrispondenza dei dati correnti con i tipi di attacco noti. L'Amministrazione federale dell'aviazione federale ha sviluppato il sistema di pre-screening del passeggero assistito da computer (CAPPS), che esamina i passeggeri della compagnia aerea sulla base dei loro record di volo e bandiera gli individui per ulteriori screening dei bagagli registrati. Sebbene i dettagli esatti siano inediti, CAPPS è per esempio pensato di assegnare punteggi più elevati alla minaccia ai pagamenti in denaro. Tuttavia, questo approccio può rilevare solo minacce note o anticipate. I ricercatori stanno utilizzando approcci senza supervisione, come l'anomalia e l'individuazione più esterna nel tentativo di rilevare attività sospette. Oltre a segnalare le potenziali minacce, i sistemi di rilevamento anomalie possono essere applicati alla rilevazione di attività illegali come la frode finanziaria e il riciclaggio di denaro.<br /> La data mining è oggi utilizzata per analizzare enormi volumi di dati in nome della difesa patria. Le informazioni eterogenee come le transazioni finanziarie, le registrazioni sanitarie e il traffico di rete vengono estratte per creare profili, costruire modelli di social network e individuare le comunicazioni terroristiche. Questa attività solleva gravi preoccupazioni sulla privacy e ha portato allo sviluppo di tecniche di estrazione dei dati che tutelano la privacy. Questi algoritmi cercano di discernere i modelli nei dati senza accedere direttamente ai dati originali, tipicamente distorcendo i valori casuali. Per preservare la privacy, essi devono garantire che il processo di estrazione non riceve informazioni sufficienti per ricostruire i dati originali. Questo è più facile da dire che da fare.<br /><br /> Su una nota più leggera, non tutti i dati contraddittori di data mining sono mirati a combattere attività malvagie. I sistemi multiagenti in domini complessi e rumorosi in tempo reale implicano agenti autonomi che devono collaborare in una squadra e competere contro gli antagonisti. Se hai problemi a visualizzarlo, pensa a calcio. Il Robo-Soccer è un dominio ricco e popolare per esplorare come l'apprendimento delle macchine può essere applicato a tali problemi difficili. I giocatori non devono solo affinare le competenze a basso livello ma devono anche imparare a lavorare insieme e adattarsi ai modelli di comportamento di diversi avversari.<br /><br /> Infine, l'apprendimento macchina è stato usato per risolvere un mistero letterario storico smascherando un autore prolifico che aveva tentato di nascondere la sua identità. Come riferisce Koppel e Schler (2004), Ben Ish Chai è stato il principale studioso rabbinico a Baghdad alla fine dell'Ottocento. Tra la sua vasta eredità letteraria sono due raccolte distinte di circa 500 lettere ebraico-aramaiche scritte in risposta alle domande legali. È conosciuto per aver scritto una sola collezione. Anche se sostiene di aver trovato l'altro in un archivio, gli storici sospettano che egli stesso abbia scritto, ma ha tentato di mascherare la sua autrice cambiando deliberatamente il suo stile. Il problema che questo caso presenta all'applicazione della macchina è che non esiste un corpus di lavoro da attribuire all'autore del mistero. C'erano alcuni candidati noti, ma le lettere potrebbero essere altrettanto ben scritte da chiunque altro. È stata sviluppata una nuova tecnica appositamente chiamata smascheratura che crea un modello per distinguere il lavoro dell'autore noto A dall'opera sconosciuta dell'autore X, rimuove iterativamente quelle funzionalità più utili per distinguere i due e esamina la velocità con la quale l'accuratezza della convalida incrociata Come vengono rimosse più funzionalità.<br /><br /> L'ipotesi è che se l'opera X è scritta dall'autore dell'opera A che cerca di nascondere la sua identità, qualunque differenza tra il lavoro X e il lavoro A si rifletta solo in un numero relativamente piccolo di caratteristiche rispetto alle differenze tra il lavoro X E le opere di un altro autore, diciamo l'autore del lavoro B. In altre parole, quando il lavoro X viene confrontato con le opere A e B, la curva di precisione come funzionalità viene rimossa diminuirà molto più velocemente per il lavoro A che non per il lavoro B Koppel e Schler hanno concluso che Ben Ish Chai ha effettivamente scritto le lettere misteriose e la loro tecnica è un esempio sorprendente dell'uso originale e creativo dell'approccio macchina in una situazione "contraddittoria".<br /><br /> Ubiquitous data mining<br /><br /> Abbiamo iniziato questo libro sottolineando che siamo sopraffatti con i dati. Da un punto di vista questo non influenza la vita di persone ordinarie più che sul World Wide Web. Attualmente il Web contiene più di 5 miliardi di documenti, per un totale di circa 20 TB e continua a crescere in modo esponenziale, raddoppiando ogni 6 mesi o giù di lì. La maggior parte dei consumatori Usa usa il Web. Nessuno di loro può tenere il passo con l'esplosione delle informazioni. Mentre le attività di data mining sono state originate nel mondo aziendale, in quanto i database sono, l'estrazione di testo spinge la tecnologia di apprendimento delle macchine dalle aziende e dalla casa. Ogni volta che siamo sopraffatti dai dati sul Web, l'estrazione del testo promette strumenti per attenuarla. Le applicazioni sono legioni. Trovare amici e contattarli, mantenere i portafogli finanziari, acquistare acquisti in un mondo elettronico, utilizzando rivelatori di dati di qualsiasi tipo, tutti questi potrebbero essere realizzati automaticamente senza una programmazione esplicita. Le tecniche di estrazione del testo sono già state utilizzate per prevedere quale link verrà scelto successivamente, per organizzare i documenti e per ordinare la tua posta. In un mondo in cui le informazioni sono travolgenti, disorganizzate e anarchiche, l'estrazione del testo può essere la soluzione che abbiamo tanto disperatamente bisogno.<br /><br /> Molti credono che il Web non è altro che il tracciato di un cambiamento paradigmatico ancora più grande: l'informazione onnipresente. I piccoli dispositivi portatili sono ovunque: telefoni cellulari, assistenti digitali personali, lettori stereo e video personalizzati, fotocamere digitali, accesso Web mobile. Già alcuni dispositivi integrano tutte queste funzioni. Conoscono la nostra posizione nel tempo fisico e nello spazio fisico, ci aiutano a comunicare nello spazio sociale, organizzano il nostro spazio personale di pianificazione, ricordano il nostro passato e ci avvolgono nello spazio informativo globale. È facile trovare decine di processori in una casa di classe media negli Stati Uniti oggi. Non comunicano tra loro o con l'infrastruttura globale di informazione. Ma lo faranno, e quando verrà fatto il potenziale per l'estrazione dei dati "salirà".<br /> Prendi la musica di consumo. La musica popolare porta l'avanguardia del progresso tecnologico. Walkman originale di Sony ha aperto la strada all'elettronica portatile di oggi. L'iPod di Apple è stato uno dei più grandi archivi portatili. La tecnologia di rete di Napster ha stimolato lo sviluppo di protocolli peer-to-peer. I sistemi raccomandati come Firefly hanno portato il calcolo alle reti sociali. 'In un prossimo futuro' i servizi musicali con contenuti consapevoli migreranno su dispositivi portatili. Le applicazioni per l'estrazione dei dati nelle comunità di utenti di servizi di musica in rete saranno legioni: scoprire le tendenze musicali, seguire le preferenze ei gusti e analizzare i comportamenti d'ascolto.<br /><br /> L'informatica onnipresente "intreccia lo spazio digitale da vicino" in attività del mondo reale. A molti, l'estrapolazione frustante delle proprie esperienze computerizzate, tecnologia arcaica, "l'inadeguatezza personale percepita" e "il guasto alla macchina", questo suona come un incubo. Ma i sostenitori sottolineano che non può essere così, perché, se è vero, non funzionerà. I visionari di oggi prevedono un mondo di calcolo "calma" in cui le macchine nascoste silenziosamente cospirano dietro le quinte per rendere la vita più ricca e più facile. Troveranno oltre i grossi problemi di finanza aziendale e compiti a scuola per i piccoli fastidi, come ad esempio dove sono le chiavi dell'auto, posso trovare un posto auto e quella maglia che ho visto la settimana scorsa a Macy ancora sul rack? Gli orologi troveranno il tempo corretto dopo un interruzione di corrente, il microonde riceverà nuove ricette da Internet e i giocattoli per bambini si aggiorneranno con nuovi giochi e nuovi vocabolari. Le etichette dei vestiti seguiranno il lavaggio, le tazze di caffè avviseranno il personale addetto alla pulizia allo stampo, gli interruttori di luce risparmiano energia se nessuno è nella stanza e le matite digitalizzeranno tutto quello che disegniamo. Dove l'estrazione dei dati sarà in questo nuovo mondo? Ovunque!<br /><br /> È difficile indicare esempi di un futuro che non esiste ancora. Ma i progressi nella tecnologia dell'interfaccia utente sono suggestivi. Molti compiti ripetitivi "nelle interfacce deo computer diconfigurazione" non possono essere automatizzate con gli strumenti standard di applicazione che costringono gli utenti di eseguire ripetutamente le stesse azioni di interfaccia. Questo caratterizza le frustrazioni alluse in precedenza: chi è responsabile o me? I programmatori esperti potrebbero scrivere uno script per eseguire tali operazioni per loro conto, ma poiché i sistemi operativi accumulano strato su strato di complessità, la potenza dei programmatori a comandare la macchina è erosa e svanisce totalmente quando funzionalità complesse sono incorporate negli apparecchi piuttosto che nei computers periferici ".<br /><br /> La ricerca nella programmazione mediante la dimostrazione consente agli utenti di computer comuni di automatizzare attività predittive senza richiedere alcuna conoscenza di programmazione affatto. L'utente deve sapere solo come eseguire l'attività nel modo consueto per poterlo comunicare al computer. Un sistema denominato Familiar consente agli utenti di automatizzare attività iterative che implicano applicazioni esistenti nei computer Macintosh. Funziona attraverso le applicazioni e può lavorare con quelli completamente nuovi mai incontrati. Lo fa utilizzando il linguaggio di script di Apple per raccogliere informazioni da ogni applicazione e sfruttare queste informazioni per fare previsioni. L'agente tollera il rumore. Genera spiegazioni per informare l'utente del computer sulle sue previsioni, e include risposte. È adattabile: impara compiti specializzati per singoli utenti. Inoltre, è sensibile allo stile di ogni utente. Se due persone stavano insegnando un compito e avvenuto per dare dimostrazioni identiche, Familiar non "necessariamente deduce" programmi identici: è sintonizzato nelle loro abitudini perché impara dalla loro storia di interazione<br /><br /> Familiar impiega tecniche di apprendimento standard di macchina per dedurre l'intento dell'utente. Le regole vengono utilizzate per valutare le previsioni in modo che il migliore possa essere presentato all'utente in ogni punto. Queste regole sono conditional in modo che gli utenti possano insegnare attività di classificazione quali l'ordinamento dei file in base al loro tipo e l'assegnazione di etichette in base alla loro dimensione. Si apprende in modo incrementale: l'agente si adatta a singoli utenti registrando la loro storia di interazione.<br /><br /> Sono sorte molte difficoltà. Uno è la scarsità di dati. Gli utenti sono spiacevoli a dimostrare diverse iterazioni di un compito: pensano che l'agente deve immediatamente accedere a ciò che stanno facendo. Mentre un cacciatore di dati considererebbe un minuscolo set di dati a 100 cifre, gli utenti fanno parte della prospettiva di dimostrare un compito anche mezza dozzina di volte. Una seconda difficoltà è la pletora di attributi. L'ambiente desktop del computer dispone di centinaia di funzioni che potrebbero dipendere da qualsiasi azione. Ciò significa che i piccoli set di dati sono estremamente probabili irrilevanti e sono necessari test statistici specialistici per confrontare ipotesi alternative. Un terzo è che lo stile di sviluppo iterativo e migliorato che caratterizza le applicazioni di data mining non riesce. In linea di principio, è impossibile creare un corpus fisso di addestramento e test per un problema interattivo come la programmazione mediante dimostrazione perché ogni miglioramento dell'agente modifica i dati di prova influenzando il modo in cui gli utenti reagiscono.<br /> Un quarto è che i programmi applicativi esistenti forniscono un accesso limitato ai dati utente di applicazioni: spesso la materia prima su cui dipende l'operazione di successo è inaccessibile, sepolto profondamente all'interno del programma applicativo. La data mining è già ampiamente utilizzata sul lavoro. L'estrazione del testo inizia a portare le tecniche in questo libro nella nostra vita, mentre leggiamo la nostra e-mail e navigare sul web. Per quanto riguarda il futuro, sarà più strano di quanto possiamo immaginare. L'infrastruttura di diffusione informatica offrirà indisponibili opportunità di apprendimento. La data mining sarà lì, dietro le quinte, giocando un ruolo che si rivelerà fondamentale.<br /> Letture<br /><br /> C'è un notevole volume di letteratura che tratta l'argomento dei massicci set di dati e possiamo solo indicare alcuni riferimenti qui. Fayyad e Smith (1995) descrivono l'applicazione di data mining a dati voluminosi da esperimenti scientifici. Shafer et al. (1996) descrivono una versione parallela di un induttore dell'albero di decisione dall'alto verso il basso. Un algoritmo di albero decisionale sequenziale per i mass-set di dati resident-disk è stato sviluppato da Mehta et al. (1996). La tecnica di applicare qualsiasi algoritmo ad un grande set di dati, suddivisi in parti più piccole e insaccando o aumentando il risultato è descritto da Breiman (1999); Frank et al. (2002) spiegano il relativo schema di potatura e selezione.<br /><br /> Appelt (1999) descrive molti problemi di estrazione dell'informazione. Molti autori hanno applicato l'apprendimento delle macchine per cercare regole che estraggono slot-filler per i modelli, ad esempio Soderland et al. (1995), Huffman (1996) e Freitag (2002). Califf e Mooney (1999) e Nahm e Mooney (2000) hanno esaminato il problema dell'estrazione di informazioni da annunci di lavoro pubblicati sui newsgroup di Internet. Un approccio per trovare informazioni in esecuzione del testo basato su tecniche di compressione è stato riportato da Witten et al. (1999). Mann (1993) rileva la pletora delle variazioni di Muammar Qaddafi sui documenti ricevuti dalla Biblioteca del Congresso.<br /> Chakrabarti (2003) ha scritto un libro eccellente e completo sulle tecniche di estrazione Web. Kushmerick et al. (1997) sviluppò tecniche di avvolgimento involucro. Il Web semantico è stato introdotto da Tim Berners-Lee (Berners-Lee e altri, 2001), che 10 anni prima ha sviluppato la tecnologia dietro il World Wide Web.<br /><br /> La prima carta sul filtraggio e-mail spazzatura è stata scritta da Sahami et al. (1998). Il nostro materiale sulla sicurezza delle reti informatiche viene eliminato dal lavoro di Yurcik et al. (2003). Le informazioni sul sistema CAPPS provengono dalla sottocommissione per l'aviazione del 2002 (Ufficio federale degli Stati Uniti) e l'uso di un apprendimento non monitorato per la rilevazione delle minacce è descritto da Bay e Schwabacher (2003). I problemi con le attuali tecniche di estrazione dei dati sulla conservazione della privacy sono state identificate da Datta et al. (2003). Stone e Veloso (2000) hanno esaminato sistemi multiagenti del genere che vengono utilizzati per giocare a robo-calcio da una prospettiva di apprendimento macchina. L'affascinante storia di Ben Ish Chai e la tecnica utilizzata per smascherarlo sono da Koppel e Schler (2004).<br /> La visione del calcolo calma, così come gli esempi che abbiamo menzionato, è da Weiser (1996) e Weiser e Brown (1997). Ulteriori informazioni sui diversi metodi di programmazione per dimostrazione possono essere trovati nel compendio di Cypher (1993) e Lieberman (2001). Mitchell et al. (1994) riportano qualche esperienza con apprendisti apprendimento. Familiar è descritto da Paynter (2000). Le prove di permutazione (Good 1994) sono prove statistiche adatte a piccoli problemi del campione: Frank (2000) descrive la loro applicazione nell'apprendimento della macchina.<br /> The Weka Machine Learning Workbench<br /><br /> L'esperienza dimostra che nessun sistema di apprendimento automatico è adatto a tutti i problemi di data mining. Lo studente universale è una fantasia idealistica. Come abbiamo sottolineato in tutto questo libro, i set di dati reali variano, e per ottenere modelli precisi, la biasità dell'algoritmo di apprendimento deve corrispondere alla struttura del dominio. L'estrazione dei dati è una scienza sperimentale.<br /> Il banco di lavoro di Weka è una collezione di algoritmi di apprendimento di macchina all'avanguardia e strumenti di preprocessing dei dati. Esso comprende praticamente tutti gli algoritmi descritti in questo libro. È stato progettato in modo da poter provare rapidamente i metodi esistenti sui nuovi set di dati in modo flessibile. Fornisce un ampio supporto per l'intero processo di estrazione sperimentale dei dati, compresa la preparazione dei dati di input, la valutazione dei programmi di apprendimento in modo statistico e la visualizzazione dei dati di input e del risultato dell'apprendimento. Oltre ad una grande varietà di algoritmi di apprendimento, include una vasta gamma di strumenti di preprocessing. Questo toolkit diversificato e completo è accessibile attraverso un'interfaccia comune in modo che i suoi utenti possano confrontare metodi diversi e individuare quelli più appropriati per il problema in questione. <br /><br /> Weka è stato sviluppato presso l'Università di Waikato in Nuova Zelanda, e il nome sta per Waikato Environment for Knowledge Analysis. All'esterno dell'università la weka, pronunziata alla rima con la Mecca, è un uccello volatili con una natura curiosa che si trova solo sulle isole della Nuova Zelanda. Il sistema è scritto in Java e distribuito sotto i termini della GNU General Public License. Funziona su quasi tutte le piattaforme e è stato testato in sistemi operativi Linux, Windows e Macintosh e persino su un assistente digitale personale. Fornisce un'interfaccia uniforme per molti diversi algoritmi di apprendimento, insieme ai metodi per la pre- e postprocessing e per la valutazione del risultato di schemi di apprendimento su un dato set di dati.<br /> What’s in Weka?<br /><br /> Weka fornisce implementazioni di algoritmi di apprendimento che si possono applicare facilmente al tuo set di dati. Esso comprende inoltre una serie di strumenti per la trasformazione di set di dati, ad esempio gli algoritmi per la discretizzazione descritti nel Capitolo 7. È possibile preprocessare un set di dati, alimentarlo in un schema di apprendimento e analizzare il classificatore risultante e la sua prestazione - tutto senza scrivere alcun codice di programma affatto.<br /> Il banco di lavoro comprende metodi per tutti i problemi di minima data minima: la regressione, la classificazione, il clustering, l'associazione delle regole di associazione e la selezione degli attributi. Conoscere i dati è parte integrante del lavoro e sono disponibili molti strumenti di visualizzazione dei dati e strumenti di preprocessing dei dati. Tutti gli algoritmi prendono il loro ingresso sotto forma di una singola tabella relazionale nel formato ARFF descritto nella sezione 2.4, che può essere letto da un file o generato da una query di database.<br /><br /> Un modo per utilizzare Weka è quello di applicare un metodo di apprendimento a un set di dati e di analizzare la propria output per ulteriori informazioni sui dati. Un altro è utilizzare modelli appresi per generare previsioni su nuove istanze. Un terzo è quello di applicare diversi discenti differenti e di confrontare le loro prestazioni per scegliere uno per la previsione. I metodi di apprendimento sono chiamati classificatori e nell'interfaccia Weka interattiva è possibile selezionare quello desiderato da un menu. Molti classificatori hanno parametri sintonizzabili, che accedete tramite un editor delle proprietà o di un oggetto. Un modulo di valutazione comune viene utilizzato per misurare le prestazioni di tutti i classificatori.<br /> Le implementazioni dei programmi di apprendimento reali sono la risorsa più preziosa che Weka fornisce. Ma gli strumenti per la preprocessazione dei dati, denominati filtri, sono un secondo passo. Come i classificatori, seleziona i filtri da un menu e li adatta alle tue esigenze. Mostreremo come possono essere usati diversi filtri, elencare gli algoritmi di filtraggio e descrivere i loro parametri. Weka include anche implementazioni di algoritmi per regole di associazione di apprendimento, cluster di dati per i quali non è specificato alcun valore di classe e la selezione di attributi rilevanti nei dati, che descriviamo brevemente.<br /> Come lo usi? - How do you use it?<br /><br /> Il modo più semplice per utilizzare Weka è attraverso un'interfaccia grafica chiamata Explorer. Questo consente di accedere a tutte le sue strutture utilizzando la selezione dei menu e il riempimento di moduli. Ad esempio, è possibile leggere rapidamente in un set di dati da un file ARFF (o foglio di calcolo) e creare un albero di decisione da esso. Ma gli alberi decisionali di apprendimento sono solo l'inizio: ci sono molti altri algoritmi da esplorare. L'interfaccia Explorer ti aiuta a fare proprio questo. Esso vi guiderà presentando le scelte come menu, obbligandovi a lavorare in un ordine appropriato, utilizzando le opzioni finché non sono applicabili e presentando le opzioni come moduli da compilare. Suggerimenti utili sugli strumenti vengono visualizzati quando il mouse passa sopra gli elementi sullo schermo per spiegare ciò che fanno. Valori predefiniti sensibili assicurano che è possibile ottenere risultati con un minimo di sforzo, ma dovrai pensare a quello che stai facendo per capire quali sono i risultati.<br /><br /> Ci sono altre due interfacce utente grafiche a Weka. L'interfaccia Knowledge Flow consente di progettare configurazioni per l'elaborazione dati in streaming. Uno svantaggio fondamentale dell'Explorer è che tiene tutto nella memoria principale: quando si apre un set di dati, esso lo carica immediatamente. Ciò significa che può essere applicato solo a piccole e medie dimensioni. Tuttavia, Weka contiene alcuni algoritmi incrementali che possono essere utilizzati per elaborare set di dati molto grandi. L'interfaccia Knowledge Flow consente di trascinare le caselle che rappresentano algoritmi di apprendimento e fonti di dati attorno allo schermo e unirle insieme nella configurazione desiderata. Consente di specificare un flusso di dati collegando componenti che rappresentano fonti dati, strumenti di preprocessing, algoritmi di apprendimento, metodi di valutazione e moduli di visualizzazione. Se i filtri e gli algoritmi di apprendimento sono abilitati al apprendimento incrementale, i dati verranno caricati e elaborati in modo incrementale.<br /><br /> La terza interfaccia di Weka, il Experimenter, è progettata per aiutarti a rispondere a una domanda pratica fondamentale applicando tecniche di classificazione e regressione: quali metodi e valori dei parametri funzionano meglio per il problema specifico? Di solito non c'è modo di rispondere a priori a questa domanda, e un motivo per cui abbiamo sviluppato il banco di lavoro è stato quello di fornire un ambiente che consente agli utenti Weka di confrontare una varietà di tecniche di apprendimento. Ciò può essere fatto interattivamente utilizzando l'Explorer. Tuttavia, Experimenter consente di automatizzare il processo facendo semplificare l'esecuzione di classificatori e filtri con impostazioni di parametri differenti su un corpus di set di dati, raccogliere statistiche sulle prestazioni e eseguire test di significato. Gli utenti avanzati possono utilizzare il Experimenter per distribuire il carico di calcolo su più macchine utilizzando invocazione Java remoto di metodo (RMI). In questo modo è possibile impostare esperimenti statistici su larga scala e lasciarli eseguire.<br /><br /> Dietro queste interfacce interattive risiede la funzionalità di base di Weka. È possibile accedere in forma grezzo inserendo comandi testuali, che consente l'accesso a tutte le funzionalità del sistema. Quando si accende Weka, è necessario scegliere tra quattro diverse interfacce utente: l'Explorer, il Flusso di conoscenza, l'Experimenter e l'interfaccia della riga di comando. Le descriveremo a turno nei prossimi capitoli. La maggior parte delle persone sceglie l'Explorer, almeno all'inizio.<br /> Cosa altro posso fare? - What else can you do?<br /><br /> Una risorsa importante quando si lavora con Weka è la documentazione in linea, generata automaticamente dal codice sorgente e sinteticamente riflette la sua struttura. Spiegheremo come utilizzare questa documentazione e come identificare i principali elementi di base di Weka, evidenziando quali parti contengono metodi di apprendimento supervisionati che contengono strumenti per la preprocessing dei dati e che contengono metodi per altri schemi di apprendimento. Dà l'unico elenco completo di algoritmi disponibili perché Weka è in continua crescita e viene generato automaticamente dal codice sorgente - la documentazione in linea è sempre aggiornata. Inoltre, diventa essenziale se si desidera procedere al livello successivo e accedere alla libreria dai propri programmi Java o scrivere e testare i propri schemi di apprendimento.<br /><br /> Nella maggior parte delle applicazioni di data mining, il componente di apprendimento macchina è solo una piccola parte di un sistema software molto più grande. Se si intende scrivere un'applicazione di data mining, si desidera accedere ai programmi in Weka dall'interno del proprio codice. In questo modo, è possibile risolvere il sottoproblema di apprendimento macchina dell'applicazione con un minimo di programmazione aggiuntiva. Vi mostriamo come farlo presentando un esempio di un'applicazione semplice di data mining in Java. Ciò consente di familiarizzare con le strutture di base di dati in Weka, rappresentando istanze, classificatori e filtri.<br /> Se intendi diventare un esperto in algoritmi di apprendimento macchina (o, in verità, se sei già uno), probabilmente vuoi implementare i tuoi algoritmi senza dover affrontare tali dettagli fondamentali come la lettura dei dati da un file, implementando il filtraggio Algoritmi o fornire codice per valutare i risultati. Se è così, abbiamo buone notizie per te: Weka include già tutto questo. Per usufruire del tutto, è necessario conoscere le strutture di base di dati. Per aiutarti a raggiungere questo punto, descriveremo in modo più dettagliato queste strutture e spiegheremo un'implementazione illustrativa di un classificatore.<br /> Come lo fai? - How do you get it?<br /><br /> Weka è disponibile da http://www.cs.waikato.ac.nz/ml/weka. È possibile scaricare sia un programma di installazione specifico per la piattaforma che un file jar eseguibile Java eseguito nel modo più abituale se è installato Java. Ti consigliamo di scaricare e installarlo ora e seguire gli esempi nelle prossime sezioni.<br /> The Explorer<br /><br /> L'interfaccia grafica principale di Weka, l'Explorer, consente l'accesso a tutte le sue strutture utilizzando la selezione dei menu e il riempimento di moduli. Viene illustrato in Figura 10.1. Ci sono sei diversi pannelli, selezionati dalle schede in alto, corrispondenti alle varie attività di data mining che Weka supporta.<br /><br /> Getting started<br /> Supponi di avere dei dati e vuoi costruire un albero di decisione da esso. Innanzitutto, è necessario preparare i dati, quindi attivare Esplora risorse e caricare i dati. Successivamente seleziona un metodo di costruzione dell'albero di decisione, crea un albero e interpreta l'output. È facile farlo di nuovo con un diverso algoritmo di costruzione degli alberi o un diverso metodo di valutazione. Nell'Explorer puoi passare avanti e indietro tra i risultati ottenuti, valutare i modelli che sono stati costruiti su set di dati diversi e visualizzare graficamente sia i modelli che i set di dati, inclusi gli eventuali errori di classificazione che i modelli fanno.<br /> Preparing the data<br /><br /> I dati vengono spesso presentati in un foglio di calcolo o database. Tuttavia, il metodo di archiviazione dati nativa di Weka è il formato ARFF (sezione 2.4). È possibile convertire facilmente da un foglio di calcolo in ARFF. La maggior parte di un file ARFF consiste di un elenco delle istanze ei valori degli attributi per ogni istanza sono separati da virgole (Figura 2.2). La maggior parte dei programmi fogli di calcolo e dei database consente di esportare i dati in un file in formato con virgola separata (CSV) come un elenco di record con virgole tra gli elementi. Una volta fatto questo, è sufficiente caricare il file in un editor di testo o un elaboratore di testi; Aggiungere il nome del set di dati utilizzando il tag @relation, le informazioni sugli attributi utilizzando @attribute e una riga @data; E salvare il file come testo grezzo. Ad esempio, la Figura 10.2 mostra un foglio di calcolo di Excel contenente i dati meteo della sezione 1.2, i dati in formato CSV caricati in Microsoft Word e il risultato della conversione manualmente in un file ARFF. Tuttavia, in realtà non è necessario eseguire questi passaggi per creare il file ARFF, perché l'Explorer può leggere direttamente i file del foglio di calcolo CSV, come descritto più avanti.<br /> Loading the data into the Explorer<br /><br /> Carichiamo questi dati nell'Explorer e iniziamo ad analizzarlo. Spara Weka per ottenere il pannello mostrato nella Figura 10.3 (a). Seleziona Explorer dalle quattro scelte grafiche dell'interfaccia utente nella parte inferiore. (Gli altri sono stati menzionati in precedenza: il CLI semplice è l'interfaccia a riga di comando di vecchio stile).<br /> Quello che vedete dopo è la schermata Explorer principale, mostrata nella Figura 10.3 (b). In realtà, la figura mostra come apparirà dopo aver caricato i dati meteo. Le sei schede lungo la parte superiore sono le operazioni di base che l'Explorer supporta: ora siamo in Preprocesso. Fare clic sul pulsante Apri file per visualizzare una finestra di dialogo standard tramite cui è possibile selezionare un file. Scegli il file weather.arff. Se lo si dispone in formato CSV, passare da file di dati ARFF a file di dati CSV. Quando si specifica un file .csv viene automaticamente convertito in formato ARFF.<br /><br /> Dopo aver caricato il file, lo schermo sarà come mostrato nella Figura 10.3 (b). Questo ti dice sul set di dati: dispone di 14 istanze e cinque attributi (centro a sinistra); Gli attributi sono chiamati outlook, temperatura, umidità, ventosa e gioco (in basso a sinistra). Il primo attributo, outlook, viene selezionato per impostazione predefinita (è possibile scegliere altri facendo clic su di essi) e non dispone di valori mancanti, tre valori distinti e nessun valore univoco; I valori effettivi sono soleggiati, coperti e piovosi e si verificano rispettivamente cinque, quattro e cinque volte (a destra centrale). Un istogramma in basso a destra mostra quanto spesso ognuno dei due valori della classe gioca, si verifica per ogni valore dell'attributo di outlook. L'outlook attributo viene utilizzato perché appare nella casella sopra l'istogramma, ma è possibile disegnare un istogramma di qualsiasi altro attributo. Qui il gioco è selezionato come attributo di classe; Viene utilizzato per colorare l'istogramma e tutti i filtri che richiedono un valore di classe lo utilizzano.<br /><br /> L'attributo di outlook in Figura 10.3 (b) è nominale. Se si seleziona un attributo numerico, vengono visualizzati i valori minimi e massimi, la media e la deviazione standard. In questo caso l'istogramma mostrerà la distribuzione della classe come funzione di questo attributo (un esempio viene visualizzato in Figura 10.9 a pagina 384).<br /> È possibile eliminare un attributo facendo clic sulla relativa casella di controllo e utilizzando il pulsante Rimuovi. Tutti seleziona tutti gli attributi, Nessuno seleziona nessuno e Inverti inverte la selezione corrente. Puoi annullare una modifica facendo clic sul pulsante Annulla. Il pulsante Modifica visualizza un editor che consente di ispezionare i dati, cercare determinati valori e modificarli ed eliminare istanze e attributi. Facendo clic con il pulsante destro sui valori e sulle intestazioni di colonna, vengono visualizzati i menu contestuali corrispondenti.<br /> Building a decision tree<br /><br /> Per vedere che cosa lo studente di albero di decisione C4.5 descritto nella sezione 6.1 fa con questo set di dati, utilizza l'algoritmo J4.8, che è l'implementazione di Weka di questo utente di albero decisionale. (J4.8 effettua effettivamente una versione successiva e leggermente migliorata denominata C4.5 revision 8, che era l'ultima versione pubblica di questa famiglia di algoritmi prima dell'uscita della versione commerciale C5.0). Fare clic sulla scheda Classifica per ottenere uno schermo che Sembra Figura 10.4 (b). In realtà, la figura mostra che cosa apparirà dopo aver analizzato i dati meteo.<br /> Seleziona prima il classificatore facendo clic sul pulsante Scegli in alto a sinistra, aprendo la sezione alberi del menu gerarchico in Figura 10.4 (a) e trovando J48. La struttura del menu rappresenta l'organizzazione del codice Weka in moduli, che saranno descritti nel capitolo 13. Per ora, apri semplicemente la gerarchia come necessario: gli elementi da selezionare sono sempre al livello più basso. Una volta selezionato, J48 viene visualizzato nella riga accanto al pulsante Scegli come mostrato in Figura 10.4 (b), insieme ai valori dei parametri predefiniti. Se si sceglie tale riga, l'editor di oggetti del classificatore J4.8 si apre e si può vedere quali parametri significano e modificare i loro valori se lo si desidera. L'Explorer sceglie generalmente i valori predefiniti sensibili.<br /><br />Dopo aver scelto il classificatore, invocarlo facendo clic sul pulsante Start. Weka lavora per un breve periodo - quando sta lavorando, l'uccellino in basso a destra della figura 10.4 (b) salta e balla - e produce quindi l'uscita mostrata nel pannello principale di Figura 10.4 (b).<br /> Examining the output<br /><br /> La Figura 10.5 mostra l'output completo (Figura 10.4 (b) fornisce solo la metà inferiore). All'inizio è un riepilogo del set di dati e il fatto che è stata utilizzata una convalida incrociata dieci volte per valutarla. Questo è l'impostazione predefinita e se si guarda attentamente alla figura 10.4 (b) vedrai che la casella di convalida incrociata a sinistra è selezionata. Poi viene un albero di decisione pruned in forma testuale. La prima divisione è sull'attributo di outlook e quindi, al secondo livello, le suddivisioni sono rispettivamente sull'umidità e sul vento. Nella struttura ad albero, un colon introduce l'etichetta di classe assegnata a una particolare foglia, seguita dal numero di istanze che raggiungono quella foglia, espresse come numero decimale, a causa del modo in cui l'algoritmo utilizza istanze frazionarie per gestire i valori mancanti. Se c'erano istanze erroneamente classificate (non ci sono in questo esempio) il loro numero apparirà anche: così 2.0 / 1.0 significa che due istanze hanno raggiunto quella foglia, di cui uno è classificato in modo errato. Sotto la struttura ad albero viene stampato il numero di foglie; Quindi il numero totale di nodi (dimensione dell'albero). C'è un modo per visualizzare più graficamente gli alberi decisionali: vedere pagine 378-379 più avanti in questo capitolo.<br /><br /> La parte successiva dell'output fornisce stime della prestazione predittiva dell'albero. In questo caso vengono ottenuti con una convalida incrociata stratificata con 10 pieghe, il valore predefinito in Figura 10.4 (b). Come si può vedere, più del 30% delle istanze (5 su 14) sono state classificate in modo errato nella convalida incrociata. Ciò indica che i risultati ottenuti dai dati di addestramento sono ottimisti rispetto a quanto potrebbe essere ottenuto da un test indipendente proveniente dalla stessa sorgente. Dalla matrice di confusione alla fine (descritta nella sezione 5.7) osservare che 2 istanze di classe sì sono state assegnate alla classe no e 3 della classe no sono assegnate alla classe sì.<br /> Oltre all'errore di classificazione, il modulo di valutazione esegue anche la statistica di Kappa (Sezione 5.7), l'errore assoluto medio e l'errore medio-quadrato di root delle stime della probabilità di classe assegnate dall'albero. L'errore medio quadrato di root è la radice quadrata della perdita quadratica media (sezione 5.6). L'errore assoluto medio viene calcolato in modo simile utilizzando l'assoluto invece della differenza quadrata. Esso inoltre emette errori relativi, che si basano sulle probabilità precedenti (cioè quelle ottenute dallo schema di apprendimento ZeroR descritto più avanti). Infine, per ogni classe viene anche in uscita alcune statistiche da pagina 172.<br /> Fallo ancora - Doing it again<br /><br /> Puoi facilmente eseguire nuovamente J4.8 con un metodo di valutazione diverso. Selezionare Utilizza set di formazione (vicino alla parte superiore sinistra della Figura 10.4 (b)) e fare nuovamente clic su Avvia. L'uscita del classificatore viene sostituita rapidamente per mostrare quanto il modello derivato esegue sul set di formazione, anziché mostrare i risultati delle convalida incrociate. Questa valutazione è altamente ottimista (Sezione 5.1). Può comunque essere utile, perché rappresenta generalmente un limite superiore alla performance del modello su dati freschi. In questo caso, tutte le 14 istanze di formazione sono classificate correttamente. In alcuni casi un classificatore può decidere di lasciare alcuni casi non classificati, nel qual caso questi saranno elencati come istanze non classificate. Questo non avviene per la maggior parte dei sistemi di apprendimento in Weka.<br /> Il pannello di Figura 10.4 (b) presenta ulteriori opzioni di test: il set di test fornito, in cui si specifica un file separato contenente il set di test e la suddivisione in percentuale con la quale è possibile tenere una determinata percentuale dei dati da testare. Puoi pubblicare le previsioni per ogni istanza facendo clic sul pulsante Ulteriori opzioni e controllando la voce appropriata. Ci sono altre opzioni utili, come la soppressione di alcuni risultati e le altre statistiche, come le misure di valutazione dell'entropia e la valutazione dei costi. Per quest'ultima è necessario immettere una matrice di costi: digitare il numero di classi nella casella Classi (e terminare con il tasto Invio o Indietro) per ottenere una matrice di costo predefinita (Sezione 5.7), quindi modificare i valori come richiesto.<br /> Il piccolo riquadro in basso a sinistra della figura 10.4 (b), che contiene una riga evidenziata, è un elenco di cronologia dei risultati. L'Explorer aggiunge una nuova riga ogni volta che si esegue un classificatore. Poiché è ora eseguito due volte il classificatore, l'elenco contiene due elementi. Per tornare a un set di risultati precedente, fare clic sulla riga corrispondente e l'output di tale esecuzione apparirà nel riquadro di output del classificatore. Ciò consente di esplorare diversi classificatori o schemi di valutazione e rivisitare i risultati per confrontarli.<br /> Working with models<br /><br /> L'elenco di cronologia dei risultati è il punto di accesso a alcune potenti funzionalità dell'Explorer. Quando si fa clic con il pulsante destro del mouse su una voce, viene visualizzato un menu che consente di visualizzare i risultati in una finestra separata oppure salvare il buffer di risultati. Ancora più importante, è possibile salvare il modello che Weka ha generato sotto forma di un file di oggetto Java. È possibile ricaricare un modello che è stato salvato in precedenza, che genera una nuova voce nell'elenco dei risultati. Se si fornisce ora un set di test, è possibile rivalutare il vecchio modello di quel nuovo set.<br /> Diversi elementi nel menu di scelta rapida consentono di visualizzare i risultati in vari modi. Nella parte superiore dell'interfaccia Esplora è una scheda Visualizzazione separata, ma è diversa: mostra il set di dati, non i risultati di un determinato modello. Facendo clic con il pulsante destro del mouse su una voce nell'elenco di cronologia, è possibile visualizzare gli errori del classificatore. Se il modello è un albero o una rete Bayesiana puoi vedere la sua struttura. È inoltre possibile visualizzare la curva di margine (pagina 324) e varie curve di costo e di soglia (sezione 5.7). Per le curve di costo e di soglia è necessario scegliere un valore di classe da un sottomenu. La voce di menu della curva di soglia di visualizzazione consente di visualizzare l'effetto di variare la soglia di probabilità sopra la quale viene assegnata un'istanza a quella classe. È possibile scegliere tra un'ampia varietà di curve che includono le curve di ROC e di richiamo di precisione (tabella 5.7). Per vedere questi, scegliere gli assi X e Y in modo appropriato dai menu forniti. Ad esempio, impostato su false tasso X positivo e Y per tasso positivo True per una curva ROC di richiamare o X e Y per precisione per una curva di richiamo precisione.<br /><br /> La Figura 10.6 mostra due modi per esaminare il risultato dell'utilizzo di J4.8 per classificare il set di dati Iris (Sezione 1.2). Utilizziamo questo, piuttosto che i dati meteo, perché produce immagini più interessanti. La figura 10.6 (a) mostra l'albero. Fare clic con il pulsante destro del mouse su uno spazio vuoto in questa finestra per visualizzare un menu che consente di scalare automaticamente la visualizzazione o di forzare l'albero nella finestra. Trascinate il mouse per spostarsi nello spazio. È inoltre possibile visualizzare i dati di istanza in qualsiasi nodo, se è stato salvato dall'algoritmo di apprendimento.<br /> La Figura 10.6 (b) mostra gli errori del classificatore su una trama bidimensionale. È possibile scegliere quali attributi da utilizzare per X e Y utilizzando le caselle di selezione in alto. In alternativa, fare clic su una delle righe orizzontali punteggiate a destra della trama: fare clic con il pulsante sinistro per X e fare clic con il pulsante destro del mouse per Y. Ogni striscia mostra la diffusione di istanze lungo tale attributo. X e Y si visualizzano accanto a quelli scelti per gli assi.I punti dati sono colorati secondo la loro classe: blu, rosso e verde per Iris setosa, Iris versicolor e Iris virginica, rispettivamente (c'è una chiave nella parte inferiore dello schermo). Istanze classificate correttamente sono mostrate come croci; Quelli classificati in modo errato appaiono come scatole (di cui tre sono riportate nella Figura 10.6 (b)). È possibile fare clic su un'istanza per visualizzare dettagli pertinenti: il numero di istanza, i valori degli attributi, la classe e la classe prevista.<br /> Quando le cose vanno male - When things go wrong<br /><br /> Sotto l'elenco della cronologia dei risultati, in fondo alla figura 10.4 (b), è una riga di stato che dice semplicemente OK. Occasionalmente, questo cambia in Visualizza log di errori, un'indicazione che qualcosa è andato storto. Ad esempio, possono esistere vincoli tra le varie selezioni differenti che puoi fare in un pannello. Per la maggior parte dell'intervallo, l'interfaccia rileva selezioni inadeguate e rifiuta di farti scegliere. Ma a volte le interazioni sono più complesse e si può finire per selezionare una serie incompatibile di opzioni. In questo caso, la linea di stato cambia quando Weka scopre l'incompatibilità, in genere quando si preme Start. Per visualizzare l'errore, fai clic sul pulsante Registra a sinistra della weka nell'angolo inferiore destro dell'interfaccia.<br /><br /><br /> Figure 10.6 Visualizing the result of J4.8 on the iris dataset: (a) the tree and (b) the classifier errors.<br /> Exploring the Explorer<br /><br /> Abbiamo analizzato brevemente due delle sei schede nella parte superiore della finestra Esplora in Figura 10.3 (b) e Figura 10.4 (b). In sintesi, ecco cosa fanno tutte le schede:<br />1. Preprocesso: scegliere il set di dati e modificarlo in diversi modi.<br />2. Classificare: programmi di apprendimento del treno che eseguono la classificazione o la regressione e li valutano.<br />3. Cluster: impara cluster per il set di dati.<br />4. Associate: Imparare le regole di associazione per i dati e valutarle.<br />5. Selezionare gli attributi: selezionare gli aspetti più rilevanti nel set di dati.<br />6. Visualizzare: visualizzare le diverse piattaforme bidimensionali dei dati e interagire con loro.<br /><br /><br /> Ogni scheda offre l'accesso a una vasta gamma di strutture. Nel nostro tour finora, abbiamo appena graffiato la superficie dei pannelli Preprocess e Classify. Nella parte inferiore di ogni pannello è una casella di stato e un pulsante Registro. La casella di stato visualizza i messaggi che ti informano su cosa sta succedendo. Ad esempio, se l'Explorer è occupato a caricare un file, la casella di stato lo dirà. Facendo clic con il pulsante destro del mouse ovunque all'interno di questa casella viene visualizzato un piccolo menu con due opzioni: visualizzare la quantità di memoria disponibile per Weka e eseguire il collettore di rifiuti Java. Tieni presente che il collettore di rifiuti funziona costantemente come un compito di sfondo comunque.<br /> Facendo clic sul pulsante Registro apre un registro testuale delle azioni che Weka ha eseguito in questa sessione, con timestamp. Come indicato in precedenza, l'uccellino in basso a destra della finestra salta e balla quando Weka è attivo. Il numero accanto al ¥ indica quanti processi concorrenti sono in esecuzione. Se l'uccello sta in piedi ma smette di muoversi, è malato! Qualcosa è andato storto e si dovrebbe riavviare l'Explorer.<br /> Caricamento e filtraggio di file<br /><br />Al di là della parte superiore del pannello Preprocess in Figura 10.3 (b) sono i pulsanti per l'apertura di file, URL e database. Inizialmente, solo i file i cui nomi finiscono in .arff appaiono nel browser di file; Per vedere altri, modificare l'elemento Formato nella casella di selezione dei file.<br /> Conversione di file in ARFF<br /><br />Weka dispone di tre convertitori di file: per i file di foglio di calcolo con l'estensione .csv, per il formato di file nativo C4.5 con le estensioni .names e .data e per le istanze serializzate con l'estensione .bsi. Il convertitore appropriato viene utilizzato in base all'estensione. Se Weka non può caricare i dati, tenta di interpretarlo come ARFF. Se ciò non riesce, si apre la casella mostrata nella Figura 10.7 (a).<br /><br /> <br /><br /> Figure 10.7 Generic object editor<br /><br /><br /> Si tratta di un editor di oggetti generici, utilizzato in Weka per la selezione e la configurazione di oggetti. Ad esempio, quando si impostano parametri per un classificatore, si utilizza lo stesso tipo di casella. Il file CSVLoader per i file .csv è selezionato per impostazione predefinita e il pulsante Altro fornisce ulteriori informazioni, illustrate nella Figura 10.7 (b). Vale sempre la pena di guardare la documentazione! In questo caso, spiega che la prima riga del foglio di calcolo determina i nomi degli attributi. Fare clic su OK per utilizzare questo convertitore. Per un altro, fai clic su Scegli per selezionare dall'elenco di Figura 10.7 (c).<br /> L'ArffLoader è la prima opzione e abbiamo raggiunto questo punto solo perché non è riuscito. Il CSVLoader è l'impostazione predefinita e abbiamo scelto Scegli perchè vogliamo un altro. La terza opzione è per il formato C4.5, in cui ci sono due file per un set di dati, uno che fornisce nomi di campo e l'altro fornisce i dati reali. La quarta, per le istanze serializzate, è quella di ricaricare un set di dati che è stato salvato come oggetto serializzato Java. Tutto l'oggetto Java può essere salvato in questo modulo e ricaricato. Come formato Java nativo, è più veloce da caricare di un file ARFF, che deve essere analizzato e controllato. Quando ripetutamente ricaricando un grande set di dati, potrebbe essere utile risparmiare tale forma.<br /><br /> Ulteriori funzionalità dell'editor oggetti generico in Figura 10.7 (a) sono Salva, che salva un oggetto configurato e Apri, che apre un file salvato in precedenza. Questi non sono utili per questo particolare tipo di oggetto. Ma altri pannelli generici dell'editor di oggetti hanno molte proprietà modificabili, e dopo aver risolto alcuni problemi per impostarli, è possibile salvare l'oggetto configurato per riutilizzarlo in un secondo momento. I file sul tuo computer non sono l'unica fonte di set di dati per Weka. È possibile aprire un URL e Weka utilizzerà il protocollo di trasferimento ipertestuale (HTTP) per scaricare un file ARFF dal Web. Oppure è possibile aprire un database (DB aperto) - qualsiasi database con un driver Java connettività (JDBC) - e recuperare le istanze utilizzando l'istruzione SQL Select. Questo restituisce una relazione che Weka legge come un file ARFF. Per fare questo lavoro con il tuo database, potrebbe essere necessario modificare il file weka / experiment / DatabaseUtils.props nella distribuzione Weka aggiungendo il proprio driver di database. (Per accedere a questo file, espandere il file weka.jar nella distribuzione Weka.) I dati possono essere salvati in tutti questi formati utilizzando il pulsante Salva nella Figura 10.3 (b). Oltre a caricare e salvare i set di dati, il pannello Preprocess consente anche di filtrarli. I filtri sono una componente importante di Weka.<br /> Using filters<br /><br /> Facendo clic su Scegli (vicino alla parte superiore sinistra) nella Figura 10.3 (b) viene fornito un elenco di filtri come quello riportato nella Figura 10.8 (a). In realtà, hai una versione collassata: fai clic su una freccia per aprire il contenuto. Descriveremo come utilizzare un semplice filtro per eliminare gli attributi specificati da un set di dati, ovvero per eseguire la selezione degli attributi manuali. Lo stesso effetto può essere ottenuto più facilmente selezionando i relativi attributi utilizzando le caselle di spunta e premendo il pulsante Rimuovi. Tuttavia, come esempio, descriviamo esplicitamente l'operazione di filtraggio equivalente.<br /><br /> 'Remove' è un filtro di attributo non supervisionato e per vederlo devi scorrere ulteriormente nell'elenco. Quando è selezionato, appare nella riga accanto al pulsante Scegli, insieme ai valori dei parametri, in questo caso la riga legge semplicemente "Rimuovi". Clicca su quella riga per visualizzare un generico oggetto editor con cui è possibile esaminare e modificare le proprietà del filtro . (È stata eseguita la stessa cosa in precedenza facendo clic sulla riga J48 in Figura 10.4 (b) per aprire l'editor di oggetti del classificatore J4.8.) L'editor di oggetti per il filtro Rimuove è mostrato nella Figura 10.8 (b). Per saperne di più, fare clic su Altro per visualizzare le informazioni in Figura 10.8 (c). Ciò spiega che il filtro elimina una serie di attributi dal set di dati. Ha un'opzione, attributeIndices, che specifica l'intervallo da agire e un altro chiamato invertSelection che determina se il filtro seleziona gli attributi o li elimina. Ci sono scatole per entrambi nell'editor di oggetto mostrato nella Figura 10.8 (b) e infatti li abbiamo già impostati a 1,2 (per influenzare gli attributi 1 e 2, ovvero la prospettiva e la temperatura) e False (per rimuovere Piuttosto che trattenermi). Fare clic su OK per impostare queste proprietà e chiudere la casella. Si noti che la riga accanto al pulsante Scegli ora legge Remove -R 1,2. Nella versione della riga di comando del filtro Rimuovi, l'opzione -R viene utilizzata per specificare gli attributi da rimuovere. Dopo aver configurato un oggetto, è spesso degno di dare un'occhiata alla formulazione della riga di comando risultante che l'Explorer imposta.<br /><br /> Applicare il filtro facendo clic su Applica (sul lato destro della Figura 10.3 (b)). Appena appare lo schermo della Figura 10.9, come quello della Figura 10.3 (b) ma con solo tre attributi, umidità, ventosa e riproduzione. A questo punto viene attivato il quarto pulsante della riga vicino alla parte superiore. Undo inverte l'operazione di filtraggio e ripristina il set di dati originale, utile quando si sperimentano diversi filtri.<br /> Viene selezionato il primo attributo, l'umidità, e una sintesi dei suoi valori appare sulla destra. Come attributo numerico vengono visualizzati i valori minimi e massimi, la media e la deviazione standard. Di seguito è riportato un istogramma che mostra la distribuzione dell'attributo play. Purtroppo, questo display è impoverito perché l'attributo ha pochissimi valori diversi che cadono in due contenitori di dimensioni uguali. I set di dati più realistici producono istogrammi più informativi.<br /><br /><br />Figure 10.9 The weather data with two attributes removed.<br /> Training and testing learning schemes<br /><br />Il pannello Classify consente di formare e testare schemi di apprendimento che eseguono la classificazione o la regressione. La sezione 10.1 ha spiegato come interpretare l'output di un utente di un albero di decisione e ha mostrato le figure di prestazioni generate automaticamente dal modulo di valutazione. L'interpretazione di questi è la stessa per tutti i modelli che prevedono una classe categorica. Tuttavia, quando valuta i modelli per la previsione numerica, Weka produce un diverso set di misure di prestazioni.<br /> Ad esempio, in Figura 10.10 (a) il set di dati della performance della CPU da Tabella 1.5 (pagina 16) è stato caricato in Weka. È possibile visualizzare l'istogramma dei valori del primo attributo, venditore, in basso a destra. Nella figura 10.10 (b) l'agente di modello M5 ¢ è stato scelto come classificatore passando al riquadro Classify, facendo clic sul pulsante Scegli in alto a sinistra, aprendo la sezione alberi del menu gerarchico mostrato nella figura 10.4 (a) , Trovando M5P e facendo clic su Avvia. La gerarchia consente di individuare classificatori particolari raggruppando elementi con funzionalità comuni.<br /><br /> La Figura 10.11 mostra l'output. L'albero del modello di potatura è semplicemente un pezzo di decisione con una divisione dell'attributo MMAX e due modelli lineari, uno per ciascuna foglia. Entrambi i modelli coinvolgono un attributo nominale, un fornitore, così come alcuni numerici. L'espressione fornitore = consulente, sperry, amdahl è interpretato come segue: se il venditore è consulente, spero o amdahl, quindi sostituisce 1; Altrimenti, sostituire 0. La descrizione dell'albero del modello è seguita da diverse figure che misurano la sua performance. Questi sono derivati dall'opzione di prova scelta in Figura 10.10 (b), convalida incrociata a 10 volte (non stratificata, perché ciò non ha senso per la previsione numerica). La sezione 5.8 (Tabella 5.8) spiega il significato delle varie misure.<br /> La regressione lineare ordinaria (sezione 4.6), un altro schema per la previsione numerica, si trova nella LinearRegression nella sezione delle funzioni del menu in Figura 10.4 (a). Costruisce un unico modello di regressione lineare piuttosto che i due in Figura 10.11; Non sorprende che la sua performance è leggermente peggiore.<br /> Per ottenere una sensazione per la loro performance relativa, visualizziamo gli errori che questi schemi fanno, come abbiamo fatto per il dataset di Iris in Figura 10.6 (b). Fare clic con il pulsante destro della voce nell'elenco di cronologia e selezionare Visualizzare gli errori del classificatore per visualizzare la trama bidimensionale dei dati nella Figura 10.12. I punti sono codificati in colore dalla classe - ma in questo caso il colore varia continuamente perché la classe è numerica. Nella Figura 10.12 è stato selezionato l'attributo Vendor per l'asse X e il numero dell'istanza è stato scelto per l'asse Y, in quanto ciò consente una buona diffusione dei punti. Ogni punto dati è contrassegnato da una croce la cui dimensione indica il valore assoluto dell'errore per tale istanza. Le più piccole croci in Figura 10.12 (a) (per M5 ¢), rispetto a quelle della Figura 10.12 (b) (per la regressione lineare), mostrano che M5 ¢ è superiore.<br /><br /><br /> Figure 10.12 Visualizing the errors:<br /> Do it yourself: The User Classifier<br /><br /> Il classificatore utente (menzionato alla fine della sezione 3.2) consente agli utenti di Weka di costruire interattivamente i propri classificatori. Esso risiede nella sezione alberi del menu gerarchico di Figura 10.4 (a) in UserClassifier. Illustriamo il suo funzionamento su un nuovo problema, segmentando i dati visivi di immagine in classi come l'erba, il cielo, il fogliame, il mattone e il cemento in base a attributi che forniscono intensità, tonalità, dimensione, posizione e varie semplici caratteristiche strutturali. Il file di formazione è fornito con la distribuzione di Weka e denominato "segment-challenge.arff". Dopo averlo caricato, seleziona il classificatore utente. Per la valutazione utilizzare il set di test speciale chiamato segmenttest.arff come il test fornito impostato nel pannello Classify. La valutazione mediante la convalida incrociata è impossibile quando si deve costruire manualmente un classificatore per ogni piega.<br /><br /> Dopo l'avvio, appare una nuova finestra e Weka ti aspetta di costruire il classificatore. Le schede Tree Visualizer e Data Visualizer passano da una vista diversa. Il primo mostra lo stato corrente dell'albero di classificazione e ogni nodo fornisce il numero di istanze di ogni classe in quel nodo. Lo scopo è quello di trovare un albero in cui i nodi delle foglie siano il più puro possibile. Inizialmente c'è solo un nodo, la radice, che contiene tutti i dati. Passare al Data Visualizer per creare una divisione. Ciò mostra la stessa trama bidimensionale che abbiamo visto in Figura 10.6 (b) per il dataset Iris e la Figura 10.12 per i dati sulle prestazioni della CPU. Gli attributi da utilizzare per X e Y sono selezionati come prima, e l'obiettivo qui è quello di trovare una combinazione che separa le classi il più possibile pulite. La Figura 10.13 (a) mostra una buona scelta: 'region-centroid-row' per X e intensità media per Y.<br /> Dopo aver trovato una buona separazione, è necessario specificare una regione nel grafico. Quattro strumenti per questo vengono visualizzati nel menu a discesa sotto il selettore dell'asse Y. Seleziona istanza identifica un'istanza particolare. Il rettangolo (mostrato nella Figura 10.13 (a)) consente di trascinare un rettangolo sul grafico. Con Polygon e Polyline è possibile creare un poligono a forma libera oppure disegnare una polilinea a forma libera (fare clic con il pulsante sinistro per aggiungere un vertice e fare clic con il pulsante destro del mouse per completare l'operazione). Una volta selezionata un'area, diventa grigio. Nella Figura 10.13 (a) l'utente ha definito un rettangolo. Il pulsante Invio crea due nuovi nodi nell'albero, uno che tiene le istanze selezionate e l'altra con tutto il resto. Cancella Cancella la selezione; Salva salva le istanze nel nodo dell'albero corrente come un file ARFF. A questo punto, l'albero visualizzatore mostra l'albero in Figura 10.13 (b). C'è un nodo puro per la classe cielo, ma l'altro nodo è misto e deve essere suddiviso ulteriormente. Fare clic su diversi nodi determina quale sottoinsieme di dati viene visualizzato dal Visualizzatore dati. Continuare ad aggiungere i nodi finché non si è soddisfatti del risultato, cioè fino a quando i nodi fogliari sono per lo più pura. Quindi fare clic con il pulsante destro del mouse su uno spazio vuoto nel Visualizzatore albero e scegliere Accetta l'albero. Weka valuta il tuo albero sul set di test e fornisce le statistiche sulle prestazioni (l'80% è un buon risultato su questo problema).<br /><br /> Costruire alberi manualmente è molto noioso. Ma Weka può completare l'attività per te creando un sottostrutto sotto qualsiasi nodo: basta fare clic con il pulsante destro del mouse sul nodo.<br /> Using a metalearner<br /><br /> Figure 10.13 Working on the segmentation data with the User Classifier:<br /><br /> Metalearners (Sezione 7.5) prendono classifici semplici e li trasformano in discenti più potenti. Ad esempio, per aumentare le decisioni di decisione nell'Explorer, vai al pannello Classify e scegli il classificatore AdaboostM1 dalla sezione meta del menu gerarchico. Quando si configura questo classificatore facendo clic su di esso, viene visualizzato l'editor di oggetti mostrato in Figura 10.14. Questo ha un proprio campo di classificatore, che abbiamo impostato su DecisionStump (come mostrato). Questo metodo potrebbe essere configurato facendo clic (ad eccezione di che DecisionStump accade di non avere proprietà modificabili). Fai clic su OK per tornare al pannello Classify principale e inizia a provare ad aumentare i ceppi di decisione fino a 10 volte. Si scopre che questo mislabele solo 7 delle 150 istanze nell'insieme dei dati Iris, con una buona performance considerando la natura rudimentale dei ceppi di decisione e il numero piuttosto ridotto di iterazioni.<br /> Clustering and association rules<br /><br /> Utilizzare i pannelli Cluster e Associate per richiamare gli algoritmi di cluster (sezione 6.6) ei metodi per trovare le regole di associazione (Sezione 4.5). Quando raggruppa, Weka mostra il numero di cluster e quante istanze contiene ciascun cluster. Per alcuni algoritmi è possibile specificare il numero di cluster impostando un parametro nell'editor di oggetto. Per i metodi di clustering probabilistici, Weka misura la probabilità di log dei cluster sui dati di addestramento: maggiore è la quantità, più meglio il modello è adatto ai dati. L'aumento del numero di cluster aumenta normalmente la probabilità, ma può sovrascrivere.<br /> I comandi del pannello Cluster sono simili a quelli di Classify. È possibile specificare alcuni degli stessi metodi di valutazione - utilizzare il set di formazione, il set di test fornito e la percentuale di suddivisione (gli ultimi due vengono utilizzati con la probabilità di log). Un ulteriore metodo, classi per la valutazione dei cluster, confronta quanto i cluster scelti corrispondano a una classe preassegnata nei dati. Si seleziona un attributo (che deve essere nominale) che rappresenta la classe "vera". Dopo aver raggruppato i dati, Weka determina la classe di maggioranza in ciascun cluster e stampa una matrice di confusione mostrando quanti errori ci saranno se i cluster sono stati utilizzati anziché la classe vera. Se il tuo set di dati dispone di un attributo di classe, puoi ignorarlo durante il clustering selezionandolo da un elenco a discesa degli attributi e vedere come i cluster corrispondono ai valori di classe effettivi. Infine, puoi scegliere se memorizzare i cluster per la visualizzazione. L'unico motivo per non farlo è conservare lo spazio. Come con i classificatori, visualizzerai i risultati facendo clic con il pulsante destro del mouse sull'elenco dei risultati, che consente di visualizzare i diagrammi bidimensionali di dispersione come quello di Figura 10.6 (b). Se hai scelto classi per la valutazione dei cluster, vengono visualizzati gli errori di assegnazione della classe. Per lo schema di clustering di Cobweb, puoi ancheVisualizzare l'albero.<br /><br /> Il pannello Associate è più semplice di Classify o Cluster. Weka contiene solo tre algoritmi per determinare le regole di associazione e nessun metodo per valutare tali regole. La Figura 10.15 mostra l'uscita del programma Apriori per le regole di associazione (descritte nella sezione 4.5) sulla versione nominale dei dati meteorologici. Nonostante la semplicità dei dati, si trovano diverse regole. Il numero prima della freccia è il numero di istanze per le quali l'antecedente è vero; Che dopo la freccia sia il numero di istanze in cui anche il conseguente è vero; E la fiducia (in parentesi) è il rapporto tra i due. Per impostazione predefinita si possono trovare dieci regole: è possibile chiedere di più utilizzando l'editor di oggetti per modificare numRules.<br /> Attribute selection<br /><br /> Il pannello Select attributes consente di accedere a diversi metodi per la selezione degli attributi. Come spiegato nella sezione 7.1, ciò comporta un valutatore di attributo e un metodo di ricerca. Entrambe vengono scelte nel modo consueto e configurate con l'editor di oggetti. È inoltre necessario decidere quale attributo utilizzare come classe. La selezione degli attributi può essere eseguita utilizzando il set completo di formazione o utilizzando la convalida incrociata. In quest'ultimo caso viene fatto separatamente per ogni piega e l'output mostra quante volte - cioè in quante delle pieghe - ciascun attributo è stato selezionato. I risultati vengono memorizzati nell'elenco di cronologia. Quando si fa clic con il pulsante destro del mouse su una voce, è possibile visualizzare il set di dati in termini di attributi selezionati (scegliere Visualizzare dati ridotti).<br /> Visualization <br /><br /> Il pannello Visualizza consente di visualizzare un set di dati, non il risultato di un modello di classificazione o di clustering, ma il set di dati stesso. Essa mostra una matrice di disegni bidimensionali di dispersione di ogni coppia di attributi. La Figura 10.16 (a) mostra il set di dati dell'iride. È possibile selezionare un attributo - normalmente la classe - per colorare i punti dati utilizzando i comandi in basso. Se è nominale, la colorazione è discreta; Se è numerico, lo spettro di colore varia continuamente dal blu (valori bassi) all'arancia (valori elevati). I punti dati senza valore di classe sono mostrati in nero. È possibile modificare le dimensioni di ciascuna trama, la dimensione dei punti e la quantità di jitter, che è uno spostamento casuale applicato ai valori X e Y per separare i punti che si trovano in cima all'altro. Senza jitter, 1000 istanze allo stesso punto dati sarebbero uguali a 1 istanza. È possibile ridurre la dimensione della matrice di appezzamenti selezionando determinati attributi e potete sottomettere i dati per l'efficienza. Le modifiche dei controlli non hanno effetto finché non viene fatto clic sul pulsante Aggiorna.<br /><br /> Clicca su uno dei diagrammi della matrice per ingrandirlo. Ad esempio, cliccando sulla parte superiore della traccia sinistra viene visualizzato il pannello in Figura 10.16 (b). È possibile ingrandire l'area di questo pannello scegliendo Rettangolo dal menu in alto a destra e trascinando un rettangolo nell'area di visualizzazione visualizzata. Il pulsante Invia in alto a sinistra riduce il rettangolo nell'area di visualizzazione.<br /> Filtering algorithms<br /><br /> Ora prendiamo uno sguardo dettagliato sugli algoritmi di filtraggio implementati all'interno di Weka. Questi sono accessibili dall'Explorer e anche dalle interfacce Knowledge Flow e Experimenter descritte nei capitoli 11 e 12. Tutti i filtri trasformano in modo inadatto il set di dati di input. Quando viene selezionato un filtro usando il pulsante Scegli, il suo nome viene visualizzato nella riga accanto a quel pulsante. Fare clic su quella riga per ottenere un generico oggetto editor per specificare le proprie proprietà. Quella che appare nella riga è la versione della riga di comando del filtro e i parametri sono specificati con segni meno. Questo è un buon modo per imparare a utilizzare direttamente i comandi di Weka.<br /> Ci sono due tipi di filtri: non sorvegliati e supervisionati (Sezione 7.2). Questa distinzione apparentemente innocua maschera una questione piuttosto fondamentale. I filtri vengono spesso applicati a un set di dati di formazione e poi applicati al file di prova. Se il filtro è sorvegliato, ad esempio, se utilizza valori di classe per ottenere buoni intervalli per la discretizzazione, applicandolo ai dati di prova bias i risultati. Sono gli intervalli di discretizzazione derivanti dai dati di addestramento che devono essere applicati ai dati di prova. Quando si utilizzano filtri sorvegliati, è necessario fare attenzione affinché i risultati siano valutati in modo equo, un problema che non si verifica con i filtri non supervisionati.<br /> Trattiamo separatamente i metodi di filtraggio senza supervisione e supervisione di Weka. All'interno di ciascun tipo c'è un'ulteriore distinzione tra i filtri degli attributi, che funzionano sugli attributi nei set di dati e nei filtri di istanza, che funzionano sulle istanze. Per ulteriori informazioni su un particolare filtro, selezionarla nell'Explorer di Weka e guardare il relativo editor di oggetto associato, che definisce ciò che il filtro fa e i parametri che richiede.<br /><br /> Adding and removing attributes<br /> Aggiungi inserisce un attributo in una data posizione, il cui valore è dichiarato mancante per tutte le istanze. Utilizza l'editor generico dell'oggetto per specificare il nome dell'attributo, dove apparirà nell'elenco degli attributi e sui relativi valori (per gli attributi nominali). Copia gli attributi esistenti in modo da poterli preservare durante la sperimentazione di filtri che sovrascrivono i valori degli attributi. Diversi attributi possono essere copiati insieme utilizzando un'espressione come 1-3 per i primi tre attributi, o primo-3,5,9-ultimi per gli attributi 1, 2, 3, 5, 9, 10, 11, 12,. . . . La selezione può essere invertita, influenzando tutti gli attributi, tranne quelli specificati. Queste caratteristiche sono condivise da molti filtri.Rimozione è già stata descritta. Filtri simili sono RemoveType, che elimina tutti gli attributi di un dato tipo (nominale, numerico, stringa o data) e RemoveUseless, che elimina gli attributi costanti e gli attributi nominali i cui valori sono diversi per quasi tutte le istanze. Puoi decidere quanta "variazione" viene tollerata prima che un attributo venga eliminato specificando il numero di valori distinti come percentuale del numero totale di valori. Alcuni filtri di attributo non controllati si comportano diversamente se il menu del pannello Preprocess è stato utilizzato per impostare un attributo di classe. Ad esempio, RemoveType e RemoveUseless ignorano l'attributo di classe.<br /><br /> AddCluster applica un algoritmo di cluster ai dati prima di filtrarlo. Utilizza l'editor di oggetti per scegliere l'algoritmo di clustering. I cluster sono configurati proprio come i filtri sono (sezione 10.6). L'editor dell'oggetto AddCluster contiene il proprio pulsante Scegli per il cluster e si configura il clusterer facendo clic sulla relativa riga e ottenendo un altro pannello di modifica dell'oggetto, che deve essere compilato prima di ritornare all'editor degli oggetti AddCluster. Questo è probabilmente più facile da capire quando lo fai in pratica di quando lo si legge in un libro! Ad ogni modo, dopo aver scelto un cluster, AddCluster lo usa per assegnare un numero di cluster ad ogni istanza come un nuovo attributo. L'editor degli oggetti consente inoltre di ignorare determinati attributi durante il clustering specificato come descritto in precedenza per Copia.<br /> ClusterMembership utilizza un cluster, nuovamente specificato nell'editor di oggetti del filtro, associando i valori di appartenenza. Viene creata una nuova versione di ogni istanza, i cui attributi sono questi valori. L'attributo di classe, se impostato, è rimasto inalterato. AddExpression crea un nuovo attributo applicando una funzione matematica agli attributi numerici. L'espressione può contenere riferimenti di attributo e costanti; Gli operatori aritmetici +, -, *, / e Ÿ; Le funzioni log e exp, abs e sqrt, pavimento, ceil e rint, 5 e sin, cos e tan; E parentesi. Gli attributi sono specificati dal prefisso a, ad esempio, a7 è il settimo attributo. È un'espressione di esempio<br /><br /><br /> a1^2 * a5/log(a7 * 4.0)<br /> <br /><br /> Esiste un'opzione di debug che sostituisce il valore del nuovo attributo con un parsing postfix dell'espressione fornita. Mentre AddExpression applica funzioni matematiche, NumericTransform esegue una trasformazione arbitraria applicando una funzione Java specifica agli attributi numerici selezionati. La funzione può essere qualsiasi cosa che prenda un doppio come argomento e restituisce un altro doppio, ad esempio, sqrt () in java.lang.Math.<br /> Un parametro è il nome della classe Java che implementa la funzione (che deve essere un nome completo); Un altro è il nome stesso del metodo di trasformazione. Normalizza scala tutti i valori numerici nel set di dati che vanno tra 0 e 1. La standardizzazione li trasforma in modo da avere una media di zero e una varianza di unità. Entrambi saltare l'attributo di classe, se impostato.<br /> Changing values<br /><br /> SwapValues scambia le posizioni di due valori di un attributo nominale. L'ordine dei valori è interamente cosmetico - non influisce affatto sull'apprendimento - ma se la classe è selezionata, modificare l'ordine influisce sul layout della matrice di confusione.<br /> MergeTwoValues unisce i valori di un attributo nominale in una singola categoria. Il nome del nuovo valore è una concatenazione dei due originali e ogni evento di uno dei valori originali viene sostituito da quello nuovo. L'indice del nuovo valore è il più piccolo degli indici originali. Ad esempio, se si fondono i primi due valori dell'attributo di Outlook nei dati meteo - in cui sono presenti cinque soleggiate, quattro coperte e cinque istanze piovose - il nuovo attributo di outlook avrà valori sunny_overcast e piovoso; Ci saranno nove istanze sunny_overcast e gli originali cinque pioggia.<br />Un modo per affrontare i valori mancanti è sostituirli globalmente prima di applicare uno schema di apprendimento. ReplaceMissingValues sostituisce ogni valore mancante con la media per gli attributi numerici e la modalità per quelli nominali. Se viene impostata una classe, i valori mancanti di tale attributo non vengono sostituiti.<br /> Conversions<br /><br /> Molti filtri convertono gli attributi da una maschera all'altra. Discretizzare gli usi di equal-width o equal-frequency binning (Sezione 7.2) per discretizzare una gamma di attributi numerici, specificati nel modo consueto. Per il metodo precedente il numero di scomparti può essere specificato o scelto automaticamente massimizzando la probabilità utilizzando la convalida incrociata "leave-one-out". PKIDiscretize discretizza gli attributi numerici usando la binning di frequenza pari a cui il numero di cestini è la radice quadrata del numero di valori (esclusi i valori mancanti). Entrambi questi filtri salta l'attributo di classe.<br /> MakeIndicator converte un attributo nominale in un attributo di indicatore binario e può essere utilizzato per trasformare un set di dati multiclass in più di due classi. Sostituisce un attributo binario per quello nominale scelto, il cui valore per ogni istanza è 1 se un particolare valore originale è presente e 0 altrimenti. Il nuovo attributo viene dichiarato come numerico per impostazione predefinita, ma può essere nominale se lo si desidera.<br /> Alcuni schemi di apprendimento, come le macchine vettoriali di supporto, gestiscono solo gli attributi binari. Il filtro NominalToBinary trasforma tutti gli attributi nominali multivalore in un set di dati in binari, sostituendo ciascun attributo con k valori per k attributi binari utilizzando una semplice codifica unica per valore. Gli attributi già binari vengono lasciati intatti. NumericToBinary converte tutti gli attributi numerici in quelli binari nominali (ad eccezione della classe, se impostata). Se il valore dell'attributo numerico è esattamente 0, il nuovo attributo sarà 0 e, se manca, il nuovo attributo mancherà; Altrimenti, il valore del nuovo attributo sarà 1. Questi filtri trascurano anche l'attributo di classe.<br /> FirstOrder prende una gamma di attributi numerici N e li sostituisce con gli attributi numerici N-1 i cui valori sono le differenze tra i valori degli attributi consecutivi dalle istanze originali. Ad esempio, se i valori degli attributi originali erano 3, 2 e 1, quelli nuovi saranno -1 e -1.<br /> String conversion<br /><br /> Un attributo di stringa ha un numero non specificato di valori. StringToNominal lo converte in nominale con un numero impostato di valori. È necessario assicurarsi che tutti i valori di stringa che verranno visualizzati nei dati potenziali di prova siano rappresentati nel set di dati. StringToWordVector produce gli attributi che rappresentano la frequenza di ciascuna parola nella stringa. L'insieme di parole - ovvero il nuovo attributo impostato - è determinato dal set di dati. Per impostazione predefinita, ogni parola diventa un attributo il cui valore è 1 o 0, che riflette la presenza della parola nella stringa. I nuovi attributi possono essere nominati con un prefisso definito dall'utente per mantenere gli attributi derivanti da differenti attributi di stringa distinti.<br /> Ci sono molte opzioni che influiscono sulla 'tokenization'. Le parole possono essere formate da sequenze alfabetiche contigue o separate da un determinato set di caratteri delimitatore. Possono essere convertiti in minuscole prima di essere aggiunti al dizionario oppure possono essere ignorate tutte le parole su un elenco predefinito di parole chiave in inglese. Le parole che non sono tra le parole di alto k classificate per frequenza possono essere scartate (leggermente più di k parole saranno mantenute se ci sono legami alla posizione di kth). Se è stato assegnato un attributo di classe, verranno mantenute le prime parole k per ciascuna classe. Il valore di ogni attributo parola riflette la sua presenza o assenza nella stringa, ma questo può essere modificato. È possibile utilizzare un conteggio del numero di volte che la parola appare nella stringa. Le frequenze di parola possono essere normalizzate per dare il vettore di attributo di ciascun documento la stessa lunghezza euclidea, questa lunghezza non è scelto per essere 1, per evitare i piccoli numeri che potrebbero comportare, ma per essere la lunghezza media di tutti i documenti che appaiono come valori della Originale attributo di stringa. In alternativa, le frequenze fij per parola i nel documento j possono essere trasformate usando log (1 + fij) o la misura TF * IDF (Sezione 7.3).<br /> Time series<br /><br /> Due filtri funzionano con i dati della serie temporale. TimeSeriesTranslate sostituisce i valori di un attributo (o attributi) nell'istanza corrente con il valore equivalente in un'altra istanza (precedente o futura). TimeSeriesDelta sostituisce i valori degli attributi nell'istanza corrente con la differenza tra il valore corrente e il valore in un'altra istanza. In entrambi i casi, i casi in cui il valore temporizzato è sconosciuto possono essere rimossi oi valori mancanti possono essere utilizzati.<br /> Randomizing<br /><br /> Altri filtri degli attributi degradano i dati. AddNoise assume un attributo nominale e modifica una data percentuale dei suoi valori. I valori mancanti possono essere mantenuti o modificati insieme al resto. Obfuscate anonimizza i dati rinominando la relazione, i nomi degli attributi e valori nominali e attributi di stringa. RandomProjection proietta il set di dati su uno spazio secondario di dimensioni inferiori utilizzando una matrice casuale con colonne di lunghezza dell'unità (Sezione 7.3). L'attributo di classe non è incluso nella proiezione.<br /> Unsupervised instance filters<br /><br /> I filtri di istanza di Weka, elencati nella Tabella 10.2, interessano tutte le istanze di un set di dati piuttosto che tutti i valori di un determinato attributo o attributi.<br /> Randomizing and subsampling<br /><br /> È possibile eseguire la casualizzazione dell'ordine delle istanze nel set di dati. Normalizza tratta tutti gli attributi numerici (esclusa la classe) come vettore e la normalizza a una data lunghezza. È possibile specificare la lunghezza del vettore e la norma da utilizzare.<br /> Ci sono diversi modi per generare sottoinsiemi dei dati. Usa Resample per produrre un campione casuale campionando con sostituzione o RemoveFolds per dividerlo in un certo numero di pieghe di convalida incrociate e ridurlo ad una sola di esse.<br /> Se viene fornito un seme di numero casuale, il set di dati verrà mescolato prima di estrarre il sottoinsieme. RemovePercentage rimuove una determinata percentuale di istanze e RemoveRange elimina una certa gamma di numeri di istanze. Per rimuovere tutte le istanze che hanno determinati valori per attributi nominali o valori numerici sopra o sotto una determinata soglia, utilizzare RemoveWithValues. Per impostazione predefinita vengono eliminate tutte le istanze che presentano uno di un determinato insieme di valori di attributo nominale (se l'attributo specificato è nominale) o un valore numerico al di sotto di un determinato valore (se è numerico). Tuttavia, il criterio corrispondente può essere invertito. È possibile rimuovere gli outlier applicando un metodo di classificazione al set di dati (specificandolo come il metodo di clustering era stato specificato in precedenza per AddCluster) e utilizzare RemoveMisclassified per eliminare le istanze che ha errato classificato.<br /> Sparse instances<br /><br /> I filtri NonSparseToSparse e SparseToNonSparse convertono tra la rappresentazione regolare di un set di dati e la sua rappresentazione sparsa (vedere la sezione 2.4).<br /> Supervised filters<br /><br /> 'I filtri sorvegliati' sono disponibili dal pannello Preprocesso di Explorer, così come quelli non sorvegliati. Bisogna stare attenti a loro perché, nonostante le apparenze, "non stanno realmente elaborando" le operazioni. Abbiamo notato questo in precedenza per quanto riguarda la discretizzazione: le divisioni dei dati di prova non devono utilizzare i valori di classe dei dati di prova, in quanto si suppone che siano sconosciuti, ed è vero per i filtri sorvegliati in generale.<br /> A causa della domanda popolare, Weka ti consente di invocare i filtri sorvegliati come un'operazione di precaricamento, proprio come i filtri non supervisionati. Tuttavia, se si intende usarli per la classificazione è necessario adottare una diversa metodologia. Viene fornito un meta-learner che invoca un filtro in un modo che avvolge l'algoritmo di apprendimento nel meccanismo di filtraggio. Questo filtra i dati di prova utilizzando il filtro creato dai dati di allenamento. È utile anche per alcuni filtri non controllati. Ad esempio, in StringToWordVector il dizionario verrà creato dai soli dati formativi: le parole che sono novel nei dati di prova verranno scartate.<br /> Per utilizzare in questo modo un filtro sorvegliato, richiamare lo schema metalearning FilteredClassifier dalla sezione meta del menu visualizzato dal pulsante Seleziona del gruppo Classify. La Figura 10.17 (a) mostra l'editor dell'oggetto per questo schema di metalearning. Con esso si sceglie un classificatore e un filtro. La Figura 10.17 (b) mostra il menu dei filtri.<br /><br /> I filtri sorvegliati, come quelli non sorvegliati, sono suddivisi in filtri di attributo e di istanza elencati nella Tabella 10.3 e nella Tabella 10.4.<br /> Supervised attribute filters<br /><br /> Discretizzare, evidenziato nella Figura 10.17, utilizza il metodo MDL di discretizzazione controllata (Sezione 7.2). È possibile specificare una serie di attributi o forzare l'attributo discretizzato come binario. La classe deve essere nominale. Per impostazione predefinita si utilizza il criterio di Fayyad e Irani (1993), ma il metodo di Kononenko (1995) è un'opzione.<br /> Esiste una versione sorvegliata del filtro NominalToBinary che trasforma tutti gli attributi nominali multivalore a quelli binari. In questa versione, la trasformazione dipende dal fatto che la classe sia nominale o numerica. Se è nominale, viene utilizzato lo stesso metodo come prima: un attributo con valori k viene trasformato in k binary attributes. Se la classe è numerica, tuttavia viene applicato il metodo descritto nella sezione 6.5 (pagina 246). In entrambi i casi la classe stessa non è trasformata.<br /> ClassOrder modifica l'ordinazione dei valori di classe. L'utente determina se il nuovo ordine è casuale o in ordine crescente o decrescente di frequenza di classe. Questo filtro non deve essere utilizzato con lo schema metalearning FilteredClassifier! AttributeSelection può essere utilizzato per la selezione automatica degli attributi e fornisce le stesse funzionalità del pannello di attributi Selezione Explorer (descritto più avanti). <br /> Supervised instance filters<br /><br /> Ci sono tre filtri di istanza controllati. Il resample è come il filtro istanza non controllato di nome, tranne che mantiene la distribuzione di classe nel sottomenu. In alternativa, può essere configurato per bias la distribuzione della classe verso una forma uniforme. SpreadSubsample produce anche un sottotabo casuale, ma può essere controllata la differenza di frequenza tra la classe più rara e quella più comune. Ad esempio, è possibile specificare al massimo una differenza di 2: 1 nelle frequenze di classe. Come il filtro di istanza non protetto RemoveFolds, StratifiedRemoveFolds emette una piegatura di conferma specificata per il set di dati, a meno che questa volta la piega sia stratificata.<br /> Learning algorithms<br /><br /> Nel pannello Classify, quando si seleziona un algoritmo di apprendimento usando il pulsante Scegli, nella riga accanto al pulsante viene visualizzata la versione della riga di comando del classificatore, inclusi i parametri specificati con segni meno. Per modificarli, fare clic su quella riga per ottenere un appropriato editor di oggetti. La tabella 10.5 elenca i classificatori di Weka. Sono divise in classificatori bayesiani, alberi, regole, funzioni, classificatori pigri e una categoria finale diversa. Li descriviamo brevemente qui insieme ai loro parametri. Per saperne di più, scegliete uno nell'interfaccia Weka Explorer e esamini il suo editor di oggetti. Un ulteriore tipo di classificatore, il Metalearner, è descritto nella sezione successiva.<br /> Bayesian classifiers<br /><br /> NaiveBayes implementa il probabilistico classificatore Naïve Bayes (Sezione 4.2). NaiveBayesSimple utilizza la distribuzione normale per modellare gli attributi numerici. NaiveBayes può utilizzare stimatori di densità del kernel, che migliora le prestazioni se l'assunto di normalità è grossolanamente errato; Può anche gestire gli attributi numerici utilizzando la discretizzazione supervisionata. NaiveBayesUpdateable è una versione incrementale che elabora un'istanza alla volta; Può utilizzare un stimatore del kernel, ma non la discretizzazione. NaiveBayesMultinomial implementa il classificatore multinomiale Bayes (Sezione 4.2, pagina 95). ComplementNaiveBayes costruisce un classificatore Bayes Complemento Naïve come descritto da Rennie et al. (2003) (le trasformazioni TF * IDF e normalizzazione di lunghezza utilizzate in questo documento possono essere eseguite usando il filtro StringToWordVector).L'AODE (medie, stime di dipendenza da una dipendenza) è un metodo Bayesiano che media in uno spazio di modelli Bayesiani alternativi che hanno ipotesi di indipendenza più debole di Naïve Bayes (Webb et al., 2005). L'algoritmo può produrre una classificazione più precisa di Naïve Bayes su set di dati con attributi non indifferenziati.<br /><br /> BayesNet apprende le reti bayesiane sotto le ipotesi di cui alla sezione 6.7: attributi nominali (numeri predefiniti) e nessun valore mancante (tali valori vengono sostituiti globalmente). Esistono due diversi algoritmi per la stima delle tabelle di probabilità condizionale della rete. La ricerca avviene usando K2 o l'algoritmo TAN (Sezione 6.7) o metodi più sofisticati basati su arrampicata su collina, ricottura simulata, ricerca tabù e algoritmi genetici. Facoltativamente, la velocità di ricerca può essere migliorata utilizzando gli alberi AD (sezione 6.7).<br /> C'è anche un algoritmo che utilizza test condivisi di indipendenza per imparare la struttura della rete; In alternativa, la struttura di rete può essere caricata da un file XML (estensione del linguaggio di marcatura). Ulteriori dettagli sull'implementazione delle reti bayesiane in Weka si trovano in Bouckaert (2004). È possibile osservare la struttura della rete facendo clic con il pulsante destro del mouse sull'elemento di cronologia e selezionando Visualize graph. La Figura 10.18 (a) mostra il grafico per la versione nominale dei dati meteorologici, che in realtà corrisponde al risultato Naïve Bayes con tutte le probabilità condizionate dal valore della classe. Ciò è dovuto al fatto che l'algoritmo di ricerca predefinito è K2 con il numero massimo di genitori di un nodo impostato su uno. La riconfigurazione di questo a tre facendo clic su K2 nel pannello di configurazione rende la rete più interessante nella Figura 10.18 (b). Fare clic su un nodo mostra la sua distribuzione di probabilità - la Figura 10.18 (c) si ottiene cliccando sul nodo ventoso di Figura 10.18 (b).<br /><br /> <br /><br /> Figure 10.18 Visualizing a Bayesian network<br /> Trees<br /><br />Dei classificatori dell'albero nella tabella 10.5 abbiamo già visto come usare J4.8, che reimplements C4.5 (Sezione 6.1). Per visualizzare le opzioni, fai clic sulla riga accanto al pulsante Scegli in Figura 10.4 (b) per aprire l'editor di oggetti in Figura 10.19. È possibile costruire un albero binario anziché uno con rami multipli. È possibile impostare la soglia di sicurezza per la potatura (impostazione predefinita 0.25) e il numero minimo di istanze consentite in una foglia (impostazione predefinita 2). Invece di potatura standard C4.5 è possibile scegliere la potatura a errori ridotti (sezione 6.2). Il parametro numFolds (default 3) determina la dimensione del set di potatura: i dati sono suddivisi in modo uguale in quel numero di parti e l'ultimo utilizzato per la potatura. Quando si visualizza l'albero (pagine 377-378) è bello poter consultare i punti dati originali, che è possibile eseguire se 'saveInstanceData' è stato attivato (è disattivato o Falso per impostazione predefinita per ridurre i requisiti di memoria) . È possibile sopprimere il subtree, sollevando un algoritmo più efficiente; Forzare l'algoritmo per usare l'albero non trattato invece del potato; O utilizzare la levigatura Laplace per le probabilità previste (Sezione 4.2).<br /><br /> La tabella 10.5 mostra molti altri metodi decisionali. Id3 è l'algoritmo di base descritto nel Capitolo 4. DecisionStump, progettato per l'utilizzo con i metodi di incremento descritti più avanti, crea alberi decisionali binari di un livello per i set di dati con una classe categorica o numerica, trattandosi di valori mancanti trattandoli come valore separato e Estendendo un terzo ramo dal ceppo. Gli alberi costruiti da RandomTree scelgono un test basato su un dato numero di funzioni casuali in ogni nodo, senza eseguire potature. RandomForest costruisce foreste casuali mediante l'insaccamento di ensemble di alberi casuali (Sezione 7.5, pagine 320-321). REPTree crea un albero di decisione o di regressione utilizzando la riduzione di guadagno / varianza delle informazioni e lo prugge utilizzando una potatura a errore ridotto (sezione 6.2, pagina 203). Ottimizzato per la velocità, solo una volta classifica valori per gli attributi numerici (sezione 6.1, pagina 190). Si tratta dei valori mancanti dividendo le istanze in pezzi, come fa C4.5. È possibile impostare il numero minimo di istanze per foglia, la profondità massima dell'albero (utile per aumentare gli alberi), la percentuale minima della variazione di formazione impostata per una suddivisione (solo classi numeriche) e il numero di pieghe per la potatura.<br /> NBTree è un ibrido tra gli alberi decisionali e Naïve Bayes. Crea alberi i cui fogli sono classificatori Naïve Bayes per i casi che raggiungono la foglia. Quando si costruisce l'albero, la convalida incrociata viene utilizzata per decidere se un nodo deve essere suddiviso ulteriormente o utilizzare invece un modello Naïve Bayes (Kohavi 1996).<br /><br /> M5P è il "modello di apprendimento degli alberi" descritto nella sezione 6.5. LMT costruisce alberi modello logistico (Sezione 7.5, pagina 331). LMT può occuparsi delle variabili di destinazione binarie e multiclassiche, degli attributi numerici e nominali e dei valori mancanti. Quando si adatta alle funzioni di regressione logistica in un nodo, utilizza la convalida incrociata per determinare quante iterazioni eseguire una sola volta e impiega lo stesso numero in tutta l'albero anziché la convalida incrociata in ogni nodo. Questo euristico (che si può spegnere) migliora notevolmente il tempo di esecuzione, con scarso effetto sulla precisione. In alternativa, è possibile impostare il numero di incrementi di iterazioni da utilizzare per tutta l'albero. Normalmente, è l'errore di errori di errori che la convalida incrociata minimizza, ma l'errore medio-quadrato di root delle probabilità può essere scelto invece. Il criterio di suddivisione può essere basato sul guadagno informativo C4.5 (il valore predefinito) o sui residui di LogitBoost, cercando di migliorare la purezza dei residui.<br /> ADTree costruisce un albero di decisione alternato utilizzando il boosting (Sezione 7.5, pagine 329-331) ed è ottimizzato per problemi a due livelli. Il numero di incrementi di iterazioni è un parametro che può essere sintonizzato in base al set di dati e al compromesso di precisione di complessità desiderata. Ogni iterazione aggiunge tre nodi all'albero (un nodo di split e due nodi di previsione) a meno che i nodi non possano essere fusi. Il metodo di ricerca predefinito è una ricerca esaustiva (Espandi tutti i percorsi); Le altre sono euristiche e sono molto più veloci. È possibile determinare se salvare i dati di istanza per la visualizzazione.<br /> Rules<br /><br /> La tabella 10.5 mostra molti metodi per la generazione di regole. DecisionTable crea un classificatore di maggioranza della tabella delle decisioni (Sezione 7.1, pagina 295). Valuta i sottoscrittori delle funzioni utilizzando la prima ricerca migliore e può utilizzare la convalida incrociata per la valutazione (Kohavi 1995b). Un'opzione utilizza il metodo più vicino per determinare la classe per ogni istanza che non è coperta da una voce di tabella di decisione, anziché la maggioranza globale della tabella, sulla base dello stesso set di funzionalità. OneR è il classificatore 1R (Sezione 4.1) con un parametro: la dimensione minima del secchio per la discretizzazione. ConjunctiveRule impara una singola regola che prevede un valore numerico o un valore nominale. Le istanze di prova non coperte vengono assegnate al valore di classe predefinito (o distribuzione) delle istanze di formazione non scoperte. Viene calcolato il guadagno di informazioni (classe nominale) o la riduzione della varianza (classe numerica) di ciascun antecedente e le regole sono potate utilizzando la potatura a errori ridotti. ZeroR è ancora più semplice: prevede la classe di maggioranza dei dati del test (se nominale) o il valore medio (se numerico).<br /> Prism implementa l'algoritmo di copertura elementare per le regole (Sezione 4.4). La parte ottiene le regole dagli alberi decisionali parziali (Sezione 6.2, pagine 207-210). Costruisce l'albero utilizzando l'euristica C4.5 con gli stessi parametri definiti dall'utente come J4.8. M5Rules ottiene regole di regressione da alberi modello costruiti utilizzando M5 ¢ (Sezione 6.5, pagine 250-251). Ridor impara le regole con eccezioni (sezione 6.2, pagine 210-213) generando la regola predefinita, utilizzando la potatura incrementale di errori ridotti per trovare eccezioni con il minor tasso di errore, trovare le eccezioni migliori per ogni eccezione e l'iterazione.<br /> JRip implementa RIPPER (Sezione 6.2, pagine 205-207), inclusa l'ottimizzazione globale heuristica del set di regole (Cohen 1995). Nnge è un metodo di prossimità più vicino per generare regole usando esemplari generalizzati non attivati (Sezione 6.4, pagine 238-239).<br /> Funzioni<br /><br /> La categoria di funzioni della Tabella 10.5 include un gruppo assortito di classificatori che possono essere scritti come equazioni matematiche in modo ragionevolmente naturale. Altri metodi, come gli alberi decisionali e le regole, non possono (ci sono eccezioni: Naïve Bayes ha una semplice formulazione matematica). Tre di essi attuano la regressione lineare (sezione 4.6). SimpleLinearRegression impara un modello di regressione lineare basato su un singolo attributo: sceglie quello che produce l'errore quadrato più piccolo. Non sono ammessi valori mancanti e attributi non numerici. LinearRegression esegue la regressione lineare standard a minimi quadrati e può facoltativamente eseguire la selezione degli attributi, utilizzando avidamente l'eliminazione indietro (Sezione 7.1) o costruendo un modello completo di tutti gli attributi e abbassando i termini uno per uno in ordine decrescente dei loro coefficienti standardizzati fino ad una arresto È stato raggiunto un criterio (questo metodo è stato descritto in un contesto leggermente diverso nella sezione 6.5 sotto Potatura dell'albero, pagina 245). Entrambi i metodi utilizzano una versione del criterio di terminazione AIC del capitolo 6.7 (pagina 277). L'implementazione ha due ulteriori perfezionamenti: un meccanismo per rilevare gli attributi collineari (che possono essere spenti) e un parametro di cresta che stabilizza i casi degenerati e può ridurre l'overfitting penalizzando i grandi coefficienti.<br /> Tecnicamente, LinearRegression implementa la regressione delle creste, descritta in testi statistici standard. LeastMedSq è un robusto metodo di regressione lineare che riduce al minimo la mediana (piuttosto che la media) dei quadrati delle divergenze dalla linea di regressione (Sezione 7.4) (Rousseeuw e Leroy 1987). Essa applica ripetutamente la regressione lineare standard ai sottotitoli dei dati e emette la soluzione che ha il più piccolo errore mediano-quadrato.<br /><br /> SMO implementa l'algoritmo minimo di ottimizzazione sequenziale per la formazione di un classificatore di supporto vettoriale (Sezione 6.3), utilizzando i kernel polinomiali o Gaussiani (Platt 1998, Keerthi et al., 2001). I valori mancanti vengono sostituiti globalmente, gli attributi nominali vengono trasformati in binari e gli attributi vengono normalizzati per impostazione predefinita. Nota che i coefficienti nell'output sono basati sui dati normalizzati. La normalizzazione può essere disattivata, oppure l'ingresso può essere standardizzato a zero di media e di varianza dell'unità. La classificazione Pairwise è utilizzata per problemi multiclasse. I modelli di regressione logistica possono essere montati sull'uscita della macchina vettoriale di supporto per ottenere stime di probabilità. Nel caso multiclasse le probabilità previste saranno accoppiate in coppia (Hastie e Tibshirani 1998).<br /> Quando si lavora con istanze sparse, disattivare la normalizzazione per un funzionamento più veloce. SMOreg implementa l'algoritmo minimo di ottimizzazione sequenziale per i problemi di regressione (Smola e Schölkopf 1998). VotedPerceptron è l'algoritmo perceptronato votato (Sezione 6.3, pagine 222-223). Winnow (sezione 4.6, pagine 126-128) modifica il perceptron di base per utilizzare aggiornamenti moltiplicativi. L'implementazione consente di utilizzare un secondo moltiplicatore, b - diverso da 1 / a - al posto delle divisioni di Figura 4.11 e fornisce anche la versione equilibrata dell'algoritmo.PaceRegression costruisce modelli di regressione lineare utilizzando la nuova tecnica della regressione Pace (Wang e Witten 2002). Quando ci sono molti attributi, la regressione di Pace è particolarmente buona per determinare quali scartare, anzi, in determinate condizioni di regolarità è probabilmente ottimale in quanto il numero di attributi tende all'infinito.<br /><br /> SimpleLogistic costruisce modelli di regressione logistica (Sezione 4.6, pagine 121-124), adattandoli usando LogitBoost con funzioni di regressione semplici come discenti base e determinando quante iterazioni da eseguire utilizzando cross-validation - che supporta la selezione automatica degli attributi (Landwehr et al 2003) . Logistic è un'implementazione alternativa per la costruzione e l'utilizzo di un modello di regressione logistica multinomiale con un estimatore di cresta per contrastare l'overfitting penalizzando grandi coefficienti, basati sul lavoro di Le Cessie e van Houwelingen (1992).<br /> RBFNetwork implementa una rete di funzioni radiali basata su Gaussian (sezione 6.3, pagina 234), derivando i centri e le larghezze di unità nascoste usando k-means e combinando le uscite ottenute dallo strato nascosto usando la regressione logistica se la classe è regressione nominale e lineare se È numerico. Le attivazioni delle funzioni di base vengono normalizzate per somma a una prima di essere alimentate nei modelli lineari. È possibile specificare k, il numero di cluster; Il numero massimo di iterazioni di regressione logistica per problemi di classe nominale; La deviazione standard minima per i cluster; E il valore della cresta per la regressione. Se la classe è nominale, k-means viene applicato separatamente per ogni classe per derivare k cluster per ogni classe.<br /> Neural networks<br /><br /> MultilayerPerceptron è una rete neurale che tira utilizzando backpropagation (Sezione 6.3, pagina 227). Sebbene elencato nelle funzioni nella Tabella 10.5, esso differisce dagli altri schemi perché ha una propria interfaccia utente. Se si carica la versione numerica dei dati meteorologici, invoca MultilayerPerceptron, imposta GUI a True nel suo editor di oggetto e esegue la rete cliccando su Start sul pannello Classify, lo schema di Figura 10.20 viene visualizzato in una finestra separata. Questa rete ha tre livelli: uno strato di input a sinistra con una casella rettangolare per ogni attributo (verde colorato); Un livello nascosto accanto a esso (rosso) a cui sono collegati tutti i nodi d'ingresso; E un livello di uscita a destra (arancio). Le etichette in alto a destra mostrano le classi che rappresentano i nodi di output. I nodi di uscita per le classi numeriche vengono automaticamente convertiti in unità lineari non soggette a soglia.<br /> Prima di fare clic su Avvia per eseguire la rete, è possibile modificarne la struttura aggiungendo nodi e connessioni. È possibile selezionare o deselezionare i nodi. Tutti e sei i nodi nei livelli nascosti e di uscita della Figura 10.20 (a) sono deselezionati, indicati dal colore grigio del loro centro. Per selezionare un nodo, basta cliccare su di esso. Questo modifica il colore del suo centro da grigio a giallo brillante. Per deselezionare un nodo, fare clic con il pulsante destro del mouse in uno spazio vuoto. Per aggiungere un nodo, assicurati che nessuno sia selezionato e clicchi con il tasto sinistro in qualsiasi punto del pannello; Il nuovo nodo verrà selezionato automaticamente. Nella Figura 10.20 (a), un nuovo nodo è stato aggiunto al centro inferiore. Per collegare due nodi, selezionare il nodo iniziale e quindi fare clic su quello finale. Se vengono selezionati più nodi di avvio, tutti sono collegati al nodo finale. Se si sceglie invece nello spazio vuoto, viene creato un nuovo nodo come nodo finale. Si noti che le connessioni sono direzionali (anche se le indicazioni non sono mostrate). I nodi di avvio rimangono selezionati; Quindi è possibile aggiungere un intero strato nascosto con pochi clic, come mostrato nella Figura 10.20 (b). Per rimuovere un nodo, assicurarsi che non siano selezionati nodi e fare clic con il pulsante destro del mouse; Questo rimuove anche tutte le connessioni ad esso. Per rimuovere una singola connessione, selezionare un nodo e fare clic con il pulsante destro del mouse sul nodo all'altro capo.<br /><br /> Oltre a configurare la struttura della rete, è possibile controllare il tasso di apprendimento, il suo slancio (sezione 6.3) e il numero di passaggi che passerà attraverso i dati, chiamati epoche. La rete inizia a formarsi quando si fa clic su Avvio e viene mostrata un'indicazione di funzionamento dell'epoca e l'errore per quella epoca nella parte inferiore sinistra del pannello di Figura 10.20. Si noti che l'errore si basa su una rete che cambia quando il valore viene calcolato. Per le classi numeriche il valore di errore dipende dalla normalizzazione della classe. La rete si ferma quando viene raggiunto il numero specificato di epoche, in questo momento è possibile accettare il risultato o aumentare il numero desiderato di epoche e premere nuovamente Start per continuare la formazione.<br /> MultilayerPerceptron non deve essere eseguito attraverso l'interfaccia grafica. È possibile impostare diversi parametri dall'editor dell'oggetto per controllarne il funzionamento. Se si utilizza l'interfaccia grafica, essi governano la struttura di rete iniziale, che è possibile sovrascrivere in modo interattivo. Con l'impostazione di autoBuild, i livelli nascosti vengono aggiunti e collegati. L'impostazione predefinita è quella di avere il solo livello nascosto mostrato nella Figura 10.20 (a), ma senza AutoBuild questo non apparirebbe e non ci sarebbero connessioni. Il parametro hiddenLayers definisce i livelli nascosti presenti e quanti nodi ciascuno contiene. La Figura 10.20 (a) viene generata da un valore di 4 (uno strato nascosto con quattro nodi) e anche se la Figura 10.20 (b) è stata creata aggiungendo i nodi in modo interattivo, potrebbe essere stato generato impostando Layers nascosti su 4,5 Strato nascosto con quattro nodi e un altro con cinque). Il valore è un elenco separato da virgole di interi; 0 non fornisce strati nascosti. Inoltre, esistono valori predefiniti che possono essere utilizzati anziché numeri interi: i è il numero di attributi, o il numero di valori di classe, la media dei due e la loro somma. L'impostazione predefinita, a, è stata utilizzata per generare la Figura 10.20 (a).<br /><br /> I parametri learningRate e Momentum impostano valori per queste variabili, che possono essere sovrascritti nell'interfaccia grafica. Un parametro di decadimento determina una diminuzione del tempo di apprendimento nel tempo: divide il valore iniziale per il numero di epoca per ottenere il tasso corrente. Ciò a volte migliora le prestazioni e può impedire la divergenza della rete. Il parametro di reset ripristina automaticamente la rete con un tasso di apprendimento inferiore e riprende l'addestramento se è diverso dalla risposta (questa opzione è disponibile solo se l'interfaccia utente grafica non viene utilizzata).<br /> Il parametro trainingTime imposta il numero di epoche di formazione. In alternativa, una percentuale dei dati può essere impostata per la convalida (con validazione-SetSize): la formazione continua fino a quando la prestazione sul set di convalida inizia a deteriorarsi in modo coerente o fino a quando non viene raggiunto il numero specificato di epoche. Se la percentuale è impostata su zero, non viene utilizzato alcun set di convalida. Il parametro validationThresh-old determina quante volte consecutive l'errore di configurazione della convalida può peggiorare prima che la formazione sia arrestata.<br /> Il filtro nominaleToBinaryFilter viene specificato per impostazione predefinita nell'editor di oggetti MultilayerPerceptron; Spegnimento può migliorare le prestazioni sui dati in cui gli attributi nominali sono veramente ordinali. Gli attributi possono essere normalizzati (con normalizeAttributes) e una classe numerica può anche essere normalizzata (con normalizeNumericClass): entrambi possono migliorare le prestazioni.<br /> Lazy classifiers<br /><br /> "Lazy learners" memorizzano le istanze di formazione e non fanno alcun lavoro reale fino al momento della classificazione. IB1 è un principiante basata sull'istanza (sezione 4.7) che trova l'istanza di addestramento più vicina alla distanza Euclidea rispetto alla data istanza di prova e predice la stessa classe di questa istruzione. Se più istanze si qualificano come il più vicino, viene utilizzato il primo trovato. IBk è un classificatore K-prossimo vicino che usa la stessa metrica a distanza. Il numero di vicini più vicini (default k = 1) può essere specificato esplicitamente nell'editor di oggetto o determinato automaticamente usando la "convalida incrociata" di una "uscita", soggetta ad un limite superiore specificato dal valore specificato. Le previsioni di più di un vicino possono essere ponderate in base alla loro distanza dall'istanza di prova e sono state implementate due formule diverse per convertire la distanza in un peso. Il numero di istanze di formazione mantenute dal classificatore può essere limitato impostando l'opzione di dimensione della finestra. Poiché vengono aggiunte istanze di formazione nuove, vengono rimosse quelle più vecchie per mantenere il numero di istanze di formazione a questa dimensione. KStar è un metodo di prossimità più vicino con una funzione di distanza generalizzata basata sulle trasformazioni (Sezione 6.4 pagine 241-242).<br /><br /> LBR (per le Regole Lazy Bayesian) è un classificatore Bayesiano che limita l'elaborazione fino alla data di classificazione. Per ogni istanza di prova seleziona una serie di attributi per i quali l'assunzione di indipendenza non deve essere fatta; Gli altri vengono trattati come indipendenti l'uno dall'altro data la classe e l'insieme selezionato di attributi. Funziona bene per piccoli gruppi di test (Zheng e Webb 2000).<br /> LWL è un algoritmo generale per l'apprendimento localmente ponderato. Assegna pesi utilizzando un metodo basato su istanza e costruisce un classificatore dalle istanze ponderate. Il classificatore è selezionato nell'editor dell'oggetto LWL: una buona scelta è Naïve Bayes per i problemi di classificazione e la regressione lineare per i problemi di regressione (Sezione 6.5, pagine 251-253). È possibile impostare il numero di vicini usati, che determina la larghezza di banda del kernel e la forma del kernel da utilizzare per la ponderazione-lineare, inversa o Gaussiana. La normalizzazione degli attributi è attivata per impostazione predefinita.<br /> Miscellaneous classifiers<br /><br /> Il misc. La categoria comprende due semplici classificatori che sono stati menzionati alla fine della sezione 4.7 (pagina 136). Iperpipe, per problemi di classificazione discreti, registra l'intervallo di valori osservati nei dati di addestramento per ogni attributo e categoria e spiega quali intervalli contengono i valori attributi di un'istanza di prova, scegliendo la categoria con il maggior numero di intervalli corretti. VFI (intervalli di funzioni di voto) costruisce intervalli attorno a ciascuna classe distruttando gli attributi numerici e utilizzando intervalli di punti per quelli nominali, registra i conteggi di classe per ogni intervallo su ciascun attributo e classifica le istanze di prova votando (Demiroz e Guvenir 1997). Un semplice schema di ponderazione degli attributi assegna un peso maggiore a intervalli più sicuri, dove la fiducia è una funzione dell'entropia. VFI è più veloce di Naïve Bayes ma più lento di iperpipes. Né il metodo può gestire i valori mancanti.<br /> Metalearning algorithms<br /><br /> Gli algoritmi di metalearning, elencati nella tabella 10.6, prendono classificatori e li trasformano in discenti più potenti. Un parametro specifica il classificatore di base; Altri specificheranno il numero di iterazioni per i sistemi come "baging" e "boosting" e un seme iniziale per il generatore di numeri casuali. Abbiamo già incontrato FilteredClassifier nella sezione 10.3: esegue un classificatore sui dati che è stato passato attraverso un filtro, che è un parametro. I parametri del filtro sono basati esclusivamente sui dati di addestramento, che è il modo appropriato per applicare un filtro sorvegliato per testare i dati.<br /> Bagging and randomization<br /><br /> 'Sacchetti baging' un classificatore per ridurre la varianza (Sezione 7.5, pagina 316). Questa implementazione funziona sia per la classificazione che per la regressione, a seconda dello studente di base. Nel caso della classificazione, le previsioni sono generate dalla media delle stime di probabilità, non di voto. Un parametro è la dimensione delle borse come percentuale del set di allenamento. Un altro è se calcolare l'errore di fuori-bag, che dà l'errore medio dei membri dell'assemblea (Breiman 2001).<br /> RandomCommittee è ancora più semplice: costruisce un insieme di classificatori di base e media le loro previsioni. Ciascuno è basato sugli stessi dati ma utilizza un seme di numero casuale differente (Sezione 7.5, pagina 320). Questo ha senso solo se il classificatore di base è randomizzato; Altrimenti, tutti i classificatori sarebbero uguali.<br /> Boosting<br /><br /> AdaBoostM1 implementa l'algoritmo descritto nella Sezione 7.5 (pag. 321; Figura 7.7). Può essere accelerato specificando una soglia per la potatura del peso. I campioni AdaBoostM1 se il classificatore di base non è in grado di gestire istanze ponderate (è anche possibile forzare nuovamente il riesaminamento). MultiBoostAB combina il potenziamento(Boosting) con una variante di "bagging" per evitare overfitting (Webb 2000).<br /> Mentre l'aumento si applica solo alle classi nominali, l'AdditiveRegression migliora le prestazioni di un principio di regressione (Sezione 7.5, pagina 325). Esistono due parametri: il ritiro, che regola il tasso di apprendimento e il numero massimo di modelli da generare. Se quest'ultimo è infinito, il lavoro continua finché l'errore non smette di diminuire.<br /><br /> Decorate costruisce gruppi di classificatori diversi utilizzando esempi di addestramento artificiali appositamente costruiti. Questa tecnica è sostenuta per migliorare in modo consistente sul classificatore di base e sul 'bagging' e sulla "foresta casuale" di meta-learners (Melville e Mooney, 2005) .6 Essa supera l'incremento su piccoli gruppi di addestramento e le rivale su più grandi. Un parametro è il numero di esempi artificiali da utilizzare come percentuale dei dati formativi. Un altro è il numero desiderato di classificatori nell'assemble, anche se l'esecuzione può terminare prematuramente perché il numero di iterazioni può anche essere limitato. I grandi gruppi generano di solito modelli più accurati, ma hanno più tempo di formazione e complessità del modello.<br /> LogitBoost esegue la regressione logistica addizionale (Sezione 7.5, pagina 327). Come AdaBoostM1, può essere accelerata specificando una soglia per la potatura del peso. Il numero appropriato di iterazioni può essere determinato utilizzando una convalida interna; Vi è un parametro di restringimento che può essere sintonizzato per prevenire l'overfitting; E puoi scegliere di riesaminare invece di ponderare nuovamente. RacedIncre-mentalLogitBoost apprende dalla competizione dei comitati LogitBoosted e opera in modo incrementale elaborando i dati in batch (pagine 347-348), rendendolo utile per grandi set di dati (Frank et al., 2002). Ogni membro del comitato viene appreso da un lotto diverso. La dimensione del lotto inizia a un minimo minimo e ripete ripetutamente fino a raggiungere un massimo preimpostato. Il riesaminamento viene utilizzato se il classificatore di base non è in grado di gestire istanze ponderate (è anche possibile forzare nuovamente il riesaminamento). La potatura di probabilità di log può essere utilizzata all'interno di ogni comitato: questo scarta i nuovi membri della commissione se riduce la probabilità di log in base ai dati di convalida. È possibile determinare quante istanze da tenere per la convalida. I dati di convalida vengono utilizzati anche per determinare quale comitato deve mantenere quando la formazione termina.<br /> Combining classifiers<br /><br /> Vota fornisce un metodo di base per combinare i classificatori mediante la mediazione delle loro stime di probabilità (classificazione) o delle previsioni numeriche (regressione). MultiScheme seleziona il miglior classificatore da un insieme di candidati utilizzando la convalida incrociata della percentuale di accuratezza (classificazione) o di errore medio-quadrato (regressione). Il numero di pieghe è un parametro. È possibile utilizzare prestazioni sui dati formativi.<br /> Lo stacking combina i classificatori con l'impilamento (Sezione 7.5, pagina 332) per problemi di classificazione e di regressione. Specificare i classificatori di base, il meta-learner e il numero di pieghe di conflitto incrociate. StackingC implementa una variante più efficiente per il quale il metalearner deve essere uno schema numerico di previsione (Seewald 2002). Nella classificazione gli ingressi al metalearner sono le previsioni a livello di base che sono state contrassegnate (ad es., "Classificate") come corrette o non corrette. Per ogni classificatore di base viene appreso un metalearner che prevede quando il classificatore di base erronea. Proprio come l'impilatura può essere considerata come una generalizzazione del voto, la classificazione generalizza la selezione mediante la convalida incrociata (Seewald e Fürnkranz 2001).<br /> Cost-sensitive learning<br /><br /> Ci sono due meta-learners per l'apprendimento sensibile ai costi (Sezione 5.7). La matrice di costo può essere fornita come parametro o caricata da un file nella directory impostata dalla proprietà onDemandDirectory, denominata dal nome di relazione e con il costo di estensione. CostSensitiveClassifier ridimensiona le istanze di formazione in base al costo complessivo assegnato a ciascuna classe (apprendimento sensibile ai costi, pagina 165) o prevede la classe con il costo meno criticato di classificazione piuttosto che quello più probabile (classificazione sensibile ai costi, pagina 164). MetaCost genera un unico classificatore sensibile al costo dal principiante di base (Sezione 7.5, pagine 319-320). Questa implementazione utilizza tutte le iterazioni di bagging durante la riclassificazione dei dati formativi (Domingos 1999 segnala un miglioramento marginale quando si utilizza solo quelle iterazioni che contengono ogni istanza di formazione per riclassificare). È possibile specificare la dimensione di ciascuna borsa e il numero di iterazioni di bagging.<br /> Optimizing performance<br /><br /> Tre meta-learners utilizzano la tecnica del wrapper per ottimizzare le prestazioni del classificatore di base. AttributeSelectedClassifier seleziona gli attributi, riducendo la dimensionalità dei dati prima di passarla al classificatore (Sezione 7.1, pag. 290). È possibile scegliere il valutatore di attributo e il metodo di ricerca utilizzando il pannello Select attributes descritto nella sezione 10.2. CVParameterSelection ottimizza le prestazioni utilizzando la convalida incrociata per selezionare i parametri. Per ogni parametro viene fornita una stringa contenente i limiti inferiori e superiori e il numero di incrementi desiderato. Ad esempio, per variare il parametro -P da 1 a 10 in incrementi di 1, utilizzare P 1 10 11. È possibile specificare il numero di piegature di convalida incrociate.<br /><br /> Il terzo meta-learner, ThresholdSelector, ottimizza la misura F (Sezione 5.7) selezionando una soglia di probabilità sull'uscita del classificatore. La prestazione può essere misurata sui dati di addestramento, su un set di tenuta o con la convalida incrociata. Le probabilità restituite dal discente di base possono essere riconfigurate nell'intera gamma [0,1], utile se le probabilità del sistema sono limitate a un sottogruppo ridotto. Il metalearner può essere applicato ai problemi multiclasse specificando il valore di classe per cui viene eseguita l'ottimizzazione<br /><br /><br />1. Il primo valore di classe<br />2. Il valore di seconda classe<br />3. Qualunque valore sia meno frequente<br />4. Qualunque sia il valore più frequente<br />5. La prima classe chiamata yes, pos (itive) o 1.<br /> Retargeting classifiers for different tasks<br /><br /> Quattro meta-learners adattano gli studenti progettati per un tipo di attività a un altro. ClassificationViaRegression esegue la classificazione utilizzando un metodo di regressione binarizzando la classe e costruendo un modello di regressione per ogni valore. Regressione-ByDiscretization è uno schema di regressione che discretizza l'attributo di classe in un numero specifico di contenitori utilizzando la discretizzazione a larghezza uguale e poi impiega un classificatore. Le previsioni sono la media ponderata del valore della classe media per ogni intervallo discretizzato, con pesi basati sulle probabilità previste per gli intervalli. OrdinalClassClassifier applica algoritmi di classificazione standard ai problemi della classe ordinale (Frank e Hall 2001). MultiClassClassifier gestisce i problemi multiclasse con classificatori a due classi utilizzando uno di questi metodi:<br /><br /><br /><br /><br /><br /><br /><br />1. Uno contro tutto il resto<br />2. Classificazione a palo utilizzando il voto per prevedere<br />3. Codici di correzione errori esaustivi (Sezione 7.5, pagina 334)<br />4. Codici di correzione errori selezionati in modo casuale<br /><br /><br /> I vettori di codice casuale sono noti per avere buone proprietà di correzione degli errori: un parametro specifica la lunghezza del vettore di codice (in bit).<br /> Clustering algorithms<br /><br /> La tabella 10.7 elenca gli algoritmi di clustering di Weka; I primi due e SimpleKMeans sono descritti nella sezione 6.6. Per l'implementazione di EM è possibile specificare quanti cluster da generare o l'algoritmo può decidere utilizzando la convalida incrociata, nel qual caso il numero di pieghe è fissato a 10 (a meno che non ci siano meno di 10 istanze di formazione). È possibile specificare il numero massimo di iterazioni e impostare la deviazione standard minima consentita per il calcolo normale di densità.<br /> SimpleKMeans raggruppa i dati utilizzando k-means; Il numero di cluster è specificato da un parametro. Cobweb implementa sia l'algoritmo Cobweb per gli attributi nominali che l'algoritmo Classit per gli attributi numerici. L'ordinazione e la priorità degli operatori di fusione e divisione differiscono tra i documenti originali Cobweb e Classit (dove è un po 'ambiguo). Questa implementazione confronta sempre quattro modi diversi di trattare una nuova istanza e sceglie il meglio: aggiungendolo al miglior host, trasformandolo in una nuova foglia, fondendo i due migliori host e aggiungendolo al nodo unito e dividendo il miglior host e Aggiungendolo a una delle divisioni. Acuità e cutoff sono parametri.<br /> FarthestFirst implementa l'algoritmo traversale di Hochbaum e Shmoys (1985), citato da Sanjoy Dasgupta (2002); Un clusterer veloce, semplice e approssimativo, modellato su k-means. MakeDensityBasedClusterer è un meta-clusterer che avvolge un algoritmo di clustering per renderlo restituito una distribuzione e una densità di probabilità. Ad ogni cluster è adatta a una distribuzione discreta oa una distribuzione normale simmetrica (la cui deviazione standard minima è un parametro)<br /> Association-rule learners<br /><br /> Weka possiede tre studenti di regole di associazione, elencati nella tabella 10.8. Apriori implementa l'algoritmo Apriori (Sezione 4.5). Comincia con un supporto minimo del 100% delle voci di dati e lo diminuisce in passi del 5% finché non ci sono almeno 10 regole con la minima riservatezza necessaria di 0,9 o fino a quando il supporto ha raggiunto un limite inferiore del 10%, qualunque si verifichi per primo. (Questi valori predefiniti possono essere modificati.) Ci sono quattro metriche alternative per regole di classificazione: la fiducia, che è la proporzione degli esempi coperti dalla premessa che sono anche coperti dalla conseguente (chiamata precisione nella sezione 4.5); Ascensore, determinato dividendo la fiducia dal supporto (chiamata copertura nella sezione 4.5); Sfruttamento, che è la proporzione di esempi aggiuntivi coperti sia dalla premessa che dai conseguenti al di là di quelli attesi se la premessa e conseguenti sono stati statisticamente indipendenti; E Conviction, una misura definita da Brin et al. (1997). È inoltre possibile specificare un livello di significatività e le norme saranno testate per significatività a questo livello.<br /><br /> PredictiveApriori combina fiducia e supporto in una sola misura di precisione predittiva (Scheffer 2001) e trova le migliori regole di associazione n in ordine. All'interno, l'algoritmo aumenta successivamente la soglia di sostegno, in quanto il valore della precisione predittiva dipende da esso. Tertius trova regole secondo una misura di conferma (Flach e Lachiche 1999), cercando regole con molteplici condizioni nel conseguente, come Apriori, ma differente in quanto queste condizioni sono OR insieme, non ANDed. Può essere impostato per trovare le regole che prevedono una singola condizione o un attributo predeterminato (cioè le regole di classificazione). Un parametro determina se la negazione è consentita negli antecedenti, nei conseguenti o entrambi; Altri forniscono il numero di regole richieste, il minimo grado di conferma, la copertura minima, la percentuale massima di contromisure e la dimensione massima della regola. I valori mancanti possono corrispondere a qualsiasi valore, non corrispondere mai, o essere significativi e potrebbero apparire nelle regole.<br /> Attribute selection<br /><br /> La Figura 10.21 mostra la parte del pannello di selezione degli attributi di Weka in cui si specifica il criterio di attributo e il metodo di ricerca; La tabella 10.9 e la tabella 10.10 elencano le scelte. La selezione degli attributi avviene normalmente eseguendo la ricerca dello spazio dei sottotitoli degli attributi, valutando ciascuno di essi (Sezione 7.1). Ciò è ottenuto combinando uno dei quattro valutatori di sottoinsieme di attributi nella tabella 10.9 con uno dei sette metodi di ricerca nella tabella 10.10. Un approccio potenzialmente più veloce ma meno accurato è quello di valutare individualmente gli attributi e di ordinarli, eliminando gli attributi che scendono al di sotto di un punto di interruzione scelto. Ciò è ottenuto selezionando uno degli otto valutatori a singolo attributo nella tabella 10.9 e utilizzando il metodo di classificazione nella tabella 10.10. L'interfaccia Weka consente entrambe le possibilità consentendo all'utente di scegliere un metodo di selezione dalla tabella 10.9 e da un metodo di ricerca della tabella 10.10, generando un messaggio di errore se si seleziona una combinazione inappropriata. La riga di stato ti riferisce al registro degli errori del messaggio (vedere la fine della sezione 10.1).<br /><br /> La Figura 10.21 mostra la parte del pannello di selezione degli attributi di Weka in cui si specifica il criterio di attributo e il metodo di ricerca; La tabella 10.9 e la tabella 10.10 elencano le scelte. La selezione degli attributi avviene normalmente eseguendo la ricerca dello spazio dei sottotitoli degli attributi, valutando ciascuno di essi (Sezione 7.1). Ciò è ottenuto combinando uno dei quattro valutatori di sottoinsieme di attributi nella tabella 10.9 con uno dei sette metodi di ricerca nella tabella 10.10. Un approccio potenzialmente più veloce ma meno accurato è quello di valutare individualmente gli attributi e di ordinarli, eliminando gli attributi che scendono al di sotto di un punto di interruzione scelto. Ciò è ottenuto selezionando uno degli otto valutatori a singolo attributo nella tabella 10.9 e utilizzando il metodo di classificazione nella tabella 10.10. L'interfaccia Weka consente entrambe le possibilità consentendo all'utente di scegliere un metodo di selezione dalla tabella 10.9 e da un metodo di ricerca della tabella 10.10, generando un messaggio di errore se si seleziona una combinazione inappropriata. La riga di stato ti riferisce al registro degli errori del messaggio (vedere la fine della sezione 10.1).<br /> Attribute subset evaluators<br /><br /> I valutatori del sottoinsieme prendono un sottoinsieme di attributi e restituiscono una misura numerica che guida la ricerca. Sono configurati come qualsiasi altro oggetto Weka. CfsSubsetEval valuta l'abilità predittiva di ciascun attributo singolarmente e il grado di ridondanza tra di essi, preferendo gruppi di attributi altamente correlati con la classe ma hanno una bassa intercorrelazione (Sezione 7.1). Un'opzione aggiorna iterativamente gli attributi che hanno la massima correlazione con la classe, a condizione che l'insieme non contiene già un attributo la cui correlazione con l'attributo in questione è ancora più alta. La mancanza può essere considerata come un valore separato, oppure i suoi conteggi possono essere distribuiti tra altri valori in proporzione alla loro frequenza. ConsistencySubsetEval valuta gli attributi impostati per il grado di coerenza nei valori di classe quando le istanze di formazione sono proiettate sul set. La coerenza di qualsiasi sottoinsieme di attributi non può mai migliorare rispetto a quella del set completo, in modo che questo valutatore venga usualmente utilizzato in combinazione con una ricerca casuale o esaustiva che cerca il più piccolo sottogruppo la cui coerenza è uguale a quella del set completo di attributi.<br /><br /> Mentre i valutatori di sottoinsiemi precedentemente menzionati sono i metodi di filtrazione della selezione degli attributi (Sezione 7.1), i restanti sono i metodi wrapper. ClassifierSubsetEval utilizza un classificatore, specificato nell'editor di oggetti come parametro, per valutare set di attributi sui dati di addestramento o su un set di holdout separato. WrapperSubsetEval utilizza anche un classificatore per valutare i set di attributi, ma utilizza la convalida incrociata per stimare l'accuratezza dello schema di apprendimento per ciascun set.<br /> Single-attribute evaluators<br /><br /> I valutatori a un attributo vengono utilizzati con il metodo di ricerca Ranker per generare un elenco classificato da cui Ranker scarta un dato numero (spiegato nella sottosezione successiva). Possono essere utilizzati anche nel metodo RankSearch. ReliefFAttributeEval è basato su istanza: esegue istanze casuali e controlla istanze vicine delle stesse e diverse classi (Sezione 7.1). Funziona su dati di classe discreti e continui. Parametri specificano il numero di istanze da campionare, il numero di vicini da controllare, se pesare i vicini per distanza e una funzione esponenziale che governa quanto velocemente i pesi decadono con la distanza.<br /><br /> InfoGainAttributeEval valuta gli attributi misurando il loro guadagno di informazioni rispetto alla classe. Discretizza gli attributi numerici innanzitutto utilizzando il metodo di discretizzazione basato su MDL (può essere impostato per binarizzare invece). Questo metodo, insieme ai tre successivi, può trattare mancanti come un valore separato o distribuire i conteggi tra altri valori in proporzione alla loro frequenza. ChiSquaredAttributeEval valuta gli attributi computando la statistica chi-squared rispetto alla classe. GainRatioAttributeEval valuta gli attributi misurando il loro rapporto di guadagno rispetto alla classe. SymmetricalUncertAttributeEval valuta un attributo A misurando la sua incertezza simmetrica rispetto alla classe C (Sezione 7.1, pagina 291).<br /><br />OneRAttributeEval utilizza la misura di precisione semplice adottata dal OneRclassifier. Può utilizzare i dati di formazione per la valutazione, come OneR, oppure può applicare la convalida interna: il numero di pieghe è un parametro. Adotta il metodo di discretizzazione di OneR: la dimensione minima della benna è un parametro.<br /><br /> SVMAttributeEval valuta gli attributi utilizzando l'eliminazione delle funzionalità ricorsive con una macchina vettoriale lineare di supporto (Sezione 7.1, pagina 291). Gli attributi sono selezionati uno per uno in base alla dimensione dei loro coefficienti, ricognendo dopo ciascuno. Per accelerare le cose, un numero fisso (o proporzione) di attributi può essere rimosso in ogni fase. Infatti, una percentuale può essere utilizzata fino a quando un certo numero di attributi rimangono, passando poi al metodo del numero fisso - eliminando rapidamente molti attributi e poi considerando ciascuno di essi in modo più intenso. Vari parametri vengono passati alla macchina vettore di supporto: complessità, epsilon, tolleranza e il metodo di filtraggio utilizzato.A differenza di altri valutatori a singolo attributo, PrincipalComponents trasforma l'insieme di attributi. I nuovi attributi sono classificati in ordine dei loro valori di origine (Sezione 7.3, pagina 306); Facoltativamente, viene selezionato un sottoinsieme scegliendo sufficienti autovettori per rappresentare una determinata percentuale della varianza (95% per impostazione predefinita). Puoi anche usarlo per trasformare i dati ridotti nello spazio originale.<br /> Search methods<br /><br /> I metodi di ricerca attraversano lo spazio attributo per trovare un buon sottoinsieme. La qualità viene misurata dal valutatore di sottoinsieme degli attributi scelti. Ogni metodo di ricerca può essere configurato con l'editor di oggetti di Weka. BestFirst esegue arrampicata grezza con backtracking; È possibile specificare quanti nodi non-migliorati consecutivi devono essere rilevati prima che il backtracks del sistema venga eseguito. Può eseguire la ricerca in avanti dall'insieme vuoto di attributi, all'indietro dall'insieme completo oa partire da un punto intermedio (specificato da un elenco di indici di attributo) e la ricerca in entrambe le direzioni considerando tutte le eventuali aggiunte e cancellazioni a un attributo.I sottogruppi che sono stati valutati vengono memorizzati per efficienza; La dimensione della cache è un parametro.<br /><br /> GreedyStepwise cerca con avidità lo spazio dei sottotitoli di attributi. Come BestFirst, può avanzare avanti dal set vuoto o indietro dal set completo. A differenza di BestFirst, non viene eseguito il backup ma termina non appena aggiungendo o eliminando il miglior attributo restante diminuisce la metrica di valutazione. In una modalità alternativa, classifica gli attributi attraversando lo spazio da vuoto a pieno (o viceversa) e registrando l'ordine in cui gli attributi sono selezionati. È possibile specificare il numero di attributi per mantenere o impostare una soglia al di sotto del quale gli attributi vengono scartati.<br /> La ricerca di corsa, usata con ClassifierSubsetEval, calcola l'errore di convalida incrociata dei sottoinsiemi di attributi concorrenti utilizzando la ricerca di corsa (Sezione 7.1). Le quattro diverse ricerche descritte a pagina 295 vengono implementate: selezione avanti, eliminazione all'indietro, ricerca di scansioni e racing di rango. Nell'ultimo caso, un valutatore di attributo separato (che può anche essere specificato) viene utilizzato per generare una graduatoria iniziale. Utilizzando la selezione in avanti, è anche possibile generare un elenco di attributi classificato dalla corsa continua finché non sono stati selezionati tutti gli attributi: la classifica è impostata sull'ordine in cui vengono aggiunti. Come con GreedyStepwise, è possibile specificare il numero di attributi per mantenere o impostare una soglia al di sotto del quale gli attributi vengono scartati.<br /><br /> GeneticSearch utilizza un semplice algoritmo genetico (Goldberg 1989). Parametri includono la dimensione della popolazione, il numero di generazioni e le probabilità di crossover e mutazione. È possibile specificare un elenco di indici di attributo come punto di partenza, che diventa membro della popolazione iniziale. I rapporti di avanzamento possono essere generati ogni tante generazioni. RandomSearch ricerca casualmente lo spazio dei sottotitoli di attributo. Se viene fornito un set iniziale, esegue la ricerca di sottoinsiemi che migliorano (o uguagli) il punto di partenza e hanno meno (o lo stesso numero di) attributi. Altrimenti, inizia da un punto casuale e segnalerà il miglior sottoinsieme trovato. Il posizionamento di tutti gli attributi nel set iniziale rende algoritmo di selezione probabilistica di Liu e Setiono (1996). È possibile determinare la frazione dello spazio di ricerca da esplorare. ExhaustiveSearch ricerca attraverso lo spazio dei sottotitoli di attributo, a partire dall'insieme vuoto e segnalerà il miglior sottoinsieme trovato. Se viene fornito un set iniziale, cerca da questo punto di partenza e segnalerà il sottoinsieme più piccolo con una valutazione migliore (o uguale).<br /> RankSearch ordina gli attributi utilizzando un singolo attributo valutatore e quindi elenca sottoinsiemi promettenti utilizzando un valutatore di sottotitoli di attributo. Quest'ultimo è specificato nella casella superiore della Figura 10.21, come al solito; Il valutatore di attributo viene specificato come una proprietà nell'editor di oggetto RankSearch. Comincia ordinando gli attributi con il singolo attributo valutatore e quindi valuta i sottoinsiemi di dimensioni crescenti utilizzando il valutatore del sottoinsieme: il miglior attributo, il miglior attributo più il successivo migliore, e così via, segnalando il miglior sottoinsieme. Questa procedura ha una bassa complessità computazionale: il numero di volte in cui entrambi i valutatori sono chiamati è lineare nel numero di attributi. Utilizzando un semplice singolo attributo di valutazione (ad esempio, GainRatioAttributeEval), la procedura di selezione è molto veloce.<br /><br /> Finally we describe Ranker, which as noted earlier is not a search method for attribute subsets but a ranking scheme for individual attributes. Determina gli attributi per le loro valutazioni individuali e deve essere utilizzato in combinazione con uno dei valutatori a un attributo nella parte inferiore della Tabella 10.9 - non un valutatore di sottotitoli di attributo. Il Ranker non solo classifica gli attributi, ma esegue anche la selezione degli attributi rimuovendo quelli inferiori. È possibile impostare una soglia di intervallo al di sotto del quale gli attributi vengono scartati o specificare quanti attributi da conservare. È possibile specificare alcuni attributi che devono essere conservati indipendentemente dal loro rango.<br /> The Knowledge Flow Interface<br /><br /> Con l'interfaccia Knowledge Flow, gli utenti selezionano i componenti Weka da una barra degli strumenti, li posizionano su una tela di layout e li collegano in un grafico diretto che elabora e analizza i dati. Fornisce un'alternativa all'Explorer per coloro che amano pensare in termini di flusso di dati attraverso il sistema. Consente inoltre la progettazione e l'esecuzione di configurazioni per l'elaborazione dati in streaming, che l'Explorer non può fare. Si invoca l'interfaccia Knowledge Flow selezionando KnowledgeFlow dalle scelte in fondo al pannello mostrato nella Figura 10.3 (a).<br /> Getting started<br /><br /> Ecco un esempio passo per passo che carica un file ARFF e esegue una convalida incrociata utilizzando J4.8. Descriviamo come costruire la configurazione finale mostrata in Figura 11.1. Innanzitutto creare una fonte di dati facendo clic sulla scheda DataSources (voce più a destra nella barra in alto) e selezionando ARFFLoader dalla barra degli strumenti. Il cursore del mouse cambia in crosshairs per segnalare che dovresti posizionare il componente successivamente. Fai clic su un punto qualsiasi sulla tela, quindi compare una copia dell'icona del caricatore ARFF. Per collegarlo ad un file ARFF, fare clic con il pulsante destro del mouse per visualizzare il menu a comparsa mostrato in Figura 11.2 (a). Fare clic su Configura per ottenere il browser di file in Figura 11.2 (b), da cui si seleziona il file ARFF desiderato. Il menu a discesa Formato file consente di scegliere un diverso tipo di origine dati, ad esempio i file di fogli di calcolo.<br /> Adesso specifichiamo quale attributo è la classe usando un oggetto ClassAssigner. Questo è nel pannello Valutazione, quindi fare clic sulla scheda Valutazione, selezionare ClassAssigner e inserirlo sulla tela. Per collegare l'origine dati all'assegnazione di classe, fare clic con il pulsante destro del mouse sull'icona dell'origine dati e selezionare il set di dati dal menu, come mostrato in Figura 11.2 (a). Viene visualizzata una riga di gomma. Spostare il mouse sopra il componente di assegnazione della classe e fare clic con il pulsante sinistro. Viene visualizzata una linea rossa denominata set di dati, unendo i due componenti. Dopo aver collegato l'assegnatore di classe, scegliere la classe facendo clic con il pulsante destro del mouse, selezionando Configura e inserendo la posizione dell'attributo di classe.<br /><br /> Effettuiamo la convalida incrociata sul classificatore J48. Nel modello di flusso di dati, è necessario collegare la CrossValidationFoldMaker per creare le pieghe su cui verrà eseguito il classificatore e quindi passare l'output a un oggetto che rappresenta J48. Cross-ValidationFoldMaker è sul pannello Valutazione. Selezionarlo, inserirlo sulla tela e collegarlo all'assistente di classe facendo clic con il pulsante destro del mouse su quest'ultimo e selezionando il set di dati dal menu (che è simile a quello in Figura 11.2 (a)). Avanti selezionare J48 dal pannello Classifiers e posizionare un componente J48 sulla tela. Ci sono così tanti classificatori differenti che devi scorrere lungo la barra degli strumenti per trovarlo. Connettere J48 al creatore di piegatura a croce di convalida nel modo consueto, ma fai due volte la connessione scegliendo di courseSet e quindi scegliendo testSet dal menu a comparsa per il creatore di piegatura di convalida incrociata. Il passo successivo è quello di selezionare un ValutazionePerformanceEvaluator dal pannello Valutazione e collegare J48 ad esso selezionando la voce batchClassifier dal menu a comparsa per J48. Infine, dalla barra degli strumenti di visualizzazione, posiziona un componente TextViewer sulla tela. Connettere il valutatore delle prestazioni del classificatore selezionando la voce di testo dal menu a comparsa per il valutatore delle prestazioni.<br /> A questo punto la configurazione è come mostrato nella Figura 11.1 a meno che non esiste ancora nessun visualizzatore di grafici. Avviare il flusso di esecuzione selezionando Caricamento inizio dal menu a comparsa per il caricatore ARFF, mostrato nella Figura 11.2 (a). Per un piccolo set di dati, le cose succedono rapidamente, ma se l'input è grande, si vedrà che alcune delle icone sono animate: ad esempio, l'albero di J48 sembra crescere e i segni di spunta del valutatore di prestazioni lampeggiano. Le informazioni di avanzamento vengono visualizzate nella barra di stato nella parte inferiore dell'interfaccia. La scelta dei risultati di visualizzazione dal menu a comparsa del visualizzatore di testo porta i risultati della convalida incrociata in una finestra separata, nella stessa forma di Explorer.<br /><br /> Per completare l'esempio, aggiungere un GraphViewer e collegarlo all'output del grafico J48 per visualizzare una rappresentazione grafica degli alberi prodotti per ciascuna piega della cross-Validation. Una volta ripristinata la convalida incrociata con questo componente aggiuntivo, selezionando Mostra risultati dal menu a comparsa viene creato un elenco di alberi, uno per ogni piattaforma di convalida incrociata. Creando pieghe di validazione incrociate e passandole al classificatore, il modello Knowledge Flow fornisce un modo per associare i risultati a ciascuna piega. L'Explorer non può farlo: tratta la convalida incrociata come un metodo di valutazione applicato all'uscita di un classificatore.<br /> The Knowledge Flow components<br /><br /> La maggior parte dei componenti Knowledge Flow avrà familiarità con l'Explorer. Il pannello Classifiers contiene tutti i classificatori di Weka, il pannello Filtri contiene i filtri e il pannello Clusterers contiene i cluster. Le fonti di dati possibili sono i file ARFF, i file CSV esportati da fogli di calcolo, il formato di file C4,5 e un loader di istanza serializzato per i file di dati salvati come un'istanza di un oggetto Java. Ci sono sincronizzazioni di dati e sorgenti per i formati di file supportati dall'Explorer. Esiste inoltre un data sink e un'origine dati che possono connettersi a un database.<br /> I componenti per la visualizzazione e la valutazione, elencati nella tabella 11.1, non sono ancora stati rilevati. In visualizzazione, DataVisualizer apre un pannello per visualizzare i dati in una trama bidimensionale di dispersione come nella figura 10.6 (b), in cui è possibile selezionare gli attributi che si desidera visualizzare. ScatterPlotMatrix apre una matrice di diagrammi di dispersione bidimensionale per ogni coppia di attributi, mostrata nella Figura 10.16 (a). AttributeSummarizer fornisce una matrice di istogrammi, uno per ogni attributo, come quello nell'angolo inferiore destro della Figura 10.3 (b). ModelPerformanceChart disegna curve ROC e altre curve di soglia.<br /> GraphViewer apre un pannello per visualizzare i modelli basati sugli alberi, come nella Figura 10.6 (a). Come in precedenza, è possibile ingrandire, pan e visualizzare i dati di istanza in un nodo (se è stato salvato dall'algoritmo di apprendimento). StripChart è un nuovo componente di visualizzazione progettato per l'utilizzo con l'apprendimento incrementale. In combinazione con l'IncrementalClassifierEvaluator descritto nel prossimo paragrafo, viene visualizzata una curva di apprendimento che precisa la precisione - sia l'accuratezza percentuale che l'errore di probabilità medio-quadrato - rispetto al tempo. Mostra una finestra temporale a dimensioni fisse che scorre orizzontalmente per rivelare gli ultimi risultati.<br /><br /> Il pannello Valutazione contiene i componenti elencati nella parte inferiore della tabella 11.1. Il TrainingSetMaker e TestSetMaker creano un set di dati nel tipo di set corrispondente. CrossValidationFoldMaker costruisce le pieghe di convalida incrociate da un set di dati; TrainTestSplitMaker lo divide in set di addestramento e test tenendo parte dei dati fuori per il set di test. Il ClassAssigner consente di decidere quale attributo è la classe. Con ClassValuePicker si sceglie un valore che viene trattato come classe positiva quando genera ROC e altre curve di soglia. The ClassifierPerformanceEvaluator raccoglie statistiche di valutazione: può inviare la valutazione testuale a un visualizzatore di testo e le curve di soglia a una tabella delle prestazioni. L'IncrementalClassifierEvaluator esegue la stessa funzione per i classificatori incrementali: calcola gli errori quadrati in esecuzione e così via. C'è anche un ClustererPerformanceEvaluator, che è simile a ClassifierPerformanceEvaluator. PredictionAppender prende un classificatore e un set di dati e aggiunge le previsioni del classificatore al set di dati.<br /> Configuring and connecting the components<br /><br /> È possibile stabilire il flusso di conoscenza configurando i singoli componenti e collegandoli. La Figura 11.3 mostra le operazioni tipiche disponibili facendo clic con il pulsante destro del mouse sui vari tipi di componenti. Questi menu hanno fino a tre sezioni: Modifica, Connessioni e Azioni. Le operazioni Edit eliminano i componenti e aprono il loro pannello di configurazione. I classificatori ei filtri sono configurati come nell'esploratore. Le sorgenti dati vengono configurate aprendo un file (come abbiamo visto in precedenza) e i componenti di valutazione sono configurati impostando parametri come il numero di pieghe per la convalida incrociata. Le operazioni Azioni sono specifiche per quel tipo di componente, come ad esempio iniziare a caricare dati da un'origine dati o ad aprire una finestra per mostrare i risultati della visualizzazione. Le operazioni Connessioni vengono utilizzate per collegare i componenti insieme selezionando il tipo di connessione dal componente di origine e quindi facendo clic sull'oggetto di destinazione. Non tutti gli obiettivi sono adatti; Vengono evidenziati quelli applicabili. Le voci del menu connessioni vengono disattivate (in grigio) finché il componente riceve altre connessioni che li rendono applicabili.<br /><br /> Esistono due tipi di connessione dalle origini dati: connessioni del set di dati e connessioni di istanze. Le prime sono per operazioni di batch come classificatori come J48; Questi ultimi sono per operazioni di flusso come NaiveBayesUpdateable. Un componente di origine dati non è in grado di fornire entrambi i tipi di connessione: una volta selezionato, l'altro viene disattivato. Quando una connessione di un set di dati viene effettuata a un classificatore di batch, il classificatore deve sapere se è destinato a servire come un set di formazione o un set di test. A tale scopo, prima di eseguire l'origine dati in un set di test o formazione, utilizzare i componenti TestSetMaker o TrainingSetMaker dal pannello Valutazione. D'altra parte, una connessione di istanza a un classificatore incrementale è fatta direttamente: non vi è alcuna distinzione tra formazione e test, perché le istanze che flusso aggiornano il classificatore in modo incrementale. In questo caso viene effettuata una previsione per ogni istanza in ingresso e incorporata nei risultati del test; Allora il classificatore è addestrato in quell'istanza. Se si effettua una connessione di istanza a un classificatore batch, verrà utilizzata come istanza di prova perché la formazione non può essere incrementale, mentre il test può sempre essere. Al contrario, è abbastanza possibile testare un classificatore incrementale in modalità batch utilizzando una connessione del dataset.<br /><br /> Le connessioni provenienti da un componente di filtro vengono abilitate quando riceve un input da un'origine dati, quindi è possibile eseguire il set di dati di follow-on o le connessioni di istanze. Le connessioni di istanza non possono essere effettuate su filtri sorvegliati o su filtri non pervisibili che non possono gestire i dati in modo incrementale (ad esempio Discretize). Per ottenere un test o una formazione impostati da un filtro, è necessario inserire il tipo appropriato. Il menu classifica contiene due tipi di connessione. Il primo tipo, cioè le connessioni di grafici e di testo, fornisce rappresentazioni grafiche e testuali dello stato di apprendimento del classificatore e viene attivato solo quando riceve un input di formazione. L'altro tipo, cioè le connessioni batchClassifier e incrementalClassifier, rende i dati disponibili a un valutatore delle prestazioni e viene attivato solo quando è presente un input di test set. Quale è attivato dipende dal tipo di classificatore.<br /> I componenti di valutazione sono una borsa mista. TrainingSetMaker e TestSetMaker trasformano un set di dati in un set di formazione o test. CrossValidationFoldMaker trasforma un set di dati sia in un set di formazione che in un set di test. ClassifierPerformanceEvaluator (utilizzato nell'esempio di Sezione 11.1) genera output testuale e grafico per i componenti di visualizzazione. Altri componenti di valutazione funzionano come filtri: permettono il set di dati di follow-on, l'istanza, l'addestramento o le connessioni di test set in base all'ingresso (ad esempio ClassAssigner assegna una classe a un set di dati). I componenti di visualizzazione non dispongono di connessioni, anche se alcune hanno azioni come Mostra risultati e Cancella risultati.<br /><br /> Incremental learning<br /><br /> In molti casi l'interfaccia Knowledge Flow è funzionalmente simile all'Explorer: puoi fare cose simili con entrambe. Fornisce una certa flessibilità aggiuntiva - ad esempio, è possibile vedere l'albero che J48 fa per ciascuna piega di conferma della croce. Ma la sua vera forza è il potenziale per un funzionamento incrementale.<br /><br /> Weka ha diversi classificatori che possono gestire i dati in modo incrementale: AODE, una versione di studenti Naïve Bayes (NaiveBayesUpdateable), Winnow e basati su istanze (IB1, IBk, KStar, LWL). Il metalearner RacedIncrementalLogitBoost funziona in modo incrementale (pagina 416). Tutti i filtri che esegue l'istanza per esempio sono incrementali: Aggiungi, AddExpression, Copia, FirstOrder, MakeIndicator, Merge-TwoValues, NonSparseToSparse, NumericToBinary, NumericTransform, Obfuscate, RemoveType, RemoveWithValues, SparseToNonSparse e SwapValues. Se tutti i componenti collegati nell'interfaccia di flusso di conoscenza funzionano in modo incrementale, il sistema di apprendimento risulta così. Non si legge nel dataset prima dell'inizio dell'apprendimento, come esegue l'Explorer. Invece, il componente di origine dati legge l'istanza di input per istanza e lo passa attraverso la catena Knowledge Flow.<br /><br /> La Figura 11.4 (a) mostra una configurazione che funziona in modo incrementale. Una connessione di istanza viene eseguita dal caricatore al classificatore Naïve Bayes aggiornabile. L'output del testo del classificatore viene portato a un visualizzatore che fornisce una descrizione testuale del modello. Inoltre, viene effettuata una connessione incrementalClassifier al valutatore di prestazioni corrispondente. Ciò produce un'uscita di tipo grafico, che viene piped in un componente di visualizzazione grafico a striscia per generare una traccia di dati a scorrimento.<br /><br /> La Figura 11.4 (b) mostra l'output della tabella a nastro. Compila sia l'accuratezza che l'errore di probabilità medio-quadrato di root rispetto al tempo. Quando il tempo passa, l'intera trama (compresi gli assi) si sposta a sinistra per fare spazio a nuovi dati sulla destra. Quando l'asse verticale che rappresenta il tempo 0 può muoversi a sinistra non più, si ferma e l'origine del tempo inizia ad aumentare da 0 per mantenere il passo con i dati in arrivo a destra. Quindi, quando il grafico è pieno, mostra una finestra delle unità di tempo più recenti. Il grafico a strisce può essere configurato per modificare il numero di istanze visualizzate sull'asse x.<br /><br /> Questa configurazione Knowledge Flow particolare può elaborare file di input di qualsiasi dimensione, anche quelli che non si inseriscono nella memoria principale del computer. Tuttavia, tutto dipende da come il classificatore opera internamente. Ad esempio, anche se sono incrementali, molti studenti basati sull'istanza memorizzano internamente l'intero set di dati.<br /> The Experimenter<br /><br />Gli ambienti Explorer e Knowledge Flow consentono di determinare in che modo i sistemi di apprendimento delle macchine eseguono su determinati set di dati. Ma i lavori di indagine gravi comportano esperienze sostanziali, in genere eseguendo diversi schemi di apprendimento su set di dati diversi, spesso con varie impostazioni dei parametri, e queste interfacce non sono realmente adatte per questo. Il Experimenter ti consente di impostare esperimenti su larga scala, avviarli in esecuzione, lasciarli e tornare quando finiscono e analizzeranno le statistiche sulle prestazioni che sono state raccolte. Esse automatizzano il processo sperimentale. Le statistiche possono essere memorizzate in formato ARFF e possono essere oggetto di ulteriore data mining. Si invoca questa interfaccia selezionando Experimenter dalle scelte nella parte inferiore del pannello di Figura 10.3 (a).<br /><br />Mentre il flusso di conoscenza trascende le limitazioni dello spazio, consentendo di eseguire operazioni di apprendimento automatico che non si caricano in un insieme di dati contemporaneamente, il Experimenter trascende le limitazioni del tempo. Contiene strutture per gli utenti avanzati di Weka per distribuire il carico di calcolo su più macchine utilizzando Java RMI. È possibile impostare grandi esperimenti e lasciarli correre.<br /> Getting started<br /><br /> Ad esempio, confronteremo il metodo dell'albero decisionale J4.8 con i metodi di base OneR e ZeroR sul dataset Iris. Il Experimenter dispone di tre pannelli: Setup, Esegui e Analizza. La Figura 12.1 (a) mostra la prima: seleziona gli altri dalle schede in alto. Qui, l'esperimento è già stato impostato. Per fare questo, fai clic su Nuovo (verso destra in alto) per avviare un nuovo esperimento (gli altri due pulsanti in quella riga salvano un esperimento e aprono uno precedentemente salvato). Quindi, nella riga sottostante, selezionare la destinazione dei risultati - in questo caso il file Experiment1 - e scegliere il file CSV. Sotto, selezionare i set di dati, abbiamo solo uno, i dati dell'iride. A destra dei set di dati, selezionare gli algoritmi da testare, abbiamo tre. Fare clic su Aggiungi nuovo per ottenere un editor di oggetti standard Weka da cui è possibile scegliere e configurare un classificatore. Ripetere questa operazione per aggiungere i tre classificatori. Ora l'esperimento è pronto. Le altre impostazioni mostrate nella Figura 12.1 (a) sono tutti valori predefiniti. Se si desidera riconfigurare un classificatore già presente nell'elenco, è possibile utilizzare il pulsante Modifica selezionato. È inoltre possibile salvare le opzioni per un determinato classificatore in formato XML per il successivo riutilizzo.<br /><br /> Figure 12.1 An experiment:<br /> Running an experiment<br /><br /> Per eseguire l'esperimento, fare clic sulla scheda Esegui, che visualizza un pannello che contiene un pulsante di avvio (e poco altro); cliccalo. Una breve relazione viene visualizzata quando l'operazione è terminata. Il file Experiment1.csv contiene i risultati. Le prime due righe sono illustrate nella Figura 12.1 (b): sono in formato CSV e possono essere lette direttamente in un foglio di calcolo, la prima parte della quale figura nella Figura 12.1 (c). Ogni riga rappresenta 1 passaggio di una convalida incrociata di 10 volte (vedere la colonna Piega). La convalida incrociata viene eseguita 10 volte (la colonna Esegui) per ogni classificatore (la colonna Schema). Così il file contiene 100 righe per ogni classificatore, che rende 300 righe in tutto (più la riga di intestazione). Ogni riga contiene molte informazioni - 46 colonne, infatti - incluse le opzioni fornite allo schema di apprendimento macchina; Il numero di istituti di formazione e di prova; Il numero (e la percentuale) di istanze corrette, non corrette e non classificate; L'errore assoluto medio, l'errore medio-quadrato root e molti altri. C'è una grande quantità di informazioni nel foglio di calcolo, ma è difficile da digerire. In particolare, non è facile rispondere alla domanda posta in precedenza: come confronta J4.8 con i metodi di base OneR e ZeroR su questo set di dati? Per questo abbiamo bisogno del pannello Analizza.<br /> Analyzing the results<br /><br /> Il motivo per cui abbiamo generato l'output in formato CSV è stato quello di mostrare il foglio di diffusione in Figura 12.1 (c). Il Experimenter normalmente produce la sua uscita in formato ARFF. È inoltre possibile lasciare vuoto il nome del file, nel qual caso l'Experimenter memorizza i risultati in un file temporaneo.<br /><br /> Il pannello Analizza è mostrato in Figura 12.2. Per analizzare l'esperimento appena eseguito, fai clic sul pulsante Esperimento a destra vicino alla parte superiore; Altrimenti, fornire un file che contiene i risultati di un altro esperimento. Quindi fare clic su Esegui test (vicino alla parte inferiore a sinistra). Il risultato di un test di significatività statistica delle prestazioni del primo schema di apprendimento (J48) rispetto a quello degli altri due (OneR e ZeroR) verrà visualizzato nel pannello di grandi dimensioni a destra. Stiamo confrontando la percentuale statistica corretta: questa viene selezionata per impostazione predefinita come il campo di confronto mostrato verso sinistra di Figura 12.2. I tre metodi sono visualizzati orizzontalmente, numerati (1), (2) e (3) come titolo di una piccola tavola. Le etichette per le colonne vengono ripetute nei piani inferiori.J48, rules.OneR e rules.ZeroR - in caso non vi sia spazio sufficiente per loro nella voce. Gli interi inscrucibili accanto ai nomi del sistema identificano quale versione dello schema viene utilizzata. Essi sono presenti per impostazione predefinita per evitare confusione tra i risultati generati utilizzando diverse versioni degli algoritmi. Il valore tra parentesi all'inizio della riga dell'iride (100) è il numero di prove sperimentali: 10 volte la convalida incrociata di 10 volte<br /><br /> La percentuale corretta per i tre schemi è riportata in Figura 12.2: 94,73% per il metodo 1, 93,53% per il metodo 2 e 33,33% per il metodo 3. Il simbolo posto accanto a un risultato indica che è Statisticamente migliore (v) o peggio (*) Rispetto allo schema di base - in questo caso J4.8 - al livello di significato specificato (0,05 o 5%). Viene utilizzato il test t-test riselezionato da Sezione 5.5 (pag.157). Qui il metodo 3 è significativamente peggiore del metodo 1, perché il suo tasso di successo è seguito da un asterisco. Nella parte inferiore delle colonne 2 e 3 sono conteggi (x / y / z) del numero di volte in cui lo schema era migliore di (x) uguale a (y) o peggiore di (z) lo schema di base nel set di Dati Utilizzati nell'esperimento. In questo caso esiste solo un set di dati; Il metodo 2 era equivalente al metodo 1 (la linea di base) una volta, e il metodo 3 era più grave di una volta. (L'annotazione (v / / *) è posta in fondo alla colonna 1 per aiutarti a ricordare i significati dei tre conteggi x / y / z.)<br /> Simple setup<br /><br /> Nel pannello di installazione mostrato in Figura 12.1 (a) abbiamo lasciato la maggior parte delle opzioni ai valori predefiniti. L'esperimento è una convalida incrociata di 10 volte ripetuta 10 volte. È possibile modificare il numero di pieghe nella casella a sinistra centrale e il numero di ripetizioni nella casella a destra centrale. Il tipo di esperimento è classificazione; È possibile specificare invece la regressione. È possibile scegliere più set di dati, nel qual caso ciascun algoritmo viene applicato a ciascun set di dati e modificare l'ordine di iterazione utilizzando i primi pulsanti di dati prima e di Algoritmo. L'alternativa alla convalida incrociata è il metodo di holdout. Ci sono due varianti, a seconda che l'ordine del set di dati sia mantenuto o che i dati siano randomizzati. È possibile specificare la percentuale di divisione (l'impostazione predefinita è due terzi di formazione e un terzo set di test).<br /> Le impostazioni sperimentali possono essere salvate e riaperte. È possibile apprendere le impostazioni premendo il pulsante Note, che visualizza una finestra di modifica. Gli utenti seri di Weka scoprono presto la necessità di aprire un esperimento e di rieseguirlo con alcune modifiche, forse con un nuovo set di dati o un nuovo algoritmo di apprendimento. Sarebbe bello evitare di ricalcolare tutti i risultati già ottenuti! Se i risultati sono stati inseriti in un database piuttosto che un file ARFF o CSV, questo è esattamente quello che accade. È possibile scegliere database JDBC nel selettore di destinazione dei risultati e connettersi a qualsiasi database con un driver JDBC. Devi specificare l'URL del database e immettere un nome utente e una password. Per fare questo lavoro con il tuo database, potrebbe essere necessario modificare il file weka / experiment / DatabaseUtils.props nella distribuzione Weka. Se si modifica un esperimento che utilizza un database, Weka riutilizza i risultati precedentemente calcolati ogni volta che sono disponibili. Questo semplifica notevolmente il tipo di sperimentazione iterativa che tipicamente caratterizza la ricerca di data mining.<br /> Advanced setup<br /><br /> Lo sperimentatore ha una modalità avanzata. Fare clic vicino alla parte superiore del pannello mostrato nella Figura 12.1 (a) per ottenere la versione più formidabile del pannello mostrato in Figura 12.3. Ciò allarga le opzioni disponibili per controllare l'esperimento, inclusa, ad esempio, la capacità di generare curve di apprendimento. Tuttavia, la modalità avanzata è difficile da usare, e la versione semplice è sufficiente per la maggior parte degli scopi. Ad esempio, in modalità avanzata è possibile impostare un'iterazione per testare un algoritmo con una successione di valori diversi di parametri, ma lo stesso effetto può essere raggiunto in modalità semplice mettendo più volte l'algoritmo nell'elenco con diversi valori di parametro. Qualcosa che potrebbe essere necessario per la modalità avanzata per è impostare esperimenti distribuiti, che descriviamo nella sezione 12.5.<br /> The Analyze panel<br /><br /> Il nostro passaggio ha utilizzato il pannello Analizza per eseguire un test di significato statistico di uno schema di apprendimento (J48) rispetto a due altri (OneR e ZeroR). Il test era sul tasso di errore: il campo di confronto in Figura 12.2. Le altre statistiche possono essere selezionate dal menu a discesa invece: percentuale non corretta, percentuale non classificata, errore medio medio quadrato, altre misure di errore dalla tabella 5.8 (pag. 178) e varie figure di entropia. Inoltre, è possibile vedere la deviazione standard dell'attributo che viene valutato selezionando la casella di controllo Mostra deviazioni std.<br /> Utilizza il menu Base di selezione per modificare lo schema di base da J4.8 a uno degli altri sistemi di apprendimento. Ad esempio, la selezione di OneR provoca l'confrontabilità degli altri con questo schema. In realtà, ciò mostrerebbe una differenza statisticamente significativa tra OneR e ZeroR ma non tra OneR e J48. Oltre ai sistemi di apprendimento, esistono altre due opzioni nel menu Select base: Riepilogo e Ranking. Il primo confronta ogni schema di apprendimento con ogni altro schema e stampa una matrice le cui celle contengono il numero di set di dati su cui uno è significativamente migliore dell'altro. Quest'ultimo classifica gli schemi in base al numero totale di set di dati che rappresentano vincite (>) e perdite (<) e stampa una tabella di lega. La prima colonna dell'uscita fornisce la differenza tra il numero di vittorie e il numero di perdite.<br /><br /> I campi Riga e Colonna determinano le dimensioni della matrice di confronto. Facendo clic su Seleziona viene visualizzato un elenco di tutte le funzionalità che sono state misurate nell'esperimento, ovvero le etichette delle colonne del foglio di calcolo in Figura 12.1 (c). È possibile selezionare quali da utilizzare come righe e colonne della matrice. (La selezione non viene visualizzata nella casella Seleziona perché possono essere scelte contemporaneamente più parametri.) La Figura 12.4 mostra quali sono le voci selezionate per le righe e le colonne di Figura 12.2. Le due liste mostrano i parametri sperimentali (le colonne del foglio di calcolo). Il set di dati è selezionato per le righe (e in questo caso è solo uno, il set di dati Iris) e sono selezionati Schema, Scheme e Scheme_version_ID per la colonna (la convenzione abituale del selettore di selezione seleziona più voci). Tutti e tre si possono vedere nella Figura 12.2 - infatti, sono più facilmente leggibili nella chiave in basso.<br /> Se le selezioni di riga e colonna sono state scambiate e il pulsante Test di esecuzione è stato nuovamente premuto, la matrice sarebbe stata trasposta, dando il risultato alla figura 12.4 (c). Adesso esistono tre righe, una per ogni algoritmo e una colonna, per il singolo set di dati. Se invece la riga di Dataset è stata sostituita da Run e il test è stato eseguito nuovamente, il risultato sarebbe come nella Figura 12.4 (d). L'esecuzione si riferisce alle esecuzioni della convalida incrociata, di cui sono 10, quindi ci sono ora 10 righe. Il numero tra parentesi dopo ogni etichetta di riga (100 in Figura 12.4 (c) e 10 in Figura 12.4 (d)) è il numero di risultati corrispondenti a quella riga - in altre parole, il numero di misurazioni che partecipano alle medie visualizzate Le cellule in quella riga. C'è anche un pulsante che consente di selezionare un sottoinsieme di colonne da visualizzare (la colonna di base è sempre inclusa) e un'altra che consente di selezionare il formato di output: testo normale (predefinito), output per il sistema di composizione LaTeX e Formato CSV.<br /> Distributing processing over several machines<br /><br /> Una caratteristica straordinaria del Experimenter è che può dividere un esperimento e distribuirlo attraverso diversi processori. Questo è per gli utenti avanzati di Weka ed è disponibile solo dalla versione avanzata del pannello di installazione. Alcuni utenti evitare di lavorare con questo pannello impostando l'esperimento sulla versione semplice e passando alla versione avanzata per distribuirlo, poiché la struttura dell'esperimento viene preservata quando si passa. Tuttavia, la distribuzione di un esperimento è una caratteristica avanzata e spesso è difficile. Ad esempio, le autorizzazioni di file e directory possono essere difficili da impostare.<br /> Distribuire un esperimento funziona meglio quando i risultati vengono tutti inviati a un database centrale selezionando il database JDBC come destinazione dei risultati nel pannello mostrato nella Figura 12.1 (a). Utilizza la funzione RMI e funziona con qualsiasi database con un driver JDBC. E 'stato testato su diversi database disponibili liberamente. In alternativa, è possibile istruire ogni host per salvare i risultati in un altro file ARFF e unire i file in seguito.<br /><br /> Per distribuire un esperimento, ciascun host deve (1) avere installato Java, (2) avere accesso a tutti i set di dati che si sta utilizzando e (3) eseguire il server di esperimenti weka.experiment.RemoteEngine. Se i risultati vengono inviati a un database centrale, è necessario installare i driver JDBC appropriati su ciascun host. Ottenere tutto questo è la parte difficile di eseguire esperimenti distribuiti. Per avviare un server di sperimentazione del motore remoto in una macchina host, prima copiate remoteExperimentServer.jar dalla distribuzione Weka in una directory dell'host. Disimballalo con<br /><br /><br /><br />jar xvf remoteExperimentServer.jar<br /><br /><br />Espande a due file: remoteEngine.jar, un file jar eseguibile che contiene il server di esperimento e remote.policy. Il file remote.policy consente l'autorizzazione del motore remoto per eseguire determinate operazioni, ad esempio la connessione a porte o l'accesso a una directory. Deve essere modificato per specificare percorsi corretti in alcune delle autorizzazioni; Questo è esplicativo quando si esamina il file. Per impostazione predefinita, specifica che il codice può essere scaricato sulla porta HTTP 80 da qualsiasi punto del Web, ma i motori remoti possono anche caricare il codice da un URL di file. Per disporre questo, deselezionare l'esempio e sostituire il percorso in modo appropriato. Anche i motori remoti devono essere in grado di accedere ai set di dati utilizzati in un esperimento (vedere la prima voce in remote.policy). I percorsi dei set di dati sono specificati nel Experimenter (cioè il client) e gli stessi percorsi devono essere applicabili nel contesto dei motori remoti. Per agevolare questo, potrebbe essere necessario specificare i percorsi relativi relativi selezionando la casella di selezione Utilizza percorsi relativi visualizzata nel pannello di installazione di Experimenter.<br /><br /><br /><br />Per avviare il server motore remoto digitare<br /><br /><br /> java -classpath remoteEngine.jar:<path_to_any_jdbc_drivers><br /> -Djava.security.policy=remote.policy weka.experiment.RemoteEngine<br /><br /><br />Dalla directory contenente remoteEngine.jar. Se tutto va bene vedrai questo messaggio (o qualcosa di simile):<br /><br /> ...<br /><br /><br />Nonostante le apparenze iniziali, questa è una buona notizia! La connessione è stata rifiutata perché non era in esecuzione alcun registro RMI su quel server, e quindi il motore remoto è stato avviato. Ripetere il processo su tutti gli host. Non ha senso spostare più di un motore remoto su una macchina. Avviare l'Experimenter digitando<br /><br /><br />java -Djava.rmi.server.codebase=<URL_for_weka_code> weka.gui.experiment.Experimenter<br /><br /><br /> L'URL indica dove i motori remoti possono trovare il codice da eseguire. Se l'URL indica una directory (cioè quella che contiene la directory Weka) piuttosto che un file jar, deve terminare con il separatore di percorso (ad esempio, /).<br /> Il pannello di installazione avanzato di Experimenter nella Figura 12.3 contiene un piccolo riquadro a sinistra centrale che determina se un esperimento verrà distribuito o no. Questo è normalmente inattivo. Per distribuire l'esperimento, fare clic sulla casella di controllo per attivare il pulsante Hosts; Comparirà una finestra che chiede le macchine su cui distribuire l'esperimento. I nomi degli host devono essere pienamente qualificati (ad esempio, ml.cs.waikato.ac.nz).<br /> Dopo aver inserito gli host, configurare il resto dell'esperimento nel modo consueto (meglio ancora, configurarlo prima di passare alla modalità di impostazione avanzata). Quando l'esperimento viene avviato utilizzando il pannello Esegui, viene visualizzato il progresso dei subexperiment nei vari host, insieme a eventuali messaggi di errore.<br /> Distribuire un esperimento comporta la suddivisione in sottoesperimenti che RMI invia agli host per l'esecuzione. Per impostazione predefinita, gli esperimenti vengono partizionati dal set di dati, nel qual caso non ci possono essere più host di quelli esistenti. Quindi ogni sottoesperimento è autosufficiente: applica tutti gli schemi a un singolo set di dati. Un esperimento con solo alcuni set di dati può essere suddiviso per eseguire invece. Ad esempio, una convalida incrociata di 10 volte 10 volte dovrebbe essere suddivisa in 10 sottoesperimenti, 1 per ogni esecuzione.<br /> The Command-line Interface<br /><br /> Nascoste dietro le interfacce interattive di Weka - l'Explorer, il Flusso della conoscenza e l'Experimenter - sono le sue funzionalità di base. È possibile accedere in forma grezzo tramite un'interfaccia a riga di comando. Selezionare Simple CLI dalle opzioni di interfaccia in fondo alla figura 10.3 (a) per visualizzare un pannello testuale semplice con una riga nella parte inferiore in cui inserire i comandi. In alternativa, utilizzare l'interfaccia di riga di comando del sistema operativo per eseguire direttamente le classi in weka.jar, nel qual caso è necessario impostare la variabile di ambiente CLASSPATH come spiegato nel file README di Weka. <br /> Getting started<br /><br /> All'inizio della Sezione 10.1 abbiamo usato l'Explorer per invocare lo studente J4.8 sui dati meteo. Per fare la stessa cosa nell'interfaccia della riga di comando digitare nella riga nella parte inferiore del pannello di testo. Questo incantesimo chiama la macchina virtuale Java (nel CLI semplice, Java è già caricato) e l'istruisce per eseguire J4.8. Weka è organizzata in pacchetti che corrispondono a una gerarchia di directory. Il programma da eseguire è chiamato J48 e risiede nel pacchetto di alberi, che è un sottofondo di classificatori, che fa parte del pacchetto weka globale.<br /><br /><br /><br /><br /> java weka.classifiers.trees.J48 -t data/weather.arff<br /><br /><br /> La sezione successiva fornisce ulteriori dettagli sulla struttura del pacchetto. L'opzione -t consente di indicare che l'argomento successivo è il nome del file di addestramento: supponiamo che i dati meteorologici risiedano in una sottodirectory dati della directory da cui hai sparato Weka. Il risultato assomiglia al testo mostrato nella Figura 10.5. Nel CLI semplice si visualizza nel pannello sopra la riga in cui è stato digitato il comando.<br /> The structure of Weka<br /><br /> Abbiamo spiegato come richiamare schemi di filtraggio e apprendimento con l'Explorer e collegarli insieme all'interfaccia Knowledge Flow. Per andare oltre, è necessario imparare qualcosa su come Weka è messo insieme. Informazioni dettagliate e aggiornate possono essere trovate nella documentazione in linea inclusa nella distribuzione. Questo è più tecnico delle descrizioni degli schemi di apprendimento e filtraggio forniti dal pulsante Altro nell'editor degli oggetti di Explorer e Knowledge Flow. Viene generato direttamente da commenti nel codice sorgente utilizzando l'utilità Javadoc di Sun. Per capire la sua struttura, è necessario sapere come sono organizzati i programmi Java.<br /> Classes, instances, and packages<br /><br /> Ogni programma Java è implementato come classe. Nella programmazione object-oriented, una classe è una raccolta di variabili insieme ad alcuni metodi che operano su di essi. Insieme definiscono il comportamento di un oggetto appartenente alla classe. Un oggetto è semplicemente un'istanza della classe che ha valori assegnati a tutte le variabili della classe. In Java, un oggetto viene chiamato anche un'istanza della classe. Purtroppo, questo è in conflitto con la terminologia utilizzata in questo libro, dove le classi di termini e l'istanza appaiono nel contesto piuttosto diverso di apprendimento macchina. Da ora in poi, dovrai dedurre il significato previsto di questi termini dal loro contesto. Questo non è difficile e talvolta useremo l'oggetto parola anziché l'istanza di Java per rendere le cose chiare.<br /><br />In Weka, l'implementazione di un particolare algoritmo di apprendimento è incapsulata in una classe. Ad esempio, la classe J48 descritta precedentemente costruisce un albero di decisione C4.5. Ogni volta che la macchina virtuale Java esegue J48, crea un'istanza di questa classe assegnando la memoria per la creazione e la memorizzazione di un classificatore di alberi decisionali. L'algoritmo, il classificatore che costruisce e una procedura per la pubblicazione del classificatore sono tutti parte di quella istanza della classe J48.<br /><br /> I programmi più grandi sono di solito suddivisi in più di una classe. La classe J48, per esempio, non contiene in realtà alcun codice per la creazione di un albero decisionale. Esso include riferimenti a istanze di altre classi che fanno la maggior parte del lavoro. Quando ci sono molte classi, come in Weka, diventano difficili da comprendere e navigare. Java consente di organizzare classi in pacchetti. Un pacchetto è solo una directory che contiene una raccolta di classi correlate: ad esempio, il pacchetto di alberi menzionato in precedenza contiene le classi che implementano gli alberi decisionali. I pacchetti sono organizzati in una gerarchia che corrisponde alla gerarchia di directory: gli alberi sono un sottomarino del pacchetto classificatori, che è di per sé un sotto-pacchetto del pacchetto weka globale.<br /><br />Quando consultate la documentazione online generata da Javadoc dal tuo browser Web, la prima cosa che vedi è un elenco alfabetico di tutti i pacchetti in Weka, come mostrato nella Figura 13.1 (a). Qui introduciamo alcuni di loro in ordine di importanza.<br /> The weka.core package<br /><br /> Il pacchetto di base è centrale per il sistema Weka e le sue classi sono accessibili da quasi tutte le altre classi. È possibile determinare ciò che sono facendo clic sul collegamento ipertestuale weka.core, che richiama la pagina Web mostrata in Figura 13.1 (b).<br /><br /> La pagina Web della Figura 13.1 (b) è divisa in due parti: il riepilogo dell'interfaccia e il riepilogo di classe. Quest'ultimo è un elenco delle classi contenute all'interno del pacchetto e il primo elenca le interfacce che fornisce. Un'interfaccia è simile a una classe, l'unica differenza è che in realtà non faccia nulla da solo: è solo un elenco di metodi senza implementazioni reali. Altre classi possono dichiarare di "implementare" un'interfaccia particolare e di fornire codice per i suoi metodi. Ad esempio, l'interfaccia OptionHandler definisce i metodi che vengono implementati da tutte le classi che possono elaborare opzioni di riga di comando, incluse tutte le classificatrici.<br /><br /> Le classi chiave del pacchetto di base sono attributo, istanza e istanze. Un oggetto di classe Attributo rappresenta un attributo. Esso contiene il nome dell'attributo, il suo tipo e, nel caso di un attributo nominale o di stringa, i suoi possibili valori. Un oggetto di istanza di classe contiene i valori di attributo di un'istanza particolare; E un oggetto delle istanze di classe contiene un insieme ordinato di istanze, in altre parole un set di dati. Puoi imparare di più su queste classi cliccando sui loro collegamenti ipertestuali; Torniamo a loro nel capitolo 14 quando ti mostriamo come invocare schemi di apprendimento macchina da altri codice Java. Tuttavia, è possibile utilizzare Weka dalla riga di comando senza conoscere i dettagli.<br /><br /> Facendo clic sul collegamento ipertestuale Panoramica nell'angolo in alto a sinistra di una qualsiasi pagina di documentazione ti restituisce l'elenco di tutti i pacchetti in Weka mostrati nella Figura 13.1 (a).<br /> The weka.classifiers package<br /><br /> Il pacchetto classificatori contiene le implementazioni della maggior parte degli algoritmi di classificazione e di previsione numerica descritti in questo libro. (La previsione numerica è inclusa nei classificatori: viene interpretata come predizione di una classe continua.) La classe più importante di questo pacchetto è il classificatore, che definisce la struttura generale di qualsiasi schema di classificazione o di previsione numerica. Il classificatore contiene tre metodi, buildClassifier (), classifyInstance () e distributionForInstance (). Nella terminologia della programmazione object-oriented, gli algoritmi di apprendimento sono rappresentati da sottoclassi del classificatore e quindi ereditano automaticamente questi tre metodi. Ogni schema le ridefinisce in base a come costruisce un classificatore e come classifica le istanze. Questo fornisce un'interfaccia uniforme per la costruzione e l'utilizzo di classificatori da altri codici Java. Quindi, ad esempio, lo stesso modulo di valutazione può essere utilizzato per valutare le prestazioni di qualsiasi classificatore in Weka.<br /> Per vedere un esempio, fare clic su weka.classifiers.trees e quindi su DecisionStump, che è una classe per creare un semplice albero di decisione binario di un livello (con un ramo extra per i valori mancanti). La sua pagina di documentazione, mostrata in Figura 13.2, mostra il nome completo di questa classe, weka.classifiers.trees.DecisionStump, vicino alla parte superiore. Devi usare questo nome piuttosto lungo ogniqualvolta crei un blocco di decisione dalla riga di comando. Il nome della classe è collocato in una piccola struttura ad albero che mostra la parte rilevante della gerarchia di classi. Come potete vedere, DecisionStump è una sottoclasse di weka.classifiers.Classifier, che è di per sé una sottoclasse di java.lang.Object. La classe Object è quella più generale in Java: tutte le classi sono automaticamente sottoclassi.<br /><br /> Dopo alcune informazioni generiche sulla classe - breve la documentazione, la sua versione e l'autore - la Figura 13.2 fornisce un indice dei costruttori e dei metodi di questa classe. Un costruttore è un tipo speciale di metodo che si chiama ogni volta che viene creato un oggetto di questa classe, normalmente inizializzando le variabili che definiscono collettivamente il suo stato. L'indice dei metodi elenca il nome di ciascuno, il tipo di parametri che richiede e una breve descrizione della sua funzionalità. Sotto questi indici, la pagina Web fornisce maggiori dettagli sui costruttori e sui metodi. Ritorneremo a questi dettagli più tardi.<br /><br /> Come si può vedere, DecisionStump sovrascrive il metodo distributionForInstance () da Classifier: l'implementazione predefinita di classifyInstance () in Classifier utilizza quindi questo metodo per produrre le sue classificazioni. Inoltre, contiene i metodi toString (), toSource () e main (). Il primo restituisce una descrizione testuale del classificatore, usata ogni volta che viene stampata sullo schermo. Il secondo viene utilizzato per ottenere una rappresentazione del codice sorgente del classificatore esperto. Il terzo viene chiamato quando si chiede una decisione di stump dalla riga di comando, in altre parole, ogni volta che si immette un comando che inizia con <br /><br /><br /> java weka.classifiers.trees.DecisionStump<br /><br /><br /> La presenza di un metodo main () in una classe indica che può essere eseguito dalla riga di comando e che tutti i metodi di apprendimento e gli algoritmi di filtro lo implementano.<br /> Other packages<br /><br /> Vanno menzionati altri pacchetti elencati nella Figura 13.1 (a): weka.associations, weka.clusterers, weka.estimators, weka.filters e weka.attributeSelection. Il pacchetto weka.associations contiene gli allievi delle regole di associazione. Questi sono stati collocati in un pacchetto separato poiché le regole di associazione sono fondamentalmente diverse dai classificatori. Il pacchetto weka.clusterers contiene metodi per l'apprendimento non supervisionato. Il pacchetto weka.estimators contiene sottoclassi di una classe generica di stimatore, che calcola diversi tipi di distribuzione di probabilità. Queste sottoclasse vengono utilizzate dall'algoritmo Naïve Bayes (tra gli altri).<br /> Nel pacchetto weka.filters, la classe Filter definisce la struttura generale delle classi contenenti algoritmi di filtro, tutti implementati come sottoclassi del filtro. Come i classificatori, i filtri possono essere usati dalla riga di comando: vedremo quanto poco. Il pacchetto weka.attributeSelection contiene diverse classi per la selezione degli attributi. Questi vengono utilizzati dall'attributo AttributeSelectionFilter in weka.filters.supervised.attribute, ma possono anche essere invocati separatamente.<br /> Javadoc indices<br /><br /> Come accennato in precedenza, tutte le classi sono automaticamente sottoclassi di Object. Per esaminare l'albero che corrisponde alla gerarchia di classi di Weka, selezionare il collegamento Panoramica dalla parte superiore di qualsiasi pagina della documentazione in linea. Fare clic su Albero per visualizzare la panoramica come un albero che mostra quali classi sono sottoclassi o super-classi di una classe particolare, ad esempio, quali classi ereditano da Classifier. La documentazione in linea contiene un indice di tutte le variabili pubbliche accessibili (i campi chiamati) ei metodi in Weka, in altre parole, tutti i campi ei metodi che è possibile accedere dal proprio codice Java. Per visualizzarlo, fare clic su Panoramica e quindi Indice.<br /> Supponiamo che si desideri controllare quali classificatori e filtri Weka sono in grado di operare in modo incrementale. La ricerca della parola incrementale nell'indice avrebbe portato alla parola chiave UpdateableClassifier. Infatti, questa è un'interfaccia Java; Le interfacce vengono elencate dopo le classi nell'albero di riepilogo. Stai cercando tutte le classi che implementano questa interfaccia. Facendo clic su una eventuale presenza nella documentazione, viene visualizzata una pagina che descrive l'interfaccia e elenca i classificatori che lo implementano. Trovare i filtri è un po 'più complicato se non conosci la parola chiave StreamableFilter, che è il nome dell'interfaccia che effettua i dati attraverso un filtro: ancora una volta, la sua pagina elenca i filtri che lo implementano. Avresti inciampato in quella parola chiave se sapevi un esempio di un filtro che potrebbe funzionare in modo incrementale.<br /> Command-line options<br /><br /> Nell'esempio precedente, l'opzione -t è stata utilizzata nella riga di comando per comunicare il nome del file di addestramento all'algoritmo di apprendimento. Ci sono molte altre opzioni che possono essere utilizzate con qualsiasi schema di apprendimento e anche schemi specifici che si applicano solo a schemi particolari. Se si richiama uno schema senza alcuna opzione di riga di comando, esso visualizza le opzioni applicabili: prima le opzioni generali, quindi quelle specifiche al programma. Nell'interfaccia della riga di comando digitare:<br /><br /><br /> java weka.classifiers.trees.J48<br /><br /><br />Vedrai un elenco delle opzioni comuni a tutti i piani di apprendimento, mostrati nella Tabella 13.1, seguiti da quelli che si applicano solo a J48, mostrati nella Tabella 13.2. Spiegheremo le opzioni generiche e poi rivedremo brevemente gli schemi specifici.<br /> Generic options<br /><br /> Le opzioni nella tabella 13.1 determinano quali dati vengono utilizzati per la formazione e il test, come viene valutato il classificatore e quali tipi di statistiche vengono visualizzate. Ad esempio, l'opzione -T viene utilizzata per fornire il nome del file di prova durante la valutazione di uno schema di apprendimento su un set di test indipendente. Per impostazione predefinita, la classe è l'ultimo attributo in un file ARFF, ma è possibile dichiarare un altro come classe utilizzando -c seguito dalla posizione dell'attributo desiderato, 1 per il primo, 2 per il secondo e così via. Quando viene eseguita la convalida incrociata (il valore predefinito se non viene fornito un file di prova), i dati vengono prima mescolati in modo casuale. Per ripetere più volte la convalida incrociata, ogni volta che riorganizza i dati in modo diverso, impostare il numero di casuale numero con -s (valore predefinito 1). Con un grande set di dati è possibile ridurre il numero di pieghe per la convalida incrociata dal valore predefinito di 10 usando -x. Nell'Esplorer, viene valutata la valutazione sensibile ai costi come descritto nella sezione 10.1. Per ottenere lo stesso effetto dalla riga di comando, utilizzare l'opzione -m per fornire il nome di un file contenente la matrice di costo. Ecco una matrice dei costi per i dati meteorologici:<br /><br /> ....<br /><br /> La prima riga fornisce il numero di righe e colonne, cioè il numero di valori di classe. Poi viene la matrice delle sanzioni. I commenti introdotti da% possono essere aggiunti alla fine di qualsiasi riga.<br />È inoltre possibile salvare e caricare i modelli. Se si fornisce il nome di un file di output utilizzando -d, Weka salva il classificatore generato dai dati di allenamento.<br /><br /> Per valutare lo stesso classificatore su un nuovo gruppo di dati di prova, lo riprenderai utilizzando -l invece di ricostruirlo. Se il classificatore può essere aggiornato in modo incrementale, è possibile fornire sia un file di formazione che un file di input e Weka caricherà il classificatore e aggiornarlo con le istruzioni di formazione specificate. Se si desidera solo valutare le prestazioni di un programma di apprendimento, utilizzare -o per sopprimere l'output del modello. Utilizzare -i per visualizzare le misure di prestazione di precisione, richiamo e misure F (sezione 5.7). Utilizzare -k per calcolare le misure informative teoriche dalle probabilità derivate da uno schema di apprendimento (Sezione 5.6).<br /> Gli utenti di Weka spesso vogliono sapere quali classi valgono lo schema di apprendimento effettivamente prevede per ogni istanza di prova. L'opzione -p consente di stampare ogni numero di istanza del test, la sua classe, la fiducia della predizione dello schema e il valore della classe previsto. Essa inoltre emette valori di attributo per ogni istanza e deve essere seguita da una specifica dell'intervallo (ad esempio, 1-2) -use 0 se non si desidera alcun valore di attributo. È anche possibile emettere la distribuzione dei margini cumulativi per i dati di addestramento, che mostra come la distribuzione della misura di margine (Sezione 7.5, pag. 324) cambia con il numero di incrementi di iterazioni. Infine, è possibile emettere la rappresentazione di origine del classificatore e una rappresentazione grafica se il classificatore può produrre uno.<br /> Scheme-specific options<br /><br /> La tabella 13.2 mostra le opzioni specifiche di J4.8. È possibile forzare l'algoritmo per utilizzare l'albero non trattato, anziché il potato. È possibile sopprimere il sollevamento del sottosuolo, aumentando l'efficienza. È possibile impostare la soglia di fiducia per la potatura e il numero minimo di istanze consentite a qualsiasi foglio - entrambi i parametri sono descritti nel capitolo 6.1 (pagina 199). Oltre alla procedura di potatura standard C4.5, è possibile eseguire potature a errore ridotto (sezione 6.2, pagine 202-203). L'opzione -N regola la dimensione del set di holdout: il set di dati è suddiviso in maniera uguale in quel numero di parti e l'ultimo viene tirato fuori (valore predefinito 3). Puoi lisciare le stime di probabilità utilizzando la tecnica Laplace, impostare il numero di casuale numero per mescolare i dati durante la selezione di un set di potatura e memorizzare le informazioni di istanza per la visualizzazione futura. Infine, per costruire un albero binario invece di uno con rami multipli per gli attributi nominali, utilizza -B.<br /> Embedded Machine Learning<br /><br /> Quando si invoca schemi di apprendimento dalle interfacce utente grafiche o dalla riga di comando, non c'è bisogno di sapere nulla sulla programmazione in Java. In questa sezione mostriamo come accedere a questi algoritmi dal proprio codice. In tal modo, i vantaggi di utilizzare un linguaggio di programmazione orientato agli oggetti diventano chiari. D'ora in poi, supponiamo che tu abbia almeno alcune conoscenze rudimentali di Java. Nella maggior parte delle applicazioni pratiche di data mining, il componente di apprendimento è parte integrante di un ambiente software molto più ampio. Se l'ambiente è scritto in Java, è possibile utilizzare Weka per risolvere il problema dell'apprendimento senza scrivere alcun codice di apprendimento macchina da soli. <br /> A simple data mining application<br /><br /> Presentiamo un'applicazione di data mining semplice per l'apprendimento di un modello che classifica i file di testo in due categorie, colpi e miss. L'applicazione funziona per documenti arbitrari: li facciamo riferimento come messaggi. L'implementazione utilizza il filtro StringToWordVector menzionato nella sezione 10.3 (pagina 399) per convertire i messaggi in vettori attributi nel modo descritto nella sezione 7.3. Supponiamo che il programma sia chiamato ogni volta che un nuovo file deve essere elaborato. Se l'utente Weka fornisce un'etichetta di classe per il file, il sistema lo usa per la formazione; Se non lo classifica. Il classificatore dell'organismo di decisione J48 viene utilizzato per eseguire il lavoro.<br /> Going through the code<br /><br /> La Figura 14.1 mostra il codice sorgente del programma applicativo, implementato in una classe chiamata MessageClassifier. Gli argomenti della riga di comando che il metodo main () accetta sono il nome di un file di testo (dato da -m), il nome di un file che detiene un oggetto della classe MessageClassifier (-t) e, eventualmente, la classificazione della Messaggio nel file (-c). Se l'utente fornisce una classificazione, il messaggio verrà convertito in un esempio per la formazione; Se no, l'oggetto Message-Classifier verrà utilizzato per classificarlo come hit o miss.<br /> main()<br /><br /> Il metodo main () legge il messaggio in un Java StringBuffer e verifica se l'utente ha fornito una classificazione per esso. Quindi legge un oggetto Message-Classifier dal file dato da -t e crea un nuovo oggetto della classe MessageClassifier se questo file non esiste. In entrambi i casi l'oggetto risultante viene chiamato messageCl. Dopo aver verificato le opzioni di riga di comando illegali, il programma chiama il metodo updateData () per aggiornare i dati di allenamento memorizzati in messageCl se è stata fornita una classificazione; Altrimenti, chiama classifyMessage () per classificarla. Infine, l'oggetto messageCl viene salvato nel file, perché potrebbe essere cambiato. Nelle sezioni seguenti, descriviamo innanzitutto come un nuovo MessageClassifier oggetto viene creato dal costruttore MessageClassifier () e spiega quindi come funzionano i due metodi updateData () e classifyMessage ().<br /> MessageClassifier()<br /><br />Figure 14.1 Source code for the message classifier.<br /><br /><br /> Ogni volta che viene creato un nuovo MessageClassifier, gli oggetti per il controllo del filtro e del classificatore vengono generati automaticamente. L'unica parte non intima del processo è la creazione di un set di dati, che viene fatto dal costruttore MessageClassifier (). In primo luogo il nome del set di dati viene memorizzato come una stringa. Allora un oggetto attributo viene creato per ogni attributo, uno per contenere la stringa corrispondente a un messaggio di testo e l'altro per la sua classe. Questi oggetti vengono memorizzati in una matrice dinamica del tipo FastVector. (FastVector è la propria implementazione della classe Java Vector standard e viene utilizzata in tutta la Weka per motivi storici.)<br /> Gli attributi vengono creati richiamando uno dei costruttori nell'attributo di classe. Questa classe ha un costruttore che prende un parametro - il nome dell'attributo - e crea un attributo numerico. Tuttavia, il costruttore che utilizziamo qui richiede due parametri: il nome dell'attributo e un riferimento a un FastVector. Se questo riferimento è nullo, come nella prima applicazione di questo costruttore nel nostro programma, Weka crea un attributo di stringa di tipo. Altrimenti, viene creato un attributo nominale. In questo caso si suppone che il FastVector detiene i valori degli attributi come stringhe. Questo è il modo in cui creiamo un attributo di classe con due valori colpiti e mancati: passando il nome (classe) e il valore dei suoi attributi - memorizzati in FastVector - in Attributo ().<br /> Per creare un set di dati da questa informazione di attributo, MessageClassifier () deve creare un oggetto delle istanze di classe dal pacchetto di base. Il costruttore di istanze usate da MessageClassifier () prende tre argomenti: il nome del set di dati, un FastVector che contiene gli attributi e un numero intero che indica la capacità iniziale del set di dati. Abbiamo impostato la capacità iniziale su 100; Viene espanso automaticamente se vengono aggiunti più istanze. Dopo la costruzione del set di dati, Message-Classifier () imposta l'indice dell'attributo di classe come l'indice dell'ultimo attributo.<br /> updateData()<br /><br /> Ora che sai come creare un set di dati vuoto, consideri come l'oggetto MessageClassifier incorpora effettivamente un nuovo messaggio di allenamento. Il metodo updateData () effettua questo lavoro. In primo luogo converte il messaggio dato in un'istanza di formazione chiamando makeInstance (), che inizia creando un oggetto di istanza di classe che corrisponde a un'istanza con due attributi. Il costruttore dell'oggetto Instance imposta tutti i valori dell'istanza da mancare e il suo peso a 1. Il passaggio successivo di makeInstance () è quello di impostare il valore dell'attributo stringa che detiene il testo del messaggio. Questo viene fatto applicando il metodo setValue () dell'oggetto Instance, fornendolo con l'attributo il cui valore deve essere modificato e un secondo parametro che corrisponde all'indice del nuovo valore nella definizione dell'attributo stringa. Questo indice viene restituito dal metodo addStringValue (), che aggiunge il testo del messaggio come un nuovo valore all'attributo stringa e restituisce la posizione di questo nuovo valore nella definizione dell'attributo stringa.<br /><br /> Internamente, un istanza memorizza tutti i valori dell'attributo come numeri a virgola mobile a doppia precisione indipendentemente dal tipo di attributo corrispondente. Nel caso di attributi nominali e di stringa questo viene fatto memorizzando l'indice del valore attributo corrispondente nella definizione dell'attributo. Ad esempio, il primo valore di un attributo nominale è rappresentato da 0,0, il secondo da 1,0 e così via.<br /> Lo stesso metodo viene utilizzato per gli attributi di stringa: addStringValue () restituisce l'indice corrispondente al valore aggiunto alla definizione dell'attributo. Una volta impostato il valore dell'attributo stringa, makeInstance () fornisce l'accesso di istanza appena creato alle informazioni sugli attributi dei dati, passandolo un riferimento al set di dati. In Weka, un oggetto Instance non memorizza esplicitamente il tipo di ogni attributo; Invece, memorizza un riferimento a un set di dati con le corrispondenti informazioni sugli attributi.<br /> Tornando a updateData (), una volta che la nuova istanza è stata restituita da makeInstance (), il valore di classe viene impostato e viene aggiunto ai dati di addestramento. Iniziamo anche m_UpToDate, una bandiera che indica che i dati formativi sono cambiati e che il modello predittivo non è quindi aggiornato.<br /> classifyMessage()<br /><br /> Ora esaminiamo come MessageClassifier elabora un messaggio la cui etichetta di classe è sconosciuta. Il metodo classifyMessage () controlla prima se sia stato creato un classificatore determinando se sono disponibili istanze di formazione. Verifica quindi se il classificatore è aggiornato. Se no (perché i dati di formazione sono cambiati) deve essere ricostruito. Tuttavia, prima di procedere, i dati devono essere convertiti in un formato appropriato per l'apprendimento utilizzando il filtro StringToWordVector.<br /> Innanzitutto, indichiamo al filtro il formato dei dati di ingresso passando un riferimento al set di dati di input utilizzando setInputFormat (). Ogni volta che questo metodo viene chiamato, il filtro viene inizializzato, cioè tutte le sue impostazioni interne vengono reimpostate. Nella fase successiva, i dati vengono trasformati da useFilter (). Questo metodo generico della classe Filtro applica un filtro a un set di dati. In questo caso, poiché StringToWordVector è stato appena inizializzato, calcola un dizionario dal dataset di addestramento e lo usa per formare vettori di parole. Dopo il ritorno da useFilter (), tutte le impostazioni interne del filtro vengono fissate finché non viene inizializzata da un'altra chiamata di inputFormat (). Ciò consente di filtrare un'istanza di prova senza aggiornare le impostazioni interne del filtro (in questo caso il dizionario).<br /> Una volta che i dati sono stati filtrati, il programma ricostruisce il classificatore - nel nostro caso un albero di decisione J4.8 - passando i dati di addestramento al suo metodo buildClassifier () e imposta m_UpToDate su true. È una convenzione importante in Weka che il metodo buildClassifier () inizializza completamente le impostazioni interne del modello prima di generare un nuovo classificatore. Quindi non abbiamo bisogno di costruire un nuovo oggetto J48 prima di chiamare buildClassifier ().<br /><br /> Assicurando che il modello memorizzato in m_Classifier sia attuale, continuiamo a classificare il messaggio. Prima che makeInstance () sia chiamato a creare un oggetto istanza da esso, viene creato un nuovo oggetto Instances per contenere la nuova istanza e passato come argomento a makeInstance (). Questo viene fatto in modo che makeInstance () non aggiunga il testo del messaggio alla definizione dell'attributo stringa in m_Data. Altrimenti, la dimensione dell'oggetto m_Data crescerebbe ogni volta che un nuovo messaggio è stato classificato, cosa che non è chiaramente auspicabile: dovrebbe crescere solo quando vengono aggiunti istanze di addestramento. Di conseguenza, un oggetto temporaneo Instances viene creato e scartato una volta che l'istanza è stata elaborata. Questo oggetto viene ottenuto utilizzando il metodo stringFreeStructure (), che restituisce una copia di m_Data con un attributo di stringa vuota. Solo allora è makeInstance () chiamato per creare la nuova istanza.<br /> L'istanza di prova deve essere elaborata anche dal filtro StringToWordVector prima di essere classificata. Questo è facile: il metodo input () inserisce l'istanza nell'oggetto filtro e l'istanza trasformata viene ottenuta chiamando output (). Quindi una previsione viene prodotta passando l'istanza al metodo classifyInstance () del classificatore. Come si può vedere, la previsione è codificata come un doppio valore. Questo permette al modulo di valutazione Weka di trattare in modo analogo i modelli per la previsione categorica e numerica. Nel caso di predizione categoriale, come in questo esempio, la doppia variabile detiene l'indice del valore della classe previsto. Per emettere la stringa corrispondente a questo valore di classe, il programma chiama il metodo value () dell'attributo di classe del set di dati.<br /><br /> C'è almeno un modo per migliorare la nostra implementazione. Il filtro e il filtro StringToWordVector potrebbero essere combinati utilizzando il metalearner FilteredClassifier descritto nella sezione 10.3 (pagina 401). Questo classificatore potrebbe quindi essere in grado di gestire direttamente gli attributi di stringa, senza chiamare esplicitamente il filtro per trasformare i dati. Non abbiamo fatto questo perché abbiamo voluto dimostrare come i filtri possono essere utilizzati in modo programmato.<br /> Writing New Learning Schemes<br /><br /> Supponi che sia necessario implementare un algoritmo di apprendimento speciale che non sia incluso in Weka. Oppure si suppone di essere impegnato in ricerca di apprendimento macchina e desideri indagare su un nuovo schema di apprendimento. Oppure si desidera solo imparare di più sul funzionamento interno di un algoritmo di induzione realmente programmandola da soli. Questa sezione utilizza un semplice esempio per mostrare come utilizzare pienamente la gerarchia di classi di Weka durante la scrittura di classificatori.<br /> Weka comprende i sistemi di apprendimento elementare elencati nella tabella 15.1, principalmente per scopi didattici. Nessuno esegue opzioni specifiche di riga di comando specifiche del sistema. Sono tutti utili per comprendere i funzionamenti interni di un classificatore. Ad esempio, descriviamo il schema weka.classifiers.trees.Id3, che implementa l'ID3 albero di decisione decisionale di Sezione 4.3. <br /> An example classifier<br /><br /> La Figura 15.1 fornisce il codice sorgente di weka.classifiers.trees.Id3, che, come si può vedere dal codice, estende la classe Classifier. Ogni classificatore in Weka lo fa, se prevede una classe nominale o una numerica.<br />Il primo metodo in weka.classifiers.trees.Id3 è globalInfo (): lo menzionamo qui prima di passare alle parti più interessanti. Viene semplicemente restituito una stringa visualizzata nelle interfacce grafiche di Weka quando viene selezionato questo schema.<br /> buildClassifier()<br /><br /> Il metodo buildClassifier () costruisce un classificatore da un set di dati di formazione. In questo caso controlla prima i dati per una classe nonnominale, il valore attributo mancante o qualsiasi attributo non nominale, perché l'algoritmo ID3 non è in grado di gestire questi. Quindi fa una copia del set di formazione (per evitare di cambiare i dati originali) e chiama un metodo da weka.core.Instances per eliminare tutte le istanze con valori di classe mancanti, perché queste istanze sono inutili nel processo di formazione. Infine, chiama makeTree (), che effettua effettivamente l'albero decisionale generando ricorsivamente tutti i sottofondi collegati al nodo radice.<br /> makeTree()<br /><br /> Figure 15.1 Source code for the ID3 decision tree learner.<br /><br /><br /> Il primo passo in makeTree () è verificare se il set di dati è vuoto. Se è, una foglia viene creata impostando m_Attribute su null. Il valore di classe m_ClassValue assegnato a questa foglia è impostato a mancare e la probabilità stimata per ciascuna classe di dati in m_Distribution viene inizializzata a 0. Se sono presenti istanze di formazione, makeTree () trova l'attributo che fornisce il maggiore guadagno di informazioni per loro. In primo luogo crea un'enumerazione Java degli attributi del set di dati. Se l'indice dell'attributo di classe è impostato - come sarà per questo set di dati - la classe viene automaticamente esclusa dall'enumerazione.<br /> All'interno dell'enumerazione, il guadagno di informazioni di ogni attributo viene calcolato da computeInfoGain () e memorizzato in un array. Ritorneremo a questo metodo in seguito. Il metodo index () di weka.core.Attribute restituisce l'indice dell'attributo nel set di dati utilizzato per indicizzare l'array. Una volta completata l'enumerazione, l'attributo con il maggiore guadagno di informazioni viene memorizzato nella variabile di istanza m_Attribute. Il metodo maxIndex () da weka.core.Utils restituisce l'indice del valore più grande in una matrice di interi o doppi. (Se c'è più di un elemento con il valore massimo, viene restituito il primo.) L'indice di questo attributo viene passato al metodo attributo () da weka.core.Instances, che restituisce l'attributo corrispondente.<br /><br /> Si potrebbe chiedere che cosa accade al campo di matrice corrispondente all'attributo di classe. Non dobbiamo preoccuparci di questo perché Java inizia automaticamente tutti gli elementi in una serie di numeri a zero e il guadagno di informazioni è sempre maggiore o uguale a zero. Se il guadagno massimo di informazioni è zero, make-Tree () crea una foglia. In questo caso m_Attribute è impostato su null e makeTree () calcola sia la distribuzione delle probabilità di classe che la classe con la massima probabilità. (Il metodo di normalizzazione () da weka.core.Utils normalizza una matrice di doppi da somma a uno.)<br /> Quando crea una foglia con un valore di classe assegnato ad esso, makeTree () memorizza l'attributo di classe in m_ClassAttribute. Questo perché il metodo che emette l'albero decisionale deve accedere a questo per stampare l'etichetta di classe. Se si trova un attributo con il guadagno di informazioni non-zero, makeTree () suddivide il set di dati in base ai valori dell'attributo e costruisce ricorsivamente sottofondi per ciascuno dei nuovi set di dati. Per eseguire la suddivisione si chiama il metodo splitData (). Ciò crea il numero di set di dati vuoti, in quanto esistono valori di attributo, li memorizza in un array (imposta la capacità iniziale di ciascun set di dati al numero di istanze nel dataset originale) e poi si esegue attraverso tutte le istanze nel set di dati originale e le assegna Al nuovo set di dati che corrisponde al valore dell'attributo. Quindi riduce i requisiti di memoria comprimendo gli oggetti Instances. Tornando a makeTree (), l'array risultante di set di dati viene utilizzato per creare sottofondi. Il metodo crea una matrice di oggetti Id3, uno per ciascun valore di attributo e chiama makeTree () su ciascuno di essi passandolo il set di dati corrispondente.<br /> computeInfoGain()<br /><br /> Tornando a computeInfoGain (), il guadagno informativo associato ad un attributo e ad un set di dati viene calcolato utilizzando un'applicazione diretta della formula nella sezione 4.3 (pagina 102). In primo luogo, viene calcolata l'entropia del set di dati. Quindi, splitData () viene utilizzato per suddividerlo in sottotitoli e viene chiamato a ciascuno di essi computeEntropy (). Infine, viene restituita la differenza tra l'ex entropia e la somma ponderata di questi ultimi - il guadagno di informazioni. Il metodo computeEntropy () utilizza il metodo log2 () da weka.core.Utils per ottenere il logaritmo (alla base 2) di un numero.<br /> classifyInstance()<br /><br /> Dopo aver visto come ID3 costruisce un albero di decisione, ora esaminiamo come utilizzi la struttura ad albero per prevedere valori e probabilità di classe. Ogni classificatore deve implementare il metodo classifyInstance () o il metodo distributionForInstance () o entrambi. La classe superficiale Classifier contiene implementazioni predefinite per entrambi i metodi. L'implementazione predefinita di classifyInstance () chiama distributionForInstance (). Se la classe è nominale, prevede la classe con la massima probabilità o un valore mancante se tutte le probabilità restituite da distributionForInstance () sono zero. Se la classe è numerica, distributionForInstance () deve restituire un array di un singolo elemento che contiene la previsione numerica e questo è ciò che la classe-fyInstance () estrae e restituisce. Al contrario, l'implementazione predefinita di distributionForInstance () avvolge la previsione ottenuta da classifyInstance () in un array di un singolo elemento. Se la classe è nominale, distributionForInstance () assegna una probabilità di una alla classe prevista da classifyInstance () e una probabilità di zero agli altri. Se classifyInstance () restituisce un valore mancante, tutte le probabilità sono impostate su zero. Per dare una sensazione migliore per ciò che questi metodi fanno, la classe weka.classifiers.trees.Id3 le sovrascrive entrambe.<br /><br /> Prendiamo innanzitutto la classifyInstance (), che prevede un valore di classe per una determinata istanza. Come indicato nella sezione precedente, i valori nominali di classe, come i valori attributi nominali, sono codificati e memorizzati in doppie variabili, rappresentanti l'indice del nome del valore nella dichiarazione degli attributi. Questo viene utilizzato in favore di un approccio più orientato agli oggetti per aumentare la velocità di esecuzione. Nell'implementazione di ID3, classifyInstance () controlla prima se esistono valori mancanti nell'istanza da classificare; Se sì, lancia un'eccezione. Altrimenti, scende l'albero in modo ricorsivo, guidato dai valori dell'attributo dell'istanza, finché non viene raggiunta una foglia. Quindi restituisce il valore di classe m_ClassValue memorizzato alla foglia. Si noti che questo potrebbe essere un valore mancante, nel qual caso l'istanza è lasciata non classificata. Il metodo distributionForInstance () funziona esattamente nello stesso modo, restituendo la distribuzione di probabilità memorizzata in m_Distribution.<br /> La maggior parte dei modelli di apprendimento macchina, e in particolare gli alberi decisionali, servono come una spiegazione più o meno comprensibile della struttura trovata nei dati. Di conseguenza, ognuno dei classificatori di Weka, come molti altri oggetti Java, implementa un metodo toString () che produce una rappresentazione testuale di se stessa in forma di una variabile String. Il metodo toString () di ID3 emette un'albero di decisione in modo approssimativamente lo stesso formato di J4.8 (Figura 10.5). Stampa in modo ricorsivo la struttura ad albero in una variabile String accedendo alle informazioni sugli attributi memorizzate nei nodi. Per ottenere il nome e i valori di ciascun attributo, utilizza i metodi name () e value () da weka.core.Attribute. Le foglie vuote senza un valore di classe sono indicate dalla stringa null.<br /> main()<br /><br /> L'unico metodo in weka.classifiers.trees.Id3 che non è stato descritto è main (), che viene chiamato ogni volta che la classe viene eseguita dalla riga di comando. Come potete vedere, è semplice: in pratica dice alla classe di valutazione di Weka di valutare Id3 con le opzioni di riga di comando specificate e di stampare la stringa risultante. L'espressione unica che fa questo è racchiusa in un'istruzione di prova che cattura le diverse eccezioni che possono essere state lanciate dalle routine di Weka o da altri metodi Java.<br /><br /> Il metodo di valutazione () in weka.classifiers.Evaluation interpreta le opzioni di riga di comando indipendenti dal sistema descritto nella sezione 13.3 e agisce in modo appropriato. Ad esempio, prende l'opzione -t, che fornisce il nome del file di addestramento e carica il set di dati corrispondente. Se non esiste un file di prova, esegue una convalida incrociata creando un oggetto classificatore e ripetutamente chiamando buildClassifier () e classificaInstance () o distributionForInstance () su diversi sottotitoli dei dati formativi. A meno che l'utente non sopprime l'output del modello impostando l'opzione della riga di comando corrispondente, anche il metodo toString () invia il modello creato dal dataset completo di formazione.<br /><br /> Cosa succede se lo schema deve interpretare un'opzione specifica, ad esempio un parametro di potatura? Questo viene eseguito utilizzando l'interfaccia OptionHandler in weka.core. Un classificatore che implementa questa interfaccia contiene tre metodi, listOptions (), setOptions () e getOptions (), che possono essere utilizzati per elencare tutte le opzioni specifiche del sistema del classificatore, per impostarne alcune e per ottenere le opzioni che sono Attualmente impostato. Il metodo di valutazione () in Evaluation chiama automaticamente questi metodi se il classificatore implementa l'interfaccia OptionHandler. Una volta elaborate le opzioni indipendenti dal sistema, chiama setOptions () per elaborare le opzioni rimanenti prima di utilizzare buildClassifier () per generare un nuovo classificatore. Quando esegue il classificatore, utilizza getOptions () per visualizzare un elenco delle opzioni attualmente impostate. Per un semplice esempio di come implementare questi metodi, guarda il codice sorgente per weka.classifiers.rules.OneR.<br /> OptionHandler consente di impostare le opzioni dalla riga di comando. Per impostarli dall'interno delle interfacce utente grafiche, Weka utilizza il framework Java Beans. Tutto ciò che è richiesto è impostare ... () e ottenere ... () metodi per ogni parametro utilizzato dalla classe. Ad esempio, i metodi setPruningParameter () e getPruningParameter () sarebbero necessari per un parametro di potatura. Dovrebbe esserci anche un metodo di pruningParameterTipText () che restituisce una descrizione del parametro per l'interfaccia grafica utente. Di nuovo, vedere weka.classifiers.rules.OneR per un esempio.<br /><br /> Alcuni classificatori possono essere aggiornati in modo incrementale in quanto arrivano nuove istanze di formazione; Non devono elaborare tutti i dati in un unico batch. In Weka, i classificatori incrementali implementano l'interfaccia UpdateableClassifier in weka.classifiers. Questa interfaccia dichiara un solo metodo, ovvero updateClassifier (), che esegue un'istanza di formazione singola come argomento. Per un esempio di come utilizzare questa interfaccia, guarda il codice sorgente per weka.classifiers.lazy.IBk. Se un classificatore è in grado di utilizzare pesi di istanza, dovrebbe implementare l'interfaccia WeightedInstancesHandler () da weka.core. Poi altri algoritmi, come quelli per il potenziamento, possono utilizzare questa proprietà. In weka.core sono molte altre interfacce utili per i classificatori - ad esempio, interfacce per classificatori che sono randomizzabili, riepilogabili, disegnabili e graficabili. Per ulteriori informazioni su queste ed altre interfacce, consulta la Javadoc per le classi in weka.core.<br /> Conventions for implementing classifiers<br /><br /> Ci sono alcune convenzioni che dovete obbedire quando implementate classificatori in Weka. Se non lo fai, le cose andranno male. Ad esempio, il modulo di valutazione di Weka potrebbe non calcolare correttamente le statistiche del classificatore quando la valuta.<br /> La prima convenzione è già stata menzionata: ogni volta che viene chiamato un metodo buildClassifier () di classificatore, deve reimpostare il modello. La classe CheckClassifier esegue test per assicurarsi che questo sia il caso. Quando buildClassifier () viene richiamato su un set di dati, è sempre necessario ottenere lo stesso risultato, indipendentemente dal numero di volte che il classificatore è stato precedentemente applicato agli stessi o altri set di dati. Tuttavia, buildClassifier () non deve reimpostare variabili di istanza che corrispondono alle opzioni systempecific, poiché queste impostazioni devono persistere con più chiamate di buildClassifier (). Inoltre, chiamare buildClassifier () non deve mai cambiare i dati di input. Sono state anche citate altre due convenzioni. Uno è che quando un classificatore non può fare una previsione, il suo metodo classifyInstance () deve restituire l'istanza.missingValue () e il suo metodo di distributionForInstance () deve restituire probabilità di zero per tutte le classi. L'implementazione di ID3 nella Figura 15.1 fa questo. Un'altra convenzione è che con i classificatori per la previsione numerica, class-fyInstance () restituisce il valore numerico che il classificatore prevede. Alcuni classificatori, tuttavia, sono in grado di prevedere classi nominali e le loro probabilità di classe, nonché i valori di classe numerica, weka.classifiers.lazy.IBk è un esempio. Questi implementano il metodo istributionForInstance () e se la classe è numerica restituisce una matrice di dimensione 1 il cui unico elemento contiene il valore numerico previsto.<br /><br /> Un'altra convenzione - non assolutamente essenziale ma utile comunque - è che ogni classificatore implementa un metodo toString () che emette una descrizione testuale di se stessa.<br /><br /><br /><br /><br /><br /><br />Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6261258921963124217.post-68637265552105993512017-06-07T05:36:00.001-07:002017-06-07T05:45:26.636-07:00Pratical Maching Learning 2<h3>
Algorithms: The Basic Methods</h3>
<br />
Ora che abbiamo visto come possono essere rappresentati gli 'input e output', è tempo di guardare gli algoritmi di apprendimento stessi. Questo capitolo spiega le idee fondamentali dietro le tecniche utilizzate nell'esportazione dei dati pratici. Non approfondiremo in maniera più complessa le emissioni più complicate: le versioni avanzate degli algoritmi, le ottimizzazioni possibili, le complicazioni che sorgono in pratica. Questi argomenti sono stati rinviati al Capitolo 6, in cui ci impegniamo a implementare in modo efficace metodi di apprendimento macchina come quelli inclusi nei toolkit di data mining e utilizzati per applicazioni real-world. È importante comprendere questi problemi più avanzati per sapere cosa succede veramente quando si analizza un particolare set di dati.<br />
<br />
In questo capitolo esaminiamo le idee fondamentali. Una delle lezioni più istruttive è che le idee semplici spesso funzionano molto bene e raccomandiamo fortemente l'adozione di una metodologia di "semplicità" quando si analizzano i set di dati pratici. Ci sono molti diversi tipi di struttura semplice che i set di dati possono esibire. In un set di dati, potrebbe esserci un unico attributo che faccia tutto il lavoro e gli altri possono essere irrilevanti o ridondanti. In un altro set di dati, gli attributi potrebbero contribuire in modo indipendente e uguale al risultato finale. Un terzo potrebbe avere una struttura logica semplice, che coinvolge solo pochi attributi che possono essere catturati da un albero di decisione. In un quarto, possono esistere alcune regole indipendenti che regolano l'assegnazione di istanze a classi diverse. Un quinto potrebbe mostrare dipendenze tra i diversi sottotipi di attributi. Un sesto potrebbe comportare la dipendenza lineare tra gli attributi numerici, dove ciò che conta è una somma ponderata di valori degli attributi con pesi correttamente scelti. In una settima, le classificazioni adatte a regioni particolari di spazio di esempio potrebbero essere governate dalle distanze tra le istanze stesse. E in un ottavo, potrebbe essere che nessun valore di classe è fornito: l'apprendimento è senza supervisione.<br />
<br />
Nella varietà infinita di possibili set di dati esistono molti diversi tipi di struttura che possono verificarsi, e uno strumento di data mining, non importa quanto capace, che "cerca una classe di struttura" può perdere completamente le regolarità "di un tipo diverso ', Indipendentemente da' quanto rudimentali 'quelle' possono essere '. Il risultato è una struttura di classificazione "barocca e opaca" di un tipo anziché una struttura "semplice, elegante, immediatamente" comprensibile di un'altra.<br />
Ognuno degli otto esempi di tipi diversi di set di dati scelti in precedenza porta ad un metodo di apprendimento della macchina diverso "ben adatto per" "scoprirlo". Le sezioni di questo capitolo guardano a ciascuna di queste strutture a sua volta.<br />
<h4>
Dedurre le regole rudimentali</h4>
<br />
Ecco un modo semplice per trovare regole di classificazione molto semplici da un insieme di istanze. Chiamato 1R per 1 regola, genera un albero di decisione di un livello espresso sotto forma di un insieme di regole che tutti testano un attributo particolare. 1R è un metodo semplice e conveniente che spesso presenta regole abbastanza buone per caratterizzare la struttura dei dati. Si scopre che le regole semplici spesso raggiungono un'accuratezza sorprendentemente elevata. Forse è perché la struttura sottostante a molti set di dati del mondo reale è piuttosto rudimentale e solo un attributo è sufficiente a determinare la classe di un'istanza abbastanza accuratamente. In ogni caso, è sempre un buon piano per provare prima le cose più semplici.<br />
<br />
L'idea è questa: creiamo regole che testano "un unico attributo e un ramo" di conseguenza. Ogni ramo corrisponde ad un diverso valore dell'attributo. È ovvio che "qual è la migliore classificazione" per dare a ciascun ramo: utilizzare la classe che si verifica più spesso nei dati di allenamento. Quindi il tasso di errore delle regole può essere facilmente determinato. Basta contare gli errori che si verificano sui dati di addestramento, cioè il numero di istanze che non hanno la classe di maggioranza.Ogni attributo genera un insieme diverso di regole, una regola per ogni valore dell'attributo. Valuta "il tasso di errore" per ciascun set di regole dell'attributo e scegle il migliore. È così semplice! La Figura 4.1 mostra l'algoritmo in forma di pseudocode.<br />
<br />
<br />
For each attribute,<br />
For each value of that attribute, make a rule as follows:<br />
count how often each class appears<br />
find the most frequent class<br />
make the rule assign that class to this attribute-value.<br />
Calculate the error rate of the rules.<br />
<br />
Choose the rules with the smallest error rate.<br />
<br />
<br />
Per vedere il metodo 1R sul lavoro, prendere in considerazione i dati meteorologici della tabella 1.2 (lo troveremo molte volte di nuovo quando guardiamo come funzionano gli algoritmi di apprendimento). Per classificare sulla colonna finale, giocare, 1R considera quattro serie di regole, una per ogni attributo. Queste regole sono indicate nella tabella 4.1. Un asterisco indica che è stata fatta una scelta casuale tra due risultati altrettanto probabili. Il numero di errori 'viene dato' per ogni regola, insieme al numero totale di errori per la regola impostata nel suo insieme. 1R sceglie l'attributo che produce regole con il minor numero di errori, cioè la prima e la terza regola. Arbitrariamente 'rompere il legame' tra questi due set di regole dà:<br />
<br />
<br />
<br />
outlook: <br />
<br />
sunny -> no<br />
overcast -> yes<br />
rainy -> yes<br />
<br />
<br />
Abbiamo notato all'inizio che il gioco per i dati meteo non è specificato. Abbastanza stranamente, sembra giocato quando è nuvoloso o piovoso, ma non quando è soleggiato. Forse è un'inseguimento al coperto.<br />
Valori mancanti e attributi numerici <br />
<br />
Anche se un metodo di apprendimento molto rudimentale, 1R accoglie sia valori mancanti che attributi numerici. Si tratta di questi modi semplici ma efficaci. La mancanza viene considerata come un altro valore di attributo in modo che, ad esempio, se i dati meteo contenessero valori mancanti per l'attributo di outlook, un set di regole formato da Outlook prevederebbe quattro possibili valori di classe, ognuno per sole, nuvoloso e piovoso Un quarto per la mancanza.<br />
<br />
<br />
<br />
Possiamo convertire gli attributi numerici in quelli nominali usando un metodo di discretizzazione semplice. In primo luogo, ordinate gli esempi di formazione in base ai valori dell'attributo numerico. Questo produce una sequenza di valori di classe. Ad esempio, ordinare la versione numerica dei dati meteo (Tabella 1.3) in base ai valori della temperatura produce la sequenza<br />
<br />
<br />
<br />
64 65 68<br />
yes no yes<br />
<br />
La discretizzazione comporta la suddivisione di questa sequenza mettendo in esso punti di interruzione. Una possibilità è quella di posizionare punti di interruzione ovunque cambia la classe, producendo otto categorie:<br />
<br />
<br />
yes | no | yes yes yes | no no<br />
<br />
<br />
La scelta dei punti di interruzione a metà tra gli esempi su entrambi i lati li pone a 64.5, 66.5, 70.5, 72, 77.5, 80.5 e 84. Tuttavia, le due istanze con valore 72 causano un problema perché hanno lo stesso valore della temperatura, classi. La soluzione più semplice è quella di spostare il punto di interruzione a 72 su un esempio, a 73,5, producendo una partizione mista in cui nessuna è la classe di maggioranza.<br />
<br />
Un problema più grave è che questa procedura tende a formare un gran numero di categorie. Il metodo 1R naturalmente gravita verso la scelta di un attributo che si divide in molte categorie, perché questo divide il set di dati in molte classi, rendendo più probabile che le istanze avranno la stessa classe della maggioranza nella loro partizione. Infatti, il caso di limitazione è un attributo che ha un valore diverso per ogni istanza, ovvero un attributo del codice di identificazione che individua istanze in modo univoco, e questo darà un tasso di errore zero sul set di addestramento perché ogni partizione contiene solo un'istanza. Naturalmente, gli attributi altamente ramificanti di solito non funzionano bene sugli esempi di test; Anzi, l'attributo del codice di identificazione non prevede mai alcun esempio al di fuori dell'istruzione impostata correttamente. Questo fenomeno è conosciuto come overfitting; Abbiamo già descritto la bias di evitare overfitting nel capitolo 1 (pagina 35) e incontreremo questo problema ripetutamente nei capitoli successivi.<br />
<br />
Per 1R, l'overfitting è probabile che si verifichi ogni volta che un attributo ha un gran numero di valori possibili. Di conseguenza, quando si discretizza un attributo numerico viene adottata una regola che impone un numero minimo di esempi della classe di maggioranza in ogni partizione. Supponiamo che il minimo sia fissato a tre. Ciò elimina tutti tranne due delle partizioni precedenti. Invece, inizia il processo di partizionamento<br />
<br />
<br />
yes no yes yes | yes . . .<br />
<br />
<br />
Assicurando che ci siano tre eventi di sì, la classe di maggioranza, nella prima partizione. Tuttavia, poiché l'esempio seguente è anche sì, non perdiamo nulla inserendo anche quello nella prima partizione. Ciò porta ad una nuova divisione<br />
<br />
<br />
<br />
yes no yes yes yes no no yes yes yes | no yes yes no<br />
<br />
Dove ogni partizione contiene almeno tre istanze della classe di maggioranza, tranne l'ultima, che di solito avrà meno. I limiti di divisione cadono sempre tra esempi di classi diverse.<br />
Ogni volta che le partizioni adiacenti hanno la stessa classe di maggioranza, come le prime due partizioni di cui sopra, esse possono essere fuse insieme senza influenzare il significato dei set di regole. Quindi la discretizzazione finale è<br />
<br />
<br />
yes no yes yes yes no no yes yes yes | no yes yes no<br />
<br />
<br />
la quale porta alla regola impostata<br />
<br />
<br />
temperature: <br />
<br />
=< 77.5 -> yes<br />
> 77.5 -> no<br />
<br />
<br />
<br />
La seconda regola comporta una scelta arbitraria; Come accade, nessuno è stato scelto. Se avessimo scelto sì invece, non ci sarebbe bisogno di alcun punto di interruzione e come illustra questo esempio, potrebbe essere meglio utilizzare le categorie adiacenti per aiutare a rompere i legami. Infatti questa regola genera cinque errori sul set di allenamento e quindi è meno efficace della precedente regola per la prospettiva. Tuttavia la stessa procedura porta a questa regola per l'umidità:<br />
<br />
<br />
humidity: <br />
<br />
=< 82.5 -> yes<br />
> 82.5 and =< 95.5 -> no<br />
> 95.5 -> yes<br />
<br />
<br />
Ciò genera solo tre errori sul set di allenamento ed è il migliore "1-rule" per i dati nella Tabella 1.3.<br />
Infine, se un attributo numerico ha valori mancanti, viene creata una categoria aggiuntiva e la precedente procedura di discretizzazione viene applicata solo alle istanze per le quali è definito il valore dell'attributo.<br />
Discussione<br />
<br />
In un documento seminariale intitolato "Le regole di classificazione molto semplici funzionano bene sui set di dati più comunemente utilizzati" (Holte 1993), è stato riportato uno studio completo delle prestazioni della procedura 1R su 16 set di dati utilizzati frequentemente dai ricercatori di 'machine learning' per valutare i loro algoritmi. Nel corso di tutto lo studio ha utilizzato la convalida incrociata, una tecnica di valutazione che spiegheremo nel capitolo 5, per garantire che i risultati siano rappresentativi di ciò che i gruppi di test indipendenti potrebbero produrre. Dopo qualche sperimentazione, il numero minimo di esempi in ogni partizione di un attributo numerico è stato impostato a sei, non tre come usato per l'illustrazione precedente.<br />
<br />
Sorprendentemente, nonostante la sua semplicità, il 1R ha fatto meraviglie - anche imbarazzante - "ben in confronto" con i metodi di apprendimento più avanzati "e le regole che ha prodotto sono risultate solo pochi punti percentuali meno accurati, su quasi tutti «i set di dati», rispetto agli «alberi decisionali» prodotti da uno schema di induzione all'avanguardia. Questi alberi erano in generale considerevolmente più grandi delle regole di 1R. Le regole che provano un singolo attributo sono spesso una "alternativa valida" alle strutture più complesse e questo incoraggia fortemente una metodologia di semplicità, in cui viene stabilita la performance di base utilizzando tecniche semplici e rudimentali prima di avanzare a metodi di apprendimento più sofisticati che generano inevitabilmente Output che è più difficile per le persone interpretare.<br />
<br />
La procedura 1R impara un albero di decisione di un livello, le cui foglie rappresentano le diverse classi. Una tecnica leggermente più espressiva è quella di utilizzare una regola diversa per ogni classe. Ogni regola è una congiunzione di prove, una per ogni attributo. Per gli attributi numerici il test controlla se il valore si trova entro un intervallo specifico; Per quelli nominali controlla se si trova in un determinato sottoinsieme dei valori di tale attributo. Questi due tipi di test - intervalli e sottoinsieme - vengono appresi dai dati di addestramento relativi a ciascuna classe. Per un attributo numerico, gli endpoint dell'intervallo sono i valori minimi e massimi che si verificano nei dati di formazione per quella classe. Per un nominale, il sottoinsieme contiene solo i valori che si verificano per quel attributo nei dati di formazione per la classe. Norme che rappresentano classi diverse generalmente si sovrappongono, e al tempo di previsione è previsto quello con i test più corrispondenti. Questa semplice tecnica spesso dà una utile prima impressione di un set di dati. È estremamente veloce e può essere applicato a grandi quantità di dati.<br />
Modellazione statistica<br />
<br />
Il metodo 1R utilizza un singolo attributo come base per le sue decisioni e sceglie quello che funziona meglio. Un'altra tecnica semplice è usare tutti gli attributi e permettere loro di apportare contributi alla decisione che sono altrettanto importanti e indipendenti l'uno dall'altro, data la classe. Questo è irrealistico, ovviamente: ciò che rende interessanti i set di dati della vita reale è che gli attributi non sono certamente altrettanto importanti o indipendenti. Ma porta ad un semplice schema che funziona nuovamente bene in pratica.<br />
<br />
La Tabella 4.2 mostra un riepilogo dei dati meteo ottenuti contando quante volte ogni coppia attributo-valore si verifica con ogni valore (sì e no) per il gioco. Ad esempio, si può vedere dalla tabella 1.2 che la prospettiva è soleggiata per cinque esempi, due dei quali hanno il gioco = si e tre dei quali hanno giocato = no. Le celle della prima riga della nuova tabella contengono semplicemente queste occorrenze per tutti i valori possibili di ciascun attributo e la figura di gioco nella colonna finale conta il numero totale di eventi di sì e no. Nella parte inferiore della tabella abbiamo riscritto le stesse informazioni sotto forma di frazioni o probabilità osservate. Ad esempio, i nove giorni che giocano sono sì, la prospettiva è soleggiata per due, con una frazione di 2/9. Per giocare le frazioni sono diverse: sono la proporzione di giorni che il gioco è sì e no, rispettivamente.<br />
<br />
Ora supponiamo di incontrare un nuovo esempio con i valori mostrati nella Tabella 4.3. Trattiamo le cinque caratteristiche della tabella 4.2 - la prospettiva, la temperatura, l'umidità, il vento e la probabilità complessiva che il gioco è sì o no - come elementi altrettanto importanti e indipendenti di prove e moltiplicare le corrispondenti frazioni. Guardando al risultato si dà:<br />
<br />
<br />
likelihood of yes = 2 9 ¥ 3 9 ¥ 3 9 ¥ 3 9 ¥ 9 14 = 0.0053.<br />
<br />
<br />
Le frazioni vengono prelevate dalle voci sì in tabella secondo i valori degli attributi per il nuovo giorno e la finale 9/14 è la frazione globale che rappresenta la percentuale di giorni in cui il gioco è sì. Un calcolo simile per il risultato non porta a<br />
<br />
<br />
Probability of yes = 0.0053/(0.0053 + 0.0206) = 20.5%,<br />
<br />
<br />
Probability of no = 0.0206/(0.0053 + 0.0206) = 79.5%.<br />
<br />
<br />
Questo metodo semplice ed intuitivo è basato sulla regola Bayes di probabilità condizionale. La regola di Bayes dice che se avete un'ipotesi H e la prova E che sopporta l'ipotesi, allora<br />
<br />
<br />
Pr[ H E ] = Pr[EH] Pr[H] / Pr[E]<br />
<br />
Utilizziamo la notazione che Pr [A] indica la probabilità di un evento A e che Pr [A | B] indica la probabilità di A condizionato ad un altro evento B. L'ipotesi H è che il gioco sarà, per esempio, sì e Pr [H | E] risulterà essere del 20,5%, proprio come determinato in precedenza. La prova E è la combinazione particolare dei valori degli attributi per il nuovo giorno, la vista = soleggiata, la temperatura = fresca, l'umidità = alta e il vento = vero. Chiamiamo questi quattro pezzi di prova E1, E2, E3 e E4 rispettivamente. Supponendo che questi pezzi di prova siano indipendenti (data la classe), la loro probabilità combinata si ottiene moltiplicando le probabilità:<br />
<br />
<br />
Pr[yes E]=Pr[E1 yes*Pr[E2 yes]*Pr[E3 yes]*Pr[E4 yes]*Pr[yes] / Pr[E]<br />
<br />
<br />
Non preoccuparti del denominatore: lo ignoreremo e lo elimineremo nella fase di normalizzazione finale quando facciamo le probabilità di sì e nessuna somma a 1, proprio come abbiamo fatto in precedenza. Il Pr [sì] alla fine è la probabilità di un risultato sì senza conoscere alcuna delle prove E, ovvero senza sapere nulla del giorno particolare citato, si chiama la probabilità anteriore dell'ipotesi H. In questo caso, è giusto 9/14, perché 9 dei 14 esercizi di formazione hanno avuto un valore di sì per il gioco. Sostituendo le frazioni di cui alla tabella 4.2 per le probabilità di prova adeguate porta a<br />
<br />
<br />
Pr[yes E] = 2/9 * 3/9 * 3/9 * 3/9 * 9/14 / Pr[E]<br />
<br />
proprio come abbiamo calcolato in precedenza. Ancora una volta, il Pr [E] nel denominatore scompare quando normalizziamo.<br />
Questo metodo va dal nome di Naïve Bayes, perché è basato sulla regola di Bayes e "ingenuamente" assume l'indipendenza: è valido solo per moltiplicare le probabilità quando gli eventi sono indipendenti. L'assunto che gli attributi siano indipendenti (data la classe) nella vita reale è certamente un aspetto simplistico. Ma nonostante il nome scoraggiato, Naïve Bayes funziona molto bene quando viene testato sui set di dati reali, in particolare quando combinati con alcune delle procedure di selezione degli attributi introdotte nel capitolo 7 che eliminano gli attributi ridondanti e quindi non indifferenti.<br />
<br />
Una cosa che può andare storto con Naïve Bayes è che se un valore attributo particolare non si verifica nel set di allenamento in combinazione con ogni valore di classe, le cose vanno male male. Supponiamo nell'esempio che i dati di addestramento siano diversi e il valore dell'attributo outlook = sunny era sempre stato associato all'esito no. Poi la probabilità di outlook = sunny dato un sì, cioè Pr [outlook = sunny | Sì], sarebbe zero, e perché le altre probabilità sono moltiplicate per questo la probabilità finale di sì sarebbe zero, non importa quanto fosse grande. Probabilità che nulla detengono un veto rispetto agli altri. Questa non è una buona idea. Ma il bug è facilmente risolto con piccole modifiche al metodo di calcolo delle probabilità dalle frequenze.<br />
<br />
Ad esempio, la parte superiore della tabella 4.2 mostra che per il gioco = si, la prospettiva è soleggiata per due esempi, nuvolosa per quattro e piovosa per tre, e la parte inferiore fornisce a questi eventi probabilità 2/9, 4/9 e 3/9, rispettivamente. Invece, potremmo aggiungere 1 a ogni numeratore e compensare aggiungendo 3 al denominatore, dando probabilità rispettivamente 3/12, 5/12 e 4/12. Ciò assicurerà che un valore di attributo che si verifica zero volte riceve una probabilità non-zero, seppur piccola. La strategia di aggiungere 1 a ogni conteggio è una tecnica standard chiamata lo stimatore Laplace dopo il grande matematico francese del settecento Pierre Laplace. Anche se funziona bene in pratica, non vi è alcuna ragione particolare per aggiungere 1 ai conteggi: potremmo invece scegliere una piccola costante m e usare<br />
<br />
<br />
(2+m/3)/9+m, (4+m/3)/9+m, (3+m/3)/9+m,<br />
<br />
<br />
Il valore di m, impostato su 3, fornisce in modo efficace un peso che determina l'influenza dei valori a priori di 1/3, 1/3 e 1/3 per ognuno dei tre possibili valori di attributo. Un grande m dice che questi priori sono molto importanti rispetto alle nuove prove provenienti dal gruppo di allenamento, mentre una piccola dà meno influenza. Infine, non vi è alcuna ragione particolare per dividere m in tre parti uguali nei numeratori: possiamo usare<br />
<br />
<br />
(2+mp1)/9+m, (4+mp2)/9+m, (3+mp3)/9+m,<br />
<br />
<br />
Invece, dove p1, p2 e p3 sono pari a 1. In modo efficace, questi tre numeri sono probabilmente a priori che i valori dell'attributo di prospettiva siano solari, coperti e piovosi rispettivamente.<br />
Questa è ora una formulazione completamente Bayesiana in cui le probabilità precedenti sono state assegnate a tutto ciò che è in vista. Ha il vantaggio di essere completamente rigorosi, ma lo svantaggio che non è di solito chiaro come queste precedenti probabilità dovrebbero essere assegnati. In pratica, le probabilità precedenti fanno poca differenza a condizione che ci siano un numero ragionevole di istanze di addestramento e le persone generalmente stimano solo le frequenze usando lo stimatore di Laplace inizializzando tutti i conteggi a uno anziché a zero.<br />
Valori mancanti e attributi numerici<br />
<br />
Una delle cose veramente belle della formulazione bayesiana è che i valori mancanti non sono affatto un problema. Ad esempio, se il valore delle prospettive mancava nell'esempio della tabella 4.3, il calcolo semplicemente ignorerebbe questo attributo,<br />
<br />
<br />
likelihood of yes = 3 9 ¥ 3 9 ¥ 3 9 ¥ 9 14 = 0.0238<br />
likelihood of no = 1 5 ¥ 4 5 ¥ 3 5 ¥ 5 14 = 0.0343.<br />
<br />
<br />
Questi due numeri sono individualmente molto più alti di prima, perché manca una delle frazioni. Ma questo non è un problema perché in entrambi i casi manca una frazione e queste probabilità sono soggette ad un ulteriore processo di normalizzazione. Questo rende probabili per sì e no il 41% e il 59% rispettivamente.<br />
<br />
Se un valore manca in un'istanza di addestramento, non è semplicemente incluso nei conteggi di frequenza e i rapporti di probabilità sono basati sul numero di valori che si verificano piuttosto che sul numero totale di istanze.<br />
<br />
Solitamente i valori numerici vengono gestiti assumendo che abbiano una distribuzione di probabilità "normale" o "Gaussian". La tabella 4.4 fornisce un riepilogo dei dati meteorologici con caratteristiche numeriche della tabella 1.3. Per gli attributi nominali, abbiamo calcolato i conteggi come prima, e per quelli numerici abbiamo semplicemente elencato i valori che si verificano. Poi, mentre abbiamo normalizzato i conti per gli attributi nominali in probabilità, abbiamo calcolato la media e la deviazione standard per ogni classe e ogni attributo numerico. Così il valore medio della temperatura sopra le istanze di sì è 73 e la deviazione standard è 6.2. La media è semplicemente la media dei valori precedenti, cioè l'importo suddiviso per il numero di valori. La deviazione standard è la radice quadrata della varianza del campione, che possiamo calcolare come segue: sottrarre la media da ogni valore, piazzare il risultato, riassumere insieme e dividere per uno inferiore al numero di valori. Dopo aver trovato questa varianza di esempio, troviamo la sua radice quadrata per determinare la deviazione standard<br />
<br />
Questo è il modo standard di calcolo della deviazione media e standard di un insieme di numeri (quello "uno meno che" riguarda il numero di gradi di libertà nel campione, una nozione statistica che non vogliamo trattare qui ). La funzione di densità di probabilità per una distribuzione normale con media m e deviazione standard s è data dall'espressione piuttosto formidabile:<br />
<br />
<br />
f (x) = 1/<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
Ma non temere! Tutto ciò significa che se stiamo considerando un risultato sì quando la temperatura ha un valore, per esempio, di 66, dobbiamo solo collegare x = 66, m = 73 e s = 6.2 nella formula. Quindi il valore della funzione di densità di probabilità è<br />
<br />
<br />
f (temperature = 66 yes ) =<br />
<br />
<br />
Allo stesso modo, la densità di probabilità di un risultato sì quando l'umidità ha valore, diciamo, di 90 è calcolata allo stesso modo:<br />
<br />
<br />
f (humidity = 90 yes ) = 0.0221<br />
<br />
<br />
La funzione di densità di probabilità per un evento è strettamente correlata alla sua probabilità. Tuttavia, non è la stessa cosa. Se la temperatura è una scala continua, la probabilità della temperatura è esattamente 66 - o esattamente qualsiasi altro valore, ad esempio 63.14159262 - è zero. Il significato reale della funzione di densità f (x) è che la probabilità che la quantità si trova all'interno di una piccola regione intorno a x, ad esempio tra x ee2 e x + e / 2, sia e f (x).Quello che abbiamo scritto sopra è corretto se la temperatura viene misurata al grado più prossimo e l'umidità viene misurata al punto percentuale più vicino. Potresti pensare che dovremmo fatturare la figura di precisione e quando usiamo queste probabilità, ma non è necessario. Lo stesso sembrerebbe sia in sì che in nessuna probabilità che segue e annulla quando le probabilità sono state calcolate.<br />
<br />
Utilizzando queste probabilità per il nuovo giorno nella tabella 4.5 si ottiene<br />
<br />
<br />
likelihood of yes = 2 9 ¥ 0.0340 ¥ 0.0221 ¥ 3 9 ¥ 9 14 = 0.000036,<br />
likelihood of no = 3 5 ¥ 0.0221 ¥ 0.0381 ¥ 3 5 ¥ 5 14 = 0.000108;<br />
<br />
<br />
Queste cifre sono molto vicine alle probabilità calcolate in precedenza per il nuovo giorno nella tabella 4.3, poiché i valori di temperatura e umidità di 66 e 90 forniscono simili probabilità ai valori freschi e alti utilizzati prima.<br />
L'assunzione di distribuzione normale rende facile estendere il classificatore Naïve Bayes per affrontare gli attributi numerici. Se mancano i valori di qualsiasi attributo numerico, i calcoli di deviazione standard e standard si basano solo su quelli presenti.<br />
Modelli bayesiani per la classificazione dei documenti<br />
<br />
Un dominio importante per l'apprendimento automatico è la classificazione dei documenti, in cui ogni istanza rappresenta un documento e la classe dell'istanza è l'argomento del documento. I documenti potrebbero essere notizie e le classi potrebbero essere notizie nazionali, notizie all'estero, notizie finanziarie e sport. I documenti sono caratterizzati dalle parole che appaiono in essi e un modo per applicare l'apprendimento macchina alla classificazione di documenti è quello di trattare la presenza o l'assenza di ogni parola come attributo booleano. Naïve Bayes è una tecnica popolare per questa applicazione perché è molto veloce e abbastanza precisa.<br />
<br />
Tuttavia, ciò non tiene conto del numero di occorrenze di ogni parola, che sono informazioni potenzialmente utili per determinare la categoria di un documento. Invece, un documento può essere considerato come un sacco di parole un insieme che contiene tutte le parole del documento, con molteplici occorrenze di una parola che si presentano più volte (tecnicamente, un set comprende ciascuno dei suoi membri una sola volta, mentre una borsa può avere Elementi ripetuti). Le frequenze di parola possono essere soddisfatte applicando una forma modificata di Naïve Bayes che è talvolta descritta come multinomiale Naïve Bayes<br />
<br />
Supponiamo che n1, n2,. . . , Nk è il numero di volte che si verifica parola nel documento e P1, P2,. . . , Pk è la probabilità di ottenere la parola i quando il campionamento da tutti i documenti della categoria H. Supponiamo che la probabilità sia indipendente dal contesto e dalla posizione del testo nel documento. Queste ipotesi portano ad una distribuzione multinomiale per le probabilità del documento. Per questa distribuzione, la probabilità di un documento E data la sua classe H - in altre parole, la formula per calcolare la probabilità Pr [E | H] nella regola di Bayes - è<br />
<br />
<br />
Pr[E|H]......<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
Dove N = n1 + n2 +. . . + Nk è il numero di parole nel documento. Il motivo per i fattori è quello di rendere conto del fatto che l'ordinazione delle occorrenze di ogni parola è immateriale in base al modello di bag-of-words. Pi è stimato calcolando la frequenza relativa della parola i nel testo di tutti i documenti di formazione relativi alla categoria H. In realtà dovrebbe essere un ulteriore termine che dà la probabilità che il modello per la categoria H generi un documento la cui lunghezza è uguale alla lunghezza di E (ecco perché usiamo il simbolo a invece di =), ma è comune supporre che questo sia lo stesso per tutte le classi e quindi può essere eliminato.<br />
<br />
Per esempio, supponiamo che nel vocabolario siano presenti solo le due parole, gialle e blu, e una particolare classe di documenti H ha Pr [giallo | H] = 75% e Pr [blu | H] = 25% (si potrebbe chiamare H La classe di documenti verdi giallognoli). Supponiamo che E sia il documento blu blu giallo con una lunghezza di N = 3 parole. Ci sono quattro sacchetti possibili di tre parole. Uno è {giallo giallo giallo} e la sua probabilità secondo la formula precedente è <br />
<br />
<br />
Pr[{ yellow yellow yellow} H ] a 3! .......<br />
<br />
<br />
Gli altri 3 con le loro probabilità, sono<br />
<br />
<br />
Pr[{ blue blue blue} H ].......<br />
<br />
<br />
Pr[{ yellow yellow blue} H ] ..<br />
<br />
<br />
<br />
<br />
Pr[{ yellow blue blue} H ] ....<br />
<br />
<br />
<br />
<br />
Qui, E corrisponde all'ultimo caso (ricorda che in un sacco di parole l'ordine è immateriale); Quindi la sua probabilità di essere generata dal modello giallo verde del documento è 9/64, o 14%. Supponiamo che un altro codice verde, molto bluastro (chiamarlo H ¢), ha Pr [yellow | H ¢] = 10%, Pr [blu | H ¢] = 90%. La probabilità che E sia generata da questo modello è del 24%.<br />
<br />
Se queste sono le sole due classi, vuol dire che E sia nella classe del documento blu verdolino? Non necessariamente. La regola di Bayes, data precedentemente, dice che bisogna tener conto della probabilità precedente di ogni ipotesi. Se sappiate che in realtà i documenti verdi molto bluastrati sono due volte più rari di quelli verdi giallognoli, sarebbe sufficiente superare la precedente disparità del 14% al 24% e puntare l'equilibrio a favore della classe verde giallastro.<br />
<br />
I fattori nella formula di probabilità precedente non devono effettivamente essere calcolati perché - essendo lo stesso per ogni classe - sono comunque abbandonati nel processo di normalizzazione. Tuttavia, la formula continua a moltiplicarsi insieme molte piccole probabilità, che presto creano numeri estremamente piccoli che causano il downflow su grandi documenti. Il problema può essere evitato utilizzando logaritmi delle probabilità invece delle probabilità stesse.<br />
Nella formulazione multinomiale di Naïve Bayes la classe di un documento viene determinata non solo dalle parole che si verificano in esso ma anche dal numero di volte in cui si verificano.<br />
In generale, esegue meglio il modello Naïve Bayes ordinario per la classificazione dei documenti, in particolare per i grandi formati di dizionario.<br />
Discussione <br />
<br />
Naïve Bayes fornisce un approccio semplice, con chiara semantica, a rappresentare, utilizzare e apprendere conoscenze probabilistiche. Possono essere ottenuti risultati impressionanti ". È stato spesso dimostrato che Naïve Bayes rivale, e anzi supera, classificatori più sofisticati su molti set di dati. La morale è, cerca sempre le cose semplici in primo luogo. A volte, dopo una "lotta estesa", la gente ha ripetutamente ottenuto buoni risultati utilizzando metodi di apprendimento sofisticati solo alla fine di scoprire anni dopo che semplici metodi come 1R e Naïve Bayes fanno altrettanto bene o anche meglio.<br />
<br />
Ci sono molti set di dati per i quali Naïve Bayes non fa così bene, e è facile capire perché. Poiché gli attributi vengono trattati come se fossero completamente indipendenti, l'aggiunta di quelli ridondanti frena il processo di apprendimento. Come esempio estremo, se si dovesse includere un nuovo attributo con gli stessi valori della temperatura ai dati meteorologici, l'effetto dell'attributo di temperatura sarebbe moltiplicato: tutte le sue probabilità sarebbero quadrate, dando una grande influenza " Nella decisione ". Se si dovesse aggiungere 10 tali attributi, le decisioni sarebbero effettivamente effettuate solo sulla temperatura. Le dipendenze tra gli attributi riducono inevitabilmente il potere di Naïve Bayes a discernere ciò che sta succedendo. Tuttavia, possono essere migliorati utilizzando un sottoinsieme degli attributi nella procedura di decisione, facendo una scelta accurata di quelli da utilizzare. Il capitolo 7 mostra come.<br />
<br />
L'ipotesi di "normale distribuzione" per gli attributi numerici è un'altra limitazione di Naïve Bayes, come abbiamo già formulato qui. Molte funzioni semplicemente non sono normalmente distribuite. Tuttavia, non c'è nulla che impedisca di utilizzare altre distribuzioni per gli attributi numerici: 'non c'è nussuna magia' sulla distribuzione normale. Se si sa che un particolare attributo potrebbe seguire un'altra distribuzione, è possibile utilizzare procedure di stima standard per quella distribuzione. Se sospetti che non sia normale, ma non conosce la distribuzione effettiva, ci sono procedure per la "stima della densità del kernel" che non assumono alcuna distribuzione particolare per i valori degli attributi. Un'altra possibilità è semplicemente di discretizzare i dati innanzitutto.<br />
Divide-e-conquer: Costruire alberi decisionali<br />
<br />
Il problema della costruzione di un albero di decisione può essere espresso in modo ricorsivo. Innanzitutto, selezionare un attributo da posizionare nel nodo principale e fare un ramo per ogni possibile valore. Questo divide l'esempio impostato in sottoinsiemi, uno per ogni valore dell'attributo. Ora il processo può essere ripetuto ricorsivamente per ogni ramo, utilizzando solo quelle istanze che effettivamente raggiungono il ramo. Se in qualsiasi momento tutte le istanze di un nodo hanno la stessa classificazione, smettere di sviluppare quella parte dell'albero.<br />
<br />
L'unica cosa da decidere è come determinare quale attributo da dividere, dato un insieme di esempi con classi diverse. Considerate (ancora una volta!) I dati meteo. Ci sono quattro possibilità per ogni divisione e al livello superiore producono alberi come quelli di Figura 4.2. Qual è la scelta migliore? Il numero di classi sì e nessuna viene mostrato alle foglie. Qualsiasi foglia con una sola classe - sì o no - non deve essere suddivisa ulteriormente e il processo ricorsivo in quel settore finirà. Perché cerchiamo piccoli alberi, vorremmo che questo accadesse il più presto possibile. Se avessimo una misura della purezza di ogni nodo, potremmo scegliere l'attributo che produce 'i nodi figlia più pura'. Prendi un momento per guardare la Figura 4.2 e riflettere su quale attributo pensate sia la scelta migliore.<br />
<br />
<br />
<br />
La misura della purezza che usiamo è chiamata l'informazione e viene misurata in unità denominate bits. Associato a un nodo dell'albero, rappresenta la quantità prevista di informazioni necessarie per specificare se una nuova istanza dovrebbe essere classificata sì o no, dato che l'esempio ha raggiunto quel nodo. A differenza dei bit nella memoria del computer, la quantità prevista di informazioni di solito comporta frazioni di un po 'e spesso è meno di una! Lo calcoliamo in base al numero di sì e di no al nodo; Guarderemo in breve i dettagli del calcolo. Ma prima vediamo come viene utilizzato. Nel valutare il primo albero di Figura 4.2, i numeri di sì e nessuna classe dei nodi foglia rispettivamente sono rispettivamente [2,3], [4,0] e [3,2] ei valori di informazioni di questi nodi sono :<br />
<br />
<br />
Figure 4.2 Tree stumps for the weather data<br />
<br />
<br />
<br />
<br />
<br />
Possiamo calcolare il valore d'informazione medio di questi, tenendo conto del numero di istanze che scendono ciascun ramo-cinque lungo il primo e il terzo e il quattro al secondo:<br />
<br />
<br />
info([2, 3], [4, 0], [3, 2]) = (5 14) ¥ 0.971 + (4 14) ¥ 0 + (5 14) ¥ 0.971 = 0.693 bits.<br />
<br />
<br />
Questa media rappresenta la quantità di informazioni che ci aspettiamo sarebbe necessaria per specificare la classe di una nuova istanza, data la struttura ad albero di Figura 4.2 (a).<br />
<br />
Prima di creare una delle strutture ad albero nascente in Figura 4.2, gli esempi di addestramento alla radice comprendevano nove sì e cinque nodi non corrispondenti a un valore di informazioni<br />
<br />
<br />
info([9, 5]) = 0.940 bits<br />
<br />
<br />
Così l'albero in Figura 4.2 (a) è responsabile di un guadagno di informazioni di<br />
<br />
<br />
gain(outlook) = info([9, 5]) - info([2, 3], [4, 0], [3, 2]) = 0.940 - 0.693 = 0.247 bits,<br />
<br />
<br />
Che può essere interpretato come valore informativo della creazione di un ramo sull'attributo di outlook.<br />
La via da seguire è chiara. Calcoliamo il guadagno di informazioni per ciascun attributo e scegliamo quello che ottiene la maggior parte delle informazioni da dividere. Nella situazione di Figura 4.2,<br />
<br />
<br />
gain(outlook) = 0.247 bits<br />
gain(temperature ) = 0.029 bits<br />
gain(humidity ) = 0.152 bits<br />
gain(windy ) = 0.048 bits, <br />
<br />
Quindi selezioniamo la prospettiva come attributo di splitting alla radice dell'albero. Speriamo che questo accordi con la tua intuizione come il migliore da scegliere. È l'unica scelta per cui un nodo figlia è completamente puro, e questo gli offre un notevole vantaggio rispetto agli altri attributi. L'umidità è la scelta migliore perchè produce un nodo figlia più grande che è quasi completamente puro.<br />
Poi proseguiamo, ricorsivamente. La Figura 4.3 mostra le possibilità di un ulteriore ramo nel nodo raggiunto quando la vista è soleggiata. Chiaramente, un'ulteriore divisione sulla prospettiva non produrrà nulla di nuovo, quindi prendiamo in considerazione solo gli altri tre attributi. Il guadagno di informazioni di ciascuno risulta essere<br />
<br />
<br />
gain(temperature ) = 0.571 bits<br />
gain(humidity ) = 0.971 bits<br />
gain(windy ) = 0.020 bits,<br />
<br />
<br />
Perciò scegliamo l'umidità come attributo di suddivisione a questo punto. Non è necessario suddividere questi nodi ulteriormente, quindi questo ramo è terminato.<br />
L'applicazione continua della stessa idea porta all'albero decisionale della Figura 4.4 per i dati meteorologici. Idealmente, il processo termina quando tutti i nodi foglia sono puro, cioè quando contengono istanze che hanno tutte la stessa classificazione. Tuttavia, potrebbe non essere possibile raggiungere questa situazione felice perché non c'è nulla da fermare il set di formazione che contiene due esempi con attributi identici di serie ma classi diverse. Di conseguenza, ci arrestiamo quando i dati non possono essere divisi ulteriormente.<br />
<br />
<br />
<br />
Figure 4.3 Expanded tree stumps for the weather data.<br />
<br />
<br />
<h4>
Calcolo delle informazioni</h4>
<br />
Ora è giunto il momento di spiegare come calcolare la misura dell'informazione che viene utilizzata come base per valutare diverse divisioni. Descriviamo l'idea di base in questa sezione, poi nella successiva esaminiamo una correzione che di solito viene fatta per contrastare una bias verso la selezione delle divisioni sugli attributi con un gran numero di valori possibili. Prima di esaminare la formula dettagliata per calcolare la quantità di informazioni necessarie per specificare la classe di un esempio in quanto raggiunge un nodo ad albero con un certo numero di sì e di no, prima di considerare il tipo di proprietà che ci si aspetterebbe da questa quantità:<br />
<br />
<br />
Figure 4.4 Decision tree for the weather data.<br />
<br />
<br />
1. Quando il numero di sì o no è zero, le informazioni sono zero.<br />
2. Quando il numero di sì e di no è uguale, le informazioni raggiungono un massimo.<br />
<br />
<br />
Inoltre, la misura dovrebbe essere applicabile alle situazioni multiclasse, non solo a quelle a due classi.<br />
La misura dell'informazione riguarda la quantità di informazioni ottenute adottando una decisione e una proprietà più sottile delle informazioni può essere ottenuta considerando la natura delle decisioni. Le decisioni possono essere fatte in un solo stadio o possono essere fatte in più fasi e la quantità di informazioni coinvolte è la stessa in entrambi i casi. Ad esempio, la decisione coinvolta<br />
<br />
<br />
info([2,3,4])<br />
<br />
<br />
Può essere fatta in due fasi. Innanzitutto decidi se è il primo caso o uno degli altri due casi:<br />
<br />
<br />
info([2,7])<br />
<br />
<br />
E poi decidere quale degli altri due casi è:<br />
<br />
<br />
info([3,4])<br />
<br />
<br />
In alcuni casi la seconda decisione non dovrà essere fatta, vale a dire, quando la decisione risulta essere la prima. Prendendo in considerazione ciò porta all'equazione<br />
<br />
<br />
info([2,3,4]) = info([2,7]) + (7 9) ¥ info([3,4]).<br />
<br />
<br />
Naturalmente, non c'è niente di speciale per questi numeri particolari, e una relazione simile deve tenere indipendentemente dai valori reali. Quindi possiamo aggiungere un ulteriore criterio all'elenco precedente:<br />
<br />
<br />
3. Le informazioni devono rispettare la proprietà multistage precedentemente illustrata.<br />
<br />
<br />
Notevole, si scopre che esiste una sola funzione che soddisfa tutte queste proprietà e si conosce come valore d'informazione o entropia:<br />
<br />
<br />
entropy ( p1 , p2 , . . . , pn ) = - p1 log p1 - p2 log p2 . . . - pn log pn<br />
<br />
<br />
La ragione per i segni meno è che i logaritmi delle frazioni p1, p2,. . . , Pn sono negativi, quindi l'entropia è in realtà positiva. Di solito i logaritmi sono espressi in base 2, quindi l'entropia si trova in unità denominate bits, solo i soliti tipi di bit utilizzati con i computer.<br />
Gli argomenti p1, p2,. . . Della formula di entropia sono espressi come frazioni <br />
<br />
che si aggiungono a una, in modo che, ad esempio, <br />
<br />
<br />
info([2,3,4]) = entropy (2 9 , 3 9 , 4 9).<br />
<br />
<br />
Così la proprietà decisionale multistage può essere scritta in generale come<br />
<br />
<br />
entropy ( p, q, r ) = entropy ( p, q + r ) + (q + r ) * entropy ....<br />
<br />
<br />
<br />
<br />
<br />
dove p + q + r = 1.<br />
<br />
<br />
A causa del modo in cui funziona la funzione di log, è possibile calcolare la misura delle informazioni senza dover elaborare le singole frazioni:<br />
<br />
<br />
<br />
info([2,3,4]) = - 2/9 * log2/9 - 3/9 * log3/9 - 4/9 * log4/9 = [ -2 log2 - 3 log3 - 4 log4 + 9 log9]/9 .<br />
<br />
Questo è il modo in cui la misura di informazioni viene solitamente calcolata in pratica. Quindi il valore dell'informazione per il primo nodo foglia del primo albero di Figura 4.2 è<br />
<br />
<br />
info([2,3]) = - 2 5 ¥ log 2 5 - 3 5 ¥ log 3 5 = 0.971 bits,<br />
<br />
<br />
come a page 98.<br />
<h4>
Attributi altamente ramificanti</h4>
<br />
Quando alcuni attributi hanno un gran numero di valori possibili, creando un ramo multiplo con molti nodi figlio, si verifica un problema con il calcolo del guadagno delle informazioni. Il problema può essere meglio apprezzato nel caso estremo quando un attributo ha un valore diverso per ogni istanza nel set di dati, ad esempio un codice di identificazione potrebbe essere attributo.<br />
<br />
<br />
Figure 4.5 Tree stump for the ID code attribute.<br />
<br />
<br />
La tabella 4.6 fornisce i dati meteo con questo attributo extra. Il raggruppamento sul codice ID produce il ceppo di albero in Figura 4.5. Le informazioni necessarie per specificare la classe in base al valore di questo attributo sono<br />
<br />
<br />
<br />
info([0,1]) + info([0,1]) + info([1,0]) + . . . + info([1,0]) + info([0,1]),<br />
<br />
<br />
Che è zero poiché ognuno dei 14 termini è zero. Questo non è sorprendente: l'attributo del codice ID identifica l'istanza che determina la classe senza alcuna ambiguità, come mostra la Tabella 4.6. Di conseguenza, il guadagno di informazioni di questo attributo è solo l'informazione alla root, info ([9,5]) = 0,940 bit. Questo è maggiore del guadagno di informazioni di qualsiasi altro attributo, e quindi il codice ID sarà inevitabilmente scelto come attributo di suddivisione. Ma la ramificazione del codice di identificazione non è un bene per prevedere la classe di istanze sconosciute e non dice nulla della struttura della decisione, che in fondo sono gli obiettivi gemellari dell'apprendimento macchina.<br />
<br />
L'effetto complessivo è che la misura di guadagno di informazioni tende a preferire attributi con un gran numero di valori possibili. Per compensare questo, viene ampiamente utilizzata una modifica della misura chiamata rapporto di guadagno. Il rapporto di guadagno viene determinato tenendo conto del numero e della dimensione dei nodi figlia in cui un attributo suddivide il set di dati, ignorando tutte le informazioni sulla classe. Nella situazione mostrata in Figura 4.5, tutti i conteggi hanno un valore di 1, quindi il valore dell'informazione della divisione è<br />
<br />
<br />
info([1,1, . . . ,1]) = - 1 14 ¥ log 1 14 ¥ 14,<br />
<br />
<br />
Perché la stessa frazione, 1/14, appare 14 volte. Ciò significa registrare 14 o 3.807 bit, che è un valore molto elevato. Ciò è dovuto al fatto che il valore dell'informazione di una divisione è il numero di bit necessari per determinare a quale ramo è assegnata un'istanza, e più rami sono presenti, maggiore è questo valore. Il rapporto di guadagno viene calcolato dividendo il guadagno iniziale di informazioni, 0,940 in questo caso, per il valore di informazioni dell'attributo, 3.807, con un valore di guadagno di 0,247 per l'attributo del codice ID.<br />
Tornando agli alberi di albero per i dati meteorologici di Figura 4.2, la prospettiva divide il set di dati in tre sottoinsiemi di dimensioni 5, 4 e 5 e quindi ha un valore intrinseco di informazioni<br />
<br />
<br />
info([5,4,5]) = 1.577<br />
<br />
<br />
Senza prestare alcuna attenzione alle classi coinvolte nei sottogruppi. Come abbiamo visto, questo valore di informazioni intrinseco è più alto per un attributo molto più ramificante, ad esempio il codice ID ipotizzato. Ancora una volta possiamo correggere il guadagno delle informazioni dividendo dal valore intrinseco delle informazioni per ottenere il rapporto di guadagno.<br />
I risultati di questi calcoli per i ceppi di albero di Figura 4.2 sono riassunti nella Tabella 4.7. La prospettiva è ancora in cima, ma l'umidità è ora un contendente molto più vicino perché divide i dati in due sottoinsiemi invece di tre. In questo esempio particolare, l'attributo ipotetico di codice ID, con un rapporto di guadagno di 0,247, sarebbe ancora preferito a uno di questi quattro. <br />
<br />
Tuttavia, il suo vantaggio è notevolmente ridotto. Nelle implementazioni pratiche, possiamo utilizzare un test ad hoc per evitare la suddivisione su un attributo inutile.<br />
Purtroppo, in alcune situazioni, la modifica del guadagno di guadagno si sovrappone e può portare a preferire un attributo solo perché le sue informazioni intrinseche sono molto inferiori a quelle per gli altri attributi. Una correzione standard è quella di scegliere l'attributo che massimizza il rapporto di guadagno, a condizione che il guadagno di informazioni per tale attributo sia almeno ottimo come il guadagno medio di informazioni per tutti gli attributi esaminati.<br />
<h4>
Discussione</h4>
<br />
L'approccio di divisione e conquista all'induzione di alberi decisionali, talvolta chiamata induzione a cima di decisioni degli alberi decisionali, è stata sviluppata e raffinata da molti anni da J. Ross Quinlan dell'Università di Sydney, in Australia. Anche se altri hanno lavorato su metodi simili, la ricerca di Quinlan è sempre stata all'avanguardia nell'induzione di alberi decisionali. Il metodo che è stato descritto utilizzando il criterio di guadagno delle informazioni è sostanzialmente identico a quello conosciuto come ID3. L'utilizzo del rapporto di guadagno è stato uno dei molti miglioramenti che sono stati fatti per ID3 in diversi anni; Quinlan lo ha descritto come robusto in una grande varietà di circostanze. Sebbene una soluzione robusta e pratica, si sacrifica l'eleganza e la pulizia motivata teorica del criterio di guadagno delle informazioni.<br />
<br />
Una serie di miglioramenti a ID3 culminarono in un sistema pratico e influente per l'induzione di alberi decisionali denominata C4.5. Questi miglioramenti includono metodi per trattare gli attributi numerici, i valori mancanti, i dati rumorosi e la generazione di regole dagli alberi e sono descritte nella Sezione 6.1.<br />
<h3>
Algoritmi di copertura: Costruzione di regole</h3>
<br />
Come abbiamo visto, gli algoritmi degli alberi decisionali si basano su un approccio di divisione e conquista del problema della classificazione. Lavorano dall'alto verso il basso, cercando ad ogni stadio un attributo da dividere che meglio separa le classi; Quindi elaborano ricorsivamente i sottoproblemi che risultano dalla suddivisione. Questa strategia genera un albero decisionale, che può essere convertito, se necessario, in un insieme di regole di classificazione, anche se per produrre regole efficaci, la conversione non è banale.<br />
<br />
Un approccio alternativo è quello di prendere ogni classe a sua volta e cercare un modo per coprire tutti i casi in esso, escludendo contemporaneamente istanze non in classe. Questo è chiamato un approccio di copertura perché in ogni fase si identifica una regola che "copre" alcune delle istanze. Per sua stessa natura, questo approccio copre un insieme di regole piuttosto che un albero decisionale.<br />
<br />
Il metodo di copertura può essere facilmente visualizzato in uno spazio bidimensionale di istanze come mostrato nella Figura 4.6 (a). Prendiamo per prima una regola che copra l'a. Per il primo test nella regola, dividere lo spazio verticalmente come mostrato nell'immagine centrale.<br />
Questo dà l'inizio di una regola:<br />
<br />
<br />
Figure 4.6 Covering algorithm:<br />
<br />
<br />
If x > 1.2 then class = a<br />
<br />
Ciò dà una regola che copre tutti tranne uno degli a. Probabilmente è opportuno lasciarla a questo scopo, ma se fosse necessario per coprire l'ultima a, forse sarebbe necessaria un'altra regola <br />
<br />
<br />
If x > 1.4 and y < 2.4 then class = a<br />
<br />
<br />
La stessa procedura porta a due regole che coprono i b:<br />
<br />
<br />
<br />
If x £ 1.2 then class = b<br />
If x > 1.2 and y £ 2.6 then class = b<br />
<br />
<br />
Ancora una è erroneamente coperta da queste regole. Se fosse necessario escluderlo, dovrebbero essere aggiunti altri test alla seconda regola e dovrebbero essere introdotte altre regole per coprire i b che questi nuovi test escludono.<br />
Regole contro alberi <br />
<br />
Un algoritmo di "divisione e conquista" dall'alto verso il basso funziona sugli stessi dati in modo che sia, almeno superficialmente, abbastanza simile ad un algoritmo di copertura. Potrebbe prima dividere il set di dati utilizzando l'attributo x e probabilmente finirà per suddividere lo stesso posto, x = 1.2. Tuttavia, mentre l'algoritmo di copertura riguarda solo la copertura di una singola classe, la divisione prenderà in considerazione entrambe le classi, poiché gli algoritmi di divisione e conquista creano una singola descrizione concettuale che si applica a tutte le classi. La seconda divisione potrebbe anche essere allo stesso posto, y = 2.6, che porta alla struttura di decisione nella figura 4.6 (b). Questa struttura corrisponde esattamente all'insieme delle regole e, in questo caso, "non vi è alcuna differenza" tra la copertura e gli algoritmi "divide-and-conquer".<br />
<br />
Ma in molte situazioni c'è una differenza tra le regole e gli alberi in termini di chiarezza della rappresentazione. Ad esempio, quando abbiamo descritto il problema subtree replicato nella sezione 3.3, abbiamo osservato che le regole possono essere simmetriche mentre gli alberi devono selezionare un attributo da dividere in primo luogo e ciò può portare ad alberi molto più grandi di un insieme equivalente di regole. Un'altra differenza è che, nel caso multiclasse, una spaccatura delle decisioni prende in considerazione tutte le classi, cercando di massimizzare la purezza della suddivisione, mentre il metodo di generazione delle regole si concentra su una classe alla volta, trascurando ciò che accade per le altre classi .<br />
<h4>
Un semplice algoritmo di copertura</h4>
<br />
Gli algoritmi di copertura funzionano aggiungendo test alla regola in costruzione, sempre cercando di creare una regola con la massima precisione. Al contrario, gli algoritmi di "divide-and-conquer" operano aggiungendo test all'albero in costruzione, sempre cercando di massimizzare la separazione tra le classi. Ognuna di queste richiede di trovare un attributo da dividere. Ma il criterio per il miglior attributo è diverso in ogni caso. Mentre gli algoritmi di "divide-and-conquer" come ID3 scelgono un attributo per massimizzare il guadagno delle informazioni, l'algoritmo di copertura che descriveremo sceglie una coppia di attributo-valore per massimizzare la probabilità della classificazione desiderata.<br />
<br />
La Figura 4.7 mostra un'immagine della situazione, mostrando lo spazio contenente tutte le istanze, una regola parzialmente costruita e la stessa regola dopo che è stato aggiunto un nuovo termine. Il nuovo termine limita la copertura della regola: l'idea è quella di includere il maggior numero di istanze della classe desiderata e di escludere il maggior numero di istanze di altre classi. Supponiamo che la nuova regola coprirà un totale di istanze t, di cui p sono esempi positivi della classe e t-p sono in altre classi, cioè sono errori fatti dalla regola. Quindi scegliere il nuovo termine per massimizzare il rapporto p / t.<br />
Un esempio vi aiuterà. Per una modifica, utilizziamo il problema della lente a contatto della tabella 1.1. Formiamo regole che coprono ciascuna delle tre classi, dure, morbide e nessuna, a sua volta. Per iniziare, cerchiamo una regola:<br />
<br />
<br />
<br />
If ? then recommendation = hard<br />
<br />
<br />
Per il termine sconosciuto ?, abbiamo nove scelte:<br />
<br />
<br />
age = young 2/8<br />
<br />
age = pre-presbyopic 1/8age = presbyopic 1/8<br />
<br />
spectacle prescription = myope<br />
<br />
spectacle prescription = hypermetrope<br />
<br />
astigmatism = no<br />
astigmatism = yes<br />
tear production rate = reduced <br />
<br />
tear production rate = normal<br />
<br />
3/12<br />
1/12<br />
0/12<br />
4/12<br />
0/12<br />
4/12<br />
<br />
<br />
I numeri a destra mostrano la frazione di istanze "corrette" nell'insieme selezionato da quella scelta. In questo caso, il corretto significa che la raccomandazione è dura. Ad esempio, l'età = giovane seleziona otto istanze, due dei quali raccomandano lenti a contatto dure, quindi la prima frazione è di 2/8. (Per seguire questo, dovrai guardare indietro i dati delle lenti a contatto nella tabella 1.1 a pagina 6 e conteggiare le voci nella tabella.) Scegliamo la frazione più grande, 4/12, scegliendo arbitrariamente tra il settimo e l'ultimo Scelta nell'elenco precedente e creare la regola:<br />
<br />
<br />
If astigmatism = yes then recommendation = hard<br />
<br />
<br />
Questa regola è inesatta, ottenendo solo 4 istanze corrette dai 12 che copre, mostrati nella Tabella 4.8. Quindi lo raffiniamo ulteriormente:<br />
<br />
<br />
If astigmatism = yes and ? then recommendation = hard<br />
<br />
<br />
Considerando le possibilità per il termine sconosciuto? Produce le sette scelte:<br />
<br />
<br />
age = young<br />
age = pre-presbyopic<br />
age = presbyopic<br />
spectacle prescription<br />
spectacle prescription<br />
tear production rate =<br />
tear production rate =<br />
= myope<br />
= hypermetrope<br />
reduced<br />
normal<br />
2/4<br />
1/4<br />
1/4<br />
3/6<br />
1/6<br />
0/6<br />
4/6<br />
<br />
<br />
(Ancora una volta, conteggi le voci nella Tabella 4.8.) L'ultimo è un vincitore chiaro, ottenendo quattro istanze corrette dai sei che copre e corrisponde alla regola<br />
<br />
<br />
If astigmatism = yes and tear production rate = normal<br />
then recommendation = hard<br />
<br />
<br />
Dobbiamo fermarci qui? Forse. Ma diciamo che stiamo andando per regole esatte, non importa quanto siano complesse. La tabella 4.9 mostra i casi che sono coperti dalla regola finora. Le possibilità per il prossimo termine sono ora selezionate tre. In caso di parità, scegliamo la regola con maggiore copertura, dando la regola finale:<br />
<br />
<br />
If astigmatism = yes and tear production rate = normal<br />
and spectacle prescription = myope then recommendation = hard<br />
<br />
<br />
Questa è veramente una delle regole fornite per il problema della lente a contatto. Ma riguarda solo tre delle quattro rigide raccomandazioni. Quindi eliminiamo questi tre dall'insieme di istanze e ricominciamo a cercare un'altra regola della forma:<br />
<br />
<br />
If ? then recommendation = hard<br />
<br />
<br />
Seguendo lo stesso processo, scopriremo infine che l'età = giovane è la scelta migliore per il primo termine. La sua copertura è sette; La ragione per i sette è che 3 istanze sono state rimosse dal set originale, lasciando 21 istanze complessivamente. La scelta migliore per il secondo termine è l'astigmatismo = sì, scegliendo 1/3 (in realtà, questo è un legame); Tasso di produzione della lacrima = normale è il migliore per il terzo, selezionando 1/1.<br />
<br />
<br />
If age = young and astigmatism = yes and<br />
tear production rate = normal then recommendation = hard<br />
<br />
<br />
Questa regola effettivamente copre tre delle originali istanze, due dei quali sono coperti dalla regola precedente, ma va bene perché la raccomandazione è la stessa per ogni regola.Ora che tutti i casi con lenti a righe sono coperti, il passo successivo è quello di procedere con le lenti morbide allo stesso modo. Infine, vengono create le regole per nessun caso - a meno che non troviamo una regola impostata con una regola predefinita, nel qual caso le regole esplicite per l'esito finale non sono necessarie.<br />
<br />
Quello che abbiamo appena descritto è il metodo PRISM per la creazione di regole. Genera solo regole corrette o "perfette". Misura il successo di una regola dalla formula di precisione p / t. Qualsiasi regola con precisione inferiore al 100% è "errata" in quanto assegna casi alla classe in questione che in realtà non hanno quella classe. PRISM continua a aggiungere clausole a ciascuna regola finché non è perfetta: la sua precisione è del 100%. La Figura 4.8 fornisce un riepilogo dell'algoritmo. Il loop esterno si estende sulle classi, generando regole per ogni classe a sua volta. Ricordiamo di reinizializzare ogni set di esempi ogni volta. Quindi creiamo regole per quella classe e rimuoviamo gli esempi dall'insieme fino a quando non ci resta nessuna classe. Ogni volta che creiamo una regola, inizia con una regola vuota (che copre tutti gli esempi) e quindi limita l'aggiunta di test fino a coprire solo esempi della classe desiderata. Ad ogni fase scegliere il test più promettente, cioè quello che massimizza l'accuratezza della regola. Infine, rompere i legami selezionando il test con la massima copertura.<br />
Regole rispetto alle liste di decisione<br />
<br />
For each class C<br />
Initialize E to the instance set<br />
While E contains instances in class C<br />
Create a rule R with an empty left-hand side that predicts class C<br />
Until R is perfect (or there are no more attributes to use) do<br />
For each attribute A not mentioned in R, and each value v,<br />
Consider adding the condition A=v to the LHS of R<br />
Select A and v to maximize the accuracy p/t<br />
(break ties by choosing the condition with the largest p)<br />
Add A=v to R<br />
Remove the instances covered by R from E<br />
<br />
<br />
Figure 4.8 Pseudocode for a basic rule learner.<br />
<br />
<br />
Considerate le regole prodotte per una particolare classe, vale a dire l'algoritmo di Figura 4.8 con il loop esterno rimosso. Sembra chiaro dal modo in cui queste regole vengono prodotte per essere interpretate in ordine, vale a dire come una lista di decisioni, testando le regole a turno finché non si applica e poi usando. Ciò è dovuto al fatto che le istanze coperte da una nuova regola vengono rimosse dal set di istanze non appena la regola è completata (nella terza riga dalla fine del codice in Figura 4.8): le regole successive sono progettate per istanze non coperte Per la regola. Tuttavia, anche se sembra che dobbiamo controllare le regole a sua volta, non dobbiamo farlo. Si consideri che tutte le regole successive generate per questa classe avranno lo stesso effetto, tutte prevedono la stessa classe. Ciò significa che non importa quale ordine venga eseguito in: verranno trovati una regola che copra questa istanza, nel qual caso la classe in questione è prevista o non viene trovata alcuna regola in tal caso la classe non è prevista .<br />
<br />
Ora torni all'algoritmo generale. Ogni classe viene considerata a sua volta e vengono create le regole che distinguono le istanze in quella classe dagli altri. Nessun ordine è implicito tra le regole per una classe e quelle per un altro. Di conseguenza, le regole prodotte possono essere eseguite indipendentemente dall'ordine.<br />
<br />
Come descritto nella sezione 3.3, le regole indipendenti dall'ordine sembrano fornire una maggiore modularità da parte di ciascuno che agiscono come nuggets indipendenti di "conoscenza", ma soffrono lo svantaggio che non è chiaro cosa fare quando si applicano le regole in conflitto. Con le regole generate in questo modo, un esempio di test può ricevere più classificazioni, ovvero le regole applicabili a diverse classi possono accettarlo. Altri esempi di test potrebbero non essere assolutamente classificati. Una semplice strategia per forzare una decisione in questi ambigui casi è quella di scegliere, dalle classificazioni previste, quella con gli esempi più addestrati o, se non è prevista alcuna classificazione, scegliere la categoria con gli esempi di formazione in generale. Queste difficoltà non si verificano con gli elenchi di decisione in quanto sono intesi per essere interpretati in ordine e l'esecuzione si interrompe non appena una regola si applica: l'aggiunta di una regola predefinita alla fine assicura che ogni istanza di prova riceva una classificazione. È possibile generare buone elenchi di decisione per il caso multiclass utilizzando un metodo leggermente diverso, come vedremo nella sezione 6.2.<br />
<br />
I metodi come PRISM possono essere descritti come algoritmi "separati e conquistati": individuate una regola che copre molteplici istanze della classe (e esclude quelle non in classe), separano le istanze coperte perché sono già occupate Per regola, e continuare il processo su quelli che sono rimasti. Questo contrasta bene con l'approccio di divisione e conquista degli alberi decisionali. Il passo separato aumenta notevolmente l'efficienza del metodo perché l'insieme di istanze si restringe continuamente mentre l'operazione procede.<br />
Regole di associazione mineraria <br />
<br />
Le regole dell'associazione sono come le regole di classificazione. Potreste trovarli allo stesso modo, eseguendo una procedura di "induzione di dominazione e conquista" per ogni possibile espressione che potrebbe accadere sul lato "destro" della regola. Ma non solo potrebbe accadere qualsiasi attributo sul lato "destro" con qualsiasi valore possibile; Una singola regola di associazione spesso prevede il valore di più di un attributo. Per trovare tali regole, dovresti eseguire una volta la procedura di "regola-induzione" per ogni possibile combinazione di attributi, con ogni possibile combinazione di valori, sul lato destro. Ciò comporterebbe un numero enorme di regole di associazione, che dovrebbero quindi essere abbattute sulla base della loro copertura (il numero di istanze che prevedono correttamente) e la loro precisione (lo stesso numero espresso in proporzione al numero di Istanze a cui si applica la regola). Questo approccio è abbastanza inaplicabile. (Si noti che, come abbiamo detto nella sezione 3.4, ciò che noi chiamiamo la copertura è spesso chiamato supporto e quello che chiamiamo la precisione è spesso chiamato fiducia.)<br />
<br />
Al contrario, capitalizziamo il fatto che siamo solo interessati a regole di associazione con copertura elevata. Per il momento, ignoriamo la distinzione tra i lati "sinistra" e "destra" di una regola e cerchiamo combinazioni di coppie di valore attribuito che hanno una copertura minima prestabilita. Questi sono chiamati set di elementi: una coppia di attributo-valore è un elemento. La terminologia deriva dall'analisi del basket di mercato, in cui gli articoli sono articoli nel tuo carrello e il gestore di supermercati cerca associazioni tra questi acquisti.<br />
Item sets <br />
<br />
La prima colonna della tabella 4.10 mostra le singole voci per i dati meteorologici della tabella 1.2, con il numero di volte in cui ogni elemento appare nel dataset indicato a destra. Questi sono i set one-item. Il passo successivo è quello di generare i set di due elementi creando coppie di one-item. Naturalmente, non c'è alcun motivo per generare un set contenente due valori diversi dello stesso attributo (come outlook = sunny e outlook = overcast), perché ciò non può verificarsi in alcun esempio effettivo<br />
<br />
Supponiamo che cerchiamo regole di associazione con copertura minima 2: quindi scartiniamo tutti i set di elementi che coprono meno di due istanze. Ciò lascia 47 set di due elementi, alcuni dei quali sono mostrati nella seconda colonna insieme al numero di volte che appaiono. Il passo successivo è generare i set di tre elementi, di cui 39 hanno una copertura di 2 o superiore. Ci sono 6 set di quattro elementi, e nessun set di cinque elementi per questi dati, un set di cinque elementi con copertura 2 o superiore potrebbe corrispondere solo ad un'istanza ripetuta. La prima riga del tavolo, per esempio, mostra che ci sono cinque giorni quando la vista è soleggiata, due dei quali hanno una temperatura minima e, infatti, in entrambi i giorni l'umidità è alta e la riproduzione non è così.<br />
<h4>
Associasione di regole</h4>
<br />
Poco ci spiegheremo come generare questi set di elementi in modo efficiente. Ma prima lasciateci finire la storia. Una volta generati tutti i set di elementi con la copertura necessaria, il passo successivo è quello di trasformare ciascuno in una regola o insieme di regole con almeno la precisione minima specificata. Alcuni gruppi di elementi produrranno più regole; Altri non produrranno nessuno. Ad esempio, vi è un set di tre elementi con una copertura di 4 (riga 38 della tabella 4.10):<br />
<br />
<br />
humidity = normal, windy = false, play = yes<br />
<br />
<br />
Questo set porta a sette regole potenziali:<br />
<br />
<br />
If humidity = normal and windy = false then play = yes 4/4<br />
If humidity = normal and play = yes then windy = false 4/6<br />
If windy = false and play = yes then humidity = normal 4/6<br />
If humidity = normal then windy = false and play = yes 4/7<br />
If windy = false then humidity = normal and play = yes 4/8<br />
If play = yes then humidity = normal and windy = false 4/9<br />
If - then humidity = normal and windy = false and play = yes 4/12<br />
<br />
<br />
<br />
Le cifre a destra mostrano il numero di istanze per le quali tutte e tre le condizioni sono vere - cioè la copertura - diviso per il numero di istanze per le quali le condizioni dell'anticipazione sono vere. Interpretati come una frazione, rappresentano la proporzione di istanze su cui la regola è corretta, cioè la sua precisione. Supponendo che la precisione minima specificata sia del 100%, solo la prima di queste regole lo renderà nell'ordine finale definito. I denominatori delle frazioni sono facilmente ottenuti osservando l'espressione antecedente nella Tabella 4.10 (anche se alcuni non sono mostrati nella Tabella). La regola finale sopra non ha alcuna condizione nell'anticipazione, e il suo denominatore è il numero totale di istanze nel set di dati.<br />
La tabella 4.11 mostra la regola finale per i dati meteo, con copertura minima 2 e precisione minima del 100%, ordinata per copertura. Ci sono 58 regole, 3 con copertura 4, 5 con copertura 3 e 50 con copertura 2. Solo 7 hanno due condizioni nel conseguente, e nessuno ha più di due. La prima regola deriva dall'elemento impostato precedentemente. A volte diverse regole derivano dallo stesso insieme di oggetti. Ad esempio, le regole 9, 10 e 11 derivano dal set di quattro elementi nella riga 6 della tabella 4.10:<br />
<br />
<br />
temperature = cool, humidity = normal, windy = false, play = yes<br />
<br />
<br />
Che ha la copertura 2. Tre sottotitoli di questo set di oggetti hanno anche la copertura 2:<br />
<br />
<br />
temperature = cool, windy = false<br />
temperature = cool, humidity = normal, windy = false<br />
temperature = cool, windy = false, play = yes<br />
<br />
<br />
E queste portano a regole 9, 10 e 11, tutte esattamente 100% (sui dati formativi).<br />
<h4>
Generazione di regole in modo efficiente</h4>
<br />
<br />
<br />
Ora consideriamo più in dettaglio un algoritmo per la produzione di regole di associazione con copertura minima e precisione specificata. Esistono due fasi: la generazione di set di elementi con la copertura minima specificata e ciascuno dei set di elementi che determinano le regole che hanno la precisione minima specificata.<br />
<br />
La prima fase procede generando tutti i set di un elemento con la copertura minima data (la prima colonna della tabella 4.10) e quindi utilizzandola per generare i set di due elementi (seconda colonna), i set di tre elementi (terza colonna) e così via. Ogni operazione comporta un passaggio attraverso il set di dati per contare gli elementi in ciascun set e dopo il passaggio i set di oggetti sopravvissuti vengono memorizzati in una tabella hash una struttura di dati standard che consente agli elementi memorizzati di trovarsi molto rapidamente. Dai set di un elemento vengono generati i set di due elementi da candidare e viene quindi passato attraverso il set di dati, contando la copertura di ciascun set di due elementi; Alla fine il candidato con meno copertura minima viene rimosso dalla tabella. I set di due elementi di candidato sono semplicemente tutti gli insiemi di un singolo elemento presi in coppia, in quanto un set di due elementi non può avere la copertura minima, a meno che entrambi i set di componenti un elemento non abbiano una copertura minima. Questo vale in generale: un set di tre elementi può avere solo la copertura minima se tutti e tre i suoi sottotitoli a due elementi hanno una copertura minima, e analogamente per i set di quattro elementi<br />
<br />
Un esempio contribuirà a spiegare come vengono generati i set di elementi candidati. Supponiamo che ci siano cinque set di tre elementi (A B C), (A B D), (A C D), (A C E) e (B C D) - dove, ad esempio, A è una caratteristica come outlook = sunny. L'unione dei primi due, (A B C D), è un set di quattro elementi candidati perché i suoi sottoprogetti di tre elementi (A C D) e (B C D) hanno una copertura minima maggiore. Se i set di tre elementi sono ordinati in ordine di lettura, come sono in questo elenco, allora abbiamo bisogno solo di considerare le coppie i cui primi due membri sono gli stessi. Ad esempio, non si considera (ACD) e (BCD) perché (ABCD) può anche essere generato da (ABC) e (ABD), e se questi due non sono gruppi di tre elementi candidati allora (ABCD) non può essere candidato Set di quattro elementi. Ciò lascia le coppie (A B C) e (A B D), che abbiamo già spiegato, e (A C D) e (A C E). Questa seconda coppia conduce all'insieme (A C D E) i cui sottoinsiemi a tre elementi non hanno tutti la copertura minima, quindi viene scartato. La tabella hash assiste con questo controllo: semplicemente rimuovi ogni elemento dall'insieme a sua volta e controlliamo che il restante set di tre elementi sia effettivamente presente nella tabella hash. Così in questo esempio c'è solo un insieme di quattro elementi candidati, (A B C D). Se la copertura minima è effettivamente o meno, è possibile determinare solo la verifica delle istanze nel set di dati.<br />
<br />
La seconda fase della procedura prende ogni elemento impostato e genera regole da esso controllando che abbiano la precisione minima specificata. Se solo le regole con un singolo test sul lato destro sono state ricercate, sarebbe semplicemente una questione di considerare ogni condizione a sua volta come conseguenza della regola, eliminandola dal set di elementi e dividendo la copertura dell'intero elemento Impostato dalla copertura del sottogruppo risultante - ottenuto dalla tabella hash - per ottenere la precisione della regola corrispondente. Dato che siamo anche interessati alle regole di associazione con test multipli in conseguenza, sembra che dobbiamo valutare l'effetto di mettere ogni sottoinsieme dell'elemento impostato sul lato destro, lasciando il resto dell'insieme come antecedente.<br />
<br />
Questo metodo bruta forza sarà eccessivamente calcolabile se i set di elementi sono piccoli, perché il numero di sottoinsiemi possibili cresce in modo esponenziale con la dimensione del set di elementi. Tuttavia, c'è un modo migliore. Abbiamo osservato quando descrivono le regole di associazione nella sezione 3.4 che se la regola doppia<br />
<br />
<br />
If windy = false and play = no then outlook = sunny<br />
and humidity = high<br />
<br />
Detiene con una minima copertura e precisione, quindi le regole "singole" risultanti dalla stessa serie di oggetti devono inoltre contenere:<br />
<br />
<br />
If humidity = high and windy = false and play = no<br />
then outlook = sunny<br />
If outlook = sunny and windy = false and play = no<br />
then humidity = high<br />
<br />
<br />
<br />
Al contrario, se una o l'altra delle regole "singole" non è in possesso, non c'è alcun motivo per considerare la duplice conseguenza. Ciò dà un modo per costruire da regole "singole" a candidati a doppio risultato, da regole a doppio risultato a quelle a triple conseguenti, e così via. Naturalmente, ogni regola candidata deve essere controllata contro la tabella hash per vedere se ha veramente più della precisione minima specificata. Ma ciò in genere comporta la verifica di "molto meno regole" rispetto al metodo della forza bruta. È interessante che questo modo di costruire regole candidate (n + 1) -consequent da effettive n-consequent ones sia veramente lo stesso come la creazione di set di candidati (n + 1) -item da set effettivi n-item, descritti in precedenza<br />
<br />
<h4>
Discussione </h4>
<br />
Le regole di associazione sono spesso ricercate per i set di dati molto grandi e gli algoritmi efficienti sono molto apprezzati. Il metodo descritto in precedenza fa passare attraverso il set di dati per ogni dimensione diversa del set di elementi. A volte il set di dati è troppo grande per leggere nella memoria principale e deve essere tenuto su disco; Allora potrebbe valere la pena ridurre il numero di passaggi controllando in due punti set di due dimensioni consecutive. Ad esempio, una volta impostati con due elementi sono stati generati, tutti i set di tre elementi potrebbero essere generati da loro prima di passare attraverso il set di istanza per contare il numero effettivo di elementi nel set. Saranno considerati altri set di tre elementi che necessari, ma il numero di passaggi attraverso l'intero set di dati sarebbe ridotto.<br />
<br />
In pratica, la quantità di calcolo necessaria per generare regole di associazione dipende criticamente dalla copertura minima specificata. L'esattezza ha meno influenza perché non influisce sul numero di passaggi che dobbiamo fare attraverso il set di dati. In molte situazioni vorremmo ottenere un certo numero di regole - ad esempio 50 - con la massima copertura possibile a un preciso livello di precisione prestabilito. Un modo per farlo è iniziare specificando la copertura per essere piuttosto alta e quindi successivamente ridurla, ripetendo l'intero algoritmo di rilevamento delle regole per ogni valore di copertura e ripetendolo fino a quando il numero di regole desiderato non è stato generato.<br />
<br />
Il formato di input tabellare che utilizziamo in questo libro, e in particolare un file ARFF standard basato su di esso, è molto inefficiente per molti problemi di regole di associazione. Le regole di associazione vengono spesso utilizzate quando gli attributi sono binari - presenti o assenti - e la maggior parte dei valori attributi associati a una data istanza non sono presenti. Questo è un caso per la rappresentazione dei dati scarsamente descritta nella sezione 2.4; Si applica lo stesso algoritmo per la ricerca delle regole di associazione.<br />
Modelli lineari<br />
<br />
I metodi che stiamo esaminando per gli alberi decisionali e le regole funzionano più naturalmente con attributi nominali. Possono essere estesi a attributi numerici includendo test di valore numerico direttamente nell'albero di decisione o nell'istruzione di regola, oppure prediscrivendo gli attributi numerici in quelli nominali. Vedremo come nei capitoli 6 e 7, rispettivamente. Tuttavia, ci sono metodi che funzionano più naturalmente con gli attributi numerici. Guardiamo qui semplici, quelli che formano componenti di metodi di apprendimento più complessi, che verranno esaminati in seguito.<br />
Predizione numerica: regressione lineare<br />
<br />
Quando l'esito o la classe è numerica e tutti gli attributi sono numerici, la regressione lineare è una tecnica naturale da considerare. Questo è un metodo grafico delle statistiche. L'idea è quella di esprimere la classe come una combinazione lineare degli attributi, con pesi predeterminati:<br />
<br />
<br />
x = w 0 + w1a1 + w 2a2 + . . . + wk ak<br />
<br />
<br />
Dove x è la classe; A1, a2,. . ., Ak sono i valori degli attributi; E w0, w1,. . ., Wk sono pesi.<br />
I pesi sono calcolati dai dati formativi. Qui la notazione diventa un po 'pesante, perché abbiamo bisogno di un modo per esprimere i valori degli attributi per ogni istanza di formazione. La prima istanza avrà una classe, diciamo x (1), e attribuisce valori a1 (1), a2 (1),. . ., Ak (1), dove il superscript denota che è il primo esempio. Inoltre è conveniente assumere un attributo extra a0 il cui valore è sempre 1.<br />
Il valore previsto per la classe di primo grado può essere scritto come<br />
<br />
<br />
w 0a01) + w1a11) + w 2a21) + . . . + wk ak1) = ...<br />
<br />
<br />
<br />
<br />
<br />
<br />
Questo è il valore predetto, non quello effettivo, per la classe di primo grado. Di interesse è la differenza tra i valori previsti e quelli reali. Il metodo della regressione lineare è quello di scegliere i coefficienti wj - sono loro k + 1 - per minimizzare la somma dei quadrati di queste differenze su tutte le istanze di formazione. Supponiamo che ci siano n istituti di formazione; Denota l'i con un superscript (i). Poi la somma dei quadrati delle differenze è<br />
<br />
<br />
.....<br />
<br />
<br />
Dove l'espressione all'interno delle parentesi è la differenza tra la classe effettiva dell'istanza istante e la sua classe predetta. Questa somma di quadrati è ciò che dobbiamo minimizzare scegliendo opportunamente i coefficienti.<br />
<br />
Tutto questo comincia a sembrare piuttosto formidabile. Tuttavia, la tecnica di minimizzazione è semplice se si dispone del "background appropriato di matematica". Basti dire che dato abbastanza esempi - a parimenti, più esempi che attributi - scegliendo pesi per ridurre al minimo la somma delle differenze quadrate - non è veramente difficile. Esso comporta un'operazione di inversione di matrici, ma questo è facilmente disponibile come software prepackaged.<br />
Una volta che la matematica è stata completata, il risultato è un insieme di pesi numerici, basati sui dati di addestramento, che possiamo utilizzare per predire la classe di nuove istanze. Abbiamo visto un esempio di questo quando si guardano i dati delle prestazioni della CPU ei pesi numerici effettivi sono riportati nella Figura 3.7 (a). Questa formula può essere utilizzata per prevedere le prestazioni della CPU di nuove istanze di test.<br />
<br />
La regressione lineare è un metodo eccellente e semplice per la previsione numerica, ed è stato ampiamente utilizzato in applicazioni statistiche per decenni. Naturalmente, i modelli lineari subiscono lo svantaggio della linearità. Se i dati presentano una dipendenza non lineare, si trova la linea retta più adatta, dove "migliore" viene interpretata come la differenza minima media quadrata. Questa linea potrebbe non adattarsi molto bene.<br />
<br />
Tuttavia, i modelli lineari servono bene come blocchi di costruzione per metodi di apprendimento più complessi.<br />
<h4>
Classificazione lineare: regressione logistica </h4>
<br />
La regressione lineare può essere facilmente utilizzata per la classificazione in domini con attributi numerici. Infatti, possiamo utilizzare qualsiasi tecnica di regressione, sia lineare che non lineare, per la classificazione. Il trucco è quello di eseguire una regressione per ogni classe, impostando l'output pari a uno per istanze di formazione che appartengono alla classe e zero per coloro che non lo fanno. Il risultato è un'espressione lineare per la classe. Quindi, date un esempio di prova di classe sconosciuta, calcolare il valore di ogni espressione lineare e scegliere quello più grande. Questo metodo è talvolta chiamato regressione lineare multiresponse.<br />
Un modo di guardare la regressione lineare multiresponse è quello di immaginare di approssimare una funzione di appartenenza numerica per ogni classe. La funzione di appartenenza è 1 per istanze appartenenti a quella classe e 0 per altre istanze. Dato una nuova istanza, calcoleremo l'appartenenza per ogni classe e selezioneremo il più grande.<br />
<br />
La regressione lineare multiresponse spesso produce buoni risultati nella pratica. Tuttavia, ha due inconvenienti. In primo luogo, i valori di appartenenza che produce non sono probabilità adeguate perché possono cadere al di fuori dell'intervallo da 0 a 1. La seconda regressione di minimi quadrati presuppone che gli errori non siano solo statisticamente indipendenti, ma sono normalmente distribuiti con la stessa deviazione standard, Ipotesi che è violata in modo violento quando il metodo viene applicato ai problemi di classificazione perché le osservazioni assumono solo i valori 0 e 1.<br />
Una tecnica statistica correlata, chiamata regressione logistica, non soffre di questi problemi. Invece di approssimare direttamente i valori 0 e 1, rischiando i valori di probabilità illegittimi quando l'obiettivo è superato, la regressione logistica crea un modello lineare basato su una variabile di destinazione trasformata. Supponiamo innanzitutto che ci siano solo due classi. La regressione logistica sostituisce la variabile di destinazione originale<br />
<br />
<br />
Pr[1 a1 , a2 , . . . , ak ],<br />
<br />
<br />
Che non può essere approssimato con precisione utilizzando una funzione lineare, con<br />
<br />
<br />
log (Pr[1 a1 , a2 , . . . , ak ]) (1 - Pr[1 a1 , a2 , . . . , ak ]) .<br />
<br />
<br />
I valori risultanti non sono più vincolati all'intervallo da 0 a 1, ma possono trovarsi ovunque tra infinito negativo e infinito positivo. La Figura 4.9 (a) traccia la funzione di trasformazione, che viene spesso definita la trasformazione di logit. La variabile trasformata viene approssimata usando una funzione lineare proprio come quelle generate dalla regressione lineare. Il modello risultante è con pesi w. La Figura 4.9 (b) mostra un esempio di questa funzione in una dimensione, con due pesi w0 = 0.5 e w1 = 1.<br />
<br />
<br />
Pr[1 a1 , a2 , . . . , ak ] = 1 (1 + exp( - w 0 - w1a1 - . . . - wk ak )) ,<br />
<br />
<br />
Figure 4.9 Logistic regression: (a) the logit transform and (b) an example logistic regression function.<br />
<br />
<br />
Proprio come nella regressione lineare, è necessario trovare pesi che soddisfano bene i dati di allenamento. La regressione lineare misura la bontà della misura utilizzando l'errore quadrato. Nella regressione logistica invece viene utilizzata la probabilità di log del modello. Ciò è dato da dove x (i) sono zero o uno.<br />
<br />
<br />
 (1 - x (i ) ) log(1 - Pr[1 a1(i ) , a2(i ) , . . . , ak(i ) ]) + x (i ) log(Pr[1 a1(i ) , a2(i ) , . . . , ak(i ) ])<br />
<br />
I pesi wi devono essere scelti per massimizzare la probabilità di log. Ci sono diversi metodi per risolvere questo problema di massimizzazione. Una semplice soluzione è quella di risolvere in modo iterativo una sequenza di problemi di regressione a meno di quadrati ponderati finché la probabilità di log converge ad un massimo, che di solito accade in poche iterazioni.<br />
<br />
Per generalizzare la regressione logistica a più classi, una possibilità è di procedere nel modo descritto in precedenza per la regressione lineare multiresponse eseguendo la regressione logistica indipendentemente per ogni classe. Purtroppo, le stime di probabilità risultanti non sommano a uno. Per ottenere le probabilità corrette è necessario unire i singoli modelli per ogni classe. Ciò produce un problema di ottimizzazione congiunta e ci sono metodi efficaci di soluzione per questo.<br />
Un modo concettualmente più semplice e molto generale per affrontare i problemi di multiclass è noto come classificazione in coppia. Qui viene creato un classificatore per ogni coppia di classi, utilizzando solo le istanze di queste due classi. L'output su un esempio di prova sconosciuto si basa su quale classe riceve il maggior numero di voti. Questo metodo fornisce generalmente risultati accurati in termini di errore di classificazione. Può anche essere utilizzato per produrre le stime di probabilità applicando un metodo chiamato accoppiamento a coppia, che calibra le singole stime di probabilità dai diversi classificatori.<br />
<br />
<br />
<br />
Se ci sono classi k, la classificazione a coppie crea un totale di classificatori k (k - 1) / 2. Anche se questo "suona inutilmente" il calcolo intensivo, non lo è. Infatti, se le classi sono classificate in modo uniforme in coppia, è almeno il più veloce di qualsiasi altro metodo multiclass. Il motivo è che ciascuno dei problemi di apprendimento in coppia comprende solo le istanze relative alle due classi in esame. Se n istanze sono suddivise in modo uniforme tra le classi k, si tratta di istanze 2n / k per problema. Supponiamo che l'algoritmo di apprendimento per un problema a due classi con n istanze richiede tempo proporzionale a n secondi da eseguire. Quindi il tempo di esecuzione per la classificazione a coppia è proporzionale a k (k - 1) / 2 ¥ 2n / k secondi, che è (k - 1) n. In altre parole, il metodo scala linearmente con il numero di classi. Se l'algoritmo di apprendimento richiede più tempo - diciamo proporzionale a n2 - il vantaggio dell'approccio a coppia è ancora più pronunciato. L'utilizzo di funzioni lineari per la classificazione può essere facilmente visualizzato nello spazio di esempio. Il limite di decisione per la regressione logistica a due classi è dove la probabilità di predizione è 0,5, cioè:<br />
<br />
<br />
Pr[1 a1 , a2 , . . . , ak ] = 1 (1 + exp( - w 0 - w1a1 - . . . - wk ak )) = 0.5.<br />
<br />
<br />
questo succede quando<br />
<br />
<br />
- w 0 - w1a1 - . . . - wk ak = 0<br />
<br />
<br />
E lo stesso per la classe 2 con appropriati superscritti. Quindi, un'istanza verrà assegnata alla classe 1 anziché alla classe 2 se<br />
<br />
<br />
w 01) + w11)a1 + . . . + wk1)ak > w02) + w12)a1 + . . . + wk2)a<br />
<br />
<br />
In altre parole, verrà assegnato alla classe 1 se<br />
<br />
<br />
(w0(1) - w0(2) ) + (w1(1) - w1(2) )a1 + . . . + (wk(1) - wk(2) )ak > 0.<br />
<br />
<br />
Questa è una disuguaglianza lineare nei valori degli attributi, quindi il confine tra ogni coppia di classi è un iperplano. Lo stesso vale quando si effettua la classificazione a coppie. L'unica differenza è che il confine tra due classi è governato dalle istanze di formazione in quelle classi e 'non è influenzato' dalle altre classi<br />
Classificazione lineare usando il perceptron<br />
<br />
La regressione logistica tenta di produrre accurate stime di probabilità massimizzando la probabilità dei dati formativi. Naturalmente, le stime accurate della probabilità portano a classificazioni accurate. Tuttavia, non è necessario eseguire una stima di probabilità se il solo scopo del modello è quello di predire le etichette di classe. Un approccio diverso è imparare un iperplano che separa le istanze relative alle diverse classi - supponiamo che ci siano solo due di essi. Se i dati possono essere separati perfettamente in due gruppi utilizzando un iperplano, si dice che sia separabile linearmente. Risulta che se i dati sono linearmente separabili, c'è un algoritmo molto semplice per trovare un iperplano separatore. L'algoritmo è chiamato regola di apprendimento perceptron. Prima di esaminarlo in dettaglio, esaminiamo nuovamente l'equazione di un iperplano:<br />
<br />
<br />
w 0a0 + w1a1 + w 2a2 + . . . + wk ak = 0.<br />
<br />
<br />
Set all weights to zero<br />
Until all instances in the training data are classified correctly<br />
For each instance I in the training data<br />
If I is classified incorrectly by the perceptron<br />
If I belongs to the first class add it to the weight vector<br />
else subtract it from the weight vector<br />
<br />
<br />
Figure 4.10 The perceptron: (a) learning rule and (b) representation as a neural network.<br />
<br />
<br />
Qui, a1, a2,. . ., Ak sono i valori dell'attributo e w0, w1,. . ., Wk sono i pesi che definiscono l'iperplano. Supponiamo che ogni istanza di formazione a1, a2,. . . Viene esteso da un attributo aggiuntivo a0 che ha sempre il valore 1 (come abbiamo fatto nel caso della regressione lineare). Questa estensione, che si chiama bias, significa semplicemente che non dobbiamo includere un elemento costante aggiuntivo della somma.<br />
<br />
Se la somma è maggiore di zero, prevediamo la prima classe; Altrimenti prevediamo la seconda classe. Vogliamo trovare i valori per i pesi in modo che i dati di allenamento siano classificati correttamente dall'iperplano.<br />
<br />
La Figura 4.10 (a) fornisce la regola di apprendimento perceptron per trovare un iperplano separatore. L'algoritmo esegue l'iterazione fino a quando non sia stata trovata una soluzione perfetta, ma funzionerà correttamente solo se esiste un iperplano separatore, cioè se i dati sono linearmente separabili. Ogni iterazione passa attraverso tutte le istanze di addestramento. Se si verifica un'istanza errata, i parametri dell'iperplano vengono modificati in modo che l'istanza errata si avvicini all'iperplano o forse anche attraverso l'iperplano sul lato corretto. Se l'istanza appartiene alla prima classe, questo viene fatto aggiungendo i propri valori di attributo al vettore di peso; Altrimenti, vengono sottratti.<br />
<br />
Per capire perché funziona, considerare la situazione dopo che è stata aggiunta un'istanza a relativa alla prima classe:<br />
<br />
<br />
(w0 + a0 )a0 + (w1 + a1 )a1 + (w2 + a2 )a2 + . . . + (wk + ak )ak .<br />
<br />
<br />
Ciò significa che l'output per un è aumentato di<br />
<br />
<br />
a0 * a0 + a1 * a1 + a2 * a2 + . . . + ak * ak .<br />
<br />
<br />
<br />
Questo numero è sempre positivo. Così l'iperplano si è spostato nella direzione corretta 'per classificare l'istanza' come positivo. Viceversa, se un'istanza appartenente alla seconda classe è erroneamente classificata, l'output di tale istanza diminuisce dopo la modifica, spostando nuovamente l'iperplano nella direzione corretta. Queste correzioni sono incrementali e possono interferire con gli aggiornamenti precedenti. Tuttavia, si può dimostrare che l'algoritmo converge in un numero finito di iterazioni se i dati sono linearmente separabili. Naturalmente, se i dati non sono linearmente separabili, l'algoritmo non verrà terminato, per cui un limite superiore deve essere imposto sul numero di iterazioni quando questo metodo viene applicato in pratica.<br />
<br />
L'iperplano risultante è chiamato perceptron, ed è il nonno delle reti neurali (torniamo alle reti neurali nella Sezione 6.3). La figura 4.10 (b) rappresenta il perceptron come un grafico con nodi e bordi ponderati, immaginativamente definito una "rete" di "neuroni". Ci sono due strati di nodi: input e output. Il livello di input ha un nodo per ogni attributo, più un nodo aggiuntivo sempre impostato su uno. Il livello di output è costituito da un solo nodo. Ogni nodo del livello di input è collegato al livello di output. Le connessioni sono ponderate e i pesi sono quei numeri trovati dalla regola di apprendimento perceptron. Quando viene presentata un'istanza al perceptron, i suoi valori di attributo servono per "attivare" il livello di input. Sono moltiplicati per i pesi e riassumono nel nodo di uscita. Se la somma ponderata è maggiore di 0 il segnale di uscita è 1, rappresentando la prima classe; Altrimenti, è -1, rappresenta il secondo.<br />
Classificazione lineare usando Winnow<br />
<br />
L'algoritmo perceptron non è l'unico metodo che è garantito per trovare un iperplano separatore per un problema linearmente separabile. Per i set di dati con attributi binari c'è un'alternativa nota come Winnow, mostrata nella Figura 4.11 (a). La struttura dei due algoritmi è molto simile. Come il perceptron, Winnow aggiorna solo il vettore del peso quando si incontra un'istanza erronea è errata.<br />
<br />
I due metodi differiscono da come vengono aggiornati i pesi. La regola perceptron utilizza un meccanismo additivo che modifica il vettore di peso aggiungendo (o sottraendo) il vettore di attributo dell'istanza. Winnow impiega aggiornamenti moltiplicativi e modifica i singoli pesi moltiplicandoli dal parametro specificato dall'utente a (o inverso). I valori di attributo 'AI' sono 0 o 1 perché stiamo lavorando con dati binari. I pesi sono invariati se il valore dell'attributo è 0, perché quindi non partecipano alla decisione. Altrimenti, il moltiplicatore è un se questo attributo aiuta a prendere una decisione corretta e 1/a se non lo fa.<br />
<br />
<br />
While some instances are misclassified<br />
for every instance a<br />
classify a using the current weights<br />
if the predicted class is incorrect<br />
if a belongs to the first class<br />
for each ai that is 1, multiply wi by a<br />
(if ai is 0, leave wi unchanged)<br />
otherwise<br />
for each ai that is 1, divide wi by a<br />
(if ai is 0, leave wi unchanged)<br />
<br />
<br />
(a)<br />
<br />
<br />
While some instances are misclassified<br />
for every instance a<br />
classify a using the current weights<br />
if the predicted class is incorrect<br />
if a belongs to the first class<br />
for each ai that is 1,<br />
multiply wi+ by a<br />
divide wi– by a<br />
(if ai is 0, leave wi+ and wi- unchanged)<br />
otherwise for<br />
for each ai that is 1,<br />
multiply wi– by a<br />
divide wi+ by a<br />
(if ai is 0, leave wi+ and wi- unchanged)<br />
<br />
<br />
(b)<br />
Figure 4.11 The Winnow algorithm: (a) the unbalanced version and (b) the balanced<br />
version.<br />
<br />
<br />
Un'altra differenza è che la soglia nella funzione lineare è anche un parametro specificato dall'utente. Chiamiamo questa soglia q e classificiamo un'istanza come appartenente alla classe 1 se e solo se<br />
<br />
<br />
w 0a0 + w1a1 + w 2a2 + . . . + wk ak > q .<br />
<br />
<br />
Il moltiplicatore a deve essere maggiore di uno. I wi sono impostati su una costante all'inizio.<br />
L'algoritmo descritto non consente pesi negativi che, a seconda del dominio, possono essere un inconveniente. Tuttavia, c'è una versione chiamata Balanced Winnow, che li consente. Questa versione mantiene due vettori di peso, uno per ogni classe. Un'istanza è classificata come appartenente alla classe 1 se:<br />
<br />
<br />
(w0+ - w0- )a0 + (w1+ - w1- )a1 + . . . + (wk+ - wk- )ak > q<br />
Figure 4.11(b) shows the balanced algorithm.<br />
<br />
<br />
<br />
<br />
Winnow è molto efficace nell'affrontare le caratteristiche rilevanti in un set di dati, quindi viene chiamato un "attributo efficiente". Ciò significa che potrebbe essere un 'buon algoritmo candidato' se un set di dati ha molte funzioni (binarie) e la maggior parte di esse è irrilevante. Sia il winnow che l'algoritmo perceptron possono essere utilizzati in una impostazione in linea in cui nuove istanze arrivano ininterrottamente perché possono aggiornare in modo incrementale le loro ipotesi quando arrivano nuove istanze.<br />
Istruzione basata su istanze<br />
<br />
Nell'apprendimento basato sull'esempio gli esempi di formazione vengono memorizzati in modo verbale e viene utilizzata una funzione di distanza per determinare quale membro del set di allenamento è più vicino a un'istanza di prova sconosciuta. Una volta trovata l'istanza di addestramento più vicina, la sua classe è prevista per l'istanza di prova. L'unico problema rimasto è definire la funzione di distanza, e questo non è molto difficile da fare, specialmente se gli attributi sono numerici.<br />
La funzione di distanza<br />
<br />
Sebbene ci siano altre scelte possibili, la maggior parte degli studenti basati sull'istanza utilizza la distanza Euclidea. La distanza tra un'istanza con valori di attributo a1 (1), a2 (1),. . . , Ak (1) (dove k è il numero di attributi) e uno con valori a1 (2), a2 (2),. . . , Ak (2) è definito come<br />
<br />
....<br />
<br />
Quando si confrontano le distanze non è necessario eseguire l'operazione "radice quadrata"; Le 'somme di quadrati' possono essere confrontate direttamente. Un'altra alternativa alla distanza Euclidea è la metrica Manhattan o metropolitana di città, dove la differenza tra i valori degli attributi non è quadrata ma è stata appena aggiunta (dopo aver preso il valore assoluto). Altri sono ottenuti assumendo valori superiori ai quadrati. Le potenze superiori aumentano l'influenza delle grandi differenze a scapito di piccole differenze. In generale, la distanza euclidea rappresenta un buon compromesso. Altre metriche a distanza possono essere più appropriate in circostanze particolari. La chiave è pensare a istanze effettive e cosa significa che essi siano separati da una certa distanza - quale sarebbe il doppio di quella distanza, ad esempio?<br />
Diversi attributi vengono misurati su diverse scale, quindi se la formula a distanza Euclidea veniva utilizzata direttamente, gli effetti di alcuni attributi potrebbero essere totalmente danneggiati da altri che avevano scalini di misura più grandi. Di conseguenza, è normale normalizzare tutti i valori degli attributi da 0 a 1, calcolando<br />
<br />
...<br />
<br />
dove vi è il valore effettivo dell'attributo i, e il massimo e il minimo vengono assunte in tutte le istanze del set di formazione.<br />
Queste formule implicitamente assumono attributi numerici. Qui la differenza tra due valori è solo la differenza numerica tra loro e questa differenza è quadrata e aggiunta per produrre la funzione di distanza. Per gli attributi nominali che assumono valori simbolici piuttosto che numerici, la differenza tra due valori non uguali viene spesso considerata come una, mentre se i valori sono uguali, la differenza è pari a zero. In questo caso non è necessaria alcuna scalatura perché vengono utilizzati solo i valori 0 e 1.<br />
<br />
Una politica comune per la gestione dei valori mancanti è la seguente. Per gli attributi nominali, si supponga che una caratteristica mancante sia massima diversa da qualsiasi altro valore di funzionalità. Quindi se uno o entrambi i valori mancano o se i valori sono diversi, la differenza tra di essi viene considerata come una; La differenza è zero solo se non mancano e entrambi sono uguali. Per gli attributi numerici, la differenza tra due valori mancanti viene anche considerata come una. Tuttavia, se manca un solo valore, la differenza viene spesso considerata come la dimensione (normalizzata) dell'altro valore o una meno quella dimensione, a seconda di quale sia maggiore. Ciò significa che se i valori mancano, la differenza è tanto grande quanto il più possiblile.<br />
Trovare i vicini più vicini in modo efficiente<br />
<br />
Anche se l'apprendimento basato su istanze è semplice ed efficace, spesso è lento. Il modo più evidente per scoprire quale membro del set di allenamento è più vicino a un'istanza di prova sconosciuta è calcolare la distanza da ogni membro del set di allenamento e selezionare il più piccolo. Questa procedura è lineare nel numero di istanze di addestramento: in altre parole, il tempo necessario per effettuare una singola previsione è proporzionale al numero di istanze di addestramento. L'elaborazione di un intero set di test richiede tempo proporzionale al prodotto del numero di istanze nei corsi di formazione e di prova.<br />
<br />
<br />
<br />
Figure 4.12 A kD-tree for four training instances: (a) the tree and (b) instances and splits.<br />
<br />
<br />
I vicini più vicini possono essere trovati in modo più efficiente rappresentando il set di formazione come un albero, anche se non è abbastanza ovvio come. Una struttura adatta è un albero kD. Questo è un albero binario che divide lo spazio di input con un iperplano e quindi divide ogni partizione in modo ricorsivo. Tutte le suddivisioni sono fatte parallele ad uno degli assi, verticalmente o orizzontalmente, nel caso bidimensionale. La struttura dei dati viene chiamata kD-tree perché memorizza un insieme di punti nello spazio k-dimensionale, essendo k il numero di attributi.<br />
<br />
La Figura 4.12 (a) fornisce un piccolo esempio con k = 2 e la Figura 4.12 (b) mostra le quattro istanze di formazione che rappresenta, insieme agli iperplani che costituiscono l'albero. Si noti che questi iperplani non sono dei confini decisionali: le decisioni vengono fatte su base "vicina più vicina" come spiegato più avanti. La prima divisione è orizzontale (h), attraverso il punto (7,4) - questa è la radice dell'albero. Il ramo sinistro non si divide ulteriormente: contiene il singolo punto (2,2), che è una foglia dell'albero. Il ramo destro è suddiviso verticalmente (v) al punto (6,7). Il figlio sinistro è vuoto e il figlio destro contiene il punto (3,8). Come illustra questo esempio, ogni regione contiene solo un punto - o, forse, nessun punto. I rami filiali dell'albero, per esempio le due figlie della radice in Figura 4.12 (a) non sono necessariamente sviluppate alla stessa profondità. Ogni punto del set di allenamento corrisponde a un singolo nodo, e fino a metà sono i nodi foglia.<br />
<br />
Come si crea un kD-tree da un set di dati? Può essere aggiornato in modo efficiente come nuovi esempi di formazione sono aggiunti? E come accelerare i calcoli "vicini più vicini"? Noi affrontiamo l'ultima domanda innanzitutto.Per individuare il vicino vicino di un dato punto di destinazione, segui l'albero verso il basso dalla sua radice per individuare la regione contenente il bersaglio. La Figura 4.13 mostra uno spazio simile a quello di Figura 4.12 (b), ma con alcuni altri casi e un limite extra. L'obiettivo, che non è uno dei casi nell'albero, è contrassegnato da una stella. Il nodo foglia della regione contenente il bersaglio è colorato nero. Questo non è necessariamente il prossimo più vicino del bersaglio, come illustra questo esempio, ma è una buona prima approssimazione. In particolare, ogni prossimo vicino deve trovarsi più vicino - all'interno del cerchio tratteggiato in Figura 4.13. Per determinare se esiste, verificare innanzitutto se è possibile che un vicino vicino si trovi all'interno del fratello del nodo. Il fratello del nodo nero è ombreggiato nella Figura 4.13 e il cerchio non lo interseca, quindi il fratello non può contenere un vicino più vicino. Quindi tornate al nodo padre e controllate il suo fratello, che qui copre tutto sopra la linea orizzontale. In questo caso deve essere esplorato, perché finora l'area che copre interseca con il miglior cerchio. Per esplorarlo, trovare le sue figlie (due zie del punto originale), controllare se intersecano il cerchio (la sinistra non lo fa, ma quello giusto fa) e discende per vedere se contiene un punto più stretto (lo fa).<br />
<br />
In un caso tipico, questo algoritmo è molto più veloce di esaminare tutti i punti per trovare il 'vicino più vicino'. Il lavoro di ricerca del primo approccio "vicino vicino" - il punto nero della Figura 4.13 - dipende dalla profondità dell'albero, data dal logaritmo del numero di nodi, log2n. La quantità di lavoro che comporta il backtracking per verificare se questo è veramente il "prossimo più vicino" dipende un po 'dall'albero e su quanto sia buona la prima approssimazione. Ma per un albero ben costruito i cui nodi sono approssimativamente quadrati, anziché lunghi rettangoli sottili, può anche essere dimostrato logaritmico nel numero di nodi.<br />
Come si costruisce un buon albero per una serie di esempi di formazione? Il problema si riduce a selezionare la prima istanza di formazione da dividere e la direzione della suddivisione. Una volta che puoi farlo, applica lo stesso metodo ricorsivo a ciascun figlio della divisione iniziale per costruire l'intero albero.<br />
<br />
Per trovare una buona direzione per la suddivisione, calcolare individualmente la varianza dei punti di dati lungo ciascun asse, selezionare l'asse con la massima varianza e creare un iperplano di suddivisione perpendicolare ad esso. Per trovare un buon posto per l'iperplano, individuare il valore mediano lungo tale asse e selezionare il punto corrispondente. Ciò rende la spaccatura perpendicolare alla direzione di maggiore diffusione, con la metà dei punti che si trovano su entrambi i lati. Questo produce un albero ben equilibrato. Per evitare lunghe regioni umide, è meglio che le sezioni successive siano lungo gli assi diversi, probabilmente perché la dimensione della più grande varianza viene scelta in ogni fase. Tuttavia, se la distribuzione dei punti è spessa, la scelta del valore mediano può generare diverse divisioni successive nella stessa direzione, generando lunghi hyperrectangles sottili. Una strategia migliore è quella di calcolare la media piuttosto che quella mediana e utilizzare il punto più vicino a quello. L'albero non sarà perfettamente equilibrato, ma le sue regioni tendono ad essere squarche perché esiste una maggiore probabilità che saranno scelte diverse direzioni per le successive divisioni.<br />
<br />
Un vantaggio dell'apprendimento basato sull'istanza sulla maggior parte degli altri metodi di apprendimento delle macchine è che i nuovi esempi possono essere aggiunti al set di formazione in qualsiasi momento. Per mantenere questo vantaggio quando si utilizza un kD-tree, dobbiamo essere in grado di aggiornarlo incrementalmente con nuovi punti dati. A tale scopo, determinare quale nodo foglia contiene il nuovo punto e trovare il suo hyperrectangle. Se è vuoto, inserisci semplicemente il nuovo punto. Altrimenti dividere il hyperrectangle, dividendolo lungo la sua dimensione più lunga per preservare la squareness. Questa semplice euristica non garantisce che l'aggiunta di una serie di punti conservi l'equilibrio dell'albero, né che i hyperrectangles saranno ben fornite per la ricerca più vicina. È una buona idea ricostruire occasionalmente l'albero da zero, ad esempio quando la sua profondità cresce al doppio della migliore profondità possibile.<br />
<br />
<br />
<br />
Come abbiamo visto, gli alberi di KD sono buone strutture di dati per trovare in modo efficiente i "vicini più vicini". Tuttavia, non sono perfetti. I set di dati incrociati rappresentano un conflitto fondamentale tra il desiderio dell'albero di essere perfettamente equilibrato e il desiderio di squarcire le regioni. Ancora più importante, i rettangoli, anche quadrati, non sono la forma migliore da usare comunque, a causa dei loro angoli. Se il cerchio tratteggiato in Figura 4.13 fosse più grande, che "sarebbe" se l'istanza nera fosse un po 'più lontana dall'obiettivo, "se interseca" l'angolo inferiore destro del rettangolo in alto a sinistra e allora quel rettangolo dovrà essere studiato, anche se le istanze di apprendimento che lo definiscono "è un lungo cammino" dall'angolo in questione. Gli angoli delle regioni rettangolari sono inapropriati.<br />
<br />
La soluzione? Utilizzare ipersfere, non hyperrectangles. Le sfere confinanti possono sovrapporsi mentre i rettangoli possono sovrapporre, ma questo non è un problema perché l'algoritmo "più vicino" per gli alberi kD descritti in precedenza non dipende dalle regioni disgiunte. Una struttura di dati chiamata albero a sfera definisce le ipersfere k-dimensionali ("palline") che coprono i punti dati e li organizza in un albero.<br />
<br />
La Figura 4.14 (a) mostra 16 'istanze di addestramento' in uno spazio bidimensionale sovrapposto ad un cerchio di cerchi sovrapposti e la Figura 4.14 (b) mostra un albero formato da questi cerchi. I cerchi a diversi livelli dell'albero sono indicati da diversi stili di tratteggio, ei cerchi più piccoli sono disegnati in tonalità di grigio. Ogni nodo dell'albero rappresenta una palla e il nodo è tratteggiato o ombreggiato secondo la stessa convenzione in modo da poter identificare il livello in cui le palle sono. Per aiutarti a comprendere l'albero, i numeri vengono posti sui nodi per mostrare quanti punti dati sono considerati all'interno di quella palla. Ma fai attenzione: questo non è necessariamente lo stesso del numero di punti che rientrano nella regione spaziale che rappresenta la palla. Le regioni a ogni livello a volte si sovrappongono, ma i punti che rientrano nell'area di sovrapposizione sono assegnati a una sola delle sfere sovrapposte (il diagramma non mostra quale). Invece dei conteggi di occupazione in Figura 4.14 (b), i nodi degli alberi a sfera effettivi memorizzano il centro e il raggio della loro palla; I nodi foglia registrano anche i punti che contengono.<br />
<br />
Per utilizzare un albero a sfera per trovare il "vicino più vicino" a un determinato bersaglio, iniziare attraversando l'albero dall'alto verso il basso per individuare la foglia che contiene l'obiettivo e trovare il punto più vicino all'obiettivo in quella palla. Questo dà un limite superiore per la distanza del bersaglio dal suo "vicino più vicino". Quindi, come per il kD-tree, esaminare il nodo di fratello. Se la distanza dal bersaglio al centro del fratello supera il suo raggio più il "limite superiore" corrente, non può contenere un "punto più vicino"; Altrimenti il fratello deve essere esaminato scendendo ulteriormente l'albero. Nella Figura 4.15 l'obiettivo è contrassegnato da una stella e il punto nero è il suo vicino prossimo attualmente conosciuto. L'intero contenuto della palla grigia può essere escluso: non può contenere un punto più stretto perché il suo centro è troppo lontano. Procedi in modo ricorsivo all'albero fino alla sua radice, esaminando qualsiasi palla che possa contenere un punto più vicino rispetto al "limite superiore" corrente.<br />
<br />
<br />
Figure 4.15 Ruling out an entire ball (gray) based on a target point (star) and its current nearest neighbor.<br />
<br />
<br />
Gli alberi a sfera sono costruiti dall'alto verso il basso, e come con i kD-trees il problema fondamentale è quello di trovare un buon modo di dividere una palla contenente un set di punti dati in due. In pratica non devi proseguire fino a che "le palle di foglia" non contengano solo due punti: si può fermare prima, una volta raggiunto un numero minimo prefissato, e lo stesso vale per gli alberi di KD. Ecco un metodo di scissione possibile. Scegli il punto della palla più lontana dal suo centro e poi un secondo punto più lontano dalla prima. Assegnare tutti i punti dati nella palla al più vicino di questi due centri di cluster, quindi calcolare il centroid di ciascun cluster e il raggio minimo necessario per racchiudere tutti i punti dati che rappresenta. Questo metodo ha il merito che il costo della suddivisione di una palla contenente n punti è solo lineare in n. Ci sono più elaborati algoritmi che producono palle più strette, ma richiedono più calcolo. Non descriveremo algoritmi sofisticati per costruire alberi a sfera o aggiornarli in modo incrementale, poiché si incontrano "nuove istanze di allenamento".<br />
Dicussione<br />
<br />
L'apprendimento basato su istanze "vicini di prossimità" è semplice e spesso funziona molto bene. Nel metodo descritto in precedenza, ogni attributo ha esattamente la stessa influenza sulla decisione, proprio come nel metodo Naïve Bayes. Un altro problema è che il database può facilmente essere danneggiato da esemplari rumorosi. Una soluzione è quella di adottare la strategia "k-nearest-neighbor", in cui si trovano e si utilizzano insieme un numero fisso di piccoli numeri k di "vicini più vicini", per esempio cinque, per determinare la classe dell'istanza di prova mediante una semplice maggioranza . (Si noti che abbiamo usato k per indicare il numero di attributi in precedenza, è un diverso uso indipendente.) Un altro modo di provare il database contro il rumore è quello di scegliere gli esemplari che vengono aggiunti selettivamente e giudiziosamente; Procedure migliorate, descritte nel Capitolo 6, affrontano questi difetti.<br />
<br />
Il metodo del "prossimo vicino" è nato decine di anni fa, e gli statistici analizzavano i programmi «k-nearest-neighbor» nei primi anni '50. Se il numero di istanze di formazione è grande, rende intuitivo il senso di utilizzare più di un "vicino vicino", ma chiaramente questo è pericoloso se ci sono "poche istanze". Si può dimostrare che quando k e il numero n di istanze diventano infinite in modo tale che k / n Æ 0, la probabilità di errore si avvicina al minimo teorico per il set di dati. Il metodo di prossimità più vicino è stato adottato come metodo di classificazione nei primi anni 1960 ed è stato ampiamente utilizzato nel campo del riconoscimento del pattern per più di tre decenni.<br />
<br />
La classificazione "prossimo vicino" era notoriamente lenta fino a quando gli alberi di KD non cominciarono ad essere applicati nei primi anni 1990, anche se la struttura dei dati stessa è stata sviluppata molto prima. In pratica questi alberi diventano inefficienti quando la dimensione dello spazio aumenta e vale solo quando il numero di attributi è piccolo fino a 10. Gli alberi a sfera sono stati sviluppati molto più recentemente e sono un'istanza di una struttura più generale talvolta chiamata un albero metrico . Gli algoritmi sofisticati possono creare alberi metrici che trattano con successo migliaia di dimensioni.<br />
<br />
Invece di memorizzare tutte le istanze di formazione, è possibile comprimerle in regioni. Una tecnica molto semplice, menzionata alla fine della Sezione 4.1, è solo registrare l'intervallo di valori osservati nei dati di addestramento per ogni attributo e categoria. Dato un'istanza di prova, si esegue l'elaborazione dei valori di attributo e scegli la categoria con il maggior numero di intervalli corretti per l'istanza. Una tecnica leggermente più elaborata è quella di costruire intervalli per ogni attributo e utilizzare il set di formazione per contare il numero di volte in cui ogni classe si verifica per ogni intervallo di ogni attributo. Gli attributi numerici possono essere discretizzati in intervalli, e "intervalli" costituiti da un singolo punto possono essere usati per quelli nominali. Quindi, date un'istanza di prova, è possibile determinare gli intervalli in cui risiedono e classificarla votando, un metodo chiamato intervallo di funzioni di voto. Questi metodi sono molto approssimativi, ma molto veloci e possono essere utili per l'analisi iniziale di set di dati di grandi dimensioni.<br />
Clustering<br />
<br />
Le tecniche di clustering si applicano quando non esiste una classe da prevedere ma piuttosto quando le istanze devono essere suddivise in gruppi naturali. Questi cluster presumibilmente riflettono alcuni meccanismi in atto nel dominio da cui vengono scelti i casi, un meccanismo che provoca alcuni casi di una più forte somiglianza tra loro rispetto agli altri casi. Il clustering naturalmente richiede tecniche differenti ai metodi di apprendimento di classificazione e associazione che abbiamo considerato finora.<br />
<br />
Come abbiamo visto nella sezione 3.9, ci sono diversi modi in cui può essere espresso il risultato del clustering. I gruppi identificati possono essere esclusivi in modo che ogni istanza appartiene a un solo gruppo. Oppure possono sovrapporre in modo che un'istanza possa cadere in diversi gruppi. Oppure possono essere probabilistici, per cui un'istanza appartiene ad ogni gruppo con una certa probabilità. Oppure possono essere gerarchici, in modo che esista una divisione di casi in gruppi in alto e ciascuno di questi gruppi viene raffinato ulteriormente, magari fino a singoli casi. Davvero, la scelta tra queste possibilità dovrebbe essere dettata dalla natura dei meccanismi che si ritiene siano alla base del particolare fenomeno di clustering. Tuttavia, poiché questi meccanismi sono raramente noti: l'esistenza stessa dei cluster è, dopo tutto, qualcosa che stiamo cercando di scoprire - e anche per motivi pragmatici, la scelta è di solito dettata dagli strumenti di cluster che sono disponibili.<br />
<br />
Esamineremo un algoritmo che forma cluster in domini numerici, partizionando istanze in cluster disgiunti. Come il metodo di "approccio più vicino" di 'istruzione basata su istanze', è una tecnica semplice e diretta che è stata utilizzata per diversi decenni. Nel Capitolo 6 esaminiamo nuovi metodi di cluster che eseguono il clustering incrementale e probabilistico.<br />
Clustering basato su distanza Iterative.<br />
<br />
La classica tecnica di clustering è chiamata k-means. In primo luogo, specificate in anticipo quanti cluster sono stati cercati: questo è il parametro k. Poi i punti k vengono scelti a caso come centri di cluster. Tutti i casi sono assegnati al loro centro cluster più vicino secondo la metrica ordinaria di distanza Euclidea. Successivamente viene calcolato il centroid, ovvero la media, delle istanze in ogni cluster: questa è la parte "significa". Questi centri vengono considerati come nuovi valori centrali per i loro cluster espliciti. Infine, l'intero processo viene ripetuto con i nuovi centri cluster. L'itterazione continua fino a quando gli stessi punti vengono assegnati a ciascun cluster in tondi consecutivi, a quale stadio i centri cluster si sono stabilizzati e rimarranno per sempre.<br />
<br />
Questo metodo di clustering è semplice ed efficace. È facile dimostrare che la scelta del centro del cluster come centroid minimizza la distanza quadrata totale da ognuno dei punti del cluster al suo centro. Una volta stabilita l'iterazione, ogni punto viene assegnato al suo centro cluster più vicino, quindi l'effetto complessivo è quello di minimizzare la distanza quadrata totale da tutti i punti ai loro centri di cluster. Ma il minimo è un locale; Non c'è garanzia che sia il minimo globale. I cluster finali sono molto sensibili ai primi centri di cluster. Un sistema completamente diverso può derivare da piccoli cambiamenti nella scelta casuale iniziale. Infatti, questo è vero per tutte le tecniche pratiche di clustering: è quasi sempre impossibile trovare raggruppamenti ottimali a livello globale. Per aumentare la probabilità di individuare una persona minima globale, spesso l'algoritmo viene eseguito diverse volte con diverse scelte iniziali e scegliere il miglior risultato finale, quello con la più piccola distanza totale quadrata.<br />
<br />
È facile immaginare situazioni in cui k-means non riesce a trovare un buon clustering. Prendi in considerazione quattro istanze disposte ai vertici di un rettangolo nello spazio bidimensionale. Ci sono due cluster naturali, formati raggruppando i due vertici a una estremità di un lato corto. Ma supponiamo che i due centri di cluster iniziali cadano a metà dei lunghi lati. Ciò forma una configurazione stabile. I due cluster ciascuno contengono le due istanze a una estremità di un lato lungo, non importa quanto sia grande la differenza tra i lati lunghi e quelli corti<br />
Calcolo più veloce delle distanze<br />
<br />
L'algoritmo di clustering di k significa solitamente parecchie iterazioni, ognuna delle quali coinvolge la ricerca della distanza dei centri cluster k da ogni istanza per determinare il suo cluster. Ci sono approssimazioni semplici che ne accelerano notevolmente. Ad esempio, è possibile proiettare il set di dati e eseguire tagli lungo gli assi selezionati, invece di utilizzare le divisioni arbitrarie di iperplano che si implicano scegliendo il centro di cluster più vicino. Ma questo compromette inevitabilmente la qualità dei cluster risultanti.<br />
<br />
Ecco un modo migliore per accelerare le cose. Trovare il centro di cluster più vicino non è così diverso da trovare "vicini più vicini" in 'apprendimento basato su istanze'. Possono essere utilizzate le stesse soluzioni efficienti - alberi di kD e alberi a sfera? Sì! Infatti possono essere applicate in modo ancora più efficiente, perché in ogni iterazione di k significa che tutti i punti dati vengono elaborati insieme, mentre in istanze di prova di apprendimento basate su istanze vengono elaborate singolarmente.<br />
<br />
Innanzitutto, costruire un albero di kD o albero a sfera per tutti i punti dati, che rimarranno statici durante la procedura di clustering. Ogni iterazione di k-means produce un insieme di centri di cluster e tutti i punti dati devono essere esaminati e assegnati al centro più vicino. Un modo per elaborare i punti è quello di scendere l'albero dalla radice fino a raggiungere una foglia e controllare ogni singolo punto della foglia per trovare il suo centro cluster più vicino. Ma può essere che la regione rappresentata da un nodo interno più alto rientri interamente nel dominio di un 'unico centro cluster'. In questo caso tutti i punti di dati in quel nodo possono essere elaborati in un solo colpo!<br />
<br />
L'obiettivo dell'esercitazione, dopo tutto, è quello di trovare nuove posizioni per i centri cluster, calcolando il centroide dei punti che contengono. Il centroide può essere calcolato mantenendo una somma vettoriale in esecuzione dei punti del cluster e un conteggio di quanti sono finora. Alla fine, basta dividere uno per l'altro per trovare il centroid. Supponiamo che con ogni nodo dell'albero memorizziamo la somma vettoriale dei punti all'interno di quel nodo e un conteggio del numero di punti. Se l'intero nodo rientra nell'ambito di un singolo cluster, i totali di esecuzione per quel cluster possono essere aggiornati immediatamente. In caso contrario, guardare all'interno del nodo procedendo in modo ricorsivo lungo l'albero.<br />
<br />
La Figura 4.16 mostra le stesse istanze e l'albero a sfera come la Figura 4.14, ma con due centri di cluster contrassegnati come stelle nere. Poiché tutte le istanze sono assegnate al centro più vicino, lo spazio è suddiviso in due dalla linea spessa illustrata in Figura 4.16 (a). Iniziare alla radice dell'albero in Figura 4.16 (b), con valori iniziali per la somma vettoriale ei conteggi per ogni cluster; Tutti i valori iniziali sono zero. Procedi ricorsivamente nell'albero. Quando il nodo A è raggiunto, tutti i punti all'interno di esso si trovano nel cluster 1, quindi la somma e il conteggio del cluster 1 possono essere aggiornati con la somma e il conteggio per il nodo A e non dobbiamo discendere ulteriormente. Riprendendo il ritorno al nodo B, la sua pallina attraversa il confine tra i cluster, per cui i suoi punti devono essere esaminati individualmente. Quando il nodo C è raggiunto, rientra interamente nel cluster 2; Ancora una volta, possiamo aggiornare immediatamente il cluster 2 e non abbiamo bisogno di discendere ulteriormente. L'albero viene esaminato solo alla frontiera contrassegnata dalla linea tratteggiata in Figura 4.16 (b) e il vantaggio è che i nodi sottostanti non devono essere aperti, almeno, non in questa particolare iterazione di k-means. La prossima volta, i centri cluster saranno cambiati e le cose potrebbero essere diverse.<br />
Discussione<br />
<br />
Sono state sviluppate molte varianti della procedura di base k-means. Alcuni producono un clustering gerarchico applicando l'algoritmo con k = 2 al set di dati complessivo e poi ripetendo, ricorsivamente, all'interno di ciascun cluster.<br />
Come si sceglie k? Spesso non si sa nulla sul numero probabile di cluster, e tutto il punto del clustering è scoprire. Un modo è provare diversi valori e scegliere il meglio. Per fare questo, è necessario imparare a valutare il successo dell'apprendimento macchina, come è il capitolo 5. Ritorniamo al clustering nella sezione 6.6.<br />
Ulteriori letture<br />
<br />
Lo schema 1R è stato proposto e approfondito da Holte (1993). Non è mai stato realmente inteso come metodo di apprendimento macchina: il punto è stato quello di mostrare che le strutture molto semplici stanno alla base della maggior parte dei "set di dati" utilizzati per valutare i metodi di apprendimento macchina dell'epoca e che mettere " '' Metodi di inferenza induttiva '' per lavorare su semplici 'set di dati' era come usare un municipio per rompere un dado. Perché grappolare con un 'albero complesso di deciosione' quando una semplice regola 'lo fa'? Il metodo che genera una regola semplice per classe è il risultato di un lavoro di Lucio de Souza Coelho del Brasile e di Len Trigg della Nuova Zelanda, ed è stato soprannominato iperpipes. Un algoritmo molto semplice, ha il vantaggio di essere estremamente veloce ed è piuttosto fattibile anche con un enorme numero di attributi.<br />
<br />
<br />
<br />
Bayes era un filosofo inglese settecentesco che definì la sua teoria della probabilità in "Un saggio per risolvere un problema nella dottrina delle opportunità", pubblicato nelle Transazioni Filosofiche della Royal Society of London (Bayes 1763); La regola che porta il suo nome è da allora una pietra angolare della teoria della probabilità. La difficoltà con l'applicazione della regola di Bayes in pratica è l'assegnazione di probabilità precedenti. Alcuni statisti, soprannominati Bayesiani, assumono la regola come evangelici e insistono affinché la gente "facia seri" tentativi di stimare con precisione le probabilità precedenti, anche se tali stime sono spesso soggettive. Altri, non Bayesiani, preferiscono il tipo di analisi priva di precedenti che genera tipicamente gli intervalli di confidenza statistici, che si incontreranno nel prossimo capitolo. Con un set di dati particolare, le probabilità precedenti sono di solito "ragionevolmente" facili da stimare, il che incoraggia un approccio bayesiano all'apprendimento. L'assunzione di indipendenza fatta dal metodo Naïve Bayes è comunque un grande ostacolo, e alcuni tentativi sono stati fatti per applicare l'analisi bayesiana senza assumersi l'indipendenza. I modelli risultanti sono chiamati reti bayesiane (Heckerman et al., 1995) e li descriveremo nel capitolo 6.7.<br />
<br />
Le tecniche Bayesiane erano state utilizzate per il riconoscimento del pattern (Duda e Hart 1973) per 20 anni prima di essere state adottate da ricercatori di macchine per l'apprendimento (per esempio, vedere Langley e altri, 1992) e lavorare su set di dati con attributi ridondanti (Langley e Sage 1994) e gli attributi numerici (John e Langley, 1995). L'etichetta Naïve Bayes è sfortunata perché è difficile usare questo metodo senza sentirsi semplice. Tuttavia, non c'è nulla di ingenuo circa il suo utilizzo in circostanze appropriate. Il modello Naïve Bayes multinomiale, particolarmente appropriato per la classificazione del testo, è stato studiato da McCallum e Nigam (1998).<br />
<br />
Il paper classico sull'induzione dell'albero decisionale è di Quinlan (1986), che descrive la procedura di base ID3 sviluppata in questo capitolo. Una descrizione completa del metodo, compresi i miglioramenti che sono contenuti nel C4.5, appare in un classico libro di Quinlan (1993), che fornisce un elenco completo del sistema C4.5, scritto nel linguaggio di programmazione C. PRISM è stato sviluppato da Cendrowska (1987), che ha anche introdotto il set di dati delle lenti a contatto.<br />
Le regole dell'associazione vengono introdotte e descritte nella letteratura del database piuttosto che nella letteratura di apprendimento macchina. Qui l'enfasi è molto sulla gestione di quantità enormi di dati piuttosto che su sensibili modi di test e valutazione di algoritmi su set di dati limitati. L'algoritmo introdotto in questo capitolo è il metodo Apriori sviluppato da Agrawal e dai suoi associati (Agrawal et al 1993a, 1993b; Agrawal e Srikant 1994). Un sondaggio sull'estrazione delle code di associazione appare in un articolo di Chen et al. (1996).<br />
<br />
La regressione lineare è descritta nella maggior parte dei testi statistici standard e un trattamento particolarmente ricco può essere trovato in un libro di Lawson e Hanson (1995). L'uso di modelli lineari per la classificazione ha avuto una grande popolarità negli anni '60; Nilsson (1965) fornisce un ottimo riferimento. Definisce un'unità di soglia lineare come prova binaria di una funzione lineare maggiore o minore di zero e una macchina lineare come insieme di funzioni lineari, una per ogni classe, il cui valore per un esempio sconosciuto viene confrontato e il più grande scelto come La sua classe prevista. Nel passato lontano, i perceptroni sono scesi per la pubblicazione di un libro influente che ha dimostrato di avere limiti fondamentali (Minsky e Papert 1969); Tuttavia, i sistemi più complessi di funzioni lineari hanno goduto di una rinascita negli ultimi anni sotto forma di reti neurali descritte nella sezione 6.3. Gli algoritmi di Winnow sono stati introdotti da Nick Littlestone nella sua tesi di dottorato nel 1989 (Littlestone 1988, 1989). I classificatori lineari multiresponse hanno recentemente individuato una nuova applicazione per un'operazione chiamata impilamento che combina l'output di altri algoritmi di apprendimento descritti nel capitolo 7 (vedi Wolpert 1992). Friedman (1996) descrive la tecnica della classificazione a coppia, Fürnkranz (2002) lo analizza ulteriormente e Hastie e Tibshirani (1998) estendono la stima delle probabilità utilizzando l'accoppiamento a coppia.<br />
<br />
Fix e Hodges (1951) eseguirono la prima analisi del metodo "più vicino", e Johns (1961) pioniera il suo uso nei problemi di classificazione. Cover e Hart (1967) hanno ottenuto il classico risultato teorico che, per i dati di grandi dimensioni, la probabilità di errore non supera mai due volte il minimo teorico; Devroye et al. (1996) ha mostrato che il vicino prossimo k è asintoticamente ottimale per i grandi k e n con k / n Æ 0. I metodi del vicino vicino hanno guadagnato la popolarità nell'apprendimento della macchina attraverso il lavoro di Aha (1992), che ha dimostrato che l'apprendimento basato sull'istanza Essere combinato con il potere di esemplare rumoroso e la ponderazione degli attributi e che i metodi risultanti funzionino bene in confronto ad altri metodi di apprendimento. Ci riportiamo di nuovo nel capitolo 6.<br />
<br />
La struttura dati di kD-tree è stata sviluppata da Friedman et al. (1977). La nostra descrizione segue da vicino una spiegazione fornita da Andrew Moore nella sua tesi di dottorato (Moore 1991), che, insieme ad Omohundro (1987), ha promosso il suo uso nell'applicazione della macchina. Moore (2000) descrive i modi sofisticati di costruire alberi a sfera che funzionano bene anche con migliaia di attributi. Abbiamo preso il nostro esempio di albero a sfera dalle note di lezione di Alexander Gray dell'Università Carnegie-Mellon. Il metodo degli intervalli di voto di intervalli indicati nella sezione di discussione alla fine della sezione 4.7 è descritto da Demiroz e Guvenir (1997).L'algoritmo k-means è una tecnica classica e molte descrizioni e variazioni sono disponibili (ad esempio, vedere Hartigan 1975). L'abile utilizzo di alberi kD per accelerare il clustering di k-che abbiamo scelto per illustrare l'utilizzo di alberi a sfera, è stato iniziato da Moore e Pelleg (2000) nel loro algoritmo di clustering X-means. Questo algoritmo contiene anche altre innovazioni descritte nel paragrafo 6.6.<br />
Credibilità: valutare ciò che è stato appreso<br />
<br />
La valutazione è la chiave per fare progressi reali nell'attività di data mining. Ci sono molti modi per inferire la struttura dai dati: abbiamo già incontrato molti e vedremo ulteriori raffinamenti e nuovi metodi nel prossimo capitolo. Ma per determinare quali 'usare' su un particolare problema abbiamo bisogno di modi sistematici 'per valutare come funzionano i diversi metodi e confrontare uno con l'altro. La valutazione non è semplice come potrebbe apparire a prima vista.<br />
Qual è il problema? Abbiamo l'allenamento; Sicuramente possiamo solo guardare "come funzionano i metodi differenti". Beh, no: come vedremo molto presto, le prestazioni sul set di allenamento non sono sicuramente un buon indicatore delle prestazioni su un set di test indipendente. Abbiamo bisogno di modi per prevedere "limiti di performance in pratica, basati su esperimenti" con qualunque dato possa essere ottenuto ".<br />
<br />
Quando una vasta offerta di dati è disponibile, questo non è un problema: basta fare un modello basato su un grande set di allenamenti e provarlo su un altro grande set di test. Ma sebbene l'attività di data mining a volte coinvolge "grandi dati" - in particolare nelle applicazioni di marketing, vendite e supporto clienti - è spesso il caso che i dati, i dati di qualità, sono scarse. <br />
<br />
Le tracce di olio menzionate nel capitolo 1 (pagine 23-24) dovevano essere individuate e contrassegnate manualmente - un processo qualificato e intenso - prima di essere utilizzate come dati formativi. Anche nell'applicazione della carta di credito (pagine 22-23), si sono rivelati solo 1000 esercizi di formazione del tipo appropriato. I dati relativi all'alimentazione elettrica (pagine 24-25) sono tornati 15 anni, 5000 giorni - ma solo 15 Giorni di Natale e Ringraziamenti, e solo il 4 febbraio 29 e le elezioni presidenziali. L'applicazione di diagnosi elettromeccanica (pagine 25-26) è stata in grado di capitalizzare su 20 anni di esperienza registrata, ma questo ha prodotto solo 300 esempi utilizzabili di errori. Le applicazioni di marketing e di vendita (pagine 26-28) implicano certamente grandi dati, ma molti altri non lo fanno: i dati formativi si basano spesso su competenze specialistiche umane, e questo è sempre in scarsa disponibilità.<br />
<br />
La questione di prevedere prestazioni basate su dati limitati è un interessante e ancora controverso. Incontreremo molte diverse tecniche, di cui una convalida incrociata - sta guadagnando l'ascesa ed è probabilmente il metodo di valutazione della scelta nella maggior parte delle situazioni pratiche pratiche limitate. Il confronto tra le prestazioni dei diversi metodi di apprendimento della macchina su un determinato problema è un'altra cosa che non è così facile come sembra: assicurarsi che le differenze apparenti non siano causate da effetti casuali, sono necessari test statistici. Finora abbiamo assunto tacitamente che ciò che si prevede è la capacità di classificare accuratamente le istanze di test; Tuttavia, alcune situazioni prevedono la previsione delle probabilità di classe piuttosto che le classi stesse e altri prevedono la previsione di valori numerici piuttosto che nominali. In ogni caso sono necessari metodi diversi.Poi guardiamo alla questione del costo. Nella maggior parte delle situazioni pratiche di data mining il costo di un errore di errori di errore dipende dal tipo di errore che è, ad esempio, un esempio positivo è stato erroneamente classificato come negativo o viceversa. Quando si effettua l'estrazione dei dati e valuta la sua performance, è spesso necessario considerare questi costi. Fortunatamente, ci sono semplici tecniche per rendere la maggior parte dei programmi di apprendimento costa sensibilmente senza affrontare con gli interni dell'algoritmo. Infine, l'intera nozione di valutazione ha affascinanti connessioni filosofiche. Per 2000 anni i filosofi hanno discusso la questione di come valutare le teorie scientifiche, e le questioni sono state messe a fuoco dalla data mining perché ciò che viene estratto è essenzialmente una "teoria" dei dati.<br />
Formazione e prove<br />
<br />
Per i problemi di classificazione, è naturale misurare la performance di un classificatore in termini di errore. Il classificatore prevede la classe di ogni istanza: se è corretto, questo viene considerato come un successo; Se no, è un errore. Il tasso di errore è solo la percentuale di errori effettuati su un intero insieme di istanze e misura le prestazioni complessive del classificatore.<br />
<br />
Naturalmente, ciò che ci interessa è la probabile evoluzione futura di nuovi dati, non la performance passata sui vecchi dati. Sappiamo già le classificazioni di ogni istanza nel set di allenamento, che dopo tutto è il motivo per cui possiamo usarlo per addestrare. Non siamo generalmente interessati a conoscere queste classificazioni, anche se il nostro scopo è la pulizia dei dati piuttosto che la previsione.Quindi la domanda è, il tasso di errore sui vecchi dati probabilmente sarà un buon indicatore del tasso di errore sui nuovi dati? La risposta è un risuonante no-no se i vecchi dati sono stati utilizzati durante il processo di apprendimento per formare il classificatore. Questo è un fatto sorprendente e molto importante. Il tasso di errore sul set di formazione non è probabile che sia un buon indicatore delle prestazioni future. Perché? Poiché il classificatore è stato appreso dagli stessi dati formativi, qualsiasi stima della prestazione basata su questi dati sarà ottimista e può essere senza speranza ottimistica.<br />
<br />
Abbiamo già visto un esempio di questo nel "set di dati del rapporto di lavoro". La Figura 1.3 (b) è stata generata direttamente dai dati di addestramento e la Figura 1.3 (a) è stata ottenuta da un processo di potatura. Il primo è probabilmente più preciso sui dati utilizzati per addestrare il classificatore ma probabilmente avrà meno risultati sui dati di prova indipendenti perché è sovrapposto ai dati formativi. Il primo albero apparirà bene secondo il tasso di errore sui dati di addestramento, meglio del secondo albero. Ma questo "non riflette" come funzioneranno su "dati di prova indipendenti".<br />
Il tasso di errore sui dati di addestramento viene chiamato errore di risistemazione, perché viene calcolato sostituendo le istanze di formazione in un classificatore che è stato costruito da loro. Anche se non è un "predittivo affidabile" del tasso di errore vero e proprio sui nuovi dati, tuttavia è spesso utile "conoscere".<br />
<br />
Per prevedere le prestazioni di un classificatore su nuovi dati, dobbiamo valutare il suo tasso di errore su un set di dati che non ha avuto alcuna parte nella formazione del classificatore. Questo set di dati indipendente è chiamato il set di test. Supponiamo che sia i dati formativi che i dati di prova siano campioni rappresentativi del problema sottostante. In alcuni casi i dati di prova potrebbero essere di natura distinta dai dati formativi. Consideriamo ad esempio il problema del rischio di credito di cui alla sezione 1.3. Supponiamo che la banca avesse dati di formazione da filiali a New York City e Florida e voleva sapere come un classificatore addestrato su uno di questi set di dati avrebbe eseguito in un nuovo ramo della Nebraska. Dovrebbe probabilmente utilizzare i dati della Florida come dati di prova per valutare il classificatore addestrato a New York e i dati di New York per valutare il classificatore addestrato in Florida. Se i set di dati sono stati amalgamati prima della formazione, la prestazione sui dati di prova non sarebbe probabilmente un buon indicatore di prestazioni sui dati futuri in uno stato completamente diverso.<br />
<br />
È importante che i dati di prova non venissero utilizzati in alcun modo per creare il classificatore. Ad esempio, alcuni metodi di apprendimento coinvolgono due fasi, uno per trovare una struttura di base e la seconda per ottimizzare i parametri coinvolti in quella struttura e separare "set di dati" "nelle due fasi. Oppure potresti provare diversi schemi di apprendimento sui dati formativi e poi valutarli - ovviamente su un nuovo set di dati - per vedere quale funziona meglio. Ma nessuno di questi dati può essere utilizzato per determinare una stima del tasso di errore futuro. In tali situazioni spesso parlano di tre set di dati: i dati formativi, i dati di convalida e i dati di prova. I dati formativi vengono utilizzati da uno o più metodi di apprendimento per arrivare a classificatori. I dati di convalida vengono utilizzati per ottimizzare i parametri di tali classificatori o per selezionare un particolare. Quindi i dati di prova vengono utilizzati per calcolare il tasso di errore del metodo finale, ottimizzato. Ciascuno dei tre set deve essere scelto in modo indipendente: il set di convalida deve essere diverso dal set di addestramento per ottenere buone prestazioni nella fase di ottimizzazione o selezione e il set di test deve essere diverso da entrambi per ottenere una stima attendibile del tasso di errore vero.<br />
<br />
Può essere che una volta determinato il tasso di errore, i dati di prova vengono nuovamente inseriti nei dati di addestramento per produrre un nuovo classificatore per l'uso effettivo. Non c'è niente di sbagliato in questo: è solo un modo per massimizzare la quantità di dati utilizzati per generare il classificatore che 'veramente sarà impiegato' in pratica. Ciò che è importante è che i tassi di errore non siano citati in base a uno di questi dati. Inoltre, una volta utilizzati i dati di convalida - forse per determinare il tipo migliore di apprendimento da utilizzare - allora può essere nuovamente inserito nei dati di formazione per riqualificare tale schema di apprendimento, massimizzando l'utilizzo dei dati. Se sono disponibili molti dati, non esiste alcun problema: prendiamo un grande campione e lo usiamo per la formazione; Poi un altro grande campione indipendente di dati diversi e utilizzarlo per il test. A condizione che entrambi i campioni siano rappresentativi, il tasso di errore sul set di test darà una vera indicazione delle prestazioni future. Generalmente, più grande è il campione di formazione migliore è il classificatore, anche se i rendimenti iniziano a diminuire una volta superato un determinato volume di dati formativi. E più grande è il campione di prova, più è accurato l'errore di stima. L'accuratezza della stima degli errori può essere quantificata statisticamente, come vedremo nella sezione successiva. <br />
<br />
Il vero problema si verifica quando non c'è una grande quantità di dati disponibili. In molte situazioni i dati di allenamento devono essere classificati manualmente - e così anche i dati di prova, ovviamente, per ottenere stime di errore. Ciò limita la quantità di dati che può essere utilizzata per la formazione, la convalida e il test e il problema diventa come sfruttare al meglio un set di dati limitato. Da questo set di dati viene mantenuto un certo importo per il test - questo è chiamato procedimento di tenuta - e il resto viene utilizzato per addestramento (e, se necessario, parte di essa è destinata alla convalida).<br />
C'è un dilemma qui: trovare un buon classificatore, vogliamo utilizzare quanto più possibile i dati per la formazione; Per ottenere una buona stima di errori, vogliamo utilizzare quanto più possibile per testare. Le sezioni 5.3 e 5.4 ripropongono metodi ampiamente usati per affrontare questo dilemma.<br />
Prevedere le prestazioni<br />
<br />
Supponiamo di misurare l'errore di un classificatore su un set di test e di ottenere un certo tasso di errore numerico, ad esempio 25%. In realtà, in questa sezione si fa riferimento al tasso di successo piuttosto che al tasso di errore, per cui questo corrisponde ad un tasso di successo del 75%. Ora, questa è solo una stima. Cosa si può dire sul vero tasso di successo sulla 'popolazione target'? Certo, dovrebbe essere prossimo al 75%. Ma quanto vicino - entro il 5%? Entro il 10%? Deve dipendere dalla dimensione del set di test. Naturalmente, saremmo più sicuri della figura del 75% se si basava su un set di test di 10.000 istanze piuttosto che su un set di test di 100 istanze. Ma quanto più fiduciosi "saremmo"?<br />
<br />
Per rispondere a queste domande, abbiamo bisogno di qualche ragionamento statistico. Nelle statistiche, una successione di eventi indipendenti che riescono o falliscono è chiamata un processo Bernoulli. L'esempio classico è il lancio di monete. Ogni lancio è un evento indipendente. Diciamo che predichiamo sempre le teste; Ma piuttosto che "teste" o "code", ogni gesto è considerato un "successo" o un "guasto". Diciamo che la moneta è parziale, ma non sappiamo cosa sia la probabilità delle teste. Quindi, se effettivamente lanciamo la moneta 100 volte e 75 sono teste, abbiamo una situazione molto simile a quella descritta in precedenza per un classificatore con un tasso di successo del 75% rispetto a un set di test. Cosa possiamo dire della vera probabilità di successo? In altre parole, immaginate che esista un processo di Bernoulli, una moneta parzializzata, il cui vero (ma sconosciuto) tasso di successo è p. Supponiamo che su prove N, S siano successi: così il tasso di successo osservato è f = S / N. La domanda è, che cosa ti dice circa il vero tasso di successo p?<br />
<br />
La risposta a questa domanda viene solitamente espressa come intervallo di confidenza; Ovvero, p si trova all'interno di un determinato intervallo specificato con una determinata fiducia specificata. Ad esempio, se S = 750 successi sono osservati in N = 1000 prove, ciò indica che la vera percentuale di successo deve essere di circa il 75%. Ma quanto vicino al 75%? Risulta che con il 80% di fiducia, il vero tasso di successo p si trova tra il 73,2% e il 76,7%. Se S = 75 successi sono osservati in N = 100 prove, ciò indica anche che la vera percentuale di successo deve essere di circa il 75%. Ma l'esperimento è più piccolo e l'intervallo di confidenza dell'80% per p è più ampio, che si estende dal 69,1% all'80,1%.<br />
Queste cifre sono facili da collegare qualitativamente, ma come vengono derivate quantiativamente? Dobbiamo spiegare come segue: la media e la varianza di un singolo processo di Bernoulli con il tasso di successo p sono rispettivamente p e p (1 - p). Se i processi N vengono prelevati da un processo Bernoulli, il tasso di successo previsto f = S / N è una variabile casuale con la stessa media p; La varianza è ridotta da un fattore di N a p (1 - p) / N. Per grandi N, la distribuzione di questa variabile casuale si avvicina alla distribuzione normale. Questi sono tutti fatti di statistiche: non vedremo le loro derivazioni.<br />
<br />
La probabilità che una variabile casuale X, con zero media, si trovi all'interno di una certa gamma di confidenza di larghezza 2z è<br />
<br />
<br />
Pr[ - z £ X £ z ] = c.<br />
<br />
<br />
Per una distribuzione normale, i valori di c ed i valori corrispondenti di z sono riportati nelle tabelle stampate sul retro di più testi statistici. Tuttavia, le tabelle convenzionali assumono una forma leggermente diversa: danno la certezza che X sarà fuori dalla gamma e lo danno solo per la parte superiore della gamma:<br />
<br />
<br />
Pr[ X ≥ z ].<br />
<br />
<br />
Questa viene chiamata probabilità di un tratto, perché si riferisce solo alla "coda" superiore della distribuzione. Le distribuzioni normali sono simmetriche, quindi le probabilità per la coda inferiore<br />
<br />
<br />
Pr[ X £ - z ]<br />
<br />
sono lo stesso.<br />
<br />
La tabella 5.1 fornisce un esempio. Come altre tabelle per la distribuzione normale, questo presuppone che la variabile casuale X abbia una media di zero e una varianza di uno. In alternativa, si potrebbe dire che le figure z sono misurate in deviazioni standard rispetto alla media. Quindi la figura di Pr [X ≥ z] = 5% implica che esista una probabilità del 5% che X sia più di 1,65 deviazioni standard al di sopra della media. Poiché la distribuzione è simmetrica, la probabilità che X sia più di 1,65 deviazioni standard rispetto alla media (sopra o sotto) è del 10%, oppure<br />
<br />
<br />
Pr[ -1.65 £ X £ 1.65] = 90%.<br />
<br />
<br />
Tutto quello che dobbiamo fare ora è ridurre la variabile casuale f per avere zero media e unità di varianza. Facciamo questo sottraendo la media p e dividendo dalla deviazione standard p (1- p) N. Questo porta a<br />
<br />
Ora ecco la procedura per trovare limiti di fiducia. Dato una particolare figura di fiducia c, consultare la Tabella 5.1 per il corrispondente valore z. Per usare la tabella devi prima sottrarre c da 1 e dimezzare il risultato, in modo che per c = 90% utilizzi la voce di tabella per il 5%. L'interpolazione lineare può essere utilizzata per i livelli intermedi di confidenza. Quindi scrivere la disuguaglianza nell'espressione precedente come una uguaglianza e invertirla per trovare un'espressione per p.<br />
<br />
<br />
Il passo finale consiste nel risolvere un'equazione quadratica. Anche se non è difficile da fare, porta ad un'espressione spaventosamente formidabile per i limiti di confidenza:<br />
<br />
.....<br />
<br />
La ± in questa espressione dà due valori per p che rappresentano i limiti di confidenza superiori e inferiori. Anche se la formula sembra complicata, non è difficile lavorare in casi particolari.<br />
<br />
Questo risultato può essere utilizzato per ottenere i valori nell'esempio numerico precedente. L'impostazione f = 75%, N = 1000 e c = 80% (cosicché z = 1.28) porta all'intervallo [0.732,0.767] per p, e N = 100 porta a [0.691,0.801] per lo stesso livello di fiducia. Si noti che l'assunzione normale di distribuzione è valida solo per grandi N (ad esempio N> 100). Quindi f = 75% e N = 10 conduce a limiti di confidenza [0.549,0.881], ma questi devono essere assunti con un granello di sale.<br />
Cross-validation<br />
<br />
Ora considerate cosa fare quando la quantità di dati per la formazione e il test è limitata. Il metodo di holdout riserva una certa quantità per il test e utilizza il resto per l'addestramento (e lo mette parte per la convalida se necessario). In termini pratici, è comune tenere un terzo dei dati per il test e utilizzare i due terzi rimanenti per la formazione.<br />
<br />
Naturalmente, potresti essere sfortunato: il campione usato per la formazione (o il test) potrebbe non essere rappresentativo. In generale, non si può sapere se un campione è rappresentativo o meno. Ma c'è un semplice controllo che potrebbe valere: ogni classe del dataset completo dovrebbe essere rappresentata in circa la proporzione giusta nei set di addestramento e di prova. Se, per sfortuna, tutti gli esempi con una certa classe erano scomparsi dal set di allenamento, non ci si poteva aspettare che un classificatore appreso da questi dati possa funzionare bene sugli esempi di quella classe - e la situazione sarebbe esacerbata dal fatto che la classe sarebbe necessariamente troppo rappresentata nel set di test perché nessuno dei suoi casi lo ha fatto nel set di allenamento! Invece, dovreste assicurarvi che il campionamento casuale sia fatto in modo da garantire che ogni classe sia correttamente rappresentata in entrambi i corsi di formazione e di prova. Questa procedura è chiamata stratificazione, e possiamo parlare di stratificato mantenimento. Anche se è generalmente valsa la pena fare, la stratificazione fornisce solo una garanzia primitiva contro la rappresentazione irregolare nei corsi di formazione e di prova.<br />
<br />
Un modo più generale per mitigare ogni pregiudizio causato dal particolare campione scelto per holdout è quello di ripetere l'intero processo, la formazione e il test, più volte con diversi campioni casuali. In ogni iterazione, una certa proporzione - diciamo due terzi dei dati - viene selezionata casualmente per addestramento, possibilmente con stratificazione e il resto utilizzato per il test. Le percentuali di errore sulle diverse iterazioni vengono calcolate in media per produrre un tasso di errore globale. Questo è il metodo ripetuto di holdout della stima del tasso di errore.<br />
<br />
In una singola procedura di holdout, è possibile considerare lo scambio dei ruoli dei dati "test e formazione", ossia, addestrare il sistema sui dati di prova e testarlo sui dati formativi e mediare i due risultati riducendo così Effetto di una rappresentazione irregolare in set di allenamento e prova. Purtroppo questo è veramente plausibile con una divisione 50:50 tra i dati di "formazione e prova", che non è generalmente ideale: è meglio utilizzare più della metà dei dati per addestrare anche a scapito dei dati di prova. Tuttavia, una semplice variante costituisce la base di un'importante tecnica statistica chiamata cross-validation. Nella convalida incrociata, si decide su un numero fisso di pieghe o partizioni dei dati. Supponiamo di utilizzare tre. Quindi i dati vengono suddivisi in tre partizioni uguali e ciascuna a turno viene usata per il test e il resto viene utilizzato per la formazione. Cioè, utilizzare due terzi per la formazione e un terzo per il test e ripetere la procedura tre volte in modo che, alla fine, ogni istanza sia stata utilizzata esattamente una volta per il test. Questo si chiama trifold cross-validation e se viene adottata anche la stratificazione - che spesso è - è stratificata triplicamente "convalida incrociata".<br />
<br />
Il modo standard di predire il tasso di errore di una tecnica di apprendimento dato un unico esempio fisso di dati è quello di utilizzare una convalida incrociata stratificata di 10 volte. I dati sono divisi in modo casuale in 10 parti in cui la classe è rappresentata in approssimativamente le stesse proporzioni come nel dataset completo. Ogni parte è svolta a sua volta e lo schema di apprendimento è stato addestrato sui restanti nove decimi; Allora il suo tasso di errore viene calcolato sul set di holdout. Così la procedura di apprendimento viene eseguita per un totale di 10 volte su diversi set di allenamenti (ognuno dei quali ha molto in comune). Infine, le 10 stime di errore vengono calcolate per produrre una stima di errore complessiva.<br />
<br />
Perché 10? Test estesi su numerosi set di dati, con differenti tecniche di apprendimento, hanno dimostrato che 10 è il numero giusto di pieghe per ottenere la migliore stima dell'errore, e c'è anche qualche prova teorica che lo supporta. Sebbene questi argomenti non siano assolutamente conclusivi e il dibattito continua furioso nei settori di apprendimento automatico e data mining su quello che è il miglior schema di valutazione, la convalida incrociata di 10 volte è diventata il metodo standard in termini pratici. I test hanno anche dimostrato che l'uso della stratificazione migliora i risultati leggermente. Pertanto, la tecnica di valutazione standard in situazioni in cui sono disponibili solo dati limitati è stratificata con una convalida cross-over di 10 volte. Si noti che né la stratificazione né la divisione in 10 pieghe devono essere esatti: basta dividere i dati in 10 approssimativamente uguali in cui i diversi valori di classe sono rappresentati in circa la proporzione giusta. La valutazione statistica non è una scienza esatta. Inoltre, non esiste nulla di magia circa l'esatto numero 10: 5 o 20 volte la convalida incrociata è probabile che sia quasi altrettanto buono.<br />
<br />
Una singola convalida incrociata di 10 volte potrebbe non essere sufficiente per ottenere una stima errata degli errori. Diversi esperimenti di convalida a 10 volte con lo stesso metodo di apprendimento e insieme di dati spesso producono risultati diversi, a causa dell'effetto della variazione casuale nella scelta delle pieghe stesse. La stratificazione riduce la variazione, ma certamente non lo elimina completamente. Quando si cerca una stima corretta degli errori, è la procedura standard per ripetere il processo di convalida incrociata 10 volte - ovvero 10 consecutive consecutive a 10 convalidazioni - e mediare i risultati. Questo implica invocare l'algoritmo di apprendimento 100 volte su set di dati che sono tutti nove decimi della dimensione dell'originale. Ottenere una buona misura delle prestazioni è un'impresa di calcolo intensiva.<br />
Other estimates<br />
<br />
La convalida incrociata a dieci è il modo standard di misurare il tasso di errore di uno schema di apprendimento su un particolare set di dati; Per risultati affidabili, 10 volte 10 volte la convalida incrociata. Ma molti altri metodi vengono usati invece. Due sono particolarmente prevalenti sono la convalida incrociata di una sola uscita e il bootstrap.<br />
Leave-one-out<br />
<br />
La convalida incrociata di una sola uscita è semplicemente la convalida incrociata n-fold, dove n è il numero di istanze nel set di dati. Ogni istanza a sua volta viene lasciata fuori e il metodo di apprendimento viene addestrato su tutte le altre istanze. È giudicato dalla sua correttezza sul rimanente istanza-uno o zero per il successo o il fallimento, rispettivamente. I risultati di tutti i giudizi, uno per ciascun membro del set di dati, vengono calcolati in media e la media rappresenta la stima finale degli errori.<br />
<br />
Questa procedura è attraente per due motivi. In primo luogo, la maggior quantità possibile di dati viene utilizzata per la formazione in ogni caso, che presumibilmente aumenta la probabilità che il classificatore sia accurato. In secondo luogo, la procedura è deterministica: nessun campionamento casuale è coinvolto. Non c'è motivo di ripetere 10 volte, o di ripeterlo: lo stesso risultato verrà ottenuto ogni volta. A fronte di questo è l'alto costo computazionale, perché l'intera procedura di apprendimento deve essere eseguita n volte e questo è di solito abbastanza infattibile per i set di dati di grandi dimensioni. Tuttavia, il rilascio-uno-out sembra offrire la possibilità di spremere il massimo da un piccolo set di dati e ottenere la stima più accurata possibile.<br />
<br />
Ma c'è uno svantaggio per lasciare una sola convalida incrociata, a parte la spesa computazionale. Per sua stessa natura, non può essere stratificato - peggio di ciò, garantisce un campione non stratificato. La stratificazione comporta l'ottenimento della proporzione corretta di esempi di ciascuna classe nel set di test e questo non è possibile quando il set di test contiene solo un singolo esempio. Un drammatico, anche se molto artificiale, illustrazione dei problemi che potrebbe causare è immaginare un set di dati completamente casuale che contiene lo stesso numero di ciascuna di due classi. Il meglio che un induttore può fare con i dati casuali è quello di predire la classe di maggioranza, dando un vero tasso di errore del 50%. Ma in ogni piega di lasciare uno - fuori, la classe opposta all'istanza di prova è nella maggioranza - e quindi le previsioni saranno sempre sbagliate, portando ad un tasso di errore stimato del 100%!<br />
The bootstrap<br />
<br />
Il secondo metodo di stima descritto, il bootstrap, si basa sulla procedura statistica di campionamento con sostituzione. In precedenza, ogni volta che un campione è stato prelevato dal set di dati per formare un set di formazione o test, è stato disegnato senza sostituire. Cioè, lo stesso esempio, una volta selezionato, non potrebbe essere nuovamente selezionato. È come raccogliere squadre per il calcio: non puoi scegliere la stessa persona due volte. Ma le istanze del set di dati non sono come le persone. La maggior parte dei metodi di apprendimento può utilizzare la stessa istanza due volte, e fa la differenza nel risultato dell'apprendimento se è presente nel set di formazione due volte. (Gli sticklers matematici noteranno che non dobbiamo veramente parlare di "set" a tutti se lo stesso oggetto può apparire più di una volta.)<br />
<br />
L'idea del bootstrap è quella di campionare il set di dati con la sostituzione per formare un set di formazione. Descriveremo una particolare variante, misteriosamente (ma per un motivo che diventerà presto apparente) chiamato il bootstrap 0.632. Per questo, un set di n istanze viene campionato n volte, con sostituzione, per dare un altro set di n di istanze n. Poiché alcuni elementi di questo secondo set di dati (quasi certamente) saranno ripetuti, devono essere presenti alcune istanze nel set di dati originale che non sono stati selezionati: li useremo come istanze di prova.<br />
Qual è la probabilità che una particolare istanza non venga scelto per il set di formazione? Ha una probabilità 1 / n di essere selezionata ogni volta e quindi una probabilità 1 - 1 / n di non essere selezionata. Moltiplicate queste probabilità insieme in base al numero di opportunità di raccolta, che è n, e il risultato è una figura di<br />
<br />
....<br />
<br />
(Dove e è la base dei logaritmi naturali, 2.7183, non il tasso di errore!). Ciò dà la possibilità che una particolare istanza non venga selezionata. Quindi, per un set di dati abbastanza grande, il set di test contiene circa il 36,8% delle istanze e il set di formazione contiene circa il 63,2% di essi (ora si può vedere perché si chiama il bootstrap 0.632). Alcuni casi verranno ripetuti nel set di allenamento, portandolo ad una dimensione totale di n, uguale a quello del set di dati originale.<br />
<br />
La figura ottenuta formando un sistema di apprendimento sul set di formazione e calcolando il suo errore sul set di test sarà una stima pessimistica del tasso di errore vero, perché il set di formazione, sebbene la sua dimensione sia n, contiene tuttavia solo il 63% delle istanze , Che "non è un grande confronto", ad esempio, con il 90% utilizzato in 10 convalida cross-validazione. Per compensare questo, combinare il tasso di errore di test-set con l'errore di risubuizione sulle istanze nel set di allenamento. La figura di risubuizione, come abbiamo già avvertito, dà una stima molto ottimistica del vero errore e non dovrebbe certamente essere utilizzato come una figura di errore da solo. Ma la procedura bootstrap la combina con il tasso di errore di prova per dare una stima finale e come segue:<br />
<br />
<br />
e = 0.632 ¥ e test instances + 0.368 ¥ e training instances<br />
<br />
<br />
Quindi, l'intera procedura di bootstrap viene ripetuta più volte, con diversi campioni di sostituzione per l'allenamento e i risultati sono mediati. La procedura bootstrap può essere il modo migliore per valutare l'errore per i set di dati molto piccoli. Tuttavia, come la convalida incrociata di una sola uscita, essa presenta svantaggi che possono essere illustrati considerando una particolare situazione artificiale. Infatti, lo stesso set di dati che abbiamo considerato in precedenza farà: un dataset completamente casuale con due classi. Il vero tasso di errore è del 50% per qualsiasi regola di previsione. Ma uno schema che ha memorizzato il set di formazione darebbe un punteggio perfetto di risubuizione del 100% in modo che [e training instances = 0],<br />
<br />
E il bootstrap 0.632 lo mescherà con un peso di 0,368 per dare un tasso di errore globale di soli 31,6% (0,632 * 50% + 0,368 * 0%), che è ingannevolmente ottimista.<br />
Comparing data mining methods<br />
<br />
Abbiamo spesso bisogno di confrontare due diversi metodi di apprendimento sullo stesso problema per vedere quale è il migliore da utilizzare. Sembra semplice: stimare l'errore utilizzando la convalida incrociata (o qualsiasi altra procedura di stima appropriata), forse ripetuta più volte, e scegliere lo schema la cui stima è minore. Questo è abbastanza "sufficiente" in molte applicazioni pratiche: se un metodo ha un errore inferiore stimato rispetto ad un altro in un determinato set di dati, il meglio che possiamo fare è utilizzare il modello del metodo precedente. Tuttavia, può essere che la differenza sia semplicemente causata da un errore di stima e in alcune circostanze è importante determinare se uno schema è veramente migliore di un altro su un particolare problema. Questa è una sfida standard per i ricercatori di apprendimento macchina. Se viene proposto un nuovo algoritmo di apprendimento, i suoi proponenti devono dimostrare che migliora lo stato dell'arte per il problema in questione e dimostra che il miglioramento osservato non è solo un effetto probabile nel processo di stima.<br />
<br />
Questo è un lavoro per un test statistico che dà "limiti di fiducia", il tipo che abbiamo incontrato in precedenza quando si cerca di prevedere le prestazioni vere da un determinato errore di errore impostato. Se ci fosse dati illimitati, potremmo utilizzare una grande quantità per addestrare e valutare le prestazioni su un grande set di test indipendente, ottenendo "limiti di fiducia" come prima. Tuttavia, se la differenza risulta significativa, dobbiamo verificare che ciò non sia solo a causa del particolare set di dati in cui è accaduto di basare l'esperimento. Quello che vogliamo determinare è se uno schema sia migliore o peggiore di un altro in media, in tutti i possibili set di dati di formazione e test che possono essere tratti dal dominio. Poiché la quantità di dati di addestramento influenza naturalmente le prestazioni, tutti i set di dati devono avere la stessa dimensione: anzi, l'esperimento potrebbe essere ripetuto con diverse dimensioni per ottenere una curva di apprendimento.<br />
<br />
Per il momento, supponiamo che la fornitura dei dati sia illimitata. Per la definizione, supponiamo che la convalida incrociata 'sia usata per ottenere le stime degli errori (altri stimatori, come la convalida ripetuta, sono altrettanto validi). Per ogni metodo di apprendimento possiamo disegnare più set di dati della stessa dimensione, ottenere una stima di precisione per ogni dataset utilizzando la convalida incrociata e calcolare la media delle stime. Ogni esperimento di convalida incrociata fornisce una stima errore diversa e indipendente. Quello che ci interessa è la precisione media in tutti i possibili set di dati della stessa dimensione e se questa media è più grande per uno schema o l'altro.<br />
<br />
Da questo punto di vista, stiamo cercando di determinare se la media di una serie di stime di cross-validation di campioni per i vari set di dati che abbiamo campionato dal dominio è significativamente maggiore o significativamente inferiore alla media di un altro. Questo è un lavoro per un dispositivo statistico noto come t-test, o Student's t-test. Poiché lo stesso esperimento di conferma di crociera può essere utilizzato per entrambi i metodi di apprendimento per ottenere una coppia di risultati corrispondente per ciascun set di dati, è possibile utilizzare una versione più sensibile del t-test noto come t-test associato.<br />
<br />
Abbiamo bisogno di qualche notazione. Esiste un insieme di campioni x1, x2,. . . , Xk ottenuto con successive convalide cross-validate di 10 volte usando uno schema di apprendimento e un secondo insieme di campioni y1, y2,. . . , Yk ottenuto con successive convalide cross-validate di 10 volte utilizzando l'altro. Ogni stima di convalida incrociata viene generata utilizzando un set di dati diverso (ma tutti i set di dati sono della stessa dimensione e dallo stesso dominio). Otterremo i migliori risultati se esattamente le stesse partizioni di convalida di croce vengono utilizzate per entrambi i piani in modo che x1 e y1 siano ottenuti usando la stessa divisione cross validation, come x2 e y2 e così via. Indica la media della prima serie di campioni per x e stiamo cercando di determinare se x è la media del secondo insieme di y che è significativamente diverso da y Se ci sono abbastanza campioni.<br />
<br />
Se ci sono campioni sufficienti, la media (x) di un insieme di campioni indipendenti (x1, x2, ..., xk) ha una distribuzione normale (cioè, Gaussiana), indipendentemente dalla distribuzione sottostante i campioni stessi. Chiameremo il vero valore della media m. Se sapessimo la varianza di quella distribuzione normale, in modo che possa essere ridotta ad avere una media di zero e una varianza dell'unità, potremmo ottenere limiti di confidenza m per la media dei campioni (x). Tuttavia, la varianza è sconosciuta e l'unico modo per ottenerlo è stimarlo dalla serie di campioni.<br />
<br />
Non è difficile da fare. La varianza di x può essere stimata dividendo la varianza calcolata dai campioni x1, x2,. . . , Xk-chiamala s 2 -by k. Ma il fatto che dobbiamo stimare la varianza cambia qualcosa in qualche modo. Possiamo ridurre la distribuzione di x per avere la media di zero e la varianza dell'unità utilizzando<br />
<br />
Poiché la varianza è solo una stima, questa non ha una distribuzione normale (anche se diventa normale per i grandi valori di k). Invece, ha la cosiddetta distribuzione di Studenti con k - 1 gradi di libertà. Ciò significa in pratica che dobbiamo utilizzare una tabella di intervalli di confidenza per la distribuzione degli studenti piuttosto che la tabella di fiducia per la distribuzione normale data in precedenza. Per 9 gradi di libertà (che è il numero corretto se utilizziamo la media di 10 convalidi incrociati) i corrispondenti limiti di confidenza sono mostrati nella Tabella 5.2. Se si confrontano con la tabella 5.1, si vedrà che le figure degli studenti sono leggermente più conservatori: per un certo grado di fiducia, l'intervallo è leggermente più ampio, e ciò riflette l'ulteriore incertezza causata dallo stimare la varianza. Diverse tabelle sono necessarie per diversi numeri di gradi di libertà e se ci sono più di 100 gradi di libertà i limiti di confidenza sono molto vicini a quelli per la distribuzione normale. Come la Tabella 5.1, le figure della Tabella 5.2 sono per un intervallo di confidenza "unilaterale".<br />
<br />
Per decidere se i mezzi x e y, ciascuno di essi in media dello stesso numero y<br />
K di campioni, sono uguali o no, consideriamo le differenze di corrispondenze corrispondenti, di = xi-yi. Questo è legittimo perché le osservazioni sono accoppiate. La media di questa differenza è solo la differenza tra due mezzi, d = x - y, e, come i mezzi stessi, ha una distribuzione di Studenti y con k - 1 gradi di libertà. Se i mezzi sono gli stessi, la differenza è zero (si chiama ipotesi nullo); Se sono significativamente diversi, la differenza sarà significativamente diversa da zero. Quindi, per un dato livello di fiducia, verificheremo se la differenza effettiva supera il limite di fiducia.<br />
<br />
In primo luogo, ridurre la differenza a una variabile di zero-media, varianza di unità chiamata la statistica t:<br />
<br />
.....<br />
<br />
dove @ 2d è la varianza dei campioni di differenza. Quindi, decidere su un livello di confidenza in generale, il 5% o l'1% viene utilizzato nella pratica. Da questo il limite di confidenza z viene determinato utilizzando la Tabella 5.2 se k è 10; Se non lo è, viene utilizzata una tabella di fiducia della distribuzione dello Studente per il valore k in questione. Un test a due teste è appropriato perché non sappiamo in anticipo se la media della x è probabile che sia maggiore di quella del y e viceversa: per un test dell'1% usiamo il valore corrispondente allo 0,5% in Tabella 5.2. Se il valore di t secondo la formula precedente è maggiore di z, o meno di -z, rifiutiamo l'ipotesi nullo che i mezzi sono gli stessi e concludono che vi sia davvero una differenza significativa tra i due metodi di apprendimento su quel dominio per Quella dimensione del set di dati. <br />
<br />
Vale la pena di fare due osservazioni su questa procedura. Il primo è tecnico: cosa succede se le osservazioni non sono state accoppiate? Cioè se non fosse stato possibile, per qualche ragione, valutare l'errore di ogni schema di apprendimento sugli stessi set di dati? Cosa succede se il numero di set di dati per ogni schema non era nemmeno lo stesso? Queste condizioni potrebbero sorgere se qualcun altro avesse valutato uno dei metodi e pubblicato diverse stime per un particolare dominio e dimensioni del dataset - o forse solo la loro media e varianza - e abbiamo voluto confrontarlo con un diverso metodo di apprendimento. Quindi è necessario utilizzare un t-test regolare e non sconnesso. Se i mezzi sono normalmente distribuiti, come si assume, la differenza tra i mezzi è normalmente distribuita. Invece di prendere la media della differenza, d, usiamo la differenza dei mezzi x - y. Naturalmente, è la stessa cosa: la media della differenza è la differenza dei mezzi. Ma la varianza della differenza d non è la stessa. Se la varianza dei campioni x1, x2 ,. . . , Xk è s2 e la varianza è @ 2x dei campioni y1, y2,. . . , Y1 è @ 2y, la migliore stima della varianza della differenza dei mezzi è<br />
<br />
...<br />
<br />
È questa varianza (o piuttosto la sua radice quadrata) che dovrebbe essere utilizzato come denominatore della statistica t fornita in precedenza. I gradi di libertà, necessari per consultare le tabelle di fiducia degli Studenti, dovrebbero essere prese in modo conservativo per essere il minimo dei gradi di libertà dei due campioni. Essenzialmente, sapendo che le osservazioni sono accoppiate, consente di utilizzare una migliore stima per la varianza, che produrrà limiti di fiducia più stretti.<br />
<br />
La seconda osservazione riguarda l'ipotesi che ci siano dati essenzialmente illimitati in modo che possano essere utilizzati diversi set di dati indipendenti della giusta dimensione. Nella pratica, di solito sono presenti solo un singolo set di dati limitati. Cosa si può fare? Potremmo dividere i dati in (forse 10) sottoinsiemi e eseguire una convalida incrociata su ciascuna di esse. Tuttavia, il risultato complessivo ci dirà solo se un schema di apprendimento è preferibile per quella particolare dimensione - forse un decimo del set di dati originale. In alternativa, il set di dati originale potrebbe essere riutilizzato, ad esempio con diverse randomizzazioni del set di dati per ogni convalida incrociata2. Tuttavia, le stime di convalida incrociate non saranno indipendenti poiché non si basano su set di dati indipendenti. In pratica, ciò significa che una differenza può essere giudicata significativa quando in realtà non lo è. Infatti, solo aumentando il numero di campioni k, cioè il numero di corse di validazione incrociate, darà alla fine una differenza apparentemente significativa perché il valore della statistica t aumenta senza bound.<br />
<br />
Sono state proposte varie modifiche del t-test standard per aggirare questo problema, tutti euristici e privi di giustificazione teorica. Uno che sembra funzionare bene in pratica è il t-test corretto. Assumere per il momento che si utilizzi il metodo di ripetizione ripetuta anziché la convalida incrociata, ripetuta volte k su divisioni casuali differenti dello stesso set di dati per ottenere stime di precisione per due metodi di apprendimento. Ogni volta, le istanze n1 vengono utilizzate per la formazione e n2 per il test e le differenze di sono calcolate dalla prestazione sui dati di prova. Il test t-test riselezionato utilizza la statistica modificata<br />
<br />
...<br />
<br />
Nello stesso modo della statistica t-standard. Uno sguardo più attento sulla formula mostra che il suo valore non può essere aumentato semplicemente aumentando k. La stessa statistica modificata può essere utilizzata con la convalida incrociata ripetuta, che è solo un caso speciale di ripetuto holdout in cui i singoli test di set per una convalida incrociata non si sovrappongono. Per una conferma di cross-validazione di 10 volte ripetuta 10 volte, k = 100, n2 / n1 = 0,1 / 0,9 e @ 2d si basa su 100 differenze. <br />
Predezione della probabilità<br />
<br />
In questa sezione abbiamo tacitamente assunto che l'obiettivo è quello di massimizzare il tasso di successo delle previsioni. L'esito per ogni istanza di prova è corretto se la previsione è d'accordo con il valore effettivo per l'istanza o non è corretto, se non lo è. Non ci sono grigi: tutto è nero o bianco, corretto o errato. In molte situazioni, questa è la prospettiva più appropriata. Se lo schema di apprendimento, quando è effettivamente applicato, si traduce in una predizione corretta o non corretta, il successo è la misura giusta da utilizzare. Questo viene chiamato a volte una funzione di perdita 0 - 1: la "perdita" è zero se la previsione è corretta o una se non lo è. L'uso della perdita è convenzionale, anche se una terminologia più ottimista potrebbe far apparire il risultato in termini di profitto.<br />
<br />
Altre situazioni sono più sottili. La maggior parte dei metodi di apprendimento può associare una probabilità a ciascuna predizione (come fa il metodo Naïve Bayes). Potrebbe essere più naturale considerare questa probabilità nel giudicare la correttezza. Ad esempio, un risultato corretto previsto con una probabilità del 99% dovrebbe forse pesare più pesante di quello previsto con una probabilità del 51% e, in una situazione a due classi, forse questo non è tutto "molto migliore" di un Risultato errato previsto con probabilità 51%. Sia opportuno prendere in considerazione probabilità di predizione dipende dall'applicazione. Se l'applicazione finale è solo una previsione del risultato e non vengono assegnati dei premi per una valutazione realistica della probabilità della previsione, non sembra opportuno utilizzare le probabilità. Se la previsione è soggetta ad un'ulteriore elaborazione, tuttavia - forse con una valutazione da parte di una persona, o con un'analisi dei costi o forse anche come input per un processo di apprendimento di secondo livello - potrebbe essere opportuno tener conto delle probabilità di predizione.<br />
Funzione di perdita quadratica<br />
<br />
Supponiamo che per un singolo istanza ci siano possibili esiti o classi di k, e per un dato istanza il piano di apprendimento si presenta con un vettore di probabilità p1, p2,. . . , Pk per le classi (dove queste probabilità sono pari a 1). L'esito effettivo per tale istanza sarà una delle possibili classi. Tuttavia, è conveniente esprimerlo come vettore a1, a2,. . . , Ak la cui componente ith, dove i è la classe effettiva, è 1 e tutti gli altri componenti sono 0. Possiamo esprimere la penalità associata a questa situazione come funzione di perdita che dipende sia dal vettore p che dal vettore.<br />
<br />
Un criterio che viene spesso utilizzato per valutare la previsione probabilistica è la funzione di perdita quadratica:<br />
<br />
.....<br />
<br />
Si noti che si tratta di una singola istanza: la somma è sopra le uscite possibili non oltre le istanze diverse. Solo uno degli a sarà 1 e il resto sarà 0, quindi la somma contiene contributi di pj2 per le previsioni erronee e (1 - pi) 2 per quella corretta. Di conseguenza, può essere scritto<br />
<br />
.....<br />
<br />
dove i è la classe corretta. Quando il set di test contiene più istanze, la funzione di perdita viene sommata su tutti.<br />
<br />
È un fatto teorico interessante che se si cerca di minimizzare il valore della funzione di perdita quadratica in una situazione in cui la classe reale viene generata probabilisticamente, la migliore strategia è quella di scegliere per il vettore p le probabilità reali dei diversi risultati, che è, pi = Pr [classe = i]. Se le probabilità vere sono conosciute, saranno i valori migliori per p. Se non lo sono, un sistema che si sforza di ridurre al minimo la funzione di perdita quadratica sarà incoraggiato a utilizzare la sua migliore stima di Pr [classe = i] come valore per pi.<br />
<br />
Questo è abbastanza facile da vedere. Indica le probabilità vere da p1 *, p2 *,. . . , Pk * in modo che pi * = Pr [classe = i]. Il valore atteso della funzione di perdita quadratica per un'istanza di prova può essere riscritto come segue:<br />
<br />
....<br />
<br />
La prima fase implica solo l'attuazione dell'attesa all'interno della somma e l'espansione della piazza. Per il secondo, pj è solo una costante e il valore atteso di aj è semplicemente pj *; Inoltre, perché aj è 0 o 1, aj2 = aj e il suo valore atteso è anche pj *. La terza fase è l'algebra diretta. Per minimizzare la somma risultante, è chiaro che è meglio scegliere pj = pj * in modo che il termine quadrato scompare e tutto quello che resta è un termine che è solo la varianza della vera distribuzione che supera la classe effettiva.<br />
<br />
Minimizzare l'errore quadrato ha una lunga storia nei problemi di predizione. Nel contesto attuale, la funzione di perdita quadratica costringe il predittore ad essere onesti sulla scelta della sua migliore stima delle probabilità o, preferibilmente, dà la preferenza a predittori che sono in grado di fare la migliore indovinità alle probabilità reali. Inoltre, la funzione di perdita quadratica ha alcune proprietà teoriche utili che non entreremo qui. Per tutte queste ragioni è spesso usato come criterio di successo nelle situazioni probabilistiche di previsione.<br />
Funzione di perdita informativa<br />
<br />
Un altro criterio popolare per la valutazione della predittività probabilistica è la funzione di perdita informativa: <br />
<br />
<br />
- log 2 pi<br />
<br />
<br />
Dove la previsione ith è quella corretta. Questo è in realtà identico al negativo della funzione log-likelihood che è ottimizzata dalla regressione logistica descritta nella sezione 4.6. Rappresenta le informazioni (in bit) necessarie per esprimere la classe effettiva i rispetto alla distribuzione di probabilità p1, p2,. . . , Pk. In altre parole, se ti è stata data la distribuzione di probabilità e qualcuno doveva comunicarti a quale classe era quello che effettivamente si è verificato, questo è il numero di bit che la persona avrebbe bisogno di codificare le informazioni se lo hanno fatto in modo efficace possibile. (Certo, è sempre possibile utilizzare più bit.) Poiché le probabilità sono sempre meno di una, i loro logaritmi sono negativi e il segno meno indica il risultato positivo. Ad esempio, in una situazione di due classi - teste o code - con una probabilità uguale di ogni classe, il verificarsi di una testa richiederebbe un bit per trasmettere, perché -log21 / 2 è 1.<br />
<br />
Il valore atteso della funzione di perdita informativa, se le probabilità vere sono p1*, p2*,. . . , Pk*, è<br />
<br />
<br />
- p1*log2p1 - p2 log2p2 - . . . - pk*log2pk .<br />
<br />
<br />
Come la funzione di perdita quadratica, questa espressione viene minimizzata scegliendo pj = p *, nel qual caso l'espressione diventa l'entropia della vera distribuzione:<br />
<br />
<br />
<br />
- p1*log2p1* - p2 log2p2* - . . . - pk*log2pk*<br />
<br />
<br />
Quindi la funzione informativa di perdita ricompensa anche l'onestà nei predittori che conoscono le vere probabilità e incoraggia i predittori che non presentano la loro migliore ipotesi.<br />
La funzione di perdita informativa ha anche un'interpretazione di gioco in cui immagina il gioco d'azzardo sull'esito, mettendo le probabilità su ogni possibile classe e vincendo in base alla classe che si presenta. Le istanze successive sono come le scommesse successive: si riceve vittorie (o perdite) da una a quella successiva. Il logaritmo della somma totale del denaro che vincete su tutto il set di test è il valore della funzione di perdita informativa. Nel gioco d'azzardo, si paga per essere in grado di prevedere le probabilità il più esattamente possibile; In questo senso, anche l'onestà paga.<br />
<br />
Un problema con la funzione di perdita informativa è che se assegna una probabilità di zero a un evento che si verifica, il valore della funzione è minus infinito. Questo corrisponde a perdere la camicia quando gioca. I puntatori prudenti non scommettono mai tutto su un evento particolare, non importa quanto sia certo. Allo stesso modo, i predittori prudenti che operano sotto la funzione di perdita informativa non assegnano zero probabilità a qualsiasi risultato. Ciò porta a un problema quando non è disponibile alcuna informazione su quell'esito su cui basare una previsione: questo è chiamato problema a zero frequenza e sono state proposte varie soluzioni plausibili, come lo stimatore di Laplace discusso per Naïve Bayes a pagina 91.<br />
<h4>
Discusione</h4>
<br />
Se sei in attività di "valutazione delle previsioni" delle probabilità, quali delle due funzioni di perdita dovresti utilizzare? Questa è una buona domanda e non esiste una risposta universalmente concordata: è davvero una questione di gusto. Entrambi fanno il lavoro fondamentale atteso da una funzione di perdita: danno la massima remunerazione a predittori capaci di prevedere con precisione le probabilità reali. Tuttavia, ci sono alcune differenze oggettive tra i due che possono aiutare a formare un parere.<br />
La funzione di perdita quadratica tiene conto non solo della probabilità assegnata all'evento che si è verificato, ma anche delle altre probabilità. Ad esempio, in una situazione a quattro classi, supponiate di aver assegnato il 40% alla classe che è venuto effettivamente e distribuito il resto tra le altre tre classi. La perdita quadratica dipenderà da come lo hai distribuito a causa della somma del pj2 che si verifica nell'espressione data in precedenza per la funzione di perdita quadratica. La perdita sarà più piccola se il 60% è distribuito in modo uniforme tra le tre classi: una distribuzione irregolare aumenta la somma dei 'quadrati'. La funzione di perdita informativa, d'altra parte, dipende solo dalla probabilità assegnata alla classe che si è verificata. Se stai puntando che avvenga un evento particolare e accade, chi cura come hai distribuito il resto dei tuoi soldi tra gli altri eventi?<br />
<br />
Se assegna una probabilità molto piccola alla classe che si verifica, la funzione di perdita di informazioni penalizzerà in modo massiccio. La penalità massima, per una probabilità zero, è infinita. Il mondo dei giochi d'azzardo penalizza errori come questa duramente! La funzione di perdita quadratica, d'altra parte, è più mite, limitata da<br />
<br />
....<br />
<br />
che non può mai superare 2.<br />
Infine, i sostenitori della funzione di perdita informativa indicano una teoria generale della valutazione delle prestazioni nell'apprendimento denominata principio di lunghezza della descrizione minima (MDL). Essi sostengono che la dimensione delle strutture che un sistema impara può essere misurata in bit di informazioni e se le stesse unità vengono utilizzate per misurare la perdita, i due possono essere combinati in modi utili e potenti. Torneremo a questo in Sezione 5.9. <br />
<h4>
Contare il costo</h4>
<br />
Le valutazioni finora discusse non tengono conto del costo delle decisioni sbagliate, delle classificazioni sbagliate. L'ottimizzazione del tasso di classificazione senza considerare il costo degli errori spesso porta a risultati sconosciuti. In un caso, l'apprendimento automatico è stato utilizzato per determinare l'esatto giorno in cui ogni vacca in una mandria era in estrusione, o "in calore". Le mucche sono state identificate da etichette elettroniche auricolari e sono stati utilizzati vari attributi quali il volume del latte e le sostanze chimiche La composizione (registrata automaticamente da una macchina di mungitura ad alta tecnologia) e l'ordine di mungitura: le mucche sono bestie regolari e generalmente arrivano nello stesso capannone della capanna, tranne in circostanze insolite come l'estrusione. In una moderna operazione di latticini è importante sapere quando una mucca è pronta: gli animali vengono fecondati da una fecondazione artificiale e mancando un ciclo ritarderà inutilmente la sopravvivenza, causando complicazioni lungo la linea. Nei primi esperimenti, i metodi di apprendimento macchina avevano predetto ostinatamente che ogni mucca non era mai in estrusione. Come gli esseri umani, le mucche hanno un ciclo mestruale di circa 30 giorni, quindi questa regola "nul" è corretta del 97% del tempo - un grado impressionante di precisione in qualsiasi settore agricolo! Quello che era voluto, ovviamente, erano regole che prevedevano in modo più preciso la situazione "in estrusione" del "non in estrusione": i costi dei due tipi di errore erano diversi. La valutazione per precisione di classificazione tacitamente assume i costi di errore uguali.<br />
<br />
Altri esempi in cui gli errori contengano importi diversi includono decisioni di prestito: il costo del prestito ad un inadempimento è molto maggiore del costo perduto d'affari di rifiutare un prestito ad un nondefaulter. E l'analisi del petrolio: il costo di non rilevare una vera e propria vera e propria minaccia per l'ambiente è molto più grande del costo di un falso allarme. E la previsione del carico: il costo di preparare generatori di elettricità per una tempesta che non colpisce è molto inferiore al costo di essere catturato completamente impreparato. E la diagnosi: il costo di identificare erroneamente i problemi con una macchina che 'risulta essere priva' di errori è inferiore al costo di "affrontare problemi con uno" che sta per fallire. E mailing promozionali: il costo di invio di posta indesiderata a una famiglia che non risponde è molto inferiore al costo perduto d'affari di non inviarlo a una famiglia che avrebbe risposto. Perché-questi sono tutti gli esempi del Capitolo 1! In verità, sarebbe difficile trovare un'applicazione in cui i costi di diversi tipi di errore erano uguali.<br />
<br />
Nel caso a due classi con classi sì e no, prestiti o non prestiti, contrassegnare una patch sospetta come un olio sciolto o no, e così via, una singola previsione ha i quattro diversi risultati possibili mostrati nella tabella 5.3. I veri positivi (TP) ei veri negativi (TN) sono classificazioni corrette. Un falso positivo (FP) si verifica quando il risultato è in modo errato come sì (o positivo) quando in realtà non è (negativo). Un falso negativo (FN) si verifica quando l'esito viene erroneamente predetto come negativo quando è effettivamente positivo. La vera percentuale positiva è TP divisa per il numero totale di positivi, che è TP + FN; Il tasso falso positivo è FP diviso per il numero totale di negativi, FP + TN. Il tasso di successo complessivo è il numero di classificazioni corrette diviso per il numero totale di classificazioni:<br />
<br />
...<br />
<br />
Infine, il tasso di errore è uno meno questo.<br />
In una predizione multiclass, il risultato su un set di test è spesso visualizzato come una matrice di confusione bidimensionale con una riga e una colonna per ogni classe. Ogni elemento matrice mostra il numero di esempi di test per cui la classe effettiva è la riga e la classe prevista è la colonna. Buoni risultati corrispondono a grandi numeri lungo la diagonale principale e piccoli, idealmente zero, elementi fuori diagonale. La tabella 5.4 (a) mostra un esempio numerico con tre classi. In questo caso il set di test ha 200 istanze (la somma dei nove numeri nella matrice) e 88 + 40 + 12 = 140 sono predittivati correttamente, quindi la percentuale di successo è del 70%.<br />
<br />
Ma questa è una giusta misura del successo globale? Quanti accordi ci si aspetterebbe per caso? Questo predittore prevede un totale di 120 a, 60 b e 20 c; Cosa succede se avessi un predittivo casuale che prevedeva lo stesso numero totale delle tre classi? La risposta è mostrata nella Tabella 5.4 (b). La sua prima fila divide il 100 a nel set di test in queste proporzioni complessive e la seconda e la terza righe fanno la stessa cosa per le altre due classi. Naturalmente, i totali di riga e colonna per questa matrice sono gli stessi di prima che il numero di istanze non sia cambiato e abbiamo assicurato che il predittore casuale predice lo stesso numero di a, b e c come il predittore reale.<br />
<br />
Questo predittore casuale ottiene 60 + 18 + 4 = 82 istanze corrette. Una misura chiamata statistica Kappa prende in considerazione questa cifra attesa, deducendola dai successi del predittore e esprimendo il risultato come proporzione del totale per un predittore perfetto, per ottenere 140 - 82 = 58 successi aggiuntivi su un totale possibile di 200 - 82 = 118, o 49,2%. Il valore massimo di Kappa è 100% e il valore previsto per un predittore casuale con gli stessi totali della colonna è pari a zero. In sintesi, la statistica di Kappa è usata per misurare l'accordo tra le classificazioni previste e osservate di un set di dati, correggendo per l'accordo che si verifica per caso. Tuttavia, come il tasso di successo semplice, non tiene conto dei costi.<br />
<h4>
Classificazione dei costi</h4>
<br />
Se i costi sono noti, possono essere incorporati in un'analisi finanziaria del processo decisionale. Nel caso di due classi, in cui la matrice di confusione è come quella della tabella 5.3, i due tipi di errori: falsi positivi e falsi negativi avranno costi diversi; Allo stesso modo, i due tipi di classificazione corretta possono avere vantaggi diversi. Nel caso a due categorie, i costi possono essere riassunti sotto forma di una matrice di 2 x 2 in cui gli elementi diagonali rappresentano i due tipi di classificazione corretta e gli elementi off-diagonali rappresentano i due tipi di errore. Nel caso multiclasse si generalizza a una matrice quadrata la cui dimensione è il numero di classi e gli elementi diagonali rappresentano nuovamente il costo della classificazione corretta. La Tabella 5.5 (a) e (b) mostra le matrici di costo predefinite per i casi a due e tre categorie i cui valori semplicemente danno il numero di errori: i costi di miscelazione sono tutti 1.<br />
<br />
Prendendo in considerazione la matrice di costo sostituisce il tasso di successo con il costo medio (o, pensando più positivamente, il profitto) per decisione. Anche se non lo faremo qui, un'analisi finanziaria completa del processo decisionale potrebbe anche tenere conto del costo dell'utilizzo dello strumento di apprendimento macchina, compreso il costo della raccolta dei dati formativi, e il costo dell'utilizzo del modello o Struttura decisionale, che produce cioè il costo per determinare gli attributi per le istanze di prova. Se tutti i costi sono conosciuti e si può stimare il numero previsto dei diversi risultati della matrice dei costi, ad esempio con la convalida incrociata, è semplice eseguire questo tipo di analisi finanziaria.<br />
Dato una matrice di costo, è possibile calcolare il costo di un determinato modello appreso su un determinato set di test solo sommando gli elementi pertinenti della matrice di costo per la predizione del modello per ciascuna istanza di prova. Qui, i costi vengono ignorati quando fanno previsioni, ma vengono prese in considerazione durante la valutazione.<br />
<br />
Se il modello emette la probabilità associata a ciascuna predizione, può essere regolata per minimizzare il costo previsto delle previsioni. Dato un insieme di probabilità previste per ciascun risultato su una determinata istanza di prova, si seleziona normalmente l'esito più probabile. Invece, il modello potrebbe prevedere la classe con il più piccolo costo di misclassificazione previsto. Ad esempio, supponiamo che in una classe a tre classi il modello assegna le classi a, b e c ad un'istanza di prova con probabilità pa, pb e pc e la matrice di costo è quella nella tabella 5.5 (b).<br />
<br />
Se prevede a, il costo previsto della previsione viene ottenuto moltiplicando la prima colonna della matrice, [0,1,1], con il vettore di probabilità, [pa, pb, pc], dando pb + pc o 1 - Pa perché le tre probabilità sono pari a 1. Analogamente, i costi per la previsione delle altre due classi sono 1 - pb e 1 - pc. Per questa matrice di costo, scegliendo la previsione con il costo più basso previsto è lo stesso di scegliere quello con la massima probabilità. Per una diversa matrice di costi potrebbe essere diversa.<br />
<br />
Abbiamo assunto che il metodo di apprendimento produce probabilità, come fa Naïve Bayes. Anche se normalmente non producono probabilità, la maggior parte dei classificatori può essere facilmente adattata per calcolarle. Ad esempio in una struttura di decisione la distribuzione di probabilità per un'istanza di prova è solo la distribuzione delle classi alla corrispondente foglia.<br />
<h4>
Apprendimento sensibile ai costi</h4>
<br />
Abbiamo visto come un classificatore, costruito senza considerare i costi, può essere utilizzato per fare previsioni sensibili alla matrice dei costi. In questo caso, i costi vengono ignorati durante il periodo di addestramento ma utilizzati al tempo di previsione. Un'alternativa è fare il contrario: considerare la matrice dei costi durante il processo di formazione e ignorare i costi a tempo di previsione. In linea di principio, le prestazioni migliori potrebbero essere ottenute se il classificatore è stato adattato dall'algoritmo di apprendimento alla matrice dei costi.<br />
<br />
Nella situazione a due categorie, c'è un modo semplice e generale per rendere qualsiasi metodo di apprendimento sensibile ai costi. L'idea è di generare dati di formazione con una diversa proporzione di sì e senza istanze. Supponiamo di aumentare artificialmente il numero di casi senza un fattore di 10 e utilizzare il set di dati risultante per la formazione. Se lo schema di apprendimento si sforza di ridurre al minimo il numero di errori, verrà fornito una struttura di decisione che è biasata per evitare errori in nessun caso, in quanto tali errori sono effettivamente penalizzati 10 volte. Se i dati con la proporzione originale di nessuna istanza vengono utilizzati per il test, verranno meno errori rispetto a quelli di sì, cioè meno falsi positivi di falsi negativi, poiché i falsi positivi sono stati pesati 10 volte più pesante di Falsi negativi. La variazione della percentuale di istanze nel set di formazione è una tecnica generale per la costruzione di classificatori sensibili ai costi.<br />
<br />
Un modo per variare la percentuale di istanze di formazione è quello di duplicare istanze nel set di dati. Tuttavia, molti schemi di apprendimento consentono di ponderare i casi. (Come abbiamo detto nella sezione 3.2, questa è una tecnica comune per gestire i valori mancanti.) I pesi d'istanza vengono normalmente inizializzati a uno. Per costruire alberi sensibili ai costi, i pesi possono essere inizializzati al costo relativo dei due tipi di errore, falsi positivi e falsi negativi.<br />
<h4>
Grafici di sollevamento - Lift charts</h4>
<br />
In pratica, i costi sono raramente conosciuti con qualsiasi grado di precisione e la gente vuole riflettere su vari scenari. Immaginate di essere nel settore della spedizione diretta e stiate contemplando un messaggistica di massa di un'offerta promozionale a 1.000.000 famiglie, la maggior parte dei quali non risponderà, naturalmente. Diciamo che, sulla base di esperienze precedenti, la percentuale che risponde normalmente è nota per essere dello 0,1% (1000 rispondenti). Supponiamo che sia disponibile uno strumento per la data mining che, sulla base delle informazioni conosciute sulle famiglie, identifica un sottoinsieme di 100.000 per i quali il tasso di risposta è 0.4% (400 rispondenti). Può ben pagare per restringere l'esplosione a queste 100.000 famiglie - che dipende dal costo di spedizione rispetto al rendimento ottenuto per ogni risposta all'offerta. Nella terminologia di marketing, l'aumento del tasso di risposta, un fattore di quattro in questo caso, è conosciuto come il fattore di sollevamento reso dallo strumento di apprendimento. Se sapevi i costi, puoi determinare il versamento implicito da un determinato fattore di sollevamento.<br />
<br />
Ma probabilmente vuoi valutare anche altre possibilità. Lo stesso schema di data mining, con diverse impostazioni dei parametri, potrebbe essere in grado di identificare 400.000 famiglie per le quali il tasso di risposta sarà 0.2% (800 rispondenti), corrispondente a un fattore di sollevamento di due. Ancora una volta, se si tratti di un obiettivo più redditizio per la spedizione, è possibile calcolare i costi. Può essere necessario fatturare il costo della creazione e dell'utilizzo del modello, compresa la raccolta delle informazioni necessarie per ottenere i valori degli attributi. Dopo tutto, se lo sviluppo del modello è molto costoso, una mailing di massa può essere più conveniente di un target.<br />
<br />
Dato un metodo di apprendimento che esegue probabilità per la classe prevista di ciascun membro dell'insieme di istanze di test (come fa Naïve Bayes), il tuo lavoro è trovare sottoinsiemi di istanze di prova che dispongono di una percentuale elevata di istanze positive, superiori al test Insieme nel suo complesso. Per fare ciò, le istanze devono essere ordinate in ordine decrescente di probabilità prevista di sì. Quindi, per trovare un campione di una determinata dimensione con la massima percentuale possibile di istanze positive, basta leggere il numero richiesto di istanze fuori dall'elenco, a partire dalla parte superiore. Se è nota la classe di ogni classe di prova, è possibile calcolare il fattore di sollevamento semplicemente contando il numero di istanze positive che il campione include, dividendo per dimensione del campione per ottenere una proporzione di successo e dividendo per la proporzione di successo per il set completo di test per determinare Il fattore di sollevamento.<br />
<br />
La tabella 5.6 mostra un esempio per un piccolo set di dati con 150 istanze, di cui 50 sono risposte sommarie - una percentuale di successo complessiva del 33%. Le istanze sono state ordinate in ordine decrescente di probabilità in base alla probabilità prevista di una risposta in sì. La prima istanza è quella che il piano di apprendimento pensa è più probabile che sia positivo, il secondo è il più probabile e così via. I valori numerici delle probabilità sono irrilevanti: il rango è l'unica cosa che conta. Con ogni rango viene data la classe effettiva dell'istanza. Quindi il metodo di apprendimento era giusto per gli articoli 1 e 2 - sono effettivamente positivi - ma sbagliati circa il punto 3, che si è rivelato negativo. Ora, se cercavi il campione più promettente della dimensione 10, ma conosceva solo le probabilità previste e non le classi effettive, la tua scommessa migliore sarebbe stata la top ten classi di classifica. Otto di questi sono positivi, quindi la percentuale di successo di questo campione è dell'80%, corrispondente a un fattore di sollevamento di quattro.<br />
<br />
Se sapevi i diversi costi coinvolti, puoi elaborarli per ogni dimensione del campione e scegliere il più redditizio. Ma una rappresentazione grafica delle "diverse possibilità" spesso sarà molto più rivelante che presentare una sola decisione "ottimale". Ripetendo l'operazione precedente per campioni di dimensioni diverse, è possibile tracciare un diagramma di sollevamento come quello di Figura 5.1. L'asse orizzontale mostra la dimensione del campione in percentuale del totale possibile. L'asse verticale mostra il numero di risposte ottenute. I punti a destra in basso a sinistra e in alto corrispondono a nessuna affrancatura, con una risposta di 0 e uno spostamento completo con una risposta di 1000. La linea diagonale fornisce il risultato previsto per i campioni casuali differenziati. Ma non scegliamo campioni casuali; Scegliamo quelle istanze che, secondo lo strumento di data mining, sono molto probabili generare una risposta positiva. Queste corrispondono alla linea superiore, che viene ricavata dalla somma delle risposte reali sulla percentuale corrispondente dell'elenco di istanze ordinato in ordine di probabilità. I due scenari particolari descritti in precedenza sono contrassegnati: uno scadenzario del 10% che produce 400 intervistati e un 40% quello che produce 800.<br />
<br />
Dove ti piacerebbe essere in una tabella di sollevamento è vicino all'angolo superiore sinistro: nel migliore dei casi, 1000 risposte da un posteggio di appena 1000, dove inviate solo a quelle famiglie che risponderanno e ricompensate con un 100 % tasso di successo. Qualsiasi procedura di selezione degna del nome ti terrà sopra la diagonale, altrimenti avrai una risposta che era peggiore che per il campionamento casuale. Quindi la parte operativa del diagramma è il triangolo superiore e "più lontano" a nord-ovest meglio.<br />
<h4>
ROC curves</h4>
<br />
I diagrammi di sollevamento sono uno strumento prezioso, ampiamente utilizzato nel marketing. Sono strettamente legati a una tecnica grafica per la valutazione di schemi di data mining conosciuti come curve ROC, utilizzati nella stessa situazione del precedente, in cui lo studente cerca di selezionare campioni di istanze di prova che hanno una elevata percentuale di positivi . L'acronimo rappresenta la caratteristica operativa del ricevitore, un termine usato per rilevare i segnali per caratterizzare il compromesso tra il tasso di successo e la falsa percentuale di allarme su un canale rumoroso. Le curve ROC rappresentano le prestazioni di un classificatore senza tener conto dei costi di distribuzione o di errore di classe. Esse tracciano il numero di positivi inclusi nel campione sull'asse verticale, espressi in percentuale del numero totale di positivi, contro il numero di negativi inclusi nel campione, espressi in percentuale del numero totale di negativi, sull'orizzonte orizzontale asse. L'asse verticale è lo stesso di quello della tabella di sollevamento, salvo che si esprime come percentuale. L'asse orizzontale è un numero leggermente diverso di negativi piuttosto che di dimensioni del campione. Tuttavia, nelle situazioni di marketing diretto in cui la percentuale di positivi è comunque molto piccola (pari allo 0,1%), vi è una differenza trascurabile tra la dimensione di un campione e il numero di negativi che contiene, per cui la curva ROC e il diagramma di aspirazione sono molto simili . Come con i diagrammi di sollevamento, l'angolo nord-occidentale è il posto dove stare. <br />
<br />
La Figura 5.2 mostra una curva ROC di esempio - la linea frastagliata - per il campione dei dati di prova nella tabella 5.6. Puoi seguirlo insieme al tavolo. Dall'origine, salite due (due positivi), uno (uno negativo), cinque (cinque positivi), uno (uno negativo), uno su uno, uno lungo, due e così via. Ogni punto corrisponde a disegnare una linea in una certa posizione nell'elenco classificato, contando il sì e il no sopra di esso e tracciandoli rispettivamente verticalmente e orizzontalmente. Mentre si va più in basso l'elenco, corrispondente ad un campione più grande, il numero di positivi e negativi aumenta.<br />
<br />
La linea ROC frastagliata nella Figura 5.2 dipende intimamente dai dettagli del particolare campione dei dati di prova. Questa dipendenza dal campione può essere ridotta applicando la convalida incrociata. Per ogni numero diverso di no, cioè ogni posizione lungo l'asse orizzontale, prendi appena sufficienti le istanze più alte per includere quel numero di no e contano il numero di sì che contengono. Infine, il numero medio di quel numero su diverse pieghe della convalida incrociata. Il risultato è una curva liscia come quella della Figura 5.2, anche se in realtà tali curve non sembrano in genere abbastanza lisce. Questo è solo un modo di utilizzare la convalida incrociata per generare curve ROC. Un approccio più semplice è quello di raccogliere le probabilità previste per tutti i vari gruppi di test (di cui 10 sono in una convalida incrociata di 10 volte), unitamente alle etichette di classe reali delle istanze corrispondenti e generare un unico elenco classificato basato su Questi dati. Ciò presuppone che le stime di probabilità dei classificatori costruite dai diversi set di addestramento siano tutte basate su campioni casuali di dimensioni uguali dei dati. Non è chiaro quale metodo sia preferibile. Tuttavia, questo metodo è più semplice da implementare.<br />
<br />
Se lo schema di apprendimento non consente di ordinare le istanze, è possibile innanzitutto renderlo sensibile ai costi come descritto in precedenza. Per ciascuna piega di una convalida incrociata di 10 volte, pesare le istanze per una selezione di rapporti di costo differenti, addestrare lo schema su ciascun insieme ponderato, contare i veri e positivi e falsi positivi nel set di test e tracciare il punto risultante sulla Assi ROC. (Non importa se il set di test è ponderato o meno perché gli assi nello schema ROC sono espressi come percentuale di veri e falsi positivi.) Tuttavia, per i classificatori probabilistici a rischio di natura intrinseca quali Naïve Bayes è molto di più Costoso rispetto al metodo descritto in precedenza perché coinvolge un problema di apprendimento distinto per ogni punto della curva.<br />
<br />
È istruttivo osservare le curve ROC incrociate convalidate ottenute utilizzando metodi di apprendimento diversi. Ad esempio, nella figura 5.3, il metodo A eccelle se si cerca un piccolo campione concentrato; Ovvero, se si sta lavorando verso il lato sinistro del grafico. Chiaramente, se si mira a coprire solo il 40% dei positivi validi si dovrebbe scegliere il metodo A, che dà un tasso falso positivo di circa il 5%, piuttosto che il metodo B, che dà più del 20% falsi positivi. Ma il metodo B eccelle se si sta progettando un grande esempio: se si copre l'80% dei positivi reali, il metodo B dà una falsa percentuale positiva del 60% rispetto all'80% del metodo A. L'area ombreggiata è chiamata scafo convesso delle due curve e si dovrebbe sempre operare in un punto che si trova sul limite superiore dello scafo convesso.<br />
<br />
E la regione al centro in cui né il metodo A né il metodo B si trovano sullo scafo convesso? È un fatto notevole che si può arrivare ovunque nella regione ombreggiata combinando i metodi A e B e li usando a caso con opportune probabilità. Per vedere questo, scegliere una cedola di probabilità particolare per il metodo A che fornisce veri e falsi positivi tassi di tA e fA, rispettivamente, e un altro cutoff per il metodo B che dà tB e fB. Se si usano questi due schemi a caso con probabilità p e q, dove p + q = 1, allora si otterranno tassi veri e falsi positivi di p.tA + q.tB e p.fA + q.fB Questo rappresenta un punto che si trova sulla linea retta che unisce i punti (tA, fA) e (tB, fB), e variando p e q è possibile tracciare l'intera riga tra questi due punti. Utilizzando questo dispositivo è possibile raggiungere l'intera area ombreggiata. Solo se un particolare schema genera un punto che si trova sullo scafo convesso dovrebbe essere usato da solo: altrimenti, sarebbe sempre meglio utilizzare una combinazione di classificatori corrispondenti a un punto che si trova sullo scafo convesso.<br />
<br />
Curve di richiamo-precisioneLa gente si è aggrappata al compromesso fondamentale illustrato da diagrammi di sollevamento e curve ROC in una vasta gamma di domini. Il recupero delle informazioni è un buon esempio. Dato una query, un motore di ricerca Web produce un elenco di colpi che rappresentano documenti che sembrano rilevanti per la query. Confronti un sistema che individua 100 documenti, di cui 40 rilevanti, con un'altra che individua 400 documenti, di cui 80 rilevanti. Che è migliore? La risposta dovrebbe essere ovvia: dipende dal costo relativo dei falsi positivi, dai documenti restituiti che non sono rilevanti e dalle false negative, documenti rilevanti che non vengono restituiti. I ricercatori del recupero delle informazioni definiscono i parametri chiamati richiamo e precisione:<br />
<br />
....<br />
<br />
Ad esempio, se l'elenco di sì e di no nella tabella 5.6 rappresentava un elenco classificato dei documenti recuperati e se fosse rilevante o meno, e l'intera raccolta conteneva un totale di 40 documenti rilevanti, allora "richiamo a 10" indica il richiamo Per i primi dieci documenti, vale a dire 8/40 = 5%; Mentre "precisione a 10" sarebbe 8/10 = 80%. Gli esperti del recupero di informazioni usano le curve di richiamo di precisione che tracciano uno contro l'altro, per diversi numeri di documenti recuperati, allo stesso modo delle curve ROC e dei diagrammi di sollevamento, tranne perché gli assi sono diversi, le curve sono forme iperboliche e la desiderata Il punto operativo è verso destra in alto. <br />
Discusione<br />
<br />
La Tabella 5.7 riassume i tre diversi modi in cui abbiamo incontrato per valutare lo stesso compromesso di base; TP, FP, TN e FN sono il numero di positivi, falsi positivi, veri negativi e falsi negativi. Si desidera scegliere un insieme di istanze con una elevata percentuale di istanze di sì e un'elevata copertura delle istanze di sì: è possibile aumentare la percentuale (conservativamente) utilizzando una copertura minore, o (liberamente) aumentare la copertura a scapito della proporzione. Diverse tecniche danno diversi compromessi, e possono essere tracciati come linee diverse su uno di questi "grafici".<br />
<br />
<br />
Le persone cercano anche misure singole che caratterizzano le prestazioni. Due che sono utilizzati nel recupero delle informazioni sono il richiamo medio di 3 punti, che dà la precisione media ottenuta dai valori di richiamo del 20%, del 50% e dell'80% e del richiamo medio di 11 punti, che dà la precisione media ottenuta a valori di richiamo Di 0%, 10%, 20%, 30%, 40%, 50%, 60%, 70%, 80%, 90% e 100%. Utilizzato anche nel recupero delle informazioni è la misura F, che è:<br />
<br />
......<br />
<br />
Diversi termini vengono utilizzati in diversi domini. I medici, per esempio, parlano della sensibilità e della specificità dei test diagnostici. La sensibilità si riferisce alla percentuale di persone con malattia che hanno un risultato positivo, cioè tp. La specificità si riferisce alla percentuale di persone senza malattia che hanno un risultato negativo di test, che è 1 - fp. A volte il prodotto di questi è utilizzato come misura globale: <br />
<br />
Per riassumere le curve di ROC in una sola quantità, le persone utilizzano talvolta l'area sotto la curva (AUC) perché, approssimativamente, più grande è l'area, migliore è il modello. L'area ha anche una bella interpretazione come la probabilità che il classificatore classifichi un'istanza positiva scelta casualmente sopra un negativo casualmente scelto. Sebbene tali misure possano essere utili se i costi e le distribuzioni di classi non sono sconosciute e si deve scegliere un metodo per gestire tutte le situazioni, nessun singolo numero è in grado di catturare il compromesso. Ciò può essere effettuato solo con rappresentazioni bidimensionali come diagrammi di sollevamento, curve ROC e diagrammi di "richiamo-precisione".<br />
<h4>
Costo delle curve - Cost curves</h4>
<br />
Le curve ROC ei loro parenti sono molto utili per esplorare i compromessi tra i diversi classificatori su una vasta gamma di costi. Tuttavia, non sono ideali per valutare i modelli di apprendimento macchina in situazioni con costi di errori noti. Ad esempio, non è facile leggere il costo previsto di un classificatore per una matrice dei costi fissi e la distribuzione di classi. Né è possibile determinare facilmente gli intervalli di applicabilità di diversi classificatori. Ad esempio, dal punto di crossover tra le due curve ROC della Figura 5.3, è difficile capire quale costo e classi distributori di classe A superano il classificatore B.<br />
Le curve dei costi sono un tipo di visualizzazione diverso su cui un singolo classificatore corrisponde a una retta che mostra come le prestazioni variano come la distribuzione della classe cambia. Di nuovo, funzionano meglio nel caso di due classi, anche se si può sempre fare un problema multiclass in una classe a due classi individuando una classe e valutandola contro i restanti.<br />
<br />
La Figura 5.4 (a) elabora l'errore atteso rispetto alla probabilità di una delle classi. Potresti immaginare di regolare questa probabilità ripubblicando il set di test in modo non uniforme. Dichiariamo le due classi usando + e -. Le diagonali mostrano le prestazioni di due classificatori estremi: uno prevede sempre +, dando un errore previsto di uno se il set di dati non contiene istanze + e zero se tutte le sue istanze sono +; L'altro predice sempre - dando le prestazioni opposte. La linea orizzontale tratteggiata mostra le prestazioni del classificatore che è sempre sbagliato e l'asse X stesso rappresenta il classificatore sempre corretto. In pratica, naturalmente, nessuna di queste è realizzabile. I buoni classificatori hanno bassi tassi di errore, quindi dove si desidera essere è il più possibile vicino alla parte inferiore del diagramma.<br />
<br />
La linea contrassegnata rappresenta il tasso di errore di un determinato classificatore. Se calcoli le sue prestazioni su un determinato set di test, la sua falsa positiva fp è il suo errore previsto su un sottomenu del set di test che contiene solo esempi negativi (p [+] = 0) e la sua falsa fonte negativa fn è l'errore su un sottogruppo che contiene solo esempi positivi (p [+] = 1). Questi sono i valori delle intercettazioni rispettivamente a sinistra ea destra. È possibile vedere immediatamente dalla trama che se p [+] è più piccolo di circa 0,2, il predittore A è sovraperformato dal classificatore estremo che predice sempre - e se è maggiore di circa 0,65, l'altro classificatore estremo è meglio.<br />
<br />
<br />
Figure 5.4 (continued)<br />
<br />
<br />
Finora non abbiamo tenuto conto dei costi, o meglio abbiamo utilizzato la matrice di costo predefinita in cui tutti gli errori costano lo stesso. Le curve dei costi, che prendono in considerazione i costi, sembrano molto simili, molto simili, ma gli assi sono diversi. La Figura 5.4 (b) mostra una curva dei costi per lo stesso classificatore A (si noti che la scala verticale è stata ingrandita, per comodità e per ora ignora le linee grigie). Essa compone il costo atteso dell'utilizzo di A contro la funzione di costo di probabilità, che è una versione distorta di p [+] che conserva gli stessi estremi: zero quando p [+] = 0 e uno quando p [+] = 1. Denota da C [+ | -] il costo di predizione + quando l'istanza è in realtà -, e il contrario di C [- | +]. Quindi gli assi della Figura 5.4 (b) sono:<br />
<br />
......<br />
<br />
<br />
Supponiamo qui che le previsioni corrette non hanno alcun costo: C [+ | +] = C [- | -] = 0. Se non è così, le formule sono un po 'più complesse. Il valore massimo che il costo previsto normalizzato può avere è 1 e per questo è "normalizzato". Una cosa bella delle curve dei costi è che i valori di costo estremo ai lati sinistro e destro del grafico sono fp e fn, proprio come Sono per la curva di errore, in modo da poter disegnare la curva dei costi per qualsiasi classificatore molto facilmente.<br />
La Figura 5.4 (b) mostra anche il classificatore B, il cui costo previsto rimane lo stesso in tutta la gamma, vale a dire che le sue false posizioni positive e false sono negative. Come potete vedere, supera la classificatrice A se la funzione di costo di probabilità supera circa 0,45 e conosce i costi che potremmo facilmente risolvere ciò che corrisponde a quello della distribuzione di classi. In situazioni che implicano diverse distribuzioni di classi, le curve dei costi rendono facile indicare quando un classificatore supererà un'altra.<br />
<br />
In quali circostanze questo potrebbe essere utile? Per ritornare all'esempio di predizione quando le mucche saranno in estrusione, il loro ciclo di 30 giorni, o una probabilità di 1/30 probabilmente, non è probabile che variano notevolmente (bloccando un cataclismo genetico!). Ma una mandria particolare può avere proporzioni diverse di mucche che potrebbero raggiungere estrusione in una qualsiasi settimana, forse sincronizzata con chi chiede la fase della luna. Quindi, classificatori diversi sarebbero appropriati in tempi diversi. Nell'esempio di perdita di petrolio, i diversi lotti di dati possono avere diverse probabilità di fuoriuscita. In queste situazioni le curve dei costi possono aiutare a mostrare quale classifier utilizzare quando. Ogni punto su un diagramma di sollevamento, la curva ROC o la curva di precisione di richiamo rappresenta un classificatore, normalmente ottenuto utilizzando valori di soglia diversi per un metodo come Naïve Bayes. Le curve dei costi rappresentano ogni classificatore utilizzando una linea retta e una serie di classificatori spazzano una busta curva il cui limite inferiore mostra come bene il tipo di classificatore può fare se il parametro è ben scelto. La Figura 5.4 (b) indica questo con alcune righe grigie. Se il processo fosse continuato, spazzarebbe la curva parabolica punteggiata.<br />
<br />
La regione operativa del classificatore B varia da un valore di costo di probabilità di circa 0,25 a un valore di circa 0,75. Al di fuori di questa regione, il classificatore B è sovraperformato dai classificatori triviali rappresentati da linee tratteggiate. Supponiamo di decidere di utilizzare il classificatore B all'interno di questo intervallo e il classifico appropriato di classificazione sotto e sopra. Tutti i punti della parabola sono sicuramente migliori di questo schema.<br />
Ma quanto meglio? È difficile rispondere a tali domande da una curva ROC, ma la curva dei costi li rende facili. La differenza di prestazioni è trascurabile se il valore di costo di probabilità è di circa 0,5, e sotto un valore di circa 0,2 e più di 0,8, è appena percepibile. La differenza maggiore si verifica a valori di costo di probabilità di 0,25 e 0,75 ed è di circa 0,04, o 4% del costo massimo possibile.<br />
<h4>
Valutazione della previsione numerica</h4>
<br />
Tutte le misure di valutazione che abbiamo descritto riguardano situazioni di classificazione piuttosto che situazioni numeriche di previsione. I principi di base - utilizzando un set di test indipendente anziché il set di formazione per la valutazione delle prestazioni, il metodo di holdout e la convalida incrociata - si applicano ugualmente bene alla previsione numerica. Ma la misura di qualità di base offerta dal tasso di errore non è più appropriata: gli errori non sono semplicemente presenti o assenti; Sono disponibili in diverse dimensioni.<br />
Diverse misure alternative, riepilogate nella tabella 5.8, possono essere utilizzate per valutare il successo della previsione numerica. I valori previsti sulle istanze di prova sono p1, p2,. . ., Pn; I valori effettivi sono a1, a2,. . ., un. Si noti che pi significa qualcosa di molto diverso da quello che ha fatto nell'ultima sezione: c'era la probabilità che una particolare previsione fosse nella classe i; Qui si riferisce al valore numerico della predizione per l'istanza del test i.<br />
<br />
L'errore medio-quadrato è la misura principale e più comunemente utilizzata; A volte la radice quadrata viene presa per dare le stesse dimensioni del valore previsto. Molte tecniche matematiche (come la regressione lineare, spiegate nel capitolo 4) utilizzano l'errore medio-quadrato perché tende ad essere la misura più semplice da manipolare matematicamente: è, come dicono i matematici, "ben comportato". Tuttavia, qui stiamo considerando Come misura di prestazione: tutte le misure di prestazioni sono facili da calcolare, quindi l'errore medio-quadrato non ha alcun vantaggio particolare. La domanda è, è una misura appropriata per il compito a portata di mano?<br />
L'errore assoluto medio è un'alternativa: solo la media dell'ampiezza degli errori individuali senza tenere conto del loro segno. L'errore medio-quadrato tende ad esagerare l'effetto degli outlier - istanze il cui errore di predizione è più grande degli altri - ma l'errore assoluto non ha questo effetto: tutte le dimensioni di errore vengono trattate in modo uniforme in base alla loro grandezza.<br />
<br />
A volte sono i valori relativi piuttosto che assoluti degli errori ad avere importanza. Ad esempio, se un errore del 10% è altrettanto importante se si tratta di un errore di 50 in una previsione di 500 o di un errore di 0,2 in una predizione di 2, allora le medie di errore assoluto saranno prive di significato: gli errori relativi sono appropriati. Questo effetto sarebbe stato preso in considerazione utilizzando gli errori relativi nel calcolo degli errori medio-quadrato o nel calcolo dell'errore assoluto medio.L'errore relativo quadrato nella tabella 5.8 si riferisce a qualcosa di diverso. L'errore viene fatto rispetto a quello che sarebbe stato se fosse stato utilizzato un semplice predittore. Il semplice predittore in questione è solo la media dei valori reali dei dati formativi. Quindi l'errore quadrato relativo assume l'errore totale quadrato e normalizza la suddivisione per l'errore totale quadrato del predittore predefinito.<br />
<br />
La prossima misura di errore va dal nome glorioso dell'errore assoluto relativo e è solo l'errore assoluto totale, con lo stesso tipo di normalizzazione. In queste tre misure di errore relative, gli errori vengono normalizzati dall'errore del semplice predittore che prevede valori medi.<br />
La misura finale nella tabella 5.8 è il coefficiente di correlazione, che misura la correlazione statistica tra l'a e il p. Il coefficiente di correlazione varia da 1 a risultati perfettamente correlati, a 0 se non c'è correlazione, a -1 quando i risultati sono perfettamente correlati negativamente. Naturalmente, i valori negativi non dovrebbero verificarsi per i metodi di previsione ragionevoli. La correlazione è leggermente diversa dalle altre misure perché è indipendente dalla scala in quanto, se si prende un particolare insieme di previsioni, l'errore è invariato se tutte le previsioni sono moltiplicate per un fattore costante ei valori reali sono rimasti invariati. Questo fattore appare in ogni termine di SPA nel numeratore e in ogni termine di SP nel denominatore, eliminando così. (Questo non è vero per le figure di errore relative, nonostante la normalizzazione: se moltiplichi tutte le previsioni con una grande costante, allora la differenza tra i valori previsti e quelli effettivi cambia drasticamente, così come gli errori percentuali.).È anche diverso in quanto le buone prestazioni portano ad un grande valore del coefficiente di correlazione, mentre perché gli altri metodi misurino l'errore, le buone prestazioni sono indicate da piccoli valori.<br />
<br />
Quale di queste misure è appropriato in una determinata situazione è una questione che può essere determinata solo studiando l'applicazione stessa. Cosa cerchiamo di ridurre al minimo? Qual è il costo di diversi tipi di errore? Spesso non è facile decidere. Gli errori quadrati e le misure di errore a radice quadrata pesano le grandi discrepanze molto più pesanti di quelle minori, mentre le misure di errore assoluto non lo fanno. Prendendo la radice quadrata (errore medio radice quadrato) riduce la figura per avere la stessa dimensionalità di quella prevista. Le cifre di errore relative cercano di compensare la predizione o l'imprevedibilità di base della variabile di output: se tende a trovarsi abbastanza vicino al suo valore medio, allora si prevede che la previsione sia buona e la relativa cifra compensa. Altrimenti, se l'errore in una situazione è molto maggiore di quello in un'altra situazione, può essere perché la quantità nella prima situazione è inerentemente più variabile e quindi più difficile da prevedere, non perché il predittore è peggiore.<br />
<br />
Fortunatamente, risulta che nella maggior parte delle situazioni pratiche il miglior metodo di previsione numerico "è ancora" il migliore, non importa quale misura di errore viene utilizzata. Ad esempio, la Tabella 5.9 mostra il risultato di quattro diverse tecniche di previsione numerica su un determinato set di dati, misurato utilizzando la convalida incrociata. Il metodo D è il migliore secondo tutte e cinque le metriche: ha il valore più piccolo per ogni misura di errore e il più grande coefficiente di correlazione. Il metodo C è il secondo migliore di tutte e cinque le metriche. Le prestazioni dei metodi A e B sono aperte alla controversia: hanno il medesimo coefficiente di correlazione, il metodo A è migliore del metodo B in base agli errori medio-quadrati e relativi a quadrato e il contrario è vero sia per l'assoluto assoluto che per il relativo errore assoluto. È probabile che l'enfasi extra che l'operazione di quadratura dà agli outlier tenga conto delle differenze in questo caso. Quando si confrontano due diversi schemi di apprendimento che prevedono previsioni numeriche, si applica ancora la metodologia sviluppata nella Sezione 5.5. L'unica differenza è che il tasso di successo viene sostituito dalla misura di prestazione appropriata (ad esempio, errore medio medio quadrato) durante l'esecuzione del test di significato.<br />
<h4>
Il principio di lunghezza della descrizione minima</h4>
<br />
Ciò che viene appreso da un metodo di apprendimento macchina è una sorta di "teoria" del dominio da cui vengono tracciati gli esempi, una teoria predittiva in quanto è in grado di generare nuovi fatti sul dominio, in altre parole, la classe di Istanze non visibili. La teoria è un termine piuttosto grandioso: lo usiamo qui solo nel senso di un modello predittivo. Così le teorie potrebbero comprendere alberi decisionali o regole - non devono essere più "teorici" di quello.C'è una lunga tradizione nella scienza che, altre cose essendo uguali, le teorie semplici sono preferibili a quelle complesse. Questo è noto come il rasoio di Occam dopo il filosofo medioevale William of Occam (o Ockham). Il rasoio di Occam raschia i capelli filosofici da una teoria. L'idea è che la migliore teoria scientifica è quella più piccola che spiega tutti i fatti. Come Albert Einstein è reputato di aver detto: "Tutto dovrebbe essere fatto il più semplice possibile, ma non più semplice". Naturalmente, molto si nasconde nella frase "altre cose sono uguali" e "può essere difficile" Valutare oggettivamente se una particolare teoria davvero "spiega" tutti i fatti su cui si basa è ciò che riguarda la polemica in materia di scienza.<br />
<br />
Nel nostro caso, nell'apprendimento della macchina, la maggior parte delle teorie fa degli errori. Se ciò che viene appreso è una teoria, allora gli errori che fanno sono come eccezioni alla teoria. Un modo per assicurare che altre cose siano uguali è quello di insistere sul fatto che le informazioni incluse nelle eccezioni sono incluse come parte della teoria quando viene giudicata la sua "semplicità". Immagina una teoria imperfetta per la quale esista qualche eccezione. Non tutti i dati sono spiegati con la teoria, ma la maggior sì. Quello che facciamo è semplicemente associare le eccezioni alla teoria, specificandole esplicitamente come eccezioni. Questa nuova teoria è più grande: è un prezzo che, giustamente, deve essere pagato per la sua incapacità di spiegare tutti i dati. Tuttavia, può essere che la semplicità - è troppo 'chiamarlo' eleganza? - della teoria originale è sufficiente a superare il fatto che non spiega in modo completo tutto rispetto a una grande teoria barocca più completa e accurata.<br />
<br />
Ad esempio, se le tre leggi del moto planetario di Kepler non avessero al momento considerato i dati conosciuti abbastanza bene come l'ultima raffinatezza di Copernico della teoria ptolemaica di epicicli, avevano il vantaggio di essere molto meno complessi e avrebbe giustificato qualsiasi Leggera inaccuratezza apparente. Kepler era ben consapevole dei vantaggi di avere una teoria che era compatta, nonostante il fatto che la sua teoria abbia violato il suo senso estetico perché dipende da "ovali" piuttosto che da un movimento circolare puro. Lo ha espresso in una metafora forte: "Ho rimosso le scuderie di astronomia di cicli e spirali, e mi hanno lasciato solo un solo caricatore di sterco".<br />
<br />
La lunghezza della descrizione minima o il principio MDL assume la posizione che la migliore teoria per un corpo di dati è quella che minimizza la dimensione della teoria più la quantità di informazioni necessarie per specificare le eccezioni relative alla teoria: il più piccolo caricatore di sterco. Nella teoria della stima statistica, questo è stato applicato con successo a vari problemi di montaggio dei parametri. Esso si applica all'applicazione della macchina come segue: dato un insieme di istanze, un metodo di apprendimento infra una teoria - sia mai così semplice; Indegna, forse, per essere chiamata "teoria" - da loro. Utilizzando una metafora di comunicazione, immaginate che le istanze siano trasmesse attraverso un canale rumoroso. Qualsiasi somiglianza rilevata tra di loro può essere sfruttata per dare una codifica più compatta. Secondo il principio MDL, la migliore generalizzazione è quella che minimizza il numero di bit richiesti per comunicare la generalizzazione, insieme agli esempi da cui è stata fatta. <br />
<br />
Ora la connessione con la funzione di perdita informativa introdotta nella sezione 5.6 dovrebbe cominciare a emergere. Questa funzione misura l'errore in termini di numero di bit richiesti per trasmettere le istanze, dato le previsioni probabilistiche fatte dalla teoria. Secondo il principio MDL dobbiamo aggiungere a questo la "dimensione" della teoria in bit, opportunamente codificata, per ottenere una figura complessiva per la complessità. Tuttavia, il principio MDL si riferisce alle informazioni necessarie per trasmettere gli esempi da cui è stata formata la teoria, cioè le istanze di formazione - non un set di test. Il problema di overfitting è evitato perché una teoria complessa che sovrasta sarà penalizzata rispetto a quella semplice in virtù del fatto che occorrono più bit da codificare. Ad un estremo è una teoria molto complessa e altamente overfitted che non fa errori sul set di allenamento. Dall'altro è una teoria molto semplice - la teoria nullo - che non aiuta affatto quando trasmette il set di allenamento. E tra di loro sono teorie di complessità intermedia, che fanno previsioni probabilistiche imperfette e devono essere corrette trasmettendo alcune informazioni sul set di formazione. Il principio MDL fornisce un mezzo per confrontare tutte queste possibilità su un piano uguale per vedere quale è il migliore. Abbiamo trovato il graal sacro: uno schema di valutazione che funziona solo sul set di formazione e non ha bisogno di un set di test separato. Ma il diavolo è nei dettagli, come vedremo.<br />
<br />
Supponiamo che un metodo di apprendimento abbia una teoria T basata su un set di formazione E di esempi, che richiede un certo numero di bit L [T] da codificare (L per lunghezza). Data la teoria, il set di allenamento può essere codificato in un certo numero di bit, L [E | T]. L [E | T] è infatti data dalla funzione di perdita informativa sommata su tutti i membri del set di allenamento. Quindi la lunghezza totale della teoria della descrizione e il set di formazione è <br />
<br />
L[T ] + L[E T ]<br />
<br />
<br />
<br />
<br />
<br />
E il principio MDL consiglia di scegliere la teoria T che minimizza questa somma.<br />
Esiste una notevole connessione tra il principio MDL e la teoria di probabilità di base. Dato un insieme di allenamento E, cerchiamo la teoria "più probabile" T, cioè la teoria per la quale la probabilità a posteriori probabilità Pr [T | E] - la probabilità dopo che gli esempi sono stati visti - viene massimizzata. La regola di probabilità condizionale di Bayes, la stessa regola che abbiamo incontrato nella sezione 4.2, lo impone <br />
<br />
......<br />
<br />
Taking negative logarithms, <br />
<br />
- log Pr[T E ] = - log Pr[E T ] - log Pr[T ] + log Pr[E ].<br />
<br />
<br />
Massimizzare la probabilità è uguale a minimizzare il suo logaritmo negativo. Ora (come abbiamo visto nella sezione 5.6) il numero di bit richiesti per codificare qualcosa è solo il logaritmo negativo della sua probabilità. Inoltre, il termine finale, log Pr [E], dipende esclusivamente dal set di formazione e non dal metodo di apprendimento. Scegliendo la teoria che massimizza la probabilità Pr [T | E] equivale a scegliere la teoria che minimizza<br />
<br />
<br />
L[E T ] + L[T ]<br />
<br />
<br />
in altre parole, il principio MDL!/<br />
<br />
Questa sorprendente corrispondenza con la nozione di massimizzare la probabilità posteriore di una teoria dopo la formazione è stata presa in considerazione dà credito al principio MDL. Ma mette anche in evidenza dove i problemi si spuntano quando il principio MDL viene applicato in pratica. La difficoltà di applicare direttamente la regola di Bayes è quella di trovare un'adeguata distribuzione di probabilità Pr [T] per la teoria. Nella formulazione MDL, ciò si traduce nel trovare come codificare la teoria T in bit nel modo più efficiente. Ci sono molti modi per codificare le cose, e tutti dipendono da presupposti che devono essere condivisi da encoder e decoder. Se si conosce in anticipo che la teoria sta per prendere una certa forma, è possibile utilizzare queste informazioni per codificarlo in modo più efficiente. Come stai per realmente codificare T? Il diavolo è nei dettagli.<br />
<br />
Codifica E rispetto a T per ottenere L [E | T] sembra un po 'più "diretto": abbiamo già incontrato la funzione informativa di perdita. In realtà, quando codifica un membro del set di allenamenti dopo l'altro, stai codificando una sequenza anziché un set. Non è necessario trasmettere il set di formazione in un particolare ordine, e dovrebbe essere possibile utilizzare tale fatto per ridurre il numero di bit richiesti. Spesso, questo viene semplicemente approssimato sottraendo log n! (Dove n è il numero di elementi in E), che è il numero di bit necessari per specificare una particolare permutazione del set di formazione (e perché questo è lo stesso per tutte le teorie, non influisce effettivamente sul confronto tra di essi) . Ma si può immaginare utilizzando la frequenza degli errori individuali per ridurre il numero di bit necessari per codificarli. Naturalmente, più sofisticato il metodo che viene utilizzato per codificare gli errori, meno la necessità di una teoria in primo luogo - quindi se una teoria è giustificata o meno dipende in qualche misura da come gli errori sono codificati. I dettagli, i dettagli.<br />
<br />
Non andiamo nei dettagli di metodi di codifica diversi qui. L'intera questione di utilizzare il principio MDL per valutare un programma di apprendimento basato esclusivamente sui dati formativi è un settore di ricerca attiva e di vivace disaccordo tra i ricercatori.<br />
Terminiamo questa sezione come abbiamo iniziato, su una nota filosofica. È importante apprezzare che il rasoio di Occam, la preferenza di semplici teorie su quelle complesse, ha lo status di una posizione filosofica o "assioma" piuttosto che qualcosa che può essere dimostrato dai primi principi. Anche se può sembrare evidente a noi, questa è una funzione della nostra istruzione e dei tempi in cui viviamo. La preferenza per la semplicità è - o può essere - una cultura specifica piuttosto che assoluta.<br />
Il filosofo greco Epicurus (che godeva di buon cibo e vino e sosteneva supposto il piacere sensuale - in moderazione - come il massimo bene) ha espresso quasi il sentimento opposto. Il suo principio di spiegazioni multiple suggerisce che "se più di una teoria è coerente con i dati, mantenerli tutti" sulla base che se diverse spiegazioni sono ugualmente in accordo, potrebbe essere possibile ottenere un più alto grado di precisione usandoli insieme - E comunque, sarebbe ignorato di scartare alcuni arbitrariamente. Questo porta alla mente l'apprendimento basata sull'istanza, in cui tutte le prove vengono mantenute per fornire previsioni robuste e rispecchiano fortemente con i metodi di combinazione di decisione come il bagaglio e il potenziamento (descritti nel capitolo 7) che in realtà acquisiscono il potere predittivo utilizzando molteplici spiegazioni .<br />
<h4>
Applicare il principio MDL al clustering</h4>
<br />
Una delle cose belle del principio MDL è che, a differenza di altri criteri di valutazione, può essere applicata in circostanze molto diverse. Anche se in un certo senso equivalente alla regola di Bayes in quanto, come abbiamo visto in precedenza, la creazione di un sistema di codifica delle teorie equivarrebbe ad assegnarle una precedente distribuzione di probabilità, i sistemi di codifica sono in qualche modo molto più tangibili e più semplici da pensare in termini concreti che intuitivi Probabilità precedenti. Per illustrare questo, descriveremo brevemente - senza entrare in dettagli di codifica - come si potrebbe applicare il principio MDL al clustering. Il clustering appare intrinsecamente difficile da valutare. Mentre l'apprendimento di classificazione o associazione ha un criterio oggettivo di successo - le previsioni fatte sui casi di prova sono giuste o sbagliate - non è così con il clustering. Sembra che l'unica valutazione realistica è se il risultato dell'apprendimento - il clustering - sia utile nel contesto dell'applicazione. (Vale la pena sottolineare che in realtà è questo il caso di tutti i tipi di apprendimento, non solo il clustering).<br />
<br />
<br />
<br />
Nonostante questo, il clustering può essere valutato da una prospettiva di lunghezza della descrizione. Supponiamo che una tecnica di cluster-learning divide il set di formazione E in cluster k. Se questi cluster sono naturali, dovrebbero essere utilizzati per codificare E in modo più efficiente. Il miglior clustering supporterà la codifica più efficiente. Un modo per codificare le istanze in E per un dato clustering è quello di cominciare codificando i centri del cluster - il valore medio di ciascun attributo su tutte le istanze del cluster. Quindi, per ogni istanza in E, trasmette quale cluster appartiene (in bit di log2k) seguiti dai valori degli attributi rispetto al centro del cluster - forse come differenza numerica di ogni valore di attributo dal centro. Abbinata come è in termini di medie e differenze, questa descrizione presuppone attributi numerici e solleva questioni spinose su come codificare i numeri in modo efficiente. Gli attributi nominali possono essere gestiti in modo simile: per ogni cluster è presente una distribuzione di probabilità per i valori di attributo e le distribuzioni sono differenti per i cluster differenti. Il problema di codifica diventa più semplice: i valori degli attributi sono codificati rispetto alla relativa distribuzione di probabilità, un'operazione standard nella compressione dei dati. Se i dati presentano un clustering estremamente forte, questa tecnica comporterà una lunghezza minore di descrizione rispetto a trasmettere semplicemente gli elementi di E senza alcun cluster. Tuttavia, se l'effetto di clustering non è così forte, probabilmente aumenterà piuttosto che diminuire la lunghezza della descrizione. Il sovraccarico di trasmissione di distribuzioni specifiche per i cluster per i valori di attributo sarà più che compensare il vantaggio acquisito codificando ogni istanza di formazione relativa al cluster in cui si trova. Questo è dove vengono fornite tecniche di codifica più sofisticate. Una volta che i centri cluster sono stati comunicati, È possibile trasmettere in modo adattativo le distribuzioni di probabilità specifiche del cluster, in tandem con le relative istanze: le istanze stesse aiutano a definire le distribuzioni di probabilità e le distribuzioni di probabilità aiutano a definire le istanze. Non ci impegneremo ulteriormente nelle tecniche di codifica qui. Il punto è che la formulazione MDL, correttamente applicata, può essere abbastanza flessibile per supportare la valutazione del clustering. Ma effettivamente farlo in modo soddisfacente in pratica non è facile.<br />
<h4>
Letture Consigliate</h4>
<br />
La base statistica dei test di fiducia è ben coperta nella maggior parte dei testi statistici, che forniscono anche tabelle della distribuzione normale e della distribuzione degli studenti. (Usiamo un ottimo testo di corso, Wild e Seber 1995, che raccomandiamo molto se potete ottenerlo.) "Studente" è il nome de plume di uno statista chiamato William Gosset, che ha ottenuto il ruolo di chimico in La birreria Guinness a Dublino, nel 1899, e ha inventato il t-test per gestire piccoli campioni per il controllo della qualità nella preparazione. Il t-test corretto è stato proposto da Nadeau e Bengio (2003). La convalida incrociata è una tecnica statistica standard e la sua applicazione nell'apprendimento della macchina è stata ampiamente analizzata e confrontata con il bootstrap di Kohavi (1995a). La tecnica del bootstrap è coperta da Efron e Tibshirani (1993). La statistica di Kappa è stata introdotta da Cohen (1960). Ting (2002) ha esaminato un modo euristico di generalizzare al caso multiclassico l'algoritmo indicato nella Sezione 5.7 per rendere i costi di formazione a due classi di costo sensibili. I grafici di sollevamento sono descritti da Berry e Linoff (1997). L'uso dell'analisi ROC nella teoria del rilevamento del segnale è coperto da Egan (1975); Questo lavoro è stato esteso per la visualizzazione e l'analisi del comportamento dei sistemi diagnostici (Swets 1988) ed è anche usato in medicina (Beck e Schultz 1986). Provost e Fawcett (1997) portarono l'idea dell'analisi del ROC all'attenzione della comunità di apprendimento macchina e data mining. Witten et al. (1999b) spiegano l'uso del richiamo e della precisione nei sistemi di recupero delle informazioni; La misura F è descritta da van Rijsbergen (1979). Drummond e Holte (2000) hanno introdotto curve di costo e hanno studiato le loro proprietà. Il principio MDL è stato formulato da Rissanen (1985). La scoperta di Kepler delle sue economiche tre leggi del moto planetario, ei suoi dubbi su di loro, sono raccontati da Koestler (1964).Il principio di spiegazioni multiple di Epicurus è menzionato da Li e Vityani (1992), citando da Asmis (1984).<br />
Implementazioni: Schemi di apprendimento Real Machine<br />
<br />
Abbiamo visto le idee di base di diversi metodi di apprendimento macchina e abbiamo studiato in dettaglio come valutare la loro performance sui problemi pratici di data mining. Adesso siamo ben preparati a studiare algoritmi di apprendimento di macchina realmente reali, industriali. Il nostro obiettivo è quello di spiegare questi algoritmi sia a livello concettuale che con una quantità discreta di dettagli tecnici in modo da poterle comprendere appieno e apprezzare i principali problemi di implementazione che sorgono. In verità c'è un mondo di differenza tra i metodi semplicistici descritti nel Capitolo 4 e gli algoritmi reali che sono ampiamente utilizzati nella pratica.I principi sono gli stessi. Così sono i metodi input e output dei rappresentativi della conoscenza. Ma gli algoritmi sono molto più complessi, principalmente perché devono affrontare in modo robusto e sensibile i problemi del mondo reale come gli attributi numerici, i valori mancanti e - i più impegnativi di tutti - i dati rumorosi. Per capire come i vari metodi affrontano il rumore, dobbiamo attingere a alcune delle conoscenze statistiche che abbiamo appreso nel capitolo 5. Il capitolo 4 è stato aperto con una spiegazione di come dedurre le regole rudimentali e ha continuato ad esaminare modelli di statistiche e decisioni. Poi siamo tornati a regolare l'induzione e continuato con le regole di associazione, i modelli lineari, il metodo di prossimità più vicino di apprendimento basato sull'istanza e il clustering. Il presente capitolo sviluppa tutti questi argomenti tranne le regole di associazione, che sono già state trattate in modo adeguato. Cominciamo con l'induzione di alberi decisionali e lavoriamo fino ad una descrizione completa del sistema C4.5, un programma di alberi decisionali di riferimento che è probabilmente il cavallo da lavoro di apprendimento macchina più utilizzato nella pratica fino ad oggi. Successivamente descriviamo l'induzione di una decisione. Nonostante la semplicità dell'idea, l'introduzione di regole di decisione che si comportano in modo comparabile con gli alberi decisionali all'avanguardia risulta essere piuttosto difficile in pratica. La maggior parte degli induttori di regole ad alte prestazioni trova un set di regole iniziale e quindi lo raffina con una fase di ottimizzazione complessa che scarta o regola le singole regole per farli lavorare meglio insieme. Descriviamo le idee che sottostanno l'apprendimento delle regole in presenza di rumore e poi vanno a coprire un regime che opera mediante la costituzione di alberi decisionali parziali, un approccio che è stato dimostrato di svolgere e altre regole all'avanguardia I discenti ancora evitano le loro complesse e ad hoc euristiche. A seguito di questo, esaminiamo brevemente come generare regole con eccezioni, descritte in Sezione 3.5.<br />
<br />
C'è stato un rilancio dell'interesse nei modelli lineari con l'introduzione di macchine vettoriali di supporto, una miscela di modellazione lineare e di apprendimento basato su istanze. Le macchine vettoriali di supporto selezionano un piccolo numero di istanze critiche critiche chiamate vettori di supporto di ogni classe e costruiscono una funzione discriminante lineare che li separa il più ampiamente possibile. Questi sistemi trascendono le limitazioni dei confini lineari rendendo pratico includere termini aggiuntivi non lineari nella funzione, consentendo di formare dei limiti di decisione quadratica, cubica e superiore. Le stesse tecniche possono essere applicate al perceptron descritto nella sezione 4.6 per implementare confini complessi di decisione. Una tecnica più antica per estendere il perceptron è collegare le unità in "reti neurali" multilayer. Tutte queste idee sono descritte in Sezione 6.3. La sezione successiva del capitolo descrive gli studenti basati sull'istanza, sviluppando il metodo più vicino di prossimità introdotto nella sezione 4.7 e mostrando alcune alternative più potenti che eseguono generalizzazioni esplicite. Dopo di ciò, aggiorniamo la regressione lineare per la previsione numerica ad una procedura più sofisticata che si presenta con la rappresentazione dell'albero introdotta nella sezione 3.7 e continua a descrivere la regressione localizzata, una strategia basata sull'istanza per la previsione numerica. Poi torniamo a raggruppare e rivedere alcuni metodi più sofisticati di semplici k-means, metodi che producono cluster gerarchici e cluster probabilistici. Infine, esaminiamo le reti bayesiane, un potenzialmente molto potente modo di estendere il metodo Naïve Bayes per renderlo meno "naïve" trattando i set di dati che hanno dipendenze interne.<br />
<br />
A causa della natura del materiale che contiene, questo capitolo è diverso dagli altri nel libro. Le sezioni possono essere lette in modo indipendente e ciascuna sezione è autonoma, inclusi i riferimenti ad ulteriori letture, che vengono raccolti in una sottosezione Discussione alla fine di ogni sezione.<br />
<h4>
Alberi decisionali</h4>
<br />
Il primo schema di apprendimento della macchina che si svilupperà in dettaglio deriva dal semplice algoritmo di divisione e conquista per la produzione degli alberi decisionali descritti nella sezione 4.3. Deve essere estesa in diversi modi prima che sia pronta per l'uso sui problemi del mondo reale. In primo luogo consideriamo come affrontare gli attributi numerici e, successivamente, i valori mancanti. Poi guardiamo all'importante problema di alberi decisionali di potatura, perché anche se gli alberi costruiti dall'algoritmo "divide-e-conquista" come descritti funzionano bene sul set di formazione, sono generalmente sovraccarichi ai dati formativi e non generalizzano bene A gruppi di test indipendenti. A questo punto consideriamo come convertire gli alberi decisionali nelle regole di classificazione. In tutti questi aspetti siamo guidati dal famoso algoritmo degli alberi decisionali C4.5 che, con il suo successore commerciale C5.0, è emerso come il cavallo di lavoro del settore per l'apprendimento automatico all'aperto. Infine, esaminiamo le opzioni fornite da C4.5 e C5.0 stesse. <br />
<h4>
Attributi Numerici</h4>
<br />
Il metodo descritto funziona solo quando tutti gli attributi sono nominali, mentre, come abbiamo visto, la maggior parte dei set di dati reali contengono alcuni attributi numerici. Non è troppo difficile estendere l'algoritmo per affrontare questi problemi. Per un attributo numerico limiteremo le possibilità a una divisione bidirezionale o binaria. Supponiamo di utilizzare la versione dei dati meteo che presenta alcune caratteristiche numeriche (Tabella 1.3). Quindi, quando la temperatura viene considerata per la prima spaccatura, i valori di temperatura coinvolti sono<br />
<br />
.......<br />
<br />
(Valori ripetuti sono stati collassati insieme). Ci sono solo 11 posizioni possibili per il punto di interruzione 8 se il punto di interruzione non è consentito separare gli elementi della stessa classe. Il guadagno di informazioni per ciascuno può essere calcolato nel modo consueto. Ad esempio, la temperatura di prova <71,5 produce quattro sì e due no, mentre la temperatura> 71.5 produce cinque sì e tre no, e quindi il valore di informazioni di questo test è<br />
<br />
......<br />
<br />
È comune mettere le soglie numeriche a metà tra i valori che delimitano i confini di un concetto, anche se qualcosa può essere ottenuto adottando una politica più sofisticata. Ad esempio, vedremo più tardi che, sebbene la forma più semplice dell'apprendimento basata sull'istanza metta la linea di separazione tra concetti al centro dello spazio tra di loro, sono stati suggeriti altri metodi che coinvolgono più che i soli due esempi più vicini.Quando si creano gli alberi decisionali utilizzando il metodo "divide-and-conquer", quando è stato selezionato il primo attributo da dividere, viene creato un nodo ad albero di livello superiore che si divide su tale attributo e l'algoritmo procede ricorsivamente su ciascuno dei due i nodi. Per ogni attributo numerico, sembra che il sottoinsieme di istanze in ogni nodo figlio deve essere riorganizzato in base ai valori di tale attributo e, in effetti, in questo modo vengono generalmente scritti i programmi per l'induzione degli alberi decisionali. Tuttavia, non è effettivamente necessario riordinare perché l'ordine di ordinamento in un nodo padre può essere utilizzato per trarre l'ordine di ordinamento per ogni bambino, portando ad una implementazione più rapida. Si consideri l'attributo di temperatura nei dati meteo, il cui ordine di ordinamento (questa volta compresi i duplicati) è<br />
<br />
Il numero in corsivo sotto ogni valore di temperatura dà il numero dell'istanza che ha tale valore: così l'esempio numero 7 ha valore di temperatura 64, l'istanza 6 ha valore di temperatura 65 e così via. Supponiamo di decidere di dividere al livello più alto l'aspetto degli attributi. Si consideri il nodo figlio per cui la vista è soleggiata - infatti gli esempi con questo valore di outlook sono i numeri 1, 2, 8, 9 e 11. Se la sequenza in corsivo viene memorizzata con il set di esempio (e una sequenza diversa deve essere memorizzata Per ogni attributo numerico), ovvero, l'istanza 7 contiene un puntatore all'istanza 6, l'istanza 6 punti all'istanza 5, l'istanza 5 punti all'istanza 9 e così via, allora è una cosa semplice per leggere gli esempi per cui le prospettive = Soleggiato in ordine. Tutto ciò che è necessario è eseguire la scansione attraverso le istanze nell'ordine indicato, controllando l'attributo di Outlook per ciascuno e scrivendo quelle con il valore appropriato:<br />
<br />
....<br />
<br />
È quindi possibile evitare l'ordinamento ripetuto memorizzando con ciascun sottoinsieme di istanze l'ordine di ordinamento per quel sottoinsieme secondo ogni attributo numerico. L'ordine di ordinamento deve essere determinato per ogni attributo numerico all'inizio; Successivamente non è necessaria alcuna successiva ordinazione.<br />
Quando un albero di decisione analizza un attributo nominale come descritto nella sezione 4.3, viene eseguito un ramo per ogni possibile valore dell'attributo. Tuttavia, abbiamo limitato le divisioni sugli attributi numerici per essere binari. Ciò crea un'importante differenza tra attributi numerici e quelli nominali: una volta che si è ramificato un attributo nominale, sono state utilizzate tutte le informazioni che offre, mentre le divisioni successive su un attributo numerico possono continuare a produrre nuove informazioni. Mentre un attributo nominale può essere testato solo una volta su qualsiasi percorso dalla radice di un albero alla foglia, una numerica può essere testata molte volte. Ciò può produrre alberi che sono disordinati e difficili da capire perché i test su qualunque singolo attributo numerico non si trovano insieme ma possono essere sparsi lungo il percorso. Un'alternativa più difficile da realizzare ma produce un albero leggibile è quello di consentire un test multiway su un attributo numerico, testando contro diverse costanti in un singolo nodo dell'albero. Una soluzione più semplice ma meno potente è predisporre l'attributo come descritto nella sezione 7.2.<br />
<h4>
Valori Mancanti</h4>
<br />
Il prossimo miglioramento dell'algoritmo di costruzione di decisioni riguarda i problemi dei valori mancanti. I valori mancanti sono endemici nei set di dati del mondo reale. Come spiegato nel capitolo 2 (pagina 58), un modo per gestirli è quello di trattarli come un altro possibile valore dell'attributo; Questo è appropriato se il fatto che manca l'attributo è in qualche modo significativo. In questo caso non è necessario intraprendere ulteriori azioni. Ma se non esiste un particolare significato nel fatto che un determinato esempio ha un valore attributo mancante, è necessaria una soluzione più sottile. Si è tentato semplicemente di ignorare tutti i casi in cui mancano alcuni valori, ma questa soluzione è spesso troppo draconiana per essere vitale. Le istanze con valori mancanti spesso forniscono una buona quantità di informazioni. A volte gli attributi i cui valori mancano non svolgono parte della decisione, nel qual caso tali istanze sono buone come qualsiasi altra.<br />
<br />
Una domanda è come applicare una data tree decision a un'istanza in cui alcuni degli attributi da testare hanno valori mancanti. Abbiamo descritto una soluzione nella Sezione 3.2 che comporta la suddivisione in modo suddiviso in pezzi, utilizzando un metodo di ponderazione numerico e l'invio di parte di ciascun ramo in proporzione al numero di istanze di formazione che scendono lungo tale ramo. Eventualmente, le varie parti dell'istanza raggiungeranno ciascuno un nodo di foglia e le decisioni in questi nodi foglia devono essere ricombinate usando i pesi che hanno percolato alle foglie. I calcoli di guadagno e guadagno di informazioni descritti nella sezione 4.3 possono anche essere applicati a istanze parziali. Invece di avere conteggi interi, i pesi vengono utilizzati quando si calcola entrambe le figure di guadagno.<br />
<br />
Un'altra domanda è come dividere il set di formazione una volta che è stato scelto un attributo di divisione, per consentire l'applicazione ricorsiva della procedura di formazione degli alberi decisionali su ciascuno dei nodi figlia. Viene utilizzata la stessa procedura di ponderazione. Le istanze per cui manca il relativo valore attribuito sono suddivisi in pezzi, un pezzo per ogni ramo, nella stessa proporzione dei casi noti che scendono nei vari rami. Pezzi di istanza contribuiscono a prendere decisioni nei nodi più bassi nel modo consueto attraverso il calcolo del guadagno delle informazioni, ad eccezione del fatto che esse sono ponderate di conseguenza. Possono essere ulteriormente divisi nei nodi inferiori, naturalmente, se i valori di altri attributi non sono noti. <br />
<h4>
Pruning</h4>
<br />
Quando abbiamo esaminato il problema del negoziato del lavoro nel capitolo 1, abbiamo scoperto che l'albero di decisione semplice della figura 1.3 (a) effettua effettivamente meglio di quello più complesso di Figura 1.3 (b) e ha anche più senso. Ora è il momento di imparare a tagliare gli alberi decisionali.Costruendo l'albero completo e tagliandolo dopo, stiamo adottando una strategia di postpruning (a volte chiamata potatura indietro) piuttosto che prepruning (o forward potatura). Prepruning comporterebbe la decisione di decidere durante il processo di costruzione dell'albero quando smettere di sviluppare i sottofondi abbastanza una prospettiva attraente in quanto ciò eviterebbe tutto il lavoro di sviluppare sottofondi solo per buttarli via in seguito. Tuttavia, il postpruning sembra offrire alcuni vantaggi. Ad esempio, si verificano situazioni in cui due attributi individualmente sembrano non avere niente da contribuire, ma sono potenti predittori quando combinato una sorta di effetto di combinazione-lock in cui la corretta combinazione dei due valori attributo è molto informativa mentre gli attributi presi individualmente non lo sono. La maggior parte degli alberi decisionali costruttori postprune; Si tratta di una domanda aperta se si possano sviluppare strategie di prepruning che pure funzionino.<br />
<br />
Sono state considerate due operazioni piuttosto diverse per il postpruning: subtree replacement e subtree. Ad ogni nodo, uno schema di apprendimento potrebbe decidere se eseguire una subtree di sostituzione, subtree di sollevamento o lasciare il sottostrutto come è, non proveniente. La sostituzione subtree è l'operazione di potatura primaria, e lo guardiamo per primo. L'idea è di selezionare alcuni sottopiedi e sostituirli con foglie singole. Ad esempio, l'intero sottostrato di Figura 1.3 (a), che coinvolge due nodi interni e quattro nodi foglia, è stato sostituito da una sola foglia cattiva. Ciò determinerà sicuramente l'esattezza del set di allenamento a diminuire se l'albero originale è stato prodotto dall'algoritmo dell'albero di decisione descritto in precedenza perché continuava a costruire l'albero finché tutti i nodi dei fogli erano pura (o fino a quando tutti gli attributi erano stati testati). Tuttavia, può aumentare l'accuratezza su un set di test indipendentemente scelto. Quando viene applicata la sostituzione del sottofondo, essa procede dalle foglie e lavora verso la radice. Nell'esempio della Figura 1.3, l'intero sottotracco della Figura 1.3 (a) non sarebbe immediatamente sostituito. In primo luogo, si considererebbe la sostituzione dei tre nodi figlia nel subtree di contribuzione del piano sanitario con un singolo nodo foglia. Supponiamo che sia stata fatta una decisione per eseguire questa sostituzione, spiegheremo come questa decisione sarà fatta presto. Poi, continuando a lavorare indietro dalle foglie, si prenderà in considerazione la sostituzione dell'orario di lavoro subtree settimanale, che ora ha appena due nodi figlia, con un unico nodo foglia. Nell'esempio Figura 1.3 è stata effettivamente realizzata questa sostituzione, che rappresenta l'intero sottotracco di Figura 1.3 (a) sostituito da un singolo foglio contrassegnato male. Infine, si dovrebbe prendere in considerazione la sostituzione dei due nodi figlia nel sottopiano del primo anno di aumento salariale con un singolo nodo foglia. In questo caso la decisione non è stata fatta, quindi l'albero rimane come mostrato nella Figura 1.3 (a). Ancora una volta, esamineremo come queste decisioni sono effettivamente realizzate in breve tempo.<br />
<br />
La seconda operazione di potatura, sottostazione, è più complessa e non è chiaro che è necessariamente sempre utile. Tuttavia, perché viene utilizzato nel sistema di costruzione di alberi C4.5 influente, lo descriviamo qui. La sollevazione del sottopiano non si verifica nell'esempio della Figura 1.3, quindi utilizzare l'esempio artificiale della Figura 6.1 per illustrare. Qui si prende in considerazione la potatura dell'albero in Figura 6.1 (a) e il risultato è mostrato in Figura 6.1 (b). L'intero sottoprogetto da C verso il basso è stato "sollevato" per sostituire il sottopiano B. Si noti che, sebbene le figlie di B e C siano mostrate come foglie, possono essere intere sottostrutture. Naturalmente, se eseguiamo questa operazione di sollevamento, è necessario riclassificare gli esempi nei nodi contrassegnati 4 e 5 nel nuovo sottoprogetto guidato da C. È per questo che le figlie di quel nodo sono contrassegnate da primi: 1 ¢, 2 ¢ , E 3 ¢ - per indicare che non sono le stesse delle figlie originali 1, 2 e 3 ma differiscono per l'inclusione degli esempi originariamente coperti da 4 e 5.<br />
Il sollevamento del sottosuolo è un'operazione che richiede tempo. Nelle implementazioni attuali è generalmente limitato a sollevare il sottoprogetto del ramo più popolare. Ciò significa che facciamo il sollevamento illustrato nella Figura 6.1 a condizione che il ramo da B a C abbia più esempi di formazione rispetto alle filiali da B a nodo 4 o da B a nodo 5. Altrimenti, se (ad esempio) il nodo 4 fosse Maggioranza di figlia B, si potrebbe considerare l'aumento del nodo 4 per sostituire B e la riclassificazione di tutti gli esempi sotto C, così come gli esempi dal nodo 5, nel nuovo nodo.<br />
Stima dei tassi di errore<br />
<br />
Tanto per le due operazioni di potatura. Ora dobbiamo affrontare la questione di come decidere se sostituire un nodo interno con una foglia (per il subtree replacement) o sostituire un nodo interno con uno dei nodi sottostanti (per il subtree). Per prendere questa decisione in modo razionale, è necessario stimare il tasso di errore che si prevede in un determinato nodo dato un set di test indipendentemente scelto. Dobbiamo stimare l'errore nei nodi interni e nei nodi fogliari. Se avessimo una simile stima, sarebbe chiaro se sostituire o sollevare un particolare sottotesto semplicemente confrontando l'errore stimato del sottostrutto con quello della sua sostituzione proposta. Prima di valutare l'errore di un sottotracco proposto per la raccolta, gli esempi che si trovano nei fratelli del nodo corrente - gli esempi ai nodi 4 e 5 della Figura 6.1 - dovrebbero essere temporaneamente riclassificati nell'albero sopraelevato.<br />
<br />
<br />
Figure 6.1 Example of subtree raising, where node C is “raised” to subsume node B<br />
<br />
<br />
<br />
<br />
Non è assolutamente necessario considerare l'errore di allenamento come stima dell'errore: ciò non avrebbe portato a alcuna potatura perché l'albero è stato costruito espressamente per quel set di formazione particolare. Un modo per ottenere una stima di errori è la tecnica di verifica standard: trattenere alcuni dei dati originariamente dati e utilizzarla come un insieme di test indipendente per stimare l'errore in ogni nodo. Questo si chiama potatura a errore ridotto. Essa soffre dallo svantaggio che l'albero effettivo si basa su meno dati.<br />
L'alternativa è cercare di fare una stima di errore in base ai dati formativi in se. Questo è ciò che fa il C4.5 e qui descriveremo il suo metodo. È un euristico basato su un certo ragionamento statistico, ma la base statistica è piuttosto debole e ad hoc. Tuttavia, sembra funzionare bene nella pratica. L'idea è di considerare l'insieme di istanze che raggiungono ogni nodo e immaginare che la classe di maggioranza sia scelto per rappresentare quel nodo. Questo dà un certo numero di "errori", E, dal numero totale di istanze, N. Ora immaginiamo che la vera probabilità di errore nel nodo sia q e che le istanze N siano generate da un processo Bernoulli con il parametro q , Di cui E risultano essere errori.<br />
Questa è quasi la stessa situazione che abbiamo considerato quando si esamina il metodo di holdout nella Sezione 5.2, dove abbiamo calcolato gli intervalli di confidenza sulla probabilità di successo reale p dato un certo tasso di successo osservato. Ci sono due differenze. Uno è banale: qui esaminiamo il tasso di errore q piuttosto che il tasso di successo p; Questi sono semplicemente correlati con p + q = 1. La seconda è più grave: qui le figure E e N sono misurate dai dati di addestramento, mentre nella sezione 5.2 abbiamo considerato invece i dati di prova indipendenti. A causa di questa differenza, eseguiamo una stima pessimistica del tasso di errore usando il limite superiore di fiducia anziché dichiarando la stima come una gamma di confidenza.<br />
La matematica coinvolta è la stessa cosa di prima. Data una particolare fiducia c (la cifra predefinita utilizzata da C4.5 è c = 25%), troviamo limiti di confidenza z in modo tale<br />
<br />
......<br />
<br />
Dove N è il numero di campioni, f = E / N è il tasso di errore osservato, e q è il tasso di errore vero. Come prima, questo porta ad un limite superiore di fiducia per q. Ora usiamo questo limite di confidenza superiore come una stima (pessimistica) per il tasso di errore e al nodo:<br />
<br />
......<br />
<br />
Si noti l'utilizzo del segno + prima della radice quadrata nel numeratore per ottenere il limite superiore di confidenza. Qui z è il numero di deviazioni standard corrispondenti alla fiducia c, che per c = 25% è z = 0,69.<br />
Per vedere come funziona tutto questo in pratica, vediamo di nuovo l'albero decisionale dei negoziati di lavoro di Figura 1.3, le cui parti salienti sono riprodotte nella Figura 6.2 con il numero di esempi di addestramento che raggiungono le foglie aggiunte. Utilizziamo la formula precedente con una figura di fiducia del 25%, cioè con z = 0,69. Si consideri la foglia inferiore sinistra, per la quale E = 2, N = 6 e così f = 0.33. Collegando queste cifre alla formula, il limite superiore di confidenza viene calcolato come e = 0.47. Ciò significa che invece di utilizzare il tasso di errore impostato per questa foglia, pari al 33%, utilizzeremo la stima pessimistica del 47%. Questo è davvero pessimista, considerando che sarebbe un errore sbagliato lasciare che il tasso di errore superi il 50% per un problema a due classi.<br />
Ma le cose sono peggiori per la foglia vicina, dove E = 1 e N = 2, perché la fiducia superiore diventa e = 0,72. La terza foglia ha lo stesso valore di e come il primo. Il passo successivo è quello di combinare le stime di errore per queste tre foglie nel rapporto tra il numero di esempi che coprono, 6: 2: 6, che porta ad una stima di errore combinata di 0,51. Ora consideriamo l'errore di stima per il nodo padre, contributo del piano sanitario. Questo riguarda nove esempi negativi e cinque buoni, quindi il tasso di errore impostato per l'allenamento è f = 5/14. Per questi valori, la formula precedente fornisce una stima pessimistica di errore di e = 0.46. Poiché questo è inferiore alla stima degli errori combinati dei tre figli, sono abbattuti.<br />
Il passo successivo è quello di considerare l'orario di lavoro per il nodo di una settimana, che ora ha due figli che sono entrambi foglie. L'errore di stima per il primo, con E = 1 e N = 2, è e = 0,72, e per il secondo è e = 0,46 come abbiamo appena visto. Combinandoli nel rapporto appropriato di 2: 14 porta ad un valore superiore alla stima dell'errore per il nodo dell'orario di lavoro, quindi il sottostrutto viene tirato via e sostituito da un nodo foglia.<br />
<br />
<br />
<br />
<br />
Figure 6.2 Pruning the labor negotiations decision tree.<br />
<br />
<br />
Le cifre di errore stimate ottenute in questi esempi dovrebbero essere prese con un granello di sale perché la stima è solo euristica e si basa su una serie di ipotesi sconnesse: l'uso del limite superiore di confidenza; L'assunzione di una distribuzione normale; E il fatto che vengono utilizzate statistiche dal set di formazione. Tuttavia, il comportamento qualitativo della formula di errore è corretto e il metodo sembra funzionare ragionevolmente bene nella pratica. Se necessario, il livello di fiducia sottostante, che abbiamo preso al 25%, può essere modificato per produrre risultati più soddisfacenti. <br />
Complessità dell'induzione dell'albero di decisione<br />
<br />
Ora che abbiamo imparato a realizzare le operazioni di potatura, abbiamo finalmente ricoperto tutti gli aspetti centrali dell'induzione dell'albero di decisione. Prendiamo in considerazione e prendiamo in considerazione la complessità computazionale di indurre gli alberi decisionali. Utilizzeremo la notazione di ordine standard: O (n) significa una quantità che cresce al massimo in linea con n, O (n2) cresce al massimo in modo quadrato con n, e così via.<br />
Supponiamo che i dati di allenamento contenga n istanze e attributi m. Dobbiamo fare qualche ipotesi sulla dimensione dell'albero e supponiamo che la sua profondità sia sull'ordine del log n, cioè O (log n). Questa è la frequenza standard di crescita di un albero con foglie n, a condizione che rimanga "cespuglioso" e non degenera in alcuni rami molto lunghi e ruvidi. Si noti che tacitamente supponiamo che la maggior parte delle istanze sia diversa l'una dall'altra, e - è quasi la stessa cosa - che gli attributi m forniscono prove sufficienti per consentire la differenziazione delle istanze. Ad esempio, se ci fossero solo alcuni attributi binari, consentirebbero solo tanti casi di essere differenziati e l'albero non poteva crescere oltre un determinato punto, rendendo inutile un'analisi "nel limite".<br />
Il costo computazionale di costruire l'albero è in primo luogo<br />
<br />
<br />
O(mn log n).<br />
<br />
<br />
<br />
<br />
Si consideri la quantità di lavoro svolto per un attributo su tutti i nodi dell'albero. Non tutti gli esempi devono essere considerati in ogni nodo, ovviamente. Ma ad ogni profondità di albero possibile, è necessario considerare l'intero set di n istanze. Poiché nell'albero sono presenti diverse profondità di log n, la quantità di lavoro per questo attributo è O (n log n). Ad ogni nodo vengono considerati tutti gli attributi, quindi la quantità totale di lavoro è O (mn log n).<br />
Questo ragionamento fa alcune ipotesi. Se alcuni attributi sono numerici, devono essere ordinati, ma una volta che il sorting iniziale è stato fatto, non è necessario ricorrere ad ogni profondità dell'albero se si utilizza l'algoritmo appropriato (descritto in precedenza a pagina 190). Il sorting iniziale assume le operazioni O (n log n) per ognuno degli attributi fino a m: quindi la precedente figura di complessità è invariata. Se gli attributi sono nominali, tutti gli attributi non devono essere considerati in ciascun nodo albero poiché gli attributi che vengono utilizzati ulteriormente sull'albero non possono essere riutilizzati. Tuttavia, se gli attributi sono numerici, possono essere riutilizzati e quindi devono essere considerati ad ogni livello di albero.<br />
Successivamente, considerare la potatura con sostituzione del sottofondo. In primo luogo, è necessario fare una stima di errore per ogni nodo ad albero. A condizione che i conteggi siano mantenuti in modo appropriato, questo è lineare nel numero di nodi dell'albero. Quindi ogni nodo deve essere considerato per la sostituzione. L'albero ha al massimo n foglie, uno per ogni istanza. Se fosse un albero binario, ogni attributo era numerico o due valori, che gli darebbe 2n - 1 nodi; I rami di più vie serviranno solo a diminuire il numero di nodi interni. Così la complessità del subtree sostituzione è<br />
<br />
<br />
<br />
<br />
<br />
O(n).<br />
<br />
Infine, il sollevamento subtree ha una complessità di base uguale al subtree di sostituzione. Ma c'è un costo aggiunto perché le istanze devono essere riclassificate durante l'operazione di sollevamento. Durante l'intero processo, ogni istanza può essere riclassificata in ogni nodo tra la foglia e la radice, ossia più di O (log n). Questo rende il numero totale di riclassificazioni O (n log n). E la riclassificazione non è una singola operazione: quella che si verifica vicino alla radice prenderà operazioni O (logn) e una di media profondità prenderà metà di questo. Così la totalcomplexity del sollevamento subtree è la seguente<br />
<br />
<br />
<br />
O(n(log n))<br />
<br />
<br />
Tenendo conto di tutte queste operazioni, la completa complessità dell'induzione dell'albero di decisione è<br />
<br />
<br />
O(mn log n) + O(n(log n) .<br />
<h4>
Da alberi a regole</h4>
<br />
È possibile leggere un insieme di regole direttamente da un albero di decisione, come indicato nella sezione 3.3, generando una regola per ciascuna foglia e facendo una combinazione di tutti i test incontrati sul percorso dalla radice a quella foglia. Questo produce regole che sono inequivocabili in quanto non importa in quale ordine vengono eseguiti. Tuttavia, le regole sono più complesse del necessario.<br />
Il tasso di errore stimato descritto in precedenza fornisce esattamente il meccanismo necessario per eseguire la rigatura delle regole. Dato una regola particolare, ogni condizione in esso è considerata per la cancellazione provvedendone la rimozione, determinando quale degli esercizi di formazione sono ora coperti dalla regola, calcolando da questa una stima pessimistica del tasso di errore della nuova regola e confrontando questo Con la stima pessimistica per la regola originale. Se la nuova regola è migliore, eliminare tale condizione e continuare, cercando altre condizioni da eliminare. Lasciare la regola quando non ci sono condizioni che migliorano se vengono rimosse. Una volta che tutte le regole sono state potate in questo modo, è necessario vedere se esistono duplicati e rimuoverli dall'insieme di regole.<br />
Questo è un approccio avido per individuare condizioni ridondanti in una regola e non c'è garanzia che le migliori condizioni di condizioni verranno rimosse. Un miglioramento sarebbe considerare tutti i sottoinsiemi delle condizioni, ma questo è di solito proibitivamente costoso. Un'altra soluzione potrebbe essere quella di utilizzare una tecnica di ottimizzazione come simulazione di ricottura o un algoritmo genetico per selezionare la versione migliore di questa regola. Tuttavia, la semplice soluzione avida sembra produrre set di regole abbastanza buone.<br />
Il problema, anche con il metodo avido, è il costo computazionale. Per ogni condizione che è un candidato per la cancellazione, l'effetto della regola deve essere rivalutato in tutte le istanze di addestramento. Ciò significa che la generazione di regole dagli alberi tende ad essere molto lenta e la sezione successiva descrive metodi molto più veloci che generano direttamente le regole di classificazione senza formare innanzitutto un albero di decisione.<br />
C4.5:Scelte e opzioni<br />
<br />
Concludiamo il nostro studio sugli alberi decisionali facendo qualche osservazione sull'utilizzo pratico del programma dell'albero decisionale C4.5 e del suo successore C5.0. Questi sono stati ideati da J. Ross Quinlan per un periodo di 20 anni che inizia alla fine degli anni '70. Una descrizione completa di C4.5, la versione dei primi anni '90, appare come un libro eccellente e leggibile (Quinlan 1993), insieme al codice sorgente completo. La versione più recente, C5.0, è commercialmente disponibile. L'induzione dell'albero di decisione sembra essere sostanzialmente la stessa di quella utilizzata dal C4.5 e le prove mostrano alcune differenze ma miglioramenti trascurabili. Tuttavia, la sua generazione di regole è notevolmente accelerata e utilizza chiaramente una tecnica diversa, anche se questa non è stata descritta nella letteratura aperta.<br />
C4.5 funziona essenzialmente come descritto nelle sezioni precedenti. Il valore di confidenza di default è impostato al 25% e funziona ragionevolmente bene nella maggior parte dei casi; Possibilmente dovrebbe essere modificato ad un valore inferiore, che provoca una potatura più drastica se il tasso di errore effettivo degli alberi su prune sulle serie di test è risultato molto superiore al tasso di errore stimato. C'è un altro parametro importante il cui effetto è quello di eliminare i test per i quali quasi tutti gli esempi di formazione hanno lo stesso risultato. Tali test sono spesso di poco uso. Di conseguenza, i test non sono inclusi nell'albero di decisione a meno che non dispongano almeno di due esiti che abbiano almeno un numero minimo di istanze. Il valore predefinito per questo minimo è 2, ma è controllabile e forse dovrebbe essere aumentato per le attività che hanno un sacco di dati rumorosi.<br />
<h4>
Discusione</h4>
<br />
L'induzione di alto livello degli alberi decisionali è probabilmente il metodo più ampiamente studiato per l'apprendimento macchina utilizzato nell'estrazione dei dati. I ricercatori hanno esaminato una serie di variazioni per quasi tutti gli aspetti concepibili del processo di apprendimento - ad esempio, diversi criteri per la selezione degli attributi o metodi di potatura modificati. Tuttavia, sono raramente premiati da sostanziali miglioramenti nell'accuratezza su uno spettro di set di dati diversi. A volte la dimensione degli alberi indotti è significativamente ridotta quando viene adottata una diversa strategia di potatura, ma spesso lo stesso effetto può essere raggiunto impostando il parametro di potatura di C4.5 ad un valore più piccolo.<br />
Nella nostra descrizione degli alberi decisionali, abbiamo assunto che solo un attributo viene utilizzato per dividere i dati in sottoinsiemi in ogni nodo dell'albero. Tuttavia, è possibile consentire test che implicano diversi attributi alla volta. Ad esempio, con attributi numerici ogni test può essere su una combinazione lineare di valori degli attributi. Quindi l'albero finale consiste in una gerarchia di modelli lineari del tipo descritto nella sezione 4.6 e le suddivisioni non sono più limitate ad essere asse-parallele. Gli alberi con test che coinvolgono più di un attributo sono chiamati alberi decisionali multivariati, in contrasto con i semplici alberi univariati che normalmente usiamo. Sono stati introdotti test multivariati con il sistema di classificazione e regressione (CART) per l'apprendimento degli alberi decisionali (Breiman et al., 1984). Essi sono spesso più precisi e più piccoli degli alberi univariati ma richiedono molto più tempo per generare e sono anche più difficili da interpretare. Parliamo brevemente di un modo per generarli usando l'analisi dei componenti principali nella sezione 7.3 (pagina 309).<br />
<h4>
Regole di classificazione</h4>
<br />
Chiamiamo l'algoritmo di base di copertura per generare regole descritte nella sezione 4.4 una tecnica separata e conquista perché identifica una regola che copre le istanze della classe (e esclude quelle non in classe), li separa e continua Quelli che sono rimasti. Tali algoritmi sono stati utilizzati come base di molti sistemi che generano regole. Vi abbiamo descritto una semplice misura basata sulla correttezza per scegliere quale test da aggiungere alla regola in ogni fase.<br />
Tuttavia, ci sono molte altre possibilità, e il criterio particolare che viene utilizzato ha un effetto significativo sulle regole prodotte. Stiamo esaminando diversi criteri per la scelta dei test in questa sezione. Vediamo anche come l'algoritmo di rotazione di base può essere esteso a situazioni più pratiche accomodando valori mancanti e attributi numerici. Ma il vero problema di tutti questi schemi di generazione di regole è che essi tendono a sovrapporre i dati formativi e non generalizzano bene a gruppi di test indipendenti, in particolare su dati rumorosi. Per essere in grado di generare buone regole per i dati rumorosi, è necessario avere un modo per misurare il reale valore delle regole individuali.<br />
L'approccio standard per valutare il valore delle regole è quello di valutare il loro tasso di errore su un insieme indipendente di istanze, trattenuto dall'insieme di addestramento e lo spiegheremo successivamente. Dopo di che, descriviamo due studenti di regole di forza industriale: uno che combina la semplice tecnica separata e conquista con un passo di ottimizzazione globale e un'altra che funziona ripetutamente costruendo alberi decisionali parziali e estraendo le regole da essi. Infine, consideriamo come generare regole con eccezioni e eccezioni alle eccezioni.<br />
Criteri per la scelta dei test<br />
<br />
Quando abbiamo introdotto il principio dello studente di base nel paragrafo 4.4, abbiamo dovuto scoprire un modo per decidere quale dei molti possibili test da aggiungere a una regola per impedirgli di coprire eventuali esempi negativi. Per questo abbiamo usato il test che massimizza il rapporto<br />
<br />
p / t<br />
<br />
Dove t è il numero totale di istanze che coprirà la nuova regola e p è il numero di questi che sono positivi, cioè, appartenenti alla classe in questione. Questo tenta di massimizzare la "correttezza" della regola sulla base del fatto che più è la percentuale di esempi positivi che copre, più una regola è più corretta. Un'alternativa è calcolare un guadagno di informazioni:<br />
<br />
.......<br />
<br />
<br />
Dove p e t sono il numero di istanze positive e il numero totale di istanze coperte dalla nuova regola, come prima, e P e T sono il numero corrispondente di istanze che soddisfano la regola prima che sia stato aggiunto il nuovo test. La ragione per questo è che rappresenta le informazioni totali acquisite riguardo agli attuali esempi positivi, che è dato dal numero di coloro che soddisfano il nuovo test, moltiplicato per le informazioni acquisite per ciascuna di esse.<br />
Il criterio di base per la scelta di un test da aggiungere a una regola è quello di trovare uno che copre più esempi positivi possibile, coprendo però pochi esempi negativi possibile. L'originale euristico basato sulla correttezza, che è solo la percentuale di esempi positivi tra tutti gli esempi coperti dalla regola, raggiunge un massimo quando non vengono trattati esempi negativi, indipendentemente dal numero di esempi positivi coperti dalla regola. Quindi un test che rende esatta la regola sarà preferito a quello che lo rende inesatto, non importa quanto pochi esempi positivi riguardano la regola precedente o quanti esempi positivi riguardano quest'ultimo. Ad esempio, se possiamo scegliere tra un test che copre un esempio, che è positivo, questo criterio lo preferisce per un test che copre 1000 esempi positivi e uno negativo.<br />
L'euristica basata sull'informazione, invece, mette molto più accento sulla copertura di un gran numero di esempi positivi, indipendentemente dal fatto che la regola così creata sia esatta. Naturalmente, entrambi gli algoritmi continuano ad aggiungere test fino a quando la regola finale prodotta è esatta, il che significa che la regola sarà terminata in precedenza utilizzando la misura di correttezza, mentre più termini dovranno essere aggiunti se viene utilizzata la misura basata sull'informazione. Così la misura basata sulla correttezza potrebbe trovare casi speciali e eliminarli completamente, salvando l'immagine più grande per più tardi (quando la regola più generale potrebbe essere più semplice perché sono già stati trattati casi speciali scomodi), mentre l'informazione basata cercherà generare prima le regole di copertura elevate e lasciare i casi speciali fino a tardi. Non è affatto ovvio che entrambe le strategie siano superiori all'altro nel produrre una regola esatta. Inoltre, l'intera situazione è complicata dal fatto che, come descritto in seguito, le regole possono essere troncate e quelle inesatte tollerate.<br />
Valori mancanti, attributi numerici - Missing values, numeric attributes<br />
<br />
Come per gli algoritmi "dividere e conquistare" gli alberi decisionali, bisogna affrontare le cattive considerazioni pratiche dei valori mancanti e degli attributi numerici. In realtà, non c'è molto da dire. Ora che sappiamo come questi problemi possano essere risolti per l'induzione di alberi decisionali, sono possibili soluzioni appropriate per l'induzione di regole.<br />
Quando si producono regole utilizzando algoritmi di copertura, i valori mancanti possono essere trattati meglio come se non corrispondono a nessuna delle prove. Ciò è particolarmente adatto quando viene prodotta una lista di decisioni perché incoraggia l'algoritmo di apprendimento a separare istanze positive utilizzando test che sono noti per avere successo. Ha l'effetto che entrambi i casi con valori mancanti sono trattati da regole che coinvolgono altri attributi che non mancano o che tutte le decisioni siano deferite finché la maggior parte delle altre istanze non sono state prese in considerazione, Coinvolgere altri attributi. Gli algoritmi di copertura per gli elenchi di decisione hanno un vantaggio determinato rispetto agli algoritmi degli alberi decisionali a questo proposito: gli esempi difficili possono essere lasciati fino a tardi, quando saranno meno gravi perché la maggior parte degli altri esempi sono già stati classificati e rimossi dalla Set di istanze. Gli attributi numerici possono essere trattati esattamente come gli alberi. Per ciascun attributo numerico, le istanze vengono ordinate in base al valore dell'attributo e, per ogni soglia possibile, un test binario inferiore a quello maggiore viene considerato e valutato esattamente come un attributo binario.<br />
Generare buone regole<br />
<br />
<br />
Supponiamo che non si vogliono generare regole perfette che garantiscano la classificazione corretta su tutti i casi del set di formazione, ma preferiscono generare "sensibili" quelli che evitano overfitting del set di formazione e quindi hanno maggiori probabilità di eseguire bene le nuove Istanze di prova. Come decidi quali regole valgono? Come si fa a sapere quando diventa controproducente continuare ad aggiungere termini a una regola per escludere alcune istanze fastidiose del tipo sbagliato, escludendo sempre più istanze del tipo giusto?<br />
Diamo un'occhiata ad alcuni esempi di possibili regole - alcune buone e cattive - per il problema delle lenti a contatto nella tabella 1.1. Prendi in considerazione prima la regola<br />
<br />
<br />
If astigmatism = yes and tear production rate = normal<br />
then recommendation = hard<br />
<br />
<br />
Ciò dà un risultato corretto per quattro dei sei casi che copre; Quindi la sua frazione di successo è 4/6. Supponiamo di aggiungere un ulteriore termine per rendere la regola "perfetta":<br />
<br />
<br />
If astigmatism = yes and tear production rate = normal<br />
and age = young then recommendation = hard<br />
<br />
Questo migliora la precisione a 2/2. Quale regola è meglio? Il secondo è più accurato sui dati formativi ma copre solo due casi, mentre il primo copre sei. Può darsi che la seconda versione non sia sufficiente a sovraccaricare i dati formativi. Per un principio pratico, abbiamo bisogno di un principio di scelta della versione appropriata di una regola, preferibilmente quella che massimizza la precisione sui dati di prova futuri. Supponiamo di dividere i dati di formazione in due parti che chiameremo un set crescente e un set di potatura. Il set crescente viene utilizzato per formare una regola utilizzando l'algoritmo di base di copertura. Quindi un test viene eliminato dalla regola e l'effetto viene valutato provando la regola troncata sul set di potatura e vedere se esegue meglio la regola originale. Questo processo di potatura viene ripetuto finché la regola non può essere migliorata eliminando eventuali ulteriori test. L'intera procedura viene ripetuta per ogni classe, ottenendo una regola migliore per ogni classe e la regola migliore generale viene stabilita valutando le regole sul set di potatura. Questa regola viene quindi aggiunta all'insieme di regole, le istanze coprono rimosse dai dati di addestramento - sia da colture che da potatura - e il processo viene ripetuto.<br />
Perché non fare la potatura come costruire la regola, piuttosto che costruire tutta la cosa e poi gettare parti via? Cioè, perché non preprune piuttosto che postprune? Proprio come quando si decide di tagliare alberi, è spesso meglio coltivare l'albero alla sua dimensione massima e poi tornare indietro, quindi con le regole spesso è meglio fare una regola perfetta e poi farne la piastra. Chi lo sa? Aggiungendo questo ultimo termine può fare una regola veramente buona, una situazione che non avremmo mai potuto notare se avessimo adottato una strategia aggressiva di prepruning.<br />
<br />
È essenziale che i gruppi di crescita e di potatura siano separati perché è fuorviante valutare una regola sui dati utilizzati per formarla: ciò comporterebbe seri errori preferendo regole sovrapposte. Di solito l'allenamento è diviso in modo che due terzi di istanze vengono utilizzati per crescere e un terzo per la potatura. Uno svantaggio, ovviamente, è che l'apprendimento si verifica da istanze solo nel set crescente e quindi l'algoritmo potrebbe mancare delle regole importanti perché alcune istanze chiave erano state assegnate al set di potatura. Inoltre, la regola errata potrebbe essere preferita perché il set di potature contiene solo un terzo dei dati e non può essere completamente rappresentativo. Questi effetti possono essere migliorati ricollegando i dati di addestramento in set di crescita e di potatura ad ogni ciclo dell'algoritmo, cioè dopo che ciascuna regola viene finalmente scelta.<br />
L'idea di utilizzare un set di potatura separata per la potatura, che è applicabile agli alberi decisionali e ai set di regole, viene chiamata potatura a errore ridotto. La variante descritta in precedenza prunes una regola immediatamente dopo che è stata coltivata e viene chiamata potatura incrementale a errori ridotti. Un'altra possibilità è quella di costruire una regola piena, priva di regole prima, tagliandola successivamente scartando singole prove. Tuttavia, questo metodo è molto più lento.<br />
Naturalmente, ci sono molti modi diversi per valutare il valore di una regola basata sul set di potatura. Una misura semplice consiste nel considerare come la regola farebbe a discriminare la classe prevista da altre classi se fosse l'unica regola della teoria, operante sotto l'assunzione del mondo chiuso. Se ottiene istanze p direttamente dalle t istanze che copre, e ci sono istanze P di questa classe di un totale di istanze T complessivamente, quindi ottiene istanze p positive. Le istanze che non coprono sono N - n negative, dove n = t - p è il numero di istanze negative che la regola copre e N = T - P è il numero totale di istanze negative. Quindi la regola ha un rapporto di successo generale e questa quantità, valutata sul set di test, è stata utilizzata per valutare il successo di una regola quando si usa la potatura a errori ridotti.<br />
<br />
<br />
<br />
[ p + ( N - n)] T ,<br />
<br />
<br />
Questa misura è aperta a critiche perché tratta non coprire esempi negativi altrettanto importanti come la copertura di quelli positivi, che è irrealistico in una situazione in cui ciò che viene valutato è una regola che alla fine servirà a fianco di molti altri. Ad esempio, una regola che ottiene p = 2000 istanze direttamente fuori da una copertura totale di 3000 (cioè ottiene n = 1000 errata) viene giudicata più efficace di quella che ottiene p = 1000 su una copertura totale di 1001 (cioè , N = 1 errato), perché nel primo caso [p + (N-n)] / T è [1000 + N] / T, ma solo nel punto [999 + N] / T. Ciò è controintuitivo: la prima regola è chiaramente meno predittiva del secondo, perché ha 33,0% in contrasto con solo 0,1% probabilità di essere errato.<br />
Utilizzando la velocità di successo p / t come misura, quanto nella formulazione originale dell'algoritmo di copertura (Figura 4.8), non è la soluzione perfetta, perché preferirebbe una regola che ha ottenuto un diritto di istanza unica (p = 1) Di una copertura totale di 1 (così n = 0) alla regola molto più utile che ha ottenuto 1000 a destra su 1001. Un altro euristico utilizzato è (p-n) / t, ma che soffre di esattamente lo stesso problema perché (P - n) / t = 2p / t - 1 e quindi il risultato, quando si confronta una regola con un'altra, è uguale a quello del tasso di successo. Sembra difficile trovare una semplice misura del valore di una regola che corrisponde all'intuizione in tutti i casi.<br />
Qualunque sia l'euristico utilizzato per misurare il valore di una regola, l'algoritmo incrementale di potatura a errore ridotto è lo stesso. Un possibile algoritmo di apprendimento basato su questa idea è riportato in Figura 6.3. Genera un elenco di decisioni, creando regole per ogni classe a sua volta e scegliendo in ogni fase la versione migliore della regola in base alla sua valenza sui dati di potatura. L'algoritmo base di copertura per la generazione di regole (Figura 4.8) viene utilizzato per ottenere buone regole per ogni classe, scegliendo le condizioni per aggiungere alla regola usando la misura di precisione p / t descritta in precedenza.<br />
Questo metodo è stato utilizzato per produrre regimi-induzione schemi che possono elaborare grandi quantità di dati e operare molto rapidamente. Può essere accelerata generando regole per le classi in ordine piuttosto che generare una regola per ogni classe in ogni fase e scegliendo il meglio. Un ordine appropriato è l'ordine crescente in cui si verificano nel set di allenamento in modo che la classe più raramente viene elaborata prima e le più comuni vengono elaborate in un secondo momento. Un'altra accelerazione significativa si ottiene interrompendo l'intero processo quando viene generata una regola di precisione sufficientemente bassa, in modo da non trascorrere il tempo generando molte regole alla fine con copertura molto ridotta. Tuttavia, condizioni di terminazione molto semplici (come fermarsi quando l'esattezza di una regola è inferiore all'accuratezza predefinita per la classe che prevede) non forniscono la migliore prestazione e le uniche condizioni che sono state trovate sembrano funzionare bene Compilati in base al principio MDL.<br />
<br />
<br />
<br />
Initialize E to the instance set<br />
Split E into Grow and Prune in the ratio 2:1<br />
For each class C for which Grow and Prune both contain an instance<br />
Use the basic covering algorithm to create the best perfect rule for class C<br />
Calculate the worth w(R) for the rule on Prune, and of the rule with the<br />
final condition omitted w(R-)<br />
While w(R-) > w(R), remove the final condition from the rule and repeat the<br />
previous step<br />
From the rules generated, select the one with the largest w(R)<br />
Print the rule<br />
Remove the instances covered by the rule from E<br />
Continue<br />
<br />
<br />
Figure 6.3 Algorithm for forming rules by incremental reduced-error pruning.<br />
<br />
Usare l'ottimizzazione globale<br />
<br />
In generale, le regole generate utilizzando la potatura a incremento ridotto di errori in questo modo sembrano funzionare abbastanza bene, in particolare su grandi set di dati. Tuttavia, è stato trovato che un miglioramento delle prestazioni può essere ottenuto eseguendo un passo di ottimizzazione globale sull'insieme delle regole indotte. La motivazione è di aumentare l'esattezza della regola impostata dalla revisione o dalla sostituzione delle singole regole. Gli esperimenti dimostrano che sia la dimensione sia la performance delle serie di regole sono notevolmente migliorate dall'ottimizzazione postinduzione. D'altra parte, il processo stesso è piuttosto complesso.<br />
Per dare un'idea di come diventano elaborati ed euristici i "le regole derivate", la figura 6.4 mostra un algoritmo denominato RIPPER, un acronimo per la potatura incrementale ripetuta per produrre la riduzione degli errori.Le classi vengono esaminate in dimensioni crescenti e un insieme iniziale di regole per la classe viene generato utilizzando la potatura incrementale a errori ridotti. Viene introdotta una condizione di arresto supplementare che dipende dalla lunghezza della descrizione degli esempi e delle regole. La lunghezza della descrizione DL è una formula complessa che tiene conto del numero di bit necessari per inviare un insieme di esempi rispetto a un insieme di regole, il numero di bit richiesti per inviare una regola con le condizioni k e il numero di bit necessari Per inviare l'intero k-volte un fattore arbitrario del 50% per compensare la possibile ridondanza degli attributi.<br />
Dopo aver prodotto una regola impostata per la classe, ogni regola viene riesaminata e vengono prodotte due varianti, utilizzando ancora una potatura a errori ridotti, ma in questa fase vengono rimosse le istanze coperte da altre regole per la classe dal set di potature e il tasso di successo sul Le istanze rimanenti vengono utilizzate come criterio di potatura. Se una delle due varianti produce una migliore lunghezza di descrizione, sostituisce la regola. Successivamente, riattivamo la fase iniziale di costruzione per eliminare eventuali istanze scoperte di questa classe. Un controllo finale viene fatto per assicurare che ogni regola contribuisca alla riduzione della lunghezza della descrizione, prima di procedere a generare regole per la classe successiva.<br />
<br />
<br />
Figure 6.4 RIPPER: (a) algorithm for rule learning and (b) meaning of symbols.<br />
Ottenere regole da alberi di decisione parziale<br />
<br />
Esiste un approccio alternativo per regolare l'induzione che evita l'ottimizzazione globale ma produce comunque "set precisi e compatti". Il metodo combina la strategia di "divide-and-conquer" per l'apprendimento degli alberi decisionali con il comando 'separatend-conquer' per l'apprendimento delle regole. Adotta la strategia "separate-and-conquer" in quanto crea una regola, elimina le istanze che copre e continua a creare regole ricorsive per le restanti istanze finché non si restano.<br />
Tuttavia, differisce dall'approccio standard nel modo in cui viene creata ogni regola. In sostanza, per creare una sola regola, un albero di decisione potato è costruito per l'insieme attuale di istanze, la foglia con la massima copertura viene fatta in una regola e l'albero viene scartato.<br />
La prospettiva di costruire ripetutamente "gli alberi decisionali" solo per scartare la maggior parte di loro non è così bizzarra come sembrava prima. Utilizzando un albero potato per ottenere una regola invece di costruirlo in modo incrementale aggiungendo le congiunzioni una alla volta evita una tendenza a sovrapporre che è un problema caratteristico del principio di "separare e conquistare" il principiante. L'utilizzo della metodologia "separata e conquista" in combinazione con gli alberi decisionali aggiunge flessibilità e velocità. È veramente spreco costruire un albero di decisione completo solo per ottenere una sola regola, ma il processo può essere accelerato significativamente senza sacrificare i vantaggi precedenti.<br />
L'idea fondamentale è quella di costruire un albero di decisione parziale anziché un esame pienamente esplorato.<br />
<br />
<br />
Un albero di decisione parziale è un albero di decisione ordinario che contiene rami a sottopunti non definiti. Per generare un tale albero, le operazioni di costruzione e di potatura sono integrate al fine di trovare una sottostazione "stabile" che non può essere semplificata ulteriormente. Una volta trovato questo sottostruttura, l'edificio ad albero cessa e si legge una sola regola.<br />
L'algoritmo di creazione di alberi è riassunto nella Figura 6.5: divide un insieme di istanze ricorsivamente in un albero parziale. Il primo passo sceglie un test e suddivide le istanze in sottoinsiemi. La scelta viene fatta utilizzando lo stesso euristico-gain che normalmente viene utilizzato per costruire alberi decisionali (Sezione 4.3). Poi i sottogruppi sono espansi in ordine crescente della loro entropia media.<br />
La ragione di questo è che i sottostruttori successivi non saranno più probabilmente finiti per essere espansi e un sottoinsieme con bassa entropia media è più probabile che si traduca in un sottotree piccolo e quindi produca una regola più generale. Ciò procede ricorsivamente fino a quando un sottoinsieme viene espanso in una foglia e poi continua ulteriormente con il backtracking. Ma non appena appare un nodo interno che ha tutti i suoi figli espansi in foglie, l'algoritmo controlla se quel nodo è meglio sostituito da una singola foglia. Questo è solo il normale funzionamento subtree di sostituzione della potatura albero decisionale (Sezione 6.1). Se viene eseguita la sostituzione, l'algoritmo torna indietro nel modo standard, esplorando i fratelli del nodo appena sostituito.<br />
Tuttavia, se durante il backtrack si incontra un nodo di cui tutti i figli non sono foglie - e questo accadrà non appena una sostituzione subtree potenziale non viene eseguita - i restanti sottotitoli vengono lasciati inesplorati ei sottostrutture corrispondenti restano indefiniti. A causa della struttura ricorsiva dell'algoritmo, questo evento termina automaticamente la generazione di alberi.<br />
<br />
<br />
<br />
Figure 6.6 Example of building a partial tree.<br />
<br />
<br />
La Figura 6.6 mostra un esempio passo per passo. Durante le fasi della Figura 6.6 (da a) a (c), l'edificio ad albero continua ricorsivamente nel modo normale, ad eccezione che ad ogni punto viene scelto il fratello minore di entropia per l'espansione: nodo 3 tra stadi (a) e (b). I nodi ellittici grigi sono ancora inaspettati; Quelli rettangolari sono foglie. Tra stadi (b) e (c), il nodo rettangolare avrà un'entropia inferiore rispetto al suo fratello, nodo 5, ma non può essere ulteriormente ampliata perché è una foglia. Viene eseguito il backtracking e il nodo 5 viene scelto per l'espansione.<br />
Una volta raggiunta la fase (c), esiste un nodo - nodo 5 che ha tutti i suoi figli espulsi in foglie e questo provoca la potatura. La sostituzione del sottostazione per il nodo 5 è considerata e accettata, portando alla fase (d). Allora il nodo 3 è considerato per la sostituzione del sottofondo e questa operazione viene nuovamente accettata. Il backtracking continua e il nodo 4, con entropia inferiore rispetto al nodo 2, si espande in due foglie. Ora il subtree sostituzione è considerato per il nodo 4: supponiamo che il nodo 4 non venga sostituito.<br />
A questo punto il processo termina con l'albero parziale a tre fogli della fase (e). Se i dati sono privi di rumore e contengono istanze sufficienti per impedire l'algoritmo di eseguire qualsiasi potatura, bisogna esplorare un solo percorso dell'albero di decisione completo. Questo raggiunge il maggior guadagno di prestazioni possibile sul metodo naïve che costruisce ogni volta una struttura di decisione completa. Il guadagno diminuisce in quanto si effettuano più potature. Per i set di dati con attributi numerici, la complessità temporale asintotica dell'algoritmo è la stessa di costruire l'albero di decisione completo, perché in questo caso la complessità è dominata dal tempo necessario per ordinare in primo luogo i valori degli attributi.<br />
Una volta che è stato costruito un albero parziale, viene estratta una sola regola. Ogni foglia corrisponde ad una regola possibile e cerchiamo la foglia "migliore" di quei sottotrees (tipicamente una piccola minoranza) che sono stati estesi in foglie. Gli esperimenti mostrano che è meglio mirare alla regola più generale scegliendo la foglia che copre il maggior numero di istanze.<br />
Quando un set di dati contiene valori mancanti, questi possono essere trattati esattamente come sono in fase di costruzione degli alberi decisionali. Se un'istanza non può essere assegnata a un dato ramo a causa di un valore di attributo mancante, viene assegnato ad ognuna delle filiali con un peso proporzionale al numero di istanze di formazione che scendono in quel ramo, normalizzato dal numero totale di istruzioni di formazione con noti Valori nel nodo. Durante il test, la stessa procedura viene applicata separatamente per ciascuna regola, associando così un peso all'applicazione di ciascuna regola all'istanza di prova. Quel peso viene detratto dal peso totale dell'istanza prima di passarlo alla regola successiva nell'elenco. Una volta che il peso è ridotto a zero, le probabilità di classe previste vengono combinate in una classificazione finale secondo i pesi.<br />
Questo produce un metodo semplice ma sorprendentemente efficace per apprendere elenchi di decisione per dati rumorosi. Il suo principale vantaggio rispetto ad altri schemi di revisionamento è la semplicità, perché altri metodi richiedono una fase complessiva di ottimizzazione globale per ottenere lo stesso livello di prestazioni.<br />
Regole con Eccezioni <br />
<br />
Nella sezione 3.5 abbiamo appreso che un'estensione naturale delle regole è consentire loro di avere eccezioni e eccezioni alle eccezioni e così via, anzi l'insieme di regole può essere considerato come eccezioni a una regola di classificazione predefinita che viene utilizzata quando nessun altro Le regole si applicano. Il metodo per generare una regola "buona", usando una delle misure descritte nella sezione precedente, fornisce esattamente il meccanismo necessario per generare regole con eccezioni.<br />
In primo luogo, è selezionata una classe predefinita per la regola di alto livello: è naturale utilizzare la classe che si verifica più frequentemente nei dati di addestramento. Quindi, viene rilevata una regola relativa a qualsiasi classe diversa da quella predefinita. Di tutte queste regole è naturale cercare quello con il potere più discriminatorio, ad esempio quello con la migliore valutazione su un set di test. Supponiamo che questa regola abbia la forma<br />
<br />
<br />
if <condition> then class = <new class><br />
<br />
<br />
Viene utilizzato per dividere i dati di formazione in due sottoinsiemi: uno contenente tutti i casi per cui la condizione della condizione è vera e l'altra contiene quelle per cui è falsa. Se ciascun sottoinsieme contiene istanze di più di una classe, l'algoritmo viene richiamato ricorsivamente su quel sottoinsieme. Per il sottoinsieme per cui la condizione è vera, la "classe di default" è la nuova classe come specificata dalla regola; Per il sottoinsieme per cui la condizione è falsa, la classe predefinita resta come prima.<br />
Esaminiamo come funzionerebbe questo algoritmo per le regole con le eccezioni indicate nella sezione 3.5 per i dati Iris della tabella 1.4. Rappresentemo le regole nella forma grafica mostrata in Figura 6.7, che è infatti equivalente alle regole testuali che abbiamo dato in Figura 3.5. Il valore predefinito di Iris setosa è il nodo di entrata in alto a sinistra. I percorsi orizzontali e tratteggiati presentano eccezioni, quindi la casella successiva, che contiene una regola che conclude Iris versicolor, è un'eccezione all'impostazione predefinita. Sotto di questa è un'alternativa, una seconda eccezione - le alternative sono rappresentate da linee verticali e solide che portano alla conclusione Iris virginica. Seguendo il percorso superiore lungo orizzontalmente si passa ad un'eccezione alla regola versicolor Iris che lo sostituisce ogni volta che la condizione nella casella in alto a destra, con la conclusione Iris virginica. Sotto questo è un'alternativa, che conduce (come succede) alla stessa conclusione. Tornando alla casella al centro inferiore, questa ha la sua eccezione, la casella in basso a destra, che dà la conclusione Iris versicolor. I numeri in basso a destra di ogni casella forniscono la "copertura" della regola, espressa come numero di esempi che lo soddisfano diviso per il numero che soddisfa la sua condizione, ma non la sua conclusione. Ad esempio, la condizione nella casella centrale superiore si applica a 52 degli esempi, e 49 di essi sono Iris versicolor. La forza di questa rappresentazione è che si può ottenere una sensazione molto buona per l'effetto delle regole dalle caselle verso il lato sinistro; Le caselle a destra coprono solo alcuni casi eccezionali.<br />
<br />
<br />
Figure 6.7 Rules with exceptions for the iris data.<br />
<br />
Per creare queste regole, l'impostazione predefinita viene impostata per l'Iris setosa prendendo la classe più frequente nel set di dati. Questa è una scelta arbitraria perché per questo set di dati tutte le classi si verificano esattamente 50 volte; Come mostrato nella Figura 6.7 questa regola di default è corretta in 50 di 150 casi. Viene quindi ricercata la regola migliore che prevede un'altra classe. In questo caso è<br />
<br />
<br />
<br />
if petal length ≥ 2.45 and petal length < 5.355<br />
and petal width < 1.75 then Iris versicolor<br />
<br />
<br />
Questa regola copre 52 istanze, di cui 49 sono Iris versicolor. Divide il set di dati in due sottoinsiemi: le 52 istanze che soddisfano la condizione della regola ei 98 restanti che non lo fanno.<br />
In primo luogo lavoriamo sull'ex sottoinsieme. La classe predefinita per queste istanze è Iris versicolor: ci sono solo tre eccezioni, tutte possibili per essere Iris virginica. La regola migliore per questo sottoinsieme che non prevede Iris versicolor viene identificata successivamente:<br />
<br />
<br />
<br />
if petal length ≥ 4.95 and petal width < 1.55 then Iris virginica<br />
<br />
<br />
Copre due delle tre virginiche Iris e nient'altro. Di nuovo divide il sottoinsieme in due: quei casi che soddisfano la sua condizione e quelli che non lo fanno. Fortunatamente, in questo caso, tutti i casi che soddisfano la condizione hanno infatti la classe Iris virginica, quindi non c'è bisogno di un'ulteriore eccezione.<br />
Tuttavia, le altre istanze comprendono ancora la terza Iris virginica, insieme a 49 versicolori Iris, che sono il predefinito a questo punto. Ancora una volta viene ricercata la regola migliore:<br />
<br />
<br />
<br />
if sepal length < 4.95 and sepal width ≥ 2.45 then Iris virginica<br />
<br />
<br />
Questa regola copre la restante Iris virginica e nient'altro, quindi non ha alcuna eccezione. Inoltre, tutte le istanze rimanenti nel sottogruppo che non soddisfano la sua condizione hanno la classe Iris versicolor, che è l'impostazione predefinita, quindi non è più necessario eseguire.<br />
Ritorna ora al secondo sottoinsieme creato dalla regola iniziale, le istanze che non soddisfano la condizione<br />
<br />
<br />
<br />
petal length ≥ 2.45 and petal length < 5.355 and petal width < 1.75<br />
<br />
<br />
Delle regole per queste istanze che non prevedono la classe predefinita Iris setosa, il meglio è <br />
<br />
<br />
if petal length ≥ 3.35 then Iris virginica<br />
<br />
<br />
Copre tutte le 47 virginicas Iris che sono nell'insieme di esempio (3 sono state rimosse dalla prima regola, come spiegato in precedenza). Copre anche 1 Iris versicolor. Questo deve essere preso in considerazione come un'eccezione, per la regola finale:<br />
<br />
<br />
<br />
if petal length < 4.85 and sepal length < 5.95 then Iris versicolor<br />
<br />
<br />
Fortunatamente, l'insieme di istanze che non soddisfano la sua condizione sono tutte le impostazioni predefinite, Iris setosa. Così la procedura è terminata.<br />
Le regole prodotte hanno la proprietà che la maggior parte degli esempi sono coperti dalle regole di alto livello e quelle di livello inferiore rappresentano davvero eccezioni. Ad esempio, l'ultima clausola di eccezione nelle regole precedenti e la clausola altrimenti nidificata in entrambi i casi coprono un esempio solitario e la rimozione avrebbe poco effetto. Anche la regola di eccezione nidificata rimane solo due esempi. Così si può ottenere una sensazione eccellente per ciò che le regole fanno ignorando tutta la struttura più profonda e guardando solo al primo livello o due. Quella è l'attrazione delle regole con eccezioni.<br />
Discusione<br />
<br />
Tutti gli algoritmi per la produzione delle regole di classificazione che abbiamo descritto usano l'approccio di base o di separazione e conquista. Per il caso semplice e senza rumori questo produce PRISM (Cendrowska 1987), un algoritmo semplice e facile da comprendere. Quando si applicano a problemi a due categorie con l'assunzione del mondo chiuso, è necessario solo produrre regole per una classe: allora le regole sono in forma normale disgiunta e possono essere eseguite su istanze di prova senza che ne derivino ambiguità. Quando si applicano ai problemi multiclasse, viene generato un set di regole separato per ciascuna classe: pertanto un'istanza di prova può essere assegnata a più classi oa nessuna classe, e sono necessarie ulteriori euristiche se viene richiesta una previsione unica.<br />
Per ridurre l'overfitting in situazioni rumorose, è necessario produrre regole che non sono "perfette" anche sul set di allenamento. Per fare questo è necessario disporre di una misura per la "bontà" o valore di una regola. Con tale misura è possibile abbandonare l'approccio classe-per-classe dell'algoritmo di copertura di base e iniziare generando la regola migliore, indipendentemente dalla classe che prevede e quindi rimuovere tutti gli esempi coperti da questa regola e continuare processo.<br />
Questo produce un metodo per produrre un elenco di decisioni piuttosto che un insieme di regole di classificazione indipendenti e le liste di decisione hanno il vantaggio importante che non generano ambiguità quando vengono interpretate.<br />
<br />
L'idea di potatura incrementale di errori ridotti è dovuta a Fürnkranz e Widmer (1994) e costituisce la base per un'induzione di regola veloce ed efficace. Il principiante RIPPER è dovuto a Cohen (1995), anche se la descrizione pubblicata sembra differire dall'implementazione nel modo in cui la lunghezza della descrizione (DL) influenza la condizione di arresto. Quello che abbiamo presentato qui è l'idea di base dell'algoritmo; Ci sono molti altri dettagli nell'implementazione.<br />
Tutta la questione di misurare il valore di una regola non è ancora stata risolta in modo soddisfacente. Sono state proposte molte misure diverse, alcuni esplicitamente euristici e altri basati su motivi informativi-teorici o probabilistici. Tuttavia, sembra non avere consenso su quale sia la misura migliore da utilizzare. Un ampio studio teorico di vari criteri è stato eseguito da Fürnkranz e Flach (2005).<br />
Il metodo di regola-apprendimento basato su alberi decisionali parziali è stato sviluppato da Frank e Witten (1998). Produce set di regole accurate quanto quelli generati da C4.5 e più precisi di altri metodi di induzione rapida. Tuttavia, il suo principale vantaggio rispetto ad altri schemi non è la prestazione, ma la semplicità: combinando il metodo di induzione di un albero decisionale dall'alto verso il basso con l'apprendimento delle regole separate e conquistate, produce buone regole senza alcuna necessità di ottimizzazione globale.<br />
La procedura per la generazione di regole con eccezioni è stata sviluppata come un'opzione nel sistema Induct di Gaines e Compton (1995), che li ha definiti regole di ripple-down. In un esperimento con un grande set di dati medici (22.000 istanze, 32 attributi e 60 classi), essi hanno scoperto che le persone possono comprendere più grandi sistemi di regole con eccezioni più facilmente rispetto a sistemi equivalenti di regole regolari perché è così che pensano al Diagnosi mediche complesse che sono coinvolte. Richards e Compton (1998) descrivono il loro ruolo come alternativa all'ingegneria classica della conoscenza.<br />
Estensione di modelli lineari<br />
<br />
La sezione 4.6 descrive come i modelli lineari semplici possono essere utilizzati per la classificazione in situazioni in cui tutti gli attributi sono numerici. Il loro più grande svantaggio è che possono rappresentare solo i confini lineari tra le classi, che li rende troppo semplici per molte applicazioni pratiche. Le macchine vettoriali di supporto utilizzano modelli lineari per implementare i confini della classe non lineare. (Anche se è un termine ampiamente usato, le macchine vettoriali di supporto sono qualcosa di erroneo nome: sono algoritmi, non macchine.) Come può essere possibile? Il trucco è facile: trasformare l'input utilizzando una mappatura non lineare; In altre parole, trasformare lo spazio di istanza in un nuovo spazio. Con una mappatura non lineare, una retta nel nuovo spazio non sembra dritto nello spazio dell'istanza originale. Un modello lineare costruito nel nuovo spazio può rappresentare un limite di decisione non lineare nello spazio originale.<br />
Immagina di applicare questa idea direttamente ai modelli lineari ordinari nella sezione 4.6. Ad esempio, l'insieme originale di attributi potrebbe essere sostituito da uno che fornisce tutti i prodotti di n fattori che possono essere costruiti da questi attributi. Un esempio per due attributi, inclusi tutti i prodotti con tre fattori, è<br />
<br />
<br />
<br />
x = w1a1 + w 2a1 a2 + w 3a1a2 + w 4a2 .<br />
<br />
<br />
Qui x è il risultato, a1 e a2 sono i due valori dell'attributo e ci sono quattro pesi da imparare. Come descritto nella sezione 4.6, il risultato può essere utilizzato per la classificazione mediante formazione di un sistema lineare per ogni classe e assegnazione di un'istanza sconosciuta alla classe che fornisce la massima uscita x - la tecnica standard della regressione lineare multiresponse. Quindi, a1 e a2 saranno i valori dell'attributo per l'istanza di prova. Per generare un modello lineare nello spazio compreso tra questi prodotti, ogni istanza di formazione viene mappata nel nuovo spazio computando tutti i possibili prodotti a tre fattori dei suoi due valori di attributo. L'algoritmo di apprendimento viene quindi applicato alle istanze trasformate. Per classificare un'istanza, viene elaborata dalla stessa trasformazione prima della classificazione. Non c'è nulla che ci impedisca di aggiungere altri attributi sintetici. Ad esempio, se un termine costante fosse incluso, gli attributi originali e tutti i prodotti a due fattori avrebbero prodotto otto pesi da imparare. (In alternativa, aggiungere un attributo aggiuntivo il cui valore è sempre una costante avrebbe lo stesso effetto.) Infatti, i polinomi di grado sufficientemente elevato possono approssimare i limiti arbitrari di decisione a qualsiasi precisione richiesta.<br />
Sembra troppo bello per essere vero, e lo è. Come probabilmente avete immaginato, i problemi derivano da questa procedura a causa del gran numero di coefficienti introdotti dalla trasformazione in qualsiasi impostazione realistica. Il primo ostacolo è la complessità computazionale. Con 10 attributi nel set di dati originale, supponiamo di includere tutti i prodotti con cinque fattori: allora l'algoritmo di apprendimento dovrà determinare più di 2000 coefficienti. Se il suo tempo di esecuzione è cubico nel numero di attributi, come è per la regressione lineare, la formazione sarà impraticabile.<br />
Questo è un problema di praticabilità. Il secondo problema è uno dei principi: overfitting. Se il numero di coefficienti è elevato rispetto al numero di istanze di addestramento, il modello risultante sarà "troppo non lineare" - sovrascrive i dati formativi. Ci sono troppi parametri nel modello.<br />
L'iperplano di margine massimo<br />
<br />
Figure 6.8 A maximum margin hyperplane.<br />
<br />
Le macchine vettoriali di supporto risolvono entrambi i problemi. Essi sono basati su un algoritmo che trova un tipo speciale di modello lineare: il margine massimo iperplano. Sappiamo già che cosa è un iperplano: è solo un'altra parola per un modello lineare. Per visualizzare un hyperplane di margine massimo, immaginate un set di dati a due classi, le cui classi sono linearmente separabili; Ovvero c'è un spazio di hyperplane nello spazio di esempio che classifica correttamente tutte le istanze di addestramento. L'iperplano di margine massimo è quello che offre la massima separazione tra le classi, non si avvicina più di quanto sia necessario. Un esempio è mostrato nella Figura 6.8, in cui le classi sono rappresentate rispettivamente da cerchi aperti e pieni. Tecnicamente, lo scafo convesso di un set di punti è il poligono convesso più chiuso: il suo contorno emerge quando si collega ogni punto dell'insieme ad ogni altro punto.<br />
Poiché abbiamo supposto che le due classi siano lineariamente separabili, i loro scafi convessi non possono sovrapporsi. Tra tutti gli iperplani che separano le classi, l'iperplano di margine massimo è quello più lontano possibile da entrambi gli scafi convessi, è il bisettore perpendicolare della linea più breve che collega gli scafi, che è mostrato tratteggiato nella figura.<br />
Le istanze che sono più vicine al hyperplane del margine massimo - quelle con la distanza minima di esso - vengono chiamate vettori di supporto. C'è sempre almeno un vettore di supporto per ogni classe, e spesso ci sono più. La cosa importante è che l'insieme dei vettori di supporto definisce in modo univoco l'iperplano di margine massimo per il problema dell'apprendimento. Dato i vettori di supporto per le due classi, possiamo facilmente costruire il hyperplane di margine massimo. Tutti gli altri istituti di formazione sono irrilevanti, possono essere eliminati senza modificare la posizione e l'orientamento dell'iperplano.<br />
<br />
Si potrebbe scrivere un iperplano che separa le due classi<br />
<br />
<br />
<br />
x = w 0 + w1a1 + w2a2<br />
<br />
Nel caso di due attributi, dove a1 e a2 sono i valori dell'attributo e ci sono tre pesi da imparare. Tuttavia, l'equazione che definisce il hyperplane del margine massimo può essere scritta in un'altra forma, in termini di vettori di supporto. Scrivere il valore di classe y di un'istanza di formazione come 1 (per sì, è in questa classe) o -1 (per no, non lo è). Quindi il hyperplane di margine massimo è <br />
<br />
x = b + ...<br />
<br />
<br />
<br />
Qui, yi è il valore di classe dell'istanza di formazione a (i); Mentre b e ai sono parametri numerici che devono essere determinati dall'algoritmo di apprendimento. Si noti che a (i) e a sono vettori. Il vettore a rappresenta un'istanza di prova, proprio come il vettore [a1, a2] rappresentava un'istanza di prova nella formulazione precedente. I vettori a (i) sono i vettori di supporto, quelli circondati in figura 6.8; Sono membri selezionati del set di formazione. Il termine a (i) ◊a rappresenta il punto prodotto dell'istanza di prova con uno dei vettori di supporto. Se non si conosce la notazione del prodotto dot, bisogna ancora capire il concetto di ciò che segue: basta pensare a (i) come intero set di valori di attributo per il vettore di supporto ith. Infine, b e ai sono parametri che determinano l'iperplano, proprio come i pesi w0, w1 e w2 sono parametri che determinano l'iperplano nella formulazione precedente.<br />
Si scopre che trovare i vettori di supporto per i set di istanze e determinare i parametri b e ai appartiene a una classe standard di problemi di ottimizzazione noto come ottimizzazione quadratica vincolata. Esistono pacchetti software per risolvere questi problemi (vedi Fletcher 1987 per un approccio completo e pratico dei metodi di soluzione). Tuttavia, la complessità computazionale può essere ridotta e l'apprendimento può essere accelerato se vengono applicati algoritmi speciali per le macchine vettoriali di supporto per la formazione, ma i dettagli di questi algoritmi sono al di là dell'ambito di questo libro (Platt 1998).<br />
limiti della classe non lineare - Nonlinear class boundaries<br />
<br />
Abbiamo motivato l'introduzione di macchine vettoriali di supporto sostenendo che possano essere utilizzate per modellare i confini delle classi non lineari. Tuttavia, finora abbiamo descritto solo il caso lineare. Considerate cosa succede quando una trasformazione degli attributi, come descritto in precedenza, viene applicata ai dati di addestramento prima di determinare l'iperplano del margine massimo. Ricordiamo che ci sono due problemi con l'applicazione diretta di tali trasformazioni a modelli lineari: complessità computazionale infeasibile da un lato e overfitting dall'altro.<br />
Con i vettori di supporto non è probabile che si verifichino sovrapposizioni. Il motivo è che è inevitabilmente associato all'instabilità: cambiando uno o due vettori di istanza comporterà cambiamenti larghi a grandi sezioni del confine decisionale. Ma il hyperplane del margine massimo è relativamente stabile: si muove solo se vengono aggiunti o eliminati istanze di addestramento che sono vettori di supporto - e questo è vero anche nello spazio altamente dimensionato dalla trasformazione non lineare. La sovrapposizione è causata dalla flessibilità troppo elevata del confine decisionale. I vettori di supporto sono rappresentanti globali di tutto il set di punti di formazione, e di solito sono pochi, che danno una certa flessibilità. Pertanto è improbabile che si verifichi l'overfitting.<br />
E la complessità computazionale? Questo è ancora un problema. Supponiamo che lo spazio trasformato sia un alto-dimensionale in modo che i vettori di supporto trasformati e l'istanza di prova abbiano molti componenti. Secondo l'equazione precedente, ogni volta che un'istanza viene classificata, il suo prodotto dotato di tutti i vettori di supporto deve essere calcolato. Nello spazio ad alta dimensione prodotta dalla mappatura non lineare questo è piuttosto costoso. L'ottenimento del prodotto dot comprende una moltiplicazione e un'aggiunta per ogni attributo e il numero di attributi nel nuovo spazio può essere enorme. Questo problema si verifica non solo durante la classificazione ma anche durante la formazione, perché gli algoritmi di ottimizzazione devono calcolare molto spesso i prodotti dello stesso punto.<br />
Fortunatamente, si scopre che è possibile calcolare il prodotto a punti prima di eseguire la mappatura non lineare, sul set di attributi originali. Una versione highdimensionale dell'equazione precedente è semplicemente<br />
<br />
<br />
<br />
x = b + ....<br />
<br />
<br />
<br />
Dove n viene scelto come numero di fattori nella trasformazione (tre nell'esempio che abbiamo usato in precedenza). Se si espande il termine (a (i) ◊a) n, troverete che contiene tutti i termini ad alta dimensionalità che potrebbero essere coinvolti se i vettori di prova e di formazione sono stati prima trasformati includendo tutti i prodotti di n fattori e Punto prodotto è stato preso del risultato. (Se effettivamente fai il calcolo, noterai che alcuni fattori costanti - i coefficienti binomiali - vengono introdotti, tuttavia non importa: è la dimensionalità dello spazio che ci riguarda, le costanti semplicemente riducono gli assi.) A causa di Questa equivalenza matematica, i prodotti dot possono essere calcolati nello spazio iniziale basso-dimensionale e il problema diventa fattibile. In termini di implementazione, si prende un pacchetto software per l'ottimizzazione quadratica vincolata e ogni volta che una (i) ◊a viene valutata si valuta (a (i) ◊a) n invece. È così semplice, perché in entrambi gli algoritmi di ottimizzazione e di classificazione questi vettori sono stati utilizzati solo in questo tipo di prodotto. I vettori di formazione, compresi i vettori di supporto e l'istanza di prova, rimangono nello spazio originale a bassa dimensione durante i calcoli.<br />
La funzione (xÀy) n, che calcola il prodotto a punti di due vettori x e y e solleva il risultato alla potenza n, viene chiamato kernel polinomiale. Un buon modo per scegliere il valore di n è iniziare con 1 (un modello lineare) e incrementarlo finché l'errore stimato cessa di migliorare. Solitamente, sono sufficienti valori piuttosto piccoli. È possibile utilizzare altre funzioni del kernel per implementare mappature non lineari differenti. Due che sono spesso suggeriti sono il nucleo radiale (RBF) e il kernel sigmoidale. Quale produce i migliori risultati dipende dall'applicazione, anche se le differenze sono raramente grandi nella pratica. È interessante notare che una macchina vettoriale di supporto con il kernel RBF è semplicemente un tipo di rete neurale denominata una rete RBF (che descriviamo più tardi) e uno con il kernel sigmoid implementa un altro tipo di rete neurale, un perceptron multilayer con uno Strato nascosto (anche descritto più avanti).<br />
In questa sezione abbiamo assunto che i dati di addestramento sono linearmente separabili, sia nello spazio dell'istanza o nel nuovo spazio spostato dalla mappatura non lineare. Si scopre che le macchine vettoriali di supporto possono essere generalizzate nel caso in cui i dati di allenamento non siano separabili. Questo si ottiene collocando un limite superiore sui coefficienti precedenti ai. Purtroppo questo parametro deve essere scelto dall'utente e l'impostazione migliore può essere determinata solo mediante la sperimentazione. Inoltre, in tutti i casi non banali, non è possibile determinare a priori se i dati sono linearmente separabili o meno.<br />
Infine, dobbiamo menzionare che, rispetto ad altri metodi come gli allievi dell'albero decisionale, anche gli algoritmi di formazione più veloci per le macchine vettoriali di supporto sono lenti se applicate nell'ambiente non lineare. D'altra parte, spesso producono classificatori molto accurati perché possono essere ottenuti dei confini decisionali sottili e complessi.<br />
<h4>
Regressione vettoriale di supporto</h4>
<span class="" id="result_box" lang="it"><span title="The concept of a maximum margin hyperplane only applies to classification.">Il concetto di un iperplano di margine massimo si applica solo alla classificazione. </span><span title="However, support vector machine algorithms have been developed for numeric prediction that share many of the properties encountered in the classification case: they produce a model that can usually be expressed in terms of a few support vectors and can be applied to nonlinear problems using kernel functions">Tuttavia,
sono stati sviluppati algoritmi di macchine vettoriali di supporto per
la previsione numerica che condividono molte delle proprietà incontrate
nel caso di classificazione: producono un modello che può essere
solitamente espresso in termini di pochi vettori di supporto e può
essere applicato a problemi non lineari con funzioni di kernel </span><span title=".">. </span><span title="As with regular support vector machines, we will describe the concepts involved but do not attempt to describe the algorithms that actually perform the work.
">Come per le macchine vettoriali di supporto regolare, descriveremo i
concetti implicati, ma non cercheremo di descrivere gli algoritmi che
effettivamente eseguono il lavoro.<br /> </span><span title="As with linear regression, covered in Section 4.6, the basic idea is to find a function that approximates the training points well by minimizing the prediction error.">Come
per la regressione lineare, descritta nella sezione 4.6, l'idea di base
è trovare una funzione che approssima bene i punti di addestramento
riducendo al minimo l'errore di previsione. </span><span title="The crucial difference is that all deviations up to a user-specified parameter e are simply discarded.">La differenza cruciale è che tutte le deviazioni fino a un parametro specificato dall'utente vengono semplicemente scartate. </span><span title="Also, when minimizing the error, the risk of overfitting is reduced by simultaneously trying to maximize the flatness of the function.">Inoltre,
quando riducono al minimo l'errore, il rischio di overfitting è ridotto
cercando simultaneamente di massimizzare la piattezza della funzione. </span><span title="Another difference is that what is minimized is normally the predictions’ absolute error instead of the squared error used in linear regression.">Un'altra
differenza è che ciò che viene ridotto al minimo è normalmente l'errore
assoluto delle predizioni anziché l'errore quadrato utilizzato nella
regressione lineare. </span><span title="(There are, however, versions of the algorithm that use the squared error instead.)
">(Esistono tuttavia versioni dell'algoritmo che utilizzano invece l'errore quadrato).<br /> </span><span title="A user-specified parameter e defines a tube around the regression function in which errors are ignored: for linear support vector regression, the tube is a cylinder.">Un
parametro specificato dall'utente e definisce un tubo attorno alla
funzione di regressione in cui gli errori vengono ignorati: per la
regressione lineare vettoriale di supporto, il tubo è un cilindro. </span><span title="If all training points can fit within a tube of width 2e, the algorithm outputs the function in the middle of the flattest tube that encloses them.">Se
tutti i punti di allenamento possono essere inseriti all'interno di un
tubo di larghezza 2e, l'algoritmo esegue la funzione al centro del tubo
flattest che li racchiude. </span><span title="In this case the total perceived error is zero.">In questo caso l'errore totale percepito è zero. </span><span title="Figure 6.9(a) shows a regression problem with one attribute, a numeric class, and eight instances.">La Figura 6.9 (a) mostra un problema di regressione con un attributo, una classe numerica e otto istanze. </span><span title="In this case e was set to 1, so the width of the tube around the regression function (indicated by dotted lines) is 2. Figure 6.9(b) shows the outcome of the learning process when e is set to 2. As you can">In
questo caso e è stato impostato su 1, quindi la larghezza del tubo
attorno alla funzione di regressione (indicata da linee tratteggiate) è
2. La figura 6.9 (b) mostra l'esito del processo di apprendimento quando
e è impostato su 2. Come potete </span><span title="see, the wider tube makes it possible to learn a flatter function.
">Vedere, il tubo più ampio consente di imparare una funzione più liscia.<br /> </span><span title="The value of e controls how closely the function will fit the training data.">Il valore di e controlla quanto vicino la funzione corrisponderà ai dati formativi. </span><span title="Too large a value will produce a meaningless predictor—in the extreme case, when 2e exceeds the range of class values in the training data, the regression line is horizontal and the algorithm just predicts the mean class value.">Troppo
grande un valore produrrà un predittore inutile - nel caso estremo,
quando 2e supera l'intervallo di valori di classe nei dati di
addestramento, la linea di regressione è orizzontale e l'algoritmo
prevede appena il valore della classe media. </span><span title="On the other hand, for small values of e there may be no tube that encloses all the data.">D'altra parte, per i piccoli valori di e non ci può essere un tubo che racchiuda tutti i dati. </span><span title="In that case some training points will have nonzero error, and there will be a tradeoff between the prediction error and the tube’s flatness.">In
tal caso alcuni punti di addestramento avranno un errore non zero, e ci
sarà un compromesso tra l'errore di previsione e la piattaforma del
tubo. </span><span title="In Figure 6.9(c), e was set to 0.5 and there is no tube of width 1 that encloses all the data.">Nella Figura 6.9 (c), e è stato impostato su 0,5 e non c'è tubo di larghezza 1 che racchiude tutti i dati.</span></span><br />
<span class="" id="result_box" lang="it"><span class="">Per il caso lineare, è possibile scrivere la funzione di regressione vettoriale di supporto</span></span><br />
<span class="" id="result_box" lang="it"><span class=""> x = b + ....</span></span><br />
<br />
<span class="" id="result_box" lang="it"><span class=""> </span></span><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span title="As with classification, the dot product can be replaced by a kernel function for nonlinear problems.">Come per la classificazione, il prodotto dot può essere sostituito da una funzione kernel per problemi non lineari. </span><span title="The support vectors are all those points that do not fall strictly within the tube—that is, the points outside the tube and on its border.">I
vettori di supporto sono tutti quei punti che non cadono rigorosamente
all'interno del tubo, cioè i punti fuori dal tubo e sul bordo. </span><span title="As with classification, all other points have coefficient 0 and can be deleted from the training data without changing the outcome of the learning process.">Come
per la classificazione, tutti gli altri punti hanno un coefficiente 0 e
possono essere eliminati dai dati formativi senza modificare l'esito
del processo di apprendimento. </span><span title="In contrast to the classification case, the ai may be negative.
">Contrariamente al caso di classificazione, gli ai possono essere negativi.<br /> </span><span title="We have mentioned that as well as minimizing the error, the algorithm simultaneously tries to maximize the flatness of the regression function.">Abbiamo
menzionato che oltre a minimizzare l'errore, l'algoritmo cerca allo
stesso tempo di massimizzare la flatness della funzione di regressione. </span><span title="In Figure 6.9(a) and (b), where there is a tube that encloses all the training data, the algorithm simply outputs the flattest tube that does so.">Nella
figura 6.9 (a) e (b), dove esiste un tubo che racchiude tutti i dati di
allenamento, l'algoritmo emette semplicemente il tubo più flessibile
che lo fa. </span><span title="However, in Figure 6.9(c) there is no tube with error 0, and a tradeoff is struck between the prediction error and the tube’s flatness.">Tuttavia,
nella figura 6.9 (c) non esiste un tubo con errore 0 e si verifica un
compromesso tra l'errore di previsione e la piattaforma del tubo. </span><span title="This tradeoff is controlled by enforcing an upper limit C on the absolute value of the coefficients ai.">Questo compenso è controllato applicando un limite superiore C sul valore assoluto dei coefficienti ai. </span><span title="The upper limit restricts the influence of the support vectors on the shape of the regression function and is a parameter that the user must specify in addition to e.">Il
limite superiore limita l'influenza dei vettori di supporto sulla forma
della funzione di regressione ed è un parametro che l'utente deve
specificare in aggiunta a e. </span><span title="The larger C is, the more closely the function can fit the data.
">Il più grande C è, più la funzione può adattarsi ai dati.<br /> </span><span title="In the degenerate case e = 0 the algorithm simply performs 'least-absolute-error' regression under the coefficient size constraint, and all training instances become support vectors.">Nel
caso degenerato e = 0, l'algoritmo esegue semplicemente la regressione
'meno-assoluto-errore' sotto il vincolo di dimensione del coefficiente e
tutte le istanze di formazione diventano vettori di supporto. </span><span title="Conversely, if e is large enough that the tube can enclose all the data, the error becomes zero, there is no tradeoff to make, and the algorithm outputs the flattest tube that encloses the data irrespective of the value of C.">Al
contrario, se e è abbastanza grande che il tubo può racchiudere tutti i
dati, l'errore diventa zero, non vi è alcun compromesso da fare e
l'algoritmo esegue il tubo piatto che racchiude i dati indipendentemente
dal valore di C</span></span> </span></span><br />
<br />
<span class="" id="result_box" lang="it"><span class="">Figure 6.9 Support vector regression: (a) e = 1, (b) e = 2, and (c) e = 0.5.</span></span><br />
<h4>
<span class="" id="result_box" lang="it"><span class=""> </span></span> The kernel perceptron</h4>
<span class="" id="result_box" lang="it"><span class="alt-edited">Nella
sezione 4.6 abbiamo introdotto l'algoritmo perceptron per istruire un
classificatore lineare. Si scopre che il trucco del kernel può anche
essere utilizzato per aggiornare questo algoritmo per imparare i confini
di decisione non lineari. Per vedere questo, rivediamo prima il caso
lineare. L'algoritmo perceptron ripete ripetutamente attraverso
l'istanza dei dati di allenamento per istanza e aggiorna il vettore di
peso ogni volta che una di queste istanze è erronea in base ai pesi
appresi finora. Il vettore di peso viene aggiornato semplicemente
aggiungendo o sottraendo i valori dell'attributo dell'istanza o da esso.
Ciò significa che il vettore finale di peso è solo la somma dei casi
che sono stati erroneamente classificati. Il perceptron fa le sue
previsioni in base a se</span></span><br />
<span class="" id="result_box" lang="it"><span class="alt-edited">......</span></span><br />
è <span class="" id="result_box" lang="it"><span class="">maggiore o
minore di zero, dove wi è il peso dell'attributo i e AI il valore
attributo corrispondente dell'istanza che vogliamo classificare.</span> <span class="">Invece, potremmo usare</span></span><br />
<span class="" id="result_box" lang="it"><span class="">.......</span></span><br />
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class="">Qui ¢ (j) è
l'istanza di addestramento errata, un ¢ (j) i è il suo valore di
attributo ith, e y (j) è il suo valore di classe (+1 o -1).</span> <span class="">Per
implementare questo non controlliamo più un vettore di peso esplicito:
memorizziamo semplicemente le istanze finora classificate e usiamo
l'espressione precedente per fare una previsione.</span><br /> <span class="">Sembra
che non abbiamo guadagnato nulla - infatti, l'algoritmo è molto più
lento perché iterizza attraverso tutte le istanze di addestramento
erronee ogni volta che viene effettuata una previsione.</span> <span class="">Tuttavia,
l'ispezione più approfondita di questa formula rivela che può essere
espressa in termini di prodotti a punti tra istanze.</span> <span class="">Innanzitutto, scambia i segni di somma per produrre </span></span></span></span><br />
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class="">.....</span></span></span></span><br />
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class="">La seconda somma è solo un prodotto a punti tra due istanze e può essere scritto come</span></span></span></span></span></span><br />
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""> </span></span> ....</span></span></span></span><br />
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""> Questo suona una campana!</span> <span class="">Una simile espressione per le macchine vettoriali di supporto ha permesso l'utilizzo di kernel.</span> <span class="">Infatti, possiamo applicare esattamente lo stesso trucco e utilizzare una funzione del kernel invece del prodotto dot.</span> <span class="">Scrivendo questa funzione come K (...) dà</span></span> </span></span> </span></span><br />
......<br />
<span class="" id="result_box" lang="it"><span title="In this way the perceptron algorithm can learn a nonlinear classifier simply by keeping track of the instances that have been misclassified during the training process and using this expression to form each prediction.
">In questo modo l'algoritmo perceptron può imparare un classificatore
non lineare semplicemente tenendo traccia delle istanze che sono state
miscelate durante il processo di allenamento e utilizzando questa
espressione per formare ogni predizione.<br /> </span><span title="If a separating hyperplane exists in the high-dimensional space implicitly created by the kernel function, this algorithm will learn one.">Se
esiste un iperplano di separazione nello spazio altamente dimensionale
creato implicitamente dalla funzione del kernel, questo algoritmo la
imparerà. </span><span title="However, it won’t learn the maximum margin hyperplane found by a support vector machine classifier.">Tuttavia, non imparerà il hyperplane di margine massimo trovato da un classificatore di macchine vettori di supporto. </span><span title="This means that classification performance is usually worse.">Ciò significa che la prestazione di classificazione è di solito peggiore. </span><span title="On the plus side, the algorithm is easy to implement and supports incremental learning.
">D'altra parte, l'algoritmo è facile da implementare e supporta l'apprendimento incrementale.<br /> </span><span title="This classifier is called the kernel perceptron.">Questo classificatore è chiamato il perceptron del kernel. </span><span title="It turns out that all sorts of algorithms for learning linear models can be upgraded by applying the kernel trick in a similar fashion.">Si
scopre che tutti i tipi di algoritmi per l'apprendimento di modelli
lineari possono essere aggiornati applicando il trucco del kernel in
modo simile. </span><span title="For example, logistic regression can be turned into kernel logistic regression.">Ad esempio, la regressione logistica può essere trasformata in regressione logistica del kernel. </span><span title="The same applies to regression problems: linear regression can also be upgraded using kernels.">Lo stesso vale per i problemi di regressione: la regressione lineare può anche essere aggiornata utilizzando i kernel. </span><span title="A drawback of these advanced methods for linear and logistic regression (if they are done in a straightforward manner) is that the solution is not “sparse”: every training instance contributes to the solution vector.">Un
inconveniente di questi metodi avanzati per la regressione lineare e
logistica (se sono fatti in modo semplice) è che la soluzione non è
"scarsamente": ogni istanza di formazione contribuisce al vettore della
soluzione. </span><span title="In support vector machines and the kernel perceptron, only some of the training instances affect the solution, and this can make a big difference to computational efficiency.
">Nelle macchine vettoriali di supporto e nel perceptron del kernel,
solo alcune delle istanze di addestramento interessano la soluzione e
questo può fare una grande differenza all'efficienza computazionale.<br /> </span><span title="The solution vector found by the perceptron algorithm depends greatly on the order in which the instances are encountered.">Il vettore della soluzione rilevato dall'algoritmo perceptron dipende notevolmente dall'ordine in cui si trovano le istanze. </span><span title="One way to make the algorithm more stable is to use all the weight vectors encountered during learning not just the final one, letting them vote on a prediction.">Un
modo per rendere più stabile l'algoritmo è quello di utilizzare tutti i
vettori di peso rilevati durante l'apprendimento non solo quello
finale, consentendo loro di votare su una previsione. </span><span title="Each weight vector contributes a certain number of votes.">Ogni vettore di peso contribuisce ad un certo numero di voti. </span><span title="Intuitively, the “correctness” of a weight vector can be measured roughly as the number of successive trials after its inception in which it correctly classified subsequent instances and thus didn’t have to be changed.">Intuitivamente,
la "correttezza" di un vettore di peso può essere misurata
approssimativamente come il numero di prove successive dopo il suo
inizio in cui ha classificato correttamente le successive istanze e
pertanto non è necessario cambiare. </span><span title="This measure can be used as the number of votes given to the weight vector, giving an algorithm known as the voted perceptron that performs almost as well as a support vector machine.">Questa
misura può essere utilizzata come il numero di voti assegnati al
vettore di peso, fornendo un algoritmo noto come il perceptron votato
che esegue quasi come una macchina vettoriale di supporto. </span><span title="(Note that, as previously mentioned, the various weight vectors in the voted perceptron don’t need to be stored explicitly, and the kernel trick can be applied here too.)">(Si
noti che, come detto in precedenza, i vari vettori di peso del
perceptron votato non devono essere memorizzati esplicitamente e il
trucco del kernel può essere applicato anche qui).</span></span><br />
<h4>
<span class="" id="result_box" lang="it"><span title="(Note that, as previously mentioned, the various weight vectors in the voted perceptron don’t need to be stored explicitly, and the kernel trick can be applied here too.)"> Multilayer perceptrons</span></span></h4>
<h4>
<span class="" id="result_box" lang="it"><span title="(Note that, as previously mentioned, the various weight vectors in the voted perceptron don’t need to be stored explicitly, and the kernel trick can be applied here too.)"></span></span></h4>
<span class="" id="result_box" lang="it"><span title="(Note that, as previously mentioned, the various weight vectors in the voted perceptron don’t need to be stored explicitly, and the kernel trick can be applied here too.)"><span class="" id="result_box" lang="it"><span title="Using a kernel is not the only way to create a nonlinear classifier based on the perceptron.">L'utilizzo di un kernel non è l'unico modo per creare un classificatore non lineare basato sul perceptron. </span><span title="In fact, kernel functions are a recent development in machine learning.">Infatti, le funzioni del kernel sono un recente sviluppo nell'apprendimento della macchina. </span><span title="Previously, neural network proponents used a different approach for nonlinear classification: they connected many simple perceptron-like models in a hierarchical structure.">In
precedenza, i sostenitori della rete neurale hanno usato un approccio
diverso per la classificazione non lineare: hanno collegato molti
semplici modelli perceptronici in una struttura gerarchica. </span><span title="This can represent nonlinear decision boundaries.
">Ciò può rappresentare i confini di decisione non lineari.<br /> </span><span title="Section 4.6 explained that a perceptron represents a hyperplane in instance space.">La sezione 4.6 spiega che un perceptron rappresenta un iperplano nello spazio di esempio. </span><span title="We mentioned there that it is sometimes described as an artificial “neuron.” Of course, human and animal brains successfully undertake very complex classification tasks—for example, image recognition.">Noi
abbiamo menzionato che è talvolta descritto come un "neurone
artificiale". Naturalmente, i cervelli umani e animali svolgono con
successo compiti di classificazione molto complessi - ad esempio,
riconoscimento delle immagini. </span><span title="The functionality of each individual neuron in a brain is certainly not sufficient to perform these feats.">La funzionalità di ogni singolo neurone in un cervello non è certo sufficiente per eseguire queste attività. </span><span title="How can they be solved by brain-like structures?">Come possono essere risolti da strutture del cervello? </span><span title="The answer lies in the fact that the neurons in the brain are massively interconnected, allowing a problem to be decomposed into subproblems that can be solved at the neuron level.">La
risposta consiste nel fatto che i neuroni del cervello sono
notevolmente interconnessi, permettendo che un problema venga scomposto
in sottoproblemi che possono essere risolti a livello del neurone. </span><span title="This observation inspired the development of networks of artificial neurons—neural nets.
">Questa osservazione ha ispirato lo sviluppo di reti di neuroni artificiali - reti neurali.<br /> </span><span title="Consider the simple datasets in Figure 6.10.">Si consideri i set di dati semplici in Figura 6.10. </span><span title="Figure 6.10(a) shows a two-dimensional instance space with four instances that have classes 0 and 1, represented by white and black dots, respectively.">La
Figura 6.10 (a) mostra uno spazio di esempio bidimensionale con quattro
istanze che hanno classi 0 e 1, rappresentate rispettivamente da punti
bianchi e neri. </span><span title="No matter how you draw a straight line through this space, you will not be able to find one that separates all the black points from all the white ones.">Non
importa come disegnare una linea retta attraverso questo spazio, non
sarai in grado di trovare uno che separa tutti i punti neri da tutti
quelli bianchi. </span><span title="In other words, the problem is not linearly separable, and the simple perceptron algorithm will fail to generate a separating hyperplane (in this two-dimensional instance space a hyperplane is just a straight line).">In
altre parole, il problema non è linearmente separabile e il semplice
algoritmo perceptron non riesce a generare un iperplano separatore (in
questo spazio di esempio bidimensionale un iperplano è solo una linea
retta). </span><span title="The situation is different in Figure 6.10(b) and Figure 6.10(c): both these problems are linearly separable.">La situazione è diversa in Figura 6.10 (b) e Figura 6.10 (c): entrambi questi problemi sono linearmente separabili. </span><span title="The same holds for Figure 6.10(d), which shows two points in a one-dimensional instance space (in the case of one dimension the separating hyperplane degenerates to a separating point).">Lo
stesso vale per la Figura 6.10 (d), che mostra due punti in uno spazio
di istanza unidimensionale (nel caso di una dimensione l'iperplano
separante degenera ad un punto di separazione).</span></span></span></span><br />
<span class="" id="result_box" lang="it"><span title="(Note that, as previously mentioned, the various weight vectors in the voted perceptron don’t need to be stored explicitly, and the kernel trick can be applied here too.)"><span class="" id="result_box" lang="it"><span title="The same holds for Figure 6.10(d), which shows two points in a one-dimensional instance space (in the case of one dimension the separating hyperplane degenerates to a separating point)."> </span></span></span></span><span class="" id="result_box" lang="it"><span title="(Note that, as previously mentioned, the various weight vectors in the voted perceptron don’t need to be stored explicitly, and the kernel trick can be applied here too.)"><span class="" id="result_box" lang="it"><span title="The same holds for Figure 6.10(d), which shows two points in a one-dimensional instance space (in the case of one dimension the separating hyperplane degenerates to a separating point)."> </span></span></span></span><span class="" id="result_box" lang="it"><span title="(Note that, as previously mentioned, the various weight vectors in the voted perceptron don’t need to be stored explicitly, and the kernel trick can be applied here too.)"><span class="" id="result_box" lang="it"><span title="The same holds for Figure 6.10(d), which shows two points in a one-dimensional instance space (in the case of one dimension the separating hyperplane degenerates to a separating point)."><span class="" id="result_box" lang="it">Se hai familiarità con la
logica proposizionale, puoi notare che le quattro situazioni di Figura
6.10 corrispondono a quattro tipi di connettori logici. La figura 6.10
(a) rappresenta un XOR logico, dove la classe è 1 se e solo se
esattamente uno degli attributi ha valore 1. Figura 6.10 (b) rappresenta
AND logico, dove la classe è 1 se e solo se entrambi gli attributi
hanno valore 1. Figura 6.10 (c) rappresenta OR, dove la classe è 0 solo
se entrambi gli attributi hanno valore 0. Figura 6.10 (d) rappresenta
NON, dove la classe è 0 se e solo se l'attributo ha valore 1.<br /> Poiché
gli ultimi tre sono lineariamente separabili, un perceptron può
rappresentare AND, OR e NOT. Infatti, i perceptroni per i set di dati
corrispondenti sono mostrati rispettivamente nella Figura 6.10 (f) -
(h). Tuttavia, un semplice perceptron non può rappresentare XOR, perché
non è linearmente separabile. Per costruire un classificatore per questo
tipo di problema un singolo perceptron non è sufficiente: abbiamo
bisogno di più di essi.<br /> La Figura 6.10 (e) mostra una rete con tre
perceptroni o unità denominati A, B e C. I primi due sono connessi a
quello che viene chiamato a volte il livello di input della rete,
rappresentando gli attributi dei dati. Come in un semplice perceptron,
lo strato di input ha un ingresso costante aggiuntivo chiamato bias.
Tuttavia, la terza unità non ha collegamenti allo strato di input. Il
suo ingresso è costituito dall'uscita di unità A e B (0 o 1) e un'altra
unità costante di bias. Queste tre unità costituiscono lo strato
nascosto del perceptron multilayer.<br /> Sono chiamati "nascosti"
perché le unità non hanno alcuna connessione diretta all'ambiente.
Questo livello è ciò che consente al sistema di rappresentare XOR. È
possibile verificare questo provando tutte e quattro le possibili
combinazioni di segnali di ingresso. Ad esempio, se l'attributo a1 ha
valore 1 e a2 ha valore 1, l'unità A produrrà 1 (perché 1 * 1 + 1 * 1 -
0.5 * 1> 0), l'unità B produrrà 0 (perché -1 * 1 + -1 * 1 + 1.5 * 1
<0), e l'unità C produrrà 0 (perché 1 * 1 + 1 * 0 + -1.5 * 1 <0).
Questa è la risposta corretta. L'ispezione più chiara del comportamento
delle tre unità rivela che la prima rappresenta OR, la seconda
rappresenta la NAND (NOT combinata con AND) e la terza rappresenta AND.
Insieme rappresentano l'espressione (a1 OR a2) AND (a1 NAND a3), che è
appunto la definizione di XOR.<br /> Come illustra questo esempio,
qualsiasi espressione del calcolo proposizionale può essere convertita
in un perceptron multilayer, perché i tre connettori AND, OR e NOT sono
sufficienti per questo e abbiamo visto come ciascuno può essere
rappresentato utilizzando un perceptron. Le singole unità possono essere
collegate insieme per formare espressioni arbitrariamente complesse.
Quindi, un perceptron multistrato ha lo stesso potere espressivo di, ad
esempio, un albero decisionale. In realtà, si scopre che un perceptron a
due strati (senza contare il livello di input) è sufficiente. In questo
caso, ogni unità nello strato nascosto corrisponde ad una variante
della variante AND, perché supponiamo che possa negare alcuni degli
input prima di formare il congiunto-unito da un OR rappresentato da una
singola unità nello strato di output . In altre parole, ogni nodo nel
livello nascosto ha lo stesso ruolo di una foglia in una struttura di
decisione o di una sola regola in un insieme di regole di decisione.<br /> La
grande domanda è come istruire un perceptron multilayer. Ci sono due
aspetti al problema: apprendere la struttura della rete e imparare i
pesi di connessione. Si scopre che vi è un algoritmo relativamente
semplice per determinare i pesi dato una struttura di rete fissa. Questo
algoritmo viene chiamato backpropagation e viene descritto nella
sezione successiva. Tuttavia, anche se ci sono molti algoritmi che
tentano di identificare la struttura della rete, questo aspetto del
problema è comunemente risolto attraverso la sperimentazione - forse
combinato con una sana dose di conoscenze esperte. A volte la rete può
essere separata in moduli distinti che rappresentano sottostanti
identificabili (ad esempio, riconoscendo diversi componenti di un
oggetto in un problema di riconoscimento delle immagini), che apre un
modo per incorporare la conoscenza del dominio nel processo di
apprendimento. Spesso un solo livello nascosto è tutto ciò che è
necessario e un numero appropriato di unità per quel livello viene
determinato massimizzando l'accuratezza stimata.</span></span></span></span></span><br />
<h4>
<span class="" id="result_box" lang="it"><span title="(Note that, as previously mentioned, the various weight vectors in the voted perceptron don’t need to be stored explicitly, and the kernel trick can be applied here too.)"><span class="" id="result_box" lang="it"><span title="The same holds for Figure 6.10(d), which shows two points in a one-dimensional instance space (in the case of one dimension the separating hyperplane degenerates to a separating point)."><span class="" id="result_box" lang="it"> </span></span></span></span></span><span class="" id="result_box" lang="it"><span title="(Note that, as previously mentioned, the various weight vectors in the voted perceptron don’t need to be stored explicitly, and the kernel trick can be applied here too.)"><span class="" id="result_box" lang="it"><span title="The same holds for Figure 6.10(d), which shows two points in a one-dimensional instance space (in the case of one dimension the separating hyperplane degenerates to a separating point)."><span class="" id="result_box" lang="it"> Backpropagation</span></span></span></span></span></h4>
<h4>
<span class="" id="result_box" lang="it"><span title="(Note that, as previously mentioned, the various weight vectors in the voted perceptron don’t need to be stored explicitly, and the kernel trick can be applied here too.)"><span class="" id="result_box" lang="it"><span title="The same holds for Figure 6.10(d), which shows two points in a one-dimensional instance space (in the case of one dimension the separating hyperplane degenerates to a separating point)."><span class="" id="result_box" lang="it"></span></span></span></span></span></h4>
<span class="" id="result_box" lang="it"><span title="(Note that, as previously mentioned, the various weight vectors in the voted perceptron don’t need to be stored explicitly, and the kernel trick can be applied here too.)"><span class="" id="result_box" lang="it"><span title="The same holds for Figure 6.10(d), which shows two points in a one-dimensional instance space (in the case of one dimension the separating hyperplane degenerates to a separating point)."><span class="" id="result_box" lang="it"> </span></span></span></span></span><span class="" id="result_box" lang="it"><span title="(Note that, as previously mentioned, the various weight vectors in the voted perceptron don’t need to be stored explicitly, and the kernel trick can be applied here too.)"><span class="" id="result_box" lang="it"><span title="The same holds for Figure 6.10(d), which shows two points in a one-dimensional instance space (in the case of one dimension the separating hyperplane degenerates to a separating point)."><span class="" id="result_box" lang="it"><span class="" id="result_box" lang="it"><span title="Suppose that we have some data and seek a multilayer perceptron that is an accurate predictor for the underlying classification problem.">Supponiamo
di avere alcuni dati e cerchiamo un perceptron multilayer che sia un
preciso predittore per il problema di classificazione sottostante. </span><span title="Given a fixed network structure, we must determine appropriate weights for the connections in the network.">Dato una struttura di rete fissa, dobbiamo determinare i pesi appropriati per le connessioni in rete. </span><span title="In the absence of hidden layers, the perceptron learning rule from Section 4.6 can be used to find suitable values.">In
assenza di strati nascosti, la regola di apprendimento perceptron da
Sezione 4.6 può essere utilizzata per trovare valori adeguati. </span><span title="But suppose there are hidden units.">Ma supponiamo che ci siano unità nascoste. </span><span title="We know what the output unit should predict, and could adjust the weights of the connections leading to that unit based on the perceptron rule.">Sappiamo
cosa dovrebbe prevedere l'unità di uscita e potrebbe regolare i pesi
dei collegamenti che conducono a tale unità in base alla regola
perceptron. </span><span title="But the correct outputs for the hidden units are unknown, so the rule cannot be applied there.
">Ma le uscite corrette per le unità nascoste sono sconosciute, quindi la regola non può essere applicata lì.<br /> </span><span title="It turns out that, roughly speaking, the solution is to modify the weights of the connections leading to the hidden units based on the strength of each unit’s contribution to the final prediction.">Si
scopre che, a parzialmente, la soluzione è quella di modificare i pesi
delle connessioni che portano alle unità nascoste in base alla forza del
contributo di ciascuna unità alla predizione finale. </span><span title="There is a standard mathematical optimization algorithm, called gradient descent, which achieves exactly that.">Esiste un algoritmo di ottimizzazione matematica standard, denominato discesa di gradiente, che raggiunge esattamente ciò. </span><span title="Unfortunately, it requires taking derivatives, and the step function that the simple perceptron uses to convert the weighted sum of the inputs into a 0/1 prediction is not differentiable.">Purtroppo,
richiede la presa di derivati e la funzione di passo che il semplice
perceptron utilizza per convertire la somma ponderata degli input in una
predizione 0/1 non è diversificabile. </span><span title="We need to see whether the step function can be replaced with something else.
">Dobbiamo vedere se la funzione step può essere sostituita con qualcos'altro.<br /> </span><span title="Figure 6.11(a) shows the step function: if the input is smaller than zero, it outputs zero;">La Figura 6.11 (a) mostra la funzione di passo: se l'ingresso è più piccolo di zero, esso emette zero; </span><span title="otherwise, it outputs one.">Altrimenti, lo esegue uno. </span><span title="We want a function that is similar in shape but differentiable.">Vogliamo una funzione simile in forma ma diversificabile. </span><span title="A commonly used replacement is shown in Figure 6.11(b).">Una sostituzione comunemente utilizzata è mostrata nella Figura 6.11 (b). </span><span title="In neural networks terminology it is called the sigmoid function, and it is defined by">Nella terminologia delle reti neurali viene chiamata la funzione sigmoide e viene definita da</span></span></span></span></span></span></span><br />
<span class="" id="result_box" lang="it"><span title="(Note that, as previously mentioned, the various weight vectors in the voted perceptron don’t need to be stored explicitly, and the kernel trick can be applied here too.)"><span class="" id="result_box" lang="it"><span title="The same holds for Figure 6.10(d), which shows two points in a one-dimensional instance space (in the case of one dimension the separating hyperplane degenerates to a separating point)."><span class="" id="result_box" lang="it"><span class="" id="result_box" lang="it"><span title="In neural networks terminology it is called the sigmoid function, and it is defined by"> </span></span></span></span></span></span></span><span class="" id="result_box" lang="it"><span title="(Note that, as previously mentioned, the various weight vectors in the voted perceptron don’t need to be stored explicitly, and the kernel trick can be applied here too.)"><span class="" id="result_box" lang="it"><span title="The same holds for Figure 6.10(d), which shows two points in a one-dimensional instance space (in the case of one dimension the separating hyperplane degenerates to a separating point)."><span class="" id="result_box" lang="it"><span class="" id="result_box" lang="it"><span title="In neural networks terminology it is called the sigmoid function, and it is defined by">.....</span></span></span></span></span></span></span><br />
<span class="" id="result_box" lang="it"><span title="(Note that, as previously mentioned, the various weight vectors in the voted perceptron don’t need to be stored explicitly, and the kernel trick can be applied here too.)"><span class="" id="result_box" lang="it"><span title="The same holds for Figure 6.10(d), which shows two points in a one-dimensional instance space (in the case of one dimension the separating hyperplane degenerates to a separating point)."><span class="" id="result_box" lang="it"><span class="" id="result_box" lang="it"><span title="In neural networks terminology it is called the sigmoid function, and it is defined by"> </span></span></span></span></span></span></span><span class="" id="result_box" lang="it"><span title="(Note that, as previously mentioned, the various weight vectors in the voted perceptron don’t need to be stored explicitly, and the kernel trick can be applied here too.)"><span class="" id="result_box" lang="it"><span title="The same holds for Figure 6.10(d), which shows two points in a one-dimensional instance space (in the case of one dimension the separating hyperplane degenerates to a separating point)."><span class="" id="result_box" lang="it"><span class="" id="result_box" lang="it"><span title="In neural networks terminology it is called the sigmoid function, and it is defined by">Figure 6.11 Step versus sigmoid: (a) step function and (b) sigmoid function.<br /> </span></span></span></span></span></span></span><br />
<span class="" id="result_box" lang="it"><span title="(Note that, as previously mentioned, the various weight vectors in the voted perceptron don’t need to be stored explicitly, and the kernel trick can be applied here too.)"><span class="" id="result_box" lang="it"><span title="The same holds for Figure 6.10(d), which shows two points in a one-dimensional instance space (in the case of one dimension the separating hyperplane degenerates to a separating point)."><span class="" id="result_box" lang="it"><span class="" id="result_box" lang="it"><span title="In neural networks terminology it is called the sigmoid function, and it is defined by"> </span></span></span></span></span></span></span><span class="" id="result_box" lang="it"><span title="(Note that, as previously mentioned, the various weight vectors in the voted perceptron don’t need to be stored explicitly, and the kernel trick can be applied here too.)"><span class="" id="result_box" lang="it"><span title="The same holds for Figure 6.10(d), which shows two points in a one-dimensional instance space (in the case of one dimension the separating hyperplane degenerates to a separating point)."><span class="" id="result_box" lang="it"><span class="" id="result_box" lang="it"><span title="In neural networks terminology it is called the sigmoid function, and it is defined by"><span class="" id="result_box" lang="it"><span title="We encountered it in Section 4.6 when we described the logit transform used in logistic regression.">Lo
abbiamo incontrato nella sezione 4.6 quando abbiamo descritto la
trasformazione logit utilizzata nella regressione logistica. </span><span title="In fact, learning a multilayer perceptron is closely related to logistic regression.
">Infatti, l'apprendimento di un perceptron multilayer è strettamente correlato alla regressione logistica.<br /> </span><span title="To apply the gradient descent procedure, the error function—the thing that is to be minimized by adjusting the weights—must also be differentiable.">Per
applicare la procedura di discesa di gradiente, la funzione di errore,
la cosa che deve essere minimizzata regolando i pesi, deve anche essere
diversificabile. </span><span title="The number of misclassifications—measured by the discrete 0–1 loss mentioned in Section 5.6—does not fulfill this criterion.">Il numero di miscelazioni, misurato dalla perdita discreta 0-1 menzionata nella sezione 5.6, non soddisfa questo criterio. </span><span title="Instead, multilayer perceptrons are usually trained by minimizing the squared error of the network’s output, essentially treating it as an estimate of the class probability.">Al
contrario, i percepti multilayer sono solitamente formati per
minimizzare l'errore quadrato dell'output della rete, trattandolo
essenzialmente come una stima della probabilità di classe. </span><span title="(Other loss functions are also applicable. For example, if the likelihood is used instead of the squared error, learning a sigmoid-based perceptron is identical to logistic regression.)
">Ad esempio, se la probabilità viene utilizzata anziché l'errore
quadrato, l'apprendimento di un perceptron basato su sigmoidi è identico
alla regressione logistica.<br /> </span><span title="We work with the squared-error loss function because it is most widely used.">Lavoriamo con la funzione di perdita di errore quadrato perché è più diffusa. </span><span title="For a single training instance, it is Figure 6.11 Step versus sigmoid: (a) step function and (b) sigmoid function.">Per un'istanza di formazione singola, è la Figura 6.11 Punto rispetto a sigmoide: (a) funzione di passo e (b) funzione sigmoide.</span></span></span></span></span></span></span></span></span><br />
<br />
<span class="" id="result_box" lang="it"><span title="(Note that, as previously mentioned, the various weight vectors in the voted perceptron don’t need to be stored explicitly, and the kernel trick can be applied here too.)"><span class="" id="result_box" lang="it"><span title="The same holds for Figure 6.10(d), which shows two points in a one-dimensional instance space (in the case of one dimension the separating hyperplane degenerates to a separating point)."><span class="" id="result_box" lang="it"><span class="" id="result_box" lang="it"><span title="In neural networks terminology it is called the sigmoid function, and it is defined by"><span class="" id="result_box" lang="it"><span title="For a single training instance, it is Figure 6.11 Step versus sigmoid: (a) step function and (b) sigmoid function."> </span></span></span></span></span></span></span></span></span><span class="" id="result_box" lang="it"><span title="(Note that, as previously mentioned, the various weight vectors in the voted perceptron don’t need to be stored explicitly, and the kernel trick can be applied here too.)"><span class="" id="result_box" lang="it"><span title="The same holds for Figure 6.10(d), which shows two points in a one-dimensional instance space (in the case of one dimension the separating hyperplane degenerates to a separating point)."><span class="" id="result_box" lang="it"><span class="" id="result_box" lang="it"><span title="In neural networks terminology it is called the sigmoid function, and it is defined by"><span class="" id="result_box" lang="it"><span title="For a single training instance, it is Figure 6.11 Step versus sigmoid: (a) step function and (b) sigmoid function."><span class="" id="result_box" lang="it"><span title="Gradient descent exploits information given by the derivative of the function that is to be minimized—in this case, the error function.">La
discesa gradiente sfrutta le informazioni fornite dal derivato della
funzione da ridurre al minimo - in questo caso la funzione di errore. </span><span title="As an example, consider a hypothetical error function that happens to be identical to x2 + 1, shown in Figure 6.12.">Ad esempio, considerare una funzione di errore ipotetica che si verifica identica a x2 + 1, mostrata nella Figura 6.12. </span><span title="The X-axis represents a hypothetical parameter that is to be optimized.">L'asse X rappresenta un parametro ipotetico da ottimizzare. </span><span title="The derivative of x2 + 1 is simply 2x.">Il derivato di x2 + 1 è semplicemente 2x. </span><span title="The crucial observation is that, based on the derivative, we can figure out the slope of the function at any particular point.">L'osservazione cruciale è che, sulla base del derivato, possiamo capire la pendenza della funzione in un punto particolare. </span><span title="If the derivative is negative the function slopes downward to the right;">Se il derivato è negativo, la funzione si dispiega verso il basso verso destra; </span><span title="if it is positive, it slopes downward to the left;">Se è positivo, scende verso il basso verso sinistra; </span><span title="and the size of the derivative determines how steep the decline is.">E la dimensione del derivato determina come la ripresa è ripida. </span><span title="Gradient descent is an iterative optimization procedure that uses this information to adjust a function’s parameters.">La
discesa gradiente è una procedura di ottimizzazione iterativa che
utilizza queste informazioni per regolare i parametri di una funzione. </span><span title="It takes the value of the derivative, multiplies it by a small constant called the learning rate, and subtracts the result from the current parameter value.">Prende
il valore del derivato, la moltiplica per una piccola costante chiamata
il tasso di apprendimento e sottrae il risultato dal valore del
parametro corrente. </span><span title="This is repeated for the new parameter value, and so on, until a minimum is reached.
">Questo viene ripetuto per il nuovo valore del parametro, e così via, fino a raggiungere un minimo.<br /> </span><span title="Returning to the example, assume that the learning rate is set to 0.1 and the current parameter value x is 4. The derivative is double this—8 at this point.">Tornando
all'esempio, si supponga che il tasso di apprendimento sia impostato su
0.1 e il valore del parametro corrente x sia 4. Il derivato è doppio di
questo-8 a questo punto. </span><span title="Multiplying by the learning rate yields 0.8, and subtracting this from 4 gives 3.2, which becomes the new parameter value.">Moltiplicando
per il tasso di apprendimento produce 0,8, e sottraendo questo da 4,
ottiene 3,2, che diventa il nuovo valore del parametro. </span><span title="Repeating the process for 3.2, we get 2.56, then 2.048, and so on.">Ripetendo il processo per 3.2, otteniamo 2.56, poi 2.048 e così via. </span><span title="The little crosses in Figure 6.12 show the values encountered in this process.">Le piccole croci in Figura 6.12 mostrano i valori rilevati in questo processo. </span><span title="The process stops once the change in parameter value becomes too small.">Il processo si interrompe una volta che la modifica del valore del parametro diventa troppo piccola. </span><span title="In the example this happens when the value approaches 0, the value corresponding to the location on the X-axis where the minimum of the hypothetical error function is located.">Nell'esempio
questo accade quando il valore si avvicina a 0, il valore
corrispondente alla posizione sull'asse X dove si trova il minimo della
funzione di errore ipotetico.</span></span></span></span></span></span></span></span></span></span></span><br />
<br />
<span class="" id="result_box" lang="it"><span title="(Note that, as previously mentioned, the various weight vectors in the voted perceptron don’t need to be stored explicitly, and the kernel trick can be applied here too.)"><span class="" id="result_box" lang="it"><span title="The same holds for Figure 6.10(d), which shows two points in a one-dimensional instance space (in the case of one dimension the separating hyperplane degenerates to a separating point)."><span class="" id="result_box" lang="it"><span class="" id="result_box" lang="it"><span title="In neural networks terminology it is called the sigmoid function, and it is defined by"><span class="" id="result_box" lang="it"><span title="For a single training instance, it is Figure 6.11 Step versus sigmoid: (a) step function and (b) sigmoid function."><span class="" id="result_box" lang="it"><span title="In the example this happens when the value approaches 0, the value corresponding to the location on the X-axis where the minimum of the hypothetical error function is located."> Figure 6.12 Gradient descent using the error function x2 + 1.<br /> </span></span></span></span></span></span></span></span></span></span></span><br />
<span class="" id="result_box" lang="it"><span title="(Note that, as previously mentioned, the various weight vectors in the voted perceptron don’t need to be stored explicitly, and the kernel trick can be applied here too.)"><span class="" id="result_box" lang="it"><span title="The same holds for Figure 6.10(d), which shows two points in a one-dimensional instance space (in the case of one dimension the separating hyperplane degenerates to a separating point)."><span class="" id="result_box" lang="it"><span class="" id="result_box" lang="it"><span title="In neural networks terminology it is called the sigmoid function, and it is defined by"><span class="" id="result_box" lang="it"><span title="For a single training instance, it is Figure 6.11 Step versus sigmoid: (a) step function and (b) sigmoid function."><span class="" id="result_box" lang="it"><span title="In the example this happens when the value approaches 0, the value corresponding to the location on the X-axis where the minimum of the hypothetical error function is located."> </span></span></span></span></span></span></span></span></span></span></span><span class="" id="result_box" lang="it"><span title="(Note that, as previously mentioned, the various weight vectors in the voted perceptron don’t need to be stored explicitly, and the kernel trick can be applied here too.)"><span class="" id="result_box" lang="it"><span title="The same holds for Figure 6.10(d), which shows two points in a one-dimensional instance space (in the case of one dimension the separating hyperplane degenerates to a separating point)."><span class="" id="result_box" lang="it"><span class="" id="result_box" lang="it"><span title="In neural networks terminology it is called the sigmoid function, and it is defined by"><span class="" id="result_box" lang="it"><span title="For a single training instance, it is Figure 6.11 Step versus sigmoid: (a) step function and (b) sigmoid function."><span class="" id="result_box" lang="it"><span title="In the example this happens when the value approaches 0, the value corresponding to the location on the X-axis where the minimum of the hypothetical error function is located."><span class="" id="result_box" lang="it">Il tasso di apprendimento determina la dimensione del passo e quindi quanto velocemente converge la ricerca. <span class="">Se
è troppo grande e la funzione di errore ha diversi minimi, la ricerca
può superare e mancare un minimo intero, oppure può oscillare in maniera
selvaggia.</span> Se è troppo piccolo, il progresso verso il minimo può essere lento. <span class="">Si noti che la discesa di gradiente può trovare solo un minimo locale.</span> <span class="">Se
la funzione ha diverse minime e le funzioni di errore per i percepti
multilayer hanno solitamente molti, potrebbe non trovare il migliore.</span> <span class="">Questo
è un inconveniente significativo dei percepti multilayer standard
rispetto a, ad esempio, macchine vettoriali di supporto.</span><br /> <span class="">Per
utilizzare la discesa di gradiente per trovare i pesi di un perceptron
multistrato, è necessario determinare l'derivato dell'errore quadrato
rispetto ad ogni parametro, ovvero ogni peso della rete.</span> Cominciamo con un semplice perceptron senza uno strato nascosto. <span class="">Differenziando la funzione di errore precedente rispetto ad un peso specifico wi</span></span></span></span></span></span></span></span></span></span></span></span></span><br />
<span class="" id="result_box" lang="it"><span title="(Note that, as previously mentioned, the various weight vectors in the voted perceptron don’t need to be stored explicitly, and the kernel trick can be applied here too.)"><span class="" id="result_box" lang="it"><span title="The same holds for Figure 6.10(d), which shows two points in a one-dimensional instance space (in the case of one dimension the separating hyperplane degenerates to a separating point)."><span class="" id="result_box" lang="it"><span class="" id="result_box" lang="it"><span title="In neural networks terminology it is called the sigmoid function, and it is defined by"><span class="" id="result_box" lang="it"><span title="For a single training instance, it is Figure 6.11 Step versus sigmoid: (a) step function and (b) sigmoid function."><span class="" id="result_box" lang="it"><span title="In the example this happens when the value approaches 0, the value corresponding to the location on the X-axis where the minimum of the hypothetical error function is located."><span class="" id="result_box" lang="it"><span class=""> </span></span></span></span></span></span></span></span></span></span></span></span></span><span class="" id="result_box" lang="it"><span title="(Note that, as previously mentioned, the various weight vectors in the voted perceptron don’t need to be stored explicitly, and the kernel trick can be applied here too.)"><span class="" id="result_box" lang="it"><span title="The same holds for Figure 6.10(d), which shows two points in a one-dimensional instance space (in the case of one dimension the separating hyperplane degenerates to a separating point)."><span class="" id="result_box" lang="it"><span class="" id="result_box" lang="it"><span title="In neural networks terminology it is called the sigmoid function, and it is defined by"><span class="" id="result_box" lang="it"><span title="For a single training instance, it is Figure 6.11 Step versus sigmoid: (a) step function and (b) sigmoid function."><span class="" id="result_box" lang="it"><span title="In the example this happens when the value approaches 0, the value corresponding to the location on the X-axis where the minimum of the hypothetical error function is located."><span class="" id="result_box" lang="it"><span class=""> ......</span></span></span></span></span></span></span></span></span></span></span></span></span><br />
<span class="" id="result_box" lang="it"><span title="(Note that, as previously mentioned, the various weight vectors in the voted perceptron don’t need to be stored explicitly, and the kernel trick can be applied here too.)"><span class="" id="result_box" lang="it"><span title="The same holds for Figure 6.10(d), which shows two points in a one-dimensional instance space (in the case of one dimension the separating hyperplane degenerates to a separating point)."><span class="" id="result_box" lang="it"><span class="" id="result_box" lang="it"><span title="In neural networks terminology it is called the sigmoid function, and it is defined by"><span class="" id="result_box" lang="it"><span title="For a single training instance, it is Figure 6.11 Step versus sigmoid: (a) step function and (b) sigmoid function."><span class="" id="result_box" lang="it"><span title="In the example this happens when the value approaches 0, the value corresponding to the location on the X-axis where the minimum of the hypothetical error function is located."><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it">Qui, f (x) è l'output del perceptron e x è la somma ponderata degli ingressi. Per calcolare il secondo fattore sul lato destro, è necessario derivare la funzione sigmoide f (x). <span class="">Si scopre che questo ha una forma particolarmente semplice che può essere scritta in termini di f (x):</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><br />
<span class="" id="result_box" lang="it"><span title="(Note that, as previously mentioned, the various weight vectors in the voted perceptron don’t need to be stored explicitly, and the kernel trick can be applied here too.)"><span class="" id="result_box" lang="it"><span title="The same holds for Figure 6.10(d), which shows two points in a one-dimensional instance space (in the case of one dimension the separating hyperplane degenerates to a separating point)."><span class="" id="result_box" lang="it"><span class="" id="result_box" lang="it"><span title="In neural networks terminology it is called the sigmoid function, and it is defined by"><span class="" id="result_box" lang="it"><span title="For a single training instance, it is Figure 6.11 Step versus sigmoid: (a) step function and (b) sigmoid function."><span class="" id="result_box" lang="it"><span title="In the example this happens when the value approaches 0, the value corresponding to the location on the X-axis where the minimum of the hypothetical error function is located."><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class="">......</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><br />
<span class="" id="result_box" lang="it"><span title="(Note that, as previously mentioned, the various weight vectors in the voted perceptron don’t need to be stored explicitly, and the kernel trick can be applied here too.)"><span class="" id="result_box" lang="it"><span title="The same holds for Figure 6.10(d), which shows two points in a one-dimensional instance space (in the case of one dimension the separating hyperplane degenerates to a separating point)."><span class="" id="result_box" lang="it"><span class="" id="result_box" lang="it"><span title="In neural networks terminology it is called the sigmoid function, and it is defined by"><span class="" id="result_box" lang="it"><span title="For a single training instance, it is Figure 6.11 Step versus sigmoid: (a) step function and (b) sigmoid function."><span class="" id="result_box" lang="it"><span title="In the example this happens when the value approaches 0, the value corresponding to the location on the X-axis where the minimum of the hypothetical error function is located."><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class="">Usiamo f ¢ (x) per indicare questo derivato.</span> Ma cerchiamo il derivato rispetto a wi, non x. <span class="">Perché</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><br />
<span class="" id="result_box" lang="it"><span title="(Note that, as previously mentioned, the various weight vectors in the voted perceptron don’t need to be stored explicitly, and the kernel trick can be applied here too.)"><span class="" id="result_box" lang="it"><span title="The same holds for Figure 6.10(d), which shows two points in a one-dimensional instance space (in the case of one dimension the separating hyperplane degenerates to a separating point)."><span class="" id="result_box" lang="it"><span class="" id="result_box" lang="it"><span title="In neural networks terminology it is called the sigmoid function, and it is defined by"><span class="" id="result_box" lang="it"><span title="For a single training instance, it is Figure 6.11 Step versus sigmoid: (a) step function and (b) sigmoid function."><span class="" id="result_box" lang="it"><span title="In the example this happens when the value approaches 0, the value corresponding to the location on the X-axis where the minimum of the hypothetical error function is located."><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class="">....</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><br />
<span class="" id="result_box" lang="it"><span title="(Note that, as previously mentioned, the various weight vectors in the voted perceptron don’t need to be stored explicitly, and the kernel trick can be applied here too.)"><span class="" id="result_box" lang="it"><span title="The same holds for Figure 6.10(d), which shows two points in a one-dimensional instance space (in the case of one dimension the separating hyperplane degenerates to a separating point)."><span class="" id="result_box" lang="it"><span class="" id="result_box" lang="it"><span title="In neural networks terminology it is called the sigmoid function, and it is defined by"><span class="" id="result_box" lang="it"><span title="For a single training instance, it is Figure 6.11 Step versus sigmoid: (a) step function and (b) sigmoid function."><span class="" id="result_box" lang="it"><span title="In the example this happens when the value approaches 0, the value corresponding to the location on the X-axis where the minimum of the hypothetical error function is located."><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="short_text" id="result_box" lang="it"><span class="">Il derivato di f (x) rispetto a wi è</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><br />
<span class="" id="result_box" lang="it"><span title="(Note that, as previously mentioned, the various weight vectors in the voted perceptron don’t need to be stored explicitly, and the kernel trick can be applied here too.)"><span class="" id="result_box" lang="it"><span title="The same holds for Figure 6.10(d), which shows two points in a one-dimensional instance space (in the case of one dimension the separating hyperplane degenerates to a separating point)."><span class="" id="result_box" lang="it"><span class="" id="result_box" lang="it"><span title="In neural networks terminology it is called the sigmoid function, and it is defined by"><span class="" id="result_box" lang="it"><span title="For a single training instance, it is Figure 6.11 Step versus sigmoid: (a) step function and (b) sigmoid function."><span class="" id="result_box" lang="it"><span title="In the example this happens when the value approaches 0, the value corresponding to the location on the X-axis where the minimum of the hypothetical error function is located."><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="short_text" id="result_box" lang="it"><span class="">......</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><br />
<span class="" id="result_box" lang="it"><span title="(Note that, as previously mentioned, the various weight vectors in the voted perceptron don’t need to be stored explicitly, and the kernel trick can be applied here too.)"><span class="" id="result_box" lang="it"><span title="The same holds for Figure 6.10(d), which shows two points in a one-dimensional instance space (in the case of one dimension the separating hyperplane degenerates to a separating point)."><span class="" id="result_box" lang="it"><span class="" id="result_box" lang="it"><span title="In neural networks terminology it is called the sigmoid function, and it is defined by"><span class="" id="result_box" lang="it"><span title="For a single training instance, it is Figure 6.11 Step versus sigmoid: (a) step function and (b) sigmoid function."><span class="" id="result_box" lang="it"><span title="In the example this happens when the value approaches 0, the value corresponding to the location on the X-axis where the minimum of the hypothetical error function is located."><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="short_text" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class="">Incorporando questo indietro nel derivato della resa della funzione di errore</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><br />
<span class="" id="result_box" lang="it"><span title="(Note that, as previously mentioned, the various weight vectors in the voted perceptron don’t need to be stored explicitly, and the kernel trick can be applied here too.)"><span class="" id="result_box" lang="it"><span title="The same holds for Figure 6.10(d), which shows two points in a one-dimensional instance space (in the case of one dimension the separating hyperplane degenerates to a separating point)."><span class="" id="result_box" lang="it"><span class="" id="result_box" lang="it"><span title="In neural networks terminology it is called the sigmoid function, and it is defined by"><span class="" id="result_box" lang="it"><span title="For a single training instance, it is Figure 6.11 Step versus sigmoid: (a) step function and (b) sigmoid function."><span class="" id="result_box" lang="it"><span title="In the example this happens when the value approaches 0, the value corresponding to the location on the X-axis where the minimum of the hypothetical error function is located."><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="short_text" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class="">......</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><br />
<span class="" id="result_box" lang="it"><span title="(Note that, as previously mentioned, the various weight vectors in the voted perceptron don’t need to be stored explicitly, and the kernel trick can be applied here too.)"><span class="" id="result_box" lang="it"><span title="The same holds for Figure 6.10(d), which shows two points in a one-dimensional instance space (in the case of one dimension the separating hyperplane degenerates to a separating point)."><span class="" id="result_box" lang="it"><span class="" id="result_box" lang="it"><span title="In neural networks terminology it is called the sigmoid function, and it is defined by"><span class="" id="result_box" lang="it"><span title="For a single training instance, it is Figure 6.11 Step versus sigmoid: (a) step function and (b) sigmoid function."><span class="" id="result_box" lang="it"><span title="In the example this happens when the value approaches 0, the value corresponding to the location on the X-axis where the minimum of the hypothetical error function is located."><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="short_text" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class="">Figure 6.13 Multilayer perceptron with a hidden layer.<br /> </span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><br />
<span class="" id="result_box" lang="it"><span title="(Note that, as previously mentioned, the various weight vectors in the voted perceptron don’t need to be stored explicitly, and the kernel trick can be applied here too.)"><span class="" id="result_box" lang="it"><span title="The same holds for Figure 6.10(d), which shows two points in a one-dimensional instance space (in the case of one dimension the separating hyperplane degenerates to a separating point)."><span class="" id="result_box" lang="it"><span class="" id="result_box" lang="it"><span title="In neural networks terminology it is called the sigmoid function, and it is defined by"><span class="" id="result_box" lang="it"><span title="For a single training instance, it is Figure 6.11 Step versus sigmoid: (a) step function and (b) sigmoid function."><span class="" id="result_box" lang="it"><span title="In the example this happens when the value approaches 0, the value corresponding to the location on the X-axis where the minimum of the hypothetical error function is located."><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="short_text" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class="">Questa
espressione fornisce tutto ciò che è necessario per calcolare la
variazione del peso wi causata da un particolare vettore di esempio a
(esteso da 1 per rappresentare la bias, come spiegato in precedenza).</span> <span class="">Dopo
aver ripetuto questo calcolo per ogni istanza di addestramento,
aggiungiamo le modifiche associate ad un peso specifico wi, moltiplicato
per il tasso di apprendimento e sottraiamo il risultato dal valore
attuale di wi.</span><br /><br />Fin qui tutto bene. <span class="">Ma tutto questo presuppone che non esiste uno strato nascosto.</span> <span class="">Con un livello nascosto, le cose diventano un po 'più complicate.</span> <span class="">Supponiamo
che f (xi) sia l'uscita dell'unità nascosta ith, wij è il peso della
connessione dall'ingresso j all'unità i, e wi è il peso dell'unità ith
nascosta all'unità di uscita.</span> La situazione è descritta in Figura 6.13. <span class="">Come prima, f (x) è l'uscita della singola unità nel livello di uscita.</span> <span class="">La
regola di aggiornamento per i pesi wi è sostanzialmente la stessa di
quanto sopra, salvo che ai viene sostituito dall'uscita dell'unità ith
nascosta:</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><br />
<span class="" id="result_box" lang="it"><span title="(Note that, as previously mentioned, the various weight vectors in the voted perceptron don’t need to be stored explicitly, and the kernel trick can be applied here too.)"><span class="" id="result_box" lang="it"><span title="The same holds for Figure 6.10(d), which shows two points in a one-dimensional instance space (in the case of one dimension the separating hyperplane degenerates to a separating point)."><span class="" id="result_box" lang="it"><span class="" id="result_box" lang="it"><span title="In neural networks terminology it is called the sigmoid function, and it is defined by"><span class="" id="result_box" lang="it"><span title="For a single training instance, it is Figure 6.11 Step versus sigmoid: (a) step function and (b) sigmoid function."><span class="" id="result_box" lang="it"><span title="In the example this happens when the value approaches 0, the value corresponding to the location on the X-axis where the minimum of the hypothetical error function is located."><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="short_text" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class="">.......</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><br />
<span class="" id="result_box" lang="it"><span title="(Note that, as previously mentioned, the various weight vectors in the voted perceptron don’t need to be stored explicitly, and the kernel trick can be applied here too.)"><span class="" id="result_box" lang="it"><span title="The same holds for Figure 6.10(d), which shows two points in a one-dimensional instance space (in the case of one dimension the separating hyperplane degenerates to a separating point)."><span class="" id="result_box" lang="it"><span class="" id="result_box" lang="it"><span title="In neural networks terminology it is called the sigmoid function, and it is defined by"><span class="" id="result_box" lang="it"><span title="For a single training instance, it is Figure 6.11 Step versus sigmoid: (a) step function and (b) sigmoid function."><span class="" id="result_box" lang="it"><span title="In the example this happens when the value approaches 0, the value corresponding to the location on the X-axis where the minimum of the hypothetical error function is located."><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="short_text" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class="">Tuttavia, per aggiornare i pesi wij occorre calcolare i relativi derivati.</span> <span class="">Applicare la regola della catena dare</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><br />
<span class="" id="result_box" lang="it"><span title="(Note that, as previously mentioned, the various weight vectors in the voted perceptron don’t need to be stored explicitly, and the kernel trick can be applied here too.)"><span class="" id="result_box" lang="it"><span title="The same holds for Figure 6.10(d), which shows two points in a one-dimensional instance space (in the case of one dimension the separating hyperplane degenerates to a separating point)."><span class="" id="result_box" lang="it"><span class="" id="result_box" lang="it"><span title="In neural networks terminology it is called the sigmoid function, and it is defined by"><span class="" id="result_box" lang="it"><span title="For a single training instance, it is Figure 6.11 Step versus sigmoid: (a) step function and (b) sigmoid function."><span class="" id="result_box" lang="it"><span title="In the example this happens when the value approaches 0, the value corresponding to the location on the X-axis where the minimum of the hypothetical error function is located."><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="short_text" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class="">.....</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><br />
<span class="" id="result_box" lang="it"><span title="(Note that, as previously mentioned, the various weight vectors in the voted perceptron don’t need to be stored explicitly, and the kernel trick can be applied here too.)"><span class="" id="result_box" lang="it"><span title="The same holds for Figure 6.10(d), which shows two points in a one-dimensional instance space (in the case of one dimension the separating hyperplane degenerates to a separating point)."><span class="" id="result_box" lang="it"><span class="" id="result_box" lang="it"><span title="In neural networks terminology it is called the sigmoid function, and it is defined by"><span class="" id="result_box" lang="it"><span title="For a single training instance, it is Figure 6.11 Step versus sigmoid: (a) step function and (b) sigmoid function."><span class="" id="result_box" lang="it"><span title="In the example this happens when the value approaches 0, the value corresponding to the location on the X-axis where the minimum of the hypothetical error function is located."><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="short_text" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it">I primi due fattori sono gli stessi dell'equazione precedente. Per calcolare il terzo fattore differenziare ulteriormente. <span class="">Perché</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><br />
<br />
<span class="" id="result_box" lang="it"><span title="(Note that, as previously mentioned, the various weight vectors in the voted perceptron don’t need to be stored explicitly, and the kernel trick can be applied here too.)"><span class="" id="result_box" lang="it"><span title="The same holds for Figure 6.10(d), which shows two points in a one-dimensional instance space (in the case of one dimension the separating hyperplane degenerates to a separating point)."><span class="" id="result_box" lang="it"><span class="" id="result_box" lang="it"><span title="In neural networks terminology it is called the sigmoid function, and it is defined by"><span class="" id="result_box" lang="it"><span title="For a single training instance, it is Figure 6.11 Step versus sigmoid: (a) step function and (b) sigmoid function."><span class="" id="result_box" lang="it"><span title="In the example this happens when the value approaches 0, the value corresponding to the location on the X-axis where the minimum of the hypothetical error function is located."><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="short_text" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class="">......</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><br />
<span class="" id="result_box" lang="it"><span title="(Note that, as previously mentioned, the various weight vectors in the voted perceptron don’t need to be stored explicitly, and the kernel trick can be applied here too.)"><span class="" id="result_box" lang="it"><span title="The same holds for Figure 6.10(d), which shows two points in a one-dimensional instance space (in the case of one dimension the separating hyperplane degenerates to a separating point)."><span class="" id="result_box" lang="it"><span class="" id="result_box" lang="it"><span title="In neural networks terminology it is called the sigmoid function, and it is defined by"><span class="" id="result_box" lang="it"><span title="For a single training instance, it is Figure 6.11 Step versus sigmoid: (a) step function and (b) sigmoid function."><span class="" id="result_box" lang="it"><span title="In the example this happens when the value approaches 0, the value corresponding to the location on the X-axis where the minimum of the hypothetical error function is located."><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="short_text" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class="">.....</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><br />
<span class="" id="result_box" lang="it"><span title="(Note that, as previously mentioned, the various weight vectors in the voted perceptron don’t need to be stored explicitly, and the kernel trick can be applied here too.)"><span class="" id="result_box" lang="it"><span title="The same holds for Figure 6.10(d), which shows two points in a one-dimensional instance space (in the case of one dimension the separating hyperplane degenerates to a separating point)."><span class="" id="result_box" lang="it"><span class="" id="result_box" lang="it"><span title="In neural networks terminology it is called the sigmoid function, and it is defined by"><span class="" id="result_box" lang="it"><span title="For a single training instance, it is Figure 6.11 Step versus sigmoid: (a) step function and (b) sigmoid function."><span class="" id="result_box" lang="it"><span title="In the example this happens when the value approaches 0, the value corresponding to the location on the X-axis where the minimum of the hypothetical error function is located."><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="short_text" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it">Ciò significa che siamo finiti. <span class="">Mettere tutto insieme produce un'equazione per il derivato della funzione di errore rispetto ai pesi wij:</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><br />
<span class="" id="result_box" lang="it"><span title="(Note that, as previously mentioned, the various weight vectors in the voted perceptron don’t need to be stored explicitly, and the kernel trick can be applied here too.)"><span class="" id="result_box" lang="it"><span title="The same holds for Figure 6.10(d), which shows two points in a one-dimensional instance space (in the case of one dimension the separating hyperplane degenerates to a separating point)."><span class="" id="result_box" lang="it"><span class="" id="result_box" lang="it"><span title="In neural networks terminology it is called the sigmoid function, and it is defined by"><span class="" id="result_box" lang="it"><span title="For a single training instance, it is Figure 6.11 Step versus sigmoid: (a) step function and (b) sigmoid function."><span class="" id="result_box" lang="it"><span title="In the example this happens when the value approaches 0, the value corresponding to the location on the X-axis where the minimum of the hypothetical error function is located."><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="short_text" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class="">.....</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><br />
<span class="" id="result_box" lang="it"><span title="(Note that, as previously mentioned, the various weight vectors in the voted perceptron don’t need to be stored explicitly, and the kernel trick can be applied here too.)"><span class="" id="result_box" lang="it"><span title="The same holds for Figure 6.10(d), which shows two points in a one-dimensional instance space (in the case of one dimension the separating hyperplane degenerates to a separating point)."><span class="" id="result_box" lang="it"><span class="" id="result_box" lang="it"><span title="In neural networks terminology it is called the sigmoid function, and it is defined by"><span class="" id="result_box" lang="it"><span title="For a single training instance, it is Figure 6.11 Step versus sigmoid: (a) step function and (b) sigmoid function."><span class="" id="result_box" lang="it"><span title="In the example this happens when the value approaches 0, the value corresponding to the location on the X-axis where the minimum of the hypothetical error function is located."><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="short_text" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""> </span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><span class="" id="result_box" lang="it"><span title="(Note that, as previously mentioned, the various weight vectors in the voted perceptron don’t need to be stored explicitly, and the kernel trick can be applied here too.)"><span class="" id="result_box" lang="it"><span title="The same holds for Figure 6.10(d), which shows two points in a one-dimensional instance space (in the case of one dimension the separating hyperplane degenerates to a separating point)."><span class="" id="result_box" lang="it"><span class="" id="result_box" lang="it"><span title="In neural networks terminology it is called the sigmoid function, and it is defined by"><span class="" id="result_box" lang="it"><span title="For a single training instance, it is Figure 6.11 Step versus sigmoid: (a) step function and (b) sigmoid function."><span class="" id="result_box" lang="it"><span title="In the example this happens when the value approaches 0, the value corresponding to the location on the X-axis where the minimum of the hypothetical error function is located."><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="short_text" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span title="As before, we calculate this value for every training instance, add up the changes associated with a particular weight wij, multiply by the learning rate, and subtract the outcome from the current value of wij.
">Come in precedenza, calcoliamo questo valore per ogni istanza di
addestramento, aggiorniamo le modifiche associate ad un particolare peso
wij, si moltiplicano per il tasso di apprendimento e sottraiamo il
risultato dal valore corrente di wij.<br /> </span><span title="This derivation applies to a perceptron with one hidden layer.">Questa derivazione si applica a un perceptron con uno strato nascosto. </span><span title="If there are two hidden layers, the same strategy can be applied a second time to update the weights pertaining to the input connections of the first hidden layer, propagating the error from the output unit through the second hidden layer to the first one.">Se
ci sono due livelli nascosti, la stessa strategia può essere applicata
una seconda volta per aggiornare i pesi relativi alle connessioni di
ingresso del primo livello nascosto, propagando l'errore dall'unità di
uscita attraverso il secondo livello nascosto al primo. </span><span title="Because of this error propagation mechanism, this version of the generic gradient descent strategy is called backpropagation.">A
causa di questo meccanismo di propagazione degli errori, questa
versione della strategia di discesa dei gradienti generici viene
chiamata backpropagation. </span><span title="We have tacitly assumed that the network’s output layer has just one unit, which is appropriate for two-class problems.">Abbiamo
tacitamente ipotizzato che lo strato di output della rete disponga di
una sola unità, che è appropriata per problemi a due classi. </span><span title="For more than two classes, a separate network could be learned for each class that distinguishes it from the remaining classes.">Per più di due classi, una classe separata potrebbe essere appreso per ogni classe che lo distingue dalle altre classi. </span><span title="A more compact classifier can be obtained from a single network by creating an output unit for each class, connecting every unit in the hidden layer to every output unit.">Un
classificatore più compatto può essere ottenuto da una singola rete
creando un'unità di uscita per ogni classe, collegando ogni unità nel
livello nascosto ad ogni unità di output. </span><span title="The squared error for a particular training instance is the sum of squared errors taken over all output units.">L'errore
quadrato per un'istanza di formazione particolare è la somma degli
errori quadrati assunti per tutte le unità di output. </span><span title="The same technique can be applied to predict several targets, or attribute values, simultane ously by creating a separate output unit for each one.">La
stessa tecnica può essere applicata per predire più obiettivi o valori
di attributo simultaneamente, creando un'unità di output separata per
ciascuna di esse. </span><span title="Intuitively, this may give better predictive accuracy than building a separate classifier for each class attribute if the underlying learning tasks are in some way related.
">Intuitivamente, questo può dare una migliore precisione predittiva
di costruire un classificatore separato per ogni attributo di classe se
le attività di apprendimento sottostanti sono in qualche modo correlate.<br /> </span><span title="We have assumed that weights are only updated after all training instances have been fed through the network and all the corresponding weight changes have been accumulated.">Abbiamo
assunto che i pesi vengono aggiornati solo dopo che tutti i percorsi di
formazione sono stati alimentati attraverso la rete e che tutti i
corrispondenti cambiamenti di peso sono stati accumulati. </span><span title="This is batch learning, because all the training data is processed together.">Questo è l'apprendimento in batch, perché tutti i dati formativi vengono elaborati insieme. </span><span title="But exactly the same formulas can be used to update the weights incrementally after each training instance has been processed.">Ma
esattamente le stesse formule possono essere utilizzate per aggiornare i
pesi incrementalmente dopo che ogni istanza di formazione è stata
elaborata. </span><span title="This is called stochastic backpropagation because the overall error does not necessarily decrease after every update and there is no guarantee that it will converge to a minimum.">Questa
viene chiamata backpropagation stocastica perché l'errore generale non
diminuisce necessariamente dopo ogni aggiornamento e non c'è garanzia
che esso convergerà al minimo. </span><span title="It can be used for online learning, in which new data arrives in a continuous stream and every training instance is processed just once.">Può
essere utilizzato per l'apprendimento online, in cui nuovi dati
arrivano in un flusso continuo e ogni istanza di formazione viene
elaborata una sola volta. </span><span title="In both variants of backpropagation, it is often helpful to standardize the attributes to have zero mean and unit standard deviation.">In
entrambe le varianti di backpropagation è spesso utile standardizzare
gli attributi per avere deviazione media media e unità standard. </span><span title="Before learning starts, each weight is initialized to a small, randomly chosen value based on a normal distribution with zero mean.">Prima
dell'inizio dell'apprendimento, ciascun peso viene inizializzato in un
piccolo valore selezionato a caso sulla base di una distribuzione
normale con la media zero.</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><br />
<span class="" id="result_box" lang="it"><span title="(Note that, as previously mentioned, the various weight vectors in the voted perceptron don’t need to be stored explicitly, and the kernel trick can be applied here too.)"><span class="" id="result_box" lang="it"><span title="The same holds for Figure 6.10(d), which shows two points in a one-dimensional instance space (in the case of one dimension the separating hyperplane degenerates to a separating point)."><span class="" id="result_box" lang="it"><span class="" id="result_box" lang="it"><span title="In neural networks terminology it is called the sigmoid function, and it is defined by"><span class="" id="result_box" lang="it"><span title="For a single training instance, it is Figure 6.11 Step versus sigmoid: (a) step function and (b) sigmoid function."><span class="" id="result_box" lang="it"><span title="In the example this happens when the value approaches 0, the value corresponding to the location on the X-axis where the minimum of the hypothetical error function is located."><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="short_text" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span title="Before learning starts, each weight is initialized to a small, randomly chosen value based on a normal distribution with zero mean."> </span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><span class="" id="result_box" lang="it"><span title="(Note that, as previously mentioned, the various weight vectors in the voted perceptron don’t need to be stored explicitly, and the kernel trick can be applied here too.)"><span class="" id="result_box" lang="it"><span title="The same holds for Figure 6.10(d), which shows two points in a one-dimensional instance space (in the case of one dimension the separating hyperplane degenerates to a separating point)."><span class="" id="result_box" lang="it"><span class="" id="result_box" lang="it"><span title="In neural networks terminology it is called the sigmoid function, and it is defined by"><span class="" id="result_box" lang="it"><span title="For a single training instance, it is Figure 6.11 Step versus sigmoid: (a) step function and (b) sigmoid function."><span class="" id="result_box" lang="it"><span title="In the example this happens when the value approaches 0, the value corresponding to the location on the X-axis where the minimum of the hypothetical error function is located."><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="short_text" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span title="Before learning starts, each weight is initialized to a small, randomly chosen value based on a normal distribution with zero mean."><span class="" id="result_box" lang="it"><span title="Like any other learning scheme, multilayer perceptrons trained with 'back-propagation' may suffer from overfitting—especially if the network is much larger than what is actually necessary to represent the structure of the underlying learning problem.">Come
ogni altro schema di apprendimento, i perceptroni multilayer formati
con "back-propagation" possono soffrire di overfitting - specialmente se
la rete è molto più grande di quella necessaria per rappresentare la
struttura del problema di apprendimento sottostante. </span><span title="Many modifications have been proposed to alleviate this.">Molte modifiche sono state proposte per alleviare questo. </span><span title="A very simple one, called early stopping, works like reduced-error pruning in rule learners: a holdout set is used to decide when to stop performing further iterations of the backpropagation algorithm.">Un
modo molto semplice, chiamato arresto precoce, funziona come la
potatura a errori ridotti nei partecipanti alle regole: un set di
holdout viene utilizzato per decidere quando smettere di eseguire
ulteriori iterazioni dell'algoritmo di backpropagation. </span><span title="The error on the holdout set is measured and the algorithm is terminated once the error begins to increase, because that indicates overfitting to the training data.">L'errore
sul set holdout viene misurato e l'algoritmo viene interrotto una volta
che l'errore inizia ad aumentare, perché ciò indica l'overfitting dei
dati di allenamento. </span><span title="Another method, called weight decay, adds to the error function a penalty term that consists of the squared sum of all weights in the network.">Un
altro metodo, detto decadimento di peso, aggiunge alla funzione di
errore un termine di penalità che consiste nella somma quadrata di tutti
i pesi della rete. </span><span title="This attempts to limit the influence of irrelevant connections on the network’s predictions by penalizing large weights that do not contribute a correspondingly large reduction in the error.
">Ciò tenta di limitare l'influenza delle connessioni irrilevanti
sulle previsioni della rete penalizzando pesi di grandi dimensioni che
non contribuiscono ad una riduzione corrispondente di conseguenza
nell'errore.<br /> </span><span title="Although standard gradient descent is the simplest technique for learning the weights in a multilayer perceptron, it is by no means the most efficient one.">Anche
se la discesa di gradiente standard è la tecnica più semplice per
imparare i pesi in un perceptron multilayer, non è affatto il modo più
efficiente. </span><span title="In practice, it tends to be rather slow.">In pratica, tende ad essere piuttosto lenta. </span><span title="A trick that often improves performance is to include a momentum term when updating weights: add to the new weight change a small proportion of the update value from the previous iteration.">Un
trucco che migliora spesso le prestazioni è quello di includere un
termine di momentum all'aggiornamento dei pesi: aggiungere al nuovo peso
cambiare una piccola percentuale del valore di aggiornamento
dell'iterazione precedente. </span><span title="This smooths the search process by making changes in direction less abrupt.">Ciò semplifica il processo di ricerca modificando la direzione in modo meno brusco. </span><span title="More sophisticated methods use information obtained from the second derivative of the error function as well;">Metodi più sofisticati utilizzano le informazioni ottenute anche dal secondo derivato della funzione di errore; </span><span title="they can converge much more quickly.">Possono convergere molto più rapidamente. </span><span title="However, even those algorithms can be very slow compared with other methods of classification learning.
">Tuttavia, anche questi algoritmi possono essere molto lenti rispetto ad altri metodi di apprendimento classificazione.<br /> </span><span title="A serious disadvantage of multilayer perceptrons that contain hidden units is that they are essentially opaque.">Uno svantaggio grave di perceproni multistrato che contengono unità nascoste è che sono essenzialmente opache. </span><span title="There are several techniques that attempt to extract rules from trained neural networks.">Ci sono diverse tecniche che tentano di estrarre regole da reti neurali addestrate. </span><span title="However, it is unclear whether they offer any advantages over standard rule learners that induce rule sets directly from data—especially considering that this can generally be done much more quickly than learning a multilayer perceptron in the first place.
">Tuttavia, non è chiaro se offrono dei vantaggi rispetto ai
principianti di regole standard che inducono le regole direttamente dai
dati, soprattutto se si può generalmente fare molto più rapidamente che
imparare un perceptron multilayer in primo luogo.<br /> </span><span title="Although multilayer perceptrons are the most prominent type of neural network, many others have been proposed.">Sebbene i perceponi multilayer siano il tipo più importante della rete neurale, sono stati proposti molti altri. </span><span title="Multilayer perceptrons belong to a class of networks called feedforward networks because they do not contain any cycles and the network’s output depends only on the current input instance.">I
perceptron multilayer appartengono a una classe di reti denominate reti
feedforward perché non contengono cicli e l'output della rete dipende
solo dall'istanza di input corrente. </span><span title="Recurrent neural networks do have cycles.">Le reti neurali ricorrenti hanno cicli. </span><span title="Computations derived from earlier input are fed back into the network, which gives them a kind of memory.">I calcoli derivanti dall'ingresso precedente vengono ricondotti alla rete, che dà loro una sorta di memoria.</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><br />
<h4>
<span class="" id="result_box" lang="it"><span title="(Note that, as previously mentioned, the various weight vectors in the voted perceptron don’t need to be stored explicitly, and the kernel trick can be applied here too.)"><span class="" id="result_box" lang="it"><span title="The same holds for Figure 6.10(d), which shows two points in a one-dimensional instance space (in the case of one dimension the separating hyperplane degenerates to a separating point)."><span class="" id="result_box" lang="it"><span class="" id="result_box" lang="it"><span title="In neural networks terminology it is called the sigmoid function, and it is defined by"><span class="" id="result_box" lang="it"><span title="For a single training instance, it is Figure 6.11 Step versus sigmoid: (a) step function and (b) sigmoid function."><span class="" id="result_box" lang="it"><span title="In the example this happens when the value approaches 0, the value corresponding to the location on the X-axis where the minimum of the hypothetical error function is located."><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="short_text" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span title="Before learning starts, each weight is initialized to a small, randomly chosen value based on a normal distribution with zero mean."><span class="" id="result_box" lang="it"><span title="Computations derived from earlier input are fed back into the network, which gives them a kind of memory."> </span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><span class="" id="result_box" lang="it"><span title="(Note that, as previously mentioned, the various weight vectors in the voted perceptron don’t need to be stored explicitly, and the kernel trick can be applied here too.)"><span class="" id="result_box" lang="it"><span title="The same holds for Figure 6.10(d), which shows two points in a one-dimensional instance space (in the case of one dimension the separating hyperplane degenerates to a separating point)."><span class="" id="result_box" lang="it"><span class="" id="result_box" lang="it"><span title="In neural networks terminology it is called the sigmoid function, and it is defined by"><span class="" id="result_box" lang="it"><span title="For a single training instance, it is Figure 6.11 Step versus sigmoid: (a) step function and (b) sigmoid function."><span class="" id="result_box" lang="it"><span title="In the example this happens when the value approaches 0, the value corresponding to the location on the X-axis where the minimum of the hypothetical error function is located."><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="short_text" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span title="Before learning starts, each weight is initialized to a small, randomly chosen value based on a normal distribution with zero mean."><span class="" id="result_box" lang="it"><span title="Computations derived from earlier input are fed back into the network, which gives them a kind of memory."><span class="short_text" id="result_box" lang="it"><span class="">Reti funzionali di base - Radial basis function networks</span></span> </span></span> </span></span> </span></span> </span></span> </span></span> </span></span> </span></span> </span></span> </span></span> </span></span> </span></span> </span></span> </span></span> </span></span> </span></span></span> </span></span></h4>
<span class="" id="result_box" lang="it"><span title="Another popular type of feedforward network is the radial basis function (RBF) network.">Un altro tipo di rete di feedforward popolare è la rete radiale di base (RBF). </span><span title="It has two layers, not counting the input layer, and differs from a multilayer perceptron in the way that the hidden units perform computations.">Ha
due livelli, non contando il livello di input e si differenzia da un
perceptron multilayer nel modo in cui le unità nascoste eseguono
calcoli. </span><span title="Each hidden unit essentially represents a particular point in input space, and its output, or activation, for a given instance depends on the distance between its point and the instance—which is just another point.">Ogni
unità nascosta rappresenta essenzialmente un punto particolare nello
spazio di input e la sua uscita o attivazione per una determinata
istanza dipende dalla distanza tra il punto e l'istanza, che è solo un
altro punto. </span><span title="Intuitively, the closer these two points, the stronger the activation.">Intuitivo, più vicini questi due punti, più forte è l'attivazione. </span><span title="This is achieved by using a nonlinear transformation function to convert the distance into a similarity measure.">Ciò si ottiene utilizzando una funzione di trasformazione non lineare per convertire la distanza in misura di somiglianza. </span><span title="A bell-shaped Gaussian activation function, whose width may be different for each hidden unit, is commonly used for this purpose.">Una
funzione di attivazione Gaussian a forma di campana, la cui larghezza
può essere diversa per ogni unità nascosta, è comunemente utilizzata a
questo scopo. </span><span title="The hidden units are called RBFs because the points in instance space for which a given hidden unit produces the same activation form a hypersphere or hyperellipsoid.">Le
unità nascoste sono chiamate RBF perché i punti nello spazio di esempio
per cui una determinata unità nascosta produce la stessa attivazione
formano un'ipersfera o un iperelipsoide. </span><span title="(In a multilayer perceptron, this is a hyperplane.)
">(In un perceptron multilayer, questo è un iperplano.)<br /> </span><span title="The output layer of an RBF network is the same as that of a multilayer perceptron: it takes a linear combination of the outputs of the hidden units and - in classification problems - pipes it through the sigmoid function.">Lo
strato di uscita di una rete RBF è lo stesso di quello di un perceptron
multilayer: richiede una combinazione lineare delle uscite delle unità
nascoste e - nei problemi di classificazione - lo conduce attraverso la
funzione sigmoide. </span><span title="The parameters that such a network learns are (a) the centers and widths of the RBFs and (b) the weights used to form the linear combination of the outputs obtained from the hidden layer.">I
parametri che una tale rete apprende sono (a) i centri e le larghezze
dei RBF e (b) i pesi utilizzati per formare la combinazione lineare
delle uscite ottenute dal livello nascosto. </span><span title="A significant advantage over multilayer perceptrons is that the first set of parameters can be determined independently of the second set and still produce accurate classifiers.
">Un notevole vantaggio rispetto ai percepti multilayer è che la prima
serie di parametri può essere determinata indipendentemente dal secondo
set e producono ancora classificatori precisi.</span><span title="One way to determine the first set of parameters is to use clustering, without looking at the class labels of the training instances at all.">Un
modo per determinare la prima serie di parametri è quello di utilizzare
il clustering, senza guardare le etichette di classe delle istanze di
formazione a tutti. </span><span title="The simple k-means clustering algorithm described in Section 4.8 can be applied, clustering each class independently to obtain k basis functions for each class.">È
possibile applicare il semplice algoritmo di clustering di k descritto
nella sezione 4.8, raggruppando ogni classe in modo indipendente per
ottenere le funzioni base di k per ogni classe. </span><span title="Intuitively, the resulting RBFs represent prototype instances.">Intuitivamente, i RBF risultanti rappresentano istanze prototipo. </span><span title="Then the second set of parameters can be learned, keeping the first parameters fixed.">Quindi si può apprendere il secondo set di parametri, mantenendo i primi parametri fissati. </span><span title="This involves learning a linear model using one of the techniques we have discussed (e.g., linear or logistic regression).">Ciò
implica l'apprendimento di un modello lineare utilizzando una delle
tecniche che abbiamo discusso (ad esempio, regressione lineare o
logistica). </span><span title="If there are far fewer hidden units than training instances, this can be done very quickly.
">Se ci sono molto meno unità nascoste di istanze di formazione, questo può essere fatto molto rapidamente.<br /> </span><span title="A disadvantage of RBF networks is that they give every attribute the same weight because all are treated equally in the distance computation.">Uno
svantaggio delle reti RBF è che attribuiscono ad ogni attributo lo
stesso peso perché tutti sono trattati ugualmente nel calcolo della
distanza. </span><span title="Hence they cannot deal effectively with irrelevant attributes—in contrast to multilayer perceptrons.">Quindi non possono affrontare efficacemente gli attributi irrilevanti, in contrasto con i perceponi multilayer. </span><span title="Support vector machines share the same problem.">Le macchine vettoriali di supporto condividono lo stesso problema. </span><span title="In fact, support vector machines with Gaussian kernels (i.e., “RBF kernels”) are a particular type of RBF network, in which one basis function is centered on every training instance, and the outputs are combined linearly by computing the maximum margin hyperplane.">Infatti,
le macchine vettoriali di supporto con i kernel Gaussian (cioè "kernel
RBF") sono un particolare tipo di rete RBF, in cui una funzione di base è
centrata su ogni istanza di addestramento e le uscite vengono combinate
linearmente calcolando l'iperplano di margine massimo. </span><span title="This has the effect that only some RBFs have a nonzero weight—the ones that represent the support vectors.">Ciò ha l'effetto che solo alcuni RBF hanno un peso non zero, quelli che rappresentano i vettori di supporto.</span></span><br />
<span class="" id="result_box" lang="it"><span title="This has the effect that only some RBFs have a nonzero weight—the ones that represent the support vectors."> </span></span><span class="" id="result_box" lang="it"><span title="This has the effect that only some RBFs have a nonzero weight—the ones that represent the support vectors."> Dicusione</span></span><br />
<span class="" id="result_box" lang="it"><span title="This has the effect that only some RBFs have a nonzero weight—the ones that represent the support vectors."> </span></span><span class="" id="result_box" lang="it"><span title="This has the effect that only some RBFs have a nonzero weight—the ones that represent the support vectors."><span class="" id="result_box" lang="it"><span title="Support vector machines originated from research in statistical learning theory (Vapnik 1999), and a good starting point for exploration is a tutorial by Burges (1998).">Le
macchine vettoriali di supporto provengono dalla ricerca sulla teoria
dell'apprendimento statistico (Vapnik 1999) e un buon punto di partenza
per l'esplorazione è un tutorial di Burges (1998). </span><span title="A general description, including generalization to the case in which the data is not linearly separable, has been published by Cortes and Vapnik (1995).">Una
descrizione generale, compresa la generalizzazione del caso in cui i
dati non sono linearmente separabili, è stato pubblicato da Cortes e
Vapnik (1995). </span><span title="We have introduced the standard version of support vector regression: Schölkopf et al.">Abbiamo introdotto la versione standard della regressione dei vettori di sostegno: Schölkopf et al. </span><span title="(1999) present a different version that has one parameter instead of two.">(1999) presentano una versione diversa che ha un parametro invece di due. </span><span title="Smola and Schölkopf (2004) provide an extensive tutorial on support vector regression.
">Smola e Schölkopf (2004) forniscono un approfondito tutorial sulla regressione dei vettori di supporto.<br /> </span><span title="The (voted) kernel perceptron is due to Freund and Schapire (1999).">Il perceptron del kernel (votato) è dovuto a Freund e Schapire (1999). </span><span title="Cristianini and Shawe-Taylor (2000) provide a nice introduction to support vector machines and other kernel-based methods, including the optimization theory underlying the support vector learning algorithms.">Cristianini
e Shawe-Taylor (2000) forniscono una bella introduzione per supportare
macchine vettoriali e altri metodi basati su kernel, tra cui la teoria
dell'ottimizzazione sottostante gli algoritmi di apprendimento
vettoriale di supporto. </span><span title="We have barely skimmed the surface of these learning schemes, mainly because advanced mathematics lies just beneath.">Abbiamo
appena sfondato la superficie di questi schemi di apprendimento,
soprattutto perché la matematica avanzata si trova appena sotto. </span><span title="The idea of using kernels to solve nonlinear problems has been applied to many algorithms, for example, principal components analysis (described in Section 7.3).">L'idea
di utilizzare i kernel per risolvere i problemi non lineari è stata
applicata a molti algoritmi, ad esempio l'analisi dei componenti
principali (descritta in Sezione 7.3). </span><span title="A kernel is essentially a similarity function with certain mathematical properties, and it is possible to define kernel functions over all sorts of structures—for example, sets, strings, trees, and probability distributions.">Un
kernel è essenzialmente una funzione di somiglianza con alcune
proprietà matematiche e è possibile definire le funzioni del kernel su
tutti i tipi di strutture - ad esempio, set, stringhe, alberi e
distribuzioni di probabilità. </span><span title="Shawe-Taylor and Cristianini (2004) cover kernel-based learning in detail.
">Shawe-Taylor e Cristianini (2004) coprono dettagliatamente l'apprendimento basato sul kernel.<br /> </span><span title="There is extensive literature on neural networks, and Bishop (1995) provides an excellent introduction to both multilayer perceptrons and RBF networks.">C'è
una vasta letteratura sulle reti neurali, e Bishop (1995) fornisce
un'eccellente introduzione sia per i percepiti multilayer che per le
reti RBF. </span><span title="Interest in neural networks appears to have declined since the arrival of support vector machines, perhaps because the latter generally require fewer parameters to be tuned to achieve the same (or greater) accuracy.">L'interesse
per le reti neurali sembra diminuito dall'arrivo di macchine vettoriali
di sostegno, forse perché queste ultime richiedono generalmente pochi
parametri da sintonizzarsi per ottenere la stessa (o maggiore)
precisione. </span><span title="However, multilayer perceptrons have the advantage that they can learn to ignore irrelevant attributes, and RBF networks trained using k-means can be viewed as a 'quick-and-dirty' method for finding a nonlinear classifier.">Tuttavia,
i perceproni multilayer hanno il vantaggio di imparare a ignorare gli
attributi irrilevanti e le reti RBF addestrate usando k-means possono
essere considerate come un metodo "rapido e sporco" per trovare un
classificatore non lineare.</span></span></span></span><br />
<h4>
<span class="" id="result_box" lang="it"><span title="This has the effect that only some RBFs have a nonzero weight—the ones that represent the support vectors."><span class="" id="result_box" lang="it"><span title="However, multilayer perceptrons have the advantage that they can learn to ignore irrelevant attributes, and RBF networks trained using k-means can be viewed as a 'quick-and-dirty' method for finding a nonlinear classifier."> </span></span></span></span><span class="" id="result_box" lang="it"><span title="This has the effect that only some RBFs have a nonzero weight—the ones that represent the support vectors."><span class="" id="result_box" lang="it"><span title="However, multilayer perceptrons have the advantage that they can learn to ignore irrelevant attributes, and RBF networks trained using k-means can be viewed as a 'quick-and-dirty' method for finding a nonlinear classifier."><span class="short_text" id="result_box" lang="it"><span class="">Apprendimento basato su istanza - Instance-based learning</span></span></span></span></span></span></h4>
<span class="" id="result_box" lang="it"><span title="This has the effect that only some RBFs have a nonzero weight—the ones that represent the support vectors."><span class="" id="result_box" lang="it"><span title="However, multilayer perceptrons have the advantage that they can learn to ignore irrelevant attributes, and RBF networks trained using k-means can be viewed as a 'quick-and-dirty' method for finding a nonlinear classifier."><span class="short_text" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""> Nella sezione
4.7 abbiamo visto come la regola più vicina può essere usata per
implementare una forma di base di apprendimento basato su istanze.</span> <span class="">Ci sono diversi problemi pratici con questo semplice metodo.</span> <span class="">In
primo luogo, tende ad essere lento per i grandi set di addestramento,
perché l'intero set deve essere ricercato per ogni istanza di prova, a
meno che non siano utilizzate strutture sofisticate di dati come alberi
di kD o alberi a sfera.</span> <span class="">In secondo luogo, si
esegue male con dati rumorosi, perché la classe di un'istanza di prova è
determinata dal suo prossimo vicino senza alcuna "media" per eliminare
il rumore.</span> <span class="">In terzo luogo, si esegue male quando
diversi attributi influenzano il risultato a diverse estensioni - nel
caso estremo, quando alcuni attributi sono completamente irrilevanti -
perché tutti gli attributi contribuiscono ugualmente alla formula di
distanza.</span> <span class="">In quarto luogo, non esegue
generalizzazioni esplicite, anche se abbiamo intimato nella sezione 3.8
(e illustrato nella figura 3.8) che alcuni sistemi di apprendimento
basati sull'istanza comportano effettivamente una generalizzazione
esplicita.</span></span></span></span> </span></span></span></span><br />
<h4>
<span class="" id="result_box" lang="it"><span title="This has the effect that only some RBFs have a nonzero weight—the ones that represent the support vectors."><span class="" id="result_box" lang="it"><span title="However, multilayer perceptrons have the advantage that they can learn to ignore irrelevant attributes, and RBF networks trained using k-means can be viewed as a 'quick-and-dirty' method for finding a nonlinear classifier."> <span class="" id="result_box" lang="it"><span title="'Reducing' the number of exemplars">'Ridurre' il numero di esemplari - 'Reducing' the number of exemplars</span></span> </span></span></span></span></h4>
<span class="" id="result_box" lang="it"><span title="This has the effect that only some RBFs have a nonzero weight—the ones that represent the support vectors."><span class="" id="result_box" lang="it"><span title="However, multilayer perceptrons have the advantage that they can learn to ignore irrelevant attributes, and RBF networks trained using k-means can be viewed as a 'quick-and-dirty' method for finding a nonlinear classifier."> </span></span></span></span><span class="" id="result_box" lang="it"><span title="The plain 'nearest-neighbor' rule stores a lot of redundant exemplars: it is almost always completely unnecessary to save all the examples seen so far.">La
regola "vicina più vicina" contiene molti esemplari ridondanti: è quasi
sempre inutile salvare tutti gli esempi visti finora. </span><span title="A simple variant is to classify each example with respect to the examples already seen and to save only ones that are misclassified.">Una
semplice variante è classificare ogni esempio rispetto agli esempi già
visti e salvare solo quelli che sono erroneamente classificati. </span><span title="We use the term exemplars to refer to the already-seen instances that are used for classification.">Utilizziamo il termine esemplari per fare riferimento alle istanze già viste che vengono utilizzate per la classificazione. </span><span title="Discarding correctly classified instances reduces the number of exemplars and proves to be an effective way to prune the exemplar database.">Scartare
istanze classificate correttamente riduce il numero di esemplari e si
dimostra un modo efficace per eseguire la piastrellatura del database
esemplare. </span><span title="Ideally, only a single exemplar is stored for each important region of the instance space.">Idealmente, per ciascuna regione importante dello spazio di istanza è memorizzato un solo esemplare. </span><span title="However, early in the learning process examples may be discarded that later turn out to be important, possibly leading to some decrease in predictive accuracy.">Tuttavia,
all'inizio degli esempi di apprendimento possono essere scartati che
successivamente diventano importanti, eventualmente portando ad una
certa diminuzione dell'esattezza predittiva. </span><span title="As the number of stored instances increases, the accuracy of the model improves, and so the system makes fewer mistakes.
">Quando aumenta il numero di istanze memorizzate, migliora l'accuratezza del modello e quindi il sistema fa meno errori.<br /> </span><span title="Unfortunately, the strategy of only storing misclassified instances does not work well in the face of noise.">Purtroppo, la strategia di memorizzare solo istanze erronee non funziona bene a fronte di rumore. </span><span title="Noisy examples are very likely to be misclassified, and so the set of stored exemplars tends to accumulate those that are least useful.">Gli
esempi rumorosi sono molto probabili essere classificati in modo errato
e quindi l'insieme degli esemplari memorizzati tende ad accumulare
quelli meno utili. </span><span title="This effect is easily observed experimentally.">Questo effetto è facilmente osservabile sperimentalmente. </span><span title="Thus this strategy is only a stepping-stone on the way toward more effective instance-based learners.">Quindi questa strategia è solo un passo avanti sulla strada verso i discenti basati sull'istanza più efficace.</span></span><br />
<h4>
<span class="" id="result_box" lang="it"><span title="This has the effect that only some RBFs have a nonzero weight—the ones that represent the support vectors."><span class="" id="result_box" lang="it"><span title="However, multilayer perceptrons have the advantage that they can learn to ignore irrelevant attributes, and RBF networks trained using k-means can be viewed as a 'quick-and-dirty' method for finding a nonlinear classifier."> <span class="short_text" id="result_box" lang="it"><span class="">Esemplari rumorosi di potatura </span></span></span></span></span></span></h4>
<span class="" id="result_box" lang="it"><span title="This has the effect that only some RBFs have a nonzero weight—the ones that represent the support vectors."><span class="" id="result_box" lang="it"><span title="However, multilayer perceptrons have the advantage that they can learn to ignore irrelevant attributes, and RBF networks trained using k-means can be viewed as a 'quick-and-dirty' method for finding a nonlinear classifier."><span class="short_text" id="result_box" lang="it"><span class=""> </span></span></span></span></span></span><span class="" id="result_box" lang="it">Gli esemplari rumorosi
inevitabilmente riducono le prestazioni di uno schema di "prossimità più
vicino" che non li sopprime perché hanno l'effetto di ripetutamente
sbagliare nuovi casi. Ci sono due modi per affrontare questo problema.
Uno è quello di individuare, al posto del prossimo più vicino, i vicini
più vicini k per qualche costante predeterminata k e assegnare la classe
di maggioranza all'istanza sconosciuta. L'unico problema qui è
determinare un valore adatto di k. L'apprendimento di prossimità più
vicina al campo corrisponde a k = 1. Più il rumore, maggiore è il valore
ottimale di k. Un modo per procedere è quello di eseguire test di
convalida incrociata con valori diversi e scegliere il meglio. Anche se
questo è costoso nel tempo di calcolo, spesso produce eccellenti
prestazioni predittive.<br /> Una seconda soluzione consiste nel
monitorare le prestazioni di ciascun esemplare che vengono memorizzate e
scartate quelle che non funzionano bene. Questo può essere fatto
mantenendo un record del numero di decisioni di classificazione corrette
e scorrette che ogni esemplare fa. Due soglie predeterminate sono
impostate sul rapporto di successo. Quando una prestazione di un
esemplare scende al di sotto di quella inferiore, viene eliminata
dall'insieme esemplare. Se la sua prestazione supera la soglia
superiore, viene utilizzata per predire la classe di nuove istanze. Se
la sua performance si trova tra i due, non viene utilizzata per la
previsione, ma ogni volta che è l'esempio più vicino alla nuova istanza
(e quindi sarebbe stato utilizzato per la previsione se il suo record di
performance era stato sufficiente), le statistiche di successo sono
aggiornate Come se fosse stato usato per classificare quella nuova
istanza.<br /> Per fare ciò, utilizziamo i limiti di confidenza sulla
probabilità di successo di un processo Bernoulli che abbiamo derivato
nella Sezione 5.2. Ricordiamo che abbiamo preso un certo numero di
successi S da un totale di prove N come prove su cui basare i limiti di
fiducia sul vero tasso di successo sottostante p. Dato un certo livello
di fiducia del 5%, possiamo calcolare i limiti superiori e inferiori ed
essere il 95% sicuro che p sia fra di loro.<br /> Per applicare questo
al problema di decidere quando accettare un esemplare particolare,
supponiamo che sia stato usato n volte per classificare altre istanze e
che s di questi 'sono stati successi'. Ciò ci consente di stimare i
limiti, a un certo livello di fiducia, sul vero tasso di successo di
questo esemplare. Ora supponiamo che la classe dell'esemplare si sia
verificata c volte fuori da un numero totale di istanze di formazione N.
Ciò consente di stimare i limiti sul tasso di successo predefinito,
cioè la probabilità di classificare con successo un'istanza di questa
classe senza informazioni su altre istanze. Insistiamo che la bassa
fiducia legata al suo tasso di successo superi la fiducia superiore
legata al tasso di successo predefinito. Utilizziamo lo stesso metodo
per elaborare un criterio per rifiutare un esemplificato male, che
richiede che la fiducia superiore legata alla sua percentuale di
successo sia al di sotto della minore fiducia legata al tasso di
successo predefinito.<br /> Con una scelta adeguata di soglie, questo
schema funziona bene. In una particolare implementazione, denominata IB3
per la versione 3 basata su base istanza, viene utilizzato un livello
di confidenza del 5% per determinare l'accettazione, mentre un livello
del 12,5% viene utilizzato per il rifiuto. La percentuale di percentuale
più bassa produce un intervallo di confidenza più ampio, che fa un
criterio più rigoroso perché è più difficile che il limite inferiore di
un intervallo si trovi sopra il limite superiore dell'altro. Il criterio
di accettazione è più rigoroso di quello per il rifiuto, rendendo più
difficile l'accettazione di un'istanza. La ragione di un criterio di
rifiuto meno rigoroso è che non c'è molto da perdere, lasciando le
istanze con solo accuracies di classificazione moderatamente scarse:
probabilmente verranno sostituite da un'istanza simile più tardi.
Utilizzando queste soglie, il metodo è stato trovato per migliorare le
prestazioni dell'apprendimento basato sull'istanza e, allo stesso tempo,
ridurre notevolmente il numero di esemplari, in particolare quelli
rumorosi, memorizzati.</span><br />
<h4>
<span class="" id="result_box" lang="it"> </span><span class="" id="result_box" lang="it"><span class="short_text" id="result_box" lang="it"><span class="">Attributi di ponderazione - Weighting attributes</span></span> </span></h4>
<span class="" id="result_box" lang="it"><span title="This has the effect that only some RBFs have a nonzero weight—the ones that represent the support vectors."><span class="" id="result_box" lang="it"><span title="However, multilayer perceptrons have the advantage that they can learn to ignore irrelevant attributes, and RBF networks trained using k-means can be viewed as a 'quick-and-dirty' method for finding a nonlinear classifier."><span class="short_text" id="result_box" lang="it"><span class=""> </span></span></span></span></span></span><span class="" id="result_box" lang="it"><span title="The Euclidean distance function, modified to scale all attribute values to between 0 and 1, works well in domains in which the attributes are equally relevant to the outcome.">La
funzione di distanza Euclidea, modificata per scalare tutti i valori
degli attributi tra 0 e 1, funziona bene nei domini in cui gli attributi
sono altrettanto rilevanti per l'esito. </span><span title="Such domains, however, are the exception rather than the rule.">Tali domini, tuttavia, sono l'eccezione piuttosto che la regola. </span><span title="In most domains some attributes are irrelevant, and some relevant ones are less important than others.">Nella maggior parte dei domini alcuni attributi sono irrilevanti e alcuni relativi sono meno importanti di altri. </span><span title="The next improvement in instance-based learning is to learn the relevance of each attribute incrementally by dynamically updating feature weights.
">Il prossimo miglioramento nell'apprendimento basato su istanze è
quello di apprendere in modo incrementale la pertinenza di ogni
attributo aggiornando dinamicamente i pesi delle funzionalità.<br /> </span><span title="In some schemes, the weights are class specific in that an attribute may be more important to one class than to another.">In
alcuni schemi, i pesi sono di classe specifica in quanto un attributo
può essere più importante per una classe che ad un altro. </span><span title="To cater for this, a description is produced for each class that distinguishes its members from members of all other classes.">A tal fine, viene prodotta una descrizione per ogni classe che distingue i suoi membri dai membri di tutte le altre classi. </span><span title="This leads to the problem that an unknown test instance may be assigned to several different classes, or to no classes at all—a problem that is all too familiar from our description of rule induction.">Ciò
porta al problema che un'istanza di prova sconosciuta può essere
assegnata a diverse classi, oa nessuna classe, un problema troppo
familiare dalla nostra descrizione dell'induzione della regola. </span><span title="Heuristic solutions are applied to resolve these situations.">Soluzioni euristiche vengono applicate per risolvere queste situazioni. </span><span title="The distance metric incorporates the feature weights w1, w2, .">La metrica a distanza include i pesi delle funzioni w1, w2,. </span><span title=".">. </span><span title=".">. </span><span title=", wn on each dimension:">, Wn su ogni dimensione:</span></span><br />
<span class="" id="result_box" lang="it"><span title=", wn on each dimension:"> .....</span></span><br />
<span class="" id="result_box" lang="it"><span title=", wn on each dimension:"> </span></span><span class="" id="result_box" lang="it"><span title=", wn on each dimension:"><span class="" id="result_box" lang="it"><span title="In the case of class-specific feature weights, there will be a separate set of weights for each class.
">Nel caso di pesi di caratteristiche specifiche per la classe, per
ciascuna classe verranno impostati un insieme separato di pesi.<br /> </span><span title="All attribute weights are updated after each training instance is classified, and the most similar exemplar (or the most similar exemplar of each class) is used as the basis for updating.">Tutti
i pesi degli attributi vengono aggiornati dopo che ciascuna istanza di
formazione è classificata e l'esempio più simile (o l'esempio più simile
di ogni classe) viene utilizzato come base per l'aggiornamento. </span><span title="Call the training instance x and the most similar exemplar y.">Chiama l'istanza di addestramento x e l'esemplare più simile. </span><span title="For each attribute i, the difference |xi - yi|">Per ogni attributo i la differenza xi-yi | </span><span title="is a measure of the contribution of that attribute to the decision.">È una misura del contributo di tale attributo alla decisione. </span><span title="If this difference is small then the attribute contributes positively, whereas if it is large it may contribute negatively.">Se questa differenza è piccola allora l'attributo contribuisce positivamente, mentre se è grande può contribuire negativamente. </span><span title="The basic idea is to update the ith weight on the basis of the size of this difference and whether the classification was indeed correct.">L'idea
di base è quella di aggiornare il peso ith in base alla dimensione di
questa differenza e se la classificazione fosse effettivamente corretta.
</span><span title="If the classification is correct the associated weight is increased and if it is incorrect it is decreased, the amount of increase or decrease being governed by the size of the difference: large if the difference is small and vice versa.">Se
la classificazione è corretta, il peso associato è aumentato e se è
scorretto diminuisce, l'importo di aumento o diminuzione viene regolato
dalla dimensione della differenza: grande se la differenza è piccola e
viceversa. </span><span title="The weight change is generally followed by a renormalization step.">Il cambiamento di peso è generalmente seguito da una fase di renormalizzazione. </span><span title="A simpler strategy, which may be equally effective, is to leave the weights alone if the decision is correct and if it is incorrect to increase the weights for those attributes that differ most greatly, accentuating the difference.">Una
strategia più semplice, che può essere altrettanto efficace, è quella
di lasciare i pesi da soli se la decisione è corretta e se è errato
aumentare i pesi per quegli attributi che differiscono notevolmente,
accentuando la differenza. </span><span title="Details of these weight adaptation algorithms are described by Aha (1992).">I dettagli di questi algoritmi di adattamento del peso sono descritti da Aha (1992). </span><span title="A good test of whether an attribute weighting method works is to add irrelevant attributes to all examples in a dataset.">Un
buon test se un metodo di ponderazione di attributo funziona è quello
di aggiungere attributi irrilevanti a tutti gli esempi di un set di
dati. </span><span title="Ideally, the introduction of irrelevant attributes should not affect either the quality of predictions or the number of exemplars stored.">Idealmente,
l'introduzione di attributi irrilevanti non dovrebbe pregiudicare la
qualità delle previsioni o il numero di esemplari memorizzati.</span></span></span></span><br />
<h4>
<span class="" id="result_box" lang="it"><span title=", wn on each dimension:"><span class="" id="result_box" lang="it"><span title="Ideally, the introduction of irrelevant attributes should not affect either the quality of predictions or the number of exemplars stored."> </span></span></span></span><span class="" id="result_box" lang="it"><span title=", wn on each dimension:"><span class="" id="result_box" lang="it"><span title="Ideally, the introduction of irrelevant attributes should not affect either the quality of predictions or the number of exemplars stored."><span class="short_text" id="result_box" lang="it"><span class="">Generalizzare esemplari - Generalizing exemplars</span></span> </span></span></span></span></h4>
<span class="" id="result_box" lang="it"><span title=", wn on each dimension:"><span class="" id="result_box" lang="it"><span title="Ideally, the introduction of irrelevant attributes should not affect either the quality of predictions or the number of exemplars stored."> </span></span></span></span><span class="" id="result_box" lang="it"><span title="Generalized exemplars are rectangular regions of instance space, called hyperrectangles because they are high-dimensional.">Esemplari
generalizzati sono regioni rettangolari di spazio di istanza, chiamate
hyperrectangles perché sono ad alta dimensione. </span><span title="When classifying new instances it is necessary to modify the distance function as described below to allow the distance to a hyperrectangle to be computed.">Durante
la classificazione di nuovi casi è necessario modificare la funzione di
distanza come descritto di seguito per consentire di calcolare la
distanza di un hyperrectangle. </span><span title="When a new exemplar is classified correctly, it is generalized by simply merging it with the nearest exemplar of the same class.">Quando
un nuovo esemplare è classificato correttamente, viene generalizzato
semplicemente con la fusione con l'esemplare più vicino della stessa
classe. </span><span title="The nearest exemplar may be either a single instance or a hyperrec tangle.">L'esempio più vicino può essere una singola istanza o un groviglio di iperrec. </span><span title="In the former case, a new hyperrectangle is created that covers the old and the new instance.">Nel primo caso viene creato un nuovo hyperrectangle che copre la vecchia e la nuova istanza. </span><span title="In the latter, the hyperrectangle is enlarged to encompass the new instance.">In quest'ultimo, l'hyperrectangle viene ingrandito per includere la nuova istanza. </span><span title="Finally, if the prediction is incorrect and it was a hyperrectangle that was responsible for the incorrect prediction, the hyperrectangle’s boundaries are altered so that it shrinks away from the new instance.
">Infine, se la previsione è errata ed è stato un hyperrectangle che
è stato responsabile della predizione errata, i confini del
hyperrectangle sono alterati in modo che si restringa dalla nuova
istanza.<br /> </span><span title="It is necessary to decide at the outset whether overgeneralization caused by nesting or overlapping hyperrectangles is to be permitted or not.">È
necessario decidere all'inizio se è consentito o no
l'overgeneralizzazione causata da nidificazione o sovrapposizione di
hyperrectangles. </span><span title="If it is to be avoided, a check is made before generalizing a new example to see whether any regions of feature space conflict with the proposed new hyperrectangle.">Se
si deve evitare, viene eseguito un controllo prima di generalizzare un
nuovo esempio per verificare se le regioni dello spazio delle funzioni
confliggere con il nuovo hyperrectangle proposto. </span><span title="If they do, the generalization is aborted and the example is stored verbatim.">Se lo fanno, la generalizzazione viene interrotta e l'esempio viene memorizzato in modo verbale. </span><span title="Note that overlapping hyperrectangles are precisely analogous to situations in which the same example is covered by two or more rules in a rule set.">Si
noti che i hyperrectangles sovrapposti sono esattamente analoghi a
situazioni in cui lo stesso esempio è coperto da due o più regole in un
insieme di regole. </span><span title="In some schemes generalized exemplars can be nested in that they may be completely contained within one another in the same way that, in some representations, rules may have exceptions.">In
alcuni schemi gli esemplari generalizzati possono essere nidificati in
modo che possano essere totalmente contenuti tra di loro nello stesso
modo in cui, in alcune rappresentazioni, le regole possono avere
eccezioni. </span><span title="To do this, whenever an example is incorrectly classified, a fallback heuristic is tried using the second nearest neighbor if it would have produced a correct prediction in a further attempt to perform generalization.">Per
fare questo, ogni volta che un esempio è classificato in modo errato,
viene eseguito un euristico fallback usando il secondo vicino più
prossimo se avrebbe prodotto una corretta previsione in un ulteriore
tentativo di eseguire generalizzazione. </span><span title="This second-chance mechanism promotes nesting of hyperrectangles.">Questo meccanismo di seconda opportunità promuove la nidificazione di hyperrectangles. </span><span title="If an example falls within a rectangle of the wrong class that already contains an exemplar of the same class, the two are generalized into a new “exception” hyperrectangle nested within the original one.">Se
un esempio rientra in un rettangolo della classe sbagliata che contiene
già un esemplare della stessa classe, i due si generalizzano in un
nuovo hyperrectangle "eccezione" nidificato nell'originale. </span><span title="For nested generalized exemplars, the learning process frequently begins with a small number of seed instances to prevent all examples of the same class from being generalized into a single rectangle that covers most of the problem space.">Per
gli esemplari generalizzati nidificati, il processo di apprendimento
inizia frequentemente con un piccolo numero di istanze di seme per
impedire che tutti gli esempi della stessa classe siano generalizzati in
un singolo rettangolo che copra la maggior parte dello spazio
problematico.</span></span><br />
<h4>
<span class="" id="result_box" lang="it"><span title="For nested generalized exemplars, the learning process frequently begins with a small number of seed instances to prevent all examples of the same class from being generalized into a single rectangle that covers most of the problem space."> </span></span><span class="" id="result_box" lang="it"><span title="For nested generalized exemplars, the learning process frequently begins with a small number of seed instances to prevent all examples of the same class from being generalized into a single rectangle that covers most of the problem space."> </span></span><span class="" id="result_box" lang="it"><span title="For nested generalized exemplars, the learning process frequently begins with a small number of seed instances to prevent all examples of the same class from being generalized into a single rectangle that covers most of the problem space."><span class="short_text" id="result_box" lang="it"><span class="">Funzioni di distanza per 'esemplari generalizzati'</span></span></span></span></h4>
<span class="" id="result_box" lang="it"><span title=", wn on each dimension:"> </span></span><br />
<span class="" id="result_box" lang="it"><span title="With generalized exemplars is necessary to generalize the distance function to compute the distance from an instance to a generalized exemplar, as well as to another instance.">Con
esemplari generalizzati è necessario generalizzare la funzione di
distanza per calcolare la distanza da un'istanza ad un esempio
esemplificato, nonché ad un'altra istanza. </span><span title="The distance from an instance to a hyperrectangle is defined to be zero if the point lies within the hyperrectangle.">La distanza da un'istanza ad un hyperrectangle è definita come zero se il punto si trova nell'iperrectangle. </span><span title="The simplest way to generalize the distance function to compute the distance from an exterior point to a hyperrectangle is to choose the closest instance within it and measure the distance to that.">Il
modo più semplice per generalizzare la funzione di distanza per
calcolare la distanza da un punto esterno ad un hyperrectangle è
scegliere l'istanza più vicina all'interno e misurare la distanza a
quella. </span><span title="However, this reduces the benefit of generalization because it reintroduces dependence on a particular single example.">Tuttavia, questo riduce il vantaggio della generalizzazione perché reintroduce la dipendenza da un particolare esempio singolo. </span><span title="More precisely, whereas new instances that happen to lie within a hyperrectangle continue to benefit from generalizations, ones that lie outside do not.">Più
precisamente, mentre nuovi casi che si trovano all'interno di un
iperrectangle continuano a beneficiare di generalizzazioni, quelle che
si trovano al di fuori non lo fanno. </span><span title="It might be better to use the distance from the nearest part of the hyperrectangle instead.">Potrebbe essere meglio utilizzare la distanza dalla parte più vicina dell'iperrectangle. </span><span title="Figure 6.14 shows the implicit boundaries that are formed between two rectangular classes if the distance metric is adjusted to measure distance to the nearest point of a rectangle.">La
Figura 6.14 mostra i confini impliciti che si formano tra due classi
rettangolari se la distanza metrica è regolata per misurare la distanza
dal punto più vicino di un rettangolo. </span><span title="Even in two dimensions the boundary contains a total of nine regions (they are numbered for easy identification);">Anche in due dimensioni il confine contiene un totale di nove regioni (sono numerate per una facile identificazione); </span><span title="the situation will be more complex for higher-dimensional hyperrectangles.
">La situazione sarà più complessa per i hyperrectangles più alti.<br /> </span><span title="Proceeding from the lower left, the first region, in which the boundary is linear, lies outside the extent of both rectangles—to the left of both borders of the larger one and below both borders of the smaller one.">Procedendo
dalla parte inferiore sinistra, la prima regione, in cui il limite è
lineare, si trova al di fuori dell'estensione di entrambi i rettangoli, a
sinistra di entrambi i confini della più grande e sotto entrambi i
confini del più piccolo. </span><span title="The second is within the extent of one rectangle - to the right of the leftmost border of the larger rectangle - but outside that of the other, below both borders of the smaller one.">Il
secondo è nell'ambito di un rettangolo - a destra del bordo sinistro
del rettangolo più grande - ma al di fuori dell'altro, sotto entrambe le
frontiere del più piccolo. </span><span title="In this region the boundary is parabolic, because the locus of a point that is the same distance from a given line as from a given point is a parabola.">In
questa regione il confine è parabolico, perché il luogo di un punto che
è la stessa distanza da una linea dato da un determinato punto è una
parabola. </span><span title="The third region is where the boundary meets the lower border of the larger rectangle when projected upward and the left border of the smaller one when projected to the right.">La
terza regione è dove il confine incontra il bordo inferiore del
rettangolo più grande quando proiettato verso l'alto e il bordo sinistro
del più piccolo quando proiettato a destra. </span><span title="The boundary is linear in this region, because it is equidistant from these two borders.">Il limite è lineare in questa regione, perché è equidistante da questi due confini. </span><span title="The fourth is where the boundary lies to the right of the larger rectangle but below the bottom of that rectangle.">Il quarto è dove il confine si trova alla destra del più grande rettangolo, ma al di sotto del fondo di quel rettangolo. </span><span title="In this case the boundary is parabolic because it is the locus of points equidistant from the lower right corner of the larger rectangle and the left side of the smaller one.">In
questo caso il confine è parabolico perché è il luogo di punti
equidistanti dall'angolo inferiore destro del rettangolo più grande e
quello sinistro di quello più piccolo. </span><span title="The fifth region lies between the two rectangles: here the boundary is vertical.">La quinta regione si trova tra i due rettangoli: qui il confine è verticale. </span><span title="The pattern is repeated in the upper right part of the diagram: first parabolic, then linear, then parabolic (although this particular parabola is almost indistinguishable from a straight line), and finally linear as the boundary finally escapes from the scope of both rectangles.
">Il modello viene ripetuto nella parte in alto a destra dello
schema: prima parabolico, quindi lineare, poi parabolica (anche se
questa particolare parabola è quasi indistinguibile da una linea retta) e
infine lineare, poiché il confine esclude infine dalla portata di
entrambi i rettangoli.<br /> </span><span title="This simple situation certainly defines a complex boundary!">Questa semplice situazione definisce sicuramente un confine complesso! </span><span title="Of course, it is not necessary to represent the boundary explicitly;">Naturalmente, non è necessario rappresentare esplicitamente il confine; </span><span title="it is generated implicitly by the nearest-neighbor calculation.">Viene generato implicitamente dal calcolo del vicino vicino. </span><span title="Nevertheless, the solution is still not a very good one.">Tuttavia, la soluzione non è ancora molto buona. </span><span title="Whereas taking the distance from the nearest instance within a hyperrectangle is overly dependent on the position of that particular instance, taking the distance to the nearest point of the hyperrectangle is overly dependent on that corner of the rectangle—the nearest example might be a long way">Considerando
che la distanza dall'istanza più vicina all'interno di un iperrectangle
è troppo dipendente dalla posizione di quella particolare istanza,
tenendo la distanza dal punto più vicino dell'iperrectangle è troppo
dipendente da quel angolo del rettangolo - l'esempio più vicino potrebbe
essere molto lungo </span><span title="from the corner.
">Dall'angolo.<br /> </span><span title="A final problem concerns measuring the distance to hyperrectangles that overlap or are nested.">Un problema finale riguarda la misurazione della distanza da hyperrectangles che si sovrappongono o sono nidificati. </span><span title="This complicates the situation because an instance may fall within more than one hyperrectangle.">Ciò complica la situazione perché un'istanza può rientrare in più di un hyperrectangle. </span><span title="A suitable heuristic for use in this case is to choose the class of the most specific hyperrectangle containing the instance, that is, the one covering the smallest area of instance space.">Un
appropriato euristico da utilizzare in questo caso è quello di
scegliere la classe del hyperrectangle più specifico contenente
l'istanza, cioè quella che copre la più piccola area dello spazio di
istanza. </span><span title="Whether or not overlap or nesting is permitted, the distance function should be modified to take account of both the observed prediction accuracy of exemplars and the relative importance of different features, as described in the preceding sections on pruning noisy exemplars and attribute weighting.">Se
è consentito sovrapposizione o nidificazione, la funzione di distanza
deve essere modificata in modo da tener conto sia dell'accuratezza di
previsione osservata degli esemplari che dell'importanza relativa di
diverse funzionalità, come descritto nelle sezioni precedenti sulle
esemplari rumorosi di potatura e sulla ponderazione degli attributi.</span></span><br />
<h4>
<span class="" id="result_box" lang="it"><span title="Whether or not overlap or nesting is permitted, the distance function should be modified to take account of both the observed prediction accuracy of exemplars and the relative importance of different features, as described in the preceding sections on pruning noisy exemplars and attribute weighting."> </span></span><span class="" id="result_box" lang="it"><span title="Whether or not overlap or nesting is permitted, the distance function should be modified to take account of both the observed prediction accuracy of exemplars and the relative importance of different features, as described in the preceding sections on pruning noisy exemplars and attribute weighting."><span class="short_text" id="result_box" lang="it"><span class="">Funzioni di distanza generalizzate</span></span> </span></span></h4>
<span class="" id="result_box" lang="it"><span title="Whether or not overlap or nesting is permitted, the distance function should be modified to take account of both the observed prediction accuracy of exemplars and the relative importance of different features, as described in the preceding sections on pruning noisy exemplars and attribute weighting."> </span></span><span class="" id="result_box" lang="it"><span title="There are many different ways of defining a distance function, and it is hard to find rational grounds for any particular choice.">Ci
sono molti modi diversi per definire una funzione a distanza, ed è
difficile trovare ragioni razionali per una scelta particolare. </span><span title="An elegant solution is to consider one instance being transformed into another through a sequence of predefined elementary operations and to calculate the probability of such a sequence occurring if operations are chosen randomly.">Una
soluzione elegante è considerare che un'istanza sia trasformata in
un'altra attraverso una sequenza di operazioni elementari predefinite e
per calcolare la probabilità di una simile sequenza se le operazioni
vengono scelte in modo casuale. </span><span title="Robustness is improved if all possible transformation paths are considered, weighted by their probabilities, and the scheme generalizes naturally to the problem of calculating the distance between an instance and a set of other instances by considering transformations to all instances in the set.">La
robustezza è migliorata se vengono considerati tutti i possibili
percorsi di trasformazione, ponderati dalle loro probabilità e lo schema
generalizza naturalmente il problema del calcolo della distanza tra
un'istanza e un insieme di altre istanze, considerando le trasformazioni
a tutte le istanze del set. </span><span title="Through such a technique it is possible to consider each instance as exerting a “sphere of influence,” but a sphere with soft boundaries rather than the hard-edged cutoff implied by the k-nearest-neighbor rule, in which any particular example is either">Attraverso
una tale tecnica è possibile considerare ogni istanza come esercitare
una "sfera d'influenza", ma una sfera con dei confini morbidi piuttosto
che il taglio duro del sottotetto implicito dalla regola di prossimità
più vicina, in cui un particolare esempio è o </span><span title="“in” or “out” of the decision.
">"In" o "out" della decisione.<br /> </span><span title="With such a measure, given a test instance whose class is unknown, its distance to the set of all training instances in each class in turn is calculated, and the closest class is chosen.">Con
tale misura, dato un'istanza di prova la cui classe è sconosciuta,
viene calcolata la distanza dall'insieme di tutte le istanze di
formazione di ciascuna classe a turno e viene scelta la classe più
vicina. </span><span title="It turns out that nominal and numeric attributes can be treated in a uniform manner within this transformation-based approach by defining different transformation sets, and it is even possible to take account of unusual attribute types—such as degrees of arc or days of the week">Risulta
che gli attributi nominali e numerici possono essere trattati in modo
uniforme all'interno di questo approccio basato sulla trasformazione
definendo diversi set di trasformazione, ed è anche possibile tener
conto di tipi di attributi insoliti, quali gradi di arco o giorni della
settimana </span><span title=", which are measured on a circular scale.">, Misurati su una scala circolare.</span></span><br />
<h4>
<span class="" id="result_box" lang="it"><span title="This has the effect that only some RBFs have a nonzero weight—the ones that represent the support vectors."><span class="" id="result_box" lang="it"><span title="However, multilayer perceptrons have the advantage that they can learn to ignore irrelevant attributes, and RBF networks trained using k-means can be viewed as a 'quick-and-dirty' method for finding a nonlinear classifier."><span class="short_text" id="result_box" lang="it"><span class=""> Discusione</span></span></span></span></span></span></h4>
<span class="" id="result_box" lang="it"><span title="This has the effect that only some RBFs have a nonzero weight—the ones that represent the support vectors."><span class="" id="result_box" lang="it"><span title="However, multilayer perceptrons have the advantage that they can learn to ignore irrelevant attributes, and RBF networks trained using k-means can be viewed as a 'quick-and-dirty' method for finding a nonlinear classifier."><span class="short_text" id="result_box" lang="it"><span class=""></span></span></span></span></span></span><span class="" id="result_box" lang="it"><span title="This has the effect that only some RBFs have a nonzero weight—the ones that represent the support vectors."><span class="" id="result_box" lang="it"><span title="However, multilayer perceptrons have the advantage that they can learn to ignore irrelevant attributes, and RBF networks trained using k-means can be viewed as a 'quick-and-dirty' method for finding a nonlinear classifier."><span class="short_text" id="result_box" lang="it"><span class=""></span></span> </span></span></span></span><br />
<span class="" id="result_box" lang="it"><span title="'Nearest-neighbor' methods gained popularity in machine learning through the work of Aha (1992), who showed that, when combined with noisy exemplar pruning and attribute weighting, instance-based learning performs well in comparison with other methods.">I
metodi "vicino vicino" hanno guadagnato la popolarità
nell'apprendimento della macchina attraverso il lavoro di Aha (1992),
che ha dimostrato che, combinato con la potatura di esemplare rumorosa e
la ponderazione degli attributi, l'apprendimento basato sull'istruzione
si comporta bene rispetto ad altri metodi. </span><span title="It is worth noting that although we have described it solely in the context of classification rather than numeric prediction problems, it applies to these equally well: predictions can be obtained by combining the predicted values of the k nearest neighbors and weighting them by distance.
">Vale la pena notare che, anche se lo abbiamo descritto unicamente
nel contesto della classificazione piuttosto che dei problemi di
previsione numerica, si applica anche a questi: le previsioni possono
essere ottenute combinando i valori previsti dei vicini più vicini e
misurandoli per distanza.<br /> </span><span title="Viewed in instance space, the standard rule- and tree-based representations are only capable of representing class boundaries that are parallel to the axes defined by the attributes.">Visto
nello spazio di esempio, le rappresentazioni standard e di base
dell'albero sono in grado di rappresentare solo i limiti di classe
paralleli agli assi definiti dagli attributi. </span><span title="This is not a handicap for nominal attributes, but it is for numeric ones.">Questo non è un handicap per gli attributi nominali, ma è per quelli numerici. </span><span title="Non-axis-parallel class boundaries can only be approximated by covering the region above or below the boundary with several axis-parallel rectangles, the number of rectangles determining the degree of approximation.">I
limiti di classe parallela non assi possono essere approssimati solo
coprendo la regione sopra o sotto il limite con più rettangoli paralleli
assi, il numero di rettangoli che determinano il grado di
approssimazione. </span><span title="In contrast, the instance-based method can easily represent arbitrary linear boundaries.">Al contrario, il metodo basato su istanze può facilmente rappresentare confini lineari arbitrari. </span><span title="Even with just one example of each of two classes, the boundary implied by the nearest-neighbor rule is a straight line of arbitrary orientation, namely the perpendicular bisector of the line joining the examples.
">Anche con un solo esempio di ciascuna delle due classi, il limite
implicito dalla regola più vicino è una linea retta di orientamento
arbitrario, vale a dire il bisettore perpendicolare della linea che
unisce gli esempi.<br /> </span><span title="Plain instance-based learning does not produce explicit knowledge representations except by selecting representative exemplars.">L'apprendimento
basata su istanze semplici non produce esplicite esposizioni di
conoscenze tranne che selezionando esemplari rappresentativi. </span><span title="However, when combined with exemplar generalization, a set of rules can be obtained that may be compared with those produced by other machine learning schemes.">Tuttavia,
quando combinato con generalizzazione esemplare, è possibile ottenere
un insieme di regole che possono essere confrontate con quelle prodotte
da altri sistemi di apprendimento macchina. </span><span title="The rules tend to be more conservative because the distance metric, modified to incorporate generalized exemplars, can be used to process examples that do not fall within the rules.">Le
regole tendono ad essere più conservatori poiché la metrica a distanza,
modificata per incorporare esempi complessi, può essere utilizzata per
elaborare esempi che non rientrano nelle regole. </span><span title="This reduces the pressure to produce rules that cover the whole example space or even all of the training examples.">Ciò
riduce la pressione per produrre regole che coprono l'intero spazio di
esempio o addirittura tutti gli esempi di formazione. </span><span title="On the other hand, the incremental nature of most instance-based learning methods means that rules are formed eagerly, after only part of the training set has been seen;">D'altra
parte, la natura incrementale della maggior parte dei metodi di
apprendimento basati sull'istanza significa che le regole si formano con
ansia, solo dopo che una parte del set di formazione è stata vista; </span><span title="and this inevitably reduces their quality.
">E ciò inevitabilmente riduce la loro qualità.<br /> </span><span title="We have not given precise algorithms for variants of instance-based learning that involve generalization because it is not clear what the best way to do generalization is.">Non
abbiamo dato algoritmi precisi per le varianti di apprendimento basato
su istanze che implicano generalizzazioni perché non è chiaro quale sia
il modo migliore per fare la generalizzazione. </span><span title="Salzberg (1991) suggested that generalization with nested exemplars can achieve a high degree of classification of accuracy on a variety of different problems, a conclusion disputed by Wettschereck and Dietterich (1995), who argued that these results were fortuitous and did not hold in other">Salzberg
(1991) ha suggerito che la generalizzazione con esemplari nidificati
può raggiungere un elevato grado di classificazione dell'esattezza su
una serie di problemi diversi, conclusione contestata da Wettschereck e
Dietterich (1995), che sostenevano che questi risultati erano fortuiti e
non avessero in altri </span><span title="domains.">domini. </span><span title="Martin (1995) explored the idea that it is not the generalization but the overgeneralization that occurs when hyperrectangles nest or overlap that is responsible for poor performance and demonstrated that if nesting and overlapping are avoided excellent results are achieved in a large number of domains.
">Martin (1995) ha esplorato l'idea che non sia la generalizzazione
ma l'overgeneralization che si verifica quando i hyperrectangles
nidificano o sovrappongono che è responsabile della scarsa performance e
ha dimostrato che se si evitano nidificazione e sovrapposizione ottimi
risultati sono ottenuti in un gran numero di domini.<br /> </span><span title="The generalized distance function based on transformations is described by Cleary and Trigg (1995).">La funzione di distanza generalizzata basata sulle trasformazioni è descritta da Cleary e Trigg (1995). </span><span title="Exemplar generalization is a rare example of a learning strategy in which the search proceeds from specific to general rather than from general to specific as in the case of tree or rule induction.">La
generalizzazione esemplare è un raro esempio di una strategia di
apprendimento in cui la ricerca procede da specifici a generali,
piuttosto che da generali a specifici, come nel caso di induzione di
alberi o regole. </span><span title="There is no particular reason why specific-to-general searching should necessarily be handicapped by forcing the examples to be considered in a strictly incremental fashion, and batch-oriented approaches exist that generate rules using a basic instance-based approach.
">Non vi è alcuna ragione particolare per cui la ricerca specifica a
livello generale dovrebbe essere necessariamente inadeguata obbligando
gli esempi a essere considerati in modo strettamente incrementale e
esistono approcci orientati a batch che generano regole utilizzando un
approccio di base basato su istanze.<br /> </span><span title="Moreover, it seems that the idea of producing conservative generalizations and coping with instances that are not covered by choosing the “closest” generalization is an excellent one that will eventually be extended to ordinary tree and rule inducers.">Inoltre,
sembra che l'idea di produrre generalizzazioni conservatrici e
affrontare casi che non siano coperti dalla scelta della
"generalizzazione" più vicina è un'eccellenza, che sarà eventualmente
estesa agli induttori ordinari di alberi e regole.</span></span><br />
<h4>
<span class="" id="result_box" lang="it"><span title="Moreover, it seems that the idea of producing conservative generalizations and coping with instances that are not covered by choosing the “closest” generalization is an excellent one that will eventually be extended to ordinary tree and rule inducers."> </span></span><span class="" id="result_box" lang="it"><span title="Moreover, it seems that the idea of producing conservative generalizations and coping with instances that are not covered by choosing the “closest” generalization is an excellent one that will eventually be extended to ordinary tree and rule inducers."> Predizione Numerica - Numeric prediction</span></span></h4>
<h4>
<span class="" id="result_box" lang="it"><span title="Moreover, it seems that the idea of producing conservative generalizations and coping with instances that are not covered by choosing the “closest” generalization is an excellent one that will eventually be extended to ordinary tree and rule inducers."></span></span></h4>
<span class="" id="result_box" lang="it"><span title="Moreover, it seems that the idea of producing conservative generalizations and coping with instances that are not covered by choosing the “closest” generalization is an excellent one that will eventually be extended to ordinary tree and rule inducers."> </span></span><span class="" id="result_box" lang="it"><span title="Trees that are used for numeric prediction are just like ordinary decision trees except that at each leaf they store either a class value that represents the average value of instances that reach the leaf, in which case the tree is called a regression tree, or a linear">Gli
alberi utilizzati per la previsione numerica sono proprio come gli
alberi decisionali ordinari, tranne che in ciascuna foglia memorizzano
un valore di classe che rappresenta il valore medio di istanze che
raggiungono la foglia, nel qual caso l'albero è chiamato un albero di
regressione o una linea </span><span title="regression model that predicts the class value of instances that reach the leaf, in which case it is called a model tree.">Modello
di regressione che prevede il valore di classe di istanze che
raggiungono la foglia, nel qual caso è chiamato un albero di modello. </span><span title="In what follows we will describe model trees because regression trees are really a specialcase.
">In quanto segue descriveremo gli alberi del modello poiché gli alberi di regressione sono veramente una specialcase.<br /> </span><span title="Regression and model trees are constructed by first using a decision tree induction algorithm to build an initial tree.">Gli
alberi di regressione e modello vengono costruiti prima utilizzando un
algoritmo di induzione di albero decisionale per costruire un albero
iniziale. </span><span title="However, whereas most decision tree algorithms choose the splitting attribute to maximize the information gain, it is appropriate for numeric prediction to instead minimize the intrasubset variation in the class values down each branch.">Tuttavia,
mentre la maggior parte degli algoritmi degli alberi decisionali
scelgono l'attributo di divisione per massimizzare il guadagno delle
informazioni, è appropriato per la previsione numerica per ridurre al
minimo la variazione intrasubset nei valori di classe giù per ogni ramo.
</span><span title="Once the basic tree has been formed, consideration is given to pruning the tree back from each leaf, just as with ordinary decision trees.">Una
volta che l'albero di base è stato formato, si prende in considerazione
la potatura dell'albero da ogni foglia, proprio come con gli alberi
decisionali ordinari. </span><span title="The only difference between regression tree and model tree induction is that for the latter, each node is replaced by a regression plane instead of a constant value.">L'unica
differenza tra l'albero di regressione e l'induzione di albero di
modello è che per quest'ultimo, ogni nodo viene sostituito da un piano
di regressione invece di un valore costante. </span><span title="The attributes that serve to define that regression are precisely those that participate in decisions in the subtree that will be pruned, that is, in nodes underneath the current one.
">Gli attributi che servono a definire tale regressione sono
precisamente quelli che partecipano alle decisioni del sottoprogetto che
sarà potato, cioè nei nodi sotto la corrente.<br /> </span><span title="Following an extensive description of model trees, we briefly explain how to generate rules from model trees, and then describe another approach to numeric prediction—locally weighted linear regression.">Dopo
un'ampia descrizione di alberi di modello, spieghi brevemente come
generare regole da alberi di modello e poi descrivere un altro approccio
alla previsione numerica - regressione lineare ponderata localmente. </span><span title="Whereas model trees derive from the basic divide-and-conquer decision tree methodology, locally weighted regression is inspired by the instance-based methods for classification that we described in the previous section.">Mentre
gli alberi del modello derivano dalla metodologia di base di divisione e
conquista della decisione decisionale, la regressione ponderata
localmente è ispirata dai metodi basati sull'istanza per la
classificazione che abbiamo descritto nella sezione precedente. </span><span title="Like instance-based learning, it performs all “learning” at prediction time.">Come l'apprendimento basato su istanze, esegue tutto l'apprendimento al tempo di previsione. </span><span title="Although locally weighted regression resembles model trees in that it uses linear regression to fit models locally to particular areas of instance space, it does so in quite a different way.">Sebbene
la regressione ponderata localmente assomiglia agli alberi del modello
in quanto utilizza la regressione lineare per adattare i modelli
localmente a particolari aree dello spazio dell'istanza, lo fa in modo
piuttosto diverso.</span></span><br />
<div id="gt-form-c">
<form action="/" enctype="application/x-www-form-urlencoded" id="gt-form" method="post" name="text_form">
<div id="gt-text-all">
<div id="gt-main">
<div id="gt-text-c">
<div id="gt-ft">
<div id="gt-ft-mkt">
<div class="gt-ft-promos">
<h4>
<span class="gt-ft-text"> Model trees</span></h4>
<h4>
<span class="gt-ft-text"></span></h4>
<span class="gt-ft-text"> </span><span class="" id="result_box" lang="it"><span title="When a model tree is used to predict the value for a test instance, the tree is followed down to a leaf in the normal way, using the instance’s attribute values to make routing decisions at each node.">Quando
un albero di modello viene utilizzato per predire il valore di
un'istanza di prova, l'albero viene seguito in un foglio nel modo
normale, utilizzando i valori dell'attributo dell'istanza per eseguire
decisioni di routing in ciascun nodo. </span><span title="The leaf will contain a linear model based on some of the attribute values, and this is evaluated for the test instance to yield a raw predicted value.
">La foglia conterrà un modello lineare basato su alcuni dei valori
dell'attributo e questo viene valutato per l'istanza di prova per
ottenere un valore predittivo raw.<br /> </span><span title="Instead of using this raw value directly, however, it turns out to be beneficial to use a smoothing process to compensate for the sharp discontinuities that will inevitably occur between adjacent linear models at the leaves of the pruned tree.">Invece
di utilizzare direttamente questo valore raw, risulta utile utilizzare
un processo di levigatura per compensare le forti discontinuità che si
verificheranno inevitabilmente tra i modelli lineari adiacenti alle
foglie dell'albero potato. </span><span title="This is a particular problem for models constructed from a small number of training instances.">Questo è un problema particolare per i modelli costruiti da un piccolo numero di istanze di formazione. </span><span title="Smoothing can be accomplished by producing linear models for each internal node, as well as for the leaves, at the time the tree is built.">Lo
smontaggio può essere realizzato producendo modelli lineari per ogni
nodo interno, così come per le foglie, al momento in cui l'albero è
costruito. </span><span title="Then, once the leaf model has been used to obtain the raw predicted value for a test instance, that value is filtered along the path back to the root, smoothing it at each node by combining it with the value predicted by the linear model for that">Quindi,
una volta che il modello di foglia è stato utilizzato per ottenere il
valore predefinito raw per un'istanza di prova, quel valore viene
filtrato lungo il percorso di ritorno alla radice, lisciandolo ad ogni
nodo combinandolo con il valore predetto dal modello lineare per quello </span><span title="node.
">nodo.<br /> </span><span title="An appropriate smoothing calculation is">Un calcolo appropriato di lisciatura è</span></span></div>
<div class="gt-ft-promos">
<span class="" id="result_box" lang="it"><span title="An appropriate smoothing calculation is">.............</span></span></div>
<div class="gt-ft-promos">
<span class="" id="result_box" lang="it"><span title="An appropriate smoothing calculation is"><span class="" id="result_box" lang="it"><span class="">dove p ¢ è la
predizione passata al prossimo nodo superiore, p è la previsione passata
a questo nodo dal basso, q è il valore predetto dal modello in questo
nodo, n è il numero di istanze di addestramento che raggiungono il nodo
sottostante,</span> E k è una costante di lisciatura. <span class="">Gli esperimenti mostrano che la levigatura aumenta notevolmente l'accuratezza delle previsioni.</span><br /> <span class="">Esattamente
lo stesso processo di levigatura può essere realizzato incorporando i
modelli interni in ogni modello di foglia dopo che l'albero è stato
costruito.</span> <span class="">Quindi, durante il processo di classificazione vengono utilizzati solo i modelli fogliari.</span> <span class="">Lo
svantaggio è che i modelli fogli tendono ad essere più grandi e più
difficili da comprendere, perché molti coefficienti che in precedenza
erano zero diventano non-zero quando i modelli dei nodi interni sono
incorporati.</span></span> </span></span> </div>
<h4>
<span class="" id="result_box" lang="it"><span title="This has the effect that only some RBFs have a nonzero weight—the ones that represent the support vectors."><span class="" id="result_box" lang="it"><span title="However, multilayer perceptrons have the advantage that they can learn to ignore irrelevant attributes, and RBF networks trained using k-means can be viewed as a 'quick-and-dirty' method for finding a nonlinear classifier."> Building the tree</span></span></span></span></h4>
<h4>
<span class="" id="result_box" lang="it"><span title="This has the effect that only some RBFs have a nonzero weight—the ones that represent the support vectors."><span class="" id="result_box" lang="it"><span title="However, multilayer perceptrons have the advantage that they can learn to ignore irrelevant attributes, and RBF networks trained using k-means can be viewed as a 'quick-and-dirty' method for finding a nonlinear classifier."></span></span></span></span></h4>
<span class="" id="result_box" lang="it"><span class="">Il criterio di
suddivisione viene utilizzato per determinare quale attributo è il
migliore per dividere la parte T dei dati di addestramento che raggiunge
un determinato nodo.</span> <span class="">Si basa sul trattamento
della deviazione standard dei valori di classe in T come misura
dell'errore in quel nodo e calcolando la riduzione attesa di errore come
risultato di test di ogni attributo in quel nodo.</span> <span class="">L'attributo che massimizza la riduzione dell'errore atteso è scelto per la suddivisione del nodo.</span><br /><span class="">La riduzione di errori prevista, che noi chiamiamo SDR per la riduzione di deviazione standard, è calcolata da</span></span></div>
<div id="gt-ft-mkt">
<span class="" id="result_box" lang="it"><span class="">......</span></span></div>
<div id="gt-ft-mkt">
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it">In cui T1, T2,. . . Sono i set che risultano dalla suddivisione del nodo in base all'attributo scelto.<br />Il
processo di suddivisione termina quando i valori di classe delle
istanze che raggiungono un nodo variano leggermente, cioè quando la loro
deviazione standard è solo una piccola frazione (ad esempio, meno del
5%) della deviazione standard dell'insieme di istanze originali. La scissione termina anche quando rimangono solo pochi istanti, per esempio quattro o meno. <span class="">Gli esperimenti dimostrano che i risultati ottenuti non sono molto sensibili alla scelta esatta di queste soglie.</span></span> </span></span></div>
</div>
</div>
</div>
</div>
</form>
</div>
<h4>
<span class="" id="result_box" lang="it"><span title="This has the effect that only some RBFs have a nonzero weight—the ones that represent the support vectors."><span class="" id="result_box" lang="it"><span title="However, multilayer perceptrons have the advantage that they can learn to ignore irrelevant attributes, and RBF networks trained using k-means can be viewed as a 'quick-and-dirty' method for finding a nonlinear classifier."></span></span></span></span><span class="" id="result_box" lang="it"><span title="This has the effect that only some RBFs have a nonzero weight—the ones that represent the support vectors."><span class="" id="result_box" lang="it"></span></span></span><span class="" id="result_box" lang="it"><span title="This has the effect that only some RBFs have a nonzero weight—the ones that represent the support vectors."><span class="" id="result_box" lang="it"><span title="However, multilayer perceptrons have the advantage that they can learn to ignore irrelevant attributes, and RBF networks trained using k-means can be viewed as a 'quick-and-dirty' method for finding a nonlinear classifier."> Pruning the tre</span></span></span></span></h4>
<span class="" id="result_box" lang="it"><span title="This has the effect that only some RBFs have a nonzero weight—the ones that represent the support vectors."><span class="" id="result_box" lang="it"><span title="However, multilayer perceptrons have the advantage that they can learn to ignore irrelevant attributes, and RBF networks trained using k-means can be viewed as a 'quick-and-dirty' method for finding a nonlinear classifier."> </span></span></span></span><span class="" id="result_box" lang="it">Come è stato osservato in
precedenza, è necessario un modello lineare per ogni nodo interno
dell'albero, non solo alle foglie, per l'utilizzo nel processo di
levigatura. <span class="">Prima della potatura, viene calcolato un modello per ogni nodo dell'albero non trattato.</span> <span class="">Il modello assume la forma</span></span><br />
<br />
<span class="" id="result_box" lang="it"><span class=""> w 0 + w1a1 + w2a2 + . . . + wk ak ,<br /> </span></span><br />
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span title="where a1, a2, .">Dove a1, a2,. </span><span title=".">. </span><span title=".">. </span><span title=", ak are attribute values.">, Ak sono valori degli attributi. </span><span title="The weights w1, w2, .">I pesi w1, w2,. </span><span title=".">. </span><span title=".">. </span><span title=", wk are calculated using standard regression.">, Wk sono calcolati usando la regressione standard. </span><span title="However, only the attributes that are tested in the subtree below this node are used in the regression, because the other attributes that affect the predicted value have been taken into account in the tests that lead to the node.">Tuttavia,
nella regressione vengono utilizzati solo gli attributi testati nella
sottostruttura sottostante questo nodo, in quanto gli altri attributi
che influenzano il valore predeterminato sono stati presi in
considerazione nei test che portano al nodo. </span><span title="Note that we have tacitly assumed that attributes are numeric: we describe the handling of nominal attributes in the next section.
">Si noti che abbiamo assunto tacitamente che gli attributi sono
numerici: descriviamo la gestione degli attributi nominali nella sezione
successiva.<br /> </span><span title="The pruning procedure makes use of an estimate, at each node, of the expected error for test data.">La procedura di potatura utilizza una stima, in ogni nodo, dell'errore previsto per i dati di prova. </span><span title="First, the absolute difference between the predicted value and the actual class value is averaged over each of the training instances that reach that node.">In
primo luogo, la differenza assoluta tra il valore previsto e il valore
della classe reale viene calcolata su ciascuna delle istanze di
formazione che raggiungono quel nodo. </span><span title="Because the tree has been built expressly for this dataset, this average will underestimate the expected error for unseen cases.">Poiché
l'albero è stato costruito espressamente per questo set di dati, questa
media sottovaluterà l'errore previsto per i casi inesistenti. </span><span title="To compensate, it is multiplied by the factor (n + n)/(n - n), where n is the number of training instances that reach the node and n is the number of parameters in the linear model that gives the class value at">Per
compensare, è moltiplicato per il fattore (n + n) / (n - n), dove n è
il numero di istanze di formazione che raggiungono il nodo e n è il
numero di parametri nel modello lineare che dà il valore della classe a </span><span title="that node.
">Quel nodo.<br /> </span><span title="The expected error for test data at a node is calculated as described previously, using the linear model for prediction.">L'errore
previsto per i dati di prova in un nodo viene calcolato come descritto
in precedenza, utilizzando il modello lineare per la previsione. </span><span title="Because of the compensation factor (n + n)/(n - n), it may be that the linear model can be further simplified by dropping terms to minimize the estimated error.">A
causa del fattore di compensazione (n + n) / (n - n), può essere
semplificato ulteriormente il modello lineare lasciando i termini per
ridurre al minimo l'errore stimato. </span><span title="Dropping a term decreases the multiplication factor, which may be enough to offset the inevitable increase in average error over the training instances.">L'abbandono
di un termine diminuisce il fattore di moltiplicazione, che può essere
sufficiente per compensare l'inevitabile aumento dell'errore medio sulle
istanze di addestramento. </span><span title="Terms are dropped one by one, greedily, as long as the error estimate decreases.
">I termini vengono lasciati uno ad uno, avidamente, fintanto che la stima dell'errore diminuisce.<br /> </span><span title="Finally, once a linear model is in place for each interior node, the tree is pruned back from the leaves as long as the expected estimated error decreases.">Infine,
una volta che un modello lineare sia in atto per ogni nodo interno,
l'albero viene tirato indietro dalle foglie finché l'errore stimato
stimato diminuisce. </span><span title="The expected error for the linear model at that node is compared with the expected error from the subtree below.">L'errore previsto per il modello lineare in quel nodo viene confrontato con l'errore previsto dalla sottostruttura sottostante. </span><span title="To calculate the latter, the error from each branch is combined into a single, overall value for the node by weighting the branch by the proportion of the training instances that go down it and combining the error estimates linearly using those weights.">Per
calcolare quest'ultimo, l'errore di ogni ramo viene combinato in un
unico valore complessivo per il nodo, ponderando il ramo per la
proporzione delle istanze di addestramento che scendono e combinando le
stime di errore in modo lineare utilizzando quei pesi.</span></span> </span></span><br />
<h4>
<span class="" id="result_box" lang="it"><span class=""> Atributi Nominali </span></span></h4>
<span class="" id="result_box" lang="it">Prima di costruire un 'modello
d'albero ', tutti gli attributi nominali vengono trasformati in
variabili binarie che vengono quindi considerate numeriche. Per ciascun
attributo nominale, il valore medio della classe corrispondente a ogni
possibile valore dell'enumerazione viene calcolato dalle istanze di
addestramento ei valori nell'elenco sono ordinati in base a queste
medie. Quindi, se l'attributo nominale ha valori possibili k, viene
sostituito da attributi binari sintetici k-1, l'i che è 0 se il valore è
uno dei primi i nell'ordine e 1 altrimenti. Quindi tutte le divisioni
sono binarie: implicano un attributo numerico o un binario sintetico,
trattato come attributo numerico.<br /> È possibile dimostrare
analiticamente che la migliore divisione in un nodo per una variabile
nominale con valori k è una delle posizioni k-1 ottenute ordinando i
valori della classe media per ogni valore dell'attributo. Questa
operazione di ordinamento dovrebbe essere ripetuta in ogni nodo;
Tuttavia, c'è un inevitabile aumento del rumore a causa di un piccolo
numero di istanze nei nodi inferiori dell'albero (e in alcuni casi i
nodi potrebbero non rappresentare tutti i valori per alcuni attributi), e
non si perdono molte volte eseguendo l'ordinamento solo una volta
Iniziando a costruire un modello d'albero.</span><br />
<h4>
<span class="" id="result_box" lang="it"><span class=""> Valori mancanti</span></span></h4>
<h4>
<span class="" id="result_box" lang="it"><span class=""></span></span></h4>
<span class="" id="result_box" lang="it"><span class=""> </span></span><br />
<span class="" id="result_box" lang="it">Per tener conto dei valori mancanti, viene apportata una modifica alla formula SDR. <span class="">La formula finale, inclusa la compensazione valore mancante, è</span></span><br />
<span class="" id="result_box" lang="it"><span class="">.....</span></span><br />
<span class="" id="result_box" lang="it"><span class="">d</span></span><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span title="where m is the number of instances without missing values for that attribute, and T is the set of instances that reach this node.">ove m è il numero di istanze senza valori mancanti per tale attributo e T è l'insieme di istanze che raggiungono questo nodo. </span><span title="TL and TR are sets that result from splitting on this attribute—because all tests on attributes are now binary.">TL e TR sono set che risultano dalla suddivisione su questo attributo, perché tutti i test sugli attributi sono ormai binari. </span><span title="When processing both training and test instances, once an attribute is selected for splitting it is necessary to divide the instances into subsets according to their value for this attribute.">Durante
l'elaborazione di istruzioni di allenamento e di test, una volta che un
attributo è selezionato per la suddivisione, è necessario dividere le
istanze in sottogruppi in base al loro valore per questo attributo. </span><span title="An obvious problem arises when the value is missing.">Un problema evidente sorge quando manca il valore. </span><span title="An interesting technique called surrogate splitting has been developed to handle this situation.">Una tecnica interessante chiamata suddivisione surrogata è stata sviluppata per gestire questa situazione. </span><span title="It involves finding another attribute to split on in place of the original one and using it instead.">Comprende l'individuazione di un altro attributo da dividere al posto dell'originale e usarlo invece. </span><span title="The attribute is chosen as the one most highly correlated with the original attribute.">L'attributo viene scelto come quello più correlato all'attributo originale. </span><span title="However, this technique is both complex to implement and time consuming to execute.
">Tuttavia, questa tecnica è complessa per implementare e richiede tempo per eseguire.<br /> </span><span title="A simpler heuristic is to use the class value as the surrogate attribute, in the belief that, a priori, this is the attribute most likely to be correlated with the one being used for splitting.">Un
euristico più semplice è quello di utilizzare il valore della classe
come attributo surrogato, nella convinzione che, a priori, questo è
l'attributo più probabile che sia correlato con quello utilizzato per la
suddivisione. </span><span title="Of course, this is only possible when processing the training set, because for test examples the class is unknown.">Naturalmente questo è possibile solo quando si lavora l'allenamento, perché per gli esempi di prova la classe è sconosciuta. </span><span title="A simple solution for test examples is simply to replace the unknown attribute value with the average value of that attribute for the training examples that reach the node, which has the effect, for a binary attribute, of choosing the most populous subnode.">Una
soluzione semplice per gli esempi di test è semplicemente sostituire il
valore dell'attributo sconosciuto con il valore medio di tale attributo
per gli esempi di addestramento che raggiungono il nodo, che ha
l'effetto, per un attributo binario, di scegliere il sottorete più
popolato. </span><span title="This simple approach seems to work well in practice.">Questo semplice approccio sembra funzionare bene in pratica. </span><span title="Let’s consider in more detail how to use the class value as a surrogate attribute during the training process.">Prendiamo
in considerazione più in dettaglio come utilizzare il valore della
classe come attributo surrogato durante il processo di formazione. </span><span title="We first deal with all instances for which the value of the splitting attribute is known.">Per prima cosa, ci occupiamo di tutti i casi per i quali è noto il valore dell'attributo di suddivisione. </span><span title="We determine a threshold for splitting in the usual way, by sorting the instances according to its value and, for each possible split point, calculating the SDR according to the preceding formula, choosing the split point that yields the greatest reduction in error.">Determiniamo
una soglia di suddivisione nel modo consueto, ordinando le istanze
secondo il suo valore e, per ogni possibile punto di divisione,
calcolando l'SDR secondo la formula precedente, scegliendo il punto di
spacco che produce la massima riduzione di errore. </span><span title="Only the instances for which the value of the splitting attribute is known are used to determine the split point.
">Solo le istanze per le quali è noto il valore dell'attributo di
suddivisione vengono utilizzate per determinare il punto di divisione.<br /> </span><span title="Then we divide these instances into the two sets L and R according to the test.">Quindi dividiamo questi casi nei due gruppi L e R secondo il test. </span><span title="We determine whether the instances in L or R have the greater average class value, and we calculate the average of these two averages.">Deteriamo se le istanze in L o R hanno il maggiore valore della classe media e calcoliamo la media di queste due medie. </span><span title="Then, an instance for which this attribute value is unknown is placed into L or R according to whether its class value exceeds this overall average or not.">Quindi,
un'istanza per cui questo valore di attributo è sconosciuto viene posto
in L o R in base al valore del suo valore superiore a questa media
complessiva o meno. </span><span title="If it does, it goes into whichever of L and R has the greater average class value;">Se lo fa, va in qualunque di L e R abbia il maggiore valore della classe media; </span><span title="otherwise, it goes into the one with the smaller average class value.">Altrimenti, va in quello con il valore della classe media minore. </span><span title="When the splitting stops, all the missing values will be replaced by the average values of the corresponding attributes of the training instances reaching the leaves.">Quando
la ripartizione si arresta, tutti i valori mancanti saranno sostituiti
dai valori medi degli attributi corrispondenti delle istanze di
addestramento che raggiungono le foglie.</span></span></span></span><br />
<h4>
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span title="When the splitting stops, all the missing values will be replaced by the average values of the corresponding attributes of the training instances reaching the leaves."> </span></span></span></span><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span title="When the splitting stops, all the missing values will be replaced by the average values of the corresponding attributes of the training instances reaching the leaves."><span class="short_text" id="result_box" lang="it"><span class="alt-edited">Pseudocode per l'induzione di alberi modello</span></span></span></span></span></span></h4>
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span title="When the splitting stops, all the missing values will be replaced by the average values of the corresponding attributes of the training instances reaching the leaves."><span class="short_text" id="result_box" lang="it"><span class="alt-edited"> Figure 6.15 Pseudocode for model tree induction.</span></span></span></span></span></span><br />
<br />
<span class="" id="result_box" lang="it"><span title="Figure 6.15 gives pseudocode for the model tree algorithm we have described.
">La Figura 6.15 fornisce pseudocode per l'algoritmo di albero di modello che abbiamo descritto.</span><span title="The two main parts are creating a tree by successively splitting nodes, performed by split, and pruning it from the leaves upward, performed by prune.">Le
due parti principali creano un albero suddividendo successivamente i
nodi, eseguiti per spaccatura e la potatura dalle foglie verso l'alto,
eseguite dalla prugna. </span><span title="The node data structure contains a type flag indicating whether it is an internal node or a leaf, pointers to the left and right child, the set of instances that reach that node, the attribute that is used for splitting at that node, and a structure">La
struttura dei dati del nodo contiene un flag di tipo che indica se si
tratta di un nodo interno o di una foglia, che indica il figlio destro e
sinistro, l'insieme di istanze che raggiungono quel nodo, l'attributo
utilizzato per la suddivisione in quel nodo e una struttura </span><span title="representing the linear model for the node.
">Che rappresenta il modello lineare per il nodo.<br /> </span><span title="The sd function called at the beginning of the main program and again at the beginning of split calculates the standard deviation of the class values of a set of instances.">La
funzione sd chiamata all'inizio del programma principale e nuovamente
all'inizio della spaccatura calcola la deviazione standard dei valori di
classe di un insieme di istanze. </span><span title="Then follows the procedure for obtaining synthetic binary attributes that was described previously.">Segue quindi la procedura per ottenere gli attributi binari sintetici precedentemente descritti. </span><span title="Standard procedures for creating new nodes and printing the final tree are not shown.">Le procedure standard per la creazione di nuovi nodi e la stampa dell'albero finale non vengono mostrate. </span><span title="In split, sizeof returns the number of elements in a set.">In split, sizeof restituisce il numero di elementi di un set. </span><span title="Missing attribute values are dealt with as described earlier.">I valori attributi mancanti vengono trattati come descritto in precedenza. </span><span title="The SDR is calculated according to the equation at the beginning of the previous subsection.">L'SDR è calcolato in base all'equazione all'inizio della precedente sottosezione. </span><span title="Although not shown in the code, it is set to infinity if splitting on the attribute would create a leaf with fewer than two instances.">Anche
se non è mostrato nel codice, è impostato su infinito se la
suddivisione dell'attributo creerebbe una foglia con meno di due
istanze. </span><span title="In prune, the linearRegression routine recursively descends the subtree collecting attributes, performs a linear regression on the instances at that node as a function of those attributes, and then greedily drops terms if doing so improves the error estimate, as described earlier.
">Nella rottura, la routine linearRegression descrive in modo
ricorsivo il sottostruttura che raccoglie gli attributi, esegue una
regressione lineare sulle istanze di quel nodo in funzione di tali
attributi e poi scompare avidamente i termini se agisce in tal modo
migliora la stima dell'errore, come descritto in precedenza.<br /> </span><span title="Finally, the error function returns">Infine, la funzione di errore torna</span></span><br />
<span class="" id="result_box" lang="it"><span title="Finally, the error function returns">......</span></span><br />
<span class="" id="result_box" lang="it"><span title="Finally, the error function returns"> </span></span><span class="" id="result_box" lang="it"><span title="where n is the number of instances at the node and n is the number of parameters in the node’s linear model.
">Dove n è il numero di istanze del nodo e n è il numero di parametri nel modello lineare del nodo.</span><span title="Figure 6.16 gives an example of a model tree formed by this algorithm for a problem with two numeric and two nominal attributes.">La
Figura 6.16 fornisce un esempio di un albero modello formato da questo
algoritmo per un problema con due attributi numerici e due nominali. </span><span title="What is to be predicted is the rise time of a simulated servo system involving a servo amplifier, motor, lead screw, and sliding carriage.">Ciò
che deve essere preveduto è il tempo di salita di un servo simulato che
coinvolge un servoamplificatore, un motore, una vite di guida e un
carrello scorrevole. </span><span title="The nominal attributes play important roles.">Gli attributi nominali svolgono un ruolo importante. </span><span title="Four synthetic binary attributes have been created for each of the five-valued nominal attributes motor and screw, and they are shown in Table 6.1 in terms of the two sets of values to which they correspond.">Quattro
attributi binari sintetici sono stati creati per ognuno dei cinque
attributi nominali del motore e della vite, e sono mostrati nella
tabella 6.1 in termini di due set di valori a cui corrispondono. </span><span title="The ordering of these values - D, E, C, B, A for motor and coincidentally D, E, C, B, A for screw also - is determined from the training data: the rise time averaged over all examples for which motor =">L'ordinamento
di questi valori - D, E, C, B, A per il motore e coincidente D, E, C,
B, A per vite anche - è determinato dai dati di allenamento: il tempo di
sollevamento calcolato su tutti gli esempi per cui il motore = </span><span title="D is less than that averaged over examples for which motor = E, which is less than when motor = C, and so on.">D è minore di quella media per gli esempi per i quali il motore = E, che è inferiore a quando il motore = C e così via. </span><span title="It is apparent from the magnitude of the coefficients in Table 6.1 that motor = D versus E, C, B, A plays a leading role in the LM2 model, and motor = D, E versus C, B, A plays a leading role in">È
evidente dalla grandezza dei coefficienti della tabella 6.1 che il
motore = D rispetto a E, C, B, A svolge un ruolo di primo piano nel
modello LM2 e il motore = D, E rispetto a C, B, A svolge un ruolo di
primo piano </span><span title="LM1.">LM1. </span><span title="Both motor and screw also play minor roles in several of the models.
">Sia il motore che la vite svolgono anche ruoli minori in diversi modelli.<br /> </span><span title="The decision tree shows a three-way split on a numeric attribute.">L'albero di decisione mostra una suddivisione a tre vie su un attributo numerico. </span><span title="First a 'binary-splitting tree' was generated in the usual way.">In primo luogo è stato generato un 'albero che divide binario' nel modo consueto. </span><span title="It turned out that the root and one of its descendants tested the same attribute, pgain, and a simple algorithm was used to conflate these two nodes into the slightly more comprehensible tree that is shown.">Si
è scoperto che la radice e uno dei suoi discendenti hanno provato lo
stesso attributo, pgain e un semplice algoritmo è stato usato per
confondere questi due nodi nell'albero leggermente più comprensibile che
viene mostrato.</span></span><br />
<br />
<span class="" id="result_box" lang="it"><span title="Finally, the error function returns"> Figure 6.16 Model tree for a dataset with nominal attributes.<br /> </span></span><br />
<h4>
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span title="When the splitting stops, all the missing values will be replaced by the average values of the corresponding attributes of the training instances reaching the leaves."><span class="short_text" id="result_box" lang="it"><span class="alt-edited"> </span></span></span></span></span></span><span class="" id="result_box" lang="it"><span class="">Regole da alberi di modello </span></span></h4>
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span title="When the splitting stops, all the missing values will be replaced by the average values of the corresponding attributes of the training instances reaching the leaves."><span class="short_text" id="result_box" lang="it"><span class="alt-edited"> </span></span> </span></span></span></span><span class="" id="result_box" lang="it"><span title="Model trees are essentially decision trees with linear models at the leaves.">Gli alberi di modello sono essenzialmente alberi decisionali con modelli lineari alle foglie. </span><span title="Like decision trees, they may suffer from the replicated subtree problem explained in Section 3.3, and sometimes the structure can be expressed much more concisely using a set of rules instead of a tree.">Come
gli alberi decisionali, possono subire il problema sottoposto replicato
spiegato nella sezione 3.3 e talvolta la struttura può essere espressa
in modo più conciso utilizzando un insieme di regole anziché un albero. </span><span title="Can we generate rules for numeric prediction?">Possiamo generare regole per la previsione numerica? </span><span title="Recall the rule learner described in Section 6.2 that uses 'separate-and-conquer' in conjunction with partial decision trees to extract decision rules from trees.">Ricorda
il discorso di regola descritto nella sezione 6.2 che usa
"separate-and-conquer" in combinazione con alberi decisionali parziali
per estrarre le regole di decisione dagli alberi. </span><span title="The same strategy can be applied to model trees to generate decision lists for numeric prediction.
">La stessa strategia può essere applicata agli alberi modello per generare elenchi di decisione per la previsione numerica.<br /> </span><span title="First build a partial model tree from all the data.">In primo luogo costruire un albero modello parziale da tutti i dati. </span><span title="Pick one of the leaves and make it into a rule.">Scegli una delle foglie e fai una regola. </span><span title="Remove the data covered by that leaf;">Rimuovere i dati coperti da quella foglia; </span><span title="then repeat the process with the remaining data.">Quindi ripetere il processo con i dati rimanenti. </span><span title="The question is, how to build the partial model tree, that is, a tree with unexpanded nodes?">La domanda è, come costruire l'albero modello parziale, cioè un albero con nodi non espanditi? </span><span title="This boils down to the question of how to pick which node to expand next.">Ciò si basa sulla questione di come scegliere quale nodo per espandersi successivamente. </span><span title="The algorithm of Figure 6.5 (Section 6.2) picks the node whose entropy for the class attribute is smallest.">L'algoritmo di Figura 6.5 (sezione 6.2) seleziona il nodo la cui entropia per l'attributo di classe è minima. </span><span title="For model trees, whose predictions are numeric, simply use the variance instead.">Per gli alberi di modello, le cui previsioni sono numeriche, è sufficiente utilizzare la varianza. </span><span title="This is based on the same rationale: the lower the variance, the shallower the subtree and the shorter the rule.">Questo si basa sulla stessa logica: minore è la varianza, più è più sottile il sottopunto e più breve è la regola. </span><span title="The rest of the algorithm stays the same, with the model tree learner’s split selection method and pruning strategy replacing the decision tree learner’s.">Il
resto dell'algoritmo rimane lo stesso, con il metodo di selezione
separata del discente del modello e la strategia di potatura che
sostituisce gli studenti degli alberi decisionali. </span><span title="Because the model tree’s leaves are linear models, the corresponding rules will have linear models on the right-hand side.
">Poiché le foglie dell'albero del modello sono modelli lineari, le regole corrispondenti avranno modelli lineari a destra.<br /> </span><span title="There is one caveat when using model trees in this fashion to generate rule sets: the smoothing process that the model tree learner employs.">C'è
un caveat quando si utilizzano alberi di modello in questo modo per
generare set di regole: il processo di levigatura utilizzato
dall'educatore di modello. </span><span title="It turns out that using smoothed model trees does not reduce the error in the final rule set’s predictions.">Si scopre che l'utilizzo di alberi di modelli smussati non riduce l'errore nelle previsioni del set di regole finali. </span><span title="This may be because smoothing works best for contiguous data, but the 'separate-and-conquer' scheme removes data covered by previous rules, leaving holes in the distribution.">Ciò
può essere dovuto al fatto che la levigatura funziona meglio per i dati
contigui, ma lo schema "separato e conquistato" elimina i dati coperti
dalle regole precedenti, lasciando buchi nella distribuzione. </span><span title="Smoothing, if it is done at all, must be performed after the rule set has been generated.">Lo smontaggio, se è fatto a tutti, deve essere eseguito dopo che è stato generato il set di regole.</span></span><br />
<h4>
<span class="" id="result_box" lang="it"><span title="Smoothing, if it is done at all, must be performed after the rule set has been generated."> </span></span><span class="" id="result_box" lang="it"><span title="Smoothing, if it is done at all, must be performed after the rule set has been generated."> </span></span><span class="" id="result_box" lang="it"><span title="Smoothing, if it is done at all, must be performed after the rule set has been generated."><span class="short_text" id="result_box" lang="it"><span class="">Regressione lineare ponderata localmente</span></span></span></span></h4>
<span class="" id="result_box" lang="it"><span title="Smoothing, if it is done at all, must be performed after the rule set has been generated."><span class="short_text" id="result_box" lang="it"><span class=""> </span></span></span></span><span class="" id="result_box" lang="it">Un approccio alternativo alla previsione numerica è il metodo della regressione lineare ponderata localmente. Con
gli alberi modello, la struttura ad albero divide lo spazio di istanza
in regioni e viene trovato un modello lineare per ciascuno di essi. In effetti, i dati di addestramento determinano come è stato partizionato lo spazio di istanza. La
regressione ponderata localmente, invece, genera modelli locali al
tempo di previsione, dando maggiore peso a istanze nel quartiere della
particolare istanza di prova. Più in particolare, pesa le
istanze di addestramento in base alla loro distanza rispetto all'istanza
di prova e esegue una regressione lineare sui dati ponderati. Gli istituti di formazione vicini all'istanza di prova ricevono un peso elevato; Quelli lontani ricevono un livello basso. <span class="">In
altre parole, un modello lineare viene eseguito su misura per l'istanza
di prova particolare e viene utilizzata per predire il valore della
classe dell'istanza.</span></span><br />
<span class="" id="result_box" lang="it"><span class=""> </span></span><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span title="To use locally weighted regression, you need to decide on a distance-based weighting scheme for the training instances.">Per
utilizzare la regressione localizzata, è necessario decidere uno schema
di ponderazione basato sulla distanza per le istanze di addestramento. </span><span title="A common choice is to weight the instances according to the inverse of their Euclidean distance from the test instance.">Una scelta comune è quella di pesare le istanze secondo l'inverso della loro distanza euclidea dall'istanza di prova. </span><span title="Another possibility is to use the Euclidean distance in conjunction with a Gaussian kernel function.">Un'altra possibilità è quella di utilizzare la distanza euclidea in combinazione con una funzione kernel gaussiana. </span><span title="However, there is no clear evidence that the choice of weighting function is critical.">Tuttavia, non vi sono prove evidenti che la scelta della funzione di ponderazione è cruciale. </span><span title="More important is the selection of a “smoothing parameter” that is used to scale the distance function—the distance is multiplied by the inverse of this parameter.">Più
importante è la selezione di un "parametro di levigatura" che viene
utilizzato per ridimensionare la funzione di distanza: la distanza viene
moltiplicata per l'inverso di questo parametro. </span><span title="If it is set to a small value, only instances very close to the test instance will receive significant weight;">Se è impostato su un valore ridotto, solo istanze molto vicine all'istanza di prova riceveranno un peso significativo; </span><span title="if it is large, more distant instances will also have a significant impact on the model.">Se è grande, i casi più distanti avranno anche un impatto significativo sul modello. </span><span title="One way of choosing the smoothing parameter is to set it to the distance of the kth-nearest training instance so that its value becomes smaller as the volume of training data increases.">Un
modo per scegliere il parametro di levigatura è impostarlo alla
distanza dell'istanza di addestramento più vicina in modo che il suo
valore diventi più piccolo in quanto aumenta il volume dei dati
formativi. </span><span title="The best choice of k depends on the amount of noise in the data.
">La scelta migliore di k dipende dalla quantità di rumore nei dati.<br /> </span><span title="The more noise there is, the more neighbors should be included in the linear model.">Più il rumore c'è, più i vicini dovrebbero essere inclusi nel modello lineare. </span><span title="Generally, an appropriate smoothing parameter is found using crossvalidation.
">In genere, viene trovato un parametro adeguato di lisciatura utilizzando la crossvalidation.<br /> </span><span title="Like model trees, locally weighted linear regression is able to approximate nonlinear functions.">Come gli alberi di modello, la regressione lineare ponderata localmente è in grado di approssimare le funzioni non lineari. </span><span title="One of its main advantages is that it is ideally suited for incremental learning: all training is done at prediction time, so new instances can be added to the training data at any time.">Uno
dei suoi principali vantaggi è che è ideale per l'apprendimento
incrementale: tutta la formazione è fatta a tempo di previsione, in modo
da poter aggiungere nuovi istanti ai dati di formazione in qualsiasi
momento. </span><span title="However, like other instance-based methods, it is slow at deriving a prediction for a test instance.">Tuttavia, come altri metodi basati sull'istanza, è lento a generare una previsione per un'istanza di prova. </span><span title="First, the training instances must be scanned to compute their weights;">Innanzitutto, le istanze di formazione devono essere scansionate per calcolare i loro pesi; </span><span title="then, a weighted linear regression is performed on these instances.">Quindi, su queste istanze viene eseguita una regressione lineare ponderata. </span><span title="Also, like other instance-based methods, locally weighted regression provides little information about the global structure of the training dataset.">Inoltre,
come altri metodi basati sull'istanza, la regressione ponderata
localmente fornisce poche informazioni sulla struttura globale del set
di dati di formazione. </span><span title="Note that if the smoothing parameter is based on the kth-nearest neighbor and the weighting function gives zero weight to more distant instances, the kD-trees and ball trees described in Section 4.7 can be used to speed up the process of finding the relevant neighbors">Si
noti che se il parametro di livellamento si basa sul vicino prossimo
viceversa e la funzione di ponderazione fornisce un peso zero a istanze
più distanti, gli alberi di kD e gli alberi a sfera descritti nella
sezione 4.7 possono essere utilizzati per velocizzare il processo di
individuazione dei relativi vicini </span><span title=".">.</span></span></span></span><br />
<span class="" id="result_box" lang="it"><span class=""> </span></span><br />
<span class="" id="result_box" lang="it"><span title="Smoothing, if it is done at all, must be performed after the rule set has been generated."><span class="short_text" id="result_box" lang="it"><span class=""> </span></span></span></span><span class="" id="result_box" lang="it"><span title="Locally weighted learning is not restricted to linear regression: it can be applied with any learning technique that can handle weighted instances.">L'apprendimento
ponderato localmente non è limitato alla regressione lineare: può
essere applicato con qualsiasi tecnica di apprendimento in grado di
gestire istanze ponderate. </span><span title="In particular, you can use it for classification.">In particolare, è possibile utilizzarlo per la classificazione. </span><span title="Most algorithms can be easily adapted to deal with weights.">Molti algoritmi possono essere facilmente adattati per gestire i pesi. </span><span title="The trick is to realize that (integer) weights can be simulated by creating several copies of the same instance.">Il trucco è quello di capire che i pesi (interi) possono essere simulati creando diverse copie della stessa istanza. </span><span title="Whenever the learning algorithm uses an instance when computing a model, just pretend that it is accompanied by the appropriate number of identical shadow instances.">Ogni
volta che l'algoritmo di apprendimento utilizza un'istanza quando si
calcola un modello, finga semplicemente che sia accompagnata dal numero
appropriato di istanze uguali dell'ombra. </span><span title="This also works if the weight is not an integer.">Questo funziona anche se il peso non è un intero. </span><span title="For example, in the Naïve Bayes algorithm described in Section 4.2, multiply the counts derived from an instance by the instance’s weight, and—voilà—you have a version of Naïve Bayes that can be used for locally weighted learning.
">Ad esempio, nell'algoritmo di Naïve Bayes descritto nella Sezione
4.2, moltiplicare i conteggi derivanti da un'istanza dal peso
dell'istanza, e-voilà-hai una versione di Naïve Bayes che può essere
utilizzata per l'apprendimento localmente pesato.<br /> </span><span title="It turns out that locally weighted Naïve Bayes works extremely well in practice, outperforming both Naïve Bayes itself and the k-nearest-neighbor technique.">Si
scopre che Naïve Bayes ponderato localmente funziona estremamente bene
in pratica, sovraperformando entrambi Naïve Bayes stesso e la tecnica
del k-nearest-neighbor. </span><span title="It also ompares favorably with far more sophisticated ways of enhancing Naïve Bayes by relaxing its intrinsic independence assumption.">Inoltre
ompara favorevolmente con modi molto più sofisticati di valorizzare
Naïve Bayes rilassando la sua intrinseca assunzione di indipendenza. </span><span title="Locally weighted learning only assumes independence within a neighborhood, not globally in the whole instance space as standard Naïve Bayes does.
">L'apprendimento ponderato a livello locale assume solo
l'indipendenza all'interno di un quartiere, non globalmente in tutto lo
spazio di istanza come standard Naïve Bayes.<br /> </span><span title="In principle, locally weighted learning can also be applied to decision trees and other models that are more complex than linear regression and Naïve Bayes However, it is beneficial here because it is primarily a way of allowing simple models to become more flexible by allowing them to">In
linea di principio, l'apprendimento ponderato a livello locale può
essere applicato anche agli alberi decisionali e ad altri modelli più
complessi rispetto alla regressione lineare e a Naïve Bayes. Tuttavia, è
vantaggioso perché è principalmente un modo per consentire ai modelli
semplici di diventare più flessibili </span><span title="approximate arbitrary targets.">Obiettivi arbitrari approssimativi. </span><span title="If the underlying learning algorithm can already do that, there is little point in applying locally weighted learning.">Se
l'algoritmo di apprendimento sottostante può già farlo, non vi è alcun
punto nell'applicazione di apprendimento localmente ponderato. </span><span title="Nevertheless it may improve other simple models—for example, linear support vector machines and logistic regression.">Tuttavia, può migliorare altri modelli semplici - ad esempio, macchine vettoriali di supporto lineare e regressione logistica.</span></span><br />
<h4>
<span class="" id="result_box" lang="it"><span title="Nevertheless it may improve other simple models—for example, linear support vector machines and logistic regression."> Discusione</span></span></h4>
<br />
<span class="" id="result_box" lang="it"><span title="Regression trees were introduced in the CART system of Breiman et al.">Gli alberi di regressione sono stati introdotti nel sistema CART di Breiman et al. </span><span title="(1984).">(1984). </span><span title="CART, for “classification and regression trees,” incorporated a decision tree inducer for discrete classes much like that of C4.5, which was developed independently, and a scheme for inducing regression trees.">CART,
per i "alberi di classificazione e regressione", ha incorporato un
induttore di alberi decisionali per classi discrete simili a quelle del
C4.5, sviluppato in modo indipendente, e un sistema per indurre gli
alberi di regressione. </span><span title="Many of the techniques described in the preceding section, such as the method of handling nominal attributes and the surrogate device for dealing with missing values, were included in CART.">Molte
delle tecniche descritte nella sezione precedente, come il metodo di
manipolazione degli attributi nominali e il dispositivo surrogato per la
gestione dei valori mancanti, sono stati inclusi nel CART. </span><span title="However, model trees did not appear until much more recently, being first described by Quinlan (1992).">Tuttavia,
gli alberi di modello non sono comparsi fino a poco più di recente,
essendo stati descritti per la prima volta da Quinlan (1992). </span><span title="Using model trees for generating rule sets (although not partial trees) has been explored by Hall et al.(1999).
">L'utilizzo di alberi modello per la generazione di set di regole
(anche se non parziali) è stato esplorato da Hall et al. (1999).<br /> </span><span title="Model tree induction is not so commonly used as decision tree induction, partly because comprehensive descriptions (and implementations) of the technique have become available only recently (Wang and Witten 1997).">L'induzione
di alberi di modello non è così comunemente utilizzata come l'induzione
di alberi decisionali, in parte perché le descrizioni complete (e le
implementazioni) della tecnica sono diventate disponibili solo di
recente (Wang e Witten 1997). </span><span title="Neural nets are more commonly used for predicting numeric quantities, although they suffer from the disadvantage that the structures they produce are opaque and cannot be used to help us understand the nature of the solution.">Le
reti neurali vengono usate più comunemente per predire le quantità
numeriche, anche se soffrono dello svantaggio che le strutture che
producono sono opache e non possono essere utilizzate per aiutarci a
comprendere la natura della soluzione. </span><span title="Although there are techniques for producing understandable insights from the structure of neural networks, the arbitrary nature of the internal representation means that there may be dramatic variations between networks of identical architecture trained on the same data.">Sebbene
ci siano tecniche per produrre intuizioni comprensibili dalla struttura
delle reti neurali, la natura arbitraria della rappresentazione interna
significa che vi possono essere delle variazioni drammatiche tra reti
di architettura identica addestrati sugli stessi dati. </span><span title="By dividing the function being induced into linear patches, model trees provide a representation that is reproducible and at least somewhat comprehensible.
">Dividendo la funzione che viene indotta in patch lineari, gli
alberi modello forniscono una rappresentazione riproducibile e almeno un
po 'comprensibile.<br /> </span><span title="There are many variations of locally weighted learning.">Ci sono molte varianti di apprendimento localmente pesato. </span><span title="For example, statisticians have considered using locally quadratic models instead of linear ones and have applied locally weighted logistic regression to classification problems.">Ad
esempio, gli statisti hanno considerato l'utilizzo di modelli
localmente quadratici anziché quelli lineari e hanno applicato la
regressione logistica ponderata localmente ai problemi di
classificazione. </span><span title="Also, many different potential weighting and distance functions can be found in the literature.">Inoltre, molte lettere di potenziale ponderazione e di distanza possono essere trovate in letteratura. </span><span title="Atkeson et al.">Atkeson et al. </span><span title="(1997) have written an excellent survey on locally weighted learning, primarily in the context of regression problems.">(1997)
hanno scritto un'ottima indagine sull'apprendimento localmente
ponderato, soprattutto nel contesto di problemi di regressione. </span><span title="Frank et al.">Frank et al. </span><span title="(2003) evaluated the use of locally weighted learning in conjunction with Naïve Bayes.">(2003) ha valutato l'uso di apprendimento localmente ponderato in collaborazione con Naïve Bayes.</span></span><br />
<h4>
<span class="" id="result_box" lang="it"><span title="(2003) evaluated the use of locally weighted learning in conjunction with Naïve Bayes."> Clustering</span></span></h4>
<h4>
<span class="" id="result_box" lang="it"><span title="(2003) evaluated the use of locally weighted learning in conjunction with Naïve Bayes."></span></span></h4>
<span class="" id="result_box" lang="it"><span title="(2003) evaluated the use of locally weighted learning in conjunction with Naïve Bayes."> </span></span><span class="" id="result_box" lang="it"><span title="In Section 4.8 we examined the k-means clustering algorithm in which k initial points are chosen to represent initial cluster centers, all data points are assigned to the nearest one, the mean value of the points in each cluster is computed to form its new cluster">Nella
sezione 4.8 abbiamo esaminato l'algoritmo di clustering k-means in cui i
punti iniziali k sono scelti per rappresentare i centri di cluster
iniziali, tutti i punti dati sono assegnati al più vicino, il valore
medio dei punti in ciascun cluster viene calcolato per formare il suo
nuovo cluster </span><span title="center, and iteration continues until there are no changes in the clusters.">Centro e l'iterazione continua finché non ci sono cambiamenti nei cluster. </span><span title="This procedure only works when the number of clusters is known in advance, and this section begins by describing what you can do if it is not.">Questa
procedura funziona solo quando il numero di cluster è noto in anticipo e
questa sezione inizia descrivendo cosa si può fare se non lo è. </span><span title="Next we examine two techniques that do not partition instances into disjoint clusters as k-means does.">Successivamente esaminiamo due tecniche che non partizionano istanze in cluster disgiunti come k-means. </span><span title="The first is an incremental clustering method that was developed in the late 1980s and embodied in a pair of systems called Cobweb (for nominal attributes) and Classit (for numeric attributes).">Il
primo è un metodo di clustering incrementale che è stato sviluppato
alla fine degli anni '80 e incarnato in una coppia di sistemi chiamati
Cobweb (per attributi nominali) e Classit (per attributi numerici). </span><span title="Both come up with a hierarchical grouping of instances and use a measure of cluster “quality” called category utility.">Entrambi
presentano un raggruppamento gerarchico di istanze e utilizzano una
misura di cluster "qualità" chiamata utilità di categoria. </span><span title="The second is a statistical clustering method based on a mixture model of different probability distributions, one for each cluster.">Il
secondo è un metodo di clustering statistico basato su un modello di
miscela di diverse distribuzioni di probabilità, una per ciascun
cluster. </span><span title="It assigns instances to classes probabilistically, not deterministically.">Assegna istanze a classi probabilisticamente, non deterministicamente. </span><span title="We explain the basic technique and sketch the working of a comprehensive clustering scheme called AutoClass.">Spieghiamo la tecnica di base e disegniamo il funzionamento di uno schema completo di cluster chiamato AutoClass.</span></span><br />
<h4>
<span class="" id="result_box" lang="it"><span title="(2003) evaluated the use of locally weighted learning in conjunction with Naïve Bayes."> </span></span><span class="short_text" id="result_box" lang="it"><span class="">Scelta del numero di cluster</span></span></h4>
<span class="" id="result_box" lang="it"><span title="(2003) evaluated the use of locally weighted learning in conjunction with Naïve Bayes."> </span></span><br />
<span class="" id="result_box" lang="it"><span title="Suppose you are using k-means but do not know the number of clusters in advance.">Supponiate di usare k-means ma non conoscete il numero di cluster in anticipo. </span><span title="One solution is to try out different possibilities and see which is best, that is, which one minimizes the total squared distance of all points to their cluster center.">Una
soluzione è provare diverse possibilità e vedere quale è la cosa
migliore, vale a dire quale riduce al minimo la distanza quadrata totale
di tutti i punti al loro centro di cluster. </span><span title="A simple strategy is to start from a given minimum, perhaps k = 1, and work up to a small fixed maximum, using cross-validation to find the best value.">Una
strategia semplice è quella di partire da un minimo minimo, forse k =
1, e lavorare fino ad un piccolo massimo fisso, utilizzando la convalida
incrociata per trovare il miglior valore. </span><span title="Because k-means is slow, and cross-validation makes it even slower,
">Poiché il k-means è lento e la convalida incrociata lo rende ancora più lento,<br /> </span><span title="it will probably not be feasible to try many possible values for k.">Probabilmente non sarà possibile sperimentare molti valori possibili per k. </span><span title="Note that on the training data the “best” clustering according to the total squared distance criterion will always be to choose as many clusters as there are data points!">Si
noti che sui dati di allenamento il clustering "migliore" secondo il
criterio di distanza quadrata totale sarà sempre quello di scegliere il
numero di cluster che ci sono punti dati! </span><span title="To penalize solutions with many clusters you have to apply something like the MDL criterion of Section 5.10, or use cross-validation.
">Per penalizzare le soluzioni con molti cluster devi applicare
qualcosa come il criterio MDL della Sezione 5.10 oppure utilizzare la
convalida incrociata.<br /> </span><span title="Another possibility is to begin by finding a few clusters and determining whether it is worth splitting them.">Un'altra possibilità è iniziare cercando alcuni cluster e stabilire se vale la pena di spaccarli. </span><span title="You could choose k = 2, perform k-means clustering until it terminates, and then consider splitting each cluster.">Potresti
scegliere k = 2, eseguire il clustering di k-means finché non termina e
quindi considerare la suddivisione di ciascun cluster. </span><span title="Computation time will be reduced considerably if the initial two-way clustering is considered irrevocable and splitting is investigated for each component independently.">Il
tempo di calcolo sarà ridotto notevolmente se il clustering iniziale a
due vie è considerato irrevocabile e la suddivisione viene indagata per
ciascun componente in modo indipendente. </span><span title="One way to split a cluster is to make a new seed, one standard deviation away from the cluster’s center in the direction of its greatest variation, and to make a second seed the same distance in the opposite direction.">Un
modo per dividere un cluster è quello di fare un nuovo seme, una
deviazione standard lontano dal centro del cluster in direzione della
sua più grande variazione e fare un secondo seme la stessa distanza
nella direzione opposta. </span><span title="(Alternatively, if this is too slow, choose a distance proportional to the cluster’s bounding box and a random direction.) Then apply k-means to the points in the cluster with these two new seeds.
">(In alternativa, se questo è troppo lento, scegli una distanza
proporzionale alla casella del limite del cluster e una direzione
casuale). Quindi applicate i k-means ai punti del cluster con questi due
nuovi semi.<br /> </span><span title="Having tentatively split a cluster, is it worthwhile retaining the split or is the original cluster equally plausible by itself?">Avendo
suddiviso in maniera provvisoria un cluster, vale la pena conservare la
divisione o è il cluster originale ugualmente plausibile da solo? </span><span title="It’s no good looking at the total squared distance of all points to their cluster center—this is bound to be smaller for two subclusters.">Non
è bene guardare la distanza quadrata totale di tutti i punti al loro
centro di cluster: questo è destinato a essere più piccolo per due
sottocluster. </span><span title="A penalty should be incurred for inventing an extra cluster, and this is a job for the MDL criterion.">È necessario prevedere una penalità per inventare un cluster aggiuntivo e questo è un lavoro per il criterio MDL. </span><span title="That principle can be applied to see whether the information required to specify the two new cluster centers, along with the information required to specify each point with respect to them, exceeds the information required to specify the original center and all the points with respect to it">Tale
principio può essere applicato per vedere se le informazioni necessarie
per specificare i due nuovi centri di cluster, insieme alle
informazioni necessarie per specificare ciascun punto rispetto a loro,
superano le informazioni necessarie per specificare il centro originale e
tutti i punti relativi a esso </span><span title=".">. </span><span title="If so, the new clustering is unproductive and should be abandoned.
">Se è così, il nuovo clustering è improduttivo e dovrebbe essere abbandonato.<br /> </span><span title="If the split is retained, try splitting each new cluster further.">Se la divisione viene mantenuta, prova a suddividere ulteriormente ogni nuovo cluster. </span><span title="Continue the process until no worthwhile splits remain.Additional implementation efficiency can be achieved by combining this iterative clustering process with the kD-tree or ball tree data structure advocated in Section 4.8.">Continuare
il processo finché non rimangono parti degne di nota. L'efficienza
aggiuntiva di implementazione può essere ottenuta combinando questo
processo di clustering iterativo con la struttura dei dati dell'albero a
forma di kD-tree o di pallone consigliata nella sezione 4.8. </span><span title="Then, the data points are reached by working down the tree from the root.">Quindi, i punti dati vengono raggiunti lavorando in basso l'albero dalla radice. </span><span title="When considering splitting a cluster, there is no need to consider the whole tree;">Quando si considera la suddivisione di un cluster, non è necessario considerare l'intero albero; </span><span title="just consider those parts of it that are needed to cover the cluster.">Basta considerare quelle parti che sono necessarie per coprire il cluster. </span><span title="For example, when deciding whether to split the lower left cluster in Figure 4.16(a) on page 140 (below the thick line), it is only necessary to consider nodes A and B of the tree in Figure 4.16(b), because node">Ad
esempio, quando si decide di dividere il cluster a sinistra in Figura
4.16 (a) a pagina 140 (sotto la linea spessa), è necessario considerare
solo i nodi A e B dell'albero in Figura 4.16 (b) perché il nodo </span><span title="C is irrelevant to that cluster.">C è irrilevante per quel cluster.</span></span><br />
<h4>
<span class="" id="result_box" lang="it"><span title="(2003) evaluated the use of locally weighted learning in conjunction with Naïve Bayes."> Incremental clustering</span></span></h4>
<h4>
<span class="" id="result_box" lang="it"><span title="(2003) evaluated the use of locally weighted learning in conjunction with Naïve Bayes."></span></span></h4>
<br />
<span class="" id="result_box" lang="it"><span title="Whereas the k-means algorithm iterates over the whole dataset until convergence is reached, the clustering methods that we examine next work incrementally, instance by instance.">Mentre
l'algoritmo k-means iterizza su tutto il set di dati finché non viene
raggiunta la convergenza, i metodi di clustering che esaminiamo
ulteriormente incrementano l'istanza per istanza. </span><span title="At any stage the clustering forms a tree with instances at the leaves and a root node that represents the entire dataset.">In qualsiasi fase il clustering forma un albero con istanze alle foglie e un nodo radice che rappresenta l'intero set di dati. </span><span title="In the beginning the tree consists of the root alone.">All'inizio l'albero è costituito dalla sola radice. </span><span title="Instances are added one by one, and the tree is updated appropriately at each stage.">Le istanze vengono aggiunte una ad una e l'albero viene aggiornato in modo appropriato in ogni fase. </span><span title="Updating may merely be a case of finding the right place to put a leaf representing the new instance, or it may involve radically restructuring the part of the tree that is affected by the new instance.">L'aggiornamento
può essere semplicemente un caso di trovare il posto giusto per mettere
una foglia che rappresenta la nuova istanza o può implicare
radicalmente la ristrutturazione della parte dell'albero che è
interessata dalla nuova istanza. </span><span title="The key to deciding how and where to update is a quantity called category utility, which measures the overall quality of a partition of instances into clusters.">La
chiave per decidere come e dove aggiornare è una quantità chiamata
utilità di categoria che misura la qualità complessiva di una partizione
di istanze in cluster. </span><span title="We defer detailed consideration of how this is defined until the next subsection and look first at how the clustering algorithm works.
">Ritardiamo una considerazione dettagliata su come questo viene
definito fino alla prossima sottosezione e cerchi innanzitutto come
funziona l'algoritmo di clustering.<br /> </span><span title="The procedure is best illustrated by an example.">La procedura è meglio illustrata da un esempio. </span><span title="We will use the familiar weather data again, but without the play attribute.">Utilizziamo nuovamente i dati meteo, ma senza l'attributo di gioco. </span><span title="To track progress the 14 instances are labeled a, b, c, .">Per monitorare i progressi, le 14 istanze sono etichette a, b, c,. </span><span title=".">. </span><span title=".">. </span><span title=", n (as in Table 4.6), and for interest we include the class yes or no in the label—although it should be emphasized that for this artificial dataset there is little reason to suppose that the two classes of instance should fall into separate categories">,
N (come nella tabella 4.6), e per interessi includiamo la classe sì o
no nell'etichetta, anche se va sottolineato che per questo set di dati
artificiali non vi è alcuna ragione per supporre che le due classi di
istanze debba rientrare in categorie distinte </span><span title=".">. </span><span title="Figure 6.17 shows the situation at salient points throughout the clustering procedure.">La Figura 6.17 mostra la situazione in punti salienti durante la procedura di clustering. </span><span title="At the beginning, when new instances are absorbed into the structure, they each form their own subcluster under the overall top-level cluster.">All'inizio,
quando nuovi casi vengono assorbiti nella struttura, ognuno forma il
proprio subcluster sotto il cluster globale di livello superiore. </span><span title="Each new instance is processed by tentatively placing it into each of the existing leaves and evaluating the category utility of the resulting set of the top-level node’s children to see whether the leaf is a good “host” for the new instance.">Ogni
nuova istanza viene elaborata provvisoriamente inserendola in ciascuna
delle foglie esistenti e valutando l'utilità di categoria del gruppo
risultante dei bambini del nodo di primo livello per vedere se la foglia
è un buon "host" per la nuova istanza. </span><span title="For each of the first five instances, there is no such host: it is better, in terms of category utility, to form a new leaf for each instance.">Per
ognuno dei primi cinque casi non esiste un host di questo tipo: è
meglio, in termini di utilità di categoria, creare una nuova foglia per
ogni istanza. </span><span title="With the sixth it finally becomes beneficial to form a cluster, joining the new instance f with the old one - the host - e.">Con il sesto infine diventa vantaggioso formare un cluster, unendo la nuova istanza f con quella vecchia - l'host. </span><span title="If you look back at Table 4.6 (page 103) you will see that the fifth and sixth instances are indeed very similar, differing only in the windy attribute (and play, which is being ignored here).">Se
si guarda indietro alla Tabella 4.6 (pagina 103), vedrete che le quinte
e la sesta sono veramente molto simili, diverse solo nell'attributo
ventoso (e nel gioco, che viene ignorato qui). </span><span title="The next example, g, is placed in the same cluster (it differs from e only in outlook).">L'esempio seguente, g, è inserito nello stesso cluster (differisce da e solo in outlook). </span><span title="This involves another call to the clustering procedure.">Questo implica un'altra chiamata alla procedura di clustering. </span><span title="First, g is evaluated to see which of the five children of the root makes the best host;">In primo luogo, g viene valutato per vedere quale dei cinque figli della radice fa l'ospite migliore; </span><span title="it turns out to be the rightmost, the one that is already a cluster.">Risulta essere il più a destra, quello che è già un cluster. </span><span title="Then the clustering algorithm is invoked with this as the root, and its two children are evaluated to see which would make the better host.">Poi
l'algoritmo di clustering viene invocato con questa come radice ei suoi
due figli vengono valutati per vedere quale sarebbe il miglior host. </span><span title="In this case it proves best, according to the category utility measure, to add the new instance as a subcluster in its own right.">In
questo caso si prova meglio, secondo la categoria di utilità di
categoria, aggiungere la nuova istanza come subcluso in proprio.</span></span><br />
<span class="" id="result_box" lang="it"><span title="In this case it proves best, according to the category utility measure, to add the new instance as a subcluster in its own right."> </span></span><span class="" id="result_box" lang="it"><span title="If we were to continue in this vein, there would be no possibility of any radical restructuring of the tree, and the final clustering would be excessively dependent on the ordering of examples.">Se
dovessimo continuare in questo modo, non ci sarebbe possibilità di una
radicale ristrutturazione dell'albero, e il cluster finale sarebbe
eccessivamente dipendente dall'ordine degli esempi. </span><span title="To avoid this, there is provision for restructuring, and you can see it come into play when instance h is added in the next step shown in Figure 6.17.">Per
evitare questo, ci sono disposizioni per la ristrutturazione, e si può
vedere che entra in gioco quando l'istanza h viene aggiunta nella fase
successiva mostrata nella Figura 6.17. </span><span title="In this case two existing nodes are merged into a single cluster: nodes a and d are merged before the new instance h is added.">In questo caso due nodi esistenti vengono fusi in un singolo cluster: i nodi a e d vengono fusi prima della nuova istanza h. </span><span title="One way of accomplishing this would be to consider all pairs of nodes for merging and evaluate the category utility of each pair.">Un
modo per realizzare questo obiettivo consiste nel considerare tutte le
coppie di nodi per la fusione e la valutazione dell'utilità di categoria
di ciascuna coppia. </span><span title="However, that would be computationally expensive and would involve a lot of repeated work if it were undertaken whenever a new instance was added.
">Tuttavia, ciò sarebbe computazionalmente costoso e comporterebbe un
sacco di lavori ripetuti se fosse stato intrapreso ogni qualvolta
venisse aggiunta una nuova istanza.<br /> </span><span title="Instead, whenever the nodes at a particular level are scanned for a suitable host, both the best-matching node—the one that produces the greatest category utility for the split at that level—and the runner-up are noted.">Invece,
ogni volta che i nodi a un determinato livello vengono scansionati per
un host appropriato, vengono notati sia il nodo migliore corrispondenza
che quello che produce l'utilità di categoria più grande per la
suddivisione a quel livello e il runner-up. </span><span title="The best one will form the host for the new instance (unless that new instance is better off in a cluster of its own).">Il
migliore formerà l'host per la nuova istanza (a meno che quella nuova
istanza non sia migliore in un cluster di suo proprio). </span><span title="However, before setting to work on putting the new instance in with the host, consideration is given to merging the host and the runner-up.
">Tuttavia, prima di impostare il lavoro per mettere la nuova istanza
con l'host, si considera la fusione dell'host e del runner-up.<br /> </span><span title="In this case, a is the preferred host and d is the runner-up.">In questo caso, a è l'host preferito e d è il runner-up. </span><span title="When a merge of a and d is evaluated, it turns out that it would improve the category utility measure.">Quando viene valutata una fusione di a e d, risulta che migliorerà la misura dell'utilità di categoria. </span><span title="Consequently, these two nodes are merged, yielding a version of the fifth hierarchy of Figure 6.17 before h is added.">Di conseguenza, questi due nodi sono fusi, creando una versione della quinta gerarchia di Figura 6.17 prima di aggiungere h. </span><span title="Then, consideration is given to the placement of h in the new, merged node;">Quindi, si prende in considerazione il posizionamento di h nel nuovo nodo fuso; </span><span title="and it turns out to be best to make it a subcluster in its own right, as shown.
">E risulta essere la cosa migliore per renderlo un subcluso in proprio, come mostrato.<br /> </span><span title="An operation converse to merging is also implemented, called splitting, although it does not take place in this particular example.">Viene
anche implementata un'operazione conversa alla fusione, chiamata
suddivisione, anche se non si svolge in questo esempio particolare. </span><span title="Whenever the best host is identified, and merging has not proved beneficial, consideration is given to splitting the host node.">Ogni
volta che viene identificato l'host migliore e la fusione non si è
rivelata utile, viene presa in considerazione la suddivisione del nodo
host. </span><span title="Splitting has exactly the opposite effect of merging, taking a node and replacing it with its children.">La suddivisione ha esattamente l'effetto opposto di fusione, prendendo un nodo e sostituendolo con i suoi figli. </span><span title="For example, splitting the rightmost node in the fourth hierarchy of Figure 6.17 would raise the e, f, and g leaves up a level, making them siblings of a, b, c, and d.">Ad
esempio, la suddivisione del nodo destro nella quarta gerarchia di
Figura 6.17 aumenterebbe i livelli e, f, e g lasciano un livello,
facendoli fratelli di a, b, c e d. </span><span title="Merging and splitting provide an incremental way of restructuring the tree to compensate for incorrect choices caused by infelicitous ordering of examples.
">L'unione e la suddivisione forniscono un modo incrementale di
ristrutturazione dell'albero per compensare scelte scorrette causate da
ordini infeliciti di esempi.<br /> </span><span title="The final hierarchy for all 14 examples is shown at the end of Figure 6.17.">La gerarchia finale per tutti i 14 esempi viene mostrata alla fine della Figura 6.17. </span><span title="There are two major clusters, each of which subdivides further into its own subclusters.">Ci sono due grandi gruppi, ognuno dei quali si suddivide ulteriormente nei propri sottostruttori. </span><span title="If the "play/don’t play" distinction really represented an inherent feature of the data, a single cluster would be expected for each outcome.">Se
la distinzione "play / does not play" rappresentava veramente una
caratteristica inerente dei dati, un singolo cluster dovrebbe essere
previsto per ciascun risultato. </span><span title="No such clean structure is observed, although a (very) generous eye might discern a slight tendency at lower levels for yes instances to group together, and likewise for no instances.">Non
si osserva una tale struttura pulita, anche se un occhio (molto)
generoso potrebbe discernere una lieve tendenza a livelli inferiori per i
casi di sì da raggruppare insieme, e altrettanto per nessun caso. </span><span title="Careful analysis of the clustering reveals some anomalies.(Table 4.6 will help if you want to follow this analysis in detail.) For example, instances a and b are actually very similar to each other, yet they end up in completely different parts of the">L'analisi
accurata del clustering rivela alcune anomalie (Tabella 4.6 aiuterà se
si desidera seguire in dettaglio questa analisi.) Ad esempio, le istanze
a e b sono in realtà molto simili tra loro, ma finiscono in parti
completamente diverse del </span><span title="tree.">albero. </span><span title="Instance b ends up with k, which is a worse match than a.">L'istanza b finisce con k, che è una partita peggiore di una. </span><span title="Instance a ends up with d and h, and it is certainly not as similar to d as it is to b.">L'istanza a finisce con d ed h, e certamente non è simile a d come è b. </span><span title="The reason why a and b become separated is that a and d get merged, as described previously, because they form the best and second-best hosts for h.">Il
motivo per cui a e b diviene separato è che a e d si uniscano, come
descritto in precedenza, perché costituiscono gli host migliori e
secondi per h. </span><span title="It was unlucky that a and b were the first two examples: if either had occurred later, it may well have ended up with the other.
">E 'stato sfortunato che a e b erano i primi due esempi: se si fosse verificato più tardi, potrebbe essere finito con l'altro.<br /> </span><span title="Subsequent splitting and remerging may be able to rectify this anomaly, but in this case they didn’t.">La
successiva ripartizione e remerging possono essere in grado di
rettificare questa anomalia, ma in questo caso non lo hanno fatto. </span><span title="Exactly the same scheme works for numeric attributes.">Esattamente lo stesso schema funziona per gli attributi numerici. </span><span title="Category utility is defined for these as well, based on an estimate of the mean and standard deviation of the value of that attribute.">La
categoria utilità è definita anche per questi, basata su una stima
della media e della deviazione standard del valore di tale attributo. </span><span title="Details are deferred to the next subsection.">I dettagli vengono rinviati alla sottosezione successiva. </span><span title="However, there is just one problem that we must attend to here: when estimating the standard deviation of an attribute for a particular node, the result will be zero if the node contains only one instance, as it does more often than not.">Tuttavia,
esiste un solo problema che dobbiamo prestare attenzione: quando si
stima la deviazione standard di un attributo per un particolare nodo, il
risultato sarà zero se il nodo contiene solo un'istanza, come fa più
spesso. </span><span title="Unfortunately, zero variances produce infinite values in the category utility formula.">Purtroppo, le varianze zero producono valori infiniti nella formula di utilità della categoria. </span><span title="A simple heuristic solution is to impose a minimum variance on each attribute.">Una semplice soluzione euristica è quella di imporre una variazione minima su ciascun attributo. </span><span title="It can be argued that because no measurement is completely precise, it is reasonable to impose such a minimum: it represents the measurement error in a single sample.">Si
può sostenere che poiché nessuna misurazione è completamente precisa, è
ragionevole imporre un minimo: rappresenta <b>l'errore di misurazione in
un singolo campione. </b></span><b><span title="This parameter is called acuity.">Questo parametro è chiamato acuità.</span></b></span><br />
<span class="" id="result_box" lang="it"><span title="(2003) evaluated the use of locally weighted learning in conjunction with Naïve Bayes."> </span></span><br />
<span class="" id="result_box" lang="it"><span title="Figure 6.18(a) shows, at the top, a hierarchical clustering produced by the incremental algorithm for part of the Iris dataset (30 instances, 10 from each class).">La
Figura 6.18 (a) mostra in alto un clustering gerarchico prodotto
dall'algoritmo incrementale per una parte del dataset Iris (30 istanze,
10 da ciascuna classe). </span><span title="At the top level there are two clusters (i.e., subclusters of the single node representing the whole dataset).">Al livello superiore ci sono due cluster (cioè, sottoclusterli del singolo nodo che rappresenta l'insieme di dati). </span><span title="The first contains both Iris virginicas and Iris versicolors, and the second contains only Iris setosas.">Il primo contiene sia virginicas Iris che versicolori Iris, e il secondo contiene solo setosas Iris. </span><span title="The Iris setosas themselves split into two subclusters, one with four cultivars and the other with six.">Gli iris setosas si dividono in due sottocluster, uno con quattro cultivar e l'altro con sei. </span><span title="The other top-level cluster splits into three subclusters, each with a fairly complex structure.">L'altro cluster di primo livello si articola in tre sottocluster, ognuno con una struttura abbastanza complessa. </span><span title="Both the first and second contain only Iris versicolors, with one exception, a stray Iris virginica, in each case;">Sia
il primo che il secondo contengono solo versicolori Iris, con una sola
eccezione, una irrigazione Iris virginica, in ogni caso; </span><span title="the third contains only Iris virginicas.
">Il terzo contiene solo Iris virginicas.<br /> </span><span title="This represents a fairly satisfactory clustering of the Iris data: it shows that the three genera are not artificial at all but reflect genuine differences in the data.">Ciò
rappresenta un raggruppamento abbastanza soddisfacente dei dati di
Iris: dimostra che i tre generi non sono affatto artificiali, ma
riflettono le differenze autentiche nei dati. </span><span title="This is, however, a slightly overoptimistic conclusion, because quite a bit of experimentation with the acuity parameter was necessary to obtain such a nice division.">Ciò
è tuttavia una conclusione leggermente sopraoptimistica, perché è stato
necessario un po 'di sperimentazione con il parametro di acuità per
ottenere una bella divisione. </span><span title="The clusterings produced by this scheme contain one leaf for every instance.">I clustering prodotti da questo schema contengono una foglia per ogni istanza. </span><span title="This produces an overwhelmingly large hierarchy for datasets of any reasonable size, corresponding, in a sense, to overfitting the particular dataset.">Ciò
produce una gerarchia in gran parte grande per i set di dati di
qualsiasi dimensione ragionevole, corrispondenti, in un certo senso, a
sovrapposizione del particolare set di dati. </span><span title="Consequently, a second numeric parameter called cutoff is used to suppress growth.">Di conseguenza, un secondo parametro numerico chiamato cutoff viene utilizzato per sopprimere la crescita. </span><span title="Some instances are deemed to be sufficiently similar to others to not warrant formation of their own child node, and this parameter governs the similarity threshold.">Alcuni
casi sono considerati sufficientemente simili a quelli che non
garantiscono la formazione del loro nodo figlio e questo parametro
regola la soglia di somiglianza. </span><span title="Cutoff is specified in terms of category utility: when the increase in category utility from adding a new node is sufficiently small, that node is cut off.
">Il taglio è specificato in termini di utilità di categoria: quando
l'aumento della utility di categoria dall'aggiunta di un nuovo nodo è
sufficientemente piccolo, quel nodo viene interrotto.<br /> </span><span title="Figure 6.18(b) shows the same Iris data, clustered with cutoff in effect.">La Figura 6.18 (b) mostra gli stessi dati Iris, raggruppati in cutoff in vigore. </span><span title="Many leaf nodes contain several instances: these are children of the parent node that have been cut off.">Molti nodi foglia contengono diverse istanze: questi sono i figli del nodo padre che sono stati tagliati. </span><span title="The division into the three types of iris is a little easier to see from this hierarchy because some of the detail is suppressed.">La
divisione nei tre tipi di iride è un po 'più facile da vedere da questa
gerarchia perché alcuni dei dettagli vengono soppressi. </span><span title="Again, however, some experimentation with the cutoff parameter was necessary to get this result, and in fact a sharper cutoff leads to much less satisfactory clusters.">Ancora
una volta è stata necessaria una certa sperimentazione con il parametro
di taglio per ottenere questo risultato, e infatti un taglio più nitido
porta a cluster molto meno soddisfacenti. </span><span title="Similar clusterings are obtained if the full Iris dataset of 150 instances is used.
">I cluster sono simili se viene utilizzato il set di dati Iris completo di 150 istanze.<br /> </span><span title="However, the results depend on the ordering of examples: Figure 6.18 was obtained by alternating the three varieties of iris in the input file.">Tuttavia,
i risultati dipendono dall'ordine degli esempi: la Figura 6.18 è stata
ottenuta alternando le tre varietà di iride nel file di input. </span><span title="If all Iris setosas are presented first, followed by all Iris versicolors and then all Iris virginicas, the resulting clusters are quite unsatisfactory.">Se
vengono presentate tutte le setine Iris, seguite da tutte le
versicolori Iris e poi tutte le Iris virginicas, i cluster risultanti
sono piuttosto insoddisfacenti.</span></span><br />
<span class="" id="result_box" lang="it"><span title="(2003) evaluated the use of locally weighted learning in conjunction with Naïve Bayes."> </span></span><br />
<span class="" id="result_box" lang="it"><span title="(2003) evaluated the use of locally weighted learning in conjunction with Naïve Bayes.">Figure 6.18 Hierarchical clusterings of the iris data.</span></span><br />
<span class="" id="result_box" lang="it"><span title="(2003) evaluated the use of locally weighted learning in conjunction with Naïve Bayes."><br /></span></span>
<br />
<h4>
<span class="" id="result_box" lang="it"><span title="(2003) evaluated the use of locally weighted learning in conjunction with Naïve Bayes."> Category utility</span></span></h4>
<h4>
<span class="" id="result_box" lang="it"><span title="(2003) evaluated the use of locally weighted learning in conjunction with Naïve Bayes."></span></span></h4>
<span class="" id="result_box" lang="it">Ora vediamo come viene calcolata la utility di categoria, che misura la qualità globale di una partizione di istanze in cluster. Nella
sezione 5.9 abbiamo appreso come la misura MDL potrebbe in linea di
principio essere utilizzata per valutare la qualità del clustering. <span class="">L'utilità
di categoria non è basata su MDL ma somiglia piuttosto a una sorta di
funzione di perdita quadratica definita su probabilità condizionale.</span><br /><span class=""><b>La definizione dell'utilità di categoria</b> è piuttosto formidabile:</span></span><br />
<span class="" id="result_box" lang="it"><span title="(2003) evaluated the use of locally weighted learning in conjunction with Naïve Bayes.">......... </span></span><br />
<span class="" id="result_box" lang="it"><span title="(2003) evaluated the use of locally weighted learning in conjunction with Naïve Bayes."> Dove C1, C2,. . ., Ck sono i cluster k; La somma esterna è sopra questi cluster; Il successivo interiore somma sopra gli attributi; Ai è l'attributo i, e assume valori vi1, vi2,. . . Che vengono trattati dalla somma sopra j. Si noti che le probabilità stesse vengono ottenute sommando in tutti i casi: quindi c'è un ulteriore livello implicito di sommatoria.<br /> Questa espressione ha molto senso se prendi il tempo per esaminarla. Il punto di avere un cluster è che darà un certo vantaggio nella predizione dei valori degli attributi di istanze in quel cluster, cioè Pr [ai = vij | C ᐉ] è una migliore stima della probabilità che l'attributo ai abbia vij vrijednosti, per un'istanza nel cluster C ᐉ, rispetto a Pr [ai = vij] perché tiene conto del cluster in cui l'istanza è in. Se queste informazioni non aiutano, I cluster non stanno facendo molto bene! Quindi quale misura la precedente misura, all'interno della sommatoria multipla, è l'importo con cui queste informazioni aiutano in termini di differenze tra quadrati di probabilità. Questo non è proprio la metrica standard di differenza quadrata, perché somma i quadrati delle differenze (che produce un risultato simmetrico) e la misura attuale somma la differenza dei quadrati (che, in modo appropriato, non produce un risultato simmetrico). Le differenze tra quadrati di probabilità sono sommati su tutti gli attributi e tutti i loro possibili valori, nella somma doppia interna. Quindi è sommato su tutti i cluster, ponderati dalle loro probabilità, nella somma esterna.<br /> La divisione generale di k è un po 'difficile da giustificare perché le differenze quadrate sono già state sommate sulle categorie. Fornisce essenzialmente una figura "per cluster" per l'utilità di categoria che scoraggia l'overfitting. Altrimenti, poiché le probabilità sono derivate sommando le istanze appropriate, l'utilità di categoria migliore verrebbe ottenuta mettendo ogni istanza nel proprio cluster. Quindi, Pr [ai = vij | C ᐉ] sarebbe 1 per il valore che l'attributo ai ha effettivamente per l'istanza unica nella categoria C ᐉ e 0 per tutti gli altri valori; E il numeratore della formula di utilità della categoria finirà come</span></span><br />
<span class="" id="result_box" lang="it"><span title="(2003) evaluated the use of locally weighted learning in conjunction with Naïve Bayes.">...... </span></span><br />
<span class="" id="result_box" lang="it"><span title="(2003) evaluated the use of locally weighted learning in conjunction with Naïve Bayes."> </span></span><span class="" id="result_box" lang="it">Dove n è il numero totale di attributi. Questo è il valore più grande che il numeratore può avere; E
quindi se non fosse per la divisione aggiuntiva di k nella formula di
utilità della categoria, non ci sarebbe mai alcun incentivo a formare
cluster contenenti più di un membro. Questo fattore supplementare è meglio considerato come un euristico rudimentale "overfitting-avoidance".<br />Questa formula di utilità di categoria si applica solo agli attributi nominali. Tuttavia,
può essere facilmente esteso a attributi numerici supponendo che la
loro distribuzione sia normale con una media misurata (osservata) m e
deviazione standard s. <span class="">La funzione di densità di probabilità per un attributo a è</span></span><br />
<span class="" id="result_box" lang="it"><span title="(2003) evaluated the use of locally weighted learning in conjunction with Naïve Bayes.">......</span></span><br />
<span class="" id="result_box" lang="it"><span title="(2003) evaluated the use of locally weighted learning in conjunction with Naïve Bayes."><span class="" id="result_box" lang="it"><span class="">L'analogico della somma dei quadrati delle probabilità di attributo-valore è</span></span> </span></span><br />
<span class="" id="result_box" lang="it"><span title="(2003) evaluated the use of locally weighted learning in conjunction with Naïve Bayes.">......</span></span><br />
<br />
<span class="" id="result_box" lang="it"><span class="">Dove si è la deviazione standard dell'attributo ai.</span> <span class="">Quindi,
per un attributo numerico, stimoliamo la deviazione standard dai dati,
sia all'interno del cluster (si ᐉ) che per i dati su tutti i cluster
(si) e li utilizziamo nella formula di utilità della categoria:</span><br />........<br /><span class="">Ora
il problema menzionato in precedenza che si verifica quando la stima
deviazione standard è zero risulta evidente: una deviazione standard
zero produce un valore infinito della formula di utilità della
categoria.</span> <span class="">Imponendo una variazione minima prefissata su ciascun attributo, l'acutezza, è una soluzione ruvida e pronta per il problema.</span></span>
<span class="" id="result_box" lang="it"><span title="Nevertheless it may improve other simple models—for example, linear support vector machines and logistic regression."> </span></span><br />
<h4>
<span class="" id="result_box" lang="it"><span title="Nevertheless it may improve other simple models—for example, linear support vector machines and logistic regression."> Probability-based clustering</span></span></h4>
<span class="" id="result_box" lang="it"><span title="Some of the shortcomings of the heuristic clustering described previously have already become apparent: the arbitrary division by k in the category utility formula that is necessary to prevent overfitting, the need to supply an artificial minimum value for the standard deviation of clusters, the ad hoc">Alcune
delle carenze del clustering euristico descritte in precedenza sono già
evidenti: la divisione arbitraria di k nella categoria di utilità della
formula necessaria per prevenire l'overfitting, la necessità di fornire
un valore minimo artificiale per la deviazione standard dei cluster,
l'ad hoc </span><span title="cutoff value to prevent every instance from becoming a cluster in its own right.">Valore di taglio per impedire che ogni istanza diventi un cluster in proprio. </span><span title="On top of this is the uncertainty inherent in incremental algorithms: to what extent is the result dependent on the order of examples?">Oltre
a questa è l'incertezza inerente agli algoritmi incrementali: in quale
misura il risultato dipende dall'ordine degli esempi? </span><span title="Are the local restructuring operations of merging and splitting really enough to reverse the effect of bad initial decisions caused by unlucky ordering?">Sono
le operazioni di ristrutturazione locali di fusione e divisione
abbastanza per invertire l'effetto di cattive decisioni iniziali causate
da un ordine sfortunato? </span><span title="Does the final result represent even a local minimum of category utility?">Il risultato finale rappresenta anche un minimo locale di utilità di categoria? </span><span title="Add to this the problem that one never knows how far the final configuration is from a global minimum—and that the standard trick of repeating the clustering procedure several times and choosing the best will destroy the incremental nature of the algorithm.">A
questo si aggiunge il problema che non si sa mai quanto la
configurazione finale sia da un minimo globale e che il trucco standard
di ripetere più volte la procedura di clustering e di scegliere il
meglio distruggerà la natura incrementale dell'algoritmo. </span><span title="Finally, doesn’t the hierarchical nature of the result really beg the question of which are the best clusters?">Infine, la natura gerarchica del risultato non è veramente la questione di quali sono i migliori cluster? </span><span title="There are so many clusters in Figure 6.18 that it is hard to separate the wheat from the chaff.">Ci sono così tanti cluster nella Figura 6.18 che è difficile separare il frumento dal pelo.</span></span>
<br />
<span class="" id="result_box" lang="it">Un approccio statistico più principio al problema del cluster può superare alcune di queste carenze. Da
una prospettiva probabilistica, l'obiettivo del clustering è quello di
trovare il gruppo più probabile di cluster dato i dati (e,
inevitabilmente, le aspettative precedenti). <span class="">Poiché
non è sufficiente una sufficiente quantità di prove "per rendere" una
decisione definitiva sulla materia, le istanze - addirittura le istanze
di formazione - non dovrebbero essere posizionate categoricamente in un
cluster o nell'altro: invece hanno una certa probabilità di appartenenza
a ciascun cluster.</span> <span class="">Questo aiuta ad eliminare la fragilità che spesso è associata a metodi che fanno giudizi duri e veloci.</span></span><br />
<span class="" id="result_box" lang="it"><span class=""> </span></span><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it">La base per il clustering statistico è un modello statistico chiamato miscele finite. Una
miscela è un insieme di distribuzioni di probabilità k, che
rappresentano i cluster di k, che regolano i valori degli attributi per i
membri di quel cluster. <span class="">In altre parole, ogni
distribuzione dà la probabilità che un'istanza particolare abbia un
certo insieme di valori di attributo se "fosse noto essere" un membro di
quel cluster.</span> Ogni cluster ha una distribuzione diversa. <span class="">Ogni istanza particolare "veramente" appartiene a uno e solo a uno dei cluster, ma non è conosciuto quale.</span> <span class="">Infine, i cluster non sono altrettanto probabili: c'è una distribuzione di probabilità che riflette le relative popolazioni.</span></span></span></span><br />
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""> </span></span></span></span><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class="">La situazione
più semplice di miscela finita si verifica quando esiste solo un
attributo numerico, che ha una distribuzione gaussiana o normale per
ogni cluster, ma con diversi mezzi e varianze.</span> <span class="">Il
problema di raggruppamento è quello di prendere un insieme di istanze -
in questo caso ogni istanza è solo un numero - e un numero prefissato di
cluster, e definire la media e la varianza di ciascun cluster e la
distribuzione della popolazione tra i cluster.</span> <span class="">Il
modello della miscela combina diverse distribuzioni normali e la sua
funzione di densità di probabilità appare come una catena montuosa con
un picco per ogni componente.</span></span></span></span></span></span><br />
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""> </span></span></span></span></span></span><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""> </span></span></span></span></span></span><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it">La Figura 6.19 mostra un esempio semplice. <span class="">Ci
sono due cluster A e B e ognuno ha una distribuzione normale con mezzi e
deviazioni standard: mA e sA per il cluster A e mB e sB per il cluster B
rispettivamente.</span> <span class="">I campioni vengono prelevati da
queste distribuzioni, utilizzando il cluster A con probabilità pA e
cluster B con probabilità pB (dove pA + pB = 1) e risultando in un set
di dati simile a quello mostrato.</span> <span class="">Ora, immagina di
essere dato il set di dati senza le classi - solo i numeri - e viene
chiesto di determinare i cinque parametri che caratterizzano il modello:
mA, sA, mB, sB e pA (il parametro pB può essere calcolato direttamente
da pA).</span> <span class="">Questo è il problema della miscela finita.</span><br /><span class=""> Se
sapevi che tra le due distribuzioni di ciascuna istanza proveniva,
individuando i cinque parametri sarebbe facile - basta stimare la
deviazione standard e la deviazione standard per i campioni del campione
A e il campione B del campione separatamente, utilizzando le formule</span></span> </span></span></span></span></span></span><br />
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class="">.......</span></span></span></span></span></span><br />
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""> </span></span></span></span></span></span><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class="">(L'uso di n-1
piuttosto che n come denominatore nella seconda formula è una tecnica di
campionamento: non poca diffusione nella pratica se n viene utilizzato
invece.) Qui, x1, x2,.</span> . . <span class="">,
Xn sono i campioni della distribuzione A o B. Per calcolare il quinto
parametro pA, prendi la proporzione delle istanze che si trovano nel
cluster A.</span><br /><span class="">Se conoscesse i cinque parametri, è facile trovare le probabilità che una determinata istanza venga da ogni distribuzione.</span> <span class="">Dato un'istanza x, la probabilità che appartiene al cluster A è</span></span></span></span></span></span></span></span><br />
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""> .....<br />Figure 6.19 A two-class mixture model.<br /> </span></span></span></span></span></span></span></span><br />
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class="">Dove f (x; mA, sA) è la funzione di distribuzione normale per il cluster A, ovvero:</span></span></span></span></span></span></span></span></span></span><br />
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class="">......</span></span></span></span></span></span></span></span></span></span><br />
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class="">Il denominatore Pr [x] scompare: calcoleremo i numeratori sia per Pr [A |</span> X] e Pr [B | <span class="">X] e normalizzarli dividendo per la loro somma.</span> <span class="">Questa
intera procedura è uguale al modo in cui gli attributi numerici vengono
trattati nello schema di apprendimento Naïve Bayes del Sezione 4.2.</span> <span class="">E la caveat spiegato qui si applica anche qui: in senso stretto, f (x; mA, sA) non è la probabilità Pr [x |</span> <span class="">A]
perché la probabilità che x sia un numero reale particolare è zero, ma
il processo di normalizzazione rende il risultato finale corretto.</span> <span class="">Si
noti che l'esito finale non è un cluster particolare, ma piuttosto le
probabilità con le quali x appartiene al cluster A e al cluster B.</span></span></span></span></span></span></span></span></span></span></span></span><br />
<h4>
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""> </span></span></span></span></span></span></span></span></span></span></span></span><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""> The EM algorithm</span></span></span></span></span></span></span></span></span></span></span></span></h4>
<h4>
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""></span></span></span></span></span></span></span></span></span></span></span></span></h4>
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""> </span></span> </span></span></span></span></span></span></span></span></span></span><span class="" id="result_box" lang="it"><span title="The problem is that we know neither of these things: not the distribution that each training instance came from nor the five parameters of the mixture model.">Il
problema è che non conosciamo nessuna di queste cose: non la
distribuzione che ogni istanza di formazione proveniva né i cinque
parametri del modello della miscela. </span><span title="So we adopt the procedure used for the k-means clustering algorithm and iterate.">Quindi adottiamo la procedura utilizzata per l'algoritmo di clustering dei k-means e l'iterazione. </span><span title="Start with initial guesses for the five parameters, use them to calculate the cluster probabilities for each instance, use these probabilities to reestimate the parameters, and repeat.">Iniziare
con le indagini iniziali per i cinque parametri, utilizzarli per
calcolare le probabilità cluster per ogni istanza, utilizzare queste
probabilità per riesaminare i parametri e ripetere. </span><span title="(If you prefer, you can start with guesses for the classes of the instances instead.) This is called the EM algorithm, for expectation–maximization.">(Se
preferisci, puoi iniziare con indovinare per le classi delle istanze.)
Questo è chiamato l'algoritmo EM, per massimizzare aspettative. </span><span title="The first step, calculation of the cluster probabilities (which are the “expected” class values) is “expectation”;">Il primo passo, il calcolo delle probabilità di cluster (che sono i valori di classe "previsti") è "aspettativa"; </span><span title="the second, calculation of the distribution parameters, is “maximization” of the likelihood of the distributions given the data.
">Il secondo, il calcolo dei parametri di distribuzione, è la
"massimizzazione" della probabilità delle distribuzioni date ai dati.</span><span title="A slight adjustment must be made to the parameter estimation equations to account for the fact that it is only cluster probabilities, not the clusters themselves, that are known for each instance.">È
necessario apportare una leggera regolazione alle equazioni di stima
dei parametri per tenere conto del fatto che sono solo probabilità di
cluster, e non i cluster stessi, che sono noti per ogni istanza. </span><span title="These probabilities just act like weights.">Queste probabilità agiscono solo come pesi. </span><span title="If wi is the probability that instance i belongs to cluster A, the mean and standard deviation for cluster A are"> </span></span><br />
<span class="" id="result_box" lang="it"><span title="If wi is the probability that instance i belongs to cluster A, the mean and standard deviation for cluster A are"> Se wi è la probabilità che l'istanza i appartiene al cluster A, la deviazione media e standard per il cluster A sono</span></span><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""></span></span></span></span><br /></span></span><br />
....<br />
<span class="" id="result_box" lang="it">Dove ora xi sono tutte le
istanze, non solo quelle appartenenti al cluster A. (Ciò differisce in
un piccolo dettaglio dalla stima della deviazione standard riportata a
pagina 101. Tecnicamente, questo è un estimatore "massimo di
probabilità" per la varianza , Mentre la formula a pagina 101 è per uno stimatore "imparziale". La differenza non è importante nella pratica.)<br /><span class="">Ora considerate come terminare l'iterazione.</span> <span class="">L'algoritmo
k-means si arresta quando le classi delle istanze non cambiano da una
iterazione al successivo un "punto fisso" è stato raggiunto.</span> <span class="">Nell'algoritmo EM le cose non sono così facili: l'algoritmo converge verso un punto fisso, ma non arriva mai in realtà.</span> <span class="">Ma
possiamo vedere quanto sia vicino calcolando la probabilità complessiva
che i dati provengono da questo set di dati, dato i valori per i cinque
parametri.</span> <span class="">Questa probabilità complessiva si ottiene moltiplicando le probabilità delle singole istanze i:</span></span><br />
<span class="" id="result_box" lang="it"><span class=""> </span></span><span class="" id="result_box" lang="it"><span class="">.....</span></span><br />
<span class="" id="result_box" lang="it"><span class=""> </span></span><span class="" id="result_box" lang="it"><span title="where the probabilities given the clusters A and B are determined from the normal distribution function f(x; m, s).">dove le probabilità date dai cluster A e B sono determinate dalla normale funzione di distribuzione f (x; m, s). </span><span title="This overall likelihood is a measure of the “goodness” of the clustering and increases at each iteration of the EM algorithm.">Questa probabilità complessiva è una misura della "bontà" del clustering e aumenta ad ogni iterazione dell'algoritmo EM. </span><span title="Again, there is a technical difficulty with equating the probability of a particular value of x with f(x; m, s), and in this case the effect does not disappear because no probability normalization operation is applied.">Ancora
una volta, c'è una difficoltà tecnica con l'equazione della probabilità
di un particolare valore di x con f (x; m, s) e in questo caso
l'effetto non scompare perché non viene applicata alcuna operazione di
normalizzazione di probabilità. </span><span title="The upshot is that the preceding likelihood expression is not a probability and does not necessarily lie between zero and one: nevertheless, its magnitude still reflects the quality of the clustering.">Il
risultato è che la precedente probabilità di esibizione non è una
probabilità e non necessariamente giace tra zero e uno: tuttavia, la sua
grandezza riflette ancora la qualità del clustering. </span><span title="In practical implementations its logarithm is calculated instead: this is done by summing the logarithms of the individual components, avoiding all the multiplications.">Nelle
implementazioni pratiche viene invece calcolato il suo logaritmo:
questo viene fatto sommando i logaritmi dei singoli componenti evitando
tutte le moltiplicazioni. </span><span title="But the overall conclusion still holds: you should iterate until the increase in log-likelihood becomes negligible.">Ma
la conclusione generale continua a tener conto: bisogna continuare fino
a quando l'aumento della probabilità di log diventa trascurabile. </span><span title="For example, a practical implementation might iterate until the difference between successive values of log-likelihood is less than 10-10 for 10 successive iterations.">Ad
esempio, un'implementazione pratica potrebbe ripetere fino a quando la
differenza tra i valori successivi di probabilità di log non è inferiore
a 10-10 per 10 successive iterazioni. </span><span title="Typically, the log-likelihood will increase very sharply over the first few iterations and then converge rather quickly to a point that is virtually
">In genere, la probabilità di log crescerà notevolmente nelle prime
iterazioni e poi convergerà piuttosto rapidamente ad un punto che è
praticamente </span><span title="stationary.
">stazionario.<br /> </span><span title="Although the EM algorithm is guaranteed to converge to a maximum, this is a local maximum and may not necessarily be the same as the global maximum.">Anche
se l'algoritmo EM è garantito per convergere al massimo, questo è un
massimo locale e potrebbe non essere necessariamente uguale al massimo
globale. </span><span title="For a better chance of obtaining the global maximum, the whole procedure should be repeated several times, with different initial guesses for the parameter values.">Per
una migliore probabilità di ottenere il massimo globale, l'intera
procedura deve essere ripetuta più volte, con diverse ipotesi iniziali
per i valori dei parametri. </span><span title="The overall log-likelihood figure can be used to compare the different final configurations obtained: just choose the largest of the local maxima.">La
figura globale di probabilità può essere utilizzata per confrontare le
diverse configurazioni finali ottenute: scegliere il più grande dei
massimi locali.</span></span><br />
<h4>
<span class="" id="result_box" lang="it"><span title="The overall log-likelihood figure can be used to compare the different final configurations obtained: just choose the largest of the local maxima."> Extending the mixture model</span></span></h4>
<h4>
<span class="" id="result_box" lang="it"><span title="The overall log-likelihood figure can be used to compare the different final configurations obtained: just choose the largest of the local maxima."></span></span></h4>
<span class="" id="result_box" lang="it"><span title="The overall log-likelihood figure can be used to compare the different final configurations obtained: just choose the largest of the local maxima."> </span></span><span class="" id="result_box" lang="it">Ora che abbiamo visto il
modello della miscela gaussiana per due distribuzioni, consideriamo come
estenderlo a situazioni più realistiche. <span class="">Il metodo di base è uguale, ma perché la notazione matematica diventa formidabile non lo svilupperemo in dettaglio.</span><br /><span class=""> Cambiare
l'algoritmo da problemi a due classi ai problemi multiclasse è
completamente diretto finché il numero k delle distribuzioni normali
viene dato in anticipo.</span><br /><span class=""> Il modello può essere
esteso da un singolo attributo numerico per ogni istanza a più
attributi, a condizione che sia presa in considerazione l'indipendenza
tra gli attributi.</span> <span class="">Le probabilità di ciascun
attributo vengono moltiplicate insieme per ottenere la probabilità
congiunta per l'istanza, come nel metodo Naïve Bayes</span></span><br />
<span class="" id="result_box" lang="it"><span title="The overall log-likelihood figure can be used to compare the different final configurations obtained: just choose the largest of the local maxima."> </span></span><span class="" id="result_box" lang="it"><span title="When the dataset is known in advance to contain correlated attributes, the independence assumption no longer holds.">Quando
il dataset è conosciuto in anticipo per contenere attributi correlati,
l'assunzione di indipendenza non è più in possesso. </span><span title="Instead, two attributes can be modeled jointly using a bivariate normal distribution, in which each has its own mean value but the two standard deviations are replaced by a “covariance matrix” with four numeric parameters.">Invece,
due attributi possono essere modellati congiuntamente utilizzando una
distribuzione normale bivariata, in cui ognuno ha il proprio valore
medio, ma le due deviazioni standard sono sostituite da una "matrice di
covarianza" con quattro parametri numerici. </span><span title="There are standard statistical techniques for estimating the class probabilities of instances and for estimating the means and covariance matrix given the instances and their class probabilities.
">Esistono tecniche statistiche standard per la stima delle
probabilità di classe di istanze e per la stima dei mezzi e della
matrice di covarianza data le istanze e le loro probabilità di classe.<br /> </span><span title="Several correlated attributes can be handled using a multivariate distribution.">È possibile gestire diversi attributi correlati utilizzando una distribuzione multivariata. </span><span title="The number of parameters increases with the square of the number of jointly varying attributes.">Il numero di parametri aumenta con il quadrato del numero di attributi congiuntamente variabili. </span><span title="With n independent attributes, there are 2n parameters, a mean and a standard deviation for each.">Con n attributi indipendenti, ci sono parametri 2n, una media e una deviazione standard per ciascuno. </span><span title="With n covariant attributes, there are n + n(n + 1)/2 parameters, a mean for each and an n ¥ n covariance matrix that is symmetric and therefore involves n(n + 1)/2 different quantities.">Con
n attributi covariant, ci sono n + n (n + 1) / 2 parametri, una media
per ciascuna e una matrice di covarianza n ¥ n che è simmetrica e
pertanto coinvolge n (n + 1) / 2 quantità differenti. </span><span title="This escalation in the number of parameters has serious consequences for overfitting, as we will explain later.
">Questa escalation nel numero di parametri ha gravi conseguenze per overfitting, come spiegheremo più tardi.</span><span title="To cater for nominal attributes, the normal distribution must be abandoned.">Per soddisfare gli attributi nominali, la distribuzione normale deve essere abbandonata. </span><span title="Instead, a nominal attribute with v possible values is characterized by v numbers representing the probability of each one.">Invece,
un attributo nominale con v possibili valori è caratterizzato da v
numeri che rappresentano la probabilità di ciascuno di essi. </span><span title="A different set of numbers is needed for every class;"> </span></span><br />
<span class="" id="result_box" lang="it"><span title="A different set of numbers is needed for every class;"> È necessario un diverso numero di numeri per ogni classe; </span><span title="kv parameters in all.">I parametri kv in tutti. </span><span title="The situation is very similar to the Naïve Bayes method.">La situazione è molto simile al metodo Naïve Bayes. </span><span title="The two steps of expectation and maximization correspond exactly to operations we have studied before.">I due passi di aspettativa e massimizzazione corrispondono esattamente alle operazioni che abbiamo già studiato. </span><span title="Expectation - estimating the cluster to which each instance belongs given the distribution parameters - is just like determining the class of an unknown instance.">L'aspettativa
- la stima del cluster a cui appartiene ogni istanza data i parametri
di distribuzione - è proprio come determinare la classe di un'istanza
sconosciuta. </span><span title="Maximization - estimating the parameters from the classified instances - is just like determining the attribute–value probabilities from the training instances, with the small difference that in the EM algorithm instances are assigned to classesprobabilistically rather than categorically.">Massimizzazione
- la stima dei parametri dalle istanze classificate - è proprio come
determinare le probabilità di valore attribuito dalle istanze di
addestramento, con la piccola differenza che nelle istanze di algoritmo
EM sono assegnate a classi in modo probabilistico piuttosto che
categoricamente. </span><span title="In Section 4.2 we encountered the problem that probability estimates can turn out to be zero, and the same problem occurs here too.">Nella
sezione 4.2 abbiamo incontrato il problema che le stime di probabilità
possono risultare essere zero e lo stesso problema si verifica anche
qui. </span><span title="Fortunately, the solution is just as simple use the Laplace estimator.">Fortunatamente, la soluzione è altrettanto semplice usare lo stimatore di Laplace.</span></span><br />
<span class="" id="result_box" lang="it"><span title="The overall log-likelihood figure can be used to compare the different final configurations obtained: just choose the largest of the local maxima."> </span></span><span class="" id="result_box" lang="it">Naïve Bayes assume che gli
attributi sono indipendenti, per questo motivo è chiamato "naïve". Una
coppia di attributi nominali correlati con v1 e v2 possibili valori,
rispettivamente, può essere sostituita da un singolo attributo
covariante con valori possibili v1v2. Ancora una volta, il numero dei
parametri si esalta mentre il numero di attributi dipendenti aumenta e
questo ha implicazioni per le stime di probabilità e l'overfitting che
verremo a breve.<br /> La presenza di attributi numerici e nominali nei
dati da raggruppare non presenta particolari problemi. Gli attributi
numerici e nominali coevocativi sono più difficili da gestire e non li
descriveremo qui. I valori mancanti possono essere ospitati in diversi
modi. I valori mancanti degli attributi nominali possono essere
semplicemente lasciati fuori dai calcoli di probabilità, come descritto
nella Sezione 4.2; In alternativa possono essere considerati come un
valore aggiuntivo dell'attributo, da modellare come qualsiasi altro
valore. Quale è più appropriato dipende da cosa significa che un valore
sia "mancante". Esattamente le stesse possibilità esistono per gli
attributi numerici.<br /> Con tutti questi miglioramenti, il clustering
probabilistico diventa molto sofisticato. L'algoritmo EM è utilizzato in
tutto per fare il lavoro di base. L'utente deve specificare il numero
di cluster da ricercare, il tipo di ogni attributo (numerico o
nominale), quali attributi sono modellati come covariatura e cosa fare
per i valori mancanti. Inoltre, possono essere utilizzate diverse
distribuzioni di quelle descritte in precedenza. Sebbene la
distribuzione normale sia di solito una buona scelta per gli attributi
numerici, non è adatta per attributi (come il peso) che hanno un minimo
prefissato (zero, nel caso del peso) ma nessun limite superiore; In
questo caso una distribuzione "log-normale" è più appropriata.<br /> Gli
attributi numerici che sono limitati sopra e sotto possono essere
modellati da una distribuzione "log-odds". Gli attributi che sono numeri
interi piuttosto che valori reali sono meglio modellati dalla
distribuzione "Poisson". Un sistema completo potrebbe consentire a
queste distribuzioni di specificare singolarmente per ciascun attributo.
In ogni caso, la distribuzione comprende parametri numerici -
probabilità di tutti i valori possibili per attributi discreti e
deviazione media e standard per quelli continui.<br /> In questa sezione
abbiamo parlato di clustering. Ma si potrebbe pensare che questi
miglioramenti potrebbero essere applicati altrettanto bene all'algoritmo
Naïve Bayes - e avresti ragione. Un modeler probabilistico completo
potrebbe ospitare l'apprendimento di clustering e classificazione,
attributi nominali e numerici con una varietà di distribuzioni, varie
possibilità di covariatura e diversi modi di affrontare valori mancanti.
L'utente specificherebbe come parte della conoscenza del dominio "quali
distribuzioni" utilizzare per quali attributi.</span><br />
<h4>
<span class="" id="result_box" lang="it"> Bayesian clustering</span></h4>
<h4>
<span class="" id="result_box" lang="it"></span></h4>
<span class="" id="result_box" lang="it"> </span><span class="" id="result_box" lang="it"><span title="However, there is a snag: overfitting.">Tuttavia, c'è un ostacolo: overfitting. </span><span title="You might say that if we are not sure which attributes are dependent on each other, why not be on the safe side and specify that all the attributes are covariant?">Potresti
dire che se non sappiamo quali attributi dipendono l'uno dall'altro,
perché non essere sicuro e specificare che tutti gli attributi sono
covariati? </span><span title="The answer is that the more parameters there are, the greater the chance that the resulting structure is overfitted to the training data and covariance increases the number of parameters dramatically.">La
risposta è che più parametri esistono, maggiore è la probabilità che la
struttura risultante sia sovrapposta ai dati formativi e la covarianza
aumenta in modo drammatico il numero di parametri. </span><span title="The problem of overfitting occurs throughout machine learning, and probabilistic clustering is no exception.">Il problema dell'overfitting avviene durante l'apprendimento della macchina, e il clustering probabilistico non fa eccezione. </span><span title="There are two ways that it can occur: through specifying too large a number of clusters and through specifying distributions with too many parameters.
">Ci sono due modi che possono verificarsi: specificando un numero
troppo elevato di cluster e specificando le distribuzioni con troppi
parametri.</span><span title="The extreme case of too many clusters occurs when there is one for every data point: clearly, that will be overfitted to the training data."> Il
caso estremo di troppi cluster si verifica quando c'è uno per ogni
punto dati: chiaramente, questo sarà sovrapposto ai dati formativi. </span><span title="In fact, in the mixture model, problems will occur whenever any of the normal distributions becomes so narrow that it is centered on just one data point.">Infatti,
nel modello della miscela, i problemi si verificheranno quando una
qualsiasi delle distribuzioni normali diventa così stretta che è
centrata su un solo punto dati. </span><span title="Consequently, implementations generally insist that clusters contain at least two different data values.
">Di conseguenza, le implementazioni generalmente insistono sul fatto che i cluster contengono almeno due valori di dati diversi.<br /> </span><span title="Whenever there are a large number of parameters, the problem of overfitting arises.">Ogni volta che ci sono un gran numero di parametri, si verifica il problema dell'overfitting. </span><span title="If you were unsure of which attributes were covariant, you might try out different possibilities and choose the one that maximized the overall probability of the data given the clustering that was found.">Se
non fossi sicura di quali attributi sono stati covariati, puoi provare
diverse possibilità e scegliere quello che ha massimizzato la
probabilità complessiva dei dati dato il clustering che è stato trovato.
</span><span title="Unfortunately, the more parameters there are, the larger the overall data probability will tend to be not necessarily because of better clustering but because of overfitting.">Purtroppo,
più parametri esistono, maggiore è la probabilità di dati complessivi
che tendono ad essere non necessariamente a causa di un migliore
clustering ma a causa di overfitting. </span><span title="The more parameters there are to play with, the easier it is to find a clustering that seems good.">Più parametri ci sono da giocare, più è facile trovare un cluster che sembra buono.</span></span><br />
<span class="" id="result_box" lang="it"> </span><br />
<span class="" id="result_box" lang="it">Sarebbe bello se in qualche
modo potresti penalizzare il modello per l'introduzione di nuovi
parametri. Un modo di fare questo principio è quello di adottare un
approccio completamente Bayesiano in cui ogni parametro ha una
distribuzione di probabilità precedente. Quindi, ogni volta che viene
introdotto un nuovo parametro, la sua probabilità precedente deve essere
incorporata nella figura di probabilità complessiva. Poiché ciò
comporterà moltiplicare la probabilità complessiva di un numero
inferiore a una - la probabilità precedente - penalizzerà
automaticamente l'aggiunta di nuovi parametri. Per migliorare la
probabilità complessiva, i nuovi parametri dovranno produrre un
vantaggio che supera la penalità.<br /> In un certo senso, lo stimatore di
Laplace che abbiamo incontrato nella sezione 4.2 e il cui uso abbiamo
sostenuto in precedenza per contrastare il problema delle stime di
probabilità zero per valori nominali, è solo un tale dispositivo. Ogni
volta che le probabilità osservate sono piccole, lo stimatore di Laplace
esegue una penalità perché rende probabilità zero o vicine a zero, e
questo diminuirà la probabilità complessiva dei dati. Rendere due
attributi nominali covariant aggravano il problema.<br /> Invece dei
parametri v1 + v2, dove v1 e v2 sono il numero di valori possibili, ci
sono ora v1v2, aumentando notevolmente la probabilità di un gran numero
di piccole probabilità stimate. Infatti, lo stimatore di Laplace
equivale ad utilizzare una particolare distribuzione preventiva per
l'introduzione di nuovi parametri. La stessa tecnica può essere
utilizzata per penalizzare l'introduzione di un gran numero di cluster,
semplicemente utilizzando una "distribuzione preventiva" prefissata che
decade notevolmente aumentando il numero di cluster.<br /> AutoClass è
uno schema di clustering Bayesiano completo che utilizza il modello di
miscela finita con distribuzioni precedenti su tutti i parametri.
Permette sia attributi numerici che nominali e utilizza l'algoritmo EM
per stimare i parametri delle distribuzioni di probabilità per meglio
adattare i dati. Poiché non vi è alcuna garanzia che l'algoritmo EM
converge all'ottimale globale, la procedura viene ripetuta per vari set
diversi di valori iniziali.i. Ma non è tutto.<br /> AutoClass considera
diversi numeri di cluster e può considerare diverse quantità di
covarianza e diversi tipi di distribuzione di probabilità sottostante
per gli attributi numerici. Ciò comporta un ulteriore livello esterno di
ricerca. Ad esempio, viene valutata inizialmente la probabilità di log
per i cluster di 2, 3, 5, 7, 10, 15 e 25: dopo che si adatta a una
distribuzione log-normale ai dati risultanti e seleziona casualmente più
valori per provare . Come si potrebbe immaginare, l'algoritmo
complessivo è estremamente intenso nel calcolo. Infatti,
l'implementazione effettiva inizia con un tempo prefissato e continua a
ripetere finché il tempo lo consente. Dare più tempo ei risultati
possono essere migliori!</span><br />
<h4>
<span class="" id="result_box" lang="it"><span title="The overall log-likelihood figure can be used to compare the different final configurations obtained: just choose the largest of the local maxima."> Discusione </span></span></h4>
<span class="" id="result_box" lang="it"><span title="The overall log-likelihood figure can be used to compare the different final configurations obtained: just choose the largest of the local maxima."> </span></span><span class="" id="result_box" lang="it"><span title="The clustering methods that have been described produce different kinds of output.">I metodi di cluster che sono stati descritti producono diversi tipi di output. </span><span title="All are capable of taking new data in the form of a test set and classifying it according to clusters that were discovered by analyzing a training set.">Tutti
sono in grado di acquisire nuovi dati sotto forma di un set di test e
di classificarla secondo i cluster che sono stati scoperti analizzando
un set di formazione. </span><span title="However, the incremental clustering method is the only one that generates an explicit knowledge structure that describes the clustering in a way that can be visualized and reasoned about.">Tuttavia,
il metodo di clustering incrementale è l'unico che genera una struttura
di conoscenza esplicita che descrive il clustering in un modo che può
essere visualizzato e motivato. </span><span title="The other algorithms produce clusters that could be visualized in instance space if the dimensionality were not too high.
">Gli altri algoritmi producono cluster che potrebbero essere
visualizzati nello spazio di esempio se la dimensionalità non era troppo
alta.<br /> </span><span title="If a clustering method were used to label the instances of the training set with cluster numbers, that labeled set could then be used to train a rule or decision tree learner.">Se
un metodo di clustering è stato utilizzato per etichettare le istanze
del set di formazione con i numeri di cluster, questo insieme
etichettato potrebbe essere utilizzato per formare un principiante di
una regola o di un albero di decisione. </span><span title="The resulting rules or tree would form an explicit description of the classes.">Le regole o l'albero risultanti formerebbero una descrizione esplicita delle classi. </span><span title="A probabilistic clustering scheme could be used for the same purpose, except that each instance would have multiple weighted labels and the rule or decision tree learner would have to be able to cope with weighted instances—as many can.
">Un schema di clustering probabilistico potrebbe essere utilizzato
per lo stesso scopo, ad eccezione che ogni istanza avrebbe più etichette
pesate e l'algoritmo di regola o di decisione dovrebbe essere in grado
di far fronte a istanze ponderate - come molti possono.<br /> </span><span title="Another application of clustering is to fill in any values of the attributes that may be missing.">Un'altra applicazione di clustering è quella di riempire tutti i valori degli attributi che potrebbero mancare. </span><span title="For example, it is possible to make a statistical estimate of the value of unknown attributes of a particular instance, based on the class distribution for the instance itself and the values of the unknown attributes for other examples.">Ad
esempio, è possibile effettuare una stima statistica del valore di
attributi sconosciuti di un'istanza particolare, in base alla
distribuzione della classe per l'istanza stessa e ai valori degli
attributi sconosciuti per altri esempi.</span></span><br />
<span class="" id="result_box" lang="it"><span title="The overall log-likelihood figure can be used to compare the different final configurations obtained: just choose the largest of the local maxima."> </span></span><br />
<span class="" id="result_box" lang="it"><span title="All the clustering methods we have examined make a basic assumption of independence among the attributes.">Tutti i metodi di clustering che abbiamo esaminato fanno un presupposto fondamentale di indipendenza tra gli attributi. </span><span title="AutoClass does allow the user to specify in advance that two or more attributes are dependent and should be modeled with a joint probability distribution.">AutoClass
consente all'utente di specificare in anticipo che due o più attributi
dipendono e devono essere modellati con una distribuzione congiunta di
probabilità. </span><span title="(There are restrictions, however: nominal attributes may vary jointly, as may numeric attributes, but not both together. Moreover, missing values for jointly varying attributes are not catered for.) It may be advantageous to preprocess a dataset to make the attributes more">(Ci
sono restrizioni, tuttavia: gli attributi nominali possono variare
congiuntamente, come gli attributi numerici, ma non entrambi insieme.
Inoltre, i valori mancanti per gli attributi congiuntamente variabili
non sono soddisfatti.) Può essere vantaggioso pre-elaborare un set di
dati per rendere più gli attributi </span><span title="independent, using a statistical technique such as the principal components transform described in Section 7.3.">Indipendente, utilizzando una tecnica statistica come la trasformazione dei componenti principali descritta nella Sezione 7.3. </span><span title="Note that joint variation that is specific to particular classes will not be removed by such techniques;">Si noti che la variazione congiunta che è specifica per determinate classi non sarà rimossa da tali tecniche; </span><span title="they only remove overall joint variation that runs across all classes.
">Rimuovono solo la variazione di giunzione complessiva che attraversa tutte le classi.<br /> </span><span title="Our description of how to modify k-means to find a good value of k by repeatedly splitting clusters and seeing whether the split is worthwhile follows the X-means algorithm of Moore and Pelleg (2000).">La
nostra descrizione di come modificare k significa trovare un buon
valore di k dividendo ripetutamente i cluster e vedere se la
ripartizione è valida segue l'algoritmo X-tools di Moore e Pelleg
(2000). </span><span title="However, instead of the MDL principle they use a probabilistic scheme called the Bayes Information Criterion (Kass and Wasserman 1995).">Tuttavia,
al posto del principio MDL, essi utilizzano uno schema probabilistico
denominato Bayes Information Criterion (Kass e Wasserman 1995). </span><span title="The incremental clustering procedure, based on the merging and splitting operations, was introduced in systems called Cobweb for nominal attributes (Fisher 1987) and Classit for numeric attributes (Gennari et al. 1990).">La
procedura di clustering incrementale, basata sulle operazioni di
fusione e suddivisione, è stata introdotta in sistemi chiamati Cobweb
per attributi nominali (Fisher 1987) e Classit per attributi numerici
(Gennari et al., 1990). </span><span title="Both are based on a measure of category utility that had been defined previously (Gluck and Corter 1985).">Entrambi sono basati su una misura di utilità di categoria che era stata definita in precedenza (Gluck e Corter 1985). </span><span title="The AutoClass program is described by Cheeseman and Stutz (1995).">Il programma AutoClass è descritto da Cheeseman e Stutz (1995). </span><span title="Two implementations are available: the original research implementation, written in LISP, and a follow-up public implementation in C that is 10 or 20 times faster but somewhat more restricted—for example, only the normal-distribution model is implemented for numeric attributes.">Sono
disponibili due implementazioni: l'implementazione originale di
ricerca, scritta in LISP, e una implementazione pubblica di follow-up in
C che è 10 o 20 volte più veloce, ma un po 'più limitata, ad esempio,
solo il modello di distribuzione normale viene implementato per gli
attributi numerici.</span></span><br />
<h4>
<span class="" id="result_box" lang="it"><span title="The overall log-likelihood figure can be used to compare the different final configurations obtained: just choose the largest of the local maxima."> Bayesian networks</span></span></h4>
<h4>
<span class="" id="result_box" lang="it"><span title="The overall log-likelihood figure can be used to compare the different final configurations obtained: just choose the largest of the local maxima."></span></span></h4>
<span class="" id="result_box" lang="it"><span title="The overall log-likelihood figure can be used to compare the different final configurations obtained: just choose the largest of the local maxima."> </span></span><span class="" id="result_box" lang="it"><span title="The Naïve Bayes classifier of Section 4.2 and the logistic regression models of Section 4.6 both produce probability estimates rather than predictions.">Il
classificatore Naïve Bayes della Sezione 4.2 e i modelli di regressione
logistica della Sezione 4.6 producono entrambi stime di probabilità
piuttosto che previsioni. </span><span title="For each class value, they estimate the probability that a given instance belongs to that class.">Per ciascun valore di classe, stimano la probabilità che una data istanza appartenga a quella classe. </span><span title="Most other types of classifiers can be coerced into yielding this kind of information if necessary.">La maggior parte degli altri tipi di classificatori può essere costretta a produrre questo tipo di informazioni, se necessario. </span><span title="For example, probabilities can be obtained from a decision tree by computing the relative frequency of each class in a leaf and from a decision list by examining the instances that a particular rule covers.
">Ad esempio, le probabilità possono essere ottenute da un albero di
decisione calcolando la frequenza relativa di ogni classe in una foglia e
da un elenco di decisioni esaminando le istanze che una determinata
regola copre.<br /> </span><span title="Probability estimates are often more useful than plain predictions.">Le stime di probabilità sono spesso più utili delle semplici previsioni. </span><span title="They allow predictions to be ranked, and their expected cost to be minimized (see Section 5.7).">Consentono di classificare le previsioni e di ridurre al minimo i costi previsti (vedere Sezione 5.7). </span><span title="In fact, there is a strong argument for treating classification learning as the task of learning class probability estimates from data.">Infatti,
c'è un forte argomento per trattare l'apprendimento di classificazione
come compito di apprendere le stime della probabilità di classe dai
dati. </span><span title="What is being estimated is the conditional probability distribution of the values of the class attribute given the values of the other attributes.">Quello
che viene stimato è la distribuzione condizionale della probabilità dei
valori dell'attributo di classe dato i valori degli altri attributi. </span><span title="The classification model represents this conditional distribution in a concise and easily comprehensible form.
">Il modello di classificazione rappresenta questa distribuzione condizionale in forma concisa e facilmente comprensibile.<br /> </span><span title="Viewed in this way, Naïve Bayes classifiers, logistic regression models, decision trees, and so on, are just alternative ways of representing a conditional probability distribution.">In
questo modo, i classificatori Naïve Bayes, i modelli di regressione
logistica, gli alberi decisionali e così via sono solo modi alternativi
per rappresentare una distribuzione di probabilità condizionale. </span><span title="Of course, they differ in representational power.">Naturalmente, differiscono in potenza rappresentativa. </span><span title="Naïve Bayes classifiers and logistic regression models can only represent simple distributions, whereas decision trees can represent - or at least approximate - arbitrary distributions.
">I classificatori Naïve Bayes ei modelli di regressione logistica
possono rappresentare solo distribuzioni semplici, mentre gli alberi
decisionali possono rappresentare - o almeno approssimare -
distribuzioni arbitrarie.<br /> </span><span title="However, decision trees have their drawbacks: they fragment the training set into smaller and smaller pieces, which inevitably yield less reliable probability estimates, and they suffer from the replicated subtree problem described in Section 3.2.">Tuttavia,
gli alberi decisionali hanno i loro inconvenienti: essi frammentano il
set di formazione in piccoli e piccoli pezzi, che inevitabilmente
producono stime di probabilità meno affidabili e soffrono del problema
subtree replicato descritto nella sezione 3.2. </span><span title="Rule sets go some way toward addressing these shortcomings, but the design of a good rule learner is guided by heuristics with scant theoretical justification.">Le
regole si pongono in qualche modo per affrontare queste carenze, ma la
progettazione di un principio di buona regola è guidata da euristiche
con scarsa giustificazione teorica.</span></span><br />
<span class="" id="result_box" lang="it"><span title="The overall log-likelihood figure can be used to compare the different final configurations obtained: just choose the largest of the local maxima."> </span></span><span class="" id="result_box" lang="it"><span title="The overall log-likelihood figure can be used to compare the different final configurations obtained: just choose the largest of the local maxima."><span class="" id="result_box" lang="it"><span title="Does this mean that we have to accept our fate and live with these shortcomings?">Questo significa che dobbiamo accettare il nostro destino e vivere con queste carenze? </span><span title="No!">No! </span><span title="There is a statistically based alternative: a theoretically well-founded way of representing probability distributions concisely and comprehensibly in a graphical manner.">Esiste
un'alternativa statisticamente basata: un modo teoricamente fondato per
rappresentare in maniera concisa e comprensibile in maniera grafica le
distribuzioni di probabilità. </span><span title="The structures are called Bayesian networks.">Le strutture sono chiamate reti bayesiane. </span><span title="They are drawn as a network of nodes, one for each attribute, connected by directed edges in such a way that there are no cycles a directed acyclic graph.
">Sono disegnati come una rete di nodi, uno per ciascun attributo,
collegati da bordi diretti in modo tale che non ci sono cicli un grafico
aciclico diretto.<br /> </span><span title="In our explanation of how to interpret Bayesian networks and how to learn them from data, we will make some simplifying assumptions.">Nella nostra spiegazione su come interpretare le reti bayesiane e come impararli dai dati, faremo alcune ipotesi semplificanti. </span><span title="We assume that all attributes are nominal and that there are no missing values.">Supponiamo che tutti gli attributi siano nominali e che non ci siano valori mancanti. </span><span title="Some advanced learning algorithms can create new attributes in addition to the ones present in the 'data—so-called' hidden attributes whose values cannot be observed.">Alcuni
algoritmi di apprendimento avanzato possono creare nuovi attributi in
aggiunta a quelli presenti nei 'attributi nascosti di dati', i cui
valori non possono essere osservati. </span><span title="These can support better models if they represent salient features of the underlying problem, and Bayesian networks provide a good way of using them at prediction time.">Questi
possono supportare modelli migliori se rappresentano le caratteristiche
salienti del problema sottostante e le reti bayesiane forniscono un
buon modo di usarli al tempo di previsione. </span><span title="However, they make both learning and prediction far more complex and time consuming, so we will not consider them here.">Tuttavia,
rendono entrambi l'apprendimento e la previsione molto più complessi e
richiedono molto tempo, quindi non li consideriamo qui.</span></span></span></span><br />
<h4>
<span class="" id="result_box" lang="it"><span title="The overall log-likelihood figure can be used to compare the different final configurations obtained: just choose the largest of the local maxima."><span class="" id="result_box" lang="it"><span title="However, they make both learning and prediction far more complex and time consuming, so we will not consider them here."> Fare previsioni - Making predictions</span></span></span></span></h4>
<h4>
<span class="" id="result_box" lang="it"><span title="The overall log-likelihood figure can be used to compare the different final configurations obtained: just choose the largest of the local maxima."><span class="" id="result_box" lang="it"><span title="However, they make both learning and prediction far more complex and time consuming, so we will not consider them here."></span></span></span></span></h4>
<span class="" id="result_box" lang="it"><span title="The overall log-likelihood figure can be used to compare the different final configurations obtained: just choose the largest of the local maxima."><span class="" id="result_box" lang="it"><span title="However, they make both learning and prediction far more complex and time consuming, so we will not consider them here."> </span></span></span></span><span class="" id="result_box" lang="it"><span title="Figure 6.20 shows a simple Bayesian network for the weather data.">La Figura 6.20 mostra una semplice rete Bayesiana per i dati meteorologici. </span><span title="It has a node for each of the four attributes outlook, temperature, humidity, and windy and one for the class attribute play.">Ha
un nodo per ciascuna delle quattro prospettive di attributi,
temperatura, umidità e ventosa e uno per il gioco di attributi di
classe. </span><span title="An edge leads from the play node to each of the other nodes.">Un bordo conduce dal nodo di riproduzione a ciascuno degli altri nodi. </span><span title="But in Bayesian networks the structure of the graph is only half the story.">Ma nelle reti bayesiane la struttura del grafico è solo la metà della storia. </span><span title="Figure 6.20 shows a table inside each node.">La Figura 6.20 mostra una tabella all'interno di ciascun nodo. </span><span title="The information in the tables defines a probability distribution that is used to predict the class probabilities for any given instance.
">Le informazioni contenute nelle tabelle definiscono una
distribuzione di probabilità che viene utilizzata per predire le
probabilità di classe per ogni dato istanza.<br /> </span><span title="Before looking at how to compute this probability distribution, consider the information in the tables.">Prima di esaminare come calcolare questa distribuzione di probabilità, considerate le informazioni nelle tabelle. </span><span title="The lower four tables (for outlook, temperature, humidity, and windy) have two parts separated by a vertical line.">Le
quattro tavole inferiori (per la vista, la temperatura, l'umidità e il
vento) hanno due parti separate da una linea verticale. </span><span title="On the left are the values of play, and on the right are the corresponding probabilities for each value of the attribute represented by the node.">Sulla
sinistra sono i valori di gioco e sulla destra sono le probabilità
corrispondenti per ogni valore dell'attributo rappresentato dal nodo. </span><span title="In general, the left side contains a column for every edge pointing to the node, in this case just the play attribute.">In generale, il lato sinistro contiene una colonna per ogni bordo che punta al nodo, in questo caso solo l'attributo play. </span><span title="That is why the table associated with play itself does not have a left side: it has no parents.">Ecco perché la tabella associata al gioco stesso non ha un lato sinistro: non ha genitori. </span><span title="In general, each row of probabilities corresponds to one combination of values of the parent attributes, and the entries in the row show the probability of each value of the node’s attribute given this combination.">Generalmente,
ogni riga di probabilità corrisponde a una combinazione di valori degli
attributi padre e le voci nella riga mostrano la probabilità di ogni
valore dell'attributo del nodo dato questa combinazione. </span><span title="In effect, each row defines a probability distribution over the values of the node’s attribute.">In effetti, ogni riga definisce una distribuzione di probabilità rispetto ai valori dell'attributo del nodo. </span><span title="The entries in a row always sum to 1.
">Le voci in una riga sempre somma a 1.<br /> </span><span title="Figure 6.21 shows a more complex network for the same problem, where three nodes (windy, temperature, and humidity) have two parents.">La
Figura 6.21 mostra una rete più complessa per lo stesso problema, in
cui tre nodi (ventoso, temperatura e umidità) hanno due genitori. </span><span title="Again, there is one column on the left for each parent and as many columns on the right as the attribute has values.">Di nuovo, c'è una colonna a sinistra per ogni genitore e come molte colonne a destra come l'attributo ha valori. </span><span title="Consider the first row of the table associated with the temperature node.">Si consideri la prima riga della tabella associata al nodo di temperatura. </span><span title="The left side gives a value for each parent attribute, play and outlook;">Il lato sinistro dà un valore per ogni attributo padre, gioco e outlook; </span><span title="the right gives a probability for each value of temperature.">Il diritto dà una probabilità per ogni valore della temperatura. </span><span title="For example, the first number (0.143) is the probability of temperature taking on the value hot, given that play and outlook have values yes and sunny, respectively.">Ad
esempio, il primo numero (0.143) è la probabilità di prendere la
temperatura sul valore caldo, dato che il gioco e le prospettive hanno
valori sì e soleggiati rispettivamente. </span><span title="How are the tables used to predict the probability of each class value for a given instance?">Come vengono utilizzate le tabelle per predire la probabilità di ciascun valore di classe per una determinata istanza? </span><span title="This turns out to be very easy, because we are assuming that there are no missing values.">Ciò risulta molto facile, perché supponiamo che non ci siano valori mancanti. </span><span title="The instance specifies a value for each attribute.">L'istanza specifica un valore per ogni attributo. </span><span title="For each node in the network, look up the probability of the node’s attribute value based on the row determined by its parents’ attribute values.">Per
ogni nodo della rete, cercare la probabilità del valore dell'attributo
del nodo in base alla riga determinata dai valori dei suoi attributi dei
genitori. </span><span title="Then just multiply all these probabilities together.">Quindi semplicemente moltiplicare tutte queste probabilità insieme.</span></span><br />
<br />
<span class="" id="result_box" lang="it"><span title="Then just multiply all these probabilities together.">Figure 6.21 Another Bayesian network for the weather data.<br /> </span></span><br />
<span class="" id="result_box" lang="it"><span title="For example, consider an instance with values outlook = rainy, temperature =
">Ad esempio, consideri un'istanza con valori outlook = rainy, temperature =</span><span title="cool, humidity = high, and windy = true.">Fresco, umidità = alta e vento = vero. </span><span title="To calculate the probability for play =
">Per calcolare la probabilità di gioco =</span><span title="no, observe that the network in Figure 6.21 gives probability 0.367 from node
">No, osserva che la rete in Figura 6.21 dà la probabilità 0.367 dal nodo</span><span title="play, 0.385 from outlook, 0.429 from temperature, 0.250 from humidity, and
">Giocare, 0,385 dalla prospettiva, 0,429 dalla temperatura, 0,250 da umidità e</span><span title="0.167 from windy.">0.167 da vento. </span><span title="The product is 0.0025.">Il prodotto è 0.0025. </span><span title="The same calculation for play = yes
">Lo stesso calcolo per il gioco = sì</span><span title="yields 0.0077.">Resa 0.0077. </span><span title="However, these are clearly not the final answer: the final proba-
">Tuttavia, queste non sono chiaramente la risposta definitiva: la</span><span title="bilities must sum to 1, whereas 0.0025 and 0.0077 don’t.">Le capacità devono essere pari a 1, mentre 0.0025 e 0.0077 non lo fanno. </span><span title="They are actually the
">Sono in realtà</span><span title="joint probabilities Pr[play = no,E] and Pr[play = yes,E], where E denotes all the
">Probabilità congiunte Pr [play = no, E] e Pr [play = yes, E], dove E indica tutte le probabilità</span><span title="evidence given by the instance’s attribute values.">Prove date dai valori dell'attributo dell'istanza. </span><span title="Joint probabilities measure the
">Le probabilità congiunte misurano la</span><span title="likelihood of observing an instance that exhibits the attribute values in E as well
">Probabilità di osservare un'istanza che mostra i valori degli attributi anche in E</span><span title="as the respective class value.">Come il rispettivo valore di classe. </span><span title="They only sum to 1 if they exhaust the space of all
">Soltano solo 1 se escludono lo spazio di tutti</span><span title="possible attribute–value combinations, including the class attribute.">Possibili combinazioni di attributo-valore, incluso l'attributo di classe. </span><span title="This is certainly not the case in our example.
">Questo non è certamente il caso nel nostro esempio.</span><span title="The solution is quite simple (we already encountered it in Section 4.2).
">La soluzione è abbastanza semplice (abbiamo già incontrato nella sezione 4.2).</span><span title="To obtain the conditional probabilities Pr [play = no |E] and Pr [play = yes |E],
">Per ottenere le probabilità condizionale Pr [play = no | E] e Pr [play = yes | E],</span><span title="normalize the joint probabilities by dividing them by their sum.">Normalizzare le probabilità congiunte dividendole per la loro somma. </span><span title="This gives
">Questo da</span><span title="probability 0.245 for play = no and 0.755 for play = yes.
">Probabilità 0.245 per il gioco = no e 0.755 per il gioco = sì.</span><span title="Just one mystery remains: why multiply all those probabilities together?">Rimane un solo mistero: perché moltiplicare tutte quelle probabilità insieme? </span><span title="It
">esso</span><span title="turns out that the validity of the multiplication step hinges on a single assump-
">Risulta che la validità della fase di moltiplicazione dipende da un singolo assunto-</span><span title="tion—namely that, given values for each of a node’s parents, knowing the values
">Cioè che, dato i valori per ciascuno dei genitori di un nodo, conoscendo i valori</span><span title="for any other ancestors does not change the probability associated with each of
">Per tutti gli altri antenati non cambia la probabilità associata a ciascuno di essi</span><span title="its possible values.">I suoi possibili valori. </span><span title="In other words, ancestors do not provide any information
">In altre parole, gli antenati non forniscono alcuna informazione</span><span title="about the likelihood of the node’s values over and above the information pro-
">Circa la probabilità dei valori del nodo al di là delle informazioni</span><span title="vided by the parents.">Dei genitori. </span><span title="This can be written">Questo può essere scritto</span></span><span class="" id="result_box" lang="it"><span title="Then just multiply all these probabilities together."><span class="" id="result_box" lang="it"><span title="This can be written"></span></span> </span></span><br />
..............<br />
Pr[node ancestors] = Pr[node parents],<br />
<br />
il quale deve contenere per tutti i valori dei nodi e degli attributi coinvolti. Nelle statistiche questa proprietà si chiama indipendenza condizionata. La moltiplicazione è valida purché ogni nodo sia condizionato indipendentemente dai nonni, dai nonni grandi e così via, data i genitori. Il passo di moltiplicazione risulta direttamente dalla regola della catena nella teoria della probabilità, che afferma che la probabilità congiunta di n attributi ai può essere scomposta in questo prodotto:<br />
......<br />
<span class="" id="result_box" lang="it"><span class="">La decomposizione tiene per qualsiasi ordine degli attributi.</span> <span class="">Poiché
la nostra rete Bayesiana è un grafico aciclico, i suoi nodi possono
essere ordinati per dare a tutti gli antenati di un indice di nodi a
meno di i.</span> <span class="">Poi, a causa dell'assunzione condizionale dell'indipendenza</span></span><br />
<span class="" id="result_box" lang="it"><span class="">.......</span></span><br />
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span title="which is exactly the multiplication rule that we applied previously.
">Che è esattamente la regola di moltiplicazione che abbiamo applicato in precedenza.</span><span title="The two Bayesian networks in Figure 6.20 and Figure 6.21 are fundamentally different.">Le due reti bayesiane in Figura 6.20 e Figura 6.21 sono fondamentalmente diverse. </span><span title="The first (Figure 6.20) makes stronger independence assumptions because for each of its nodes the set of parents is a subset of the corresponding set of parents in the second (Figure 6.21).">Il
primo (Figura 6.20) rende più severe le ipotesi di indipendenza perché
per ciascuno dei suoi nodi l'insieme dei genitori è un sottoinsieme del
gruppo corrispondente di genitori nel secondo (Figura 6.21). </span><span title="In fact, Figure 6.20 is almost identical to the simple Naïve Bayes classifier of Section 4.2.">Infatti, la Figura 6.20 è quasi identica al semplice classificatore Naïve Bayes della Sezione 4.2. </span><span title="(The probabilities are slightly different but only because each count has been initialized to 0.5 to avoid the zero-frequency problem.) The network in Figure 6.21 has more rows in the conditional probability tables and hence more parameters;">(Le
probabilità sono leggermente diverse ma solo perché ogni conteggio è
stato inizializzato a 0,5 per evitare il problema della frequenza a
zero.) La rete in Figura 6.21 ha più righe nelle tabelle di probabilità
condizionale e quindi più parametri; </span><span title="it may be a more accurate representation of the underlying domain.
">Può essere una rappresentazione più accurata del dominio sottostante.<br /> </span><span title="It is tempting to assume that the directed edges in a Bayesian network represent causal effects.">È tentato di supporre che i bordi diretti in una rete Bayesiana rappresentino effetti causali. </span><span title="But be careful!">Ma fa attenzione! </span><span title="In our case, a particular value of play may enhance the prospects of a particular value of outlook, but it certainly doesn’t cause it—it is more likely to be the other way round.">Nel
nostro caso, un particolare valore di gioco può migliorare le
prospettive di un particolare valore di prospettiva, ma certamente non
la causa, è più probabile che sia l'altro. </span><span title="Different Bayesian networks can be constructed for the same problem, representing exactly the same probability distribution.">Differenti
reti bayesiane possono essere costruite per lo stesso problema,
rappresentando esattamente la stessa distribuzione di probabilità. </span><span title="This is done by altering the way in which the joint probability distribution is factorized to exploit conditional independencies.">Questo
è fatto modificando il modo in cui la distribuzione congiunta di
probabilità è fattorizzata per sfruttare le indipendenze condizionali. </span><span title="The network whose directed edges model causal effects is often the simplest one with the fewest parameters.">La rete di cui i modelli diretti modellano gli effetti causali è spesso la più semplice con i minimi parametri. </span><span title="Hence, human experts who construct Bayesian networks for a particular domain often benefit by representing causal effects by directed edges.">Quindi,
esperti umani che costruiscono reti bayesiane per un determinato
dominio beneficiano spesso di rappresentare effetti causali dai bordi
diretti. </span><span title="However, when machine learning techniques are applied to induce models from data whose causal structure is unknown, all they can do is construct a network based on the correlations that are observed in the data.">Tuttavia,
quando vengono applicate tecniche di apprendimento automatico per
indurre modelli da dati la cui struttura causale è sconosciuta, è
possibile costruire una rete basata sulle correlazioni osservate nei
dati. </span><span title="Infer ring causality from correlation is always a dangerous business.">La causalità dell'anello inferiore dalla correlazione è sempre una attività pericolosa.</span></span></span></span><br />
<h4>
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span title="Infer ring causality from correlation is always a dangerous business."> Learning Bayesian networks</span></span></span></span></h4>
<h4>
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span title="Infer ring causality from correlation is always a dangerous business."></span></span></span></span></h4>
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span title="Infer ring causality from correlation is always a dangerous business."> </span></span> </span></span><span class="" id="result_box" lang="it"><span title="The way to construct a learning algorithm for Bayesian networks is to define two components: a function for evaluating a given network based on the data and a method for searching through the space of possible networks.">Il
modo per costruire un algoritmo di apprendimento per le reti bayesiane è
quello di definire due componenti: una funzione per valutare una
determinata rete basata sui dati e un metodo per la ricerca attraverso
lo spazio di possibili reti. </span><span title="The quality of a given network is measured by the probability of the data given the network.
">La qualità di una determinata rete viene misurata dalla probabilità dei dati forniti dalla rete.<br /> </span><span title="We calculate the probability that the network accords to each instance and multiply these probabilities together over all instances.">Calcolamo la probabilità che la rete corrisponda a ciascuna istanza e moltiplica queste probabilità in tutte le istanze. </span><span title="In practice, this quickly yields numbers too small to be represented properly (called arithmetic underflow), so we use the sum of the logarithms of the probabilities rather than their product.">In
pratica, questo produce rapidamente numeri troppo piccoli per essere
rappresentati correttamente (chiamato sottoflusso aritmetico), quindi
usiamo la somma dei logaritmi delle probabilità piuttosto che del loro
prodotto. </span><span title="The resulting quantity is the log-likelihood of the network given the data.
">La quantità risultante è la probabilità di log della rete dato i dati.<br /> </span><span title="Assume that the structure of the network—the set of edges—is given.">Supponiamo che sia data la struttura della rete, l'insieme dei bordi. </span><span title="It’s easy to estimate the numbers in the conditional probability tables: just compute the relative frequencies of the associated combinations of attribute values in the training data.">È
facile stimare i numeri nelle tabelle di probabilità condizionale:
basta calcolare le relative frequenze delle combinazioni associate di
valori degli attributi nei dati di addestramento. </span><span title="To avoid the zero-frequency problem each count is initialized with a constant as described in Section 4.2.">Per
evitare il problema della frequenza a zero, ogni conteggio viene
inizializzato con una costante come descritto nella sezione 4.2. </span><span title="For example, to find the probability that humidity = normal given that play = yes and temperature = cool (the last number of the third row of the humidity node's table in Figure 6.21), observe from Table 1.2 (page 11) that there are three">Per
esempio, per trovare la probabilità che l'umidità = normale in quanto
play = yes e temperature = cool (l'ultimo numero della terza riga della
tabella del nodo di umidità nella Figura 6.21), osservare dalla tabella
1.2 (pagina 11) che ci sono tre </span><span title="instances with this combination of attribute values in the weather data, and no instances with humidity = high and the same values for play and temperature.">Istanze
con questa combinazione di valori degli attributi nei dati meteo e
nessun caso con umidità elevata e gli stessi valori per il gioco e la
temperatura. </span><span title="Initializing the counts for the two values of humidity to 0.5 yields the probability (3 + 0.5) / (3 + 0 + 1) = 0.875 for humidity = normal.
">L'inizializzazione dei conteggi per i due valori di umidità a 0,5
produce la probabilità (3 + 0,5) / (3 + 0 + 1) = 0,875 per l'umidità =
normale.<br /> </span><span title="The nodes in the network are predetermined, one for each attribute (including the class).">I nodi della rete sono predeterminati, uno per ogni attributo (inclusa la classe). </span><span title="Learning the network structure amounts to searching through the space of possible sets of edges, estimating the conditional probability tables for each set, and computing the log-likelihood of the resulting network based on the data as a measure of the network’s quality.">Imparare
la struttura di rete significa cercare lo spazio di possibili set di
bordi, stimare le tabelle di probabilità condizionale per ciascun set e
calcolare la probabilità di log della rete risultante in base ai dati
come misura della qualità della rete. </span><span title="Bayesian network learning algorithms differ mainly in the way in which they search through the space of network structures.">Gli
algoritmi bayesiani di apprendimento della rete si differenziano
principalmente dal modo in cui cercano attraverso lo spazio delle
strutture di rete. </span><span title="Some algorithms are introduced below.">Alcuni algoritmi vengono illustrati di seguito.</span></span><br />
<span class="" id="result_box" lang="it"><span title="Some algorithms are introduced below."> </span></span><span class="" id="result_box" lang="it"><span title="Some algorithms are introduced below."><span class="" id="result_box" lang="it">C'è un avvertimento. <span class="">Se
la probabilità di log è massimizzata in base ai dati di addestramento,
sarà sempre meglio aggiungere altri bordi: la rete risultante
semplicemente sovrasta.</span> <span class="">Possono essere impiegati diversi metodi per combattere questo problema.</span> <span class="">Una possibilità è quella di utilizzare la convalida incrociata per stimare la bontà della forma.</span> <span class="">Un
secondo è quello di aggiungere una penalità per la complessità della
rete in base al numero di parametri, ovvero al numero totale di stime
indipendenti in tutte le tabelle di probabilità.</span> <span class="">Per
ogni tabella, il numero di probabilità indipendenti è il numero totale
di voci meno il numero di voci nell'ultima colonna che può essere
determinata dalle altre colonne perché tutte le righe devono essere
somme a 1. Let K sia il numero di parametri LL</span> <span class="">La probabilità di log e N il numero di istanze nei dati.</span> <span class="">Due misure popolari per valutare la qualità di una rete sono il Akaike Information Criterion (AIC),</span></span></span></span><span class="" id="result_box" lang="it"><span title="Some algorithms are introduced below."><span class="" id="result_box" lang="it"><span class=""> </span></span></span></span><br />
<br />
<span class="" id="result_box" lang="it"><span title="Some algorithms are introduced below."><span class="" id="result_box" lang="it"><span class=""> AIC score = - LL + K,<br /> </span></span></span></span><br />
<span class="" id="result_box" lang="it"><span class="">E la seguente metrica MDL basata sul principio MDL:</span></span><br />
<br />
<br />
<span class="" id="result_box" lang="it"><span class=""> MDL score = - LL + (K/2)log N .</span></span><br />
<span class="" id="result_box" lang="it"><span title="Some algorithms are introduced below."><span class="" id="result_box" lang="it"><span class=""> </span></span></span></span><br />
<span class="" id="result_box" lang="it"><span title="In both cases the log-likelihood is negated, so the aim is to minimize these scores.
">In entrambi i casi la probabilità di log è negata, quindi lo scopo è ridurre al minimo questi punteggi.</span><span title="A third possibility is to assign a prior distribution over network structures and find the most likely network by combining its prior probability with the probability accorded to the network by the data.">Una
terza possibilità è quella di assegnare una distribuzione preventiva
sulle strutture di rete e trovare la rete più probabile combinando la
sua probabilità precedente con la probabilità attribuita alla rete dai
dati. </span><span title="This is the “Bayesian” approach to network scoring.">Questo è l'approccio "bayesiano" al punteggio di rete. </span><span title="Depending on the prior distribution used, it can take various forms.">A seconda della distribuzione precedente utilizzata, può essere necessario varie forme. </span><span title="However, true Bayesians would average over all possible network structures rather than singling out a particular network for prediction.">Tuttavia,
i veri Bayesiani sarebbero mediamente su tutte le possibili strutture
di rete piuttosto che individuare una particolare rete per la
previsione. </span><span title="Unfortunately, this generally requires a great deal of computation.">Purtroppo, questo richiede generalmente una grande quantità di calcolo. </span><span title="A simplified approach is to average over all network structures that are substructures of a given network.">Un approccio semplificato consiste nella media di tutte le strutture di rete che sono sottostrutture di una determinata rete. </span><span title="It turns out that this can be implemented very efficiently by changing the method for calculating the conditional probability tables so that the resulting probability estimates implicitly contain information from all subnetworks.">Si
scopre che questo può essere implementato in modo molto efficiente
modificando il metodo per calcolare le tabelle di probabilità
condizionale in modo che le stime di probabilità risultanti contengano
implicitamente informazioni provenienti da tutte le sottoreti. </span><span title="The details of this approach are rather complex and will not be described here.
">I dettagli di questo approccio sono piuttosto complessi e non verranno descritti qui.<br /> </span><span title="The task of searching for a good network structure can be greatly simplified if the right metric is used for scoring.">Il
compito di cercare una buona struttura di rete può essere notevolmente
semplificato se viene utilizzata la metrica corretta per il punteggio. </span><span title="Recall that the probability of a single instance based on a network is the product of all the individual probabilities from the various conditional probability tables.">Ricordiamo
che la probabilità di un singolo istanza basata su una rete è il
prodotto di tutte le probabilità individuali delle varie tabelle di
probabilità condizionale. </span><span title="The overall probability of the dataset is the product of these products for all instances.">La probabilità complessiva del set di dati è il prodotto di questi prodotti per tutti i casi. </span><span title="Because terms in a product are interchangeable, the product can be rewritten to group together all factors relating to the same table.">Poiché
i termini in un prodotto sono intercambiabili, il prodotto può essere
riscritto per raggruppare tutti i fattori relativi alla stessa tabella. </span><span title="The same holds for the log-likelihood, using sums instead of products.">Lo stesso vale per la probabilità di log, utilizzando somme invece di prodotti. </span><span title="This means that the likelihood can be optimized separately for each node of the network.">Ciò significa che la probabilità può essere ottimizzata separatamente per ogni nodo della rete. </span><span title="This can be done by adding, or removing, edges from other nodes to the node that is being optimized—the only constraint is that cycles must not be introduced.">Ciò
può essere fatto aggiungendo o rimuovendo i bordi da altri nodi al nodo
che viene ottimizzato: l'unico vincolo è che i cicli non devono essere
introdotti. </span><span title="The same trick also works if a local scoring metric such as AIC or MDL is used instead of plain log-likelihood because the penalty term splits into several components, one for each node, and each node can be optimized independently.">Lo
stesso trucco funziona anche se si utilizza una metrica locale come AIC
o MDL anziché una probabilità di log semplice perché il termine di
penalità si divide in più componenti, uno per ogni nodo e ciascun nodo
può essere ottimizzato in modo indipendente.</span></span><br />
<h4>
<span class="" id="result_box" lang="it"><span title="The same trick also works if a local scoring metric such as AIC or MDL is used instead of plain log-likelihood because the penalty term splits into several components, one for each node, and each node can be optimized independently."> Specific algorithms</span></span></h4>
<h4>
<span class="" id="result_box" lang="it"><span title="The same trick also works if a local scoring metric such as AIC or MDL is used instead of plain log-likelihood because the penalty term splits into several components, one for each node, and each node can be optimized independently."></span></span></h4>
<span class="" id="result_box" lang="it"><span title="The same trick also works if a local scoring metric such as AIC or MDL is used instead of plain log-likelihood because the penalty term splits into several components, one for each node, and each node can be optimized independently."> </span></span><span class="" id="result_box" lang="it"><span title="Now we move on to actual algorithms for learning Bayesian networks.">Ora ci trasferiamo ad algoritmi reali per l'apprendimento delle reti bayesiane. </span><span title="One simple and very fast learning algorithm, called K2, starts with a given ordering of the attributes (i.e., nodes).">Un algoritmo di apprendimento semplice e veloce, chiamato K2, inizia con un determinato ordine degli attributi (cioè nodi). </span><span title="Then it processes each node in turn and greedily considers adding edges from previously processed nodes to the current one.">Successivamente,
elabora ogni nodo a sua volta e consapevolmente considera l'aggiunta di
bordi dai nodi precedentemente elaborati alla corrente. </span><span title="In each step it adds the edge that maximizes the network’s score.">In ogni fase aggiunge il bordo che massimizza il punteggio della rete. </span><span title="When there is no further improvement, attention turns to the next node.">Quando non ci sono ulteriori miglioramenti, l'attenzione si rivolge al nodo successivo. </span><span title="As an additional mechanism for overfitting avoidance, the number of parents for each node can be restricted to a predefined maximum.">Come
un meccanismo aggiuntivo per evitare l'overfitting, il numero di
genitori per ogni nodo può essere limitato ad un massimo predefinito. </span><span title="Because only edges from previously processed nodes are considered and there is a fixed ordering, this procedure cannot introduce cycles.">Poiché
si considerano solo i bordi dei nodi precedentemente elaborati e vi è
un ordine fisso, questa procedura non può introdurre cicli. </span><span title="However, the result depends on the initial ordering, so it makes sense to run the algorithm several times with different random orderings.
">Tuttavia, il risultato dipende dall'ordine iniziale, quindi è
opportuno eseguire più volte l'algoritmo con diverse ordinazioni
casuali.<br /> </span><span title="The Naïve Bayes classifier is a network with an edge leading from the class attribute to each of the other attributes.">Il classificatore Naïve Bayes è una rete con un bordo che porta dall'attributo di classe ad ognuno degli altri attributi. </span><span title="When building networks for classification, it sometimes helps to use this network as a starting point for the search.">Quando costruisce reti per la classificazione, talvolta aiuta a utilizzare questa rete come punto di partenza per la ricerca. </span><span title="This can be done in K2 by forcing the class variable to be the first one in the ordering and initializing the set of edges appropriately.">Questo
può essere fatto in K2 forzando la variabile di classe come la prima
nell'ordinazione e inizializzando in modo appropriato l'insieme dei
bordi.</span></span><br />
<span class="" id="result_box" lang="it"><span title="The same trick also works if a local scoring metric such as AIC or MDL is used instead of plain log-likelihood because the penalty term splits into several components, one for each node, and each node can be optimized independently."> U</span></span><span class="" id="result_box" lang="it"><span title="Another potentially helpful trick is to ensure that every attribute in the data is in the Markov blanket of the node that represents the class attribute.">n
altro trucco potenzialmente utile è garantire che ogni attributo nei
dati sia nella coperta di Markov del nodo che rappresenta l'attributo di
classe. </span><span title="A node’s Markov blanket includes all its parents, children, and children’s parents.">La coperta di Markov di un nodo comprende tutti i genitori, i figli ei genitori dei figli. </span><span title="It can be shown that a node is conditionally independent of all other nodes given values for the nodes in its Markov blanket.">Si
può dimostrare che un nodo è condizionatamente indipendente da tutti
gli altri nodi dati i valori per i nodi nella sua coperta Markov. </span><span title="Hence, if a node is absent from the class attribute’s Markov blanket, its value is completely irrelevant to the classification.">Quindi,
se un nodo è assente dalla coperta Markov dell'attributo di classe, il
suo valore è completamente irrilevante per la classificazione. </span><span title="Conversely, if K2 finds a network that does not include a relevant attribute in the class node’s Markov blanket, it might help to add an edge that rectifies this shortcoming.">Viceversa,
se K2 trova una rete che non include un attributo rilevante nella
coperta di Markov del nodo di classe, potrebbe contribuire a aggiungere
un bordo che rettifica questa mancanza. </span><span title="A simple way of doing this is to add an edge from the attribute’s node to the class node or from the class node to the attribute’s node, depending on which option avoids a cycle.
">Un modo semplice per farlo è aggiungere un margine dal nodo
dell'attributo al nodo di classe o dal nodo di classe al nodo
dell'attributo, a seconda di quale opzione evita un ciclo.<br /> </span><span title="A more sophisticated but slower version of K2 is not to order the nodes but to greedily consider adding or deleting edges between arbitrary pairs of nodes (all the while ensuring acyclicity, of course).">Una
versione più sofisticata ma più lenta di K2 non è quella di ordinare i
nodi ma di considerare avidamente l'aggiunta o la cancellazione dei
bordi tra coppie di nodi arbitrari (ovviamente assicurando l'aciclicità,
ovviamente). </span><span title="A further step is to consider inverting the direction of existing edges as well.">Un ulteriore passo è quello di considerare invertendo anche la direzione dei bordi esistenti. </span><span title="As with any greedy algorithm, the resulting network only represents a local maximum of the scoring function: it is always advisable to run such algorithms several times with different random initial configurations.">Come
con qualsiasi algoritmo avido, la rete risultante rappresenta solo un
massimo locale della funzione di punteggio: è sempre consigliabile
eseguire tali algoritmi più volte con diverse configurazioni iniziali
casuali. </span><span title="More sophisticated optimization strategies such as simulated annealing, tabu search, or genetic algorithms can also be used.">Possono
essere utilizzate anche strategie di ottimizzazione più sofisticate
come la ricottura simulata, la ricerca tabù o gli algoritmi genetici.</span></span><br />
<span class="" id="result_box" lang="it"><span title="More sophisticated optimization strategies such as simulated annealing, tabu search, or genetic algorithms can also be used."> </span></span><span class="" id="result_box" lang="it"><span title="More sophisticated optimization strategies such as simulated annealing, tabu search, or genetic algorithms can also be used."><span class="" id="result_box" lang="it">Un altro buon algoritmo di
apprendimento per i classificatori della rete Bayesiana è chiamato
albero aumento Naïve Bayes (TAN). Come il nome implica, prende il
classificatore Naïve Bayes e aggiunge i bordi ad esso. L'attributo di
classe è il singolo genitore di ogni nodo di una rete Naïve Bayes: TAN
considera l'aggiunta di un secondo genitore a ciascun nodo. Se il nodo
di classe e tutti i bordi corrispondenti sono esclusi dalla
considerazione e supponendo che esista esattamente un nodo a cui non
viene aggiunto un secondo genitore, il classificatore risultante
presenta una struttura ad albero radicata nel nodo senza genitore:
questo è il nome del nome . Per questo tipo di rete limitato esiste un
efficiente algoritmo per trovare il set di bordi che massimizza la
probabilità della rete basata sul calcolo dell'albero di spanzione
massimo ponderato della rete. Questo algoritmo è lineare nel numero di
istanze e quadratiche nel numero di attributi.<br /> Tutte le metriche
di punteggio che abbiamo descritto finora sono probabilmente basate nel
senso che sono progettate per massimizzare la probabilità congiunta Pr
[a1, a2,. . ., Un] per ogni istanza. Tuttavia, nella classificazione,
ciò che vogliamo veramente massimizzare è la probabilità condizionale
della classe dato i valori degli altri attributi, ovvero la probabilità
condizionale.Purtroppo non esiste una soluzione a forma di chiusa per le
stime di probabilità massima di probabilità condizionale che sono
necessarie per le tabelle in una rete Bayesiana. D'altra parte, il
calcolo della probabilità condizionale per una determinata rete e il set
di dati è semplice - dopotutto, questo è ciò che fa la regressione
logistica. Di conseguenza è stato proposto di utilizzare stime standard
di probabilità di probabilità di massima nella rete, ma la probabilità
condizionale di valutare una particolare struttura di rete.</span></span></span><br />
<span class="" id="result_box" lang="it"><span title="More sophisticated optimization strategies such as simulated annealing, tabu search, or genetic algorithms can also be used."><span class="" id="result_box" lang="it"> </span></span></span><span class="" id="result_box" lang="it"><span title="More sophisticated optimization strategies such as simulated annealing, tabu search, or genetic algorithms can also be used."><span class="" id="result_box" lang="it"><span class="" id="result_box" lang="it"><span class="">Un altro modo di
utilizzare le reti bayesiane per la classificazione è quello di
costruire una rete separata per ciascun valore di classe, basata sui
dati relativi a quella classe, e combinare le previsioni usando la
regola di Bayes.</span> <span class="">L'insieme delle reti è chiamato multinet Bayesiano.</span> <span class="">Per
ottenere una previsione per un determinato valore di classe, prendere
la probabilità della rete corrispondente e moltiplicarla per la
probabilità precedente della classe.</span> <span class="">Fai questo per ogni classe e normalizza il risultato come abbiamo fatto in precedenza.</span> <span class="">In questo caso non usiamo la probabilità condizionale di imparare la rete per ogni valore di classe.</span><br /> <span class="">Tutti gli algoritmi di apprendimento di rete introdotti in precedenza sono basati sul punteggio.</span> <span class="">Una
strategia diversa, che non ci spiegheremo qui, è quella di raggruppare
insieme una rete attraverso la sperimentazione di singole asserzioni di
indipendenza condizionale basate su sottoinsiemi degli attributi.</span> <span class="">Questo è noto come struttura di apprendimento da test di indipendenza condizionale.</span></span></span></span></span><br />
<h4>
<span class="" id="result_box" lang="it"><span title="More sophisticated optimization strategies such as simulated annealing, tabu search, or genetic algorithms can also be used."><span class="" id="result_box" lang="it"><span class="" id="result_box" lang="it"><span class=""> </span></span></span></span></span><span class="" id="result_box" lang="it"><span title="More sophisticated optimization strategies such as simulated annealing, tabu search, or genetic algorithms can also be used."><span class="" id="result_box" lang="it"><span class="" id="result_box" lang="it"><span class=""><span class="short_text" id="result_box" lang="it"><span class="">Strutture di dati per un apprendimento veloce</span></span> </span></span> </span> </span></span></h4>
<span class="" id="result_box" lang="it"><span title="Some algorithms are introduced below."><span class="" id="result_box" lang="it"><span class=""> </span></span></span></span><span class="" id="result_box" lang="it"><span title="Learning Bayesian networks involves a lot of counting.">L'apprendimento delle reti bayesiane comporta un sacco di conteggio. </span><span title="For each network structure considered in the search, the data must be scanned afresh to obtain the counts needed to fill out the conditional probability tables.">Per
ogni struttura di rete considerata nella ricerca, i dati devono essere
nuovamente scansionati per ottenere i conteggi necessari per compilare
le tabelle di probabilità condizionale. </span><span title="Instead, could they be stored in a data structure that eliminated the need for scanning the data over and over again?">Invece,
potrebbero essere memorizzati in una struttura di dati che ha eliminato
la necessità di eseguire la scansione dei dati più e più volte? </span><span title="An obvious way is to precompute the counts and store the nonzero ones in a table—say, the hash table mentioned in Section 4.5.">Un
modo ovvio è precompattare i conteggi e memorizzare i nonzero in una
tabella - ad esempio, la tabella hash menzionata nella sezione 4.5. </span><span title="Even so, any nontrivial dataset will have a huge number of nonzero counts.
">Anche in questo caso, qualsiasi set di dati non triviale avrà un numero enorme di conteggi non zero.</span><span title="Again, consider the weather data from Table 1.2 (page 11)."> Ancora una volta, prendere in considerazione i dati meteorologici dalla tabella 1.2 (pagina 11). </span><span title="There are five attributes, two with three values and three with two values.">Ci sono cinque attributi, due con tre valori e tre con due valori. </span><span title="This gives 4 * 4 * 3 * 3 * 3 = 432 possible counts.">Questo dà 4 * 4 * 3 * 3 * 3 = 432 possibili conteggi. </span><span title="Each component of the product corresponds to an attribute, and its contribution to the product is one more than the number of its values because the attribute may be missing from the count.">Ogni
componente del prodotto corrisponde ad un attributo e il suo contributo
al prodotto è più che il numero dei suoi valori perché l'attributo
potrebbe mancare dal conteggio. </span><span title="All these counts can be calculated by treating them as item sets, as explained in Section 4.5, and setting the minimum coverage to one.">Tutti
questi conteggi possono essere calcolati trattandoli come set di
elementi, come spiegato nella sezione 4.5, e impostando la copertura
minima a uno. </span><span title="But even without storing counts that are zero, this simple scheme runs into memory problems very quickly.">Ma anche senza memorizzare i conteggi che sono zero, questo semplice schema corre molto rapidamente nei problemi di memoria.</span></span><br />
<span class="" id="result_box" lang="it"><span title="Some algorithms are introduced below."><span class="" id="result_box" lang="it"><span class=""> </span></span></span></span><br />
<span class="" id="result_box" lang="it"><span title="It turns out that the counts can be stored effectively in a structure called an all-dimensions (AD) tree, which is analogous to the kD-trees used for 'nearest-neighbor' search described in Section 4.7.">Risulta
che i conteggi possono essere memorizzati in modo efficace in una
struttura denominata albero di tutte le dimensioni (AD), che è analoga
agli alberi kD utilizzati per la ricerca "vicina più vicina" descritta
nella sezione 4.7. </span><span title="For simplicity, we illustrate this using a reduced version of the weather data that only has the attributes humidity, windy, and play.">Per
semplicità, lo illustriamo usando una versione ridotta dei dati meteo
che ha solo l'umidità, il ventoso e il gioco degli attributi. </span><span title="Figure 6.22(a) summarizes the data.">La Figura 6.22 (a) riepiloga i dati. </span><span title="The number of possible counts is 3 ¥ 3 ¥ 3 = 27, although only 8 of them are shown.">Il numero di possibili conteggi è di 3 * 3 * 3 = 27, anche se solo 8 di essi sono mostrati. </span><span title="For example, the count for play = no is 5 (count them!).
">Ad esempio, il conteggio per il gioco = no è 5 (contano!).<br /> </span><span title="Figure 6.22(b) shows an AD tree for this data.">La Figura 6.22 (b) mostra un albero AD per questi dati. </span><span title="Each node says how many instances exhibit the attribute values that are tested along the path from the root to that node.">Ogni nodo dice quante istanze mostrano i valori degli attributi che vengono testati lungo il percorso dalla radice a quel nodo. </span><span title="For example, the leftmost leaf says that there is one instance with values humidity = normal, windy = true, and play = no, and the rightmost leaf says that there are five instances with play = no.
">Ad esempio, la foglia più a sinistra dice che esiste un'istanza con
valori umidità = normale, ventoso = vero e play = no, e la foglia più a
destra dice che ci sono cinque istanze con play = no.<br /> </span><span title="It would be trivial to construct a tree that enumerates all 27 counts explicitly.">Sarebbe banale costruire un albero che enumerasse esplicitamente tutti i 27 conteggi. </span><span title="However, that would gain nothing over a plain table and is obviously not what the tree in Figure 6.22(b) does, because it contains only 8 counts.">Tuttavia,
ciò non otterrebbe nulla su un tavolo semplice e non è ovviamente che
cosa fa l'albero nella Figura 6.22 (b), perché contiene solo 8 conteggi.
</span><span title="There is, for example, no branch that tests humidity = high.">Esistono, per esempio, nessun ramo che esegue la prova dell'umidità = alta. </span><span title="How was the tree constructed, and how can all counts be obtained from it?">Come è stato costruito l'albero, e come possono essere ottenuti tutti i conti?</span></span><br />
<span class="" id="result_box" lang="it"><span title="Some algorithms are introduced below."><span class="" id="result_box" lang="it"><span class=""> </span></span> </span></span><br />
<span class="" id="result_box" lang="it"><span title="Some algorithms are introduced below."> Figure 6.22 The weather data: (a) reduced version and (b) corresponding AD tree.<br /> </span></span><br />
<span class="" id="result_box" lang="it"><span title="Some algorithms are introduced below."> </span></span><span class="" id="result_box" lang="it"><span title="Some algorithms are introduced below."><span class="" id="result_box" lang="it"><span title="Assume that each attribute in the data has been assigned an index.">Supponiamo che ogni attributo nei dati sia stato assegnato un indice. </span><span title="In the reduced version of the weather data we give humidity index 1, windy index 2, and play index 3. An AD tree is generated by expanding each node corresponding to an attribute i with the values of all attributes that have indices j > i,">Nella
versione ridotta dei dati meteo forniamo indice di umidità 1, indice
ventoso 2 e indice di gioco 3. Un albero AD viene generato espandendo
ogni nodo corrispondente ad un attributo i con i valori di tutti gli
attributi che hanno indici j> i, </span><span title="with two important restrictions: the most populous expansion for each attribute is omitted (breaking ties arbitrarily) as are expansions with counts that are zero.
">Con due importanti restrizioni: l'espansione più popolosa per ogni
attributo viene omessa (rottura dei legami arbitrariamente), come sono
le espansioni con conteggi che sono zero.<br /> </span><span title="The root node is given index 0, so for it all attributes are expanded, subject to the same restrictions.">Il nodo radice viene dato indice 0, per cui tutti gli attributi sono espansi, soggetti alle stesse restrizioni. </span><span title="For example, Figure 6.22(b) contains no expansion for windy = false from the root node because with eight instances it is the most populous expansion: the value false occurs more often in the data than the value true.">Ad
esempio, la Figura 6.22 (b) non contiene alcuna espansione per windy =
false dal nodo principale poiché in otto casi è l'espansione più
popolata: il valore false si verifica più spesso nei dati rispetto al
valore vero. </span><span title="Similarly, from the node labeled humidity = normal there is no expansion for windy = false because false is the most common value for windy among all instances with humidity = normal.">Allo
stesso modo, dal nodo emesso con umidità = normale non esiste
un'espansione per windy = false, perché false è il valore più comune per
ventose tra tutti i casi con umidità = normale. </span><span title="In fact, in our example the second restriction—namely, that expansions with zero counts are omitted—never kicks in because the first restriction precludes any path that starts with the tests humidity = normal and windy = false, which is the only way to reach">Infatti,
nel nostro esempio, la seconda restrizione - vale a dire, che le
espansioni con zero conteggi sono omesse - non scatta mai perché la
prima restrizione preclude qualsiasi percorso che inizia con le prove
umidità = normale e ventoso = falso, che è l'unico modo per raggiungere </span><span title="the solitary zero in Figure 6.22(a).
">Lo zero solitario nella Figura 6.22 (a).<br /> </span><span title="Each node of the tree represents the occurrence of a particular combination of attribute values.">Ogni nodo dell'albero rappresenta il verificarsi di una particolare combinazione di valori di attributo. </span><span title="It is straightforward to retrieve the count for a combination that occurs in the tree.">È semplice da recuperare il conteggio per una combinazione che si verifica nell'albero. </span><span title="However, the tree does not explicitly represent many nonzero counts because the most populous expansion for each attribute is omitted.">Tuttavia,
l'albero non rappresenta esplicitamente molti conteggi non-zero, poiché
l'espansione più popolosa per ogni attributo viene omessa. </span><span title="For example, the combination humidity = high and play = yes occurs three times in the data but has no node in the tree.">Ad esempio, l'umidità di combinazione = alta e play = yes si verifica tre volte nei dati ma non ha un nodo nell'albero. </span><span title="Nevertheless, it turns out that any count can be calculated from those that the tree stores explicitly.">Tuttavia, si scopre che ogni conteggio può essere calcolato da quelli che l'albero memorizza esplicitamente.</span></span></span></span><br />
<span class="" id="result_box" lang="it"><span title="Some algorithms are introduced below."><span class="" id="result_box" lang="it"><span title="Nevertheless, it turns out that any count can be calculated from those that the tree stores explicitly."> </span></span></span></span><span class="" id="result_box" lang="it"><span title="Some algorithms are introduced below."><span class="" id="result_box" lang="it"><span title="Nevertheless, it turns out that any count can be calculated from those that the tree stores explicitly."><span class="" id="result_box" lang="it"><span title="Here’s a simple example.">Ecco un semplice esempio. </span><span title="Figure 6.22(b) contains no node for humidity = normal, windy = true, and play = yes.">Figura 6.22 (b) non contiene nodi per umidità = normale, ventoso = vero e play = yes. </span><span title="However, it shows three instances with humidity = normal and windy = true, and one of them has a value for play that is different from yes.">Tuttavia, mostra tre istanze con umidità = normale e vento = vero, e uno di essi ha un valore per il gioco che è diverso da sì. </span><span title="It follows that there must be two instances for play = yes.">Ne consegue che ci devono essere due istanze per il gioco = sì. </span><span title="Now for a trickier case: how many times does humidity = high, windy = true, and play = no occur?">Ora per un caso più trickier: quante volte l'umidità è alta, vento = vero e giocare = non si verifica? </span><span title="At first glance it seems impossible to tell because there is no branch for humidity = high.">A prima vista sembra impossibile dirlo perché non esiste un ramo per l'umidità = alta. </span><span title="However, we can deduce the number by calculating the count for windy = true and play = no (3) and subtracting the count for humidity = normal, windy = true, and play = no (1).">Tuttavia,
possiamo dedurre il numero calcolando il conteggio per windy = true e
play = no (3) e sottraendo il conteggio per umidità = normale, windy =
true e play = no (1). </span><span title="This gives 2, the correct value.
">Questo dà 2, il valore corretto.<br /> </span><span title="This idea works for any subset of attributes and any combination of attribute values, but it may have to be applied recursively.">Questa
idea funziona per qualsiasi sottoinsieme di attributi e qualsiasi
combinazione di valori di attributo, ma può essere necessario ricorrere
in modo ricorsivo. </span><span title="For example, to obtain the count for humidity = high, windy = false, and play = no, we need the count for windy = false and play = no and the count for humidity = normal, windy = false, and play = no.">Ad
esempio, per ottenere il conteggio per l'umidità = alto, ventoso =
falso, e giocare = no, abbiamo bisogno del conteggio per windy = false e
play = no e il conteggio per l'umidità = normale, windy = false e play =
no. </span><span title="We obtain the former by subtracting the count for windy = true and play = no (3) from the count for play = no (5), giving 2, and the latter by subtracting the count for humidity = normal, windy = true, and">Otteniamo
il primo sottraendo il conteggio per il windy = true e play = no (3)
dal conteggio per play = no (5), dando 2 e il secondo sottraendo il
conteggio per l'umidità = normale, vento = true e </span><span title="play = no (1) from the count for humidity = normal and play = no (1), giving 0. Thus there must be 2 - 0 = 2 instances with humidity = high, windy = false, and play = no, which is">Giocare
= no (1) dal conteggio per umidità = normale e giocare = no (1), dando
0. Così devono essere 2 - 0 = 2 istanze con umidità = alto, ventoso =
falso e play = no </span><span title="correct.
">corretta.<br /> </span><span title="AD trees only pay off if the data contains many thousands of instances.">Gli alberi AD pagano solo se i dati contengono migliaia di istanze. </span><span title="It is pretty obvious that they do not help on the weather data.">È abbastanza ovvio che non aiuta i dati meteo. </span><span title="The fact that they yield no benefit on small datasets means that, in practice, it makes little sense to expand the tree all the way down to the leaf nodes.">Il
fatto che non producano vantaggi sui piccoli set di dati significa che,
in pratica, ha poco senso espandere l'albero fino al nodo delle foglie.
</span><span title="Usually, a cutoff parameter k is employed, and nodes covering fewer than k instances hold a list of pointers to these instances rather than a list of pointers to other nodes.">Di
solito viene utilizzato un parametro di cutoff k e nodi che coprono
meno di k istanze dispongono di un elenco di puntatori a queste istanze
piuttosto che un elenco di puntatori ad altri nodi. </span><span title="This makes the trees smaller and more efficient to use.">Ciò rende gli alberi più piccoli e più efficienti da utilizzare.</span></span></span></span></span></span><br />
<h4>
<span class="" id="result_box" lang="it"><span title="Some algorithms are introduced below."><span class="" id="result_box" lang="it"><span title="Nevertheless, it turns out that any count can be calculated from those that the tree stores explicitly."><span class="" id="result_box" lang="it"><span title="This makes the trees smaller and more efficient to use."> Discusione</span></span></span></span></span></span></h4>
<span class="" id="result_box" lang="it"><span title="Some algorithms are introduced below."><span class="" id="result_box" lang="it"><span title="Nevertheless, it turns out that any count can be calculated from those that the tree stores explicitly."><span class="" id="result_box" lang="it"><span title="This makes the trees smaller and more efficient to use."><span class="" id="result_box" lang="it"><span title="The K2 algorithm for learning Bayesian networks was introduced by Cooper and Herskovits (1992).">L'algoritmo K2 per l'apprendimento delle reti bayesiane è stato introdotto da Cooper e Herskovits (1992). </span><span title="Bayesian scoring metrics are covered by Heckerman et al.">Le metriche di punteggio bayesiano sono coperte da Heckerman et al. </span><span title="(1995).">(1995). </span><span title="The TAN algorithm was introduced by Friedman et al.">L'algoritmo TAN è stato introdotto da Friedman et al. </span><span title="(1997), who also describes multinets.">(1997), che descrive anche multineti. </span><span title="Grossman and Domingos (2004) show how to use the conditional likelihood for scoring networks.">Grossman e Domingos (2004) mostrano come utilizzare la probabilità condizionale per valutare le reti. </span><span title="Guo and Greiner (2004) present an extensive comparison of scoring metrics for Bayesian network classifiers.">Guo e Greiner (2004) presentano un ampio confronto di metriche di punteggio per i classificatori della rete Bayesiana. </span><span title="Bouckaert (1995) describes averaging over subnetworks.">Bouckaert (1995) descrive la mediazione sulle sottoreti. </span><span title="AD trees were introduced and analyzed by Moore and Lee (1998)—the same Andrew Moore whose work on kD-trees and ball trees was mentioned in Section 4.9.">Alberi
AD sono stati introdotti e analizzati da Moore e Lee (1998) - lo stesso
Andrew Moore il cui lavoro su alberi di kD e alberi a sfera è stato
menzionato nella Sezione 4.9. </span><span title="In a more recent paper, Komarek and Moore (2000) introduce AD trees for incremental learning that are also more efficient for datasets with many attributes.
">In un articolo più recente, Komarek e Moore (2000) introducono
alberi AD per l'apprendimento incrementale che sono anche più efficienti
per i set di dati con molti attributi.<br /> </span><span title="We have only skimmed the surface of the subject of learning Bayesian networks.">Abbiamo solo scremato la superficie del tema dell'apprendimento delle reti bayesiane. </span><span title="We left open questions of missing values, numeric attributes, and hidden attributes.">Abbiamo lasciato domande aperte di valori mancanti, attributi numerici e attributi nascosti. </span><span title="We did not describe how to use Bayesian networks for regression tasks.">Non abbiamo descritto come utilizzare le reti bayesiane per attività di regressione. </span><span title="Bayesian networks are a special case of a wider class of statistical models called graphical models, which include networks with undirected edges (called Markov networks).">Le
reti bayesiane sono un caso speciale di una più ampia classe di modelli
statistici chiamati modelli grafici, che comprendono reti con bordi non
diretti (chiamati reti Markov). </span><span title="Graphical models are attracting great attention in the machine learning community today.">I modelli grafici stanno attirando grande attenzione nella comunità di apprendimento macchina oggi.</span></span> </span></span> </span></span> </span></span> <br />
<h3>
<span class="" id="result_box" lang="it"><span title="Smoothing, if it is done at all, must be performed after the rule set has been generated."><br /></span></span></h3>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6261258921963124217.post-5767011859918285042017-06-07T05:29:00.001-07:002017-06-07T05:29:43.913-07:00Pratical Maching Learning 1<h4>
<span class="" id="result_box" lang="it"><span class="short_text" id="result_box" lang="it"><span class="">Che cos'è un concetto?</span></span></span><span class="" id="result_box" lang="it"> </span></h4>
<span class="" id="result_box" lang="it">Quattro stili fondamentali di apprendimento appaiono nelle applicazioni di data mining. Nell'apprendimento
della classificazione, lo schema di apprendimento è presentato con un
insieme di esempi classificati da cui "si prevede che impari un modo" di
classificare esempi invisibili. Nell'assollare
l'associazione, si cerca qualsiasi associazione tra le caratteristiche,
non solo quelle che prevedono un valore di classe particolare. Nel raggruppamento, sono ricercati gruppi di esempi che appartengono insieme. <span class="">Nella previsione numerica, il risultato da prevedere non è una classe discreta ma una quantità numerica.</span> <span class="">Indipendentemente
dal tipo di apprendimento coinvolto, chiamiamo la cosa da imparare 'il
concetto e l'output' prodotto da un sistema di apprendimento 'la
descrizione concettuale.</span></span><br />
<br />
<span class="" id="result_box" lang="it"><span class=""> </span></span><span class="" id="result_box" lang="it">La maggior parte degli esempi del Capitolo 1 sono problemi di classificazione. <span class="">I
dati meteorologici (tabelle 1.2 e 1.3) presentano un insieme di giorni
insieme ad una decisione per ognuno su come giocare o no.</span> <span class="">Il problema è imparare a classificare i nuovi giorni come gioco o non giocare.</span> <span class="">Dato
i dati delle lenti a contatto (tabella 1.1), il problema è quello di
imparare a decidere su una raccomandazione di un obiettivo per un nuovo
paziente o più precisamente, in quanto ogni possibile combinazione di
attributi è presente nei dati, il problema è imparare un modo di</span> Riassumendo i dati forniti.</span><span class="" id="result_box" lang="it"> </span><span class="" id="result_box" lang="it">Per gli iridi (Tabella
1.4), il problema è quello di imparare a decidere se un nuovo fiore
dell'iride è setosa, versicolor o virginica, data la sua lunghezza e
larghezza sepalese e la lunghezza e la larghezza del petalo. Per
i dati relativi ai negoziati del lavoro (tabella 1.6), il problema è
"decidere se" un nuovo contratto sia accettabile o no, sulla base della
sua durata; Aumento salariale nel primo, secondo e terzo anno; L'adeguamento del costo della vita; <span class="">e così via.</span></span><br />
<br />
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class="">L'apprendimento
della classificazione è talvolta chiamato supervisione perché, in un
certo senso, il metodo opera sotto la supervisione fornendo l'esito
effettivo per ciascuno degli esempi di allenamento: il gioco o non
giocare giudizio, la raccomandazione dell'obiettivo, il tipo di iride,</span> <span class="">L'accettabilità del contratto di lavoro.</span> <span class="">Questo risultato è chiamato la classe dell'esempio.</span> <span class="">Il
successo dell'apprendimento della classificazione può essere giudicato
provando la descrizione del concetto che viene appreso su un insieme
indipendente di dati di prova per i quali le vere classificazioni sono
note ma non messe a disposizione della macchina.</span> <span class="">Il tasso di successo sui dati di prova fornisce una misura oggettiva di quanto sia stato appreso il concetto.</span> <span class="">In
molte pratiche applicazioni di data mining, il successo viene misurato
in modo più soggettivo in termini di come accettabile la descrizione
appresa - come le regole o l'albero decisionale - siano a un utente
umano.</span></span> </span></span><br />
<br />
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span title="Most of the examples in Chapter 1 can be used equally well for association learning, in which there is no specified class.">La
maggior parte degli esempi del Capitolo 1 può essere utilizzata
altrettanto bene per l'apprendimento associativo, in cui non esiste una
classe specificata. </span><span title="Here, the problem is to discover any structure in the data that is “interesting.” Some association rules for the weather data were given in Section 1.2.">Qui,
il problema è quello di scoprire qualsiasi struttura nei dati
"interessanti". Alcune regole di associazione per i dati meteo sono
state fornite nella Sezione 1.2. </span><span title="Association rules differ from classification rules in two ways: they can “predict” any attribute, not just the class, and they can predict more than one attribute’s value at a time.">Le
regole di associazione differiscono dalle regole di classificazione in
due modi: possono "predire" qualsiasi attributo, non solo la classe, e
possono prevedere più valori di un attributo alla volta. </span><span title="Because of this there are far more association rules than classification rules, and the challenge is to avoid being swamped by them.">A
causa di questo ci sono molto più regole di associazione rispetto alle
regole di classificazione, e la sfida è evitare di essere inondati da
loro. </span><span title="For this reason, association rules are often limited to those that apply to a certain minimum number of examples - say 80% of the dataset - and have greater than a certain minimum accuracy level say 95% accurate.">Per
questo motivo, le regole di associazione sono spesso limitate a quelle
che si applicano ad un certo numero minimo di esempi - ad esempio l'80%
del set di dati - e che hanno un livello preciso minimo di precisione
dire 95% accurate. </span><span title="Even then, 'there are usually 'lots of them, and they have to be examined manually to determine whether they are meaningful or not.">Anche
allora, "ci sono di solito" un sacco di essi, e devono essere esaminati
manualmente per determinare se sono significativi o no. </span><span title="Association rules usually involve only nonnumeric attributes: thus you wouldn’t normally look for association rules in the iris dataset.">Le
regole di associazione di solito coinvolgono solo attributi non
numerici: in questo modo normalmente non si cercano regole di
associazione nel dataset dell'iride.</span></span></span></span><br />
<br />
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span title="Association rules usually involve only nonnumeric attributes: thus you wouldn’t normally look for association rules in the iris dataset."> </span></span></span></span><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span title="Association rules usually involve only nonnumeric attributes: thus you wouldn’t normally look for association rules in the iris dataset."><span class="" id="result_box" lang="it">Quando non esiste una
classe specificata, il raggruppamento viene utilizzato per raggruppare
elementi che sembrano cadere naturalmente insieme. Immagina una versione dei dati dell'iride in cui il tipo di iride viene omesso, come nella Tabella 2.1. Allora è probabile che le 150 istanze rientrino in cluster naturali corrispondenti ai tre tipi di iridi. <span class="">La sfida è trovare questi cluster e assegnare le istanze a loro e 'per poter assegnare' nuove istanze anche ai cluster.</span> <span class="">Può
essere che uno o più tipi di iride si dividono naturalmente in
sottotipi, nel qual caso i dati esporranno più di tre cluster naturali.</span> <span class="">Il
successo del clustering è spesso misurato soggettivamente in termini di
quanto utile il risultato sembra essere per un utente umano.</span> <span class="">Può
essere seguita da una seconda fase dell'apprendimento di
classificazione in cui vengono apprese regole che forniscono una
descrizione intelligibile di come occorre inserire nuovi casi nei
cluster.</span></span></span></span></span></span><br />
<br />
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span title="Association rules usually involve only nonnumeric attributes: thus you wouldn’t normally look for association rules in the iris dataset."><span class="" id="result_box" lang="it"><span class=""> </span></span></span></span></span></span><span class="" id="result_box" lang="it">La previsione numerica è
una variante di apprendimento di classificazione in cui l'esito è un
valore numerico piuttosto che una categoria. Il problema delle prestazioni della CPU è un esempio. Un
altro, illustrato nella Tabella 2.2, è una versione dei dati meteo in
cui ciò che si prevede non è giocare o non giocare, ma è il tempo (in
minuti) da giocare. <span class="">Con i problemi di previsione
numerica, come per le altre situazioni di apprendimento in macchina, il
valore predittivo per le nuove istanze è spesso di "meno interesse"
rispetto alla struttura della descrizione che viene appreso, espresso in
termini di attributi importanti e come si riferiscono alla</span> <span class="">Risultato numerico.</span></span><br />
<br />
<h4>
<span class="" id="result_box" lang="it"><span class=""> </span></span><span class="short_text" id="result_box" lang="it"><span class="">Cosa c'è in un esempio?</span></span></h4>
<span class="short_text" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it">L'input di uno schema di apprendimento macchina è un insieme di istanze. Queste istanze sono le cose che devono essere classificate, associate o raggruppate. Anche se fino ad ora li abbiamo chiamati esempi, ora usiamo le istanze di termine più specifiche per fare riferimento all'input. Ogni istanza è un esempio individuale e indipendente del concetto da imparare. Inoltre, ognuno è caratterizzato dai valori di un insieme di attributi predeterminati. Questo
è stato il caso in tutti i set di dati del campione descritti
nell'ultimo capitolo (problemi di tempo, contatti, iride e problemi di
negoziazione del lavoro). <span class="">Ogni dataset è
rappresentato come una matrice di istanze rispetto agli attributi, che
in termini di database è una relazione singola o un file piatto.</span></span></span></span><br />
<br />
<span class="short_text" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class="">Esprimere i dati di input come un insieme di istanze indipendenti è di gran lunga la situazione più comune per l'estrazione pratica dei dati. Tuttavia, è un modo piuttosto restrittivo di formulare problemi, e 'vale la pena spendere' un po' tempo per rivedere il motivo. I problemi spesso implicano relazioni tra oggetti anziché istanze separate e indipendenti. Supponiamo che, per prendere una situazione specifica, è dato un albero genealogico e vogliamo imparare la sorella di concetto. Immagina il tuo albero genealogico, con i tuoi parenti (ei loro generi) collocati nei nodi. Questo albero è l'ingresso al processo di apprendimento, insieme ad un elenco di coppie di persone e un'indicazione di se sono sorelle o meno.</span></span></span></span><br />
<br />
<span class="short_text" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class="">La Figura 2.1
mostra una parte di un albero genealogico, al di sotto di quale sono due
tavole che ognuna definiscono la sorella in un modo leggermente
diverso.</span> <span class="">Un sì nella terza colonna dei tavoli
significa che la persona nella seconda colonna è una sorella della
persona nella prima colonna (è solo una decisione arbitraria che abbiamo
fatto per impostare questo esempio).</span></span></span></span></span></span><br />
<br />
<span class="short_text" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""> </span></span></span></span></span></span><span class="short_text" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class="">La prima cosa da
notare è che ci sono molti nodi nella terza colonna della tabella a
sinistra, perché ci sono 12 persone e 12 ¥ 12 = 144 coppie di persone in
tutto e la maggior parte delle coppie di persone non sono sorelle</span> . <span class="">La
tabella a destra, che fornisce le stesse informazioni, registra solo le
istanze positive e suppone che tutti gli altri siano negativi.</span> <span class="">L'idea
di specificare solo esempi positivi e di adottare un presupposto
permanente che il resto sia negativo si chiama l'assunzione del mondo
chiuso.</span> È spesso assunto negli studi teorici; <span class="">Tuttavia,
non è di grande utilità pratica nei problemi della vita reale perché
raramente coinvolgono mondi "chiusi" in cui è possibile essere certi che
tutti i casi siano coperti.</span></span></span></span></span></span></span></span><br />
<br />
<span class="short_text" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""> </span></span></span></span></span></span></span></span><span class="" id="result_box" lang="it">Né la tabella in figura 2.1 è di qualsiasi uso senza l'albero genealogico stesso. <span class="">Questo albero può anche essere espresso sotto forma di una tabella, la cui parte è illustrata nella Tabella 2.3.</span> Ora il problema è espresso in termini di due rapporti. <span class="">Ma
queste tabelle non contengono gruppi indipendenti di istanze perché i
valori nelle colonne Nome, Parent1 e Parent2 della relazione sorella si
riferiscono a righe della relazione albero genealogico.</span> <span class="">Possiamo farli in un singolo insieme di casi crollando le due tabelle nella singola tabella 2.4</span></span><br />
<br />
<span class="" id="result_box" lang="it"><span class=""> </span></span><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class="alt-edited">Finalmente
siamo riusciti a trasformare il problema relazionale originale in forma
di istanze, ognuno dei quali è un esempio individuale e indipendente
del concetto da imparare. Naturalmente, le istanze non sono realmente
indipendenti - ci sono molte 'relazioni tra diverse righe della
tabella'! - ma sono indipendenti per quanto riguarda il concetto di
sorellanza. La maggior parte dei programmi di apprendimento in macchina
continuerà ad avere difficoltà a trattare questo tipo di dati, come
vedremo nella sezione 3.6, ma almeno il problema è stato ricondotto
nella giusta forma. Una regola semplice per la sorella di relazione è la
seguente:</span></span></span></span><br />
<br />
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class="alt-edited"> If second person’s gender = female<br /> and first person’s parent1 = second person’s parent1<br /> then sister-of = yes<br /> </span></span> </span></span><br />
<span class="" id="result_box" lang="it"><span class=""> </span></span><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class="">Questo esempio
mostra come è possibile prendere una relazione tra diversi nodi di un
albero e ricondurla in un insieme di istanze indipendenti.</span> <span class="">In
termini di database, si prendono due relazioni e uniscono loro insieme
per fare uno, un processo di appiattimento che è tecnicamente chiamato
denormalizzazione.</span> <span class="">È sempre possibile farlo con qualsiasi (finito) insieme di rapporti (finiti).</span></span></span></span><br />
<br />
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""> La struttura
della tabella 2.4 può essere utilizzata per descrivere qualsiasi
rapporto tra due persone-nonni, due cugini due volte rimossi e così via.</span> <span class="">Le relazioni tra più persone richiederebbero una tabella più ampia.</span> <span class="">Le relazioni in cui il numero massimo di persone non è specificato in anticipo costituiscono un problema più grave.</span> <span class="">Se
vogliamo imparare il concetto di famiglia nucleare (genitori e figli),
il numero delle persone coinvolte dipende dalla dimensione della più
grande famiglia nucleare e sebbene possiamo indovinare ad un massimo
ragionevole (10-20), l'effettivo</span> <span class="">Il numero potrebbe essere trovato solo scansionando l'albero stesso.</span> <span class="">Tuttavia,
dato un insieme finito di rapporti finiti potremmo, almeno in linea di
principio, formare una nuova "superrelazione" che contenesse una fila
per ogni combinazione di persone e ciò sarebbe sufficiente per esprimere
qualsiasi rapporto tra le persone, non importa quanti siano stati
coinvolti</span> . <span class="">I costi di calcolo e di stoccaggio sarebbero comunque proibitivi.</span></span></span></span></span></span><br />
<br />
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""> </span></span></span></span></span></span><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span title="Another problem with denormalization is that it produces apparent regularities in the data that are completely spurious and are in fact merely reflections of the original database structure.">Un
altro problema con la denormalizzazione è che produce regolarità
apparenti nei dati completamente spuri e sono in realtà solo riflessi
della struttura del database originale. </span><span title="For example, imagine a supermarket database with a relation for customers and the products they buy, one for products and their supplier, and one for suppliers and their address.">Ad
esempio, immagina un database di supermercati con una relazione per i
clienti e i prodotti acquistati, uno per i prodotti e il loro fornitore e
uno per i fornitori e il loro indirizzo. </span><span title="Denormalizing this will produce a flat file that contains, for each instance, customer, product, supplier, and supplier address.">Denormalizzare
questo produce un file piatto che contiene, per ogni istanza, il
cliente, il prodotto, il fornitore e l'indirizzo del fornitore. </span><span title="A database mining tool that seeks structure in the database may come up with the fact that customers who buy beer also buy chips, a discovery that could be significant from the supermarket manager’s point of view.">Uno
strumento di estrazione del database che cerca la struttura nel
database può venire con il fatto che i clienti che comprano birra anche
acquistare chip, una scoperta che potrebbe essere significativo dal
punto di vista del gestore del supermercato. </span><span title="However, it may also come up with the fact that supplier address can be predicted exactly from supplier—a “discovery” that will not impress the supermarket manager at all.">Tuttavia,
può anche venire con il fatto che l'indirizzo del fornitore può essere
previsto esattamente dal fornitore, una "scoperta" che non impressionerà
affatto il gestore del supermercato. </span><span title="This fact masquerades as a significant discovery from the flat file but is present explicitly in the original database structure.">Questo
fatto mascherata come una scoperta significativa dal file piatto, ma è
presente esplicitamente nella struttura del database originale.</span></span></span></span></span></span><br />
<br />
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span title="This fact masquerades as a significant discovery from the flat file but is present explicitly in the original database structure."> </span></span></span></span></span></span><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span title="This fact masquerades as a significant discovery from the flat file but is present explicitly in the original database structure."><span class="" id="result_box" lang="it"><span class="">Molti problemi
computazionali astratti coinvolgono relazioni non finite, anche se
chiaramente qualsiasi insieme effettivo di istanze di input deve essere
finito.</span> <span class="">Concetti come l'antenato-di coinvolgere
percorsi arbitrariamente lunghi attraverso un albero e anche se la razza
umana, e quindi il suo albero genealogico, può essere finita (anche se
prodigiosamente grande), molti problemi artificiali generano dati
veramente infiniti.</span> <span class="">Anche se può sembrare astruso,
questa situazione è la norma in settori quali l'elaborazione di liste e
la programmazione logica ed è affrontata in una subdisciplina di
apprendimento macchina chiamata programmazione logica induttiva.</span> <span class="">Gli scienziati di computer usano solitamente ricorsioni per affrontare situazioni in cui il numero di casi possibili è infinito.</span> <span class="">Per esempio,</span></span> </span></span> </span></span> </span></span><br />
<br />
<span class="" id="result_box" lang="it"><span class="">If person1 is a parent of person2<br /> then person1 is an ancestor of person2<br /> </span></span><br />
<span class="" id="result_box" lang="it"><span class="">If person1 is a parent of person2<br /> and person2 is an ancestor of person3<br /> then person1 is an ancestor of person3<br /> </span></span><br />
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class="">è una semplice definizione ricorsiva di antenato che funziona non importa quanto distanzialmente si abbiano due persone.</span> <span class="">Le
tecniche di programmazione logica induttiva possono imparare regole
ricorsive come queste da un insieme finito di istanze come quelle della
tabella 2.5.</span></span></span></span><br />
<br />
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""> </span></span></span></span><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class="">I gravi
inconvenienti di tali tecniche, però, sono che non si occupano di dati
rumorosi e tendono ad essere così lenti da essere inutilizzabili su
qualsiasi cosa, tranne i piccoli set di dati artificiali.</span> <span class="">Non sono coperti da questo libro;</span> <span class="">Vedere Bergadano e Gunetti (1996) per un trattamento completo.</span></span></span></span></span></span><br />
<br />
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class="alt-edited">In
sintesi, l'input di uno schema di data mining è generalmente espresso
come una tabella di istanze indipendenti del concetto da imparare. A
causa di questo, è stato suggerito, disparagingly, che dobbiamo
veramente parlare di file mining piuttosto che database mining. I dati
relazionali sono più complessi di un file piatto. Un insieme finito di
rapporti finiti può sempre essere ricostruito in 'una singola tabella',
anche se spesso a un costo enorme nello spazio. Inoltre, la
denormalizzazione può generare regolarità spurie nei dati e è essenziale
verificare i dati per tali artefatti prima di applicare un metodo di
apprendimento. Infine, concetti potenzialmente infiniti possono essere
affrontati da regole di apprendimento che sono ricorsive, anche se
questo è al di là del campo di applicazione di questo libro.</span></span> </span></span></span></span> </span></span><br />
<br />
<h2>
<span class="" id="result_box" lang="it"><span class=""><span class="short_text" id="result_box" lang="it"><span class="">Cosa c'è in un attributo? </span></span>What’s in an attribute?</span></span></h2>
<span class="" id="result_box" lang="it"><span class=""></span></span><br />
<span class="" id="result_box" lang="it"><span class=""></span></span><br />
<span class="" id="result_box" lang="it"><span class=""><br /> </span></span><span class="" id="result_box" lang="it"><span class="">Ogni singola
istanza indipendente che fornisce l'input per l'apprendimento automatico
è caratterizzato dai suoi valori su un insieme fisso e predefinito di
funzionalità o attributi.</span> <span class="">Le istanze sono le righe
delle tabelle che abbiamo mostrato per le condizioni di tempo, le lenti
a contatto, l'iride e le prestazioni della CPU e gli attributi sono le
colonne.</span> <span class="">(I dati relativi ai negoziati del lavoro
erano un'eccezione: abbiamo presentato questo con istanze in colonne e
attributi in righe per ragioni spaziali.)</span></span><br />
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class="">L'uso di un
insieme fisso di funzionalità impone un'ulteriore restrizione sui tipi
di problemi generalmente presi in considerazione nell'esportazione
pratica dei dati.</span> <span class="">Che cosa succede se istanze differenti presentano caratteristiche diverse?</span> <span class="">Se
i casi erano veicoli di trasporto, allora il numero di ruote è una
caratteristica che si applica a molti veicoli, ma non a navi, ad
esempio, mentre il numero di alberi potrebbe essere una caratteristica
che si applica alle navi ma non a veicoli terrestri.</span> <span class="">La
soluzione standard è quella di rendere ogni possibile caratteristica un
attributo e di utilizzare un flag speciale "irrilevante valore" per
indicare che un determinato attributo non è disponibile per un
particolare caso.</span> <span class="">Una situazione simile sorge
quando l'esistenza di una caratteristica (ad esempio, nome del coniuge)
dipende dal valore di un altro (sposato o singolo).</span></span></span></span><br />
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class="">Il valore di un attributo per un'istanza particolare è una misura della quantità a cui si riferisce l'attributo.</span> <span class="">Vi è un'ampia distinzione tra le quantità numeriche e quelle nominali.</span> <span class="">Gli attributi numerici, talvolta chiamati attributi continui, misurano numeri - veri o totali o interi.</span> <span class="">Si
noti che il termine continua è abusato in questo contesto: gli
attributi con valore intero non sono certamente continui nel senso
matematico.</span> <span class="">Gli attributi nominali assumono valori in un insieme prefissato e finito di possibilità e sono talvolta chiamati categorici.</span> <span class="">Ma ci sono altre possibilità.</span> <span class="">I testi delle statistiche spesso introducono "livelli di misura" come il nominale, l'ordinale, l'intervallo e il rapporto.</span></span></span></span></span></span><br />
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""> </span></span></span></span></span></span><span class="" id="result_box" lang="it"><span class="">Le quantità nominali hanno valori che sono simboli distinti.</span> <span class="">I valori stessi servono proprio come etichette o nomi, quindi il termine nominale, che proviene dalla parola latina per nome.</span> Ad esempio, nei dati meteorologici l'outlook attributo ha valori soleggiati, coperti e piovosi. Nessuna relazione è implicita tra questi tre - nessuna ordinazione o misura di distanza. <span class="">Certamente non ha senso aggiungere i valori insieme, eliminarli o addirittura confrontare le loro dimensioni.</span> <span class="">Una regola che utilizza un tale attributo può verificare solo l'uguaglianza o la disuguaglianza, come segue:</span></span><br />
<br />
<span class="" id="result_box" lang="it"><span class="">outlook: </span></span><br />
<span class="" id="result_box" lang="it"><span class=""> sunny -> no<br /> overcast -> yes<br /> rainy -> yes</span></span><br />
<span class="" id="result_box" lang="it"><span class=""></span></span><br />
<span class="" id="result_box" lang="it"><span class=""></span></span><br />
<span class="" id="result_box" lang="it"><span class="">Le quantità ordinali sono quelle che permettono di ordinare le categorie.</span> <span class="">Tuttavia, anche se esiste una nozione di ordinamento, non esiste una nozione di distanza.</span> <span class="">Ad esempio, nei dati meteorologici la temperatura degli attributi ha valori caldi, lievi e freschi.</span> <span class="">Questi sono ordinati.</span> <span class="">Sia che dici:</span></span><br />
<br />
<span class="" id="result_box" lang="it"><span class=""> </span></span><span class="" id="result_box" lang="it"> hot > mild > cool or hot < mild < cool</span><br />
<span class="" id="result_box" lang="it"><br /></span>
<br />
<span class="" id="result_box" lang="it"><span class="">È una questione di convenzione - non importa quale sia usato finché la coerenza viene mantenuta.</span> <span class="">Quello che è importante è che le lieve menzogne tra gli altri due.</span> <span class="">Anche
se ha senso confrontare due valori, non ha senso aggiungerli o
sottrarli: la differenza tra caldo e mite non può essere confrontata con
la differenza tra lieve e fredda.</span> <span class="">Una regola che utilizza un tale attributo potrebbe comportare un confronto, come segue:</span></span><br />
<br />
<span class="" id="result_box" lang="it"><span class="">temperature = hot -> no<br />temperature < hot -> yes</span></span><br />
<span class="" id="result_box" lang="it"><span class=""><br /></span></span>
<span class="" id="result_box" lang="it"><span class="">Si noti che la distinzione tra le quantità nominali e ordinali non è sempre semplice e ovvia.</span> <span class="">Infatti,
l'esempio stesso di una quantità ordinale che abbiamo usato in
precedenza, la prospettiva, non è del tutto chiaro: si potrebbe
sostenere che i tre valori hanno un ordine-overcast essendo in qualche
modo intermedio tra sole e pioggia mentre il tempo passa da buono a
cattivo.</span></span><br />
<br />
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it">Le quantità di intervallo hanno valori non solo ordinati ma anche misurati in unità fisse e uguali. Un
buon esempio è la temperatura, espressa in gradi (ad esempio, gradi
Fahrenheit) piuttosto che sulla scala non numerica implicita da fresco,
lieve e caldo. Ha senso perfetto parlare della differenza
tra due temperature, ad esempio 46 e 48 gradi, e confrontarlo con la
differenza tra altre due temperature, ad esempio 22 e 24 gradi. Un altro esempio è le date. <span class="">Si
può parlare della differenza tra gli anni 1939 e 1945 (6 anni) o
addirittura la media degli anni 1939 e 1945 (1942), ma non ha molto
senso considerare la somma degli anni 1939 e 1945 (3884</span> <span class="">)
O tre volte l'anno 1939 (5817), perché il punto di partenza, anno 0, è
completamente arbitrario - anzi, è cambiato molte volte nel corso della
storia.</span> <span class="">(I bambini a volte si chiedono 'quale sia stato chiamato l'anno 300 aC nel 300 aC).</span></span></span></span><br />
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""> </span></span></span></span><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class="">Le quantità di rapporto sono quelle per cui il metodo di misura definisce intrinsecamente un punto zero.</span> <span class="">Ad esempio, quando si misura la distanza da un oggetto ad altri, la distanza tra l'oggetto e se stesso forma uno zero naturale.</span> <span class="">Le quantità di rapporto sono trattate come numeri reali: è consentita qualsiasi operazione matematica.</span> <span class="">Certamente ha senso parlare di tre volte la distanza e persino di moltiplicare una distanza da un altro per ottenere un'area.</span></span></span></span></span></span><br />
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class="alt-edited">Tuttavia,
la questione se esista un punto zero definito "intrinsecamente" dipende
dalla nostra conoscenza scientifica: è la relativa cultura. Per
esempio, Daniel Fahrenheit non conosceva un limite inferiore alla
temperatura, e la sua scala è un intervallo uno. Oggi, tuttavia, vediamo
la temperatura come una scala di rapporti basata su zero assoluto. La
misurazione del tempo negli anni dal momento che «qualche zero definito
culturalmente» come AC 0 non è una scala di rapporto; come lo sono gli
anni dal momento del 'big bang' . Anche il punto zero di denaro - dove
siamo solitamente abbastanza felici di dire che qualcosa costa due volte
più di qualcos'altro - non può essere chiaramente definito per quelli
di noi che costantemente massimizzano le nostre carte di credito.</span></span></span></span></span></span></span></span><br />
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class="alt-edited"><span class="" id="result_box" lang="it"><span class="">La maggior parte dei sistemi pratici di data mining accolgono solo due di questi quattro livelli di misura: nominali e ordinali.</span> <span class="">Gli attributi nominali sono talvolta chiamati categorici, enumerati o discreti.</span> <span class="">L'enumerato è il termine standard utilizzato nell'informatica per indicare un tipo di dati categorico;</span> <span class="">Tuttavia,
la rigorosa definizione del termine - vale a dire, per mettere in una
corrispondenza con i numeri naturali - implica un ordine, che non è
specificamente implicito nel contesto di apprendimento macchina.</span> <span class="">Il discreto ha anche connotazioni di ordinazione poiché spesso si discretizza una quantità continua e numerica.</span> <span class="">Gli
attributi ordinali sono generalmente chiamati numerici, o forse
continui, ma senza l'implicazione della continuità matematica.</span> <span class="">Un
caso speciale della scala nominale è la dicotomia, che ha solo due
membri - spesso designati come veri e falsi, o sì e no nei dati
meteorologici.</span> <span class="">Tali attributi sono talvolta chiamati booleani.</span></span></span></span></span></span></span></span></span></span><br />
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class="alt-edited"><span class="" id="result_box" lang="it"><span class=""> </span></span></span></span></span></span></span></span></span></span><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class="alt-edited"><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class="">I sistemi di apprendimento automatico possono utilizzare una grande varietà di altre informazioni sugli attributi.</span> <span class="">Ad
esempio, considerazioni dimensionali potrebbero essere utilizzate per
limitare la ricerca alle espressioni o ai confronti che sono
dimensionalmente corretti.</span> <span class="">L'ordinamento circolare potrebbe influenzare i tipi di test che sono considerati.</span> <span class="">Ad
esempio, in un contesto temporale, i test di un attributo giornaliero
potrebbero comportare il giorno dopo, il giorno precedente, il giorno
del giorno successivo e lo stesso giorno della prossima settimana.</span> <span class="">Ordini parziali, cioè generalizzazioni o rapporti di specializzazione, si verificano spesso in situazioni pratiche.</span> <span class="">Informazioni di questo tipo sono spesso definite metadati, dati sui dati.</span> <span class="">Tuttavia,
i tipi di metodi pratici utilizzati per l'estrazione dei dati sono
raramente in grado di tenere in considerazione i metadati, anche se è
probabile che queste capacità si svilupperanno rapidamente in futuro.</span> <span class="">(Torniamo a questo nel Capitolo 8.)</span></span></span></span></span></span></span></span></span></span></span></span><br />
<h3>
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class="alt-edited"><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""> </span></span></span></span> </span></span></span></span></span></span></span></span><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class="alt-edited"> </span></span></span></span></span></span></span></span><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class="alt-edited"> </span></span> </span></span></span></span></span></span><span class="short_text" id="result_box" lang="it"><span class="">Preparazione dell'input</span></span></h3>
<span class="short_text" id="result_box" lang="it"><span class=""> </span></span><span class="short_text" id="result_box" lang="it"><span class=""> </span></span><br />
<span class="" id="result_box" lang="it"><span class="alt-edited">La
preparazione dell'input per un'indagine di "data mining" consuma
solitamente la maggior parte degli sforzi investiti nell'intero processo
di data mining. Anche se questo libro non riguarda veramente i problemi
della preparazione dei dati, vogliamo darti una idea 'delle questioni
coinvolte' affinché tu possa apprezzare le complessità. Di seguito viene
esaminato un particolare formato di file di input, il formato di file
di attributo-relazione (formato ARFF), utilizzato nel pacchetto Java
descritto nella parte II. Quindi consideriamo i problemi che si
verificano quando si converte i set di dati in un tale formato, perché
ci sono "alcuni punti pratici semplici di cui essere consapevoli".
L'amara esperienza "mostra che i dati reali sono spesso deludenti nella
qualità e il controllo attento - un processo che è diventato noto come
la pulizia dei dati -" si esegue "molte volte.</span></span><br />
<span class="" id="result_box" lang="it"><span class="alt-edited"> </span></span><span class="" id="result_box" lang="it"><span class="alt-edited"> </span></span><br />
<h4>
<span class="short_text" id="result_box" lang="it"><span class="">Raccogliere i dati insieme</span></span></h4>
<span class="short_text" id="result_box" lang="it"><span class=""> </span></span><span class="short_text" id="result_box" lang="it"><span class=""> </span></span><br />
<span class="" id="result_box" lang="it"><span class="alt-edited">Quando
si inizia a lavorare su un problema di data mining, è necessario
innanzitutto integrare tutti i dati in un insieme di istanze. Abbiamo
spiegato la necessità di denormalizzare i dati relazionali quando si
descrive l'esempio dell'albero di famiglia. Anche se illustra la
questione fondamentale, questo esempio autosufficiente e piuttosto
artificiale non trasmette in realtà una idea o per ciò che il processo
sarà come nella pratica. In una vera e propria applicazione aziendale,
sarà necessario portare i dati da diversi reparti. Ad esempio, in un
database di marketing saranno necessari dati dal dipartimento di
vendita, dal reparto di fatturazione del cliente e dal servizio di
assistenza clienti.</span></span><br />
<span class="" id="result_box" lang="it"><span class="alt-edited"><span class="" id="result_box" lang="it">L'integrazione di dati
provenienti da fonti diverse presenta solitamente molte sfide - non
profonde questioni di principio ma la 'brutta verità' della pratica.
Diversi dipartimenti utilizzeranno stili diversi di registrazione,
diverse convenzioni, diversi periodi di tempo, diversi livelli di
aggregazione dei dati, chiavi primarie differenti e avranno diversi tipi
di errori. I dati devono essere assemblati, integrati e puliti. L'idea
di un'integrazione di database a livello aziendale è conosciuta come
data warehousing. I magazzini di dati forniscono un unico punto di
accesso coerente a dati aziendali o organizzativi, superando le
divisioni dipartimentali. Sono il luogo dove vengono pubblicati i vecchi
dati in un modo che può essere utilizzato per informare le decisioni di
busness. Il movimento verso il magazzinaggio dei dati è un
riconoscimento del fatto che le informazioni frammentate che
un'organizzazione usa per sostenere le operazioni quotidiane a livello
dipartimentale possono avere un valore strategico immenso quando
riuniti. Chiaramente, la presenza di un data warehouse è un precursore
molto utile per l'estrazione dei dati e, se non è disponibile, dovranno
essere intraprese molte delle operazioni necessarie per il magazzinaggio
dei dati per preparare i dati per l'estrazione mineraria.</span></span></span><br />
<span class="" id="result_box" lang="it"><span class="alt-edited"><span class="" id="result_box" lang="it"><span class="" id="result_box" lang="it"><span class="">Spesso anche un
data warehouse non contiene tutti i dati necessari e potrebbe essere
necessario arrivare all'esterno dell'organizzazione per riportare i dati
relativi al problema in questione.</span> <span class="">Ad esempio, i
dati meteo dovevano essere ottenuti nell'esempio di previsione del
carico nell'ultimo capitolo e i dati demografici sono necessari per le
applicazioni di marketing e di vendita.</span> <span class="">A volte
chiamati dati overlay, questo non viene normalmente raccolto da
un'organizzazione, ma è chiaramente rilevante per il problema di data
mining.</span> <span class="">Inoltre, deve essere pulita e integrata con gli altri dati raccolti.</span></span> </span></span></span><br />
<span class="" id="result_box" lang="it"><span class="alt-edited"><span class="" id="result_box" lang="it"><span class="" id="result_box" lang="it"><span class="alt-edited">Un'altra
domanda pratica durante l'assemblaggio dei dati è il grado di
aggregazione che è appropriato. Quando un coltivatore di latticini
decide quali vacche vendere, devono essere aggregati i record di
produzione di latte - che una macchina di mungitura automatica registra
due volte al giorno -. Allo stesso modo, i dati di chiamata telefonica
crude sono poco utilizzati quando le aziende di telecomunicazioni
studiano il comportamento dei loro clienti: i dati devono essere
aggregati a livello di cliente. Ma vuoi l'utilizzo per mese o per
trimestre, e per quanti mesi o trimestri in ritardo? La scelta del tipo e
del livello di aggregazione è di solito fondamentale per il successo.
Poiché sono coinvolte tante questioni diverse, non si può aspettare di
ottenerla la prima volta. Ecco perché il montaggio dei dati,
l'integrazione, la pulizia, l'aggregazione e la preparazione generale
richiedono così tanto tempo.</span></span></span></span></span><br />
<h4>
<span class="" id="result_box" lang="it"><span class="alt-edited"><span class="" id="result_box" lang="it"><span class="" id="result_box" lang="it"><span class="alt-edited"> </span></span> ARFF formato</span></span></span></h4>
<br />
<span class="" id="result_box" lang="it">Ora guardiamo ad un modo
standard di rappresentare set di dati consistenti in istanze
indipendenti e non ordinate e non implicano rapporti tra le istanze,
chiamate un file ARFF. La Figura 2.2 mostra un file ARFF
per i dati meteorologici riportati nella Tabella 1.3, la versione con
alcune funzioni numeriche. Le righe che iniziano con un segno% sono commenti. <span class="">Seguendo
i commenti all'inizio del file sono il nome della relazione (meteo) e
un blocco che definisce gli attributi (prospettiva, temperatura,
umidità, ventosa, gioco?).</span> <span class="">Gli attributi nominali sono seguiti dall'insieme di valori che possono assumere, racchiusi in parentesi graffe.</span> I valori possono includere spazi; <span class="">Se è così, devono essere collocati in virgolette.</span> <span class="">I valori numerici sono seguiti dalla numerica parola chiave.</span></span><br />
<br />
<span class="" id="result_box" lang="it"><span class=""> % ARFF file for the weather data with some n<br /> @relation weather </span></span><span class="" id="result_box" lang="it"></span><br />
<span class="" id="result_box" lang="it"><span class=""></span></span><span class="" id="result_box" lang="it"><span class=""> @data<br /> %<br /> % 14 instances <br /> %<br /> sunny, 85, 85, false, no<br /> </span></span><br />
<span class="" id="result_box" lang="it"><span class=""><br /></span></span>
<br />
<span class="" id="result_box" lang="it"><span class="">Anche se il problema del tempo è quello di prevedere il gioco di valore di classe?</span> <span class="">Dai valori degli altri attributi, l'attributo di classe non viene distinto in alcun modo nel file di dati.</span> <span class="">Il formato ARFF dà semplicemente un set di dati;</span> <span class="">Non specifica quale degli attributi è quello che dovrebbe essere previsto.</span> <span class="">Ciò
significa che lo stesso file può essere utilizzato per indagare in che
modo ciascun attributo può essere predisposto dagli altri, o per trovare
le regole di associazione o per il clustering. </span></span><br />
<br />
<span class="" id="result_box" lang="it">Seguendo le definizioni degli attributi è una linea @data che segnala l'avvio delle istanze nel set di dati. Le istanze sono scritte una per riga, con valori per ogni attributo a sua volta separati da virgole. Se manca un valore, viene rappresentato da un singolo punto interrogativo (in questo set di dati non esistono valori mancanti). <span class="">Le
specifiche degli attributi nei file ARFF permettono di controllare il
set di dati per assicurarsi di contenere valori legali per tutti gli
attributi e i programmi che leggeranno i file ARFF eseguono
automaticamente questo controllo.</span></span><br />
<br />
<span class="" id="result_box" lang="it"><span class=""> </span></span><span class="" id="result_box" lang="it">Oltre agli attributi
nominali e numerici, esemplificati dai dati meteorologici, il formato
ARFF presenta due ulteriori tipi di attributi: attributi di stringa e
attributi di data. Gli attributi String hanno valori testuali. <span class="">Supponi che tu abbia un attributo di stringa che desideri chiamare la descrizione.</span> <span class="">Nel blocco che definisce gli attributi, viene specificato come segue:</span></span><br />
<br />
<span class="" id="result_box" lang="it"><span class=""> @attribute description string</span></span><br />
<span class="" id="result_box" lang="it"><span class=""><br /></span></span>
<br />
<span class="" id="result_box" lang="it"><span class="">Quindi, nei dati
di istanza, includere qualsiasi stringa di caratteri in virgolette
(includere le virgolette nella stringa, utilizzare la convenzione
standard di precedere ciascuna da un backslash, \) Le stringhe sono
memorizzate internamente in una tabella di stringhe e rappresentate dal
loro indirizzo</span> <span class="">In quella tabella.</span> <span class="">Quindi due stringhe che contengono gli stessi caratteri avranno lo stesso valore.</span></span><br />
<span class="" id="result_box" lang="it"><span class=""> </span></span><br />
<span class="" id="result_box" lang="it"><span class="">Gli attributi String possono avere valori molto lunghi, anche un documento intero.</span> <span class="">Per
essere in grado di utilizzare gli attributi di stringa per l'estrazione
del testo, è necessario essere in grado di manipolarli.</span> <span class="">Ad
esempio, un attributo di stringa può essere convertito in molti
attributi numerici, uno per ogni parola della stringa, il cui valore è
il numero di volte in cui viene visualizzata la parola.</span> <span class="">Queste trasformazioni sono descritte in Sezione 7.3.</span> <span class="">Gli attributi di data sono stringhe con un formato speciale e vengono introdotte in questo modo:</span></span><br />
<br />
<span class="" id="result_box" lang="it"><span class=""> @attribute today date</span></span><br />
<span class="" id="result_box" lang="it"><span class=""><br /></span></span>
<br />
<span class="" id="result_box" lang="it"><span class="">(Per un attributo chiamato oggi).</span> <span class="">Weka,
il software di apprendimento della macchina descritto nella parte II di
questo libro, utilizza il formato data e ora combinati ISO-8601 con un
numero di quattro cifre dell'anno, due per mese e giorno,</span> <span class="">Quindi
la lettera T seguita dal tempo con due cifre per ogni ora, minuti e
secondi.1 Nella sezione dati del file, le date vengono specificate come
la rappresentazione di stringa corrispondente della data e dell'ora, ad
esempio, 2004-04</span> -03T12: 00: 00. <span class="">Anche se sono specificati come stringhe, le date vengono convertite in forma numerica quando viene letto il file di input.</span> <span class="">Le
date possono anche essere convertite internamente in diversi formati,
in modo da poter avere timestamp assoluti nel file di dati e utilizzare
trasformazioni in forme come l'ora del giorno o il giorno della
settimana per rilevare il comportamento periodico.</span></span><br />
<h4>
<span class="" id="result_box" lang="it"><span class=""> </span></span><span class="" id="result_box" lang="it"><span class=""> </span></span><span class="" id="result_box" lang="it"><span class=""> Sparse data (scarsita di data)</span></span></h4>
<span class="" id="result_box" lang="it"><span class=""></span></span><span class="" id="result_box" lang="it"><span class=""></span></span><span class="" id="result_box" lang="it"><span class=""> </span></span><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it">A volte la maggior parte degli attributi ha un valore di 0 per la maggior parte delle istanze. Ad esempio, i "acquisti di dati dei cestini di mercato" effettuati dai clienti supermercati. Non
importa quanto grande la spedizione di shopping, i clienti non
acquistano mai più di una piccola parte degli articoli che un negozio
offre. I dati del cestello del mercato contengono la
quantità di ogni elemento acquistato dal cliente e questo è zero per
quasi tutti gli articoli in magazzino. Il file di dati può
essere visto come una matrice le cui righe e colonne rappresentano
clienti e oggetti di magazzino e la matrice è "sparsa" - quasi tutti i
suoi elementi sono zero. Un altro esempio si verifica nell'estrazione del testo, in cui le istanze sono documenti. Qui,
le colonne e le righe rappresentano documenti e parole e i numeri
indicano quante volte una parola particolare viene visualizzata in un
determinato documento. La maggior parte dei documenti ha un vocabolario piuttosto piccolo, quindi la maggior parte delle voci è zero. <span class="">Può
sembrare impraticabile rappresentare esplicitamente ciascun elemento di
una matrice sparsa, scrivendo ogni valore in ordine, come segue:</span></span></span></span><br />
<br />
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""> 0, 26, 0, 0, 0, 0, 63, 0, 0, 0, “class A”<br /> 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, “class B”</span></span></span></span><br />
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""></span></span></span></span><br />
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""></span></span></span></span><br />
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""></span></span></span></span><br />
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><br /></span></span> </span></span><br />
<span class="" id="result_box" lang="it"><span class="">Invece, gli attributi non-zero possono essere identificati esplicitamente per numero di attributo e il loro valore dichiarato:</span></span><br />
<br />
<span class="" id="result_box" lang="it"><span class=""> {1 26, 6 63, 10 “class A”}<br /> {3 42, 10 “class B”}</span></span><br />
<span class="" id="result_box" lang="it"><span class=""><br /></span></span><span class="" id="result_box" lang="it">Ogni istanza è racchiusa
in parentesi graffe e contiene il numero di indice di ogni attributo
non-zero (gli indici iniziano da 0) e il suo valore. <span class="">I
file di dati ridotti hanno gli stessi tag @relation e @attribute,
seguito da una linea @data, ma la sezione dati è diversa e contiene
specifiche in parentesi graffe come quelle precedentemente illustrate.</span> <span class="">Si noti che i valori omessi hanno un valore di 0 - non sono valori "mancanti"!</span> <span class="">Se un valore è sconosciuto, deve essere esplicitamente rappresentato con un punto interrogativo.</span></span><br />
<br />
<h4>
<span class="" id="result_box" lang="it"><span class=""> </span></span><span class="short_text" id="result_box" lang="it"><span class="">Tipi di attributi</span></span></h4>
<span class="short_text" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class="">I file ARFF ospitano i due tipi di dati di base, nominali e numerici.</span> <span class="">Gli
attributi di stringa e gli attributi di data sono effettivamente
nominali e numerici, anche se prima di essere utilizzati, le stringhe
vengono spesso convertite in una forma numerica, ad esempio un vettore
di parole.</span> <span class="">Ma come vengono interpretati i due tipi di base dipende dal metodo di apprendimento utilizzato.</span> <span class="">Ad
esempio, la maggior parte dei metodi gestisce gli attributi numerici
come bilance ordinali e utilizza solo i valori inferiori e superiori dei
confronti tra i valori.</span> Tuttavia, alcuni li trattano come bilancia di rapporti e usano le distanze a distanza. <span class="">È necessario capire come funzionano i metodi di apprendimento delle macchine prima di utilizzarli per l'estrazione dei dati.</span></span></span></span><br />
<br />
<span class="short_text" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it">Se un metodo di
apprendimento tratta gli attributi numerici come se fossero misurati su
scale di rapporto, si pone la questione della normalizzazione. Gli
attributi sono spesso normalizzati per trovarsi in una gamma fissa, ad
esempio, da zero a uno, dividendo tutti i valori per il valore massimo
rilevato o sottraendo il valore minimo e dividendo per l'intervallo tra i
valori massimi e quelli minimi. <span class="">Un'altra tecnica
di normalizzazione è quella di calcolare la media statistica e la
deviazione standard dei valori degli attributi, sottrarre la media da
ogni valore e dividere il risultato per la deviazione standard.</span> <span class="">Questo
processo si chiama standardizzare una variabile statistica e si traduce
in un insieme di valori la cui media è zero e la deviazione standard è
una.</span></span></span></span></span></span><br />
<br />
<span class="short_text" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""> </span></span></span></span></span></span><span class="short_text" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class="">Alcuni metodi di
apprendimento - ad esempio, varietà di metodi di apprendimento e di
regressione basato sull'istanza - affrontano solo le scale di rapporto,
poiché calcolano la "distanza" tra due istanze basate sui valori dei
loro attributi.</span> <span class="">Se la scala reale è ordinale, è necessario definire una funzione di distanza numerica.</span> <span class="">Un modo per farlo è quello di utilizzare una distanza a due livelli: uno se i due valori sono diversi e zero se sono uguali.</span> <span class="">Qualsiasi quantità nominale può essere considerata come numerica utilizzando questa funzione di distanza.</span> <span class="">Tuttavia, è piuttosto una tecnica cruda e nasconde il vero grado di variazione tra le istanze.</span> <span class="">Un'altra
possibilità è quella di generare diversi attributi binari sintetici per
ogni attributo nominale: torniamo a questo nel paragrafo 6.5 quando
esaminiamo l'utilizzo di alberi per la previsione numerica.</span></span></span></span></span></span></span></span><br />
<br />
<span class="short_text" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""> </span></span></span></span></span></span></span></span><span class="" id="result_box" lang="it">A volte esiste una vera e propria mappatura tra quantità nominali e bilance numeriche. Ad esempio, i codici postali indicano aree che potrebbero essere rappresentate da coordinate geografiche; Le cifre principali dei numeri telefonici possono anche farlo, a seconda del luogo in cui vivi. Le prime due cifre del numero di identificazione di un studente possono essere l'anno in cui "è stata prima iscritta".<br /><span class="">È molto comune per i set di dati pratici contenere valori nominali codificati come numeri interi.</span> <span class="">Ad
esempio, un identificatore integer può essere utilizzato come codice
per un attributo come un numero di parte, tuttavia tali interi non sono
destinati ad essere utilizzati in confronto meno o superiore.</span> <span class="">Se questo è il caso, è importante specificare che l'attributo è nominale e non numerico.</span></span><br />
<br />
<span class="" id="result_box" lang="it"><span class=""> </span></span><span class="" id="result_box" lang="it"><span class="">È abbastanza possibile trattare una quantità ordinale come se fosse nominale.</span> <span class="">Infatti, alcuni metodi di apprendimento automatico riguardano solo elementi nominali.</span> <span class="">Ad
esempio, nel problema della lente a contatto l'attributo di età viene
trattato come nominale e le regole generate includono le seguenti:</span></span><br />
<br />
<span class="" id="result_box" lang="it"><span class=""> If age = young and astigmatic = no and<br /> tear production rate = normal then recommendation = soft<br /> If age = pre-presbyopic and astigmatic = no and<br /> tear production rate = normal then recommendation = soft </span></span><span class="" id="result_box" lang="it"><span class=""> </span></span><br />
<br />
<br />
<span class="" id="result_box" lang="it"><span class="">Ma infatti l'età, specificata in questo modo, è veramente una quantità ordinale per la quale vale quanto segue:</span></span><br />
<br />
<span class="" id="result_box" lang="it"><span class=""> young < pre-presbyopic < presbyopic</span></span><br />
<span class="" id="result_box" lang="it"><span class=""><br /></span></span>
<span class="" id="result_box" lang="it"><span class=""> </span></span><br />
<span class="" id="result_box" lang="it"><span class="">Se si trattasse come ordinale, le due regole potrebbero essere crollate in una:</span></span><br />
<br />
<span class="" id="result_box" lang="it"><span class=""> If age £ pre-presbyopic and astigmatic = no and<br /> tear production rate = normal then recommendation = soft</span></span><br />
<span class="" id="result_box" lang="it"><span class=""><br /></span></span>
<span class="" id="result_box" lang="it"><span class=""> </span></span><span class="" id="result_box" lang="it"><span class="">Che è un modo più compatto, e quindi più soddisfacente, di dire la stessa cosa.</span></span><br />
<h4>
<span class="" id="result_box" lang="it"><span class=""> Valori mancanti</span></span></h4>
<span class="" id="result_box" lang="it"><span class=""> </span></span><span class="" id="result_box" lang="it"><span class="">La maggior parte
dei set di dati riscontrati nella pratica, come i dati dei negoziati di
lavoro nella tabella 1.6, contengono valori mancanti.</span> <span class="">I
valori mancanti sono spesso indicati da voci fuori campo, forse un
numero negativo (ad esempio, -1) in un campo numerico normalmente solo
positivo o 0 in un campo numerico che normalmente non può essere 0. Per
gli attributi nominali,</span> <span class="">I valori mancanti possono essere indicati con righe o trattini.</span> <span class="">A
volte vengono distinti diversi tipi di valori mancanti (ad esempio,
sconosciuti vs valori non registrati rispetto ai valori irrilevanti) e
forse rappresentati da diversi interi negativi (-1, -2, ecc.).</span></span><br />
<span class="" id="result_box" lang="it"><span class=""> </span></span><span class="" id="result_box" lang="it"><span class=""> </span></span><br />
<span class="" id="result_box" lang="it"><span class=""> </span></span><br />
<span class="" id="result_box" lang="it"><span class="">Devi pensare attentamente circa il significato dei valori mancanti.</span> <span class="">Possono
verificarsi per diverse ragioni, quali ad esempio apparecchi di misura
malfunzionanti, modifiche del progetto sperimentale durante la raccolta
dei dati e la compilazione di diversi set di dati simili ma non
identici.</span> <span class="">I rispondenti in un sondaggio possono rifiutarsi di rispondere a determinate domande, come l'età o il reddito.</span> <span class="">In
uno studio archeologico, un esemplare come un teschio può essere
danneggiato in modo che alcune variabili non possano essere misurate.</span> <span class="">In un biologico, piante o animali possono morire prima di essere misurate tutte le variabili.</span> <span class="">Cosa significano queste cose sull'esempio in esame?</span> <span class="">Può il danno del cranio avere qualche significato in sé, o è solo a causa di un evento casuale?</span> <span class="">La morte precoce delle piante ha qualche effetto sul caso o meno?</span></span><br />
<br />
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span title="Most machine learning methods make the implicit assumption that there is no particular significance in the fact that a certain instance has an attribute value missing: the value is simply not known.">La
maggior parte dei metodi di apprendimento automatico fa l'ipotesi
implicita che non esiste un particolare significato nel fatto che una
determinata istanza ha un valore attributo mancante: il valore non è
semplicemente noto. </span><span title="However, there may be a good reason why the attribute's value is unknown - perhaps a decision was made, on the evidence available, not to perform some particular test - and that might convey some information about the instance other than the fact that the value is">Tuttavia,
può esserci una buona ragione per cui il valore dell'attributo non è
noto - forse è stata fatta una decisione, sulla base delle prove
disponibili, di non eseguire un particolare test - e che potrebbe
fornire alcune informazioni sull'istanza diverso dal fatto che il valore
è </span><span title="simply missing.">Semplicemente mancante. </span><span title="If this is the case, then it would be more appropriate to record not tested as another possible value for this attribute or perhaps as another attribute in the dataset.">Se
questo è il caso, allora sarebbe più opportuno registrare non testati
come un altro valore possibile per questo attributo o forse come un
altro attributo nel set di dati. </span><span title="As the preceding examples illustrate, only someone familiar with the data can make an informed judgment about whether a particular value being missing has some extra significance or whether it should simply be coded as an ordinary missing value.">Come
illustrano gli esempi precedenti, solo qualcuno che ha familiarità con i
dati può fare un giudizio informato sul fatto che un valore particolare
mancante abbia un significato extra o sia semplicemente codificato come
un valore ordinario mancante. </span><span title="Of course, if there seem to be several types of missing value, that is prima facie evidence that something is going on that needs to be investigated.">Naturalmente,
se sembra che ci siano diversi tipi di valore mancante, che è prima
facie la prova che qualcosa sta succedendo che deve essere indagato.</span></span> </span></span><br />
<span class="" id="result_box" lang="it"><span class=""> </span></span><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class="">Se i
valori mancanti implicano che un operatore ha deciso di non effettuare
una particolare misurazione, ciò può rappresentare molto più che il
semplice fatto che il valore sia sconosciuto.</span> <span class="">Ad
esempio, le persone che analizzano i database medici hanno notato che i
casi possono, in certe circostanze, essere diagnosticati semplicemente
dalle prove che un medico decide di fare a prescindere dall'esito dei
test.</span> <span class="">Quindi un record dei valori "mancanti" è
tutto ciò che serve per una diagnosi completa - i valori reali possono
essere completamente ignorati!</span></span></span></span><br />
<h4>
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""> </span></span></span></span><span class="short_text" id="result_box" lang="it"><span class="">Valori inesatti</span></span></h4>
<span class="short_text" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class="">È importante controllare attentamente i file di data mining per gli attributi e i valori degli attributi di rogue.</span> <span class="">I dati utilizzati per l'attività mineraria non sono stati certamente raccolti espressamente per questo scopo.</span> <span class="">Quando originariamente raccolti, molti dei campi probabilmente non importavano e sono stati lasciati vuoti o non controllati.</span> <span class="">Fermo restando che ciò non pregiudica lo scopo originale dei dati, non c'è alcun incentivo per correggerlo.</span> <span class="">Tuttavia,
quando lo stesso database viene utilizzato per l'estrazione, gli errori
e le omissioni improvvisamente cominciano ad assumere un grande
significato.</span> <span class="">Ad esempio, le banche non hanno
veramente bisogno di conoscere l'età dei loro clienti, in modo che i
loro database possano contenere molti valori mancanti o non corretti.</span> <span class="">Ma l'età può essere una caratteristica molto significativa 'nelle regole minate'.</span></span></span></span><br />
<span class="short_text" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""></span></span></span></span><br />
<span class="short_text" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""> </span></span></span></span><span class="short_text" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class="">Gli errori tipografici in un set di dati ovviamente portano a valori non corretti.</span> <span class="">Spesso il valore di un attributo nominale viene errato, creando un valore aggiuntivo per questo attributo.</span> <span class="">O forse non è un errore ma diversi nomi per la stessa cosa, come Pepsi e Pepsi Cola.</span> <span class="">Ovviamente il punto di un formato definito come ARFF è consentire di controllare i file di dati per la coerenza interna.</span> <span class="">Tuttavia,
gli errori che si verificano nel file di dati originale vengono spesso
conservati attraverso il processo di conversione nel file utilizzato per
l'estrazione dei dati;</span> <span class="">Quindi l'elenco dei possibili valori che ogni attributo assume deve essere esaminato attentamente.</span></span></span></span></span></span><br />
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""> </span></span></span></span> </span></span><br />
<span class="" id="result_box" lang="it"><span class=""> Gli
errori tipografici o di misurazione dei valori numerici generano
generalmente degli outlier che possono essere rilevati tracciando una
variabile alla volta.</span> <span class="">I valori erronei spesso deviano significativamente dal modello che è evidente nei restanti valori.</span> <span class="">Talvolta, tuttavia, è difficile trovare valori imprecisi, in particolare senza conoscenze di dominio specializzato.</span></span><br />
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it">I dati duplicati presentano un'altra fonte di errore. <span class="">La
maggior parte degli strumenti di apprendimento automatico produrrà
risultati diversi se alcune delle istanze dei file di dati vengono
duplicate, perché la ripetizione dà maggiore influenza sul risultato.</span></span></span></span><br />
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""> </span></span></span></span><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it">La gente spesso fa degli errori deliberati quando inserisce dati personali in banche dati. Essi
potrebbero apportare piccoli cambiamenti nell'ortografia della loro
strada per cercare di identificare se le informazioni che hanno fornito
sono state vendute ad agenzie pubblicitarie che li fanno carico di posta
indesiderata. Potrebbero registrare l'ortografia del loro
nome quando si richiedono l'assicurazione se hanno avuto in passato
l'assicurazione rifiutata. <span class="">I sistemi rigidi di
immissione di dati computerizzati spesso impongono restrizioni che
richiedono soluzioni alternative immaginative.</span> <span class="">Una storia racconta di uno straniero che affitta un veicolo negli Stati Uniti.</span> <span class="">Essendo dall'estero, non aveva codice postale, ma il computer insistette su uno;</span> <span class="">In disperazione l'operatore ha suggerito di utilizzare il codice di istruzione dell'agenzia di locazione.</span></span></span></span></span></span><br />
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""> </span></span></span></span></span></span><span class="" id="result_box" lang="it"><span class="alt-edited">Se
questa è una pratica comune, i progetti futuri di estrazione dati
potrebbero notare un gruppo di clienti che apparentemente vivono nello
stesso distretto dell'agenzia!Allo stesso modo, un operatore di checkout
di supermercati utilizza talvolta la propria carta di acquirente
frequente quando il cliente non ne fornisce uno, in modo che il cliente
possa ottenere uno sconto altrimenti non disponibile o semplicemente
accumulare punti di credito nel conto della cassa. Solo una profonda
conoscenza semantica di ciò che sta succedendo sarà in grado di spiegare
errori di dati sistematici come questi. Infine, i dati sono vecchi.
Molti elementi cambiano quando le circostanze cambiano. Ad esempio, gli
elementi delle mailing list - nomi, indirizzi, numeri di telefono e così
via - cambiano frequentemente. Devi considerare se i dati che state
espandendo sono ancora in corso.</span></span><br />
<h4>
<span class="" id="result_box" lang="it"><span class="alt-edited"> </span></span><span class="short_text" id="result_box" lang="it"><span class="">Conosci i tuoi dati</span></span></h4>
<span class="short_text" id="result_box" lang="it"><span class=""> </span></span><span class="" id="result_box" lang="it"><span class="">Non vi è alcun sostituto per conoscere i tuoi dati.</span> <span class="">Sono
molto utili strumenti semplici che mostrano istogrammi della
distribuzione dei valori di attributi nominali e grafici dei valori
degli attributi numerici (forse ordinati o semplicemente grafici contro
il numero di istanza).</span> <span class="">Queste visualizzazioni
grafiche dei dati rendono più facile identificare gli outlier, che
possono rappresentare errori nel file di dati - o convenzioni arcane per
codificare situazioni insolite, come un anno mancante come 9999 o un
peso mancante a -1 kg, che nessuno</span> <span class="">Ha pensato di dirti.</span></span><span class="" id="result_box" lang="it"><span class="">Gli
esperti di dominio devono essere consultati per spiegare le anomalie, i
valori mancanti, il significato degli interi che rappresentano categorie
piuttosto che le quantità numeriche e così via.</span> <span class="">Le
trame parziali di un attributo contro un altro, o ciascun attributo
rispetto al valore della classe, possono essere estremamente rivelatori.</span></span><br />
<span class="" id="result_box" lang="it"><span class=""> </span></span><span class="" id="result_box" lang="it"><span class="alt-edited">La
pulizia dei dati è una procedura che richiede tempo e richiede molto
lavoro, ma è assolutamente necessaria per un successo nella gestione dei
dati. Con un grande set di dati, spesso le persone rinunciano - come
possono forse controllare tutto? Invece, dovresti esaminare alcune
istanze e esaminarle con attenzione. Sarai sorpreso di ciò che troverai.
Il tempo per "guardare" i tuoi dati è sempre ben speso.</span></span><br />
<h4>
<span class="" id="result_box" lang="it"><span class="alt-edited"> </span></span><span class="short_text" id="result_box" lang="it"><span class="">Ulteriori letture</span></span></h4>
<span class="short_text" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it">Pyle (1999) fornisce un'ampia guida per la preparazione dei dati per la data mining. C'è anche un grande interesse per il data warehousing e per i problemi che comporta. Kimball (1996) offre la migliore introduzione a questi che conosciamo. Cabena et al. <span class="">(1998)
stima che la preparazione dei dati rappresenti il 60% degli sforzi
compiuti in un'applicazione per la data mining e scrivono a lungo circa i
problemi coinvolti.</span></span></span></span><br />
<span class="short_text" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"> L'area della
programmazione logica induttiva, che si occupa di relazioni finite e
infinite, è ricoperta da Bergadano e Gunetti (1996). <span class="">I
diversi "livelli di misura" per gli attributi sono stati introdotti da
Stevens (1946) e sono ben descritti nei manuali per i pacchetti
statistici come SPSS (Nie et al., 1970).</span></span></span></span></span></span><br />
<span class="short_text" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""> </span></span> </span></span></span></span><br />
<h3>
<span class="short_text" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class="">Output:</span></span></span></span><span class="short_text" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="short_text" id="result_box" lang="it"><span class="">Rappresentazione della conoscenza</span></span> </span></span></span></span></h3>
<span class="short_text" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""> La maggior parte delle tecniche in questo libro forniscono una descrizione facilmente comprensibile dei modelli strutturali dei dati. Prima di esaminare come funzionano queste tecniche, dobbiamo vedere come possono essere espressi i modelli strutturali. Esistono molti modi diversi per rappresentare i modelli che possono essere scoperti mediante l'apprendimento automatico, e ognuno impone la tecnica che può essere utilizzata per dedurre la struttura di uscita dai dati. Una volta capito come viene rappresentata l'uscita, 'sei giunto' 'a un lungo cammino' per capire come può essere generato output.</span></span></span></span><br />
<span class="short_text" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class="">Abbiamo
visto molti esempi di data mining nel capitolo 1. In questi casi
l'output ha preso la forma di alberi decisionali e regole di
classificazione, che sono stili di base di conoscenza delle conoscenze
che molti metodi di apprendimento macchina utilizzano.</span> <span class="">La
conoscenza è "veramente troppo imponente" per una struttura di
decisione o una raccolta di regole e usando non intendiamo implicare che
queste strutture si contraggano con il vero tipo di conoscenza che
portiamo nelle nostre teste: è giusto</span> <span class="">Che abbiamo bisogno di una parola per fare riferimento alle strutture che i metodi di apprendimento producono.</span></span> </span></span></span></span><br />
<br />
<span class="short_text" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it">Esistono varietà
più complesse di regole che consentono di specificare eccezioni e
quelle che possono esprimere relazioni tra i valori degli attributi di
diverse istanze. Anche forme numeriche possono essere utilizzate forme speciali di alberi. <span class="">Le
rappresentazioni basate su istanze si concentrano sulle istanze stesse
piuttosto che sulle regole che regolano i valori attributi.</span> Infine, alcuni metodi di apprendimento generano cluster di istanze. <span class="">Questi
diversi metodi di rappresentazione della conoscenza parallela ai
diversi tipi di problemi di apprendimento introdotti nel Capitolo 2.</span></span></span></span></span></span><br />
<h4>
<span class="" id="result_box" lang="it"><span class="">Tabelle di decisione</span></span><span class="short_text" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""> </span></span></span></span></h4>
<span class="short_text" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class="alt-edited">Il
modo più semplice e più rudimentale di rappresentare "l'uscita
dall'apprendimento macchina" è renderlo uguale a quello dell'input - una
tabella di decisione. Ad esempio, la Tabella 1.2 è una tabella delle
decisioni per i dati meteorologici: solo cercare le condizioni
appropriate per decidere se giocare o meno. Meno triviale, la creazione
di una tabella di decisione potrebbe comportare la selezione di alcuni
degli attributi. Se la temperatura non è pertinente alla decisione, ad
esempio, una tabella più piccola e condensata con tale attributo manca
sarebbe una guida migliore. Il problema è ovviamente quello di decidere
quali attributi vanno lasciati fuori senza influenzare la decisione
finale.</span></span></span></span></span></span><br />
<h4>
<span class="short_text" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class="alt-edited"><span class="" id="result_box" lang="it"><span class="">Alberi decisionali</span></span> </span></span> </span></span></span></span></h4>
<span class="short_text" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""></span></span></span></span><span class="short_text" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""></span></span></span></span><span class="short_text" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""> </span></span></span></span><br />
<span class="" id="result_box" lang="it"><span class="">Un
approccio "divide-e-conquista" al problema dell'apprendimento da un
insieme di istanze indipendenti porta naturalmente a uno stile di
rappresentazione chiamato albero decisionale.</span> <span class="">Abbiamo
visto alcuni esempi di alberi decisionali, per le lenti a contatto
(Figura 1.2) e per i contratti di lavoro (Figura 1.3).</span> <span class="">I nodi in una struttura di decisione implicano una prova di un particolare attributo.</span> <span class="">Di solito, il test a un nodo confronta un valore di attributo con una costante.</span> <span class="">Tuttavia, alcuni alberi confrontano due attributi tra di loro, oppure utilizzano una funzione di uno o più attributi.</span> <span class="">I
nodi del foglio forniscono una classificazione che si applica a tutti i
casi che raggiungono la foglia o un insieme di classificazioni o una
distribuzione di probabilità su tutte le classificazioni possibili.</span> <span class="">Per
classificare un'istanza sconosciuta, viene disattivata l'albero in base
ai valori degli attributi testati in nodi successivi e quando viene
raggiunta una foglia, l'istanza viene classificata in base alla classe
assegnata alla foglia.</span></span><br />
<span class="" id="result_box" lang="it"><span class=""> </span></span><span class="" id="result_box" lang="it"><span class="">Se l'attributo testato in un nodo è nominale, il numero di bambini è solitamente il numero di possibili valori dell'attributo.</span> <span class="">In questo caso, poiché c'è un ramo per ogni valore possibile, lo stesso attributo non verrà ripetuto più in basso nell'albero.</span> <span class="">A
volte i valori degli attributi sono suddivisi in due sottoinsiemi e
l'albero si affianca solo due modi a seconda del sottocategoria che il
valore è nell'albero;</span> <span class="">In tal caso, l'attributo potrebbe essere testato più volte in un percorso.</span></span><br />
<span class="" id="result_box" lang="it"><span class=""> </span></span><span class="" id="result_box" lang="it"><span class="">Se
l'attributo è numerico, il test a un nodo determina solitamente se il
suo valore è maggiore o minore di una costante predeterminata, dando una
suddivisione bidirezionale.</span> <span class="">In alternativa, è possibile utilizzare una suddivisione a tre vie, nel qual caso esistono diverse possibilità.</span> <span class="">Se il valore mancante viene considerato come un valore di attributo in proprio, creerà un terzo ramo.</span> <span class="">Un'alternativa per un attributo di valore intero sarebbe una divisione a tre vie in meno, uguali e superiori.</span> <span class="">Un'alternativa
per un attributo reale, per cui uguale a non è un'opzione così
significativa, sarebbe quella di provare ad un intervallo piuttosto che a
una sola costante, ponendo nuovamente una divisione a tre vie: sotto,
dentro e sopra.</span> <span class="">Un attributo numerico viene spesso
testato più volte in un dato percorso lungo l'albero dalla radice alla
foglia, ogni prova che coinvolge una costante diversa.</span> <span class="">Ci riferiamo a descrivere la gestione degli attributi numerici nella Sezione 6.1.</span></span><br />
<span class="" id="result_box" lang="it"><span class=""> </span></span><span class="" id="result_box" lang="it"><span class="">I valori mancanti rappresentano un problema ovvio.</span> <span class="">Non è chiaro quale ramo deve essere assunto quando un nodo prova un attributo il cui valore manca.</span> <span class="">A volte, come descritto nella sezione 2.4, il valore mancante viene considerato come un valore di attributo in proprio.</span> <span class="">Se
questo non è il caso, i valori mancanti dovrebbero essere trattati in
modo speciale, piuttosto che essere considerati come un altro valore
possibile che l'attributo potrebbe assumere.</span> <span class="">Una
soluzione semplice è registrare il numero di elementi nel set di
formazione che scendono verso ogni ramo e utilizzare il ramo più
popolare se manca il valore per un'istanza di prova.</span></span><br />
<span class="" id="result_box" lang="it"><span class=""> </span></span><span class="" id="result_box" lang="it">È istruttivo e può anche essere divertente per costruire manualmente un albero di decisione per un set di dati. <span class="">Per
farlo in modo efficace, è necessario un ottimo modo di visualizzare i
dati in modo da poter decidere quali sono i migliori attributi da
testare e quali prove potrebbero essere.</span> <span class="">L'Explorer
Weka, descritto nella Parte II, dispone di una funzione di
classificazione utenti che consente agli utenti di costruire in modo
interattivo una struttura di decisione.</span> <span class="">Ti presenta una trama di dispersione dei dati contro due attributi selezionati, che scegli.</span> <span class="">Quando
si trova un paio di attributi che discriminano bene le classi, è
possibile creare una suddivisione bidirezionale disegnando un poligono
attorno ai punti dati appropriati sulla trama di dispersione.</span></span><br />
<span class="" id="result_box" lang="it"><span class=""> </span></span><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it">Ad esempio, in
Figura 3.1 (a) l'utente sta operando su un set di dati con tre classi,
il set di dati iride e ha trovato due attributi, lunghezza petali e
larghezza petali, che fanno un buon lavoro di suddividere le classi. Un rettangolo è stato disegnato manualmente per separare una delle classi (Iris versicolor). Poi l'utente passa alla vista dell'albero di decisione nella Figura 3.1 (b) per vedere l'albero finora. Il nodo foglia sinistra contiene prevalentemente iridi di un tipo (Iris versicolor, contaminato da solo due vergini); La mano destra contiene prevalentemente due tipi (Iris setosa e virginica, contaminati da soli due versicolori). <span class="">L'utente
probabilmente selezionerà la foglia a destra e la lavorerà
successivamente, dividendola ulteriormente con un altro rettangolo,
forse basato su una coppia di attributi diversi (anche se, a partire
dalla Figura 3.1 [a], questi due look sono abbastanza buoni).</span></span></span></span><br />
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""> </span></span></span></span><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class="">La sezione 10.2 spiega come utilizzare la funzione di classificazione utenti di Weka.</span> <span class="">La
maggior parte delle persone piace fare le prime decisioni ma
rapidamente perde interesse dopo, e un'opzione molto utile è quella di
selezionare un metodo di apprendimento macchina e lasciarlo prendere in
qualsiasi punto dell'albero di decisione.</span> <span class="">La
costruzione manuale degli alberi decisionali è un buon modo per ottenere
un tatto per l'attività noiosa di valutare diverse combinazioni di
attributi da dividere.</span></span></span></span></span></span><br />
<h4>
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""> </span></span></span></span></span></span><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""> </span></span></span></span></span></span><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span title="Classification rules
">Regole di classificazione</span></span> </span></span> </span></span></span></span></h4>
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span title="Classification rules are a popular alternative to decision trees, and we have already seen examples for the weather (page 10), contact lens (page 13), iris (page 15), and soybean (page 18) datasets.">Le
regole di classificazione sono un'alternativa popolare agli alberi
decisionali e abbiamo già visto esempi per il tempo (pagina 10), lenti a
contatto (pagina 13), iris (pagina 15) e set di dati di soia (pagina
18). </span><span title="The antecedent, or precondition, of a rule is a series of tests just like the tests at nodes in decision trees, and the consequent, or conclusion, gives the class or classes that apply to instances covered by that rule, or perhaps gives a probability">L'antecedente
o la precondizione di una regola è una serie di test, proprio come i
test sui nodi degli alberi decisionali, e la conseguente o la
conclusione dà la classe o le classi che si applicano a istanze coperte
da tale regola o forse dà una probabilità </span><span title="distribution over the classes.">Distribuzione sulle classi. </span><span title="Generally, the preconditions are logically ANDed together, and all the tests must succeed if the rule is to fire.">Generalmente,
le condizioni preliminari sono logicamente ANDate insieme e tutte le
prove devono avere successo se la regola sta per sparare. </span><span title="However, in some rule formulations the preconditions are general logical expressions rather than simple conjunctions.">Tuttavia,
in alcune formule di regola le condizioni preliminari sono espressioni
logiche generali piuttosto che congiunzioni semplici. </span><span title="We often think of the individual rules as being effectively logically ORed together: if any one applies, the class (or probability distribution) given in its conclusion is applied to the instance.">Penseremo
spesso che le regole individuali siano effettivamente logicamente ORed
insieme: se si applica, la classe (o la distribuzione di probabilità)
data nella sua conclusione viene applicata all'istanza. </span><span title="However, conflicts arise when several rules with different conclusions apply;">Tuttavia, si verificano conflitti quando si applicano diverse regole con conclusioni diverse; </span><span title="we will return to this shortly.">Torneremo a questo poco.</span></span></span></span></span></span><br />
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span title="we will return to this shortly."> </span></span></span></span></span></span><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span title="we will return to this shortly."><span class="" id="result_box" lang="it"><span class="">È facile leggere un insieme di regole direttamente da un albero di decisione.</span> <span class="">Una regola viene generata per ciascuna foglia.</span> <span class="">L'antecedente
della regola include una condizione per ogni nodo sul percorso dalla
radice a quella foglia, e la conseguente della regola è la classe
assegnata dalla foglia.</span> <span class="">Questa procedura produce regole che sono inequivocabili in quanto l'ordine in cui vengono eseguite è irrilevante.</span> <span class="">Tuttavia,
in generale, le regole che vengono lette direttamente da un albero di
decisione sono molto più complesse del necessario e le regole derivate
dagli alberi sono solitamente potate per eliminare i test ridondanti.</span></span></span></span></span></span></span></span><br />
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span title="we will return to this shortly."><span class="" id="result_box" lang="it"><span class=""> </span></span></span></span></span></span></span></span><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span title="we will return to this shortly."><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class="">Poiché
gli alberi decisionali non possono facilmente esprimere il disgiunto
implicito tra le diverse regole di un insieme, trasformare un insieme
generale di regole in un albero non è così semplice.</span> <span class="">Una buona illustrazione di questo si verifica quando le regole hanno la stessa struttura ma attributi diversi, come:</span></span></span></span></span></span></span></span></span></span><br />
<br />
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span title="we will return to this shortly."><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""> If a and b then x<br /> If c and d then x<br /> </span></span> </span></span> </span></span> </span></span></span></span><br />
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""> </span></span></span></span><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class="">Quindi è necessario interrompere la simmetria e scegliere un singolo test per il nodo radice.</span> <span class="">Se,
ad esempio, viene scelto uno, la seconda regola deve in effetti
ripetere due volte nell'albero, come mostrato nella Figura 3.2.</span> <span class="">Questo è noto come il problema subtree replicato.</span><br /><span class="">Il problema sottotropo replicato è sufficientemente importante affinché sia opportuno esaminare un paio di altri esempi.</span> <span class="">Il
diagramma a sinistra della figura 3.3 mostra un'esclusiva o una
funzione per cui l'output è a se x = 1 o y = 1, ma non entrambi.</span> <span class="">Per farlo in un albero, devi prima dividere un attributo, portando ad una struttura come quella mostrata nel centro.</span> <span class="">Al
contrario, le regole possono riflettere fedelmente la vera simmetria
del problema rispetto agli attributi, come mostrato a destra.</span></span></span></span></span></span><br />
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""> </span></span></span></span></span></span><span class="" id="result_box" lang="it">In questo esempio le regole non sono notevolmente più compatte dell'albero. <span class="">In realtà, sono proprio quello che si otterrebbe leggendo le regole dall'albero in modo ovvio.</span> <span class="">Ma
in altre situazioni, le regole sono molto più compatte degli alberi,
soprattutto se è possibile avere una regola "predefinita" che copre i
casi non specificati dalle altre regole.</span> <span class="">Ad
esempio, per catturare l'effetto delle regole in Figura 3.4 - in cui
sono presenti quattro attributi, x, y, z e w, ciascuno dei quali può
essere 1, 2 o 3 - richiede l'albero mostrato a destra.</span> <span class="">Ognuno
dei tre piccoli triangoli grigi in alto a destra dovrebbe
effettivamente contenere l'intero sottostrato a tre livelli che viene
visualizzato in grigio, un esempio piuttosto estremo del problema
subtree replicato.</span> <span class="">Questa è una descrizione abbastanza complessa di un concetto piuttosto semplice.</span></span><br />
<span class="" id="result_box" lang="it"><span class=""> </span></span><span class="" id="result_box" lang="it"><span class="">Una delle ragioni per cui le regole sono popolari è che ogni regola sembra rappresentare un "nugget" di conoscenza indipendente.</span> <span class="">È
possibile aggiungere nuove regole a una regola esistente senza
disturbare quelle già esistenti, mentre per aggiungere una struttura ad
albero può richiedere la ridefinizione dell'intero albero.</span> <span class="">Tuttavia, questa indipendenza è qualcosa di illusorio, perché ignora la questione di come viene eseguita la regola.</span> <span class="">Abbiamo
spiegato in precedenza (a pagina 11) il fatto che se le regole devono
essere interpretate in ordine come "lista di decisione", alcune di esse,
presi individualmente e fuori contesto, potrebbero non essere corrette. </span></span><span class="" id="result_box" lang="it"><span class="">D'altra
parte, se l'ordine di interpretazione dovrebbe essere immateriale,
allora non è chiaro cosa fare quando diverse regole conducono a
conclusioni diverse per lo stesso istanza.</span> <span class="">Questa
situazione non può sorgere per le regole che vengono lette direttamente
da un albero di decisione perché la ridondanza inclusa nella struttura
delle regole impedisce ogni ambiguità nell'interpretazione.</span> <span class="">Ma si verifica quando le regole vengono generate in altri modi.</span></span><br />
<span class="" id="result_box" lang="it"><span class=""> </span></span><span class="" id="result_box" lang="it">Se un set di regole offre più classificazioni per un esempio particolare, una soluzione non deve dare alcuna conclusione. Un altro è quello di contare come spesso ogni regola si accende sui dati di allenamento e va con quella più popolare. Queste strategie possono portare a risultati radicalmente diversi. Un problema diverso si verifica quando si incontra un'istanza che le regole non riescono a classificare affatto. Ancora
una volta, questo non può accadere con gli alberi decisionali o con le
regole che si leggono "direttamente da loro", ma può facilmente accadere
con i set di regole generali. Un modo per affrontare questa situazione è quello di non riuscire a classificare un simile esempio; L'altro è quello di scegliere la classe più frequente come predefinita. Anche in questo caso si possono ottenere risultati radicalmente diversi per queste strategie. <span class="">Le
regole individuali sono semplici e le serie di regole sembrano
ingannevolmente semplici, ma date solo un insieme di regole senza
informazioni aggiuntive, non è chiaro come deve essere interpretato.</span></span><br />
<span class="" id="result_box" lang="it"><span class=""> </span></span><span class="" id="result_box" lang="it"><span class="">Una
situazione particolarmente semplice si verifica quando le regole
conducono a una classe booleana (diciamo sì e no) e quando vengono
espresse solo le regole che conducono ad un risultato (si dice sì).</span> <span class="">L'ipotesi
è che se un'istanza particolare non è nella classe sì, allora deve
essere nella classe no - una forma di assunzione mondiale chiusa.</span> <span class="">Se
questo è il caso, le regole non possono confliggere e non c'è ambiguità
nell'interpretazione delle regole: qualsiasi strategia di
interpretazione dà lo stesso risultato.</span> <span class="">Tale
insieme di regole può essere scritto come un'espressione logica in
quella che si chiama forma normale disgiunta: cioè come disgiunzione
(OR) delle condizioni di congiunzione (AND).</span></span><br />
<span class="" id="result_box" lang="it"><span class=""> </span></span><span class="" id="result_box" lang="it"><span class="">È
questo semplice caso speciale che seduce le persone nell'assumere regole
sono molto facili da affrontare, perché qui ogni regola funziona
veramente come un nuovo e indipendente pezzo di informazioni che
contribuisce in modo diretto alla disgiunzione.</span> <span class="">Purtroppo,
si applica solo agli esiti booleani e richiede l'assunzione del mondo
chiuso, e entrambi questi vincoli sono irrealistici nella maggior parte
delle situazioni pratiche.</span> <span class="">Gli algoritmi di
apprendimento macchina che generano regole producono inevitabilmente
regole di regole ordinate in situazioni multiclassiche e questo
sacrifica qualsiasi possabilità di modularità perché l'ordine di
esecuzione è critico.</span></span><br />
<h4>
<span class="" id="result_box" lang="it"><span class=""> </span></span><span class="" id="result_box" lang="it"><span class=""></span></span><span class="" id="result_box" lang="it"><span class=""> </span></span><span class="" id="result_box" lang="it"><span class="">Regole dell'associazione - </span></span><span class="" id="result_box" lang="it"><span class="">Associazione di </span></span><span class="" id="result_box" lang="it"><span class="">Regole </span></span></h4>
<span class="" id="result_box" lang="it"><span class=""> </span></span><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class="">Le
regole di associazione non sono veramente diverse dalle regole di
classificazione, ad eccezione di quelle che possono prevedere qualsiasi
attributo, non solo la classe, e questo dà loro la libertà di prevedere
combinazioni di attributi.</span> <span class="">Inoltre, le regole di associazione non sono destinate ad essere utilizzate assieme come regole di classificazione.</span> <span class="">Diverse
regole di associazione esprimono regolarità diverse che sono alla base
del set di dati e prevedono generalmente diverse cose.</span></span></span></span><br />
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""> </span></span></span></span><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class="">Poiché
tante diverse regole di associazione possono derivare anche da un
piccolo set di dati, l'interesse è limitato a quelli che si applicano a
un numero ragionevolmente elevato di istanze e hanno un'accuratezza
ragionevolmente elevata sulle istanze a cui si applicano.</span> <span class="">La
copertura di una regola di associazione è il numero di istanze per le
quali prevede correttamente - questo è spesso chiamato suo supporto.</span> <span class="">La
sua precisione, spesso chiamata fiducia, è il numero di istanze che
prevede correttamente, espresse in proporzione di tutte le istanze a cui
si applica.</span> <span class="">Ad esempio, con la regola:</span></span></span></span></span></span><br />
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""> </span></span> </span></span></span></span><br />
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""> </span></span></span></span><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class="">If temperature = cool then humidity = normal </span></span></span></span><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""> </span></span> </span></span><br />
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""> </span></span> </span></span> </span></span><br />
<span class="short_text" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""> </span></span></span></span><span class="" id="result_box" lang="it"><span class="">La
copertura è il numero di giorni che sono entrambi freddi e hanno
un'umidità normale (4 giorni nei dati della tabella 1.2), e la
precisione è la proporzione di giorni freddi con umidità normale (100%
in questo caso).</span> <span class="">È solito specificare i valori
minimi di copertura e di precisione e cercare solo quelle regole la cui
copertura e la precisione sono entrambi almeno questi minimi
specificati.</span> <span class="">Nelle informazioni meteo, ad esempio,
ci sono 58 regole la cui copertura e precisione sono almeno
rispettivamente del 2 e del 95%.</span> <span class="">(Può anche essere conveniente specificare la copertura come percentuale del numero totale di istanze.)</span></span><br />
<span class="" id="result_box" lang="it"><span class=""> </span></span><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class="">Le regole dell'associazione che prevedono molteplici conseguenze devono essere interpretate piuttosto con attenzione.</span> <span class="">Ad esempio, con i dati meteorologici riportati nella Tabella 1.2 abbiamo visto questa regola:</span></span></span></span><br />
<br />
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""> If windy = false and play = no then outlook = sunny<br /> and humidity = high</span></span></span></span><br />
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><br /></span></span> </span></span><span class="" id="result_box" lang="it"><span class=""></span></span><br />
<span class="" id="result_box" lang="it"><span class="">Questa non è solo un'espressione stenografica per le due regole distinte:</span></span><br />
<br />
<span class="" id="result_box" lang="it"><span class=""> If windy = false and play = no then outlook = sunny<br /> If windy = false and play = no then humidity = high</span></span><br />
<br />
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""></span></span> </span></span><span class="" id="result_box" lang="it"><span class=""></span></span><br />
<span class="" id="result_box" lang="it"><span class="">Significa infatti che questi superano la copertura minima e le cifre di precisione - ma implica anche di più.</span> <span class="">La
regola originale significa che il numero di esempi che non sono in
gioco, non giocando, con una prospettiva soleggiata e un'alta umidità, è
almeno pari alla minima copertura minima specificata.</span> <span class="">Significa
anche che il numero di tali giorni, espressi in proporzione di giorni
non giocati, non è almeno la minima precisione indicata.</span> <span class="">Ciò implica che la regola</span></span><br />
<br />
<span class="" id="result_box" lang="it"><span class=""> If humidity = high and windy = false and play = no<br /> then outlook = sunny<br /> </span></span><br />
<span class="" id="result_box" lang="it"><span class=""> </span></span><span class="" id="result_box" lang="it"><span class="alt-edited">Perchè
ha la stessa copertura della regola originale e la sua precisione deve
essere almeno altrettanto elevata rispetto alla regola originale poiché
il numero di giorni di alta umidità, "non ventoso" non è necessariamente
inferiore a quello dei giorni "non ventoso, non giocando'i - che rende
l'accuratezza maggiore.</span></span><br />
<span class="" id="result_box" lang="it"><span class="alt-edited"> </span></span><span class="" id="result_box" lang="it"><span class="alt-edited"> </span></span><span class="" id="result_box" lang="it"><span class=""> </span></span><span class="" id="result_box" lang="it"><span class="">Come abbiamo visto, esistono relazioni tra regole di associazione particolari: alcune regole implicano altri.</span> <span class="">Per
ridurre il numero di regole che vengono prodotte, nel caso in cui siano
correlate più regole, è opportuno presentare solo l'utente più forte.</span> <span class="">Nell'esempio precedente, solo la prima regola dovrebbe essere stampata.</span></span><br />
<h4>
<span class="" id="result_box" lang="it"><span class=""> </span></span><span class="" id="result_box" lang="it"><span class="">Regole con eccezioni</span></span></h4>
<span class="" id="result_box" lang="it"><span class=""> </span></span><span class="" id="result_box" lang="it"><span class="">Tornando alle regole di classificazione, un'estensione naturale è consentire loro di avere eccezioni.</span> <span class="">Quindi
possono essere apportate modifiche incrementali a una regola impostata
esprimendo eccezioni alle regole esistenti piuttosto che riorganizzare
l'intero set.</span> <span class="">Ad esempio, considerare il problema dell'iride descritto in precedenza.</span> <span class="">Supponiamo
che sia stato trovato un nuovo fiore con le dimensioni riportate nella
Tabella 3.1 e un esperto ha dichiarato di essere un'istanza di Iris
setosa.</span> <span class="">Se questo fiore fosse classificato secondo
le regole del capitolo 1 (pagine 15-16) per questo problema, sarebbe
erroneamente classificato da due di essi:</span></span><br />
<br />
<span class="" id="result_box" lang="it"><span class=""> If petal length ≥ 2.45 and petal length < 4.45 then Iris versicolor<br /> If petal length ≥ 2.45 and petal length < 4.95 and<br /> petal width < 1.55 then Iris versicolor</span></span><br />
<span class="" id="result_box" lang="it"><span class=""> </span></span><span class="" id="result_box" lang="it"><span class="">Queste regole richiedono la modifica in modo che la nuova istanza possa essere trattata correttamente.</span> <span class="">Tuttavia,
semplicemente modificando i limiti per i test di valore attributo in
queste regole potrebbe non essere sufficiente perché le istanze
utilizzate per creare l'insieme di regole possono essere miscelati.</span> <span class="">Il fissaggio di un set di regole non è semplice come sembra.</span></span><br />
<span class="" id="result_box" lang="it"><span class=""> </span></span><span class="" id="result_box" lang="it"><span class="">Invece
di modificare i test nelle regole esistenti, potrebbe essere consultato
un esperto per spiegare perché il nuovo fiore li violasse, ricevendo
spiegazioni che potrebbero essere utilizzate per estendere solo le norme
rilevanti.</span> <span class="">Ad esempio, la prima di queste due regole misclassifica la nuova Iris setosa come un'istanza del genere Iris versicolor.</span> <span class="">Invece
di alterare i limiti di una qualsiasi delle disuguaglianze nella
regola, un'eccezione può essere fatta in base ad un altro attributo:</span></span><br />
<br />
<span class="" id="result_box" lang="it"><span class=""> If petal length ≥ 2.45 and petal length < 4.45 then<br /> Iris versicolor EXCEPT if petal width < 1.0 then Iris setosa</span></span><br />
<br />
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""></span></span> </span></span><span class="" id="result_box" lang="it"><span class=""></span></span><br />
<span class="" id="result_box" lang="it"><span class="">Questa
regola dice che un fiore è Iris versicolor se la lunghezza del petalo è
tra 2.45 e 4.45 cm, eccetto quando la larghezza del petalo è inferiore a
1.0 cm, nel qual caso è Iris setosa.</span><br /><span class="">Naturalmente,
potremmo avere eccezioni alle eccezioni, alle eccezioni di questi, e
così via, dando alla regola qualcosa di carattere di un albero.</span> <span class="">Oltre
ad essere utilizzato per apportare modifiche incrementali ai set di
regole esistenti, le regole con eccezioni possono essere utilizzate per
rappresentare in primo luogo l'intera descrizione concettuale.</span></span><br />
<span class="" id="result_box" lang="it"><span class=""> </span></span><span class="" id="result_box" lang="it"><span class="">La
Figura 3.5 mostra un insieme di regole che classificano correttamente
tutti gli esempi nel dataset di Iris dato in precedenza (pagine 15-16).</span> <span class="">Queste regole sono piuttosto difficili da comprendere in un primo momento.</span> Andiamo avanti. <span class="">È stato scelto un risultato predefinito, Iris setosa, ed è mostrato nella prima riga.</span> <span class="">Per questo set di dati, la scelta del default è piuttosto arbitraria perché esiste 50 esempi di ciascun tipo.</span> <span class="">Normalmente, l'esito più frequente viene scelto come predefinito.</span></span><br />
<span class="" id="result_box" lang="it"><span class=""> </span></span><span class="" id="result_box" lang="it"><span class="">Le regole successive danno eccezioni a questo default.</span> Il primo se. . . <span class="">Quindi, sulle righe da 2 a 4, fornisce una condizione che porta alla classificazione Iris versicolor.</span> <span class="">Tuttavia, ci sono due eccezioni a questa regola (righe da 5 a 8), che tratteremo in un momento.</span> <span class="">Se
le condizioni sulle righe 2 e 3 non sono riuscite, viene raggiunta
l'altra clausola nella riga 9, che stabilisce essenzialmente una seconda
eccezione rispetto all'originale originale.</span> <span class="">Se la condizione sulla riga 9 è in possesso, la classificazione è Iris virginica (riga 10).</span> <span class="">Ancora una volta, esiste un'eccezione a questa regola (alle righe 11 e 12).</span></span><br />
<span class="" id="result_box" lang="it"><span class=""> </span></span><span class="" id="result_box" lang="it"><span class="">Ora
ritorni all'eccezione sulle linee da 5 a 8. Questo sovrascrive la
conclusione di Iris versicolor sulla riga 4 se uno dei test sulle righe 5
e 7 è in possesso.</span> <span class="">Come accade, queste due eccezioni portano alla stessa conclusione, Iris virginica (righe 6 e 8).</span> <span class="">L'eccezione
finale è quella sulle righe 11 e 12, che sovrascrive la conclusione di
virginica Iris sulla linea 10 quando la condizione sulla linea 11 è
soddisfatta e porta alla classificazione Iris versicolor.</span></span><br />
<span class="" id="result_box" lang="it"><span class=""> </span></span><span class="" id="result_box" lang="it"><span class=""> </span></span><span class="" id="result_box" lang="it">Avrete probabilmente
bisogno di riflettere su queste regole per qualche minuto prima che
diventi chiaro come siano destinate alla lettura. Anche se ci vuole un
po 'di tempo per abituarci a leggerli, risolvendo le eccezioni e se. . .
poi . . . Elses diventa più facile con familiarità. Le persone spesso
pensano a problemi reali in termini di regole, eccezioni e eccezioni
alle eccezioni, quindi è spesso un ottimo modo per esprimere un insieme
di regole complesse. Ma il punto principale a favore di questo modo di
rappresentare le regole è che si scala bene. Sebbene l'insieme di regole
sia un po 'difficile da comprendere, ogni singola conclusione, ogni
singola dichiarazione, può essere considerata solo nel contesto delle
regole e delle eccezioni che lo portano; Mentre con elenchi di decisione
tutte le regole precedenti devono essere riesaminate per determinare
l'effetto preciso di una regola individuale. Questa proprietà di
località è cruciale quando si cerca di capire le serie di regole di
grandi dimensioni. Psicologicamente, le persone che hanno familiarità
con i dati pensano a un particolare insieme di casi, o un tipo di caso,
quando si esamina una conclusione nella struttura di eccezione e quando
uno di questi casi risulta essere un'eccezione alla conclusione, è
facile aggiungere 'una clausola eccezionale' per soddisfarla.</span><br />
<span class="" id="result_box" lang="it"> </span><span class="" id="result_box" lang="it"><span class="alt-edited">Vale
la pena sottolineare che il default. . . tranne che . . . poi . . . La
struttura è logicamente equivalente a se. . . poi . . . altro . . .,
Dove l'altro è incondizionato e specifica esattamente quello che
l'impostazione predefinita ha fatto. Un altro incondizionato è
ovviamente un default. (Si noti che non ci sono elenchi incondizionati
nelle regole precedenti.) Logicamente, le regole basate sulle eccezioni
possono essere semplicemente riscritte in termini di regolare se. . .
poi . . . Altre clausole. Ciò che si ottiene dalla formulazione in
termini di eccezioni non è logico ma psicologico. Supponiamo che i
valori predefiniti e le prove che si verificano presto si applicano più
ampiamente alle eccezioni più in basso. Se questo è veramente vero per
il dominio e l'utente può vedere che è plausibile, l'espressione in
termini di regole (comuni) e (rare) eccezioni sarà più facile da
cogliere di una struttura diversa, ma logicamente equivalente.</span></span><br />
<h4>
<span class="" id="result_box" lang="it"><span class="alt-edited"> </span></span><span class="" id="result_box" lang="it"><span class="">Regole che coinvolgono relazioni</span></span></h4>
<span class="" id="result_box" lang="it"><span class=""> </span></span><span class="" id="result_box" lang="it"><span class=""> </span></span><span class="" id="result_box" lang="it"><span class="">Abbiamo assunto implicitamente che le condizioni delle regole comportano la prova di un valore di attributo contro una costante.</span> <span class="">Tali
regole sono chiamate proposizionali perché il linguaggio di
attributo-valore usato per definirli ha lo stesso potere di quello che i
logici chiamano il calcolo proposizionale.</span> <span class="">In
molte attività di classificazione, le regole proposizionali sono
sufficientemente espressive per le descrizioni concettuali e precise del
concetto.</span> <span class="">Ad esempio, il tempo, la
raccomandazione delle lenti a contatto, il tipo di iris e
l'accettabilità dei set di dati per contratto di lavoro menzionato in
precedenza sono ben descritti da regole propositive.</span> <span class="">Tuttavia,
ci sono situazioni in cui una forma più espressiva di regole fornirà
una descrizione concettuale più intuitiva e concisa, e queste sono
situazioni che implicano rapporti tra esempi come quelli incontrati
nella sezione 2.2.</span></span><br />
<span class="" id="result_box" lang="it"><span class=""> </span></span><span class="" id="result_box" lang="it"><span class="">Supponiamo,
per fare un esempio concreto, abbiamo l'insieme di otto blocchi di
costruzione delle varie forme e dimensioni illustrate nella Figura 3.6 e
vogliamo imparare il concetto di standing.</span> <span class="">Questo è un classico problema a due classi con classi in piedi e mentendo.</span> <span class="">I
quattro blocchi ombreggiati sono esempi positivi (in piedi) del
concetto e i blocchi non tamponati sono esempi negativi (bugiardi).</span> <span class="">Le
uniche informazioni che verrà data l'algoritmo di apprendimento sono la
larghezza, l'altezza e il numero dei lati di ogni blocco.</span> <span class="">I dati formativi sono mostrati nella tabella 3.2.</span><br /><span class="">Un set di regole proposizionali che potrebbe essere prodotto per questi dati è:</span></span><br />
<br />
<span class="" id="result_box" lang="it"><span class=""> if width ≥ 3.5 and height < 7.0 then lying<br /> if height ≥ 3.5 then standing</span></span><br />
<span class="" id="result_box" lang="it"><span class=""><br /></span></span><span class="" id="result_box" lang="it"><span class=""> </span></span><br />
<span class="" id="result_box" lang="it">Nel caso in cui
si sta chiedendo, 3.5 è scelto come punto di interruzione per la
larghezza, perché è a metà tra la larghezza del blocco mentale più
sottile, cioè 4, e la larghezza del blocco fisso più grande che ha una
altezza inferiore a 7, vale a dire 3. Inoltre , 7,0 viene
scelto come punto di interruzione dell'altezza perché è a metà tra
l'altezza del blocco più alto, cioè 6, e il blocco più corto più largo,
la cui larghezza è maggiore di 3,5, vale a dire 8. È comune collocare le
soglie numeriche a metà tra Valori che delimitano i confini di un concetto.<br /> Anche se queste due regole funzionano bene sugli esempi forniti, non sono molto buoni. <span class="">Molti
blocchi nuovi non sarebbero classificati da alcuna regola (ad esempio,
uno con larghezza 1 e altezza 2) e è facile elaborare molti blocchi
legittimi che le regole non si adattano.</span></span><br />
<span class="" id="result_box" lang="it"><span class=""> </span></span><span class="" id="result_box" lang="it"><span class=""> </span></span><span class="" id="result_box" lang="it"><span class="">Una
persona che classifica gli otto blocchi avrebbe probabilmente notato che
"i blocchi in piedi sono quelli più alti di quelli ampi". Questa regola
non confronta i valori degli attributi con le costanti, confronta gli
attributi tra loro:</span></span><br />
<br />
<span class="" id="result_box" lang="it"><span class="">if width > height then lying<br />if height > width then standing<br /> </span></span><br />
<span class="" id="result_box" lang="it"><span class=""> </span></span><span class="" id="result_box" lang="it"><span class="">I valori effettivi degli attributi di altezza e larghezza non sono importanti;</span> Solo il risultato di confrontare i due. <span class="">Le
regole di questa forma sono chiamate relazionali, perché esprimono
rapporti tra attributi, piuttosto che proposizionale, che indica un
fatto su un solo attributo.</span></span><br />
<span class="" id="result_box" lang="it"><span class=""> </span></span><span class="" id="result_box" lang="it">Le relazioni
standard includono l'uguaglianza (e la disuguaglianza) per gli attributi
nominali e meno e più che per quelli numerici. Anche se i
nodi relazionali potrebbero essere messi in alberi decisionali proprio
come le condizioni relazionali possono essere messe in regole, gli
schemi che ospitano le relazioni generalmente utilizzano la regola
piuttosto che la rappresentazione dell'albero. <span class="">Tuttavia,
la maggior parte dei metodi di apprendimento delle macchine non
considera le regole relazionali perché c'è un costo considerevole nel
farlo.</span> <span class="">Un modo per consentire a un metodo
proposizionale di utilizzare i rapporti è quello di aggiungere attributi
extra, secondari che dicono se due attributi principali sono uguali o
non, o dare la differenza tra di loro se sono numerici.</span> <span class="">Ad esempio, è possibile aggiungere un attributo binario di larghezza <altezza?</span> <span class="">Alla tabella 3.2.</span> <span class="">Questi attributi vengono spesso aggiunti come parte del processo di elaborazione dati.</span></span><br />
<span class="" id="result_box" lang="it"><span class=""> </span></span><span class="" id="result_box" lang="it"><span class="">Con un
aumento apparentemente piuttosto "piccolo", il potere espressivo della
rappresentazione relazionale della conoscenza può essere esteso molto.</span> <span class="">Il trucco è quello di esprimere le regole in modo che esplica il "ruolo dell'istanza":</span></span><br />
<br />
<span class="" id="result_box" lang="it"><span class="">if width(block) > height(block) then lying(block)<br />if height(block) > width(block) then standing(block)<br /> </span></span><br />
<span class="" id="result_box" lang="it"><span class=""> </span></span><span class="" id="result_box" lang="it"><span class="">Anche se questo non sembra molto di un'estensione, è che se le istanze possono essere decomposte in parti.</span> <span class="">Ad
esempio, se una torre è un mucchio di blocchi, uno sopra l'altro,
allora il fatto che il blocco superiore della torre è in piedi può
essere espresso da:</span></span><br />
<br />
<span class="" id="result_box" lang="it"><span class="">if height(tower.top) > width(tower.top) then standing(tower.top)<br /> </span></span><br />
<span class="" id="result_box" lang="it"><span class=""> </span></span><span class="" id="result_box" lang="it">Qui, tower.top viene utilizzato per fare riferimento al blocco superiore. Finora, nulla è stato guadagnato. <span class="">Ma
se "tower.rest" si riferisce al resto della torre, allora il fatto che
la torre è composta interamente di blocchi permanenti può essere
espressa dalle regole:</span></span><br />
<br />
<span class="" id="result_box" lang="it"><span class=""> if height(tower.top) > width(tower.top) then standing(tower.top)</span></span><br />
<span class="" id="result_box" lang="it"><span class=""><br /></span></span>
<span class="" id="result_box" lang="it">Qui, tower.top viene utilizzato per fare riferimento al blocco superiore. Finora, nulla è stato guadagnato. <span class="">Ma
se "tower.rest" si riferisce al resto della torre, allora il fatto che
la torre è composta interamente di blocchi permanenti può essere
espressa dalle regole:</span></span><br />
<br />
<span class="" id="result_box" lang="it"><span class=""> if height(tower.top) > width(tower.top) and standing(tower.rest)<br /> then standing(tower)</span></span><br />
<span class="" id="result_box" lang="it"><span class=""> </span></span><span class="" id="result_box" lang="it"><span class="">L'aggiunta
apparentemente minima della condizione in piedi (tower.rest) è
un'espressione ricorsiva che si rivelerà vera solo se il resto della
torre è composto da blocchi permanenti.</span> <span class="">Una applicazione ricorsiva della stessa regola verificherà questo. </span><span class="">Naturalmente,
è necessario assicurarsi che la ricorsione "si esaurisca" correttamente
aggiungendo un'altra regola, come ad esempio:</span></span><span class="" id="result_box" lang="it"><span class=""> </span></span><br />
<span class="" id="result_box" lang="it"><span class=""><br /></span></span><span class="" id="result_box" lang="it"><span class=""> </span></span><br />
<span class="" id="result_box" lang="it"><span class="">if tower = empty then standing(tower.top)</span></span><br />
<span class="" id="result_box" lang="it"><span class=""><br /></span></span><span class="" id="result_box" lang="it"><span class=""> </span></span><br />
<span class="" id="result_box" lang="it"><span class="">Con
questa aggiunta, le regole relazionali possono esprimere concetti che
non possono essere espressamente proposti, in quanto la ricorsione può
avvenire su elenchi arbitrariamente lunghi di oggetti.</span> <span class="">I
set di regole come questo sono chiamati programmi logici e questa area
di apprendimento automatico è chiamata <b>programmazione logica induttiva.</b></span> <span class="">Non lo tratteremo ulteriormente in questo libro.</span></span><br />
<h4>
<span class="short_text" id="result_box" lang="it"><span class="">Alberi per la previsione numerica</span></span></h4>
<span class="short_text" id="result_box" lang="it"><span class=""> </span></span><span class="" id="result_box" lang="it"><span class="">Il tipo
di alberi decisionali e le regole che stiamo esaminando sono progettati
per predire categorie piuttosto che quantità numeriche.</span> <span class="">Quando
si tratta di predire numeri numerici, come nei dati delle prestazioni
della CPU nella tabella 1.5, è possibile utilizzare lo stesso tipo di
rappresentazione di albero o regola, ma i nodi fogli dell'albero o del
lato destro delle regole contengono</span> <span class="">Un valore
numerico che è la media di tutti i valori impostati per l'allenamento a
cui la foglia o la regola si applica perché gli statisti usano il
termine regressione per il processo di calcolo di un'espressione che
prevede una quantità numerica, gli alberi decisionali con valori
numerici medi sulle foglie</span> <span class="">Sono chiamati alberi di regressione.</span></span><br />
<span class="" id="result_box" lang="it"><span class=""> </span></span><span class="" id="result_box" lang="it"><span class="">La
Figura 3.7 (a) mostra un'equazione di regressione per i dati sulle
prestazioni della CPU, e la Figura 3.7 (b) mostra un albero di
regressione.</span> <span class="">Le foglie dell'albero sono numeri che rappresentano il risultato medio per i casi che raggiungono la foglia.</span> <span class="">L'albero
è molto più grande e più complesso dell'equazione di regressione e, se
calcoliamo la media dei valori assoluti degli errori tra le misure
previste e le effettive prestazioni della CPU, risulterà
significativamente meno per l'albero che per la regressione</span> <span class="">equazione.</span> <span class="">L'albero di regressione è più accurato in quanto un semplice modello lineare rappresenta male i dati in questo problema.</span> <span class="">Tuttavia, l'albero è ingombrante e difficile da interpretare a causa della sua grande dimensione.</span></span><br />
<span class="" id="result_box" lang="it"><span class=""> </span></span><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class="">È possibile combinare equazioni di regressione con gli alberi di regressione.</span> <span class="">La
Figura 3.7 (c) è un albero le cui foglie contengono espressioni
lineari, ovvero le equazioni di regressione, piuttosto che singoli
valori predittivi.</span> <span class="">Questo è (leggermente confuso) chiamato un albero del modello.</span> <span class="">La Figura 3.7 (c) contiene i sei modelli lineari che appartengono alle sei foglie, etichettate da LM1 a LM6.</span> <span class="">L'albero
del modello approssima le funzioni continue dalle "patch" lineari, una
rappresentazione più sofisticata rispetto agli alberi di regressione o
regressione lineare.</span> <span class="">Anche se l'albero del modello
è più piccolo e più comprensibile dell'albero di regressione, i valori
medi di errore sui dati di addestramento sono più bassi.</span> <span class="">(Tuttavia,
nel Capitolo 5 vedremo che il calcolo dell'errore medio sul set di
formazione non è in generale un buon modo per valutare le prestazioni
dei modelli.)</span></span></span></span><br />
<h4>
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""> </span></span></span></span><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""> </span></span> </span></span><span class="" id="result_box" lang="it"><span title="Instance-based representation
">Rappresentazione basato su istanza</span></span></h4>
<span class="" id="result_box" lang="it"><span title="Instance-based representation
"><span class="" id="result_box" lang="it"><span title="The simplest form of learning is plain memorization, or rote learning.">La forma più semplice di apprendimento è la semplice memorizzazione, o l'apprendimento automatico. </span><span title="Once a set of training instances has been memorized, on encountering a new instance the memory is searched for the training instance that most strongly resembles the new one.">Una
volta memorizzate una serie di istruzioni di formazione, quando si
incontra una nuova istanza, viene ricercata la memoria per l'istanza di
addestramento che rispecchia fortemente la nuova. </span><span title="The only problem is how to interpret “resembles”: we will explain that shortly.">L'unico problema è come interpretare "assomiglia": ci spiegheremo a breve. </span><span title="First, however, note that this is a completely different way of representing the “knowledge” extracted from a set of instances: just store the instances themselves and operate by relating new instances whose class is unknown to existing ones whose class is known.">Innanzitutto,
però, notare che questo è un modo completamente diverso di
rappresentare la "conoscenza" estratta da un insieme di istanze: basta
memorizzare le istanze stesse e operare collegando nuovi istanze la cui
classe è sconosciuta a quelli esistenti la cui classe è conosciuta. </span><span title="Instead of trying to create rules, work directly from the examples themselves.">Invece di cercare di creare regole, lavorare direttamente dagli esempi stessi. </span><span title="This is known as instance-based learning.">Questo è conosciuto come apprendimento basato su istanze. </span><span title="In a sense all the other learning methods are “instance-based,” too, because we always start with a set of instances as the initial training information.">In
un certo senso tutti gli altri metodi di apprendimento sono "basati
sull'istanza", perché cominciamo sempre con un insieme di istanze come
le informazioni di formazione iniziali. </span><span title="But the instance-based knowledge representation uses the instances themselves to represent what is learned, rather than inferring a rule set or decision tree and storing it instead.">Ma
la rappresentazione di conoscenza basata su istanze utilizza le istanze
stesse per rappresentare ciò che viene appreso, invece di inferire un
set di regole o un albero di decisione e memorizzarlo.</span></span></span></span><br />
<span class="" id="result_box" lang="it"><span title="Instance-based representation
"><span class="" id="result_box" lang="it"><span title="But the instance-based knowledge representation uses the instances themselves to represent what is learned, rather than inferring a rule set or decision tree and storing it instead."> </span></span></span></span><span class="" id="result_box" lang="it"><span class="">Nell'apprendimento
basato su istanze, tutto il lavoro reale viene fatto quando è il
momento di classificare una nuova istanza piuttosto che quando viene
elaborato il set di formazione.</span> <span class="">In un certo senso,
quindi, la differenza tra questo metodo e gli altri che abbiamo visto è
il momento in cui avviene l'apprendimento.</span> <span class="">L'apprendimento
basata su istanze è pigro, deferendo il lavoro reale il più a lungo
possibile, mentre altri metodi sono desiderosi, generando una
generalizzazione non appena i dati sono stati visti.</span> <span class="">In
apprendimento basato su istanze, ogni nuova istanza viene confrontata
con quelle esistenti utilizzando una metrica a distanza e l'istanza
esistente più vicina viene utilizzata per assegnare la classe a quella
nuova.</span> <span class="">Questo è il metodo di classificazione più vicino.</span> <span class="">A
volte viene utilizzato più di un vicino vicino e la classe di
maggioranza dei vicini vicini k (o la media ponderata per distanza, se
la classe è numerica) viene assegnata alla nuova istanza.</span> <span class="">Questo è chiamato il metodo k-nearest-neighbor.</span></span><br />
<span class="" id="result_box" lang="it"><span class=""> </span></span><span class="" id="result_box" lang="it">Calcolare la
distanza tra due esempi è banale quando gli esempi hanno un solo
attributo numerico: è solo la differenza tra i due valori
dell'attributo. <span class="">È quasi così semplice quando ci sono diversi attributi numerici: generalmente viene utilizzata la distanza standard Euclidea.</span> <span class="">Tuttavia,
questo presuppone che gli attributi siano normalizzati e siano di pari
importanza, e uno dei principali problemi nell'apprendimento è quello di
determinare quali sono le caratteristiche importanti.</span></span><br />
<span class="" id="result_box" lang="it"><span class=""> </span></span><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class="">Quando sono presenti attributi nominali, è necessario trovare una "distanza" tra diversi valori di tale attributo.</span> <span class="">Quali sono le distanze tra, per esempio, i valori rossi, verdi e blu?</span> <span class="">Di solito viene assegnata una distanza di zero se i valori sono identici;</span> Altrimenti la distanza è una. <span class="">Quindi la distanza tra rosso e rosso è zero, ma quella tra rosso e verde è una.</span> <span class="">Tuttavia, può essere desiderabile utilizzare una rappresentazione più sofisticata degli attributi.</span> <span class="">Ad
esempio, con più colori si potrebbe usare una misura numerica di
tonalità nello spazio colore, rendendo il colore giallo più vicino
all'arancio rispetto a quello verde e ocra ancora più vicino.</span> <span class="">Alcuni
attributi saranno più importanti di altri e questo viene spesso
riflessa nella metrica a distanza con una qualche ponderazione di
attributo.</span> <span class="">La derivazione di pesi attributi adeguati dal set di formazione è un problema fondamentale nell'apprendimento basato su istanze.</span></span></span></span><br />
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""> </span></span></span></span><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it">Potrebbe non essere necessario, o desiderabile, memorizzare tutte le istanze di formazione. Per una cosa, questo può rendere il calcolo del vicino prossimo insopportabile lentamente. Per un altro, può consumare quantità irrealistiche di stoccaggio. Generalmente,
alcune regioni dello spazio degli attributi sono più stabili rispetto
ad altri rispetto alla classe e solo pochi esemplari sono necessari
all'interno di regioni stabili. Ad esempio, si potrebbe
aspettare che la densità richiesta di esemplari che si trovino bene
all'interno dei confini della classe sia molto inferiore alla densità
necessaria nei limiti delle classi. <span class="">Decidere quali istanze da salvare e quali scartare è un altro problema fondamentale nell'apprendimento basato su un esempio.</span></span></span></span></span></span><br />
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""> </span></span></span></span></span></span><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span title="An apparent drawback to instance-based representations is that they do not make explicit the structures that are learned.">Un
inconveniente apparente per le rappresentazioni basate su istanze è che
non rendono esplicite le strutture che vengono apprese. </span><span title="In a sense this violates the notion of “learning” that we presented at the beginning of this book;">In un certo senso questo viola la nozione di "apprendimento" che abbiamo presentato all'inizio di questo libro; </span><span title="instances 'do not really “describe”' the patterns in data.">Istanze "non descrivono" i modelli dei dati ". </span><span title="However, the instances combine with the distance metric 'to carve out boundaries' in instance space that distinguish one class from another, and this is a kind of explicit representation of knowledge.">Tuttavia,
i casi si combinano con la metrica di distanza 'per scolpire i confini'
in uno spazio di esempio che distingue una classe dall'altra, e questa è
una specie di rappresentazione esplicita della conoscenza. </span></span></span></span></span></span></span></span><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span title="However, the instances combine with the distance metric 'to carve out boundaries' in instance space that distinguish one class from another, and this is a kind of explicit representation of knowledge."><span class="" id="result_box" lang="it"><span class="">Ad
esempio, data un'unica istanza di ciascuna di due classi, la regola di
prossimità più vicina divide effettivamente lo spazio di istanza lungo
"il bisettore perpendicolare" della "linea che unisce" le istanze.</span></span></span><span title="For example, given a single instance of each of two classes, the nearest-neigh-bor rule effectively splits the instance space along 'the perpendicular bisector' 'of the line joining' the instances.">. </span><span title="Given several instances of each class, the space is divided by a set of lines that represent the perpendicular bisectors of selected lines joining an instance of one class to one of another class.">Dato
diverse istanze di ogni classe, lo spazio è diviso da un insieme di
righe che rappresentano i bisettori perpendicolari di linee selezionate
che uniscono un'istanza di una classe a una di un'altra classe. </span><span title="Figure 3.8(a) illustrates a nine-sided polygon that separates 'the filled-circle' class from 'the opencircle class'.">La figura 3.8 (a) illustra un poligono a nove facciate che separa la classe "cerchio riempito" dalla "classe opencircle". </span><span title="This polygon is implicit in the operation of the nearest-neighbor rule.">Questo poligono è implicito nel funzionamento della regola più vicina.</span></span></span></span></span></span></span></span><br />
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span title="This polygon is implicit in the operation of the nearest-neighbor rule."> </span></span></span></span></span></span></span></span><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span title="This polygon is implicit in the operation of the nearest-neighbor rule."><span class="" id="result_box" lang="it"><span class="">Quando i casi di formazione sono scartati, il risultato è quello di salvare solo alcuni esempi prototipali di ogni classe.</span> <span class="">La
figura 3.8 (b) mostra come cerchi scuri solo gli esempi effettivamente
utilizzati nelle decisioni più vicine: gli altri (quelli grigi) possono
essere scartati senza influenzare il risultato.</span> <span class="">Questi esempi prototipi rappresentano una sorta di esplicita rappresentazione della conoscenza.</span></span></span></span></span></span></span></span></span></span><br />
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span title="This polygon is implicit in the operation of the nearest-neighbor rule."><span class="" id="result_box" lang="it"><span class=""> </span></span></span></span></span></span></span></span></span></span><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span title="This polygon is implicit in the operation of the nearest-neighbor rule."><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it">Alcune rappresentazioni basate su istanze vanno oltre ed esplicitamente generalizzano le istanze. <span class="">In genere, questo è compiuto creando regioni rettangolari che racchiudono esempi della stessa classe.</span> <span class="">La Figura 3.8 (c) mostra le regioni rettangolari che potrebbero essere prodotte.</span> <span class="">Esempi sconosciuti che rientrano in uno dei rettangoli saranno assegnati alla classe corrispondente;</span> <span class="">Quelli che escono da tutti i rettangoli saranno soggetti alla solita regola più vicina.</span> <span class="">Ovviamente
questo produce diversi confini di decisione dalla semplice regola del
prossimo vicino, come si può vedere sovrapponendo il poligono nella
figura 3.8 (a) sui rettangoli.</span> <span class="">Qualsiasi parte del
poligono che si trova all'interno di un rettangolo sarà tagliata fuori e
sostituita dal confine del rettangolo.</span></span></span></span></span></span></span></span></span></span></span></span><br />
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span title="This polygon is implicit in the operation of the nearest-neighbor rule."><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""> </span></span></span></span></span></span></span></span></span></span></span></span><span class="" id="result_box" lang="it"><span class="">Le
generalizzazioni rettangolari nello spazio di esempio sono proprio come
le regole con una forma speciale di condizione, quella che esegue una
variabile numerica contro un limite superiore e inferiore e seleziona la
regione in mezzo.</span> <span class="alt-edited">Diverse dimensioni del rettangolo corrispondono ai test su diversi attributi che sono ANDed insieme.</span> <span class="">La
scelta di regioni rettangolari "aderenti", poiché i test conducono a
regole molto più conservatrici di quelle generalmente prodotte da metodi
di apprendimento basati su regole, poiché per ogni confine della
regione esiste un'istanza reale che si trova (o all'interno)</span> . <span class="">Test
come x <a (dove x è un valore di attributo e una è una costante)
comprendono un intero mezzo spazio, si applicano non importa quanto
piccola x sia finché è inferiore a.</span> <span class="">Quando si
effettua una generalizzazione rettangolare in uno spazio di esempio, si
può permetterti di essere conservatore, perché se si incontra un nuovo
esempio che si trova fuori da tutte le regioni, è possibile tornare alla
metrica più vicina.</span></span><span class="" id="result_box" lang="it"><span class="alt-edited">Questo
è chiamato il metodo k-nearest-neighborCon metodi basati su regole
l'esempio non può essere classificato o riceve solo una classificazione
predefinita se non si applicano regole. Il vantaggio di regole più
conservatrici è che, sebbene incomplete, possono essere più evidenti di
un insieme completo di regole che copre tutti i casi. Infine,
assicurarsi che le regioni non si sovrappongano equivarrebbe a garantire
che al massimo una regola può applicarsi ad un esempio, eliminando
un'altra delle difficoltà dei sistemi basati su regole cosa fare quando
si applicano più regole.</span></span><br />
<span class="" id="result_box" lang="it"><span class="alt-edited"> </span></span><span class="" id="result_box" lang="it"><span class="alt-edited"><span class="" id="result_box" lang="it"><span class="alt-edited">Un
genere più complesso di generalizzazione è quello di permettere alle
regioni rettangolari di nidificarsi uno nell'altro. Poi una regione che è
fondamentalmente tutta una classe può contenere una regione interiore
di una classe diversa, come illustrato nella Figura 3.8 (d). È possibile
consentire la nidificazione "dentro il nidificatore" in modo che la
regione interna possa contenere la propria "regione interna" di una
classe diversa, forse la classe originale della regione esterna ".
Questo è analogo a consentire alle regole di avere eccezioni e eccezioni
alle eccezioni, come nella sezione 3.5.</span></span></span></span><br />
<span class="" id="result_box" lang="it"><span class="alt-edited"><span class="" id="result_box" lang="it"><span class="alt-edited"> </span></span></span></span><span class="" id="result_box" lang="it"><span class="alt-edited"><span class="" id="result_box" lang="it"><span class="alt-edited"> Vale la pena sottolineare un leggero pericolo per la tecnica di visualizzazione dell'apprendimento basato su istanze in termini di confini nello spazio di esempio: fa l'ipotesi implicita che 'gli attributi sono numerici' piuttosto che nominali '. Se i vari valori che 'un attributo nominale' possono avere su 'una linea, le generalizzazioni che coinvolgono un segmento di quella' riga non avrebbero senso ': ogni test comporta un valore per l'attributo o tutti i valori per esso (O forse un sottoinsieme arbitrario di valori). Anche se è possibile "più o meno" facilmente immaginare l'estensione degli esempi nella Figura 3.8 a diverse dimensioni, è molto più difficile immaginare come le regole che implicano 'attributi nominali' appariranno nello spazio di istanze multidimensionali. Molte situazioni di "learning machine" coinvolgono numerosi attributi, e le nostre intuizioni tendono a portare a fuori strada quando si estendono a "spazi di grande dimensione".</span></span></span></span><br />
<h4>
<span class="" id="result_box" lang="it"><span class="alt-edited"><span class="" id="result_box" lang="it"><span class="alt-edited"> </span></span></span></span><span class="" id="result_box" lang="it"><span class="alt-edited"><span class="" id="result_box" lang="it"><span class="alt-edited">Clusters</span></span></span></span></h4>
<span class="" id="result_box" lang="it"><span class="alt-edited"><span class="" id="result_box" lang="it"><span class="alt-edited"> Quando si istruiscono i cluster piuttosto che 'un classificatore', l'output ha la forma di un diagramma che mostra come le istanze appartengono al cluster. Nel caso più semplice, questo comporta l'associazione di un numero di clusters ad ogni istanza, che potrebbe essere rappresentato posizionando le istanze in due dimensioni e partizionando lo spazio per mostrare ciascun cluster, come illustrato nella figura 3.9 (a).</span></span></span></span><br />
<span class="" id="result_box" lang="it"><span class="alt-edited"><span class="" id="result_box" lang="it"><span class="alt-edited"> </span></span></span></span><span class="" id="result_box" lang="it">Alcuni algoritmi
di cluster permettono ad un'istanza di appartenere a più di un cluster,
in modo che il diagramma potrebbe posizionare le istanze in due
dimensioni e sottotitoli "overlay" che rappresentano ciascun cluster "un
diagramma Venn". Alcuni algoritmi associano istanze con i cluster probabilmente anziché categoricamente. In questo caso, per ogni istanza c'è una probabilità o un grado di adesione con cui appartiene a ciascuno dei 'cluster'. Questo è mostrato in Figura 3.9 (c). Questa
particolare associazione deve essere probabilistica, quindi i numeri
per ciascun esempio si sommeranno a uno anche se questo non è sempre il
caso. <span class="">Altri algoritmi producono una struttura
gerarchica di cluster in modo che al livello superiore lo spazio di
istanza si divide in pochi cluster, ognuno dei quali divide in 'suoi
sottogruppi' al livello successivo e così via.</span></span><br />
<span class="" id="result_box" lang="it"><span class=""> I</span></span><span class="" id="result_box" lang="it"><span class="">n
questo caso viene utilizzato un diagramma come quello della figura 3.9
(d), in cui gli elementi riuniti a livelli inferiori sono più cluster di
quelli riuniti a livelli superiori.</span> <span class="">Diagrammi come questo sono chiamati dendrograms.</span> <span class="">Questo
termine significa la stessa cosa dei diagrammi ad albero (la parola
greca dendron significa "un albero"), ma nel raggruppare la versione più
esotica sembra essere preferita, forse perché le specie biologiche sono
un'area primaria di applicazione per le tecniche di clustering e le
antiche lingue</span> <span class="">Sono spesso utilizzati per la denominazione in biologia.</span></span><br />
<span class="" id="result_box" lang="it"><span class=""> </span></span><span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it">Il clustering è
spesso seguito da uno stadio in cui viene determinato un insieme di
decisioni o regole che alloca ciascuna istanza al cluster in cui
appartiene. <span class="">Quindi, l'operazione di clustering è solo un passo verso una descrizione strutturale.</span></span></span></span><br />
<h4>
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class="">Ulteriori letture</span></span> </span></span></h4>
<h4>
<span class="" id="result_box" lang="it"><span class="alt-edited"><span class="" id="result_box" lang="it"><span class="alt-edited"></span></span></span></span></h4>
<span class="" id="result_box" lang="it"><span class="alt-edited"><span class="" id="result_box" lang="it"><span class="alt-edited"> </span></span></span></span><span class="" id="result_box" lang="it"><span class="">La
rappresentazione della conoscenza è un argomento fondamentale
dell'intelligenza artificiale classica ed è ben rappresentata da una
serie completa di documenti curati da Brachman e Levesque (1985).</span> <span class="">Tuttavia,
questi sono i modi per rappresentare la conoscenza artigianale, non
appresa e il tipo di rappresentazioni che possono essere apprese dagli
esempi sono piuttosto rudimentali in confronto.</span> <span class="">In
particolare, le carenze delle regole propositive, che nella logica sono
definite il calcolo proposizionale e il potere extra espressivo delle
regole relazionali o del calcolo predicato, sono ben descritte in
introduzioni alla logica come quella del capitolo 2 del libro</span> <span class="">Di Genesereth e Nilsson (1987).</span></span><br />
<span class="" id="result_box" lang="it"><span class=""> </span></span><span class="" id="result_box" lang="it"><span class="">Abbiamo menzionato il problema di affrontare il conflitto tra diverse regole.</span> <span class="">Sono
stati sviluppati diversi modi per far questo, chiamati strategie di
risoluzione dei conflitti, per essere utilizzati con sistemi di
programmazione basati su regole.</span> <span class="">Questi sono descritti nei libri sulla programmazione basata su regole, come quella di Brownstown et al.</span> (1985). <span class="">Ancora,
però, sono progettati per essere utilizzati con set di regole
artigianali piuttosto che da quelle che sono state apprese.</span> <span class="">L'uso
di regole artigianali con eccezioni per un grande set di dati è stato
studiato da Gaines e Compton (1995) e Richards e Compton (1998)
descrivono il loro ruolo come alternativa all'ingegneria classica della
conoscenza</span></span><span class="" id="result_box" lang="it"><span class="">.</span></span><br />
<span class="" id="result_box" lang="it"><span class="alt-edited"> </span></span><span class="" id="result_box" lang="it"><span class="">Ulteriori
informazioni sui diversi stili di rappresentazione di concetti possono
essere trovati nei documenti che descrivono i metodi di apprendimento
della macchina per concludere concetti da esempi e questi sono trattati
nella sezione Ulteriori lettura del capitolo 4 e nelle sezioni di
discussione del capitolo 6.</span></span><br />
<br />
<span class="" id="result_box" lang="it"><span class=""><span class="" id="result_box" lang="it"><span class=""></span></span> </span></span><span class="" id="result_box" lang="it"><span class=""></span></span>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6261258921963124217.post-76970860272623186992016-11-09T04:52:00.000-08:002016-11-09T04:52:13.533-08:00la_Struttura_della_Religioneil seguente brano è di Jared Diamond parla della nascità delle religioni e dei bisogni che suppliscono nella società, postulando una loro evoluzione nella organizzazione sociale e nelle comunità di riferimento:<br />
<br />
da 'Il Mondo fino a ieri'<br />
<br />
<span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; background-color: white; border-collapse: separate; font-family: Minion; font-size: 18px; line-height: 21px;"></span><br />
<div class="calibre8" id="header" style="height: 10.8em; margin-top: 2.4em;">
<h1 class="calibre9" id="calibre_pb_0" style="-webkit-hyphens: none; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-size: 1em; font-weight: normal; margin-bottom: 0.2em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: center;">
Capitolo nono</h1>
<h1 class="calibre11" style="-webkit-hyphens: none; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-size: 1em; font-weight: normal; margin-bottom: 0.2em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: center;">
Quel che ci spiegano le anguille elettriche a proposito della<br class="calibre4" style="display: block;" />religione</h1>
</div>
<div class="indenta" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-left: 1.2em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
<em class="calibre12">Alcune domande sulla religione. Definizioni di religione. Funzioni della religione e anguille elettriche. Ricerca di spiegazioni causali. Credere nel sovrannaturale. La funzione esplicativa della religione. Disinnescare l’ansia. Offrire conforto. Organizzazione e obbedienza. Codici di comportamento verso gli estranei. Giustificare la guerra. Attestati di merito. Misurare il successo di una religione. Come cambiano le funzioni della religione.</em></div>
<div class="sec" id="ch87" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 0.7em; margin-left: 1.2em; margin-top: 1.7em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
<em class="calibre12">Alcune domande sulla religione.</em></div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
«In principio tutti i popoli vivevano nella giungla attorno a un grande albero di casuarina e parlavano la stessa lingua. Un uomo passava tutto il tempo seduto su un ramo che si trovava all’altezza giusta perché i suoi pesanti testicoli, enormemente gonfiati a causa di un verme parassita, toccassero terra. Incuriositi, gli animali della giungla si avvicinavano per annusarglieli. Per i cacciatori non era difficile uccidere quegli animali, e tutti mangiavano in abbondanza ed erano felici.</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
Un giorno un uomo malvagio uccise il marito di una bellissima donna perché voleva averla tutta per sé. I parenti del morto aggredirono l’assassino e i parenti di quest’ultimo si schierarono in sua difesa, e alla fine l’assassino e la sua famiglia dovettero mettersi in salvo sull’albero di casuarina. Allora gli aggressori iniziarono a strattonare le liane che pendevano dall’albero, cercando di piegare i rami verso il basso per raggiungere i nemici.</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
Le liane finirono cosí per spezzarsi e i rami scattarono verso l’alto con una forza tremenda. L’assassino e i suoi parenti furono sbalzati in ogni direzione. Atterrarono talmente lontano, e in posti talmente diversi, che non riuscirono piú a ritrovarsi. A poco a poco cominciarono a parlare lingue sempre piú distanti. È per questo che oggi esistono tante lingue e non riusciamo piú a capirci, ed è sempre per questo che i cacciatori fanno fatica a uccidere gli animali per procurarsi il cibo».</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
Quella che avete appena letto è una leggenda del popolo sikari, una tribú della Nuova Guinea. Appartiene alla vasta categoria dei miti sulle origini, di cui fanno tra l’altro parte le notissime leggende bibliche del giardino dell’Eden e della torre di Babele. Malgrado gli evidenti parallelismi tra la narrazione che vi abbiamo presentato e alcuni miti delle religioni giudaico-cristiane, sappiamo che i popoli tradizionali della Nuova Guinea, come molte altre società di piccola scala, non avevano né chiese, né sacerdoti, né libri sacri. Ma allora perché quel sistema di credenze tribali, pur comprendendo un mito di origine che ha qualche affinità con quelli delle religioni giudaico-cristiane, se ne differenziava cosí ampiamente per altri aspetti?</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
Poiché in pratica tutte le società umane conosciute ne hanno avuta una, è possibile che la religione risponda a una sorta di esigenza umana universale, o quanto meno che scaturisca da un elemento comune alla natura di ogni individuo. Ma se davvero è cosí, che nome possiamo dare a quell’esigenza o a quel tratto della nostra natura? E che cos’è in definitiva la «religione»? Sono secoli che gli studiosi dibattono questi interrogativi e i loro corollari. Perché un sistema di credenze costituisca una religione, deve necessariamente presupporre la fede in una o piú divinità, o in una forza sovrannaturale? E questo è sufficiente, o serve qualcos’altro? A che punto dell’evoluzione umana è comparsa la religione? Oggi sappiamo che circa 6 milioni di anni fa i nostri progenitori hanno cominciato a differenziarsi dai progenitori degli attuali scimpanzé: qualsiasi cosa si intenda per religione, è plausibile che gli scimpanzé non l’avessero, ma che dire dei nostri antenati di Cro-Magnon e dei cugini neandertaliani di 40000 anni fa? Possiamo ipotizzare che lo sviluppo delle religioni abbia attraversato fasi diverse, ed è lecito supporre che la cristianità, il buddismo e altre fedi rappresentino uno stadio evolutivo piú recente rispetto ai sistemi di credenze tribali? E, infine, perché in certi casi la religione sprona alla morte o al suicidio, sebbene siamo soliti associarla agli aspetti piú nobili e edificanti della natura umana?</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
Gli interrogativi che riguardano la religione sono di particolare interesse per un’indagine come la nostra, che mira ad analizzare l’intera gamma delle società umane, da quelle antiche e di piccola scala alle piú moderne e popolose. Persino tra i popoli che sotto altri aspetti possono dirsi moderni, la sfera religiosa è tuttora dominata da istituzioni di tipo tradizionale: le principali religioni dei nostri tempi sono nate in un periodo compreso fra piú di 3000 e circa 1400 anni fa, in società molto piú piccole e tradizionali di quelle che le professano al giorno d’oggi. Tuttavia, a seconda della scala di grandezza delle società le religioni cambiano, e ci piacerebbe molto sapere perché. La maggior parte dei lettori di questo libro, e io con loro, avranno in qualche fase della vita messo in discussione le proprie convinzioni religiose (o la mancanza di tali convinzioni). In tal caso, sapere quali e quanti significati abbia assunto la religione nelle varie società potrebbe aiutarci a trovare le risposte che fanno al caso nostro.</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
Spesso la religione chiede agli individui e alle società enormi investimenti di tempo e di risorse. I mormoni, per esempio, sono tenuti a devolvere alla chiesa il dieci per cento dei loro guadagni. È stato calcolato che gli indiani hopi dedicassero in media un giorno su tre alle cerimonie religiose, e che in passato un quarto della popolazione tibetana fosse composta da monaci. Quanto all’Europa medievale cristiana, la quota di risorse destinate alla costruzione e alla dotazione di personale per chiese e cattedrali, al sostentamento dei vari ordini monastici e conventuali e al finanziamento delle crociate doveva essere senz’altro rilevante. Prendendo a prestito un concetto elaborato dagli economisti, potremmo dire che la religione comporta una serie di «costi opportunità», ovvero investimenti di tempo e risorse che in altre circostanze potrebbero essere destinati ad attività piú redditizie, come ampliare le superfici coltivate, costruire dighe o mantenere eserciti di conquista piú numerosi. Se la religione non avesse offerto benefici concreti e ragguardevoli, tali da controbilanciare i costi opportunità, un’ipotetica società atea che fosse emersa in un dato momento della storia avrebbe senz’altro sgominato le società religiose e conquistato il mondo. E allora perché il mondo non è diventato ateo, e quali sono i benefici che evidentemente la religione apporta? Quali sono, in sostanza, le «funzioni» della religione?</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
Un credente potrebbe trovare queste domande assurde o addirittura offensive, e farci notare che la religione è una caratteristica quasi universale delle società umane semplicemente perché Dio esiste davvero, e che la sua ubiquità, esattamente come l’ubiquità dei sassi, non ci obbliga ad accertarne funzioni e benefici. Se anche voi siete credenti di questo tipo, permettetemi di invitarvi a immaginare per un solo istante un essere straordinariamente progredito, originario della galassia di Andromeda, che viaggi qua e là per l’universo a una velocità ben superiore a quella della luce (cosa ritenuta impossibile da noi umani) esplorando tutti i miliardi di miliardi di corpi celesti allo scopo di studiarne le forme di vita e i metabolismi variamente alimentati dalla luce o da altre forme di radiazione elettromagnetica, dal calore, dal vento, da reazioni nucleari, da reazioni chimiche di sostanze organiche e inorganiche. Questo abitante di Andromeda visiterà periodicamente il pianeta Terra, sul quale l’evoluzione della vita è stata possibile unicamente grazie all’energia prodotta dalla luce e dalle reazioni chimiche organiche e inorganiche. Per il breve periodo compreso tra l’11000 avanti Cristo e l’11 settembre del 2051, la Terra è stata dominata da una forma di vita che si autodefiniva umana, caparbiamente aggrappata a certe strane teorie. Tra queste, l’esistenza di un essere onnipotente chiamato Dio, il quale tra i milioni di miliardi di miliardi di specie esistenti nell’universo prediligeva per l’appunto la razza umana; a questa entità onnipotente, creatrice dell’universo, venivano spesso attribuite caratteristiche affini a quelle umane, con la sola aggiunta dell’onnipotenza. Per gli andromediani si tratta di ipotesi deliranti, degne di studio piú che di fede, giacché, al pari di molte altre creature viventi, essi sanno com’è stato veramente creato l’universo, e siccome nell’universo ci sono miliardi di forme di vita ben piú interessanti e avanzate, è assurdo pretendere che un essere onnipotente possa riversare particolare attenzione nei confronti della specie umana o avere qualcosa in comune con essa. Gli andromediani hanno inoltre appurato l’esistenza di migliaia di religioni umane, diverse tra loro fuorché per quest’unica caratteristica: i seguaci di ciascuna fede sono convinti che soltanto la loro religione sia autentica, e tutte le altre false. Da cui si deduce, in ultima analisi, che tutte le religioni sono false.</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
Di fatto, la fede in una divinità come quella descritta era ampiamente diffusa tra le società umane. Gli andromediani hanno ben compreso i principî della sociologia universale, e con quelli cercano di capire perché gli umani si ostinassero a professare una religione anche se ciò comportava enormi dispendi di tempo e di risorse sociali e individuali, senza contare l’istigazione a comportamenti autolesionistici e / o suicidi. È evidente, sostengono gli andromediani, che la religione offriva una qualche forma di compensazione: altrimenti le società atee, non gravate da esborsi di tempo e risorse né ostacolate da impulsi suicidi, avrebbero senz’altro rimpiazzato le società religiose. Pertanto se voi, miei lettori, doveste ritenere offensivo che si indaghi sulle funzioni della <em class="calibre12">vostra</em> religione, mi auguro che siate disposti a fare un passo indietro per domandarvi almeno quali fossero le funzioni delle religioni tribali della Nuova Guinea; oppure, ponendovi nell’ordine di idee di un visitatore andromediano, a farvi persino qualche domanda sulle religioni umane in generale.</div>
<div>
<br /></div>
<div>
.........</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate;"><div class="sec" id="ch89" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 0.7em; margin-left: 1.2em; margin-top: 1.7em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
<em class="calibre12">Funzioni della religione e anguille elettriche.</em></div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
La religione è un fatto pressoché universale tra gli esseri umani e nel mondo animale non si è mai osservato nulla di lontanamente simile; ciononostante è lecito – doveroso, anzi – interrogarsi sulle origini della religione, esattamente come facciamo per altri tratti squisitamente umani come l’arte e il linguaggio. Sei milioni di anni fa le scimmie nostre antenate non conoscevano la fede, ma 5000 anni or sono, all’epoca della comparsa dei primi documenti scritti, la religione esisteva già. Cos’è accaduto dunque in quei 5995000 anni? È possibile individuare gli antecedenti della religione negli animali e nei nostri antenati umani? E infine, quando e perché è nata la religione?</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
L’approccio cosiddetto funzionale fornisce da sempre il quadro di riferimento piú utilizzato nello studio scientifico delle religioni, disciplina nata circa 150 anni fa. In pratica, gli studiosi cercano di rispondere alla domanda «A cosa servono le religioni?» e nel farlo notano che ogni sistema religioso impone anzitutto notevoli sacrifici sia ai singoli, sia alle società: per esempio rinunciare al matrimonio e ai figli, sobbarcarsi la fatica e la spesa di costruire enormi piramidi, uccidere i propri animali domestici e in casi estremi persino se stessi o i propri figli, senza contare il tempo impiegato a ripetere in eterno sempre le stesse parole. Per riuscire a compensare oneri tanto elevati, necessariamente una religione dovrà avere una qualche funzione e offrire qualche vantaggio: in caso contrario, nulla ne spiegherebbe la nascita e la sopravvivenza. Dunque possiamo immaginare che con l’invenzione della religione l’umanità sia riuscita a risolvere alcuni problemi: ma quali? Nei termini dell’approccio funzionale la risposta potrebbe, in sintesi, essere questa: la religione è stata inventata per assolvere a particolari funzioni e risolvere particolari problemi, come mantenere l’ordine sociale, confortare le persone ansiose, insegnare l’obbedienza politica.</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
Esiste tuttavia un altro approccio, emerso in tempi piú recenti dall’ambito della psicologia evoluzionistica, secondo cui la religione non si è evoluta, né è stata concepita appositamente per assolvere o risolvere scopi o problemi specifici. È assurdo immaginare che a un certo punto un aspirante leader abbia avuto la grande idea di inventare dal nulla la religione, intuendo che magari sarebbe stato piú facile dominare i suoi sudditi se li avesse convinti che c’era un motivo trascendente per costruire una piramide. Ed è altrettanto improbabile che un cacciatore-raccoglitore dotato di forte empatia, vedendo i suoi compagni di tribú intristirsi per un lutto recente al punto da rinunciare ad andare a caccia, abbia confezionato una bella storia sulla vita ultraterrena soltanto per consolarli e infondere loro nuova speranza. La religione sarebbe semmai il sottoprodotto di particolari facoltà dei nostri antenati umani e dei loro predecessori animali: facoltà che hanno avuto esiti imprevedibili e, nel corso del processo di sviluppo, poco alla volta hanno acquisito nuove funzioni.</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
Personalmente, in quanto biologo evoluzionista non vedo alcuna contraddizione tra questi modi di intendere l’origine della religione: si tratta semplicemente di due stadi di un identico processo. Anche l’evoluzione biologica, a ben vedere, avviene in due fasi: al semplice manifestarsi di variazioni generate da mutazioni e ricombinazioni genetiche segue infatti l’emergere, per effetto della selezione naturale e sessuale, di individui varianti che si differenziano dagli altri in base alle modalità di sopravvivenza, riproduzione e passaggio dei geni alla generazione successiva. Si scopre cioè che alcuni individui varianti esplicano alcune funzioni e risolvono i problemi della sopravvivenza meglio degli altri. La soluzione a un problema funzionale (sopravvivere in un clima piú freddo, per esempio) non si raggiunge perché l’animale si rende conto di avere bisogno di una pelliccia piú spessa, né è il clima freddo a innescare le mutazioni che portano a un ispessimento della pelliccia. Quel che avviene in realtà è che «qualcosa» (nel caso specifico, i meccanismi della genetica molecolare che governano l’evoluzione biologica) crea «qualcos’altro» (nel caso specifico, un animale con la pelliccia piú spessa o piú sottile), dopodiché, in presenza di certe condizioni di vita o di certi problemi ambientali (nel caso specifico, le temperature rigide), alcuni di quegli animali varianti, ma non tutti, si ritrovano provvisti di una funzione utile. In sintesi, la selezione naturale e la selezione sessuale agiscono su una diversità biologica prodotta dalle mutazioni e ricombinazioni dei geni, vagliando il materiale di partenza in base al criterio della funzionalità.</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
Seguendo un ragionamento analogo, gli psicologi evoluzionisti sostengono che la religione sia il prodotto secondario di alcune prerogative del cervello umano, sviluppatesi per far fronte a esigenze diverse dal costruire piramidi o recare conforto a parenti in lutto. Per un biologo evoluzionista si tratta di un’ipotesi plausibile e nient’affatto sorprendente. La storia dell’evoluzione è stracolma di prodotti secondari, di mutazioni che, inizialmente selezionate per svolgere una certa funzione, si sono poi sviluppate e selezionate per adempiere a un’altra. I creazionisti che mettono in dubbio la realtà dell’evoluzione erano soliti citare l’esempio delle anguille elettriche, che uccidono le loro prede con una scossa elettrica da 600 volt: secondo loro era impossibile che da una normale anguilla a zero volt si fosse sviluppata per selezione naturale un’anguilla a 600 volt, perché ciò avrebbe comportato l’esistenza di stadi intermedi rappresentati da anguille elettriche a basso voltaggio le quali, non potendo folgorare le prede con una scarica elettrica adeguata, non sarebbero riuscite a sopravvivere. In realtà sembra proprio che la capacità di dare scosse a 600 volt derivi da una serie di cambiamenti di funzione, e sia cioè il prodotto secondario delle capacità di individuare campi elettrici e di generare elettricità normalmente presenti in alcuni pesci.</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
Molti sono infatti dotati di organi sensoriali epidermici atti a rilevare i campi elettrici presenti nell’ambiente. I campi elettrici possono avere un’origine fisica (quando sono prodotti dalle correnti oceaniche o dal mescolarsi di acque con diverso grado di salinità) oppure biologica (se a generarli sono le contrazioni muscolari degli animali). I pesci provvisti di organi di senso capaci di avvertire i campi elettrici possono servirsene per due scopi: individuare le prede e spostarsi nell’ambiente, soprattutto di notte o in acque torbide quando la vista non è di grande aiuto. La presenza di una preda si paleserà all’organo rivelatore di campi elettrici in quanto la sua conduttività elettrica sarà ampiamente superiore a quella dell’acqua. La capacità di individuare i campi elettrici ambientali è una facoltà di tipo passivo, che non richiede il possesso di organi specializzati nella produzione di elettricità.</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
Alcune specie di pesci si spingono però oltre e arrivano a generare veri e propri campi elettrici a basso voltaggio, attraverso cui riescono a individuare la presenza di oggetti non solo intercettandone il campo, ma captandone le interazioni con quello da essi stessi creato. Le famiglie di pesci che possiedono organi specializzati nella generazione di elettricità sono almeno sei, e sappiamo che questi organi si sono evoluti in maniera indipendente da specie a specie. La maggior parte di essi deriva dalle membrane muscolari, tuttavia esiste una classe di pesci i cui organi elettrici si sono sviluppati dai tessuti nervosi. Lo zoologo Hans Lissmann è stato il primo a dimostrare in maniera inconfutabile l’esistenza di questa forma di rilevamento elettrico attivo, dopo che per anni i suoi colleghi avevano studiato il problema senza raggiungere risultati certi. Offrendo del cibo in ricompensa, Lissmann riuscí a condizionare i pesci elettrici stimolandoli a distinguere tra un oggetto in grado di condurre l’elettricità (per esempio un disco di metallo) e un oggetto non conduttore apparentemente identico (un disco di plastica o vetro avente forma e dimensioni simili). Ai tempi in cui lavoravo all’Università di Cambridge, in un laboratorio vicino all’edificio in cui Lissmann conduceva i suoi studi, un amico dell’insigne zoologo mi raccontò un aneddoto che mi fece capire fino a che punto quei pesci fossero sensibili ai campi elettrici. Lissmann aveva notato che verso il tardo pomeriggio dei giorni feriali, piú o meno alla stessa ora, uno dei suoi pesci dava segni di agitazione. Alla fine era riuscito a capire che proprio a quell’ora un’assistente del suo laboratorio, terminato il turno, si metteva dietro un paravento e si spazzolava i capelli prima di uscire, generando un campo elettrico che quel pesce era in grado di captare.</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
I pesci a basso voltaggio usano gli organi generatori di elettricità e i sensori epidermici per incrementare l’efficienza di due diverse funzioni (l’individuazione delle prede e la navigazione) comuni anche ai molti pesci dotati di sensori ma privi di organi generatori di elettricità. Inoltre i pesci a basso voltaggio usano gli impulsi elettrici anche per comunicare tra loro. Poiché gli impulsi variano a seconda delle specie e dei singoli individui, un pesce che li riceva è in grado di ricavare informazioni che gli permetteranno di individuare la specie, il sesso, le dimensioni e l’«identità» (sconosciuto o familiare) del pesce che li ha generati. Un pesce a basso voltaggio, infine, può comunicare messaggi di natura sociale agli altri individui della sua specie, ossia servirsi degli impulsi elettrici per dire: «Questo è il mio territorio, sciò!», oppure: «Ehi, pupa, vieni qui! Sei molto eccitante, voglio fare sesso con te».</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
Ma i pesci che riescono a generare impulsi a basso voltaggio li utilizzano anche per una quarta funzione, ossia uccidere i pesci piú piccoli di cui si cibano. Maggiore il potenziale, piú grande la preda che si è in grado di uccidere, finché si arriva alle anguille elettriche lunghe poco meno di due metri, capaci di folgorare un cavallo con una scarica da 600 volt. (Se ricordo fin troppo bene questa vicenda evoluzionistica è perché la generazione di impulsi da parte delle anguille elettriche è stata l’argomento della mia tesi di dottorato. A furia di pensare agli aspetti molecolari del fenomeno finii per dimenticarmene il risultato pratico, e cosí il giorno del primo esperimento immersi una mano nell’acqua per prelevare un’anguilla dalla vasca: fu un’esperienza elettrizzante, credetemi). I pesci ad alto voltaggio, infine, usano le loro potenti scariche elettriche per altre due funzioni: difendersi contro eventuali aggressori e praticare la cosiddetta «pesca elettrica», attirando le prede verso il proprio polo positivo o anodo. Questa tecnica è utilizzata anche da alcuni pescatori di professione, i quali tuttavia, non essendo in grado di produrre elettricità con il proprio corpo, si servono di batterie o generatori.</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
E ora torniamo ai creazionisti, convinti che la selezione naturale non avrebbe mai potuto produrre un’anguilla da 600 volt a partire da una normale anguilla non elettrica, semplicemente perché in tutti gli stadi intermedi gli organi elettrici a basso voltaggio sarebbero stati inutili a garantire la sopravvivenza delle anguille. La risposta alle loro obiezioni è che in origine quegli organi elettrici non servivano a uccidere le prede con una scossa da 600 volt: quella funzione si è sviluppata solo in un secondo tempo, come effetto secondario di un organo inizialmente selezionato per svolgere altre funzioni. Come abbiamo appena visto, gli organi elettrici hanno assunto sei funzioni successive man mano che la selezione naturale accresceva da zero a 600 l’intensità degli impulsi generati: un pesce che non emetta impulsi elettrici può servirsi del rilevamento passivo per individuare le prede e muoversi nell’acqua torbida; un pesce a basso voltaggio può svolgere le stesse due funzioni con maggiore efficienza, e in piú sarà in grado di comunicare; un pesce ad alto voltaggio può folgorare le prede, difendersi, e praticare la «pesca elettrica». Nelle prossime pagine vedremo come la religione abbia battuto le anguille di un punto, acquisendo non sei ma ben sette funzioni successive.</div>
<div>
<br /></div>
</span></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate;"><div class="sec" id="ch90" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 0.7em; margin-left: 1.2em; margin-top: 1.7em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
<em class="calibre12">Ricerca di spiegazioni causali.</em></div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
Di quali facoltà umane la religione potrebbe dunque essere un sottoprodotto? Un’ipotesi plausibile è che si tratti di una sorta di effetto collaterale del progressivo affinamento da parte del cervello della capacità di dedurre cause, agenti e intenti, di prevedere pericoli e formulare spiegazioni causali di valore predittivo, utili cioè alla sopravvivenza. Naturalmente anche gli animali hanno un cervello, e in certi casi possono prevedere le intenzioni altrui. Per esempio, un barbagianni che nella completa oscurità avverta la presenza di un topo sarà in grado, udendo il rumore dei suoi passi, di calcolarne il tragitto, la velocità e l’eventuale intenzione di proseguire la rotta: questo gli permetterà di intercettare la traiettoria del topo e di piombargli addosso precisamente nel momento e nel luogo ideali per catturarlo. Tuttavia gli animali, anche i piú strettamente imparentati con noi, hanno una capacità di ragionamento decisamente inferiore rispetto agli umani. La scimmia africana comunemente detta cercopiteco verde, per esempio, è una preda molto ambita dai pitoni terricoli: quando una di queste scimmiette avvista un pitone lancia uno speciale grido di allarme e tutti i cercopitechi verdi che si trovano nei paraggi saltano immediatamente sull’albero piú vicino. Il fatto sconcertante, però, è che le scimmiette non siano in grado di associare l’eventuale avvistamento della<em class="calibre12">scia</em> di un pitone nell’erba con la presenza di un pitone nelle vicinanze. Provate ora a confrontare le limitate capacità di ragionamento dei cercopitechi verdi con la raffinata ingegnosità di noi umani: la selezione naturale ha perfezionato i nostri cervelli rendendoli capaci di estrarre il massimo contenuto informativo dagli indizi piú banali e, anche se spesso può capitarci di tirare conclusioni sbagliate, di veicolare con esattezza le informazioni attraverso il linguaggio.</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
Sappiamo per esempio, e diamo per scontato, che siamo tutti dotati di agentività (la facoltà di far accadere le cose e di intervenire sulla realtà) e che ciascuno agisce per un proprio intento ed è un individuo a sé. Per questo gran parte della nostra attività cerebrale è finalizzata a comprendere gli altri e a interpretare i segnali che ci inviano (espressioni del viso, inflessioni della voce, azioni compiute o mancate, parole dette o non dette), nel tentativo di prevedere le loro azioni future e possibilmente di influenzarle secondo i nostri desideri. In maniera analoga attribuiamo agentività anche agli animali: i cacciatori !kung che si avvicinano alla carcassa di un animale mentre i leoni se ne stanno cibando osservano le loro pance e il loro comportamento per cercare di capire se sono già sazi, e quindi si lasceranno allontanare, o se magari hanno ancora fame. Sappiamo inoltre attribuire agentività a noi stessi: ci accorgiamo che le nostre azioni producono conseguenze, e se notiamo che un certo comportamento dà esiti positivi e un altro no, impariamo a ripetere l’azione che produce buoni risultati. Il successo della nostra specie si deve soprattutto al nostro cervello e alla sua capacità di scoprire i legami di causalità. È per questo che già 12000 anni fa, quando erano ancora cacciatori-raccoglitori e non conoscevano né l’agricoltura, né la lavorazione dei metalli, né la scrittura, gli umani erano già la specie mammifera di gran lunga piú diffusa sul pianeta, al punto da aver colonizzato tutti i continenti e tutte le latitudini, con la sola eccezione dell’Antartide.</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
Noi umani non smettiamo mai di ipotizzare relazioni di causalità. Alcune spiegazioni tradizionali ci hanno in passato consentito di fare previsioni esatte per ragioni poi dimostratesi scientificamente valide; in altri casi le previsioni erano attendibili anche se i fondamenti del ragionamento erano errati («Non bisogna mangiare quel certo tipo di pesce perché è tabú» era una regola che prescindeva dalla reale comprensione della velenosità di quei pesci); altre volte, infine, interpretazioni corrette davano luogo a previsioni errate. È il caso per esempio dei molti popoli di caccia e raccolta che attribuiscono agentività non solo a uomini e animali, ma anche ad altri «soggetti» in movimento come i fiumi, il sole e la luna: i popoli tradizionali tendono spesso a credere che i corpi celesti siano creature vive, oppure cose mosse da creature vive. A volte sono investite di agentività anche cose che non possono muoversi, come i fiori, le montagne o le rocce. Oggi etichettiamo questi atteggiamenti come espressioni di fede nel sovrannaturale, inteso come qualcosa di diverso da ciò che si considera naturale, ma spesso i popoli tradizionali non fanno questa distinzione. Il loro procedimento consiste nel formulare spiegazioni di tipo causale e osservarne il valore predittivo: l’idea che il sole (o la divinità che trasporta il sole nel suo carro) compia ogni giorno un certo tragitto nel cielo corrisponde al dato visivo. Ma poiché i popoli tradizionali non hanno conoscenze di astronomia tali da convincerli che la loro fede sovrannaturale nel sole in quanto agente animato è errata, non si può dire che la loro teoria sia sciocca: è semplicemente un’estensione logica delle loro conclusioni riguardo a certi fatti naturali.</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
Tra i vari modi in cui la nostra ricerca di spiegazioni causali finisce per eccedere in generalizzazioni, portandoci direttamente a quella che oggi definiremmo «fede nel sovrannaturale», uno consiste dunque nell’attribuire agentività alle piante e agli oggetti inanimati. Un altro modo consiste nel ricercare nel nostro comportamento le cause di quanto accade fuori di noi: se per esempio in una certa annata un campo che ha sempre dato ottimi raccolti produce molto meno del solito, il contadino si domanderà che cosa ha fatto lui di diverso stavolta; allo stesso modo, se un cacciatore kaulong cade in una buca nella foresta, i suoi compagni si domanderanno dove ha sbagliato. L’uno e gli altri si spremeranno le meningi per trovare una spiegazione e formuleranno un certo numero di ipotesi, alcune scientificamente corrette, altre equiparabili a tabú privi di ogni fondamento scientifico. I contadini delle Ande, per esempio, non sanno nulla in fatto di coefficienti di variazione, tuttavia distribuiscono le loro coltivazioni in un numero di campi che varia da 8 a 22 (<a class="calibre16" href="https://www.blogger.com/Text/part0014.html#chapter" style="color: #bd2716; text-decoration: none;">cap. <span class="small-caps" style="font-size: 0.75em; letter-spacing: 0.05em;">VIII</span></a>), anche se niente esclude che in passato abbiano anche rivolto preghiere alle divinità della pioggia; i cacciatori kaulong, invece, fanno attenzione a non pronunciare ad alta voce il nome dei pipistrelli mentre dànno loro la caccia in aree di foresta disseminate di buche. Oggi sappiamo che disperdere i campi è un metodo scientificamente valido perché il loro rendimento rimanga al di sopra di un certo valore minimo, e sappiamo anche che pregare le divinità della pioggia o evitare di pronunciare il nome dei pipistrelli sono superstizioni religiose prive di valore scientifico. Ma i contadini delle Ande e i cacciatori kaulong non fanno distinzione tra metodo scientifico e superstizione religiosa.</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
Un altro ambito nel quale è facile eccedere nella ricerca di spiegazioni causali è quello della salute. Una malattia, come ogni altro evento di una certa importanza, suscita in noi il bisogno di spiegazioni: il paziente ha forse fatto qualcosa di particolare (dissetarsi a una certa fonte, per esempio) o tralasciato di fare qualcosa (lavarsi le mani prima di mangiare, invocare l’aiuto di uno spirito)? O magari la responsabilità è da attribuire a una terza persona (un altro ammalato che ha starnutito nella sua direzione, uno stregone che ha lanciato un maleficio)? Come i popoli tradizionali, anche noi abitanti del Primo Mondo, che pure viviamo nell’era della medicina scientifica, ci ostiniamo a cercare spiegazioni per ogni stato patologico. Siamo convinti che certi comportamenti (bere a una certa sorgente, non lavarsi le mani prima di mangiare) possano causare malattie, mentre altri (sollecitare la protezione di un certo spirito) non possano. Tuttavia non ci piace sentirci dire che abbiamo il cancro allo stomaco perché abbiamo ereditato la variante 211 del gene <span class="small-caps" style="font-size: 0.75em; letter-spacing: 0.05em;">PX2R</span>: la spiegazione non ci soddisfa, ci trasmette un senso di impotenza, cosí preferiamo pensare che forse è per via di quel che abbiamo mangiato. I popoli tradizionali cercano rimedi per le malattie esattamente come facciamo noi quando le cure mediche si dimostrano inefficaci. È vero che a volte le terapie tradizionali sembrano apportare benefici, tuttavia i fattori in gioco possono essere molti: la maggior parte delle malattie guarisce comunque per conto proprio; è stato dimostrato che molti rimedi vegetali di tipo tradizionale hanno un’effettiva utilità farmacologica; oppure può darsi che lo sciamano riesca con il suo atteggiamento fiducioso a rincuorare il paziente, generando un effetto placebo; inoltre attribuire una causa – per quanto non vera – alla malattia lenisce il senso di impotenza dell’ammalato, consentendogli di attuare contromisure che lo fanno sentire meglio; e se alla fine il paziente muore, se ne deduce che probabilmente aveva violato qualche tabú, oppure che la malattia era stata provocata da un potente stregone che bisogna identificare e uccidere.</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
A volte il nostro bisogno di spiegazioni causali ci porta a voler decifrare eventi per i quali la scienza moderna fornisce quest’unica, deludente risposta: «Non c’è nessuna spiegazione, smettete di cercarne una». Un problema fondamentale di molte religioni organizzate, per esempio, è la teodicea, tema centrale del <em class="calibre12">Libro di Giobbe</em>: se esiste un dio buono e onnipotente, perché questo dio tollera il male? I popoli tradizionali, per i quali non c’è nulla di strano nel discutere un’ora intera su un pezzetto di ramo piantato a terra, non si tireranno certo indietro davanti al triste caso di una persona apparentemente rispettosa delle regole sociali che è stata ferita, sconfitta in combattimento o uccisa. Ha forse violato qualche tabú, sono stati gli spiriti malvagi, oppure qualcosa ha scatenato l’ira degli dèi? A maggior ragione, i popoli tradizionali cercheranno a tutti i costi di spiegarsi perché una persona che poco prima respirava, si muoveva ed era calda può a un certo punto diventare fredda, non respirare e non muoversi piú: forse una parte (chiamata spirito) di quella persona è fuggita dal suo corpo ed è trasmigrata in un uccello, oppure continua a vivere altrove? Qualcuno potrebbe obiettare che quelle domande ambiscono a dare un «significato» piú che una vera e propria spiegazione, laddove la scienza può fornire soltanto spiegazioni: chi è alla ricerca di significati farebbe bene a rivolgersi alla religione, oppure rassegnarsi all’idea che cercare un senso non ha senso. Ma in passato, e in parte ancora oggi, l’esigenza di trovare un «significato» reclamava a gran voce una risposta.</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
In sintesi, quella che oggi chiamiamo religione potrebbe essere stata in origine un prodotto secondario della crescente accuratezza con cui il nostro cervello imparava a formulare spiegazioni causali e a fare previsioni. È probabile che per molto tempo non vi sia stata una distinzione precisa tra naturale e sovrannaturale, ovvero tra la sfera religiosa e le altre dimensioni della vita. E se qualcuno mi domandasse in che punto dell’evoluzione umana sia sorta la «religione», la mia ipotesi è che il tutto sia avvenuto in modo molto graduale, a mano a mano che il nostro cervello diventava piú complesso. Piú di 15000 anni fa gli uomini di Cro-Magnon erano già in grado di cucirsi abiti su misura, inventare utensili e dipingere straordinarie immagini policrome di uomini e animali sulle pareti delle grotte di Lascaux, Altamira e Chauvet: ancora oggi i visitatori che scendono in quelle caverne per ammirare dipinti visibili soltanto alla luce di una fiaccola sono colti da uno stupore quasi religioso (tav. 25). Quale che fosse l’intento degli artisti preistorici, di certo le loro menti erano abbastanza moderne da albergare in sé credenze definibili come religiose. Quanto ai nostri parenti neandertaliani, che certamente decoravano le loro caverne con pigmenti a base di ocra e seppellivano i morti... be’, può darsi. Alla luce di questi argomenti, mi sembra ragionevole ipotizzare che almeno per tutti i 60000 (e passa) anni di storia del moderno<em class="calibre12">Homo sapiens</em>, e forse da molto prima ancora, i nostri antenati abbiano sempre avuto una religione.</div>
<div class="sec" id="ch91" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 0.7em; margin-left: 1.2em; margin-top: 1.7em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
<em class="calibre12">Credere nel sovrannaturale.</em></div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
Praticamente tutte le religioni coltivano specifiche credenze sovrannaturali e i loro fedeli credono fermamente in dogmi che, contrastando con l’esperienza della realtà naturale e non potendo trovarvi conferma, risultano inverosimili a chi non vi aderisca. La <a class="calibre16" href="https://www.blogger.com/Text/part0016.html#tt6" id="t6" style="color: #bd2716; text-decoration: none;">tabella 6</a> contiene alcuni esempi di queste credenze, ai quali se ne potrebbero aggiungere innumerevoli altri. Tra le molte caratteristiche delle religioni, nessuna piú di questa apre un profondo divario fra credenti e laici, al punto che chi non è religioso considera addirittura inconcepibile poter credere a certe cose. Nulla piú dei postulati sovrannaturali crea inoltre una linea di demarcazione tra fedeli di religioni diverse, tutti risolutamente convinti della verità dei propri dogmi ma increduli che i fedeli di altre religioni possano essere altrettanto convinti dei loro. E allora perché, nonostante tutto, le credenze sovrannaturali sono una caratteristica cosí universale delle religioni?</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
Qualcuno potrebbe rispondere che i dogmi religiosi sovrannaturali, al pari degli assiomi sovrannaturali di natura non religiosa, non sono che superstizioni frutto dell’ignoranza, utili soltanto a dimostrare che il cervello umano è in grado di autoingannarsi e di credere in qualunque cosa. Tutti siamo a conoscenza di qualche credenza sovrannaturale non religiosa la cui assurdità dovrebbe apparire piú che evidente. Molti europei, per esempio, credono che la vista di un gatto nero sia foriera di disgrazie, anche se i gatti con il mantello nero sono piuttosto diffusi. Annotando l’eventuale verificarsi o non verificarsi di eventi infausti nei sessanta minuti successivi all’osservazione (o alla mancata osservazione) di un gatto nero in un’area densamente popolata di felini domestici, e confrontando i dati con il metodo statistico del chi-quadrato, è facile constatare che l’ipotesi del gatto nero portaiella ha una probabilità di conferma inferiore a un caso su mille. Alcuni gruppi di abitanti delle pianure guineane credono che il canto armonioso del piccolo passeriforme noto come bigia terricola di pianura annunci la morte di qualcuno, ma in effetti la bigia terricola è una delle specie piú comuni in quell’area, e il suo canto si ode assai spesso. Se la credenza fosse vera, nell’arco di pochi giorni l’intera zona dovrebbe svuotarsi di ogni presenza umana: eppure i miei amici guineani sono fermamente convinti che il canto della bigia sia latore di cattive notizie, proprio come i gatti neri per gli europei.</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
Un’altra superstizione non religiosa assai particolare, soprattutto perché condivisa dai molti che tuttora vi investono denaro, è la rabdomanzia, nota anche come radioestesia. Già affermata in Europa oltre 400 anni or sono, e probabilmente diffusa anche prima della nascita di Cristo, questa credenza presuppone che il movimento di una bacchetta biforcuta impugnata da un iniziato detto rabdomante indichi la collocazione e talora persino la profondità a cui si trova un’invisibile riserva idrica sotterranea (tav. 46). Dalle verifiche di controllo è emerso che la percentuale di successo di un rabdomante è esattamente pari a quella di un responso casuale, ciononostante molti proprietari terrieri si affidano tuttora ai rabdomanti, soprattutto se i loro terreni si trovano in aree in cui l’individuazione delle risorse idriche risulta difficoltosa anche per i geologi; una volta ottenuto il parere del divinatore, spenderanno altri soldi per far scavare un pozzo che difficilmente porterà all’acqua. Il fondamento psicologico di queste superstizioni sta nella nostra tendenza a ricordare i successi e a dimenticare i fallimenti, cosicché anche la piú labile delle prove a favore finisce per diventare una conferma indiscutibile. Trarre conclusioni sulla base delle nostre vicende personali è un processo mentale del tutto istintivo; viceversa, i test controllati e i metodi scientifici che dovrebbero aiutarci a distinguere i fenomeni accidentali da quelli non accidentali sono innaturali e controintuitivi, e come tali ignoti alle società tradizionali.</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
A questo punto verrebbe da chiedersi se le superstizioni religiose non siano che un’ulteriore prova della fallibilità umana, come la paura dei gatti neri e le altre credenze popolari non religiose. A smentire questa ipotesi interviene però la constatazione che oltre a comportare oneri elevati, l’adesione a certe credenze superstiziose sia una caratteristica comune a tutte le religioni. L’investimento dei dieci gruppi di fedeli della <a class="calibre16" href="https://www.blogger.com/Text/part0016.html#tt6" style="color: #bd2716; text-decoration: none;">tabella 6</a> nei confronti dei dogmi sovrannaturali delle rispettive religioni è (o era) assai piú oneroso in termini di impegno, tempo e conseguenze di quanto non siano le contromisure prese da chi, avendo la fobia dei gatti neri, cambi occasionalmente percorso per evitare di incontrarne uno. Invece di essere un mero sottoprodotto accidentale del raziocinio umano, le superstizioni religiose potrebbero dunque avere un significato piú profondo? E se sí, quale?</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
Secondo un’ipotesi recentemente formulata da alcuni studiosi delle religioni, la fede nelle superstizioni religiose serve a dimostrare l’impegno di ciascuno nei confronti della religione. Tutti i raggruppamenti umani durevoli (i tifosi dei Boston Red Sox come me, i cattolici ferventi, i giapponesi devoti alla patria, e cosí via) sono alle prese con il problema fondamentale di identificare correttamente i membri stabili e fidati del gruppo. Quanto piú forte è la compenetrazione fra la vita dei singoli e il gruppo religioso di appartenenza, tanto piú diventa essenziale identificare correttamente gli altri seguaci e non lasciarsi ingannare da chi finge di condividere gli ideali comuni soltanto per ricavarne un momentaneo tornaconto. Se riconoscete e accettate come tifoso della vostra squadra un tale che sventola la bandiera dei Red Sox, e tutt’a un tratto costui si mette a esultare davanti a un <em class="calibre12">home run</em> dei New York Yankees, vi sentirete presi in giro anche se ovviamente la cosa non metterà in pericolo la vostra sopravvivenza. Ma se un soldato che vi sta accanto sulla linea del fronte getta a terra il fucile o ve lo punta contro proprio mentre il nemico sta attaccando, il vostro errore di valutazione rischia di costarvi la pelle.</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
Per questo motivo l’affiliazione religiosa comporta tante prove di dedizione: sacrifici di tempo e di risorse, privazioni e altre onerose dimostrazioni di cui parleremo piú avanti. Anche l’adesione a un principio irrazionale che contraddice l’evidenza dei sensi e che gli estranei a quella religione non sarebbero mai disposti a condividere potrebbe essere considerata una prova di impegno. Se una persona dichiarasse che il fondatore della sua chiesa è stato concepito attraverso un normale rapporto sessuale tra i genitori nessuno stenterebbe a credergli, e di certo la sua affermazione non varrebbe come prova di devozione; ma se quella stessa persona si ostinasse a ripetere, contro ogni evidenza, che il fondatore in questione è stato partorito da una donna vergine, e se nessuno, neanche a decenni di distanza, riuscisse a dissuaderlo dal credere una cosa del genere, allora i suoi correligionari comincerebbero a fare assegnamento sulla profondità della sua fede e sulla sua volontà di non abbandonare il gruppo.</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
Persino i dogmi religiosi sovrannaturali devono tuttavia sottostare a certi limiti. Gli antropologi Scott Atran e Pascal Boyer hanno osservato, indipendentemente l’uno dall’altro, che nel mondo le credenze religiose propriamente dette rappresentano una ristretta sottoclasse di tutte le superstizioni arbitrarie e casuali che si potrebbero inventare. Per citare Pascal Boyer, non può esistere una religione che proclami: «C’è un solo Dio! È onnipotente, ma esiste soltanto di mercoledí». Di contro, gli esseri sovrannaturali in cui crediamo sono sempre stranamente simili a noi umani, a certi animali o a certi oggetti naturali, tranne per il fatto di possedere appunto poteri sovrannaturali: vedono piú lontano, vivono piú a lungo, sono piú forti, si spostano piú rapidamente, prevedono il futuro, possono cambiare forma, attraversare le pareti e cosí via. Sotto altri aspetti, però, divinità e spiriti si comportano proprio come noi. Il Dio del Vecchio Testamento era collerico, gli dèi e le dee dell’Olimpo soffrivano di gelosia, mangiavano, bevevano e facevano sesso. I poteri sovrumani delle divinità sono proiezioni delle nostre personali fantasie di potenza: agli dèi è consentito ciò che noi stessi vorremmo fare. Ammetto che anche a me (come a tutti, credo) piacerebbe scagliare saette che incenerissero i malvagi, tuttavia non ho mai immaginato di poter esistere soltanto di mercoledí. Perciò non mi sorprende che gli dèi abbiano la capacità di punire i malvagi, ma mi stupirei moltissimo se qualche religione proponesse come ideale un’esistenza circoscritta al mercoledí. Le credenze religiose sovrannaturali sono sí irrazionali, ma anche plausibili e soddisfacenti sul piano emotivo: per questo è cosí facile crederci, a dispetto della loro inverosimiglianza sul piano razionale.</div>
<div class="caption" style="margin-bottom: 1.2em; margin-top: 1.2em; page-break-inside: avoid;">
<div class="tabcaption" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-color: black; border-top-style: solid; border-top-width: 1px; font-size: 0.875em; margin-bottom: 1em; margin-top: 1em; padding-bottom: 7px; padding-left: 0px; padding-right: 0px; padding-top: 4px; text-align: justify;">
<a class="calibre16" href="https://www.blogger.com/Text/part0016.html#t6" id="tt6" style="color: #bd2716; text-decoration: none;">Tabella 6</a>. Dogmi sovrannaturali proclamati da alcune religioni.</div>
<div class="indent" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-top: 1em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
</div>
<div class="size" style="font-size: 0.875em;">
<table class="calibre21" style="margin-bottom: 0px; margin-top: 0px; position: static; width: 100%px; z-index: auto;"><tbody class="calibre22">
<tr class="calibre23" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"><td class="calibre24" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" valign="top">1.</td><td class="calibre24" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" valign="top">Esiste un dio-scimmia che con una sola capriola percorre migliaia di chilometri (indú).</td></tr>
<tr class="calibre23" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"><td class="calibre24" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" valign="top">2.</td><td class="calibre24" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" valign="top">Chi riesce a sopravvivere quattro giorni in un luogo solitario senza acqua né cibo e si taglia la falange di un dito della mano sinistra può ottenere favori dagli spiriti (indiani crow).</td></tr>
<tr class="calibre23" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"><td class="calibre24" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" valign="top">3.</td><td class="calibre24" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" valign="top">Una donna non fecondata da alcun uomo restò incinta e diede alla luce un figlio maschio, che dopo la morte fu trasportato in un luogo detto Paradiso, situato in cielo (cattolici).</td></tr>
<tr class="calibre23" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"><td class="calibre24" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" valign="top">4.</td><td class="calibre24" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" valign="top">Uno sciamano, retribuito per i suoi servigi, siede in penombra all’interno di un’abitazione insieme agli adulti del villaggio. Questi ultimi tengono gli occhi chiusi mentre lo sciamano scende sul fondo dell’oceano e pacifica la dea dei mari, la cui ira è causa di sventura (inuit).</td></tr>
<tr class="calibre23" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"><td class="calibre24" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" valign="top">5.</td><td class="calibre24" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" valign="top">Per stabilire se una persona accusata di adulterio è colpevole, costringete un pollo a ingerire pastone avvelenato: se il pollo non muore, la persona accusata è innocente (azande).</td></tr>
<tr class="calibre23" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"><td class="calibre24" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" valign="top">6.</td><td class="calibre24" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" valign="top">Gli uomini che sacrificano la vita combattendo per la propria religione saranno trasportati in un paradiso popolato di bellissime vergini (islam).</td></tr>
<tr class="calibre23" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"><td class="calibre24" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" valign="top">7.</td><td class="calibre24" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" valign="top">Nel 1531, sulla collina di Tepeyac a nord di Città del Messico, la Vergine Maria apparve a un indio cristianizzato, gli parlò nella lingua nahuatl (l’idioma azteco all’epoca ancora diffuso nella regione) e gli fece cogliere delle rose in un’area desertica in cui normalmente non crescono fiori (cattolici del Messico).</td></tr>
<tr class="calibre23" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"><td class="calibre24" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" valign="top">8.</td><td class="calibre24" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" valign="top">Il 21 settembre 1823, sulla cima di una collina vicino alla località di Manchester, nella parte occidentale dello stato di New York, l’angelo Moroni apparve a un uomo di nome Joseph Smith e gli indicò il luogo ove erano seppellite alcune lastre d’oro sulle quali era trascritto il testo di un libro della Bibbia andato perduto e mai tradotto, chiamato <em class="calibre12">Libro di Mormon</em> (mormoni).</td></tr>
<tr class="calibre23" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"><td class="calibre24" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" valign="top">9.</td><td class="calibre24" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" valign="top">Un essere sovrannaturale donò un pezzo di deserto mediorientale al suo popolo prediletto, affinché vi risiedesse per sempre (israeliti).</td></tr>
<tr class="calibre23" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"><td class="calibre24" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" valign="top">10.</td><td class="calibre24" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" valign="top">Intorno al 1880, durante un’eclisse solare, Dio apparve a un indiano paiute chiamato Wovoka e gli disse che in capo a due anni i bufali sarebbero tornati a popolare le pianure e gli uomini bianchi sarebbero scomparsi, a condizione che gli indiani partecipassero a un rituale detto Danza degli Spiriti.<br /></td></tr>
</tbody></table>
</div>
</div>
</span></div>
<div>
<span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate;"><div class="sec" id="ch92" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 0.7em; margin-left: 1.2em; margin-top: 1.7em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
<em class="calibre12">La funzione esplicativa della religione.</em></div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
Nel corso della storia la religione ha assunto svariate funzioni: tra queste, le due piú antiche hanno perso importanza o sono diventate trascurabili nelle odierne società occidentalizzate, mentre altre funzioni che oggi hanno grande rilievo erano pressoché inesistenti nelle società di piccola scala formate da cacciatori-raccoglitori o dedite all’agricoltura. Infine, altre quattro funzioni un tempo deboli o inesistenti hanno raggiunto la massima importanza in passato e ora sono nuovamente in declino. Questo alternarsi di funzioni nell’arco di un percorso evolutivo ricorda assai da vicino le modificazioni funzionali subite nel tempo da molte strutture biologiche (come gli organi elettrici dei pesci) e forme di organizzazione sociale.</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
Nei prossimi sottocapitoli passeremo in rassegna quelle che a parere di molti studiosi sono sette importanti funzioni della religione, dopodiché cercheremo di capire se il fenomeno religioso nel suo complesso si stia avviando verso l’obsolescenza o se abbia probabilità di sopravvivere e, in quest’ultimo caso, quali siano le funzioni piú adatte a favorirne la conservazione. Le sette funzioni saranno trattate nell’ordine che immagino all’incirca corrispondere alla loro comparsa ed eventuale scomparsa, partendo dalle funzioni preponderanti nelle prime fasi della storia sociale umana e terminando con quelle assenti in origine ma prevalenti non molto tempo fa, o al giorno d’oggi.</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
Tra le finalità originarie della religione vi era senz’altro quella esplicativa: i popoli tradizionali prescientifici tentano di spiegare tutto ciò che vedono, ma ovviamente sono privi della capacità profetica che permette di distinguere tra le spiegazioni oggi considerate naturali e scientifiche oppure sovrannaturali e religiose. In sostanza, per i popoli tradizionali sono comunque tutte spiegazioni, e quelle che noi oggi consideriamo religiose non formano una categoria a sé. Molti ornitologi moderni ritengono per esempio che alcune società guineane comprendano con straordinaria sensibilità e precisione certi comportamenti degli uccelli (le varie funzioni dei loro richiami, per esempio) ma che, al contrario, altri fenomeni siano interpretati in modo sovrannaturale e ormai inaccettabile (si pensi per esempio alla credenza secondo cui certi gridi sarebbero le voci di persone trasformate in uccelli). La funzione esplicativa si evidenzia anche nei numerosissimi miti di origine, come la Genesi e la narrazione tribale citata all’inizio di questo capitolo, il cui scopo è spiegare l’esistenza dell’universo, degli uomini e della diversità linguistica. Anche gli antichi greci, pur dando spiegazioni scientificamente corrette a molti fenomeni, facevano appello all’intervento sovrannaturale degli dèi per spiegare il sorgere e il tramontare del sole, le maree, i venti e la pioggia. Ai giorni nostri, il Dio dei creazionisti (e della maggioranza degli americani) è la «causa prima» dell’universo, l’emanatore delle leggi che lo governano e ne permettono l’esistenza, il creatore di tutte le specie vegetali e animali, compresa quella umana; ciononostante, non mi risulta che i creazionisti continuino a evocare l’intervento divino per spiegare il sorgere del sole, le maree e i venti. Esistono poi molti laici che, pur attribuendo a Dio la creazione dell’universo e delle sue leggi, accettano l’idea che dopo la creazione il cosmo abbia proseguito la sua strada da solo, con scarsissima o nulla intromissione da parte di Dio.</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
Nelle moderne società occidentali, la funzione esplicativa originariamente svolta dalla religione è stata gradatamente usurpata dalla scienza. Oggi si pensa che l’universo abbia avuto origine dal Big Bang e dal successivo intervento delle leggi fisiche, e la moderna molteplicità delle lingue umane non è piú illustrata da miti come la torre di Babele o lo scatto dell’albero di casuarina: come vedremo nel<a class="calibre16" href="https://www.blogger.com/Text/part0017.html#chapter" style="color: #bd2716; text-decoration: none;">capitolo <span class="small-caps" style="font-size: 0.75em; letter-spacing: 0.05em;">X</span></a>, oggi siamo in grado di descrivere una serie di processi linguistici storicamente documentati. Allo stesso modo, la spiegazione delle maree o del sorgere e tramontare del sole è affidata agli astronomi, mentre il compito di chiarire le dinamiche dei venti e delle piogge spetta ai meteorologi. I canti degli uccelli sono dunque di competenza degli etologi, e dai biologi evoluzionisti ci si aspettano delucidazioni circa l’origine di tutte le specie animali e vegetali.</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
Per molti scienziati moderni, l’ultimo bastione della spiegazione religiosa è il concetto di Dio come causa prima: a quanto pare la scienza non ha nulla da dire sul <em class="calibre12">perché</em> l’universo esista. Tra i miei ricordi del primo anno allo Harvard College, nel lontano 1955, c’è la sfida lanciata dal grande teologo Paul Tillich alla sua classe di laureandi, invitati a fornire una risposta razionale e scientifica alla semplicissima domanda: «Perché esiste qualcosa anziché nulla?» Ricordo che nessuno dei miei compagni del corso di scienze era stato in grado di rispondere, anche se tutti avrebbero voluto obiettare che la tesi fornita da Tillich (Dio) era semplicemente il tentativo di dare un nome alla sua mancanza di risposte. Al giorno d’oggi gli scienziati stanno cercando di rispondere anche a questa domanda, e hanno già avanzato delle ipotesi.</div>
<div class="sec" id="ch93" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 0.7em; margin-left: 1.2em; margin-top: 1.7em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
<em class="calibre12">Disinnescare l’ansia.</em></div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
Ecco un’altra delle funzioni piú forti della religione nelle società primitive: alleviare l’ansia provocata dalle difficoltà e dai pericoli che sfuggono al controllo umano. Se una persona ha già tentato tutto ciò che era concretamente in suo potere per risolvere un certo problema, non le resterà altro che affidarsi a preghiere, rituali e offerte agli dèi, consultare oracoli e sciamani, interpretare presagi, osservare tabú e compiere rituali magici. Nulla di tutto ciò sarà scientificamente efficace ai fini del risultato che spera di ottenere, tuttavia quella persona potrà continuare a illudersi di stare facendo qualcosa, di non essere del tutto impotente, insomma di non essersi arresa, e le sembrerà di avere ancora il controllo della situazione, si sentirà meno ansiosa, potrà continuare a impegnarsi al meglio.</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
Il nostro bisogno di arginare il senso di impotenza mediante la religione è efficacemente illustrato da un recente studio su alcune donne di religione ebraica effettuato dagli antropologi Richard Sosis e W. Penn Handwerker. Durate la guerra israelo-libanese del 2006, quando i militanti di Hezbollah presero a lanciare razzi katyusha contro gli insediamenti israeliani della Galilea settentrionale, numerosi centri della regione, e in particolare la città di Safad, si ritrovarono bersagliati ogni giorno da decine di razzi. Le sirene lanciavano l’allarme quando i razzi erano già in volo e gli abitanti potevano salvarsi correndo nei rifugi, ma non potevano fare nulla per proteggere le loro case. Realisticamente parlando, i razzi costituivano una minaccia imprevedibile e incontrollabile, ma in quella difficile situazione per tenere a bada lo stress circa due terzi delle donne intervistate da Sosis e Handwerker affermavano di aver recitato ogni giorno i salmi. Invitate a spiegare perché, le donne dichiaravano di essersi sentite obbligate a «fare qualcosa», anziché starsene con le mani in mano. Naturalmente recitare salmi non serve a deviare il corso dei razzi, ma quella parvenza di iniziativa dava loro la sensazione di poter esercitare una qualche forma di controllo. (Questa almeno era l’interpretazione dei due studiosi, perché le interessate si dichiaravano sinceramente convinte di poter proteggere le loro case pregando). In confronto alle donne della stessa comunità che non recitavano salmi, i soggetti del primo gruppo avevano avuto meno difficoltà a prendere sonno e a concentrarsi, meno scatti di rabbia, e in generale si sentivano meno ansiose, nervose o depresse. Quella pratica aveva dunque un’effettiva utilità, poiché evitava che la comprensibile agitazione dovuta alla situazione di pericolo si traducesse in atti inconsulti a loro volta pericolosi. Come ben sanno quanti si sono trovati ad affrontare rischi altrettanto imprevedibili e incontrollabili, l’incapacità di dominare l’ansia genera spesso ulteriori problemi.</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
Questa particolare funzione, già al suo culmine nelle prime società religiose, si sarebbe attenuata a mano a mano che le società rafforzavano il controllo sulle vicende umane mediante il progressivo consolidamento dei poteri statali, con conseguente riduzione degli episodi violenti e generalmente pericolosi, la prevenzione delle carestie attraverso la distribuzione di scorte alimentari, e (negli ultimi duecento anni) lo sviluppo della scienza e della tecnologia. Ma non si può certo dire che le società tradizionali fossero indifese o sprovvedute: al contrario, esse dimostravano una straordinaria capacità di mettere a frutto l’esperienza per proteggersi meglio da ogni possibile imprevisto. I guineani e gli altri popoli tradizionali dediti all’agricoltura conoscono per esempio decine di varietà di patate dolci e altri ortaggi, sanno dove e come coltivarli nel migliore dei modi e padroneggiano alla perfezione le tecniche di sarchiatura, fertilizzazione, pacciamatura, drenaggio e irrigazione. A loro volta i cacciatori di molte società tradizionali, compresi i !kung, studiano e interpretano le tracce delle loro prede per determinarne il numero e la distanza, la velocità e la direzione del movimento, e osservano il comportamento di altri animali per trarne indicazioni utili sulla loro presenza. Benché privi di bussole, pescatori e marinai sono comunque in grado di orientarsi in base alla posizione del sole e delle stelle, al flusso dei venti e delle correnti marine, all’osservazione delle nubi e degli uccelli, alla bioluminescenza dei mari e ad altri indicatori di posizione. Tutti i popoli predispongono inoltre difese e vigilano senza sosta contro eventuali attacchi ostili, formano alleanze e tendono agguati per cogliere il nemico di sorpresa.</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
Ma, piú ancora di quanto non accada a noi, l’efficacia delle azioni intraprese dai popoli tradizionali ha limiti importanti e lascia ampie aree di indeterminatezza: i rendimenti agricoli possono calare per effetto di siccità improvvise, piogge troppo intense, grandinate, tempeste di vento, repentini abbassamenti di temperatura o attacchi di parassiti, gli spostamenti degli animali hanno una forte componente di casualità e la maggior parte delle malattie si sottrae ai poteri della medicina tradizionale. Come le donne israeliane che recitavano salmi pur essendo del tutto incapaci di governare la traiettoria dei razzi, anche i popoli tradizionali, pur restando loro malgrado impotenti di fronte a molti pericoli, come noi si ribellano all’idea di rinunciare ad agire: l’inazione genera ansia e senso di impotenza, espone al rischio di commettere errori e ci impedisce di dare il meglio di noi. Per questo i popoli tradizionali si affidano a preghiere, rituali, profezie, magie, tabú, superstizioni e sciamani, e ogni tanto lo facciamo anche noi: convinti dell’efficacia di questi rimedi, troviamo sollievo all’ansia e riusciamo ad agire con piú calma e concentrazione.</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
L’etnografo Bronisław Malinowski ha studiato una popolazione delle Isole Trobriand, al largo della Nuova Guinea, i cui abitanti vanno a pesca tanto nella laguna interna dell’arcipelago, dove è sufficiente gettare una sostanza tossica e poi recuperare i pesci morti o storditi, quanto in mare aperto, dove le prede vanno trafitte con una lancia o prese nella rete mentre si continua a pagaiare. La pesca in laguna è facile, sicura e prevedibile in termini di resa; la pesca in mare aperto è pericolosa e imponderabile: se si ha la fortuna di incrociare un banco di pesci i risultati possono essere estremamente positivi, ma in caso contrario gli scarsi benefici si aggiungono a un alto indice di pericolosità. Prima di montare in piroga per una battuta in mare aperto gli isolani celebrano complessi riti magici destinati a garantire l’incolumità degli uomini e una pesca abbondante, perché neppure l’esperienza e l’impegno riescono ad annullare il margine di incertezza. Viceversa, alla pesca in laguna non è associato alcun tipo di rito magico: semplicemente si parte e si va, senza ansie né timori.</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
Un altro esempio è fornito dai cacciatori !kung, la cui competenza sembrerebbe lasciare ben poco spazio all’improvvisazione. Sin dalla prima infanzia i piccoli !kung giocano tutto il giorno con archi e frecce in miniatura, e non appena raggiungono l’adolescenza escono a caccia con i loro padri. La sera, davanti ai falò, gli uomini narrano le proprie avventure, ascoltano le relazioni di altri cacciatori sugli avvistamenti dei giorni precedenti, e solo a questo punto pianificano la giornata successiva. Durante le battute prestano costante attenzione ai movimenti e ai versi di altri animali il cui comportamento potrebbe rivelare la vicinanza di una preda, e studiano attentamente segni e impronte per identificare gli animali e dedurne la posizione. Verrebbe da pensare che i !kung non abbiano alcun bisogno di affidarsi alla magia, ma al mattino presto, prima di mettersi in cammino, nessun cacciatore può ancora sapere con precisione dove si trovino le prede.</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
Per controllare l’ansia generata da questa incertezza, alcuni consultano speciali dischi divinatori che dovrebbero indicare loro la direzione migliore da prendere e il tipo di animale che incontreranno. Si tratta di cinque o sei anelli di pelle di antilope, di diametro compreso tra i cinque e i sette centimetri, ciascuno dei quali ha un nome e un aspetto riconoscibile. Ogni cacciatore ne possiede una serie completa. All’occorrenza si sovrappongono i dischetti sul palmo della mano sinistra, ponendo il piú grande in cima, dopodiché li si agita soffiandoci sopra, si pone una domanda con voce potente e ieratica e si gettano i dischetti su un indumento steso per terra. Il compito di interpretare il responso dei dischi in base alla loro eventuale sovrapposizione e alla faccia visibile di ciascuno spetterà quindi a un indovino. A quanto pare l’interpretazione ha ben poche regole fisse, eccetto che la posizione capovolta dei dischi da 1 a 4 indica l’imminente uccisione di una preda.</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
Ovviamente i dischi divinatori non dicono nulla che i !kung già non sappiano. La loro conoscenza del comportamento animale è talmente profonda che le battute di caccia hanno sempre buone probabilità di successo, quale che sia la disposizione dei dischi divinatori, e quest’ultima, interpretata in maniera creativa come una sorta di test di Rorschach, sembra servire soprattutto per «dare la carica» agli uomini in previsione della giornata intensa. Il rituale li aiuta piú che altro a raggiungere un accordo sulla direzione da prendere: incamminarsi in una direzione quale che sia e seguirla senza esitazioni è certamente piú utile che perdere tempo a discutere.</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
Oggi tra noi contemporanei la preghiera, i riti e la magia sono meno diffusi, soprattutto perché la scienza e la conoscenza hanno un peso maggiore nel determinare il successo dei nostri sforzi. Molto però sfugge ancora al nostro controllo, e tante sono le imprese in cui scienza e tecnologia non possono garantirci il successo né proteggerci dai rischi: è in questi casi che anche noi ci affidiamo a preghiere, offerte e riti. Non è trascorso molto tempo da quando pregavamo per la felice conclusione dei viaggi in mare, per la vittoria nelle guerre e soprattutto per la guarigione dalle malattie, e quando un medico non riesce a prevedere con ragionevole certezza l’esito di una patologia o addirittura si dichiara impotente, è quasi matematico che ci affideremo alla preghiera.</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
Ma siamo davvero sicuri che il ricorso a queste forme rituali sia associato all’incertezza degli esiti? Prendiamo due esempi. È noto che prima di lanciare i dadi sul tappeto molti giocatori d’azzardo compiono una sorta di cerimoniale propiziatorio, cosa sconosciuta fra i giocatori di scacchi: ciò dipende dal fatto che i dadi sono notoriamente un gioco di fortuna, laddove invece la casualità non ha alcun ruolo negli scacchi. Se una certa mossa gli costa la partita, il giocatore di scacchi non ha scuse: ha perso perché non ha saputo prevedere la mossa dell’avversario. Allo stesso modo, prima di scavare un pozzo, i contadini del Nuovo Messico sono soliti consultare un rabdomante, poiché la complessità geologica di quell’area impedisce di fare ipotesi attendibili su profondità e consistenza delle falde acquifere: neanche i geologi professionisti riescono sempre a intuirne l’ubicazione in base alle caratteristiche superficiali del terreno. Ma nelle ventisei contee in cui è suddivisa la parte settentrionale del Texas (il cosiddetto <em class="calibre12">Panhandle</em>) l’acqua si trova quasi sempre 38 metri sottoterra, perciò gli agricoltori non fanno altro che scavare fino a quella profondità e a nessuno passa per la testa di ricorrere a un rabdomante. I giocatori di dadi e gli agricoltori del Nuovo Messico affrontano dunque l’incertezza con l’aiuto di rituali propiziatori, esattamente come i pescatori oceanici delle Trobriand e i cacciatori !kung; viceversa, gli agricoltori del Texas settentrionale, i giocatori di scacchi e i pescatori di laguna delle Trobriand non ne sentono il bisogno.</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
In sintesi, possiamo affermare che i rituali (religiosi e non) fanno tuttora parte della nostra vita e ci aiutano a sopportare l’ansia alimentata dall’incertezza e dal pericolo. Ciononostante, nelle società tradizionali questa funzione della religione era assai piú rilevante che nelle moderne società occidentalizzate.</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate;"><div class="sec" id="ch94" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 0.7em; margin-left: 1.2em; margin-top: 1.7em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
<em class="calibre12">Offrire conforto.</em></div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
Una funzione della religione che potrebbe avere assunto crescente importanza negli ultimi 10000 anni è quella di offrire consolazione, speranza e senso dinanzi alle avversità della vita: un caso tipico è quando la morte si avvicina per noi o per una persona cara. Benché alcuni mammiferi – gli elefanti ne sono l’esempio piú straordinario – sembrino comprendere e provare dolore per la morte di un loro compagno, non abbiamo ragioni per credere che altri animali all’infuori di noi si rendano conto di essere destinati a morire. Quanto ai nostri antenati, l’inevitabile intuizione della limitatezza della vita dev’essere andata di pari passo con l’acquisizione di una maggiore coscienza di sé e di migliori capacità di raziocinio, associate all’osservazione della morte di altri membri della banda. La comprensione del significato della morte da parte della quasi totalità dei gruppi umani studiati e archeologicamente attestati si concretizzava nelle cure rivolte ai cadaveri, che a seconda dei casi venivano seppelliti, cremati, fasciati, mummificati, cotti, e cosí via.</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
L’improvvisa trasformazione di un corpo vivo e caldo in grado di muoversi, parlare e difendersi in un cadavere freddo, immobile e muto è certamente un’esperienza spaventosa, come lo è immaginare che la stessa cosa accadrà anche a noi. La maggior parte delle religioni offre conforto negando di fatto la realtà della morte e postulando una qualche sorta di vita ultraterrena per un’anima che si ipotizza legata al corpo. L’anima di una persona e la replica del suo corpo possono essere destinate a un luogo sovrannaturale che alcuni chiamano cielo; oppure l’anima resta sulla Terra trasformandosi in uccello, o migrando nel corpo di un’altra persona. Spesso le religioni che proclamano l’esistenza di una vita ultraterrena non si limitano a negare la morte, ma invitano i fedeli a sperare in un destino migliore nell’aldilà: vita eterna, ricongiungimento con i propri cari, libertà dagli affanni, nettare e bellissime vergini.</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
Oltre alla sofferenza legata alla prospettiva della morte, la religione fornisce conforto per altre situazioni difficili della vita: per esempio «spiegando» certe tribolazioni, negando che siano prive di senso e attribuendo loro un significato piú profondo. La sofferenza può dunque servire a dimostrare che un credente è degno di ricevere la vita eterna, a punirlo per i suoi peccati oppure a spingerlo con l’aiuto di uno stregone a identificare e uccidere una persona malvagia che gli ha arrecato danno. Vi sono poi religioni che promettono un risarcimento ultraterreno per i travagli terreni: il fedele che soffre non deve temere, perché sarà ricompensato dopo la morte. Una terza possibilità consiste infine nel promettere, oltre al risarcimento personale per le sofferenze patite, anche una vita ultraterrena assai travagliata per coloro che ci hanno inflitto tanto dolore: punire i nostri nemici da vivi offre una gratificazione limitata nel tempo, ben poca cosa in confronto al pensiero delle raffinate torture che dovranno patire per l’eternità in un inferno di matrice dantesca. Ecco cosí emergere la duplice funzione dell’inferno: offrire conforto infliggendo la meritata punizione ai nemici che non siamo riusciti a castigare personalmente, e incentivare l’obbedienza ai precetti religiosi con la minaccia di finire noi stessi nel fuoco eterno se sgarriamo. L’idea di una vita ultraterrena risolve il paradosso della teodicea, ovvero la coesistenza di bontà e crudeltà in un unico Dio: non c’è motivo di preoccuparsi, perché i conti verranno saldati al momento opportuno.</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
La funzione consolatoria della religione dev’essere emersa nelle fasi iniziali della storia evolutiva umana, non appena i nostri antenati sono diventati abbastanza intelligenti da capire di essere destinati alla morte e da chiedersi perché a volte la vita fosse tanto dolorosa. Molti popoli di caccia e raccolta credono nella sopravvivenza dello spirito nell’aldilà, ma la funzione consolatoria si è potenziata soprattutto dopo l’avvento delle cosiddette religioni trascendenti, che oltre a proclamare l’esistenza di una vita dopo la morte sostengono che quest’ultima sia ben piú importante e duratura della vita terrena, il cui fine prioritario consiste nell’ottenere la salvezza e prepararsi all’aldilà. Il rifiuto del mondo è particolarmente forte nel cristianesimo, nell’islam e in certe forme di buddismo, ma lo si ritrova anche in alcune filosofie secolari (cioè non religiose) come il platonismo. La fede in questo dogma può diventare cosí assoluta, da tradursi in totale rinuncia alla vita mondana: è il caso dei monaci e delle suore appartenenti agli ordini conventuali, che vivono, dormono e mangiano separati dal mondo secolare benché abbiano facoltà di frequentarlo ogni giorno per celebrare gli uffici divini, insegnare e predicare. Altri ordini miravano a un isolamento ancora piú rigido, del quale ci offrono eloquente testimonianza i monasteri cistercensi dell’Inghilterra: le rovine delle antiche abbazie di Rievaulx, Fountains Abbey e Jervaulx sono a tutt’oggi ben conservate proprio perché, lontane dai centri abitati, hanno subíto meno saccheggi e non sono mai state riutilizzate dopo l’abbandono. Ancora piú estremo fu il rifiuto del mondo praticato dai monaci irlandesi che andarono come eremiti nella disabitata Islanda.</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
Rispetto alle piú complesse società moderne, le società di piccola scala attribuiscono assai meno importanza al rifiuto del mondo, alla salvezza e alla vita ultraterrena, e questo per almeno tre ragioni. In primo luogo, il passaggio dalle società egualitarie di piccola scala agli organismi sociali piú complessi, con il loro corredo di re, nobili, élite, membri delle classi benestanti e cerchie altolocate, ha determinato un progressivo incremento della stratificazione sociale e della diseguaglianza. Se tutti coloro che ti circondano soffrono quanto te, difficilmente sentirai il bisogno di meditare sulle ingiustizie della vita e, al tempo stesso, non avrai sotto gli occhi esempi palesi di opulenza e fortuna. Viceversa, quando diventa evidente che certe persone vivono assai meglio di altre ed esercitano una supremazia sui loro simili, la religione si assume allora l’incarico di spiegare e confortare.</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
Le testimonianze archeologiche e le indagini etnografiche ci dimostrano come la vita sia effettivamente diventata piú difficile a mano a mano che le società di cacciatori-raccoglitori si trasformavano in società agricole e formavano raggruppamenti piú estesi. L’avvento dell’agricoltura determinò infatti un incremento delle ore di lavoro quotidiane, un peggioramento nella qualità dell’alimentazione, un aggravamento delle malattie infettive e del logorio fisico, e una riduzione della durata media della vita. Infine, come vedremo piú avanti, la terza e ultima ragione è legata al fatto che le società popolose e complesse hanno codici morali piú formalizzati, un atteggiamento piú manicheo nei confronti del bene e del male e di conseguenza problemi ancora maggiori rispetto alla teodicea: per quale motivo, se una persona agisce virtuosamente e rispetta le leggi, i malfattori e il mondo intero possono essere impunemente crudeli nei suoi confronti?</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
Questi ultimi tre punti ci aiutano dunque a comprendere perché la funzione di conforto della religione sia diventata cosí importante nelle società piú recenti e popolose: semplicemente, queste società ci infliggono piú sofferenze per le quali desideriamo essere confortati. Questa stessa funzione potrebbe inoltre spiegare il motivo per cui le sventure sembrano spesso ravvivare la fede nelle persone colpite, ed è alla base della maggiore religiosità osservata negli strati sociali, nelle regioni e nelle nazioni meno abbienti: in sostanza, i poveri hanno piú bisogno di essere rincuorati. Oggi la percentuale di individui che definisce la religione una componente importante della vita quotidiana oscilla tra l’88 e il 90 per cento in quasi tutte le nazioni con un prodotto interno lordo (Pil) al di sotto dei 10000 dollari, ma solo tra il 17 e il 43 per cento nella maggior parte di quelle con un Pil superiore ai 30000. (Il che non spiega tuttavia la forte religiosità degli americani, a cui accenneremo tra poco). Anche negli Stati Uniti le chiese e i loro frequentatori assidui sembrano essere di piú nelle regioni povere, nonostante le risorse economiche per costruirle e il tempo libero per andarci siano teoricamente superiori nelle aree ad alto reddito: di fatto, i gruppi sociali piú emarginati e deprivati dell’America sono quelli che manifestano l’impegno religioso piú appassionato e che aderiscono alle forme piú radicali di cristianesimo.</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
A fronte di due recenti sviluppi già citati, ovvero l’appropriazione della funzione esplicativa da parte della scienza e l’aiuto offerto da tecnologia ed efficienza sociale nel limitare pericoli un tempo considerati incontrollabili, il fatto che nel mondo moderno la religione continui a sopravvivere e addirittura a espandersi può lasciare sorpresi, ma il merito di ciò potrebbe andare al nostro costante bisogno di dare «significato» alle cose. Da sempre gli esseri umani cercano infatti di dare senso alla propria vita, che altrimenti rischierebbe di apparire una contingenza insignificante, vana ed effimera all’interno di un mondo imprevedibile e ostile. La scienza, dal canto suo, parrebbe sostenere che in questo contesto «significato» è una parola priva di senso, perché le nostre vite sono davvero insensate e insignificanti, nonché vane ed effimere, se non per il fatto di essere dotate di un corredo di geni il cui fine ultimo consiste nell’autopropagarsi. A loro volta, molti atei sono pronti a giurare che il problema della teodicea non esiste e che bene e male sono pure e semplici invenzioni umane: se il cancro o un incidente automobilistico uccide X e Y ma non A e B, si tratta semplicemente di casualità; dopo la morte non c’è vita, e i soprusi patiti sulla terra non saranno affatto compensati nell’aldilà. Se qualcuno, rifiutando l’idea che la vita sia priva di senso, li invitasse a mostrare in che modo la scienza può invece darle significato, gli atei risponderebbero che è una richiesta insensata e che sarebbe meglio lasciar perdere, perché tanto il significato non c’è: come disse Donald Rumsfeld a proposito dei saccheggi durante la guerra in Iraq, la vita è semplicemente «una cosa che succede». Ma niente da fare, i nostri vecchi cervelli bramano ardentemente un significato, e una storia evolutiva lunga milioni di anni ci induce a rispondere sempre nello stesso modo: «Sarà anche cosí, ma non mi piace e perciò mi rifiuto di crederci: se la scienza è incapace di dare un senso alla vita, mi affiderò alla religione». Forse è in questo modo che si spiega la persistenza e addirittura l’aumento della religiosità in un secolo di grandi progressi scientifici e tecnologici, e forse questo stesso bisogno di significato rende in parte conto del perché gli Stati Uniti, il paese con l’<em class="calibre12">establishment</em> scientifico e tecnologico piú sviluppato del pianeta, siano anche la piú religiosa tra le ricche nazioni del Primo Mondo. L’altra parte della spiegazione potrebbe risiedere nella maggior ampiezza del divario tra ricchi e poveri rispetto alla realtà europea.</div>
<div class="sec" id="ch95" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 0.7em; margin-left: 1.2em; margin-top: 1.7em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
<em class="calibre12">Organizzazione e obbedienza.</em></div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
Le ultime quattro caratteristiche e funzioni della religione che ancora restano da considerare – standardizzazione organizzativa, educazione all’obbedienza politica, regolazione del comportamento verso gli estranei mediante codici morali formalizzati, giustificazione dei conflitti – erano certamente assenti nelle società di piccola scala e sono emerse soltanto con la diffusione delle<em class="calibre12">chefferies</em> e degli stati, per poi declinare nuovamente nei moderni stati secolari. La standardizzazione organizzativa è una qualità che ormai tendiamo a dare per scontata nelle religioni moderne, che nella maggior parte dei casi hanno sacerdoti (rabbini, pastori, imam e cosí via) a tempo pieno, salariati o comunque forniti di quanto serve per vivere, nonché chiese (templi, sinagoghe, moschee, ecc.). All’interno di ciascuna dottrina, le chiese si riconoscono in un libro sacro comune (Bibbia, Torah, Corano e cosí via) e adottano rituali, stili artistici, musicali, architettonici e di abbigliamento ugualmente unificati. Un cattolico praticante cresciuto a Los Angeles può per esempio trovarsi perfettamente a suo agio in una chiesa cattolica di New York. Viceversa, nelle religioni praticate nelle società di piccola scala alcuni di questi elementi (rituali, arte, musica, abbigliamento) non sono standardizzati, e altri (sacerdoti, chiese, libri sacri) sono completamente assenti. È vero che in alcune esiste la figura dello sciamano, pagato o ricompensato con doni in cambio dei suoi servigi: ma non si tratta mai di figure a tempo pieno, bensí di individui che per sostentarsi devono comunque dedicarsi alla caccia, alla raccolta o all’agricoltura esattamente come ogni altro membro abile della stessa banda o tribú.</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
Storicamente, questi connotati organizzativi si svilupparono in risposta a un nuovo problema che andò emergendo a mano a mano che le società, sempre piú ricche e popolose, si ritrovarono a dovere e a potere dotarsi di una maggiore centralizzazione. Le bande e le società tribali sono troppo piccole e improduttive per generare i surplus alimentari necessari al sostentamento di sacerdoti, leader, esattori dei tributi, vasai, sciamani e specialisti a tempo pieno di vario ordine e grado: qui ogni individuo adulto deve procurarsi il cibo andando a caccia, raccogliendo o coltivando. Soltanto le società piú grandi e produttive generano le eccedenze che servono a rifornire di cibo le gerarchie di capi o dirigenti, oltre agli artigiani specializzati che non si dedicano all’agricoltura e non vanno a caccia.</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
Il dirottamento delle risorse alimentari è la soluzione al dilemma che nasce da tre indiscutibili premesse: le società popolose hanno forti probabilità di sconfiggere le società piú piccole; le società popolose hanno bisogno di leader e burocrati a tempo pieno, perché se venti persone possono sedersi attorno al fuoco e trovare un accordo, venti milioni non possono certo farlo; i capi e i burocrati di professione devono essere nutriti. Ma in che modo un capo o un re può indurre i contadini a tollerare quello che sostanzialmente è un furto di cibo perpetrato da una classe di parassiti sociali? Il problema è ben noto ai cittadini delle moderne democrazie, che a ogni tornata di elezioni si pongono sempre la stessa domanda: che cosa hanno fatto gli attuali detentori del potere per giustificare i grassi salari che prelevano dalle casse pubbliche?</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
La soluzione individuata da tutte le <em class="calibre12">chefferies</em> e le prime comunità statali conosciute, dall’antico Egitto alla Mesopotamia, dalle Hawaii all’Impero inca, è consistita nel creare una religione organizzata fondata sui seguenti principî: il capo o re è imparentato con gli dèi, oppure è egli stesso un dio; egli può intercedere presso gli dèi in favore dei contadini, ad esempio per far piovere o per ottenere un raccolto abbondante. Inoltre il capo o re offre un valido servizio alla comunità, coordinando i contadini in vista della costruzione di strade, sistemi di irrigazione e magazzini utili per tutti. In cambio i contadini devono procurare cibo al re, ai suoi sacerdoti e agli esattori delle tasse. L’insegnamento di questi precetti religiosi avviene per mezzo di rituali standardizzati, celebrati in templi altrettanto standardizzati, in modo da garantire l’obbedienza al re e ai suoi tirapiedi. Con il cibo prodotto dai contadini si nutrono anche gli eserciti, al comando dei quali il capo o il re muove alla conquista di nuovi territori e superfici coltivabili. Gli eserciti assicurano altri due vantaggi supplementari: dirottano verso le guerre contro i popoli vicini le energie dei nobili piú giovani e ambiziosi, che in caso contrario potrebbero complottare a danno del re, e possono essere impiegati per sedare eventuali rivolte dei contadini. Lungo il processo evolutivo che dai primi stati teocratici portò alla nascita degli imperi dell’antica Babilonia e di Roma, capaci di accumulare quantitativi ingenti di cibarie e forza lavoro, l’architettura delle religioni di stato si fece sempre piú ricca ed elaborata. Per questo Karl Marx considerava la religione oppio dei popoli (tab. 5) e strumento di oppressione di classe.</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
Negli ultimi secoli all’interno del mondo giudaico-cristiano abbiamo però assistito a una graduale inversione di tendenza, tanto che la religione ha ormai quasi completamente perso il ruolo di ancella dello stato. Per piegare al loro volere noi «contadini», i nostri politici e le classi dominanti si affidano oggi a mezzi ben diversi dalle asserzioni di divinità. Ciò non toglie che stato e religione siano ancora strettamente associati in alcuni paesi musulmani, in Israele e, fino a poco tempo fa, anche in Giappone e in Italia, o che il governo degli Stati Uniti invochi Dio sulle proprie monete, il Parlamento e le forze armate statunitensi abbiano i loro cappellani e tutti i presidenti americani (democratici e repubblicani) concludano i loro discorsi ufficiali con la formula «God bless America».</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate;"><div class="sec" id="ch96" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 0.7em; margin-left: 1.2em; margin-top: 1.7em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
<em class="calibre12">Codici di comportamento verso gli estranei.</em></div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
Un’altra prerogativa della religione divenuta rilevante nelle società di tipo statale ma assente in quelle di piccola scala è l’ambizione di dettare i principî del comportamento morale fra estranei. Tutte le principali religioni del mondo indicano che cosa è giusto e che cosa è sbagliato e come ci si deve comportare, ma nelle società guineane di cui ho esperienza diretta questo nesso tra religione e moralità è molto piú debole o del tutto assente, specie per quanto riguarda il comportamento fra estranei. In quelle società, infatti, gli obblighi sociali sono fortemente condizionati dalle relazioni interpersonali: poiché una banda o una tribú è composta da poche dozzine o poche centinaia di individui, tutti i membri si conoscono fra loro e conoscono i rispettivi legami interpersonali, e ogni membro del gruppo osserva vincoli diversi nei confronti dei propri consanguinei, dei parenti acquisiti, dei membri del clan e degli abitanti del villaggio appartenenti ad altri clan.</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
Questa rete di relazioni stabilisce per esempio se ci si può rivolgere a qualcuno chiamandolo per nome, con quali persone si può contrarre matrimonio e a chi si può chiedere di condividere il cibo o la casa. Se scoppia una rissa tra due membri di una tribú, tutti cercheranno di separarli perché li conosceranno e saranno imparentati con loro; di contro però non si avrà mai l’occasione di interagire pacificamente con persone sconosciute, perché in queste società gli unici estranei sono i membri delle tribú nemiche. Se ci si imbatte in uno sconosciuto nel bel mezzo della foresta, infatti, le uniche azioni possibili sono ucciderlo o darsi alla fuga: salutarlo e cominciare a chiacchierare del piú e del meno come siamo abituati a fare noi sarebbe una tattica suicida.</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
Circa 7500 anni fa, quando alcune società tribali si trasformarono in <em class="calibre12">chefferies</em> composte da migliaia di individui, emerse dunque un nuovo problema. Poiché le vecchie regole di comportamento tribale non bastavano piú, le nuove unità sociali in via di formazione avevano gravissimi problemi di potenziale instabilità: se due membri della stessa<em class="calibre12">chefferie</em> si fossero incontrati e, non conoscendosi, si fossero aggrediti come imposto dalle regole tribali, ne sarebbe infatti nata una contesa destinata inevitabilmente a coinvolgere i rispettivi parenti e sodali. Se poi uno dei contendenti fosse morto durante lo scontro, i suoi si sarebbero rifatti su un parente dell’assassino, innescando una spirale di vendetta inarrestabile che avrebbe portato il gruppo all’autodistruzione.</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
Questo dilemma ha un’unica soluzione, tuttora adottata dalle nostre società e documentata in tutte le <em class="calibre12">chefferies</em> e i primi stati: estendere le regole di comportamento pacifico alle relazioni fra la totalità dei membri di una società, conosciuti o sconosciuti. Il compito di farle osservare spetta poi ai dirigenti politici (capi o re) e ai loro emissari, investiti di questo potere da una nuova funzione della religione. In sostanza si presuppone che le regole di comportamento pacifico, codificate in un insieme di principî morali, siano emanate dalle divinità stesse o da agenti sovrannaturali. Il loro rispetto viene imposto sin dalla prima infanzia e la trasgressione gravemente punita, perché l’aggressione nei confronti di un’altra persona diventa a questo punto un’offesa agli dèi. Esempi perfetti in questo senso sono i dieci Comandamenti, ben noti a tutti gli ebrei e i cristiani.</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
Nelle moderne società secolarizzate le regole di comportamento pacifico hanno però ormai trasceso le proprie origini religiose: se oggi nemmeno gli atei uccidono i propri nemici è perché, come i credenti, anch’essi si riconoscono nel complesso dei valori inculcati dalla società e temono la punizione inflitta non da un dio, ma dall’inflessibile mano della legge. Ciononostante, è innegabile che dalla nascita delle prime <em class="calibre12">chefferies</em> fino alla recente affermazione degli stati secolari sia sempre stata la religione ad assumersi il compito di legittimare i codici di comportamento, permettendo agli uomini di vivere armoniosamente in società di larga scala dove gli incontri fra sconosciuti erano assai frequenti. Il suo controverso ruolo nel mantenimento dell’ordine sociale si esplica dunque attraverso due funzioni strettamente interconnesse: consentire agli estranei di vivere pacificamente fianco a fianco, e insegnare alle masse l’obbedienza ai leader politici. Come osservava cinicamente Voltaire: «Se Dio non esistesse bisognerebbe inventarlo». A seconda dei punti di vista, queste due funzioni sono giudicate positivamente (in quanto promotrici di armonia sociale) o negativamente (in quanto strumentali all’oppressione delle masse da parte delle élite).</div>
<div class="sec" id="ch97" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 0.7em; margin-left: 1.2em; margin-top: 1.7em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
<em class="calibre12">Giustificare la guerra.</em></div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
Le guerre ponevano alle <em class="calibre12">chefferies</em> e agli stati emergenti un ulteriore problema, sconosciuto alle bande e alle tribú delle epoche storiche piú lontane. Poiché i codici di condotta delle società tribali si fondavano non sulla religione ma sui legami matrimoniali o di consanguineità, l’uccisione dei membri di tribú estranee alla propria non poneva alcun dilemma morale. Ma se uno stato ricorre alla religione per favorire relazioni pacifiche tra cittadini che non intrattengono legami di sangue né di matrimonio, come convincere le persone a ignorare quegli stessi precetti in caso di conflitto? Gli stati consentono infatti, anzi, addirittura impongono ai loro cittadini, di depredare e uccidere i cittadini di altri stati contro i quali sia stata dichiarata guerra. Come può tuttavia uno stato che insegna a «non uccidere» cambiare improvvisamente idea e dichiarare che «in certe circostanze si deve uccidere», senza gettare i suoi soldati in una terribile confusione che potrebbe indurli a sopprimere le persone sbagliate (i loro stessi concittadini, per esempio)?</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
In epoche recenti cosí come nell’antichità, anche in questo caso è la religione a giungere in soccorso con la propria autorevolezza: i dieci Comandamenti valgono solo nelle relazioni fra concittadini ed entro i confini della <em class="calibre12">chefferie</em> o dello stato. Poiché la maggior parte delle religioni rivendica il monopolio della verità e sostiene che tutte le altre fedi sono in errore, convincere la popolazione (come accadeva in passato, e troppo spesso anche oggi) che derubare e uccidere i fedeli di altre religioni sia non solo lecito ma addirittura obbligatorio non è certo difficile. Ed è questo il lato oscuro di tante nobili e patriottiche invocazioni: per Dio e per la nazione, <em class="calibre12">por Dios y por España</em>, <em class="calibre12">Dio con noi</em>, <em class="calibre12">Gott mit uns</em>, e cosí via. Il fatto che siano eredi di una lunga, diffusa e ignobile tradizione non attenua minimamente le colpe dell’attuale genía di fanatici che uccide in nome della religione.</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
Il Vecchio Testamento è pieno di esortazioni a compiere crudeltà contro gli infedeli. Il<em class="calibre12">Deuteronomio</em> (20,10-18) spiega dettagliatamente in cosa consista l’obbligo al genocidio per gli israeliti: quando l’esercito assedia una città lontana, se la città accetta la pace bisogna ridurre in schiavitú tutti i suoi abitanti; se invece rifiuta di arrendersi bisogna uccidere tutti gli uomini, ridurre in schiavitú donne e bambini e rubare il bestiame e tutto ciò che si può portare via. Ma qualora la città appartenga agli ittiti, ai cananei o a uno qualsiasi degli altri abominevoli popoli che venerano i falsi dèi, allora il vero Dio ordina di non lasciare dietro di sé neppure una creatura che respiri. L’omonimo libro descrive in toni entusiastici lo zelo con cui Giosuè eseguí gli ordini divini, massacrando tutti gli abitanti di oltre quattrocento città. Nel Talmud, grande opera di esegesi biblica che esamina le potenziali ambiguità originate dalla contraddizione fra gli enunciati «non uccidere (chi crede nel tuo stesso Dio)» e «uccidi (chi crede in un altro dio)», si legge in alcuni autori che un israelita è colpevole di omicidio se uccide di proposito un altro israelita, ma innocente se la vittima non è un correligionario, ed è altrettanto innocente se uccide un israelita scagliando un sasso contro un gruppo di persone composto da nove israeliti e un infedele, perché è possibile che mirasse all’infedele.</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
A onor del vero, questo atteggiamento è tipico del Vecchio Testamento, mentre nel Nuovo Testamento i principî morali hanno fatto (almeno sul piano teorico) grandi progressi verso la definizione di un codice di comportamento <em class="calibre12">universale</em>. Tuttavia è innegabile che alcuni dei piú gravi genocidi commessi dai colonizzatori europei e cristiani a danno dei non europei abbiano trovato giustificazione morale tanto nel Nuovo quanto nel Vecchio Testamento.</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
È interessante notare che tra i popoli della Nuova Guinea la religione non viene mai chiamata in causa per giustificare lo scontro con un soggetto esterno al gruppo o la sua uccisione. Molti miei amici guineani hanno preso parte a tentativi di sterminio delle tribú confinanti, ma nei loro resoconti non ho mai udito il minimo accenno a qualsivoglia motivazione di natura religiosa o alla volontà di immolarsi per Dio o per la vera religione, né tanto meno a un ideale che giustificasse in qualche modo le loro uccisioni. Per contro, le ideologie teocratiche che hanno accompagnato la nascita degli stati vincolavano i cittadini a obbedire a un capo consacrato da Dio, a rispettare le norme morali (i dieci Comandamenti) unicamente nelle relazioni con i propri concittadini e a sacrificare la vita, se necessario, nelle guerre contro gli altri stati (ovvero gli «infedeli»). È tutto questo a rendere pericolose le società fondate sul fanatismo religioso: il sacrificio di un’esigua minoranza di membri (per esempio 19 persone, l’11 settembre 2001) consente all’intera società di eliminare un numero molto maggiore di ipotetici nemici (2996 persone, sempre l’11 settembre 2001). I codici di cattivo comportamento nei confronti degli esterni hanno raggiunto un picco negli ultimi 1500 anni, durante i quali i fanatici cristiani e musulmani si sono vicendevolmente sterminati, ridotti in schiavitú o convertiti a forza, riservando analogo trattamento anche ad altri «miscredenti». Benché l’uccisione di milioni di cittadini stranieri nelle grandi guerre del <span class="small-caps" style="font-size: 0.75em; letter-spacing: 0.05em;">XX</span>secolo sia stata in seguito giustificata con argomentazioni di natura secolare, è indubbio che ancora oggi vi siano società in cui il fanatismo religioso è decisamente in auge.</div>
<div class="sec" id="ch98" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 0.7em; margin-left: 1.2em; margin-top: 1.7em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
<em class="calibre12">Attestati di merito.</em></div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
Fra le caratteristiche delle religioni che lasciano particolarmente sconcertati i laici vi sono senz’altro il forte legame con insiemi di credenze irrazionali e sovrannaturali alle quali ciascuna fede aderisce saldamente, negando al contempo quelli delle altre fedi; la frequente spinta a mettere in atto comportamenti onerosi, non di rado autolesionistici o persino suicidi, sufficienti a disincentivare l’adesione a qualsiasi fede da parte di un laico; e l’evidente ipocrisia insita nel proclamare codici morali che si vorrebbero universali, escludendo tuttavia un vasto numero di persone dalla loro portata e caldeggiandone anzi l’uccisione. Tra le varie ipotesi formulate per spiegare questi allarmanti paradossi, due mi sembrano particolarmente utili.</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
La prima mette in luce l’esigenza di dimostrare la propria dedizione a una religione attraverso una sorta di «distintivo». I credenti vivono in stretto contatto fra loro e fanno costante affidamento sul reciproco appoggio, ma il mondo è popolato da individui (molti, o la maggioranza) che aderiscono ad altre fedi, che potrebbero essere ostili nei confronti della loro o che sono scettici nei confronti di tutte le religioni. L’incolumità, la prosperità e la vita stessa di un credente dipendono allora dalla corretta identificazione dei suoi correligionari e dalla sua abilità nel persuaderli che ci si può fidare gli uni degli altri. Come si può dunque dimostrare in modo credibile l’appartenenza a una comunità religiosa?</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
Per essere convincenti le prove devono essere anche concrete e resistere ai tentativi di contraffazione dettati da slealtà o sporadico opportunismo. È per questo che gli «attestati» di religiosità comportano sempre sacrifici gravosi: il tempo necessario a imparare e a praticare regolarmente rituali, preghiere e canti, oppure a compiere pellegrinaggi; le risorse elargite sotto forma di offerte, donazioni e sacrifici di animali; la pubblica proclamazione di credenze irrazionali e inverosimili che altri giudicheranno sciocche e ridicole; e infine l’esecuzione pubblica e l’ostentazione di mutilazioni permanenti e dolorose, come l’incisione di parti delicate del corpo, la deformazione dei genitali e l’autoamputazione di falangi delle dita. A fronte di prove tanto onerose e permanenti, la testimonianza di fede risulterà ben piú convincente di una semplice dichiarazione stile: «Fidati di me, sono dei tuoi. Come vedi, indosso il cappello giusto (ma l’ho comprato ieri per quattro soldi e magari domani lo butto via)». Per ragioni essenzialmente analoghe, gli studiosi di biologia evolutiva sostengono che anche i vessilli mostrati da certi animali (la coda del pavone, per esempio) abbiano subíto trasformazioni progressive e onerose, che li hanno perciò resi credibili. Quando un pavone maschio fa la ruota, la femmina intuisce che un esemplare in grado di sopravvivere con una coda cosí ingombrante deve necessariamente avere un patrimonio genetico migliore ed essere meglio nutrito di un altro maschio che si dà arie di superiorità ma ha una coda piú piccola.</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
Un esempio interessante di come la religione favorisca la cooperazione e l’impegno reciproco viene dalle comuni che nel corso dei secoli hanno visto la luce negli Stati Uniti. L’intera storia americana, dalle origini fino all’epoca contemporanea, è scandita da una continua sperimentazione di forme di vita comunitaria basate sulla convivenza di individui che condividono gli stessi ideali. Benché in molti casi si tratti di valori religiosi, non mancano le comuni laiche, molte delle quali sorte fra gli anni Sessanta e Settanta del Novecento. A prescindere dalle differenze, tutte le comuni subiscono pressioni di natura finanziaria, pratica, sociale e sessuale e devono combattere contro le lusinghe del mondo esterno. È naturale dunque che la stragrande maggioranza di esse finisca per disgregarsi, ora gradualmente, ora per deflagrazione improvvisa, prima della morte dei propri fondatori. Tanto per fare un esempio, ho un’amica che negli anni Sessanta ha partecipato alla fondazione di una comune in una zona molto bella, tranquilla e inaccessibile della California settentrionale. Poco alla volta gli altri membri fondatori si sono allontanati: alcuni per semplice noia, altri perché stanchi di vivere in un luogo cosí isolato o a seguito di contrasti con gli altri membri. Alla fine la mia amica è rimasta sola e oggi vive ancora laggiú, ma è tornata a essere un singolo individuo che non fa parte di nessuna comune.</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
Richard Sosis ha condotto uno studio su alcune centinaia di comunità religiose e laiche fondate negli Stati Uniti tra il <span class="small-caps" style="font-size: 0.75em; letter-spacing: 0.05em;">XIX</span> e i primi anni del <span class="small-caps" style="font-size: 0.75em; letter-spacing: 0.05em;">XX</span> secolo. Quasi tutte alla fine si erano sciolte, con la sola eccezione delle fortunatissime «colonie» del gruppo religioso degli hutteriti: le venti incluse nel campione erano ancora attive ai tempi del suo studio. Escludendo queste ultime, tuttavia, ben 199 fra quelle prese in esame risultavano già disgregate o estinte, e la loro scomparsa era stata puntualmente preceduta da una perdita di fede negli ideali del gruppo alla quale si erano talora sommati eventi di natura diversa: disastri naturali, morte di un leader carismatico o perduranti ostilità da parte di estranei. In tutti gli anni esaminati, comunque, le probabilità di dissoluzione erano state quattro volte maggiori per le comuni laiche rispetto a quelle religiose. Le ideologie religiose devono dunque essere piú abili nel persuadere gli individui a conservare un vincolo verosimilmente irragionevole, a non abbandonare il gruppo anche quando sarebbe piú logico farlo e ad affrontare le incessanti difficoltà connesse a un regime di proprietà comune e alle continue prevaricazioni da parte di membri interessati unicamente al proprio tornaconto. Anche in Israele, dove per molti decenni sono coesistiti kibbutz religiosi a fianco di un numero decisamente superiore di kibbutz secolari, i primi hanno dato prova di maggiore resistenza nonostante gli alti pedaggi imposti dalle pratiche religiose (per esempio, l’astensione da qualsiasi attività un giorno alla settimana).</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate;"><div class="sec" id="ch99" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 0.7em; margin-left: 1.2em; margin-top: 1.7em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
<em class="calibre12">Misurare il successo di una religione.</em></div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
La seconda soluzione che ho trovato utile per dipanare i paradossi della religione è quella fornita dal biologo evoluzionista David Sloan Wilson. Secondo Wilson, lo scopo della religione consiste nel definire un particolare gruppo umano in competizione con gruppi umani di religione diversa, e la misura piú immediata del relativo successo di una religione è data dal numero dei suoi aderenti. Ma se è cosí, si domanda Wilson, perché oggi nel mondo ci sono piú di un miliardo di cattolici, circa 14 milioni di israeliti e nemmeno un manicheo albigese, benché questa setta di cristiani che credevano nell’eterna lotta tra le forze del bene e del male fosse piuttosto diffusa nel Medioevo?</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
Egli prosegue poi nel ragionamento sostenendo che il numero di aderenti di una religione è determinato dal saldo tra l’insieme dei processi che tendono a incrementarne il numero e l’insieme dei processi che tendono a diminuirlo. Del primo insieme fanno parte la procreazione di figli che vengono educati alla fede e la conversione di individui che in precedenza appartenevano ad altre religioni o non erano religiosi; viceversa, tra i processi che tendono a ridurre il numero dei fedeli vi sono i decessi e le conversioni ad altre fedi. Qualcuno dirà: «Be’, è ovvio. Ma come si fa a capire perché i cattolici che credono nella resurrezione di Cristo sono piú numerosi degli israeliti che non ci credono?» La forza dell’approccio di Wilson sta proprio nel fornire un quadro entro cui è possibile misurare gli effetti delle credenze e delle pratiche religiose sui processi che ne alterano il numero degli aderenti. Alcuni risultati sono effettivamente prevedibili, altri decisamente meno scontati. In ogni caso, Wilson ci dimostra che le religioni perseguono il successo attuando strategie diversissime.</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
Consideriamo come primo esempio la setta protestante degli Shaker, che nell’Ottocento ebbe grande diffusione in America nonostante l’obbligo del celibato le impedisse di avvantaggiarsi del piú comune strumento di espansione: la procreazione. Per molti decenni il movimento Shaker crebbe esclusivamente grazie a un’intensa opera di proselitismo. Del tutto opposto è invece il caso del giudaismo, sopravvissuto per svariate migliaia di anni senza mai fare proseliti. È comprensibile che il cristianesimo e l’islam, svolgendo un’intensa opera di catechizzazione, abbiano un numero di aderenti ben maggiore, ma la sopravvivenza del giudaismo si deve ad altri fattori: tassi di natalità piuttosto elevati, tassi di mortalità contenuti (eccetto che nei periodi di persecuzione), incoraggiamento allo studio generatore di opportunità economiche, forte aiuto reciproco, rari episodi di conversione ad altre fedi. Quanto ai manichei albigesi, la causa diretta della loro scomparsa non fu il dogma in sé dell’eterna lotta tra le forze del bene e del male, che difficilmente poteva incidere in modo negativo sui tassi di natalità o risultare tanto inverosimile da impedire ogni proselitismo. Semmai, il dogma manicheo fu messo al bando dal cattolicesimo tradizionale, che dopo aver dichiarato guerra santa contro gli albigesi ne assediò ed espugnò la roccaforte, condannando al rogo tutti i superstiti.</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
Il ragionamento di Wilson si fa piú sottile quando tenta di dare risposta a uno dei maggiori interrogativi della storia religiosa d’Occidente: per quale motivo, tra le innumerevoli e minuscole sette giudaiche in lotta fra loro e con altri gruppi religiosi nell’Impero romano del i secolo d.C., a prevalere fu quella che trecento anni piú tardi, divenuta cristianesimo, avrebbe assunto il ruolo di religione dominante? Tra i fattori che contribuirono di piú all’affermazione del cristianesimo in tarda epoca romana possiamo elencare l’intensa opera di proselitismo (che lo differenziava dal giudaismo ortodosso), l’adozione di pratiche che favorivano la natalità e la sopravvivenza dei neonati (diversamente da quanto avveniva nella società romana dell’epoca), l’apertura all’impegno religioso delle donne (tratto sconosciuto sia al giudaismo e al paganesimo d’epoca romana, sia alle fasi successive dello stesso cristianesimo), la diffusione di istituzioni sociali piú efficaci nel proteggere dalle epidemie, e infine la dottrina del perdono. Spesso intesa come una semplicistica esortazione a porgere l’altra guancia, quest’ultima andrebbe in realtà inserita nel contesto di un complesso sistema di risposte che potevano andare dal perdono alla vendetta. Alcuni test sperimentali condotti mediante giochi di ruolo hanno dimostrato che, in certe circostanze, perdonare chi ci ha fatto un torto offre notevoli vantaggi a lungo termine.</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
Un altro esempio di applicazione dello schema di Wilson riguarda il successo del mormonismo, la cui diffusione negli ultimi due secoli è rapidamente aumentata. Chi non professa questa religione tende a giudicare con un certo sospetto il già citato dogma (tab. 6) dell’apparizione dell’angelo Moroni, che il 21 settembre 1823 avrebbe rivelato a Joseph Smith l’ubicazione di alcune tavole dorate sepolte in cima a una collina nello stato di New York e in attesa di essere tradotte. Nonostante le dichiarazioni giurate degli undici testimoni (Oliver Cowdery, Christian Whitmer, Hiram Page e altri otto) che asseriscono di aver visto e toccato le tavole, ai non mormoni viene spontaneo domandarsi a che cosa si debba la crescita esplosiva di una fede basata su principî tanto inverosimili.</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
In base all’approccio di Wilson, il successo delle azioni di proselitismo effettuate da una religione non dipende dalla verosimiglianza dei suoi principî ma dalla forza con cui quei principî e le pratiche a essi associate motivano gli adepti a fare una o piú delle seguenti cose: concepire e allevare figli, fare proseliti, costituire una società ben organizzata. Per dirla con le sue parole: «Anche le credenze palesemente improbabili possono rivelarsi adattative, nella misura in cui stimolano comportamenti adattativi nel mondo reale [...] Non sempre la conoscenza della realtà fattuale è sufficiente a indurre un comportamento adattativo: in certi casi un sistema di credenze simboliche che si allontani da essa si rivela addirittura piú efficace».</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
Tornando al mormonismo, non c’è dubbio che i dogmi e le pratiche di questa religione siano stati quanto mai efficaci nel promuovere la crescita numerica dei fedeli, giacché, com’è noto, i mormoni tendono a essere alquanto prolifici. In una collettività fortemente solidale e interdipendente come la loro, inoltre, la vita sociale è piena e soddisfacente e non mancano gli incentivi al lavoro. Grande importanza viene poi attribuita all’opera di proselitismo: i giovani mormoni dedicano fino a due anni della loro vita alla ricerca di nuovi fedeli in patria o all’estero. I membri della comunità versano infine alla chiesa una decima annuale pari al 10 per cento dei loro guadagni, la quale va ad aggiungersi alle normali tasse federali, statali e locali. Poiché l’impegno in termini di tempo e risorse è certamente notevole, chi aderisce o si converte al mormonismo non può che prendere molto sul serio la propria fede. Quanto alla supposta inverosimiglianza delle dichiarazioni di Joseph Smith e dei suoi undici testimoni circa le verità divine contenute nelle tavole dorate, qual è in fin dei conti la differenza tra questi assunti e i resoconti biblici delle rivelazioni divine a Gesú e a Mosè, se si eccettua la disparità temporale e lo scetticismo derivante dall’essere stati educati a una religione diversa?</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
Ma che cosa ci dice Wilson a proposito della fondamentale ipocrisia di molte religioni, che proclamano principî morali nobilissimi e poi esortano a uccidere i fedeli di altre religioni? Ci dice che il successo di una religione (la sua «idoneità», per usare il linguaggio della biologia evolutiva) è un concetto relativo, definibile solo paragonandolo a quello di altre religioni. E, che ci piaccia o no, è possibile che una religione consolidi il proprio «successo» (misurato in base al numero di adepti) uccidendo o convertendo a forza i seguaci di altre fedi, come già accaduto in passato. «Quando affronto l’argomento della religione, – osserva Wilson, – i miei interlocutori finiscono spesso per elencarmi una litania di misfatti perpetrati in nome di Dio, ma nella maggior parte dei casi si tratta di orrori commessi da gruppi religiosi a danno di altri gruppi. Come posso, di fronte a simili prove, sostenere che la religione è “adattativa”? In realtà è tutt’altro che difficile: basta intendere l’idoneità in termini relativi. È importante sottolineare che si può spiegare un comportamento in termini evoluzionistici senza darne una giustificazione morale».</div>
<div class="sec" id="ch100" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 0.7em; margin-left: 1.2em; margin-top: 1.7em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;">
<em class="calibre12">Come cambiano le funzioni della religione.</em></div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
E cosí finalmente torniamo alla domanda iniziale sulle funzioni e la definizione di religione. Ora è chiaro perché spiegare che cosa sia è tanto difficile: perché, esattamente come gli organi elettrici dei pesci, nel corso dell’evoluzione la religione ha assunto funzioni diverse. Anzi, in confronto ai pesci ha fatto anche di piú: se gli organi produttori di elettricità hanno sviluppato sei diverse funzioni, nel corso della storia umana la religione ne ha sviluppate sette (<a class="calibre16" href="https://www.blogger.com/Text/part0016.html#f2" id="ff2" style="color: #bd2716; text-decoration: none;">fig. 2</a>). Di queste, quattro risultavano del tutto assenti nell’una o nell’altra fase storica, e cinque erano ancora presenti, benché in declino, in una fase diversa. Le due funzioni all’apice intorno al 50000 a.C., quando comparvero i primi esseri umani dotati di intelligenza e voglia di conoscere, sono andate declinando nel corso dei millenni: l’una (interpretazioni sovrannaturali della realtà) piuttosto rapidamente, l’altra (creazione di rituali in grado di ridurre l’ansia causata da pericoli incontrollabili) con una certa gradualità. Delle cinque restanti funzioni, quattro erano del tutto assenti intorno al 50000 a.C., e una era debole; tre di esse hanno raggiunto il culmine con la comparsa delle <em class="calibre12">chefferies</em> e dei primi stati, e due all’epoca degli stati tardorinascimentali; da allora, tutte e cinque hanno piú o meno perso importanza.</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
<br /></div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
<br /></div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
<br /></div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
<span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-collapse: separate;"></span></div>
<div class="indent" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-top: 1em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-indent: 1.2em;">
Questo continuo alternarsi tra funzioni fa sí che definire la religione sia piú difficile che definire gli organi elettrici, perché questi hanno in comune almeno una proprietà, ovvero la capacità di generare campi elettrici rilevabili nell’ambiente circostante, mentre non vi è una sola caratteristica che sia comune a tutte le religioni. A rischio di produrre nient’altro che l’ennesimo tentativo da aggiungere a quelli già elencati nella <a class="calibre16" href="https://www.blogger.com/Text/part0016.html#tt5" style="color: #bd2716; text-decoration: none;">tabella 5</a>, vorrei ora proporre la mia definizione di religione come «insieme di tratti distintivi di un gruppo sociale umano rispetto ad altri gruppi che non condividono quegli stessi tratti in forma identica. Fra i tratti condivisi vi è sempre almeno una delle seguenti prerogative, talora presenti contemporaneamente: interpretazione sovrannaturale della realtà, utilizzo di rituali per arginare l’ansia causata da pericoli incontrollabili, opera di conforto dinanzi alle sofferenze della vita e alla prospettiva della morte. A parte quelle primitive, le religioni sono state cooptate al fine di promuovere la standardizzazione organizzativa, l’obbedienza politica, la tolleranza verso i correligionari stranieri e la giustificazione delle guerre contro i seguaci di altri religioni». Come vedete, almeno sul piano dell’astrusità la mia definizione ha poco da invidiare ad alcune di quelle presentate nella tabella 5; ciononostante, mi pare corrispondere alla realtà.</div>
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-indent: 1.2em;">
E del futuro della religione, che dire? Credo dipenda in gran parte dalla forma che assumerà il mondo nei prossimi trent’anni. Se si assisterà a un miglioramento degli standard di vita in tutto il pianeta, le funzioni della religione che nella <a class="calibre16" href="https://www.blogger.com/Text/part0016.html#f2" style="color: #bd2716; text-decoration: none;">figura 2</a>corrispondono ai punti 1 e 4-7 continueranno a decrescere, mentre le funzioni 2 e 3 avranno maggiori probabilità di sopravvivenza. In particolare, è ipotizzabile che in futuro si ricorra alla religione soprattutto per dare un senso alla vita e alla morte, intese come fenomeni individuali che da una prospettiva scientifica potrebbero sembrare privi di significato, e anche se, a fronte delle risposte illusorie della religione, la scienza arrivasse un giorno a fornire risposte veritiere, probabilmente molti continueranno a non gradirle. Se invece gran parte della popolazione mondiale dovesse continuare a vivere in povertà o se (peggio ancora) un eventuale arretramento dell’economia e degli standard di vita si accompagnasse a una pace piú precaria, tutte le funzioni della religione, compresa l’interpretazione sovrannaturale del mondo, potrebbero tornare in auge. Comunque vadano le cose, sarà la <span style="text-indent: 1.2em;">generazione dei nostri figli a farne esperienza diretta.</span></div>
</span><br />
<div class="calibre13" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; text-indent: 1.2em;">
<br /></div>
</div>
</span></div>
<div>
<br /></div>
</span></div>
<div>
<br /></div>
<div>
<br /></div>
</span></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6261258921963124217.post-28190222472917034342016-10-13T05:51:00.002-07:002016-10-13T05:51:48.376-07:00gruppo_sociale_femminileDa 'il mondo fino a ieri' di jared diamond ((-: <br />
<br />
L’alta frequenza dell’allattamento presso i gruppi di cacciatori-raccoglitori ha a sua volta conseguenze sul piano fisiologico. Come già accennato, di regola dopo ogni parto le madri non tornano a concepire per diversi anni, anche laddove abbiano rapporti sessuali: evidentemente in questo tipo di allattamento qualcosa funziona da contraccettivo naturale. Un’ipotesi è quella che viene definita «amenorrea lattazionale»: la suzione provoca nella madre il rilascio di ormoni che non solo stimolano la secrezione del latte, ma che possono anche inibire l’ovulazione. Questa inibizione dell’ovulazione richiede però un costante regime di allattamento frequente, che poche poppate quotidiane non sono in grado di garantire.<br />
<br />
L’altra ipotesi è quella della massa grassa critica: per avvenire, l’ovulazione richiede infatti che il livello del grasso corporeo superi una certa soglia critica, e in una società tradizionale dove il cibo non abbonda gli alti costi energetici legati alla produzione del latte fanno sí che la massa grassa della donna in allattamento rimanga sotto quella soglia. Le madri occidentali che allattano e hanno rapporti sessuali possono dunque, diversamente dalle loro omologhe tradizionali, continuare a concepire (sebbene con loro stessa sorpresa) per due ragioni, congiunte o separate: la frequenza delle poppate è assolutamente troppo bassa perché si instauri l’amenorrea lattazionale, e si tratta di soggetti sufficientemente nutriti da restare, nonostante il dispendio calorico dovuto all’allattamento stesso, al di sopra della soglia critica di massa grassa necessaria per l’ovulazione. Se molte donne occidentali istruite hanno infatti sentito parlare dell’amenorrea lattazionale, non tutte sanno che interviene solo con poppate molto frequenti. Poco tempo fa anche una mia amica, che con sua enorme sorpresa ha concepito di nuovo a distanza di pochi mesi dall’ultimo parto, è finita a ingrossare le file delle donne che ancora si ritrovano a esclamare: «Ma io pensavo di non poter restare incinta finché allattavo!»<br />
<br />La frequenza dell’allattamento varia a seconda delle specie. Alcuni mammiferi, tra i quali gli scimpanzé e la maggior parte dei primati, i pipistrelli e i canguri, allattano continuamente. Altri, e tra loro conigli e antilopi in primis, allattano invece in maniera discontinua: mentre va in cerca di foraggio, una mamma coniglio o antilope nasconde il suo piccolo in una tana o in mezzo all’erba, ritorna da lui dopo un lungo intervallo e lo allatta solo poche volte al giorno. In quanto allattatrici continue, le donne dei cacciatori-raccoglitori umani assomigliano alle femmine di scimpanzé e alle scimmie del Vecchio Mondo. Tuttavia questa modalità, ereditata dai nostri progenitori primati e, presumibilmente, rimasta separata da quella degli scimpanzé per tutti i milioni di anni dell’evoluzione umana, si è modificata solo nei millenni trascorsi dalle origini dell’agricoltura, quando l’uomo sviluppò stili di vita che comportavano periodi di separazione forzata tra madri e neonati. Le moderne madri umane hanno dunque acquisito le abitudini di allattamento dei conigli, conservando al contempo la fisiologia lattazionale di scimpanzé e scimmie.<br />Unknownnoreply@blogger.comMilan, Italy45.4654219 9.1859243000000145.2872319 8.86320080000001 45.6436119 9.508647800000011tag:blogger.com,1999:blog-6261258921963124217.post-6788652668080343932016-05-17T06:16:00.002-07:002016-05-17T07:00:50.624-07:00vignette<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYrn4V38JV_yPeokKxQpljfo_HN13VdvC65WWchMXS9JQtUFxZ6ocJYXXV5-gWdjhBcKoEahk6sOFhFEvF-icaGbXVAVmu2a7BlU0cvjfhQaRvGGgvu6Xj1F_0esP7X140ZstqlIbE4w/s1600/cavallo-02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYrn4V38JV_yPeokKxQpljfo_HN13VdvC65WWchMXS9JQtUFxZ6ocJYXXV5-gWdjhBcKoEahk6sOFhFEvF-icaGbXVAVmu2a7BlU0cvjfhQaRvGGgvu6Xj1F_0esP7X140ZstqlIbE4w/s320/cavallo-02.jpg" width="320" /></a></div>
<br />
<br />
<br />
<br />
<br />
<br />Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6261258921963124217.post-81848414212227557152016-04-26T06:45:00.000-07:002016-04-26T06:45:46.696-07:00L'affare della povertàda Galimberti Umberto - I miti del nostro tempo<b> </b><br />
<br />
<b>5. Ai margini del mercato: la povertà </b><br /><br />Il mercato si regge sull'intreccio fra produzione e consumo, due aspetti di un medesimo processo, dove decisivo è il carattere circolare del processo, nel senso che non solo si producono merci per soddisfare bisogni, ma si producono anche bisogni per garantire la continuità della produzione delle merci.<br /><br />All'inizio e alla fine di queste catene di produzione (di merci e di bisogni) si trovano gli esseri umani, instaurati come produttori e come consumatori, con l'avvertenza che il consumo non deve essere più considerato, come avveniva per le generazioni precedenti, esclusivamente come soddisfazione di un bisogno, ma anche, e oggi soprattutto, come mezzo di produzione. Come ci ricorda Günther Anders,12-16 là dove la produzione non tollera interruzioni, le merci "hanno bisogno" di essere consumate, e se <b>il bisogno non è spontaneo,</b> se di queste merci non si sente il bisogno, <b>occorrerà che questo bisogno sia "prodotto"</b>. <br /><br />A ciò provvede <b>la pubblicità</b>, che ha il compito di pareggiare il nostro bisogno di merci con il bisogno delle merci di essere consumate. <b><span style="color: red;">I suoi inviti sono esplicite richieste a rinunciare agli oggetti che già possediamo, e che magari ancora svolgono un buon servizio, perché altri nel frattempo ne sono sopraggiunti, altri che "non si può non avere"</span></b>. In una società consumista come quella che impone il mercato, dove l'identità di ciascuno è sempre più consegnata agli oggetti che possiede, i quali non solo sono sostituibili, ma "devono" essere sostituiti, non si può dar torto ad Anders là dove scrive: "Ogni pubblicità è un appello alla distruzione".12-17<br /><br />Si tratta di una distruzione che, ci ricorda sempre Anders, <b>"non è la fine naturale di ogni prodotto, ma il suo fine</b>".12-18 E questo non solo perché altrimenti si interromperebbe la catena produttiva, ma perché il progresso tecnico, sopravanzando le sue produzioni, rende obsoleti i prodotti, la cui fine non segna la conclusione di un'esistenza, ma fin dall'inizio ne costituisce lo scopo. In questo processo, il mercato usa i consumatori come suoi alleati "per garantire la mortalità dei suoi prodotti, che è poi la garanzia della sua immortalità".12-19<br /><br /><b>Si conferma così il tratto nichilista della nostra cultura economica dove il consumo, costretto a diventare "consumo forzato", eleva il non-essere di tutte le cose a condizione della sua esistenza,</b> il loro non permanere a condizione del suo avanzare e progredire. Ma una società che si rivolge ai suoi membri solo in quanto consumatori, capaci di rispondere positivamente alle tentazioni del mercato per mantenerlo attivo e scongiurare la minaccia della recessione, <b>crea, secondo Zygmunt Bauman, una nuova classe di poveri che – a differenza di quelli di un tempo, che tali erano perché non riuscivano a inserirsi nei processi di produzione – sono colpevoli di non contribuire al consumo e, "in quanto non consumatori o consumatori inadeguati e difettosi, sono un peso morto, una presenza totalmente improduttiva"</b>.12-20<br /><br />Configurandosi come una pura perdita, un buco nero che inghiotte servizi senza nulla restituire, con i poveri, per la loro inutilità e perché nessuno ha bisogno di loro, si può praticare la "tolleranza zero". Si può bruciar loro le tende se vivono accampati, come spesso ci riferiscono le cronache, non per ragioni razziali come è facile credere e propagandare, ma perché, ci ricorda Bauman:<br /><br />Nella società dei consumi, la povertà è inutile e indesiderabile. L'unica via attraverso la quale i poveri potrebbero riscattarsi è quella che conduce al centro commerciale, [...] dove potrebbero ottenere, se non la riabilitazione, almeno quella "libertà condizionata" dal loro accettabile consumo.12-21<br /><br />Se poi passiamo dalla povertà di casa nostra all'immensa povertà del resto del mondo<span style="background-color: yellow;"><span style="background-color: white;">,</span><b><span style="background-color: white;"> </span>che sussulto provoca questo spettacolo al nostro senso morale? Nessuno.</b></span> Anche se sappiamo che la povertà non è solo mancanza di cibo, non è solo un incontro quotidiano con la malattia e con la morte. L'estrema povertà è la fuoriuscita dalla condizione umana e insieme la sua riapparizione come "incidente della storia", che fa la sua comparsa televisiva quando i conduttori della storia passano da quelle lande disperate che un giorno chiamavamo "Terzo mondo" e che ora, visti i tenori di vita raggiunti dal Primo mondo, potremmo chiamare "non-mondo", puro incidente antropologico, non dissimile da quegli incidenti geologici o atmosferici che, sotto il nome di terremoto o alluvione, chiedono soccorso.<br /><br />Ma cos'è un "soccorso umanitario" se non la latitanza del nostro sentimento morale che si accontenta di un gesto di carità, senza avere la forza di sollecitare la politica? E qui non penso alla politica che fa gli affari con la fame nel mondo, penso alla politica come al non-luogo della decisione, perché la decisione avviene altrove, in quell'altro teatro, il mercato, che ha ridotto la politica a un siparietto di quinta, dove ha luogo la rappresentazione democratica di interessi che operano dietro la scena e lontano dagli schermi.<br /><br />E allora che cosa resta dell'immensa e sconfinata povertà del mondo? Null'altro che la singola e isolata testimonianza che, gettando per un giorno un fascio di luce sul continente buio della miseria, vorrebbe sollecitare la coscienza e la sensibilità di quanti non hanno come problema quotidiano quello di non morire di fame.<br /><br />Quando, senza scomporci, veniamo a sapere dalla stampa e dalla televisione che nella regione dei Grandi Laghi africani, nel Sudan e nel Darfur, due milioni di uomini, donne e bambini sono stati ammazzati a colpi di machete e un altro milione manca all'appello, che non si fa a nominativo, ma per cifre che oscillano, a seconda dei diversi calcoli delle organizzazioni locali e internazionali, nell'ordine di decine di migliaia, davvero consideriamo questi esseri umani nostri "simili", simili a noi europei o americani, o non piuttosto simili a un gregge di cui non ci interessa la sorte?<br /><br />E perché non ci interessa? Perché non muove il nostro sentimento morale? <b>Perché forse sappiamo, anche se poi rimuoviamo il pensiero, che il nostro benessere dipende dalla loro disperazione? <span style="background-color: yellow;">E allora nessun sussulto morale</span></b><span style="background-color: yellow;">.</span> Anzi, prendere in considerazione e fermare la nostra attenzione su questi eventi oggi sembra non sia neppure politicamente corretto, in nome del "sano realismo" a cui si ispira la politica. Sano realismo che, tradotto, significa lasciare libero gioco alla "volontà di potenza", deprecabile quando Nietzsche la indicava come anima della storia incondizionatamente accettata quando passa sotto il nome di "Realpolitik".<br /><br />Del resto la povertà non attrae. È il rimosso di tutti. Nessuno la va a cercare. La carità che si fa con una mano è raramente accompagnata da uno sguardo capace di incontrare lo sguardo di un miserabile, perché la sua vista inquieta. Per giunta è la stessa povertà che tende a nascondersi, per vergogna, per pudore. Tentativi non necessari, tanto nessuno la vede, e meno ancora la guarda. <span style="background-color: yellow;">Fondamentalmente nessuno se ne occupa. Al massimo qualche gesto senza neppure guardare in faccia il destinatario. A volte persino una catena di gesti che però non entrano in contatto con la povertà, ma solo con l'organizzazione deputata a soccorrerla. Così la povertà non si vede, se non in qualche flash televisivo tra una forchettata e l'altra.</span><br /><br />Ciò che non si vede non esiste, o esiste come sentito dire, come statistica, dove i numeri hanno il solo compito di cancellare i volti di quei poveri a cui la miseria ha già tolto se non il pane, come accade nel resto del mondo, certo quasi tutte le possibilità che il vivere in Occidente concede ai suoi abitanti.<br /><br /><b>Nascosta allo spettacolo quotidiano, espulsa dal linguaggio, la povertà sembra vivere solo nel gesto distratto di una mano che allunga qualcosa che non cambia di un grammo la nostra esistenza. E così, non toccata, anche la nostra esistenza si rende immune alla presenza anche massiccia della povertà. Una povertà silenziosa, densa come la nebbia che in modo impercettibile ci tocca da ogni parte e che può passare inosservata solo a colpi di rimozione percettiva, visiva, linguistica.</b><br /><br />Ma il rimosso ritorna. E non ritorna come senso di colpa, da cui è facile lavarsi con un gesto di carità. Ritorna come atrofizzazione della nostra esistenza che, per non percepire, non vedere, non sentire quel che inevitabilmente la tocca, deve procedere a tali colpi di amputazione in ordine alla sua percezione del mondo da diventare alla fine una povera esistenza. E qui la povertà materiale di coloro che, invisibili, si muovono nei bassifondi delle condizioni impossibili d'esistenza compie la sua vendetta mutilando la sensibilità della nostra esistenza, per consentirle di non percepire che il nostro stato di benessere dipende direttamente dallo stato di povertà del mondo.<br /><br />Attraversati da questa sensazione, conscia o inconscia che sia, resistiamo a entrare in contatto non solo con la povertà del mondo, ma anche con la sua percezione, e perciò siamo costretti a raccontarci un mondo diverso da quello che è, e a prender dimora in uno spazio di falsificazione, dove <b>la nostra esistenza, per non vedere, è costretta a mutilare la sua sensibilità</b> e a divenire apatica a se stessa e povera di auto percezione.<br /><br /><span style="background-color: yellow;"><b>Per questo non sappiamo più chi siamo, perché la rimozione che abbiamo fatto delle condizioni di povertà del mondo è stata possibile solo con l'amputazione della sensibilità e della percezione della nostra esistenza</b></span>. E allora, se i poveri non hanno pane, noi, che per non vederli abbiamo mutilato le nostre facoltà percettive, finiamo con il non disporre più neppure di noi. La condizione umana infatti è comune. E il privilegio di chi vuol difendersi non solo dalla povertà, ma anche dalla sua percezione, è l'inganno di un giorno.<br /><br />Ciò non significa che l'Occidente è insensibile e cinico. La sua colpa non consiste tanto nella sua accresciuta insensibilità e indifferenza per le sorti del mondo (questa casomai è la conseguenza, non la causa), <b>quanto nell'aver consentito che la povertà del mondo divenisse "smisurata", perché, come ci ricorda Günther Anders: "<span style="background-color: yellow;">Di fronte allo smisurato, la nostra sensibilità si inceppa.</span> Il 'troppo grande' ci lascia indifferenti",12-22 non freddi, perché la freddezza sarebbe già un sentimento</b>.<br /><br />E quando ci dicono che nel mondo ogni otto secondi muore di fame un bambino, <b>il nostro sentimento si trova di fronte non a una tragedia, ma a una statistica,</b> e piomba in una sorta di analfabetismo emotivo. Questo analfabetismo, divenuto ormai nostra cultura, è peggiore di tutte le peggiori cose che accadono nel "non-mondo", perché, scrive sempre Anders: "È ciò che rende possibile l'eterna ripetizione di queste terribili cose, il loro accrescersi e il loro divenire inevitabili, perché il nostro meccanismo di reazione si arresta quando il fenomeno supera una certa grandezza".12-23<br /><br />E siccome un bambino che muore di fame ogni otto secondi è già oltre questa grandezza, per effetto di questa che Anders chiama "la regola infernale",12-24 ogni sorta di catastrofe ha via libera, non solo in quel "non-mondo" un tempo chiamato "Terzo mondo", ma anche da noi. E già se ne vedono le tracce. Eppure, anche in questo caso possiamo sempre chiudere gli occhi e mettere a tacere quel che resta del nostro asfittico sentimento morale.<br /><br />Man mano che la legge del mercato rende sempre più profonda la divisione tra i ricchi sempre più ricchi e poveri sempre più esclusi dal banchetto del consumismo, <b>assistiamo a una progressiva limitazione della nostra sicurezza e della nostra libertà per effetto della "degradazione" del povero,</b> che ha come inevitabile conseguenza la sua "medicalizzazione" quando non la sua "criminalizzazione", come avveniva nel secolo xix, prima dell'avvento dello "stato sociale".<br /><br /><b>Tagliare le spese per lo stato sociale significa infatti aumentare quelle per la polizia</b>, per le prigioni, per i servizi di sicurezza, per le guardie armate, per i sistemi di allarme, e ridefinire la povertà come problema medico-legale o come problema di ordine pubblico. A ciò si deve aggiungere che chi è escluso o si trova sulla soglia dell'esclusione viene sospinto a forza e saldamente rinchiuso all'interno di muri invisibili, ma del tutto tangibili, che dominano i territori dell'emarginazione, aumentando considerevolmente la sensazione dell'insicurezza e dell'incertezza.<br /><br />Se restringere la libertà degli esclusi non aggiunge nulla alla libertà di chi è libero, la strada dei tagli allo stato sociale può condurre ovunque tranne che a una società di individui liberi, perché, stravolgendo l'equilibrio tra i due versanti della libertà, fa sì che in qualche luogo, in qualche strada, in qualche rione, in qualche città, in qualche ora del giorno e soprattutto della notte, <b>il piacere della libertà si dissolve nella paura e nell'angoscia. Una conferma tangibile che la libertà di chi è libero richiede, per il suo esercizio, la libertà di tutti.</b><br /><br />Se appena ci emancipiamo dalla concezione rozza della libertà, non possiamo non renderci conto che la libertà è possibile solo nel contesto di una significativa relazione sociale, perché, se cresce a dismisura il numero dei senza dimora disagiati, anche le dimore dei più agiati non sono più tanto sicure. Se ne deduce che la libertà individuale – che oggi appare come il valore supremo e il metro in base al quale ogni virtù e ogni vizio della società intera vanno valutati – non si raggiunge con gli sforzi individuali, ma solo creando le condizioni che estendono tali possibilità a tutti.<br /><br />Un compito, questo, che non è possibile perseguire individualmente, magari con la beneficenza organizzata o la carità all'angolo della strada, ma unendo le energie di tutti in quell'impresa comune che si chiama solidarietà, la sola che può garantire non solo i diritti di libertà, ma soprattutto la perpetuazione delle condizioni per l'esercizio di questi diritti.<br /><br /><b>La società dell'incertezza,</b> che a parere di Zygmunt Bauman12-25 abbiamo preferito alla società protetta perché sembra più idonea a garantire i diritti di libertà e quindi di felicità, è in grado di produrre da sé deregulation e privatizzazione sulla spinta esercitata dal mercato globale, ma <b>non è in grado di generare da sola, cioè senza intervento politico, la solidarietà</b> che, come abbiamo visto, è condizione essenziale per l'esercizio della libertà. E qui Bauman cita Albert Camus là dove scrive: "C'è la bellezza e ci sono gli oppressi.<br /><br />Per quanto difficile possa essere, io vorrei essere fedele a entrambi".12-26 Non leggiamo questa espressione come un pio desiderio, o un bisogno del cuore<b>. La "fedeltà selettiva" alla sola bellezza, alla sola libertà, alla sola felicità individuale, <span style="background-color: white;"><span style="color: red;">per il nesso strutturale che lega la fruizione di questi valori alla solidarietà</span></span>, da sola non è in grado neppure di difendere ciò che vorrebbe garantire</b>.<span style="background-color: white;"><span></span></span><br />
<br />
<br />
12-16G. Anders, Die Antiquiertheit des Menschen, Band II: Über die Zerstörung des Lebens im Zeitalter der dritten<br />12-17Ivi, p. 34.<br />12-18Ivi, p. 32.<br />12-19Ibidem.<br />12-20Z. Bauman, Homo consumens (2006); tr. it. Homo consumens. Lo sciame inquieto dei consumatori e la miseria<br />12-21Ibidem.<br />12-22G. Anders, Wir Eichmannsöhne (1964); tr. it. Noi figli di Eichmann, Giuntina, Firenze 1995, pp. 33-34.<br />12-23Ibidem.<br />12-24Ibidem.<br />12-25Z. Bauman, La società dell'incertezza (raccolta di brevi saggi composti tra il 1995 e il 1997), il Mulino,<br />12-26Ivi, p. 24. La citazione di A. Camus, si trova in Retour à Tipasa del 1953.<br />12-27R. Madera, L'animale visionario. Elogio del radicalismo, il Saggiatore, Milano 1999.Unknownnoreply@blogger.comtag:blogger.com,1999:blog-6261258921963124217.post-11447306170434387832015-10-27T06:29:00.001-07:002015-10-27T06:56:40.311-07:00CACCA==M5S<span style="font-size: x-large;">algoritmo M5S </span><br />
<br />
<span style="font-size: x-large;">if (CACCA=="M5S"); then</span><br />
<br />
<span style="font-size: x-large;">{ print (</span><span style="font-size: x-large;"><span style="font-size: x-large;">"CACCA</span></span><span style="font-size: x-large;"><span style="font-size: x-large;"><span style="font-size: x-large;"><span style="font-size: x-large;"><span style="font-size: x-large;"><span style="font-size: x-large;"><span style="font-size: x-large;"><span style="font-size: x-large;">=</span></span></span></span>M5S</span></span>"</span>);} </span><br />
<br />
<span style="font-size: x-large;">else if </span><span style="font-size: x-large;">(</span><span style="font-size: x-large;"><span style="font-size: x-large;">M5S=="CACCA"</span>); then</span><br />
<br />
<span style="font-size: x-large;">{ </span><span style="font-size: x-large;">print ("</span><span style="font-size: x-large;"><span style="font-size: x-large;">M5S</span></span><span style="font-size: x-large;"><span style="font-size: x-large;"><span style="font-size: x-large;"><span style="font-size: x-large;">=</span></span>CACCA</span>");} </span><br />
<br />
<span style="font-size: x-large;">was,is,shall be </span><br />
<br />
<br />
<br />
<br />
####<br />
<br />
chiunque abbia voglia può citare l'opera di Piero Manzoni merda d'artista e inviare un campione delle proprie feci a<br />
'<span class="st">Via G. Morone 6 - 20121 <i>Milano</i>.</span>' o a 'Aldo prof Giannuli v. Livorno, 1 Milano'<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjsv5Uxm5Q15wZ5bkiw3ECdmcUySKGRClY_HCjPkqrhd5jTAWJ8v-GyrVfd3ljFS14h92OhHMbK3CHp8VJB0qec0W8iBiu7shvgjT4bGuyS3Mm_zHIJq8iuH0HWhLuUhhhOTSojeYRAA/s1600/MerdaDartista.jpeg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjsv5Uxm5Q15wZ5bkiw3ECdmcUySKGRClY_HCjPkqrhd5jTAWJ8v-GyrVfd3ljFS14h92OhHMbK3CHp8VJB0qec0W8iBiu7shvgjT4bGuyS3Mm_zHIJq8iuH0HWhLuUhhhOTSojeYRAA/s1600/MerdaDartista.jpeg" /></a></div>
<br />
oppure inviare una email<br />
<br />
con subject merda d'artista<br />
<br />
e allegata la foto a fianco<br />
<br />
<br />
<a href="mailto:aldo.giannuli@unimi.it" title="aldo.giannuli@unimi.it">aldo.giannuli@unimi.it</a><br />
<br />
<br />
https://www.casaleggio.it/contattaci/ <br />
Unknownnoreply@blogger.comMilan, Italy45.4654219 9.1859243000000145.2872319 8.86320080000001 45.6436119 9.508647800000011tag:blogger.com,1999:blog-6261258921963124217.post-32912330399241987422014-10-31T01:59:00.001-07:002014-10-31T02:28:55.452-07:00tabaré mayoria<br /><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKcHw18C_b1ReHnuTySs8WA5rajtP2EDGQPVNIrd2ycCumlpTn3Yp9CU4JIAHypkrhftIvLAVDwPCCr2n9g3o4L3PSKiXl7mOhuMXTc8p8XsSIJtskZds_tlwa4ah0UiXwyke_lKq1nw/s1600/tabare-3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKcHw18C_b1ReHnuTySs8WA5rajtP2EDGQPVNIrd2ycCumlpTn3Yp9CU4JIAHypkrhftIvLAVDwPCCr2n9g3o4L3PSKiXl7mOhuMXTc8p8XsSIJtskZds_tlwa4ah0UiXwyke_lKq1nw/s1600/tabare-3.jpg" /></a></div>
<br />Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6261258921963124217.post-18169812288247633052014-10-30T04:58:00.002-07:002014-10-30T04:58:33.983-07:00ASIMOV-"la prima legge della genialità" Contattato dal Mit, nel 1959 il re della fantascienza scrisse questo testo inedito Illustrava gli ingredienti della creatività: audacia, confronto, follia e relax<br />Isaac Asimov: vi spiego la prima legge della genialità<br />ISAAC ASIMOV<br />IN CHE modo una persona arriva ad avere un’idea nuova? Si può presumere che il processo di creatività, qualunque cosa sia, sia essenzialmente lo stesso in tutte le sue diramazioni e varietà, e quindi che l’evoluzione di una nuova forma d’arte, di un nuovo congegno, di un nuovo principio scientifico, comporti sempre degli elementi comuni. La cosa che ci interessa maggiormente è la “creazione” di un nuovo principio scientifico o di una nuova applicazione di un vecchio principio scientifico, ma possiamo parlare in generale.<br />Un metodo per indagare il problema è quello di prendere in considerazione le grandi idee del passato e capire in che modo sono state generate. Si pensi per esempio alla teoria dell’evoluzione attraverso la selezione naturale, creata da Charles Darwin e Alfred Wallace. Ci sono molte cose in comune, in questo caso. Tutti e due avevano viaggiato in posti lontani, tutti e due avevano osservato strane specie di piante e animali e il modo in cui variavano da un posto all’altro. Tutti e due erano smaniosi di trovare una spiegazione per questo fatto, e tutti due ci riuscirono solo dopo aver letto il Saggio sulla popolazione di Malthus. Tutti e due videro che il concetto di sovrappopolamento ed “estirpazione” (che Malthus aveva applicato agli esseri umani) si adattava bene alla dottrina dell’evoluzione attraverso la selezione naturale (se applicato alle specie in generale). È evidente, quindi, che quello che serve non sono solamente persone con una buona preparazione in un certo campo, ma anche persone capaci di fare un collegamento tra l’oggetto 1 e l’oggetto 2, che normalmente non sembrano collegati.<br />Sicuramente nella prima metà del XIX secolo moltissimi naturalisti avevano studiato il modo in cui le specie si erano differenziate fra loro. E moltissime persone avevano letto Malthus. Ma quello di cui c’era bisogno era qualcuno che avesse studiato le specie, che avesse letto Malthus e che avesse la capacità di incrociare le due cose. È questo il punto cruciale, la caratteristica rara che dev’essere trovata. Una volta che qualcuno lo ha stabilito, il collegamento diventa ovvio. Thomas Huxley avrebbe esclamato, dopo aver letto L’origine delle specie : «Che stupido a non averci pensato!».Ma perché non ci aveva pensato? La storia del pensiero umano induce a ritenere che è difficile pensare a un’idea, anche quando tutti i fatti sono lì, sul tavolo. Per fare questo collegamento serve una certa audacia. E dev’essere così, perché ogni collegamento che non richiede audacia è un collegamento che può essere fatto da tante persone contemporaneamente e che non si sviluppa come un’“idea nuova”, ma come un semplice “corollario di un’idea vecchia”. È soltanto dopo che un’idea nuova appare ragionevole. Inizialmente è il contrario: sembra il massimo dell’irrazionalità presupporre che la terra sia tonda invece che piatta, o che sia lei a muoversi invece del sole, o che un oggetto, una volta messo in movimento, necessiti di una forza per fermarsi e non di una forza per continuare a muoversi; e così via. Una persona disposta ad andare contro la ragione, l’autorità e il senso comune è necessariamente una persona molto sicura di sé. Dato che persone di questo tipo nascono di rado, sicuramente apparirà eccentrica al resto della popolazione. Una persona eccentrica sotto un certo aspetto spesso è eccentrica anche da altri punti di vista.<br />Di conseguenza, la persona che ha maggiori probabilità di arrivare ad avere un’idea nuova è una persona che ha una buona preparazione nel settore in questione e che ha abitudini non convenzionali. Una volta trovate queste persone, la domanda successiva è: è meglio metterle insieme in modo che possano discutere il problema tra loro, o informare ognuno del problema e lasciare che lavorino per conto proprio? La mia sensazione è che quando si parla di creatività sia necessario l’isolamento. Tuttavia, una riunione di persone del genere può essere auspicabile per ragioni che non hanno a che fare con l’atto di creazione in sé e per sé. Due persone non avranno mai lo stesso identico magazzino mentale di nozioni. La mia sensazione è che lo scopo delle sessioni di elucubrazione non è escogitare idee nuove, ma educare i partecipanti a fatti e combinazioni di fatti, teorie e pensieri in libertà. Il mondo in generale disapprova la creatività, ed essere creativi in pubblico viene visto particolarmente male. Il crea- tivo, quindi deve avere la sensazione che gli altri non troveranno nulla da ridire. Il numero ottimale di partecipanti alla riunione non dev’essere molto alto. Probabilmente sarebbe meglio organizzare una serie di riunioni a cui partecipano ogni volta persone diverse, invece di un’unica riunione con dentro tutti. Per ottenere i migliori risultati, deve esserci una percezione di informalità. La giovialità, l’uso dei nomi di battesimo, le battute, le prese in giro rilassate, secondo me sono fondamentali: non in quanto tali, ma perché incoraggiano i partecipanti a prendere parte alla follia della creatività.<br />L’elemento che probabilmente inibisce più di tutti è la sensazione di responsabilità. Le grandi idee del passato sono venute da persone che non erano pagate per avere grandi idee, ma che erano pagate per fare gli insegnanti, i funzionari dell’ufficio brevetti, gli impiegati pubblici, o non erano pagate affatto. Le grandi idee sono spuntate come questioni secondarie. Sentirsi in colpa perché non ci si guadagna lo stipendio perché non si ha avuto una grande idea è il modo più sicuro, secondo me, per precludere ogni possibilità di grande idea. Pensare ai parlamentari, o ai cittadini in generale, che sentono parlare di un gruppo di scienziati che si gingillano, elaborano progetti irrealizzabili, magari raccontano barzellette sconce, tutto a spese dei contribuenti, fa venire i sudori freddi. In realtà lo scienziato medio ha sufficiente coscienza civica da non voler avere l’impressione di fare una cosa del genere nemmeno se nessuno dovesse venirlo a sapere. Io suggerirei di assegnare ai partecipanti di una sessione di elucubrazione compiti non impegnativi da svolgere (scrivere un breve rapporto o una sintesi delle conclusioni) e pagarli per questo. In questo modo la riunione formalmente non sarebbe pagata e questo renderebbe tutto molto più rilassante. Se sono completamente rilassati, sgravati da responsabilità e impegnati a discutere cose interessanti, ed essendo per loro stessa natura persone non convenzionali, saranno i partecipanti stessi a creare strumenti per stimolare la discussione.<br />Pubblicato con l’autorizzazione della Asimov Holdings ( Traduzione di Fabio Galimberti)Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6261258921963124217.post-4968157639899958042014-10-21T01:52:00.004-07:002014-10-21T01:53:02.911-07:00PD-51_IGNAZI L’ANALISI<br />
Che cosa vuol dire partito-nazione<br />
PIERO IGNAZI<br />
PER ora il segretario Renzi non rottama il partito. Anzi. Demitizzando le primarie a strumento tra i tanti per scegliere candidati e dirigenti il segretario re-introduce un elemento cardine di qualsiasi organizzazione politica che si voglia stabile: il ruolo centrale della classe dirigente. Ora che Matteo Renzi e la sua corrente (del resto, che cosa è la Leopolda se non una classica riunione di corrente, per quanto smart e cool nella forma) sono alla barra del timone si rendono conto che più un partito è “liquido”, più è contendibile.<br />
PERCHÉ oggi non ci sono competitor al segretario, ma se domani le cose dovessero andare male tutto può succedere. Come ricordava domenica Eugenio Scalfari, nessuno è insostituibile: non per nulla, anche dopo De Gaulle non ci fu il paventato diluvio. Quindi, seguendo il motto degli antichi romani, meglio essere pronti ad ogni evenienza. E se si dispone di una organizzazione, ramificata, efficiente e coesa, i momenti critici si attraversano indenni. Ricordino i dirigenti Pd che intonano ossessivamente il mantra salvifico e beneaugurante del risultato elettorale delle elezioni europee di giugno che, in ogni paese e per tutte le elezioni per il parlamento di Strasburgo, la relazione tra voto europeo e nazionale è assai labile… Del resto, cosa rimase del primato conquistato dal Pci alle europee nel 1984? Nulla. Per questo, ritornare ai fondamentali organizzativi di ogni grande partito europeo è cosa saggia e prudente. Poi, lo spazio per le innovazioni è enorme, tanto che, in Europa, le formazioni politiche più importanti studiano e sperimentano nuove forme di partecipazione interna, di trasmissione delle domande dal basso all’alto, di coinvolgimento dei cittadini, di responsabilizzazione e gratificazione dei dirigenti locali, e così via. Anche il Pd deve rinnovarsi e ripensarsi abbandonando alcune velleità inserite al momento della sua fondazione, e affrontando soprattutto il problema del buon uso della rete (quello cattivo lo fa già Beppe Grillo).<br />
Il segretario ha rimandato la discussione su questo punto ad un momento di maggiore approfondimento. Segno che il tema merita riflessione. Ma alcune indicazioni sono già emerse anche perché ogni partito si struttura in rapporto agli obiettivi che si propone. Il Pd, oggi, ama definirsi “partito della nazione”, sul modello britannico: un partito che rappresenta interessi e valori trasversali al punto da ambire, potenzialmente, alla maggioranza assoluta dei consensi. In effetti, il vuoto politico che attualmente circonda i democratici consente lo- ro di porsi obiettivi così ambiziosi: solo una catastrofe economica — come auspica Grillo — può cambiare radicalmente le prospettive. Un partito della nazione recluta a destra e a sinistra, attrae imprenditori e operai, laici e cattolici, dipendenti pubblici e partite Iva. Proprio come voleva fare il Berlusconi del 2001 quando incombendo da quei manifesti giganti con il suo migliore sorriso a 32 carati si rivolgeva a tutte le categorie sociali. Forza Italia non aveva problemi a porsi come un partito “pigliatutti” perché il suo moderatismo (apparente) e il suo benpensantismo condito da qualche fremito anti-establishment si riassumevano nella figura del leader. Il Pd è (ancora) refrattario a ridursi interamente ad un PdR, ad un “Partito di Renzi” secondo il brillante conio di Ilvo Diamanti. Per quanto il segretario-premier domini la scena, il partito sul territorio esiste ancora; e se i circoli languono, le feste dell’Unità resistono bene, a riprova che qualcosa nell’organizzazione politica tradizionale va cambiato.<br />
Il “partito” per quanto un po’ ammaccato — ma non è reponsabilità di Renzi — (r) esiste ancora ed i suoi riferimenti ideali si rifanno tuttora alla tradizione della sinistra di classe e del cattolicesimo democratico. Non è emerso ancora nulla di nuovo e di trasversale, al di là di alcune provocazioni e battute. Non esiste un profilo ideologico del partito della nazione. La stessa debolezza progettuale del partito a vocazione maggioritaria veltroniano rischia di riverberarsi sul progetto renziano. Tra l’altro, le ricerche effettuate dopo le primarie del dicembre 2013 indicano una divaricazione tra iscritti, votanti alle primarie ed eletti all’Assemblea nazionale: gli iscritti sono più sinistra dei votanti che, a loro volta, sono più sinistra dei delegati. Cosa cementa allora questa “comunità” politica, come la chiama il segretario? Su quali valori si fonda per attrarre sostegno da ogni dove? O è solo il profumo del potere che oggi seduce e domani, una volta svanito, allontana? Un grande partito seduce per la forza delle sue idee, dei suoi progetti, delle sue convinzioni. Il resto è contorno, utile per vincere (come accadde a Berlusconi), inutile per costruire.<br />
<br />
<br />
<br />
LA POLEMICA<br />
Il cerchio rosso sui dissidenti<br />
SEBASTIANO MESSINA<br />
BEPPE Grillo ha decapitato la dissidenza del Circo Massimo segnando su Facebook le teste dei colpevoli con un cerchio rosso, e Gianroberto Casaleggio ha risposto a quei quattro che gli chiedevano dal palco un po’ più di trasparenza espellendoli in un post scriptum. Ormai la realtà supera la satira, nel M5s, e gli stessi militanti restano senza fiato assistendo alla degenerazione farsesca di quella democrazia del web dove tutto doveva essere meraviglioso.<br />
E OGNI decisione sarebbe stata fantastica, e invece si scopre a poco a poco che tutti possono scrivere un post, non tutti possono parlare, pochi possono votare ma solo due persone possono decidere: uno si chiama Beppe e l’altro Gianroberto.<br />
Chi ha votato — per restare alle ultime 48 ore — la nuova linea dura dei Cinquestelle sull’immigrazione, con quel post para-leghista di Grillo che annuncia che «i cosiddetti clandestini vanno rispediti da dove venivano», dopo che la base del partito — la Rete! — si era chiarissimamente schierata con un referendum per l’abolizione del reato di clandestinità? Chi ha discusso, sull’Europa, lo scivolamento sempre più a destra del Movimento, che dopo essersi affidato alla leadership dell’ultra-conservatore Farage — per il quale «le donne che lavorano e hanno figli valgono meno ed è giusto che guadagnino meno degli uomini» — ha aperto ieri le porte persino al polacco Iwaszkiewicz, eletto nel Partito della Nuova Destra e autore della teoria secondo cui picchiare le mogli «aiuterebbe molte di loro a tornare con i piedi per terra»? E chi ha emesso la sentenza di espulsione immediata del sindaco di Comacchio, Marco Fabbri, colpevole di essersi candidato alla Provincia per difendere gli interessi dei suoi concittadini, cacciato su due piedi con una tale brutalità da trasformare un appassionato militante in un cittadino così amareggiato, così deluso da arrivare a parlare di «una deriva squadrista e fascista»?<br />
Ma il capolavoro del tandem Beppe& Gianroberto è stata ieri la radiazione dei quattro militanti, subito degradati a dissidenti perché avevano osato interrompere la liturgia del Circo Massimo salendo sul palco per domandare con parole semplici che le votazioni sul portale grillino fossero almeno verificabili, «e soprattutto vorremmo sapere qualcosa di questo “staff” col quale tutti ci interfacciamo ma nessuno lo conosce». Chiedevano, in una parola, solo un po’ di quella trasparenza che i cinquestelle reclamano dagli altri ma non applicano mai in casa propria. E sono subito diventati un bersaglio che Grillo ha appeso su Facebook cerchiando di rosso le loro teste, e Casaleggio ha centrato in pieno con un colpo secco: un post scriptum in coda a una delle sue allegre profezie, «Press Obituary”, necrologio della stampa: «I quattro sono fuori dal M5S».<br />
È difficile capire perché un abilissimo stratega della comunicazione e un formidabile comunicatore siano scivolati nella trappola di rispondere a un’accusa di scarsa trasparenza con una sentenza assolutamente priva di trasparenza. Perché anche nella non-democrazia inventata dai grillini, Casaleggio non avrebbe in teoria alcun potere: non ha incarichi, non è stato eletto, non è stato nominato. Tutti sappiamo, per carità, del suo ruolo fondamentale nella nascita e nella crescita del Movimento, ma come può una forza politica che si candida a governare il Paese dare di sé l’immagine di una setta nella quale il potere massimo — quello di decidere chi è dentro e chi è fuori — è nelle mani di un’eminenza grigia che non risponde a nessuno se non al suo socio?<br />
Grillo invece — che non si è mai candidato alle elezioni perché una vecchia condanna lo priva di uno dei requisiti che lui stesso pretende dagli altri — una carica ce l’avrebbe: quella di presidente del Movimento. Se l’assegnò da solo, una sera di dicembre di due anni fa, davanti al notaio di Cogoleto nominando vicepresidente suo nipote Enrico e segretario il suo commercialista. Una carica che lui non ostenta, e che gli serve solo per decidere chi è candidabile e chi no, quale meetup avrà il simbolo e quale no, e soprattutto chi va cacciato e chi può rimanere. Purché stia buono, canti in coro la canzoncina che lui ha scritto e non si azzardi a fare mai una domanda indiscreta sulla trasparenza di un movimento dove tutto è sempre magnifico, incredibile e stupendo, un luogo magico dove comandano finalmente i cittadini, i militanti, la Rete, mentre lui e Casaleggio prendono solo le decisioni.<br />
<br />
<br />
<br />
<br />
<br />
Il premier punta al 51%. Le simulazioni del voto anticipato<br />
GOFFREDO DE MARCHIS<br />
ROMA .<br />
Puntare al 51 per cento. O avvicinarsi molto, che avrebbe lo stesso effetto. Uno studio che gira tra i corridoi del Senato ha testato le proiezioni di un voto con la legge elettorale attualmente in vigore, ovvero il Consultellum: proporzionale puro con le preferenze e sbarramenti piuttosto alti. I risultati sono sorprendenti. Basterebbe ottenere un risultato intorno al 44-45 per cento (che gli sbarramenti favorirebbero) per avere la maggioranza sia a Montecitorio sia a Palazzo Madama. Il Pd, grazie al 40,8 delle Europee, è già abbastanza vicino. Un allargamento ai pezzi della sinistra di Sel e ai centristi di Scelta civica lo lancerebbe verso il traguardo. «Quei numeri sono alla nostra portata», ripete Renzi ai fedelissimi.<br />
Da questo punto di vista e ascoltate le parole del premier-segretario, molti degli esponenti della direzione Pd si sono convinti che tutto sembra muoversi verso le elezioni anticipate la prossima primavera. Su questo il premier avrebbe sondato il terreno presso Forza Italia. Ma è un’aria che viene annusata in tutto il Parlamento. Dal Pd ai berlusconiani. E non solo. Da giorni Angelino Alfano e Gaetano Quagliariello stanno riflettendo su una exit strategy per non trovarsi schiacciati tra Largo del Nazareno e Arcore. I sondaggi descrivono una situazione pericolosa per i transfughi dell’ex Pdl. «Dobbiamo cambiare nome al partito», dicono. Solo un inizio, anche se il traguardo è chiaro. Un’alleanza con il Partito democratico nel caso dovesse essere confermato il premio di maggioranza alla coalizione. Un ingresso sotto le ali renziane se invece prevalesse la linea di un bonus alla singola lista. Oppure, se alla fine il voto venisse consumato con il sistema uscito dalla Corte costituzionale, con il 2,5 per cento dei sondaggisti, l’adesione al Pd sarebbe inevitabile. È un percorso, quello immaginato dai vertici dell’Ncd, che non si può certo fare all’insegna del “centrodestra”. Da qui il lavorìo sulla modifica della ragione sociale. Premessa obbligata al dialogo con il premier.<br />
Renzi definisce questo modello aperto a tutti, realizzatore di una vera vocazione maggioritaria nei numeri, il Partito della Nazione. Una forza politica capace di parlare a diversi strati della società, di farsi votare trasversalmente: dai giovani e dagli anziani, dai datori di lavoro e dai lavoratori, dagli uomini e dalle donne. Assomiglia in modo impressionante a come è stata costruito l’appuntamento della Leopolda, negli ultimi 4 anni. Una kermesse dove, da Nord a Sud, si possono sentire protagonisti persone molto diverse fra loro. Negli Stati uniti si chiama catch all party ossia il “partito pigliatutto”.<br />
Uno studio molto simile a quello che passa di mano in mano al Senato è contenuto in una cartellina che Denis Verdini si porta sempre dietro. In una riunione l’ha anche mostrato al presidente del consiglio. Ed è l’argomento forte che il plenipotenziario fiorentino usa per convincere Silvio Berlusconi ad aprire alle modifiche dell’Italicum suggerite da Renzi. «Senza di te che sei incandidabile e con le preferenze, Forza Italia rischia seriamente di sparire», sussurra Verdini nell’orecchio dell’ex Cavaliere. «E Matteo può avere la maggioranza comunque».<br />
Dunque, da Arcore la proposta è accelerare sull’Italicum, anche con le modifiche. Compresa l’idea di cancellare dal testo l’articolo 2. Quell’articolo è la clausola di salvaguardia pretesa dalla minoranza del Pd e da Forza Italia (quattro mesi fa): prevede che la nuova legge elettorale sia valida solo per la Camera, in attesa della definitiva cancellazione del Senato. Un norma anti-elezioni anticipate. Ma se Verdini e Renzi cominciano a lavorare sull’annullamento della clausola, la prova di una voglia elettorale che coinvolge sia Largo del Nazareno sia Arcore diventerebbe certa. Come le impronte digitali o il Dna. Allora nel Pd la scissione non sarebbe più solo una chiacchiera.<br />
Andrea Romano è solo l’apripista di Scelta civica. Lo hanno preceduto Gregorio Gitti e Lorenzo Dellai, transitando senza clamori nel gruppo Pd alla Camera. Ma so- no pronti a seguirlo i senatori Linda Lanzillotta, Pietro Ichino e Alessandro Maran. Tre ex Pd che finalmente si riconoscerebbero nella linea di Largo del Nazareno dopo aver sbattuto la porta ai tempi di Bersani. Quindi, un’intera storia verrebbe rinnegata. Una stagione passerebbe agli archivi e il partito cambierebbe davvero verso o meglio natura. Stefano Fassina si sfogava ieri alla fine della direzione: «Il punto è: su quale asse di cultura politica e di programma il Pd si allarga e diventa altro? Dietro l'abbraccio a tutti porta avanti gli interessi dei più forti?». Gianni Cuperlo ironizza, ma a modo suo, dicendo la sua verità: «Finchè non arrivano Razzi e Scilipoti, io resisto». Però dall’ex sfidante è arrivato l’attacco più sottile ieri pomeriggio. Quando parla di “partito parallelo” Cuperlo parla di un partito diverso, non quello che hanno costruito i Ds, anche i Ds.<br />
Ma Renzi vuole smontare il tabù identitario del Pd, stravolgerlo, consegnarlo alla storia e passare oltre. «Manca Verdini - sibila Pippo Civati citando Bennato -. Poi si parte. Prima stella a destra, questo è il cammino...». Anche se, almeno all’apparenza, sono gli altri a seguire il cammino di Renzi, a essere ipnotizzati dal leader del Pd, dalla sua forza e dai suoi consensi.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6261258921963124217.post-68747521982254559482014-02-03T01:49:00.001-08:002014-10-21T01:55:51.555-07:00ivano_stylenon solo ivando, solca i bit di questo mondo c'è anche l'agnello <br />
maringo mannaro che quatto quatto si avvicina ai byte:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3orW5WQc7KqwlqDjlF-G-vuL5sdmhCXx8LJVESg46bq-4NyjQmli4OVzwC5zvKj5_PUG5xASeioJyJTN55fYdV2gOh6u1Jv10pZyfILI_Bx6xmDG-Rjp2iqxi_3ytpsggFFNynPwryA/s1600/lupo-agnello.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3orW5WQc7KqwlqDjlF-G-vuL5sdmhCXx8LJVESg46bq-4NyjQmli4OVzwC5zvKj5_PUG5xASeioJyJTN55fYdV2gOh6u1Jv10pZyfILI_Bx6xmDG-Rjp2iqxi_3ytpsggFFNynPwryA/s1600/lupo-agnello.jpg" height="271" width="400" /></a></div>
<br />
<br />
<br />
qui vediamo ivando che pulisce il piatto. Non è coi suoi amichetti, è sempre lui che vagorda:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUDqwhywh_U_vOlVCGZWjIPItrTPXTGUxLWqK9tasTSgU0528u0R0-GtyfONAazX-W2BYpCF1d7UeqSNpLbfIDUiVZYm4gg8UFpA7rkviPafelurID8N9z8VDLaRITvWmTfsQ4JOfT4g/s1600/01240044.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUDqwhywh_U_vOlVCGZWjIPItrTPXTGUxLWqK9tasTSgU0528u0R0-GtyfONAazX-W2BYpCF1d7UeqSNpLbfIDUiVZYm4gg8UFpA7rkviPafelurID8N9z8VDLaRITvWmTfsQ4JOfT4g/s1600/01240044.jpg" height="250" width="400" /></a></div>
io che sono un ...<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmTRon4RnvRxY_Dl1KCiIJoEF165xI7PbYJRj8L6Tmk1CTtAm1ewmgabNnSAbCFEaDf-C9JYV1TZWvbJObxYZLtcHOi7xFkopohfKQSb05rdDEytqvYdeU7V9dVENBJ-cQDyVGFyKVQQ/s1600/01240032.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmTRon4RnvRxY_Dl1KCiIJoEF165xI7PbYJRj8L6Tmk1CTtAm1ewmgabNnSAbCFEaDf-C9JYV1TZWvbJObxYZLtcHOi7xFkopohfKQSb05rdDEytqvYdeU7V9dVENBJ-cQDyVGFyKVQQ/s1600/01240032.jpg" height="400" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3KLgY94hLI9SD7s9GsiPlt2H3k6zJ9mPMH3nARyEp_ZKfZuNptPHyrMktCzUeHcdqvto51FGpdv6dX_FfxEiXsbmtymNNh6eV8XTIhFMyPzoZuj_H_dDbU95uWnGBoJK4YTsOWAkMDQ/s1600/01240061.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3KLgY94hLI9SD7s9GsiPlt2H3k6zJ9mPMH3nARyEp_ZKfZuNptPHyrMktCzUeHcdqvto51FGpdv6dX_FfxEiXsbmtymNNh6eV8XTIhFMyPzoZuj_H_dDbU95uWnGBoJK4YTsOWAkMDQ/s1600/01240061.jpg" height="250" width="400" /></a></div>
<br />Unknownnoreply@blogger.com0