Altoparlante | Trascrizione |
| Luca | Ok, grazie a tutti per essere venuti ad ascoltare il mio discorso. Il mio nome è Lucas Beverlin. Sono uno statistico presso Intel. |
| E oggi parlerò dell'utilizzo di JMP per confrontare modelli di vari ambienti. |
| Ok, quindi attualmente JMP 15 Pro è l'ultimo e il migliore prodotto da JMP e se vuoi adattarlo al modello hanno diversi strumenti per farlo. |
| C'è la piattaforma del modello di adattamento. C'è la piattaforma neurale sulla piattaforma di partizione della rete neurale. Se vuoi alberi di classificazione e regressione. La piattaforma non lineare per la modellazione non lineare e ce ne sono molte altre. |
| Quindi all'interno di JMP 15 penso che sia uscito nel 12 o 13, ma questa piattaforma di confronto dei modelli è uno strumento molto ingegnoso che puoi utilizzare per confrontare |
| il modello si adatta a varie piattaforme all'interno di JMP. Quindi, se hai un albero e una rete neurale e non sei sicuro di quale sia la migliore. Ok, potresti passare avanti e indietro tra i due. Ma ora con questo, |
| hai tutto sullo stesso schermo. È molto semplice e veloce dire se è meglio di quello e così via. |
| Detto questo, JMP può adattarsi a molte cose, ma, ahimè, non può adattarsi a tutto. Quindi dai solo qualche idea su alcune cose che non possono andare bene. Quindi, ad esempio, |
| quelli che fanno molto apprendimento automatico e intelligenza artificiale potrebbero adattarsi a qualcosa come un codificatore automatico o una rete neurale convoluzionale che generalmente richiede molte funzioni di attivazione o sì, molti nodi di livelli nascosti, |
| altre funzioni di attivazione oltre a quelle offerte da JMP, quindi JMP non sarà in grado di fare molte di queste all'interno di JMP. |
| Un altro è qualcosa chiamato regressione dell’inseguimento della proiezione. Un altro è chiamato spline di regressione adattativa multivariata. Quindi ci sono alcune cose che purtroppo JMP non può fare. |
| R, Python e MATLAB. |
| Ce ne sono molti altri là fuori, |
| ma mi concentrerò su questi tre. Detto questo, le idee di cui parlerò qui, vuoi adattarle a C++ o Java o Rust o qualsiasi altro linguaggio |
| mi viene in mente, dovresti essere in grado di usarne molti. |
| Quindi possiamo utilizzare la piattaforma di confronto dei modelli, come ho detto, per confrontare anche altri software. Allora di cosa avrai bisogno? |
| Quindi le due cose più importanti di cui avrai bisogno sono le previsioni del modello provenienti da qualunque software utilizzi per adattarlo. |
| E in genere, quando eseguiamo l'adattamento del modello, in particolare con modelli più grandi, è possibile suddividere i dati in convalide di addestramento e/o set di test. |
| Avrai bisogno di qualcosa che indichi a tutto il software quale è l'addestramento, quale è la convalida, quale è il test, perché vorrai che siano coerenti quando confronti gli adattamenti. |
| OK, quindi il motivo principale per cui ho scelto R, Python e MATLAB su cui concentrarmi per questo discorso è che si scopre che JMP e il linguaggio di scripting possono effettivamente creare le proprie sessioni di R ed eseguire codice da esso. |
| Quindi questa immagine qui mostra molto rapidamente se volessi adattare un modello di regressione lineare a qualche output |
| Al set di dati sugli alloggi di Boston. Lavorerò molto di più con quel set di dati in seguito. |
| Ma se volessi adattare molto rapidamente un modello di regressione lineare in R e sputare i valori predittivi, puoi farlo. Ovviamente puoi farlo JMP. Ma giusto per dare un'idea molto semplice. |
| COSÌ, |
| una cosa da notare, quindi sto usando R 3.6.3 ma JMP può gestire qualsiasi cosa purché sia maggiore di 2.9. |
| E allo stesso modo, Python, puoi chiamare la tua sessione Python. Quindi qui l'immagine mostra che ho adattato la regressione lineare con Python. Non esaminerò tutte le righe di codice qui, ma avrai l'idea di base. |
| Ora, ovviamente, con Python bisogna stare un po' attenti perché è disponibile la versione più recente di Python 3.8.5. Ma se usi Anaconda per installare cose, JMP ha problemi a comunicare con esso quando è maggiore di 3.6, quindi |
| poiché sto usando 3.6.5 per questa dimostrazione. |
| Infine, possiamo anche creare la nostra sessione MATLAB. |
| Quindi qui sto usando MATLAB 2019b. Ma fondamentalmente, purché la tua versione MATLAB sia uscita negli ultimi sette o otto anni, dovrebbe funzionare perfettamente. |
| Ok, quindi come colleghiamo tutto insieme? Quindi, in realtà, c'è una specie di processo in quattro fasi che esamineremo qui. Quindi, prima di tutto, vogliamo adattare ogni modello. Quindi invieremo a ciascun software i dati e il set in cui risiede ciascuna osservazione. |
| Una volta adattati i modelli, vogliamo produrre tali adattamenti e le relative previsioni e aggiungerli a una tabella di dati che possa essere esaminata da JMP. |
| Quindi, ovviamente, il mio avvertimento è: assicurati di nominare le cose che puoi dire dove hai adattato il modello o come hai adattato il modello. Ho esempi di entrambi in arrivo. |
| Quindi, passaggio tre, a seconda del modello e potresti voler esaminare alcuni dati diagnostici del modello. Solo perché un modello si adatta... sembra adattarsi bene in base ai numeri, uno sguardo alla trama residua, ad esempio, e potresti scoprire molto rapidamente il |
| l'area di maggiore interesse non si adatta molto bene. |
| Oppure c'è qualcosa che non va con i residui e così via. Quindi mostreremo come produrre anche questo genere di cose. |
| E infine utilizzeremo la piattaforma di confronto dei modelli, davvero, per riunire tutto in un unico grande tavolo per confrontare i numeri, molto più facilmente invece di sfogliare avanti e indietro e indietro e indietro. |
| Ok, ora analizzeremo i passaggi un po' più in dettaglio. Quindi, per il primo passaggio in cui eseguiamo l'adattamento del modello, abbiamo essenzialmente due opzioni. Quindi, prima di tutto, possiamo dire a JMP tramite JSL di chiamare il software preferito. |
| Inviagli i dati e il codice per adattarlo. E quindi, in effetti, salterò fuori da tutto questo per un momento e farò esattamente questo. |
| Quindi vedi qui, ho un codice per chiamare effettivamente R. |
| E poi, una volta finito, chiamerò Python e una volta finito, chiamerò MATLAB e poi collegherò tutto insieme. Ora dirò di più sul codice tra poco, ma probabilmente ci vorranno tre o quattro minuti per eseguirlo. Quindi lo farò adesso. |
| E torneremo da lui quando saremo pronti. |
| Quindi la nostra altra opzione è creare un set di dati con la convalida. Bene, creiamo un set di dati con la colonna di convalida e/o una colonna di test, a seconda di quante |
| i set stavano suddividendo i nostri dati in. Siamo programmati per funzionare su qualsiasi software di cui abbiamo bisogno, ovviamente l'output di qualunque cosa ci serva. |
| Quindi ovviamente alcuni avvertimenti. Assicurati di... qualunque software tu stia utilizzando abbia effettivamente ciò di cui hai bisogno per adattarsi al modello. |
| Assicurati che il modello sia completo di adattamento prima di provare a confrontarlo con le cose. |
| Assicurarsi che il formato di output sia effettivamente leggibile da JMP. Per fortuna JMP può leggere parecchie cose, quindi questo non è il più grande dei quattro avvisi. |
| Ma come ti ho avvertito in precedenza, assicurati che le previsioni di ciascun modello corrispondano alle osservazioni corrette del set di dati originale. |
| E quindi torniamo alla questione se si tratta di addestramento, se si tratta di un'osservazione di addestramento, quando la inserisci in JMP, |
| è meglio che sia un'osservazione formativa quando la inserisci in qualunque software utilizzi. Se si tratta di convalida in JMP, si tratta di convalida altrove. È un test in JMP, verrà testato altrove. |
| Quindi assicurati che le cose corrispondano correttamente perché l'ultima cosa che vogliamo scoprire è guardare i set di test e dire: "Oh, questo si adatta molto meglio". Bene, è perché le osservazioni inserite avevano un peso diverso e non presentavano valori anomali reali. Quindi questo finisce per distorcere il tuo pensiero. COSÌ |
| un avvertimento, scusatemi, un avvertimento lì. |
| Va bene. Quindi, come ho accennato, ho un esempio che sto attualmente eseguendo in background. E quindi voglio fornire un po' di dettagli su quello che sto facendo. COSÌ |
| si scopre che adatterò le reti neurali in R, Python e MATLAB. Quindi, se voglio farlo, all'interno di R, devo installare due pacchetti in R oltre a qualsiasi installazione di base abbia e questo è il pacchetto Keras e il pacchetto Tensorflow. |
| numpy, panda e matplotlib. |
| Così insensato da fare alcuni calcoli abbastanza facilmente; panda, panda per elaborare i dati... qualche manipolazione dei dati; e matplotlib dovrebbe essere piuttosto semplice creare alcuni grafici. E poi in MATLAB utilizzo la casella degli strumenti di deep learning, indipendentemente dal fatto che tu abbia accesso a quello no. |
| Va bene. Quindi, secondo passaggio, vogliamo aggiungere previsioni alla tabella dati JMP. Pertanto, se utilizzi JMP per richiamare il software, puoi utilizzare il codice JSL per recuperare tali previsioni e aggiungerle in una tabella di dati in modo da poterle confrontare in seguito. |
| Quindi l'altro modo in cui puoi farlo è che il software funzioni da solo e salvi l'output, puoi dire rapidamente a JMP, ehi, vai a estrarre quel file di output e poi fai qualche manipolazione per portare le previsioni in qualunque tabella di dati tu abbia memorizzare i risultati. |
| Quindi ora possiamo leggere anche i tracciati diagnostici. In questo caso, ciò che generalmente farò è salvare i grafici diagnostici come file grafici. Quindi per me saranno file PNG. Ma ovviamente, qualunque cosa |
| grafica che puoi utilizzare. Ora JMP non può colpirli tutti sotto il sole, ma credo che PNG mappi i jpg e alcuni e loro... hanno i tuoi soliti coperti. |
| Quindi la seconda nota la uso per la piattaforma di confronto dei modelli, ma per aiutare a identificare cosa... quale modello si adatta e dove lo si adatta, |
| In genere consiglio di aggiungere la seguente proprietà per ogni colonna di previsione aggiunta. Quindi vediamo qui che stiamo inviando la tabella dati di interesse, questa proprietà chiamata previsione. |
| E quindi qui abbiamo qualunque cosa tu stia usando per prevedere le cose (ora qui in valore probabilmente non è la scelta migliore qui) ma |
| ma con questo creatore, questo mi dice, ehi, quale software ho utilizzato per creare effettivamente questo modello. E quindi qui ho usato R. Mostra R quindi potrebbe effettivamente adattarsi allo schermo. Python e MATLAB erano un po' troppo lunghi, ma possiamo inserire qui qualsiasi stringa vogliamo. |
| Li vedrai quando analizzerò il codice in modo un po' più dettagliato qui a breve. |
| Quindi, questo è utile perché in seguito inserirò anche più modelli in R. Quindi, se scelgo correttamente i nomi delle colonne e ne ho più di uno in cui R lo ha creato, so ancora quale modello sto effettivamente guardando. |
| Ok, ecco come appare la tipica finestra di dialogo di confronto dei modelli. |
| Quindi una cosa che noterò è che, quindi questo è più o meno come apparirebbe se facessi un punta e clicca alla fine di tutto il montaggio del modello. Quindi puoi vedere che ho diversi predittori. Quindi ho reti neurali per MATLAB, Python e R. |
| Varie forme di previsione; Usavo JMP per adattare alcune cose. |
| Ora, spesso ciò che le persone fanno è inserire questa colonna di convalida come gruppo, |
| in modo da raggruppare la convalida e il test della formazione. In realtà l'output mi piace un po' di più quando lo inserisco nell'istruzione By qui. Quindi lo mostrerò qui un po' più tardi. Ma puoi metterlo oppure |
| ma mi piace l'output in questo modo, meglio il lungo e il breve. |
| Quindi questo è il motivo principale per cui ora posso vedere chiaramente che questi sono tutti gli allenamenti, |
| queste sono tutte le convalide (non dovrebbero essere viste dalle intestazioni) e questi sono tutti i test. |
| Se usi la convalida come variabile di gruppo, otterrai una grande tabella con 21 voci al suo interno. Ora ci sarà una colonna in più. Dice test di convalida dell'addestramento o, nel mio caso, sarà 012 ma |
| in questo modo con le parole, non devo pensare tanto. Non devo spiegare a nessuno cosa significa 012 e così via. Ecco perché ho fatto la scelta che ho fatto. |
| Ok, quindi nell'esempio che analizzerò qui, utilizzerò il classico set di dati sugli alloggi di Boston. Ora questo è incluso in JMP. Ecco perché non l'ho incluso come file nella mia presentazione perché se hai JMP, lo hai già. |
| Quindi Harrison e Rubinfeld avevano diversi predittori del valore medio della casa, cose come il tasso di criminalità pro capite, la proporzione di acri commerciali non al dettaglio per città, |
| numero medio di stanze in qualunque cosa tu stia cercando di acquistare, rapporto alunni/insegnanti per città (quindi se ci sono molti insegnanti e non così tanti studenti ciò significa generalmente che una migliore istruzione è ciò che molte persone |
| trovato) e molti altri. Non proverò davvero ad esaminarli tutti e 13 qui. |
| Ok, lasciami dare un po' di informazioni sui modelli che ho guardato qui. E poi approfondirò il codice JSL e come inserirò il tutto. |
| Quindi alcuni dei modelli, ho guardato. Quindi, prima di tutto, il modello di regressione lineare per eccellenza. Quindi qui vedi solo una semplice regressione lineare. Ho semplicemente adattato il valore mediano a, a quanto pare, in base all'aliquota fiscale. |
| Ma ovviamente utilizzerò una regressione lineare multipla e le userò tutte. |
| COSÌ, |
| Ma con 13 diversi predittori, e sapendo che alcuni di essi potrebbero essere correlati tra loro, ho deciso che forse valeva la pena esaminare alcuni altri tipi di regressione. |
| Uno di questi è qualcosa chiamato regressione del ponte. Quindi in realtà tutto ciò che è è una regressione lineare con essenzialmente un vincolo aggiuntivo che |
| i valori al quadrato dei miei parametri non possono essere maggiori di una costante. |
| Posso... a quanto pare posso effettivamente riscriverlo come un problema di ottimizzazione in cui un valore di lambda corrisponde a un valore di C. |
| E quindi sto solo cercando di minimizzare questo con questo termine di penalità extra, in contrasto con i tipici minimi quadrati che sei abituato a vedere. |
| Ora, questo è chiamato metodo di contrazione perché ovviamente man mano che lo riduco sempre di più, spingerà tutti questi elementi sempre più vicini allo zero. Quindi, ovviamente, è necessario riflettere su quanto restrittivo voglio che sia. |
| Ora, con la contrazione, spingeremo tutti lentamente verso lo zero. Ma con un altro tipo di termine di penalità, posso effettivamente eliminare del tutto alcuni termini. |
| E posso usare qualcosa chiamato lazo. E quindi il limite qui è, okay, invece delle stime dei parametri al quadrato, prenderò semplicemente la somma del valore assoluto di tali stime dei parametri. |
| E da ciò risulta che ciò che realmente accadrà è che quelli che sono molto deboli in realtà vedranno le loro stime dei parametri impostate a zero, il che in un certo senso funge da |
| eliminazione, se vuoi, dei termini non importanti. |
| Quindi, per dare un'idea di cosa stanno facendo la regressione del lazo e della cresta. Quindi, per la regressione della cresta, il cerchio qui rappresenta il termine di penalità. |
| E qui stiamo guardando lo spazio dei parametri. E quindi le vere stime dei minimi quadrati sarebbero qui. Quindi non ci arriviamo del tutto, perché abbiamo questo vincolo aggiuntivo. |
| Quindi alla fine troviamo dove... dove otteniamo il valore minimo che tocca il cerchio, in pratica. E così è, queste sarebbero le nostre stime dei parametri di regressione della cresta. |
| Per il lazo, disegno simile, ma ora puoi vedere con il valore assoluto, questo è più un diamante che un cerchio. Ora notate, queste sono due dimensioni, ovviamente, entreremo nelle ipersfere e in tutte quelle forme. |
| Ma potete vedere qui, notare che tocca proprio la punta del diamante. E quindi in questo caso beta uno è in realtà zero. Ecco come elimina i termini. |
| Ok, un'altra cosa che vedremo è quello che viene chiamato albero di regressione. Ora JMP utilizza le piattaforme di partizione per eseguire queste operazioni. Quindi, solo per dare una rapida dimostrazione di ciò che questo mostra, ok, quindi ho tutti i miei dati. |
| E quindi la prima domanda che mi farò è: quante stanze ci sono nell'abitazione, e so che non posso avere 0,943 di una stanza, quindi in pratica, |
| Ho sei stanze o meno. Quindi scendi da questa parte dell'albero, non scendiamo da questa parte dell'albero. Ora, se ho sette o più stanze, questo mi dice immediatamente che predirò la mia mediana |
| il valore sarà 37. Ricorda che sono decine di migliaia di dollari, quindi guadagna $ 370.000. |
| Se è inferiore a sette, la domanda successiva che ho posto è: quanto è grande lstat? |
| Quindi se è maggiore o uguale a 14,43, guarderò questo nodo e all'improvviso il mio alloggio medio stima circa 150.000 e se vengo qui, sarà circa 233.000. |
| Quindi ciò che fanno veramente gli alberi di regressione è partizionare lo spazio di input in aree diverse. E stiamo dando la stessa previsione a ogni valore all'interno di quell'area. |
| Quindi puoi vedere qui che ho partizionato... ora in questo caso, ne sto prendendo uno bidimensionale perché è più facile da disegnare... |
| e quindi puoi vedere questo albero qui, dove guardo per la prima volta x1. Ora guarda x2 qui e fai un'altra domanda su x1 e fai un'altra domanda su x2, ed è così che finisco per partizionare lo spazio di input. |
| Ora ognuno di questi cinque avrà un valore di previsione. E questo è essenzialmente ciò che sembra. Lo guardo dall'alto. Otterrò esattamente questo. Ma puoi vedere qui che il |
| la previsione è leggermente diversa a seconda di quale delle cinque aree è giusta. |
| Ora, non entrerò troppo nei dettagli su come adattare esattamente uno di questi, ma |
| James, Witten, Tibshirani e Friedman danno un po'; Leo ??? ha scritto il libro fondamentale su di esso in modo che tu possa dare un'occhiata lì. |
| Quindi, ora parlerò delle reti neurali, che sono molto utilizzate nell'apprendimento automatico e quant'altro al giorno d'oggi. E quindi questo dà un'idea di come appare una rete neurale. Quindi in questo caso l'immagine utilizza solo cinque e 13 input quando li passa |
| a questi...questo strato nascosto. E ognuno di questi si trasforma tramite una funzione di attivazione. |
| E per ciascuna di queste funzioni di attivazione, ottieni un output e noi lo utilizzeremo... |
| spesso utilizzeremo semplicemente una regressione lineare di questi output per prevedere il valore mediano. |
| Ok, allora |
| in realtà, le reti neurali sono modelli non lineari, in fin dei conti, e in realtà si chiamano reti neurali perché la rappresentazione generalmente è il modo in cui vedevamo i neuroni come funzionano all'interno del cervello umano. |
| Quindi ogni input può essere passato ai nodi in un livello nascosto. Nel livello nascosto i tuoi input vengono spinti attraverso una funzione di attivazione e alcuni output vengono calcolati e ciascun output può essere passato a un nodo in un altro livello nascosto o essere un output della rete. |
| Ora in JMP sono consentiti solo due livelli nascosti. |
| A dire il vero, per quanto riguarda la creazione di una rete neurale, non c'è nulla che dica che non se ne possano avere 20 per tutto questo |
| siamo preoccupati adesso. A dire il vero, c'è qualche teoria statistica che suggerisce che, ehi, possiamo approssimare qualsiasi funzione continua, |
| date alcune condizioni al contorno, con due strati nascosti. Quindi è probabilmente questo il motivo per cui JMP ha preso la decisione di farlo. |
| lineare, tangente iperbolica e base radiale gaussiana. Quindi, in effetti, |
| su questi nodi qui, nota la piccola curva qui. Credo che sia per la funzione tangente iperbolica; lineare sarà una linea retta che sale; e la base radiale gaussiana, credo, assomiglierà più a una curva normale. |
| Questa è la piattaforma di rete neurale. Quindi l'ultimo che vedremo è qualcosa chiamato regressione dell'inseguimento della proiezione. Volevo estrarre qualcosa che JMP semplicemente non può fare, solo per dare un esempio qui. |
| Ehm, quindi la regressione dell'inseguimento della proiezione era un modello originariamente proposto da Jerome Friedman e Steutzle a Stanford. Il loro modello prende la previsione... fa previsioni nella forma y è uguale alla somma di beta i, f sub i e una trasformazione lineare dei tuoi input. |
| Quindi in realtà questo è in qualche modo analogo a una rete neurale. Hai uno strato nascosto qui con k nodi e ciascuno con funzione di attivazione fi |
| l. Risulta che con la regressione di proiezione, in realtà stimeremo anche questi f sub i. |
| Generalmente saranno una sorta di adattamento più liscio o spline. Tipicamente le f sub i sono chiamate funzioni di cresta. Ora abbiamo alfa, beta e F su cui dobbiamo ottimizzare. Quindi generalmente viene eseguito un adattamento scenico. Non entrerò troppo nei dettagli a questo punto. |
| Ok, ho esaminato tutti i miei modelli. |
| Quindi ora mostrerò alcuni output e spero che le cose vadano bene. Quindi una cosa che noterò prima di entrare in JMP è questa |
| è davvero difficile impostare i seed per le reti neurali in R, Python per Keras. Quindi tieni presente che se prendi il mio codice e lo esegui, probabilmente non otterrai esattamente quello che ho ottenuto, ma dovrebbe essere abbastanza vicino. Quindi, detto questo, |
| vediamo cosa abbiamo qui. Quindi questo è stato l'output che ho ottenuto. Ora, purtroppo, le cose non sembrano aver funzionato alla perfezione. |
| COSÌ, |
| Luca | cosa ho qui? Quindi ho la mia formazione, la mia convalida e il mio test. E così vediamo subito che uno di questi modelli non si adattava molto bene. Sfortunatamente, alla rete neurale all'interno di R è successo qualcosa di orribile. |
| Deve aver preso un brutto punto nello spazio di input da cui iniziare e quant'altro. E quindi semplicemente non si adattava a un modello molto buono. |
| Quindi, sfortunatamente, i parametri iniziali con modelli non lineari sono importanti; in alcuni casi, ne veniamo morsi. |
| Ma se diamo un'occhiata a tutto il resto, tutto il resto sembra adattarsi abbastanza bene. Ora, su ciò che va abbastanza bene, possiamo discuterne, ma vedo i quadrati R, uno sopra 0,5. Vedo la media root |
| gli errori al quadrato qui sono circa cinque o giù di lì, e anche i nostri errori assoluti medi sono nell'intervallo tre. Ora, per quanto riguarda l'addestramento, sembra che le regressioni dell'inseguimento della proiezione abbiano funzionato meglio. |
| Se vengo al set di dati di convalida, sembra ancora R |
| il perseguimento della proiezione ha dato risultati migliori. Ma se guardiamo il set di dati del test, all'improvviso, no, la regressione dell'inseguimento della proiezione è stata la seconda, supponendo che ignoreremo la rete neurale di R, la seconda peggiore. |
| Spesso in un framework come questo, esamineremo il set di dati di test più da vicino perché non è stato utilizzato in alcun modo, forma o forma per determinare l'adattamento del modello. |
| E in base a ciò vediamo che sembra |
| la regressione della cresta di JMP si adatta meglio. |
| Possiamo vedere quassù, R al quadrato era 0,71 qui prima era circa 0,73, e circa 0,73 qui, quindi possiamo vedere che si adatta costantemente |
| la stessa cosa attraverso tutti e tre i set di dati. Quindi, se fossi costretto a prendere una decisione, basandomi solo su ciò che vedo in questo momento, probabilmente la seguirei |
| la regressione della cresta. Detto questo, abbiamo un sacco di strumenti diagnostici e quant'altro quaggiù. Quindi, se voglio vedere cosa è successo con quella rete neurale di R, |
| Riesco a vedere molto rapidamente che è successo qualcosa a pochi passi da lì. Come puoi vedere, sta facendo un pessimo lavoro di adattamento perché si prevede che praticamente tutto sarà di 220 o migliaia. |
| Quindi sappiamo che qualcosa è andato storto durante l'adattamento di questo. |
| Quindi abbiamo visto che la regressione della cresta sembrava la migliore. Quindi diamo un'occhiata a cosa sputa fuori. Quindi mostrerò tra un attimo il mio codice JSL molto velocemente |
| mostra come ho fatto tutto questo ma, um, possiamo vedere qui le stime dei parametri dalla regressione della cresta. Possiamo vedere i grafici diagnostici della cresta, quindi le cose non si sono ridotte troppo rispetto alle stime originali. |
| Puoi vedere dai test di convalida con il registro come se non fosse successo niente. |
| E qui a destra abbiamo i nostri appezzamenti essenzialmente residui. Questi sono effettivi rispetto a quelli previsti. |
| Quindi puoi vedere dalla formazione, sembra che ce ne fossero alcuni piuttosto costosi che non sono stati previsti molto bene. Ne vediamo meno qui che nel set di prova, non sembra che abbiamo avuto troppi problemi. Abbiamo un paio di punti qui un po' strani, ma possiamo vederli in generale |
| quando siamo in case a basso prezzo, si adatta abbastanza bene a tutti e tre i set di dati. Ancora una volta, potremmo chiederci cosa è successo a questi ma, |
| al momento, questo sembra essere il migliore del gruppo. Quindi possiamo vedere dagli altri. |
| Vedere qui. Quindi esamineremo MATLAB per un momento. |
| Quindi puoi vedere anche la convalida del test di formazione qui. Quindi eccoci qui... MATLAB sputa qualcosa di diagnostico e puoi vedere che ci sono volute alcune epoche per finirlo. |
| Ma per fortuna MATLAB funziona abbastanza velocemente, come possiamo vedere. |
| E poi l'effettivo previsto qui. |
| Possiamo vedere tutto questo. |
| Ok, ora mi prenderò qualche minuto per dare un'occhiata al codice. |
| Quindi, ovviamente, alcune note, assicurati che le cose siano installate in modo da poter effettivamente eseguire tutto questo perché in caso contrario, JMP fallirà miseramente, non sputerà previsioni e quindi fallirà perché non riesce a trovare le previsioni. |
| Pertanto JMP ha la capacità di creare una colonna di convalida con codice. Quindi ho scelto 60 20 20. Ho scelto quel seme casuale qui in modo che tu possa utilizzare gli stessi set di test di convalida dell'addestramento che utilizzo io. |
| Quindi in realtà, per il momento, quello che finisco per fare è salvare ciò che sono formazione, convalida e test. In realtà eliminerò quella colonna per un po'. |
| Il motivo per cui lo faccio qui è perché invio il set di dati a R, Python e MATLAB ed è più semplice codificare quando tutto ciò che contiene è l'output o tutti gli input. |
| Quindi non volevo una colonna di convalida che non lo fosse e quindi diventa un po' più difficile farlo. Alla fine ho inviato il set di dati, |
| Ho inviato le righe di training, validazione e test, quindi chiamo il codice R per eseguirlo. Ora puoi davvero |
| inserisci qui il codice R stesso. Ho scelto di scrivere solo una riga qui in modo da non dover scorrere all'infinito. Ma non c'è niente che ti fermi. Se sono solo poche righe di codice, come quello che hai visto prima nella presentazione, lo incollerei semplicemente qui. |
| In modo che, una volta terminato, si scopre... questo codice viene fuori |
| una foto della diagnosi. Abbiamo visto che si è fermato dopo sei o sette iterazioni, diciamo che è uscito. |
| E si adatta anche alla regressione della cresta in questo script, quindi otteniamo due immagini. Quindi sputo fuori anche quello e lo salvo e il riquadro del contorno. Ora, tutti questi messi insieme alla fine di tutto il codice. |
| Poi ottengo l'output e lo aggiungerò alla tabella dati qui tra poco. |
| Ok, quindi fornisco un po' di codice qui. Supponiamo che tu abbia 6 milioni di osservazioni e che ci vorranno 24 ore per adattare effettivamente il modello, probabilmente non vorrai eseguirlo all'interno di JMP. |
| Quindi, come piccolo codice che potresti fare da qui, puoi dire, ehi, lo sono |
| okay, aprirò semplicemente la tabella dati che mi interessa. Nel frattempo dirò a R di eseguirlo da qualche altra parte, e una volta che il mio sistema, quando mi darà il via libera che ehi, è finito, posso dire, okay, beh, apri l'output da quello e porta dentro |
| la mia tabella dati. Quindi questo sarebbe un modo in cui potresti fare qualcosa di simile. E ovviamente vuoi salvare quel file di immagine da qualche parte e usare anche questo codice. Ma questo sarà esattamente lo stesso codice. |
| Ok, quindi per Python sarà molto simile. Gli passerò queste cose. Esegui del codice Python, sputa il grafico diagnostico e sputa le previsioni. |
| E do del codice Python, come potete vedere, è molto, molto simile a quello che abbiamo fatto con JMP. In questo caso aprirò semplicemente un file CSV. Copia la colonna e chiudila, perché non mi serve più. |
| E poi MATLAB di nuovo lo stesso identico gioco. Asset cose, esegui lo script MATLAB. Prendo il file PNG che ho sputato fuori di qui. Salvalo dove mi serve, salva le previsioni. E se hai bisogno, prendilo |
| invece di eseguirlo da qui, un po' di codice di esempio lo farà. |
| OK, quindi ora che ho finito di chiamare R, Python e Matlab, riporto le mie colonne di convalida in modo che JMP possa usarle. Quindi da quando ricordo quale è quale. |
| Pertanto, per impostazione predefinita, JMP esamina i valori all'interno della colonna di convalida che utilizzeremo. Il valore più piccolo è la formazione, il successivo più grande è la convalida, il più grande è il test. Ora se esegui la convalida incrociata di K fold, gli dirà quale piega è. Quindi corso però 012345678 e così via. |
| Quindi crea questo. A mia volta ho anche creato questo qui, quindi in questo modo invece di 012, in realtà dirà training, validation e test nel mio output, quindi è un po' più chiaro |
| capire. Quindi, se mostro a qualcun altro che non ha mai eseguito JMP prima, non saprà cosa significa 012, ma dovrebbe sapere che sono formazione, convalida e test. |
| OK, ora inizio ad aggiungere le previsioni alla mia tabella dati. Ehm, ecco la proprietà set a cui ho accennato prima nel mio discorso. |
| Quindi MATLAB del mio creatore, ho dato il nome della colonna quindi, ehi, so che è la previsione della rete neurale per MATLAB. Quindi potrei non aver necessariamente bisogno del creatore, ma nel caso fossi un po' sciatto nel nominare le cose |
| Mi dispiace. |
| Quindi possiamo ottenere tutta la regressione dell'inseguimento della proiezione, le reti neurali e quant'altro. |
| Poi ho anche notato che, ehi, ho inserito la regressione della cresta, il lazo e la regressione lineare in JMP. |
| Quindi ho fatto tutto questo qui. Quindi qui faccio il mio modello di adattamento, la mia regressione generalizzata. Butta via tutti questi sputi. |
| Sve le mie formule di previsione. |
| Traccia il mio rendimento effettivo rispetto a quello previsto per il mio rendimento completo alla fine. |
| E adatterò la mia rete neurale. Posso dire la colonna di convalida. Trasferisco le mie covariate, in genere le reti neurali tendono ad adattarsi un po' meglio quando ridimensioniamo le cose attorno allo zero rispetto a qualunque sia l'output di solito. |
| Quindi il mio primo livello nascosto ha tre nodi. Il mio secondo livello nascosto ha due nodi. Qui sono entrambe funzioni di attivazione lineare. Risulta che per i tre precedenti utilizzo la funzione di attivazione delle unità lineari limitate in modo leggermente diverso, |
| ma ho scoperto che sembrano adattarsi più o meno allo stesso modo a prescindere. |
| 5. Ciò significa che, ehi, proverò cinque diversi set di valori iniziali, manterrò quello che funziona meglio. |
| Come puoi vedere dal mio codice, probabilmente avrei dovuto farlo con R. Ha fatto una specie di quattro loop, ne ha fatti diversi, sputa fuori quello che funziona meglio. Quindi per il lavoro futuro, quello sarebbe un posto in cui andrei. |
| Quindi salvo quella roba e ora sono pronto per il confronto dei modelli. Quindi ora inserisco tutte quelle nuove colonne nel confronto dei modelli. |
| Scorri un po'. Quindi qui sto facendo la convalida, come ho accennato prima. |
| E quindi, infine, sto semplicemente scrivendo un po' di codice per farlo sembrare esattamente come voglio che sia. |
| Quindi ricevo queste caselle di contorno, solo per dire diagnostica di addestramento, diagnostica di convalida, diagnosi di test, invece delle solite cose che dice JMP. |
| Prenderò questi grafici diagnostici. |
| Ora qui sto solo dicendo che voglio solo una parte degli output per afferrare una soluzione a questo. |
| Realizzerò alcuni grafici residui molto velocemente perché non tutti li sputano immediatamente, quindi in particolare quelli di MATLAB, Python e R. |
| Imposta quei titoli e poi qui creo semplicemente il grande vecchio tavolo o il grande vecchio dialogo. |
| E poi scrivo tutto sul diario. |
| In modo che sia bello e pulito. Chiudi un po' di roba, così non devo preoccuparmi di niente. E quello che ho fatto qui alla fine è quello che volevo che accadesse quando apro uno di questi, |
| tutto il resto al di sotto è immediatamente aperto anziché |
| dover fare clic su sei o sette cose diverse. Puoi vedere, devo cliccare qui e qui e |
| Qui ce ne sono altri tre. Ne immagino uno in più. Scusa. Ma in questo modo non devo cliccare su nessuno di questi, si aprono automaticamente. |
| Ecco cosa fa l'ultimo pezzo di codice. |
| Va bene. |
| Luca | Quindi è semplicemente diverso produrlo ed eseguirlo dal vivo. Ma è qui che può anche apparire. |
| Quindi, come ho già detto, nel codice, hai visto lì, hai visto qualcos'altro che è quello che abbiamo visto. |
| Richard |
| Luca | No. Quindi, per concludere, la piattaforma di confronto dei modelli è davvero uno strumento molto utile per confrontare la capacità predittiva di più modelli in un unico posto. Non è necessario tagliare avanti e indietro tra le varie cose. Puoi semplicemente guardare tutto proprio di fronte a te. |
| La flessibilità può essere utilizzata anche per adattare modelli che non erano adatti a JMP o per confrontare modelli che non erano nemmeno adatti a JMP. E così |
| con questo, se dobbiamo adattare modelli molto grandi che richiedono molto tempo per adattarsi, possiamo dire loro di adattarsi. Inserisci tutto in JMP e guarda molto facilmente tutti i risultati per provare a determinare i passaggi successivi. |
| E con questo, grazie per il tuo tempo. |