Discussione sull’articolo "Le foreste casuali prevedono le tendenze" - pagina 11

 
CyberCortex:


Mi occupo di cose molto specifiche, quindi non sono propenso a discutere di cose "in generale".

Quindi, più specificamente.

Ci sono circa 140 pacchetti per l'apprendimento automatico nella shell di caret - nel mio lavoro uso due pacchetti per le foreste di alberi casuali e un pacchetto per le macchine vettoriali di supporto (SVM). Come si può notare, non sono in grado di generalizzare gli strumenti di apprendimento automatico disponibili in R. Inoltre, non sono in grado di parlare di strumenti di apprendimento automatico.

Inoltre.

Questo è un ramo che utilizza la shell molto limitata di Rattle, di cui ho usato solo il pacchetto randomforest in questo articolo.

Inoltre.

Di questo pacchetto ho usato solo una parte delle funzioni in questo articolo.

Inoltre commenterò il vostro post usando solo queste limitazioni, ma posso mettere il codice del programma e i risultati del suo utilizzo sotto le mie parole.

Quindi.

1. "Tutte le serie finanziarie sono cosiddette serie temporali, in cui l'ordine dei valori è importante". - Nessuno lo nega e questo ordine non viene meno, anche se si tratta di una serie temporale. Voi, dopo aver addestrato il modello sui prezzi P1, P2, P3...Pn, non cambiate il loro ordine quando fate i test sui Fuori Campione o quando li utilizzate effettivamente.

Questo non è assolutamente coerente con i pacchetti specificati. È possibile implementare la vostra osservazione all'interno di altri pacchetti, ma sarebbe un codice molto più complesso. Il codice utilizzato nell'articolo (che è l'approccio più comune negli algoritmi di apprendimento automatico) è il seguente:

Il campione iniziale (dataset) viene suddiviso in tre parti: train (70%), test (15%), validate (15). L'algoritmo di suddivisione è il seguente: ad esempio, per l'addestramento, il 70% delle righe del dataset originale viene selezionato in modo casuale anziché sequenziale. Dal restante 30%, un altro 15% viene selezionato in modo casuale. È chiaro che anche il restante 15% è una sequenza casuale di righe. Non c'è alcun dubbio sul rispetto della sequenza delle barre.

Ma non è tutto.

L'addestramento sul train set utilizza solo una parte dei dati (circa il 66%). La parte restante dei dati è la stima del fuori campione (OOS). Cioè, le barre su cui è stato calcolato l'OOV erano diverse, ma sono state mescolate con le barre su cui è stato eseguito l'addestramento. La carta fornisce questa stima e dà sempre le migliori prestazioni.

Poi in rattle si può ottenere una stima del modello addestrato su altri due set di dati. Confrontando TRE stime, si possono trarre conclusioni.

Ancora una volta, l'addestramento di modelli su serie temporali richiede uno sforzo particolare. Se si vuole utilizzare rattle, la variabile target e i predittori corrispondenti devono consentire un ordinamento casuale delle barre nell'addestramento e nel test.

2. Sono d'accordo con te su una cosa: se l'input è costituito al 100% da predittori spazzatura, otterremo il 100% di spazzatura nell'output. Questo è ovvio e nessuno lo mette in dubbio. Dico solo che ci sono algoritmi in cui non è importante eliminare i dati, perché danno buoni risultati su Out Of Samples con qualsiasi quantità di dati spazzatura diversa dal 100%, perché i dati spazzatura non vengono usati di fatto. È inoltre importante distinguere tra gli algoritmi per i quali la riduzione della dimensionalità dei dati è fondamentale, come l'analisi delle componenti principali o gli autoencoder, e gli algoritmi che sono insensibili alla dimensionalità dei dati.

Non lo sono. Randomforest ha un algoritmo integrato per determinare la significatività dei predittori. Questo algoritmo è completamente inutile se tra i predittori c'è della spazzatura. Lo stesso pacchetto randomforest ha una funzione aggiuntiva per pre-selezionare i predittori spazzatura, ma non è disponibile in rattle.

"Nel mercato azionario, la ricerca sulla relazione tra cause economiche e direzione del movimento è comune, ma nulla di tutto ciò si applica agli intervalli intraday". - Invece sì, e si applica a intervalli intraday, come la pubblicazione dei Non-Farm Payrolls.

Non lo so, non sono a conoscenza di questa risorsa. Ma conosco bene l'economia. E posso affermare con sicurezza che i dati orari di Gazprom non dipendono da alcun dato economico di altre aziende. Non ci sono domande sui risultati del mese.

3. ovviamente la capisco, ognuno guadagna come sa, ma lei ha mai implementato personalmente qualche algoritmo di machine learning? Sono convinto che per capire come funziona un algoritmo, bisogna scriverlo da soli da zero. Credetemi, in questo caso scoprirete cose che non sono scritte nei libri. E anche elementi apparentemente ovvi che prima sembravano facili, in realtà funzionano in modo diverso da come si pensava:)

