giovedì 17 marzo 2011

I numeri di Fibonacci

[modifica] Nell'economia

I numeri di Fibonacci sono utilizzati anche in economia nell'Analisi tecnica per le previsioni dell'andamento dei titoli in borsa, secondo la teoria delle onde di Elliott.
Studiando i grafici storici dei titoli, Ralph Nelson Elliott sviluppò un metodo basato su tredici conformazioni grafiche dette onde, simili per forma ma non necessariamente per dimensione.
A differenza di altre applicazioni grafiche come medie mobili, trendline, macd, rsi ecc. che si limitano ad indicare il livello di resistenza e di supporto e le angolature del trend "Il principio delle onde di Elliott" è l'unico metodo in grado di individuare un movimento del mercato dall'inizio alla fine e quindi di presumere i futuri andamenti dei prezzi.

Regole previsione statistica

58lukeprog18 gennaio 2011 03:19
A bordo di parole considera il rilascio di un prigioniero: Riuscirà a essere violento di nuovo? Un ufficiale di assumere un candidato di lavoro: Riuscirà a essere una risorsa preziosa per l'azienda? Una giovane coppia considera il matrimonio: Avranno un matrimonio felice?
L' saggezza nella cache per fare che le previsioni ad alta posta in gioco è di avere esperti di raccogliere quante più prove possibili, pesare questa evidenza, e di esprimere un giudizio. Ma 60 anni di ricerca ha dimostrato che in centinaia di casi, una semplice formula chiamata previsione regola statistica (SPR) fa meglio delle previsioni di esperti di fare. O, più esattamente:
Quando sulla base delle prove stesse, le previsioni di SPR sono affidabili almeno quanto, e sono in genere più affidabili, le previsioni degli esperti umani per problemi di previsione sociale.1
Per esempio, uno SPR sviluppato nel 1995 predice il prezzo dei vini di Bordeaux rossi maturi in asta migliore di degustatori esperti fanno. Reazione da parte dell'industria di degustazione di vino, come SPR-la previsione è stata "da qualche parte tra violenti e isterici."
Come funziona il SPR? Questo SPR particolare è chiamata corretto modello lineare, Che ha la forma:
P = w1(C1) + W2(C2) + W3(C3) + W ...n(Cn)
Il modello calcola il risultato sommate P, che mira a prevedere un proprietà di destinazione come il prezzo del vino, sulla base di una serie di spunti. Sopra, cn è il valore della nth cue, e wn è il peso assegnato al nth cue.2
Nel vino-predire SPR, c1 riflette l'epoca della vendemmia, e altri spunti tener conto delle pertinenti caratteristiche climatiche in cui sono state coltivate le uve. I pesi per i segnali sono stati assegnati sulla base di un confronto di questi spunti per un ampio insieme di dati sui prezzi di mercato passato per maturare i vini di Bordeaux.3
Ci sono altri modi per costruire SPR, ma invece di indagine questi dettagli, io invece sondaggio l'incredibile successo di SPR.
  • Howard e Dawes (1976) è accertato che essi possono prevedere in modo attendibile la felicità coniugale con una delle più semplici SPR mai concepito, utilizzando solo due indizi: P = [tasso di fare l'amore] - [tasso di combattimento]. L'affidabilità di questa SPR è stata confermata da Edwards & Edwards (1977) e da Thornton (1979).
  • interviste non strutturate affidabile degradarele decisioni del gatekeeper (es. assunzione e gli ufficiali di presenze, pannelli parole, ecc.) Gatekeeper (e SPR) prendere decisioni migliori sulla base dei dossier solo che sulla base dei dossier e interviste non strutturate. (Bloom e Brundage 1947, DeVaul et al 1957, Oskamp 1965, Milstein et al 1981;.... Hunter & Hunter 1984; Wiesner & Cronshaw 1988). Se sei assunzioni, probabilmente stai meglio nonfacendo interviste.
  • Wittman (1941) costruito un SPR che predisse il successo della terapia con elettroshock per i pazienti in modo più affidabile rispetto al personale medico o psicologico.
  • Carroll et al. al. (1988) ha trovato un SPR che predice recidività criminale meglio di criminologi esperti.
  • Un SPR costruito da Goldberg (1968) ha fatto un lavoro migliore di come diagnosticare i pazienti nevrotici o psicotici che hanno addestrato gli psicologi clinici.
  • SPR regolarmente predire il rendimento scolastico migliore di presenze ufficiali, sia per le scuole mediche (DeVaul et. Al. 1957), scuole di diritto (Swets, Dawes e Monahan 2000), o scuola di specializzazione in psicologia (Dawes 1971).
  • SPR predire il rischio di credito e prestito migliore di funzionari di banca (Stillwell et. Al. 1983).
  • SPR predire i neonati a rischio di Sudden Infant Death Syndrome meglio di esperti umani fare (Lowry 1975;. Carpenter et al 1977;. Golding et al 1985..).
  • SPR sono migliori a predire chi è incline alla violenza che sono psicologi forensi (Faust & Ziskin 1988).
  • Libby (1976) ha trovato un SPR semplice che prevede il fallimento dell'impresa meglio che gli ufficiali di prestito con esperienza.
E questo è appena grattando la superficie.
Se questo non è abbastanza sorprendente, considerate il fatto che anche quando gli esperti sono datoi risultati di SPR, essi ancoranon può più efficienti di quelle SPR (Leli & Filskov 1985; Goldberg 1968).
Allora, perché non sono in uso SPR ovunque? Probabilmente, suggerire Bishop & Trout, Negare o ignorare il successo di SPR a causa delle distorsioni cognitive profonde, Come overconfidence nel nostro sentenze. Ma se queste SPR funziona bene come o meglio di giudizio umano, non dovremmo usoloro?
Robyn Dawes (2002) ha le implicazioni normative di tali studi:
Se un € wella convalidato SPR che è superiore al giudizio professionale esiste in un contesto pertinente decisione making, i professionisti dovrebbero usare, totalmente se stessi assentarsi dalla previsione.
A volte, essere razionale è facile. Quando esiste una regola affidabile previsione statistica per il problema si sta valutando, non c'è bisogno di sprecare il vostro potere di cervello cercando di dare un giudizio accurato. Basta prendere il vista esterna e utilizzare il SPR maledetto.4

WEKA: l'approccio intelligente all'esplorazione dei dati

WEKA: l'approccio intelligente all'esplorazione dei dati

IV parte: distribuire il processo di classificazione

Un sistema di Knowledge Discovery in Data (KDD) è composto da un insieme di componenti che tutte insieme possono identificare ed estrarre relazioni dai dati memorizzati nella base di dati che siano nuove, utili ed interessanti. Vediamo in questo articolo il componente Experimenter.

Experimenter: il tool di Weka per automatizzare le sperimentazioni

Un sistema di Knowledge Discovery in Data (KDD [1] [4]) è composto da un insieme di componenti che tutte insieme possono identificare ed estrarre relazioni dai dati memorizzati nella base di dati che siano nuove, utili ed interessanti.
Dato un Training set e delle classi definite dall'utente, un sistema di Data Mining può costruire molte descrizioni. Alcune di queste sono più corrette di altre, cioè alcune di esse classificano meglio gli esempi sconosciuti. Una volta definita una misura di qualità di una descrizione, la costruzione di una descrizione può essere espressa come un problema di ricerca:

trovare la migliore descrizione nell'insieme delle descrizioni costruibili

Per questo scopo Weka[2][3] mette a disposizione l'Experimenter: si tratta di una versione batch dell'Explorer, e consente di impostare veri e propri esperimenti di Data Mining.
Ad esempio, è possibile effettuare una serie di analisi su vari insiemi di dati e con svariati algoritmi, ed eseguirle alla fine tutte insieme, facilitando un confronto tra i vari tipi di algoritmi, per determinare qual è il più adatto a risolvere uno specifico problema.

Distribuire il processo su più macchine

Una caratteristica notevole dell'Experimenter di Weka è che può splittare un esperimento e distribuirlo su più processi. Questa caratteristica è fornita per gli utenti avanzati di Weka ed è disponibile scegliendo "Advanced" dal pannello Weka Experiment Environment.



weka4_fig01.jpg
Figura 1 - Dettaglio Experimenter

Alcuni utenti evitano di lavorare con questo pannello regolando l'esperimento sulla versione semplice e commutando alla versione avanzata per distribuirla. Tuttavia, la distribuzione di un esperimento è una caratteristica avanzata ed è spesso difficile da realizzare.
La distribuzione dell'esperimento funziona al meglio quando i risultati sono trasmessi ad una base di dati centrale: selezionando la base di dati con JDBC per definire la destinazione dei risultati dal pannello dell'interfaccia dell'experimenter.
Alternativamente, potreste conservare su ogni host i relativi risultati per poi fonderli in seguito.
Per distribuire un esperimento, ogni host deve avere Java installato, deve possedere i corretti grant sui dataset di riferimento e deve far girare il pacchetto weka.experiment (compreso nel workbench Weka).
Per iniziare un esperimento "a distanza" su una macchina ospite, è necessario copiare il file remoteExperimentServer.jar dalla distribuzione di Weka su una directory dell'host.
"Spacchettare" il file con: java xvf remoteExperimentServer.jar
Si espande a due file: remoteEngine.jar, un jar eseguibile che contiene il server dell'experimente, e remote.policy.
Il file remote.policy assegna il permesso all'engine remoto per effettuare alcune operazioni, come il collegamento alle porte o l'accesso alle directory.
Deve essere editato per specificare i percorsi corretti in alcuni dei permessi; ciò è evidente quando esaminate la file:

/* 
 * Necessary permissions for remote engines
 *
 * Example setup for user John Doe:
 * - home directory:
 *   /home/johndoe
 * - location of datasets:
 *   /home/johndoe/datasets/
 * - location of weka.jar:
 *   /home/johndoe/weka/weka.jar
 * - location of additional jars (e.g., for database access):
 *   /home/johndoe/jars
 * - remote engine directory (policy, start scripts, etc.):
 *   /home/johndoe/remote_engine
 *
 * Start Experimenter in directory /home/johndoe/remote_engine:
 *  java \
 *    -classpath /home/johndoe/jars/<db.jar>:/home/johndoe/weka/weka.jar \
 *    -Djava.rmi.server.codebase=file:/home/johndoe/weka/weka.jar \
 *    weka.gui.experiment.Experimenter
 *
 * Start remote engine on remote machine:
 * - cd to /home/johndoe/remote_engine
 * - start engine
 *   java -Xmx256m \
 *    -classpath remoteEngine.jar:/home/johndoe/jars/<db.jar> \
 *    -Djava.security.policy=remote.policy \
 *    weka.experiment.RemoteEngine &
 *
 * Note:
 * replace <db.jar> with actual jar filename, e.g., mysql.jar
 *
 * Version: $Revision: 1.1.2.1 $
 */
grant {
 // allow the remote engine to replace the context class loader.
 // This enables the unloading of types from the remote engine
 permission java.lang.RuntimePermission
  "setContextClassLoader";
 // file permission for data sets
 permission java.io.FilePermission
  "/home/johndoe/datasets/-", "read";
 // file permissions for downloading classes from client file url's
 permission java.io.FilePermission
  "/home/johndoe/-", "read";
 permission java.io.FilePermission
  "/home/johndoe/weka/weka.jar", "read";
 // connect to or accept connections from unprivaleged ports and the http port
 permission java.net.SocketPermission 
  "*:1024-65535", "connect,accept";
 permission java.net.SocketPermission
  "*:80", "connect";
 // file permission to load server classes from remoteEngine.jar.
 // only needed if RemoteEngine_Skel.class/_Stub.class are going to
 // be downloaded by clients (ie, if these files are not already in the
 // client's classpath). Normally this doesn't need to be changed.
 permission java.io.FilePermission
  "/home/johndoe/remote_engine/-", "read";
 // read write for properties
 permission java.util.PropertyPermission 
  "*", "read,write";
};

Di default, il file specifica la porta 80 su http da qualunque parte del web, può comunque essere impostato un URL specifico: è sufficiente scommentare l'esempio ed inserire il path appropriato. I remote engines per funzionare correttamente hanno la necessità di accedere al dataset usato nell'esperimento (prima riga del file remote.policy).
I percorsi ai dataset sono specificati nell'experimenter (cioè, il client) e gli stessi percorsi devono essere applicabili nel contesto dei remote engines.
L'Experimenter mette a disposizione una comoda interfaccia grafica per facilitare l'inserimento dei path relativi: è sufficiente selezionare la casella "Use relative paths" indicata nel pannello di setup dell'experimenter.


weka4_fig02.jpg
Figura 2 - Dettaglio Experimenter


Per avviare il server del remote engine, scrivere:
java ?classpath remoteEngine.jar:<path_to_any_jdbc_drivers> 
-Djava.security.policy=remote.policy weka.experiment.RemoteEngine

dalla directory che contiene remoteEngine.jar.
Se tutto va bene comparirà questo messaggio (o qualcosa di simile):

Host name : biancalana@dia.uniroma3.it
RemoteEngine exception: Connection refused tohost:
ml.cs.waikato.ac.nz; nested exception is:
java.net.ConnectException: Connection refused
Attempting to start rmi registry...
RemoteEngine bound in RMI registry

Malgrado le apparenze iniziali, questa è una buona notizia! Il collegamento è stato rifiutato perché nessun RMI registry stava funzionando su quel server e quindi il remote engine ne ha iniziato uno. Ripetere il processo su tutti gli host tenendo conto che non ha senso avviare più di un remote engine sullo stessa macchina! Avviare l'experimenter scrivendo:

java -Djava.rmi.server.codebase=<URL_for_weka_code>
weka.gui.experiment.Experimenter

L'URL specifica dove i remote engine possono trovare il codice da poter eseguire, se l'URL denota una directory anziché un file jar, deve terminare con il separatore di path (ad esempio "/").
Il pannello avanzato di setup dell'experimenter contiene un piccolo riquadro che determina se un esperimento deve essere distribuito oppure no, normalmente disabilitato.


weka4_fig03.jpg
Figura 3 - Dettaglio Experimenter


Per distribuire l'esperimento cliccare sul check-box nominato "hosts": comparirà una finestra popup per inserire le macchine sulle quali distribuire l'esperimento, i nomi degli host devono essere fully qualified (per esempio, biancalana.dia.uniroma3.it).
Una volta inseriti gli host è sufficiente utilizzare l'Explorer nel modo usuale.
Quando l'esperimento è avviato usando il pannello principale dell'explorer, viene visualizzato il progresso dei sotto-esperimenti sui vari host, con i relativi messaggi di warning.
Il task della distribuzione dell'esperimento gestisce la suddivisione in sotto-esperimenti che RMI trasmette agli host.
Gli esperimenti sono gestiti attraverso lo split del dataset: ovviamente non possono essere più ospiti che dataset. Ogni  sotto-esperimento è autonomo: l'experimenter applica tutti gli schemi precalcolati ad un singolo dataset.


weka4_fig04.jpg

Figura 4 - Dettaglio Experimenter


Conclusioni

In questo ultimo  articolo della serie abbiamo analizzato come realizzare un sistema per distribuire il processo di Knowledge Discovery in Data (KDD) su più calcolatori. Abbiamo apprezzato l'eleganza e la notevole flessibilità del framework Weka per effettuare un calcolo distribuito al fine di ricercare l'algoritmo (e il relativo tuning) ottimale per i dati forniti.

Weka: l'approccio intelligente all'esplorazione dei dati

Weka: l'approccio intelligente all'esplorazione dei dati

I parte: Introduzione al framework

In questo articolo analizzeremo il workbench Weka: una avanzata raccolta di algoritmi e tecniche di preprocessamento del machine learning. Weka è stato disegnato per testare su insiemi di dati diversi metodologie esistenti, velocemente e in modo flessibile; prevede infatti il supporto per tutto il processo sperimentativo del data mining: la preparazione dei dati di input, la valutazione statistica degli schemi di apprendimento, la visualizzazione grafica dei dati di input e del risultato dell'apprendimento. Esamineremo gli ambienti operativi che il framework Weka mette a disposizione e valuteremo un semplice caso di studio.

Che cosa è Weka?

Il Machine Learning (o "apprendimento automatico") è il settore della Computer Science che studia gli algoritmi capaci di emulare le modalità di ragionare tipiche dell'uomo: riconoscere, decidere, scegliere, ossia apprendere ed estrarre informazioni su un determinato problema esaminando una serie di esempi ad esso relativi.
Il crescente interesse per il data mining deriva dalla confluenza di tre grandi fenomeni tecnologici e scientifici:
  • la diffusione di strumenti per la raccolta e organizzazione di grandi volumi di dati, anche via rete;
  • lo sviluppo di algoritmi più robusti ed efficienti per l'analisi dei dati;
  • la disponibilità a basso costo della necessaria potenza di calcolo richiesta dai metodi di analisi dei dati.
L'esperienza mostra che non c'è un singolo schema di machine learning per tutti i problemi di data mining. La tecnica algoritmica di apprendimento universale è una fantasia idealistica: il data mining è una scienza sperimentale.

Nell'ambito del machine learning, il workbench Weka [2] è una collezione di algoritmi e tecniche di preprocessamento allo stato dell'arte. È stato disegnato per testare velocemente metodologie esistenti su insiemi di dati diversi, in modo flessibile; prevede infatti il supporto per tutto il processo sperimentativo del data mining: la preparazione dei dati di input, la valutazione statistica degli schemi di apprendimento, la visualizzazione grafica dei dati di input e del risultato dell'apprendimento.

Weka è stato sviluppato dall'Università Waikato in Nuova Zelanda, e il nome è l'acronimo per Waikato Environment for Knowledge Analysis.


Installazione e uso di Weka

Weka [2] è scritto in Java, quindi si può utilizzare su qualunque sistema operativo dotato di un ambiente di esecuzione Java. Se il JRE (Java Runtime Environment) è già installato, basta scaricare il solo programma di installazione Weka ed eseguirlo. Altrimenti, la cosa più comoda da fare è scaricare il programma di installazione Weka + JRE che installa il framework e l'ambiente di sviluppo in un'unica installazione. Una volta lanciato Weka possiamo scegliere tra 4 diversi ambienti operativi.

SimpleCLI

È un ambiente a linea di comando, da usare per invocare direttamente le varie classi Java di cui Weka è composto. Tutto quello che si può fare dalla SimpleCLI è possibile farlo anche da un ambiente a linea di comando come il "prompt di DOS" di Windows o la shell di Unix.




weka-1_01.jpg
Figura 1 - SimpleCLI

Explorer

È l'ambiente che utilizzeremo più spesso. Con esso si possono caricare degli insiemi di dati, visualizzare in modo grafico la disposizione degli attributi, effettuare una serie di operazioni preliminari di preparazione, ed eseguire algoritmi di classificazione, clustering, selezione di attributi e determinazione di regole associative.
Per gli attributi nominali abbiamo l'elenco dei possibili valori e, per ognuno di essi, il numero di istanze con quel valore. Interessante anche il conteggio del numero di istanze in cui l'attributo manca e del numero di valori che appaiono una sola volta.
Per gli attributi numerici, abbiamo le informazioni sul valore massimo, minimo, sulla media e sulle deviazioni standard, oltre alle solite informazioni su numero di valori diversi, numero di valori unici e numero di istanze con valore mancante.


weka-1_02.jpg
Figura 2 - Explorer

Experimenter

È un ambiente che consente di impostare una serie di analisi, su vari insiemi di dati e con vari algoritmi, e di eseguirle alla fine tutte insieme. È possibile in questo modo confrontare vari tipi di algoritmi, e determinare qual è il più adatto a uno specifico insieme di dati.


weka-1_03.jpg
Figura 3 - Experimenter

KnowledgeFlow

È una variante dell'explorer, in cui le operazioni da eseguire si esprimono in un ambiente grafico, disegnando un diagramma che esprime il "flusso della conoscenza". È possibile selezionare varie componenti come sorgenti di dati, filtri, algoritmi di classificazione, e collegarle tra loro in un diagramma tipicamente detto "data-flow".


weka-1_04.jpg

Figura 4 - Knowledge Flow


Un semplice esempio

Weka concentra il suo interesse principalmente sugli algoritmi di classificazione e sui filtri per la pre-elaborazione dei dataset (entrambi presenti in gran numero), ma include anche l'implementazione di un algoritmo per la scoperta di regole di associazione (l'algoritmo Apriori, il più noto) e di qualche algoritmo per il clustering e per la regressione.
Tra i principali schemi (learner) figurano:
  • Apriori
  • C4.5 decision tree
  • Cobweb and Classit clusterer
  • Decision table majority classifier
  • EM (estimation maximization) clusterer
  • HyperPipe classifier
  • K-nearest neighbour classifier
  • K* classifier
  • Id3 decision tree classifier
  • Linear regression
  • Locally-weighted regression
  • Logistic regression
  • Naive Bayes classifier
  • Neural Network back propagation classifier
  • PART decision list
  • PRISM classifier
  • 1R classifier
  • Voting feature interval classifier
  • Voted perceptron
Il package weka.filters offre un utile supporto alla pre-elaborazione dei dati (data preprocessing). Questo package contiene numerose classi Java in grado di operare trasformazioni sull'insieme dei dati, come ad esempio la rimozione o l'aggiunta di attributi, il rimescolamento del dataset, la rimozione di determinate tuple, e altro ancora.

I filtri possono suddividersi in supervisionati e non supervisionati: nel primo caso fanno uso dell'informazione aggiuntiva dovuta al conoscere l'attributo target, mentre nel secondo, trattano tutti gli attributi nello stesso modo. Un'ulteriore suddivisione è in filtri d'attributo e filtri di tupla: nel primo caso operano sugli attributi, mentre nel secondo operano sulle tuple. Weka inoltre contiene dei meta-learning schemes, ossia metodi che non implementano direttamente un algoritmo per data mining, ma consentono di migliorare le performance dei learner.

Supponiamo di avere alcuni dati da analizzare e di volerci costruire un sistema di inferenza. Prima di tutto abbiamo la necessità di preparare i dati da caricare tramite l'Explorer, in seguito dobbiamo selezionare un metodo di costruzione del classificatore, ed infine interpretarne l'output.


Preparare i dati

Il formato di analisi (nativo) di Weka è il formato ARFF (Attribute-Relation File Format): si tratta di un formato per un file testo, utilizzato per memorizzare dati in database.
Prepariamo il file dei dati seguendo questa semplice struttura:

Intestazione (definizione degli attributi)
@relation <nome del dataset>
@attribute <nome attr> {<val1>, <val2>, ...,<valn>}

oppure
@attribute <nome attr> real
Dove l'ultimo attributo indica la classe.

Dati

Questa parte è costituita dal tag @data seguito dalle descrizioni degli esempi, una su ogni riga (terminata da "a capo")
Ogni esempio è descritto dalla lista dei valori per ciascun attributo, separati da virgole
Ogni valore corrisponde all'attributo che si trova nella stessa posizione dell'intestazione
Le dichiarazioni @relation, @attribute e @data sono case-insensitive.
Segue un'istanza della struttura descritta:


@RELATION iris
    

    @ATTRIBUTE sepallength    NUMERIC
    @ATTRIBUTE sepalwidth    NUMERIC
    @ATTRIBUTE petallength    NUMERIC
    @ATTRIBUTE petalwidth    NUMERIC
    @ATTRIBUTE class        {Iris-setosa,Iris-versicolor,Iris-virginica}
    

    @DATA
    5.1,3.5,1.4,0.2,Iris-setosa
    4.9,3.0,1.4,0.2,Iris-setosa
    4.7,3.2,1.3,0.2,Iris-setosa
    4.6,3.1,1.5,0.2,Iris-versicolor
    5.0,3.6,1.4,0.2,Iris-versicolor
    5.4,3.9,1.7,0.4,Iris-versicolor
    4.6,3.4,1.4,0.3,Iris-virginica
    5.0,3.4,1.5,0.2,Iris-virginica
    4.4,2.9,1.4,0.2,Iris-virginica
    4.9,3.1,1.5,0.1,Iris-virginica