Una cosa è fare mercs e un'altra è guidarli. Io preferisco guidare, ma ognuno fa la sua scelta.

PS.

Ho scritto un libro che contiene risposte più approfondite alle domande che avete posto.

PSPS

La mia esperienza personale dimostra che la maggior parte del tempo, fino al 70%, è dedicata alla selezione dei predittori - un lavoro noioso e tedioso. Per vendere il libro si è formato un collettivo - nessuno riesce a fare una selezione veloce ed efficace dei predittori, che non generi modelli troppo addestrati. E la maggior parte dei lettori ha già superato il libro e utilizza strumenti migliori per questo lavoro.

Con l'apprezzamento per il vostro significativo interesse nel thread.

 
faa1947:


Grazie per la risposta dettagliata.

Vorrei però chiederle di chiarire alcuni punti.

Innanzitutto lei ha scritto sopra che l'esempio del mio programma che lavora su dati medici è "illustrativo" e ha fatto riferimento al fatto che le serie temporali hanno una sequenza rigorosa.

"Tutte le serie finanziarie sono cosiddette serie temporali, in cui l'ordine dei valori è importante".

E poi scrive che in Random Forest, che lei usa:"Non si può parlare di aderenza alla sequenza delle barre".

E mi permetta di chiederle: come fa Random Forest a lavorare sulle serie temporali se l'algoritmo utilizza inizialmente il metodo del sottospazio casuale e rimescola queste serie temporali?

"Ancora una volta, l'apprendimento di modelli su serie temporali richiede uno sforzo particolare".- allora siamo di nuovo al punto di partenza. Quindi, perché perdere tempo con questi algoritmi se è necessario uno sforzo particolare per farli funzionare sulle serie temporali? Non stiamo parlando da un punto di vista accademico nel contesto della ricerca universitaria, dove questo lavoro è incoraggiato, ma da un punto di vista pratico.

"Posso affermare con sicurezza che il sentiment di Gazprom è indipendente da qualsiasi dato economico su altre aziende".- Questo significa che le azioni Gazprom, a intervalli intraday, non sono influenzate in alcun modo dall'indice RTS, che comprende Gazprom e altre società?

"Una cosa è fare una Mercedes e un'altra è guidarla. Io preferisco guidare, ma ognuno fa la sua scelta. "In gergo sofistico questa si chiama digressione dalla tesi originale:) Io parlavo di algoritmi e della loro realizzazione, e tu impercettibilmente hai avanzato una tesi sulle automobili, che è esteriormente collegata alla tesi iniziale, ma non identica ad essa. Credo che ci sia un "piccolo" divario tra algoritmi e automobili. Non ci faccia caso, è solo che mi piace notare queste particolarità:)

Riassumendo: ciò che scrivi specificamente su Rattle e Random Forest è molto probabilmente pertinente alla realtà e tu sei competente in materia.

Ma una domanda è ancora aperta: perché una persona, potendo scegliere tra due algoritmi di pari qualità (il primo dei quali funziona perfettamente bene sulle serie temporali senza particolari sforzi e competenze, e il secondo - con essi), dovrebbe fare una scelta a favore del secondo? E sarà ottimale in questo caso?

 
joo:
Non sono riuscito a superare questa frase. Rispetto!
Grazie:)
 
CyberCortex:


Ma una domanda è ancora aperta: perché una persona, potendo scegliere tra due algoritmi di qualità di classificazione equivalente (il primo dei quali funziona perfettamente bene sulle serie temporali senza particolari sforzi e competenze, e il secondo - con tali), dovrebbe fare una scelta a favore del secondo? E sarà ottimale in questo caso?

Strumenti diversi risolvono problemi diversi, che a loro volta sono determinati dal materiale disponibile.

Il sonaglio è un ottimo strumento per testare rapidamente un'idea. Ma sarà piuttosto difficile costruire un modello funzionante con esso.

È possibile approfondire rattle e ricavarne un registro di accessi pronti come parte del pacchetto randomforest. Se la vostra variabile target è, ad esempio, la previsione di incrementi di attività piuttosto che di trend, e siete riusciti a scegliere dei predittori per questo, allora randomforest sarà molto utile. Se volete prevedere le tendenze, dovrete dividere manualmente il campione in pezzi, preservando la sequenza, cosa difficile (anche se possibile) in rattle e lavorare direttamente nel pacchetto randomforest, che non impone alcuna restrizione all'algoritmo di formazione del campione di input. Esiste un insieme abbastanza esteso di strumenti per la generazione di campioni da testare. Si tratta di pacchetti separati.