Dall'Explorer di Weka, tutte le operazioni di pre-elaborazioni si possono eseguire dalla scheda "Pre-process".


Caricare i dati nell'Explorer

Carichiamo i dati nell'Explorer e analizziamoli con tecniche di machine learning: cliccando su "open file" carichiamo il file ARFF di esempio creato precedentemente ("iris.arff"). A questo punto l'interfaccia mostra alcune informazioni fondamentali del dataset (figura 5): 10 istanze e 5 attributi. Un istogramma in basso a destra mostra la frequenza dei valori della classe (attributo class) corrispondentemente al valore dell'attributo selezionato. Per gli attributi numerici, l'explorer fornisce i valori di minimo, massimo, media e deviazione standard. È possibile ispezionare i dati caricati attraverso la funzionalità di editing (pulsante edit) al fine di cercare uno specifico valore per modificare/cancellare il suo corrispondente attributo o istanza.



weka-1_05.jpg


Figura 5 - Explorer: dataset iris.arff


Costruire un classificatore

Analizziamo a titolo esemplificativo e del tutto generico un learner costituito da un albero di decisione: nello specifico Weka integra al suo interno l'algoritmo J48.

Che cos'è un albero di decisione? Tentiamo di dare una breve descrizione: gli alberi di decisione costituiscono il modo più semplice di classificare degli "oggetti" in un numero finito di classi. Essi vengono costruiti suddividendo ripetutamente i record in sottoinsiemi omogenei rispetto alla variabile risposta. La suddivisione produce una gerarchia ad albero, dove i sottoinsiemi (di record) vengono chiamati nodi e, quelli finali, foglie.