E così via. La conclusione generale è che non esiste uno strumento "ottimale".

Ciascuno dei pacchetti presenta molte sottigliezze che risolvono determinati problemi nei dati grezzi. In generale, il processo non è nemmeno molto semplice.

PS. Quando ho scritto di Gazprom, mi riferivo al rapporto tra quotazioni e valori di tipo profit. E l'indice è aritmetico, lo stesso tacchino..... Ma questo è un altro problema... Anche se l'uso del machine learning nel mercato azionario è più promettente che nel forex. Come mi sembra.

 
faa1947:

Strumenti diversi risolvono problemi diversi, che a loro volta sono determinati dal materiale disponibile.

Il sonaglio è un ottimo strumento per testare rapidamente un'idea. Ma è difficile costruire un modello funzionante con esso.

È possibile approfondire rattle e ricavarne un registro di accessi pronti come parte del pacchetto randomforest. Se la vostra variabile target è, ad esempio, la previsione di incrementi di attività piuttosto che di tendenze, e siete riusciti a trovare predittori per questo, allora randomforest sarà molto utile. Se volete prevedere le tendenze, dovrete dividere manualmente il campione in pezzi, preservando la sequenza, cosa difficile (anche se possibile) in rattle e lavorare direttamente nel pacchetto randomforest, che non impone alcuna restrizione all'algoritmo di formazione del campione di input. Esiste un insieme abbastanza esteso di strumenti per la generazione di campioni da testare. Si tratta di pacchetti separati.

E così via. La conclusione generale è che non esiste uno strumento "ottimale".

Ciascuno dei pacchetti presenta molte sottigliezze che risolvono determinati problemi nei dati grezzi. In generale, il processo non è nemmeno molto semplice.

PS. Quando ho scritto di Gazprom, mi riferivo al rapporto tra quotazioni e valori di tipo profit. E l'indice è aritmetico, lo stesso tacchino..... Ma questo è un altro problema... Anche se l'uso del machine learning nel mercato azionario è più promettente che nel forex. A me sembra che sia così.

Grazie, non ho altre domande.
 
bell'articolo
 
Ottimo lavoro!
 
Articolo interessante, grazie. Ho sentito parlare di R per la prima volta, sembra una cosa molto utile. Da tempo voglio creare una rete neurale che possa operare da sola sulla base di dati storici, proverò a scaricare la storia da mt5 (ohlc, spread, volumi), passarla a rattle e vedere cosa succede.
 
Dr.Trader:
Articolo interessante, grazie. Ho sentito parlare di R per la prima volta, sembra una cosa molto utile. Da tempo voglio creare una rete neurale che possa fare trading sulla base di dati storici, proverò a scaricare la storia da mt5 (ohlc, spread, volumi), passarla a rattle e vedere cosa succede.

Rattle ha sei modelli, uno di questi è NS. Vi consiglio di confrontare i risultati di NS con quelli di random forest, ada e SVM. Credo che sarete molto sorpresi dai risultati.

 
Dr.Trader:
Articolo interessante, grazie. Ho sentito parlare di R per la prima volta, sembra una cosa molto utile. Da tempo voglio creare una rete neurale che possa fare trading sulla base di dati storici, proverò a scaricare la storia da mt5 (ohlc, spread, volumi), passarla a rattle e vedere cosa succede.

Questo è esattamente ciò per cui rattle non è stato progettato. È necessario lavorare direttamente in R. Ecco una variante di questa soluzione https://www.mql5.com/it/articles/1103.

Buona fortuna

Третье поколение нейросетей: "Глубокие нейросети"
Третье поколение нейросетей: "Глубокие нейросети"
  • 2014.11.27
  • Vladimir Perervenko
  • www.mql5.com
Статья посвящена новому и очень перспективному направлению в машинном обучении — так называемому "глубокому обучению" и конкретней "глубоким нейросетям". Сделан краткий обзор нейросетей 2 поколения, их архитектуры связей и основных видов, методов и правил обучения и их основных недостатков. Далее рассмотрена история появления и развития нейросетей 3 поколения, их основные виды, особенности и методы обучения. Проведены практические эксперименты по построению и обучению на реальных данных глубокой нейросети, инициируемой весами накапливающего автоэнкодера. Рассмотрены все этапы от выбора исходных данных до получения метрик. В последней части статьи приведена программная реализация глубокой нейросети в виде индикатора-эксперта на MQL4/R.