In particolare, i nodi sono etichettati con il nome degli attributi, gli archi (i rami dell'albero) sono etichettati con i possibili valori dell'attributo sovrastante, mentre le foglie dell'albero sono etichettate con le differenti modalità dell'attributo classe le quali descrivono le classi di appartenenza. Un oggetto è classificato seguendo un percorso lungo l'albero che porti dalla radice a una foglia. I percorsi sono rappresentati dai rami dell'albero che forniscono una serie di regole.

Anche se gli alberi di decisione forniscono la rappresentazione compatta di una procedura di classificazione, spesso risulta difficile spiegare, ad esempio a persone non esperte, una struttura del tipo di quella presentata in figura 6; quindi si preferisce utilizzare una rappresentazione equivalente, ma più intuitiva, con l'ausilio di "regole di classificazione", che possono essere ricavate facilmente dall'albero e che, nel caso dell'esempio in questione, potrebbero essere espresse nel modo seguente:
IF petallength  > 1.4 then Iris-versicolor
ELSE IF sepallength  > 4.6 then Iris-setosa
ELSE Iris-virginica




weka-1_06.jpg
Figura 6 - Albero di decisione generato dal dataset creato

Cliccando sul tab "classify" è sufficiente selezionare il classificatore attraverso il pulsante "choose" (nella sezione trees troviamo l'algoritmo J48). Cliccando sul bottone "start", il classificatore lavorerà fintanto che il piccolo uccello in basso a destra si muove; produrrà infine l'output che esamineremo nel prossimo paragrafo.


Esaminare l'output

Esaminando l'output generato da Weka per il dataset con il classificatore J48, nella parte iniziale troviamo un riassunto del dataset, e la metodologia con il quale il classificatore viene valutato (nel caso di default è la 10-fold-cross validation). Subito dopo troviamo l'albero di decisione generato in formato testuale.
=== Run information ===
    

Scheme:        weka.classifiers.trees.J48 -C 0.25 -M 2
Relation:    iris
Instances:    10
Attributes:    5
        sepallength
        sepalwidth
        petallength
        petalwidth
        class
Test mode:    10-fold cross-validation
    

=== Classifier model (full training set) ===
    

    
J48 pruned tree
------------------
    

petallength <= 1.4
|    sepallength <= 4.6: Iris-virginica (2.0)
|    sepallength > 4.6: Iris-setosa (4.0/1.0)
petallength > 1.4: Iris-versicolor (4.0/2.0)
    

Number of Leaves :    3
Size of the tree :    5
    

    
L'output fornisce, come risultato finale, uno strumento noto in letteratura come "matrice di confusione" che può essere molto interessante per misurare le potenzialità del modello generato. Associare una matrice di confusione a ogni modello permette di scegliere il modello migliore che non necessariamente coincide con quello avente il tasso di accuratezza maggiore.

Essa è una matrice di dimensione kxk, con k numero di classi nella quale sulle colonne si hanno il numero reale di record appartenenti a ciascuna classe e sulle righe il numero previsto di records appartenenti ad una data classe.


=== Confusion Matrix ===
    

 a b c <-- classified as
 2 0 0 | a = Iris-setosa
 0 2 2 | b = Iris-versicolor
 0 0 1 | c = Iris-virginica
    

    
In questo modo i valori presenti sulla diagonale principale sono quelli che rappresentano il numero di casi classificati correttamente dall'algoritmo, mentre ogni valore fuori dalla diagonale principale rappresenta un errore di classificazione.


Conclusioni

In questo articolo abbiamo esaminato il framework Weka. Abbiamo analizzato preliminarmente l'ambiente, per poi eseguire un semplice processo di classificazione e inferenza mediante un modello chiamato Albero di Decisione (nella fattispecie, l'algoritmo J48). Abbiamo infine imparato a esaminare l'output generato per capire e interpretare il livello di accuratezza del classificatore costruito.

Machine Learning

Machine Learning
Uno sviluppo interessante e potenzialmente di vasta portata in informatica è l'invenzione e l'applicazione di metodi di apprendimento automatico. Questi permettono un programma per computer per analizzare automaticamente una grande quantità di dati e decidere quali sono le informazioni più rilevanti. Queste informazioni cristallizzato può quindi essere utilizzato per fare previsioni o automaticamente per aiutare le persone a prendere decisioni più velocemente e con maggiore precisione

miscellanea

Il trader ricorre a tutti i tipi di sistemi grafici in modo da trovare il momento migliore d’ingresso e d’uscita dal mercato. Sebbene tutto questo non sia una certezza porta con sé rischi e ricompense. Le onde di Elliot, Gann e i numeri di Fibonacci sono buoni esempi di teorie scientifiche che sono usati in questo modo, anche se non danno ai trader nessun motivo di certezza per il trading.  Potrebbero funzionare ma la maggior parte delle volte purtroppo non funzionano.

Fibonacci Trading

Fibonacci Trading

Fibonacci Trading difficile e non. Se Siete Nuovi utilizzare uno Gli Strumenti di Fibonacci POI Guardare Intorno a Sito NB Tutti gli ingredienti e assicurarsi di Scaricare gratuitamente il Manuale per il Sistema Commerciale e di Fibonacci.
Il Sistema di posta Semplicemente UNO strumento di Che puo Essere utilizzato per cominciare imparare un assolo di venire utilizzare le tattiche di negoziazione in Fibonacci la VOSTRA STRATEGIA commerciale complessiva.
negoziazione Fibonacci Comporta Semplicemente misurando swing alti e bassi e Tentando di prevedere inversioni di Prezzo e continuazioni.
SE SEI Nuovo di zecca Alla negoziazione un'occhiata uno NB Tutti gli ingredienti Article qui i Titoli di Fibonacci ha spiegato , e non osano uscire Senza Scaricare il Manuale di Diritto qui ...




Fibonacci Master Kit
Free Download - INSERISCI il Tuo Nome e Indirizzo e-mail per Immediato il download. GRATIS Fibonacci Kit Masters.




Concetti di negoziazione Fibonacci puo diventare Complicata, La Storia opprimente e La Scienza Dietro SI puo ottenere e affascinante po also delle Nazioni Unite '. SE VUOI Conoscere le Teorie e La Scienza Dietro trading Fibonacci Concetti Che SONO sul Sito Sbagliato.
Se invece volete le ISTRUZIONI Passo su passo venire e possibile iniziare ad applicare i Principi di negoziazione utilizzando Fibonacci POI avete la arrivati.

Fibonacci Trading In Pratica

Fibonacci trading
Quando il Prezzo SI fa strada in OGNI Su Direzione o Giù ONU ritracciamento di Fibonacci Misure Suo Marchio Torna una colomba e la NATO.  Allora supponiamo di Prezzo 40,00 ha iniziato uno e POI un 50.  NB Tutti gli ingredienti e delle Nazioni Unite 10,00 spostarsi uno Destra? 
Beh, in Generale, DOPO UNA Mossa del Genere SI tende ad Essere di UNA Certa Presa di profitto Dai Commercianti.  La Gente Sta Andando Fuori di iniziare uno Vendere e incassare in in Movimento.
Mosse Queste e Prese di Beneficio SCENARI SONO cio Che fa sì Che Il Mercato muoversi Come uno su e Giù. In Generale, in dell'ONU Mercato Toro Movimento SI Grande Vedrà delle Nazioni Unite ONU su Periodo di ritracciamento di prendere profitto e quindi delle Nazioni Unite Nuovo Spinta Ancora Una Volta.
Il Mercato rialzista rimane finchè la presa di profitto, non soddisfano o superano il 100% di ritracciamento.
Ad Esempio UNA Mossa 10,00 Dollari alla Settimana Una, POI ritracciamento delle Nazioni Unite 5,00 Dollari il Prossimo e il ritracciamento del 50%.
Se il Prezzo SI su Muove 10,00 Dollari Di Nuovo quindi stiamo Facendo progressive rialzista. $ 40 a $ 50 E UN 10 Dollari Dollaro muoversi Come. Un pullback o ritracciamento a $ 45 E ONU ritracciamento del 50%. Una Nuova mossa del Dollaro $ 10 e delle Nazioni Unite Obiettivo di $ 55.
Così NEL Che tempo stiamo Facendo La Nostra Strada in Modo ONU CHE E antica Quanto IL TEMPO Stesso.
Questi Principi di negoziazione SONO chiamati ritracciamento di Fibonacci.
Also se il Prezzo facevano il 76% di ritracciamento stiamo Ancora Facendo progressive rialzista. Deboli progressive, ma rialzista Nessuno-la-di Menone.
In ONU forte Mercato Toro super ritracciamento delle Nazioni Unite appena il 23,6% e Comune Luogo delle Nazioni Unite.
Così SI Vede il Livello di ritracciamento si puo dire Molto Silla Forza del Mercato.
INFINE osta al di là delle Nazioni Unite di ritracciamento del 100% Si Chiama Estensione Fibonacci

fibonacci

Fu in quel luogo affascinante che dopo una lunga osservazione delle riproduzione delle armoniose opere d'arte e delle ingegnose macchine di Leonardo comprai un libricino dove un autore sconosciuto parlava di golden ratio...  da allora  iniziai a scoprire  le proporzioni 1,618 e 0, 618 .....
In futuro grazie ai  risparmi iniziarono i miei primi investimenti sui mercati azionari...ma per me non era una "tombola" c'era qualcosa di straordinario da scoprire...i movimenti del mercato avevano qualcosa che si ripeteva nel tempo...erano dei movimenti che in uptrend dopo un impulso rialzista tendevano ad avere un impulso ribassista con entità minore e viceversa in downtrend.
Era il lontano 1995 quando grazie al mio primo collegamento ad internet potevo confrontare le mie teorie su Fibonacci e il Trading col resto del mondo....scoprii subito che quanto avevo osservato era già stato studiato da un matematico Statunitense negli anni 20, Ralph Nelson Elliott che intuì e sviluppo la teoria delle onde basata sulla serie numerica di Leonardo Fibonacci....da quel momento si accrescono i miei studi e si moltiplicano le collaborazioni con Toptraders Italiani e d'Oltreoceano, collaboro spesso con realizzatori di software per sviluppare metodologie di Trading con i metodi di Fibonacci...scrivo newsletters e reports finanziari per note testate giornalistiche online...
Come detto nella biografia le proporzioni 1,618 e 0, 618 erano già note nell’antichità e ad esse si fa spesso riferimento come “rapporto aureo” o “divino” a significare che durante i millenni si radicò la convinzione che tale proporzione esprimesse qualche regola universale o legge di natura. Come se non bastasse, gli stessi risultati delle proporzioni moltiplicati tra di loro danno come risultato 1 (1,618 x 0, 618).
Forse non scopriremo mai  se per esistere in questo universo "tutto" deve rispettare  certe proporzioni  e se certe proporzioni sono fondamentali perchè questo universo esista.
Fatto sta che sia il gusto del bello, delle proporzioni  perfette e del funzionante, in natura si ripete e visto che anche noi esseri umani facciamo parte di questo mondo, siamo sottoposti alle stesse regole.
Fra le applicazioni pratiche dei rapporti espressi della precedente serie numerica, esiste quella legata alla valutazione dei ritracciamenti, o movimenti di correzione, che si verificano sui mercati finanziari.
In effetti i partecipanti al "gioco" dei mercati finanziari sono i computer guidati da software automatici e gli esseri umani, entrambi "condizionati" dalla proporzione divina.
 L’obiettivo delle mie ricerche era  la previsione dell’ipotetico punto di arrivo di una correzione che si sviluppava dopo un movimento direzionale.
Ormai siamo tutti d'accordo che i ritracciamenti più probabili dopo un movimento rialzista o ribassista siano riconducibili a rapporti derivati dalla serie di Fibonacci: 23,6%; 38,2%; 50% e 61,8% 76,4%
Da tale studio si evince che dopo un determinato movimento si verificherà un movimento opposto (pullback) con entità condizionata anche dal ritracciamento di Fibonacci
  
  Come detto in altre sezioni la serie di Fibonacci è la seguente: 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377,..le regole che ne conseguono sono le seguenti: la somma di due numeri qualsiasi adiacenti nella sequenza dà come risultato il numero successivo nella sequenza, ad esempio, 1+1=2; 1+2=3; 2+3=5; 3+5=8; dopo i primi numeri, il rapporto fra ogni numero e il numero successivo nella sequenza tende al rapporto 0,618. Ad esempio 21/34=0,6176; 34/55=0,6181; 55/89=0,6179; 89/144=0,6180; 144/233=0,6180 eccetera.dopo i primi numeri, il rapporto fra ogni numero e quello precedente nella sequenza tende al rapporto 1,618. Ad esempio 34/21=1,6190; 55/34=1,6176; 89/55=1,6181; 144/89=1,6179; 233/144=1,6180. Dopo i primi numeri, il rapporto fra ogni numero e il numero alternato successivo tende al rapporto 0,382. Ad esempio 21/55=0,3818; 34/89=0,3820; 55/144=0,3819; 89/233=0,3819; 144/377=0,3819. Dopo i primi numeri, il rapporto fra ogni numero e il numero alternato precedente nella sequenza tende al rapporto 2,618, es. 55/21=2,6190, 89/34=2,6176, 144/55=2,6181, 233/89=2,6179, 377/144=2,6180 eccetera.
Senza svelare quanto scoperto in anni di studio posso elencare in modo semplice e adatto anche ai neofiti come si utilizzano i ritracciamenti di Fibonacci sui mercati finanziari nel rapporto prezzo tempo.
I ritracciamenti di Fibonacci servono per determinare  livelli di supporto e di resistenza unitamente a obiettivi di prezzo. Essi sono basati su una linea  tracciata tra un massimo e un minimo relativi (o viceversa). Se il trend è al rialzo, i valori del ritracciamento scenderanno da 0% a 100%.
L'applicazione del  Se il trend è al ribasso, i valori del ritracciamento saliranno da 0% a 100%.
In corrispondenza dei valori dei rapporti di Fibonacci, si tracciano linee orizzontali, proiettate verso destra, indicanti livelli di probabile supporto o resistenza futuri. Di solito viene tracciata anche la linea corrispondente al 50%,che è il primo rapporto utile della sequenza numerica (1/2)
esempio pratico


Gli archi di Fibonacci
Gli archi possono essere tracciati sul grafico insieme ai ritracciamenti di Fibonacci, oppure singolarmente. Sono tracciati come arco di cerchio (o cerchio completo), centrati sull'ultimo picco o valle, e intersecando la trendline in corrispondenza dei livelli di ritracciamento di Fibonacci.

La logica dello strumento prevede che i prezzi tendano a reagire sia ai valori degli archi che a quelli dei ritracciamenti, proprio in funzione del ruolo di supporti o resistenze da questi assunto.
Gli Archi di Fibonacci vengono tracciati con centro in corrispondenza dell'ultimo minimo, e raggi corrispondenti ai livelli di Fibonacci. E' interessante notare il comportamento del prezzo in corrispondenza degli archi del 50% e 61.8%, che in questo caso funzionano come resistenze.