L'apprendimento automatico nel trading: teoria, modelli, pratica e algo-trading - pagina 2112

 
Aleksey Vyazmikin:

Per y è la partizione della griglia, e per X la deviazione come percentuale della somma dell'obiettivo di ogni classe nell'intero campione. Il filtro è al 5%. Si può vedere che diverse classi dominano in diverse aree, c'è un cambiamento speculare - allora il miglioramento è dovuto a una classe particolare (l'istogramma è meno), e a volte non lo è. Tutto questo dovrebbe essere utilizzato nell'allenamento, ma i metodi di allenamento standard che conosco non ne tengono molto conto. Può essere più efficace eccedere con la genetica (più precisamente sull'eliminazione) - bisogna farlo.

Supponiamo che troviate un buon quantum in cui il 65% degli esempi di 1° grado.
La scissione avviene per esempio nel mezzo, lasciate dividere da questo il vostro quantum.

1) Da dividere nel ramo sinistro tutti gli esempi dal tuo quantum con il 65% degli esempi necessari e da molti altri quanti che sono più piccoli del valore del tuo quantum andranno al ramo sinistro. Come risultato otterrete non il 65%, ma un'altra percentuale - molto più piccola a causa della diluizione con esempi di altri quanti.

2) Secondo - se il tuo quantum non è il primo split nell'albero, allora tutti gli split precedenti hanno rimosso circa il 50% degli esempi dal campione. E al livello 5 dell'albero, rimarrà 1/(2^5)=1/32 parte degli esempi nel vostro quant, che saranno mescolati con gli stessi quanti diluiti come nel primo caso. Cioè, è improbabile che il 65% degli esempi rimanga nel foglio come risultato della formazione.

L'unica opzione è segnare le colonne come caratteristiche categoriche dopo la quantizzazione - allora se è la prima divisione nell'albero, tutto il 65% degli esempi andrà al ramo sinistro senza mescolarsi con altri quanti. Se non è la prima spaccatura dell'albero - allora di nuovo otteniamo un diradamento per spaccature superiori.

 
elibrarius:

Supponiamo che troviate un buon quantum in cui il 65% degli esempi sono di classe 1.
La spaccatura avviene per esempio nel mezzo, che sia spaccata da questo vostro quantum.

1) Dalla divisione, tutti gli esempi del tuo quantum con il 65% degli esempi necessari e di molti altri quantum che sono più piccoli del valore del tuo quantum andranno al ramo sinistro. Come risultato otterrete non il 65%, ma un'altra percentuale - molto più piccola a causa della diluizione con esempi di altri quanti.

2) Secondo - se il tuo quantum non è il primo split nell'albero, allora tutti gli split precedenti hanno rimosso circa il 50% degli esempi dal campione. E al livello 5 dell'albero, rimarrà 1/(2^5)=1/32 parte degli esempi nel vostro quant, che saranno mescolati con gli stessi quanti diluiti come nel primo caso. Cioè, è improbabile che il 65% degli esempi rimanga nel foglio come risultato della formazione.

L'unica opzione è segnare le colonne come caratteristiche categoriche dopo la quantizzazione - allora se è la prima divisione nell'albero, tutto il 65% degli esempi andrà al ramo sinistro senza mescolarsi con altri quanti. Se non è la prima spaccatura dell'albero - allora di nuovo otteniamo un diradamento per spaccature superiori.

1-2 - sì, può succedere, ma non necessariamente, avete bisogno di un approccio che minimizzi questa probabilità.

E riguardo alle caratteristiche categoriche - è vero, ma per MQ non esiste un interprete di modelli con caratteristiche categoriche.

Finora vedo una soluzione nel consolidare i segmenti quantistici sotto un valore e creare un campione separato dove si verificano questi valori - in questo modo avremo la garanzia di lavorare con quel sottoinsieme. Lo farò mentre cerco le foglie, ma all'inizio ho bisogno di quantizzare rapidamente con metodi diversi.

 
Aleksey Vyazmikin:

I risultati sono strani - su test e training sample Recall 0.6-0.8 e sull'esame senza trasformazione 0.009 e con trasformazione 0.65 - qualcosa è sbagliato qui :(

Ho la sensazione che CatBoost abbia imparato l'algoritmo di conversione :)

E c'è la possibilità di marcare linee vecchie e nuove? Poi è possibile rimuovere le stringhe trasformate dal campione trasformato e vedere se è un problema di interpretazione o non di formazione qualitativa tutto uguale.

dovrebbe essere, ci sono meno esempi della stessa classe nei nuovi dati. Qui la generalizzabilità dovrebbe essere migliore, dovremmo eseguirlo subito nel tester

Con i miei dati, il ricampionamento non aiuta.

nuove righe vengono aggiunte alla fine, se si sottrae il dataset originale rimane. Questo metodo aggiunge semplicemente degli esempi con il metodo del vicino più vicino alla classe minore. Cioè crea nuove etichette e caratteristiche plausibili

 
Aleksey Vyazmikin:

1-2 - sì, potrebbe essere, ma non necessariamente, avete bisogno di un approccio che minimizzi questa probabilità.

E riguardo alle caratteristiche categoriche - questo è vero, ma per MQ non esiste un interprete di modelli con caratteristiche categoriche.

Finora vedo una soluzione nel consolidare i segmenti quantistici sotto un valore e creare un campione separato dove si verificano questi valori - in questo modo avremo la garanzia di lavorare con quel sottoinsieme. Lo farò durante la ricerca delle foglie, ma all'inizio dobbiamo quantizzare rapidamente con metodi diversi.

Questo è l'algoritmo per costruire l'albero. Non si può cambiare. A meno che tu non scriva il tuo Catboost.

 
Maxim Dmitrievsky:

dovrebbe essere, ci sono meno esempi della stessa classe nei nuovi dati. Qui la generalizzabilità dovrebbe essere migliore, dovremmo eseguire il tester in una sola volta

con i miei dati, il ricampionamento non aiuta.

nuove righe vengono aggiunte alla fine, se si sottrae il dataset originale rimane. Questo metodo aggiunge semplicemente degli esempi con il metodo del vicino più vicino alla classe minore. Cioè crea nuove etichette e caratteristiche plausibili

Quindi il richiamo deve rimanere alto, altrimenti non ha senso. Non dipende dall'equilibrio del campione.

Capisco il principio di funzionamento, grazie.

C'è qualche metodo con clustering "Cluster Centroids" - o cos'altro provare da qui.

5 главных алгоритмов сэмплинга
5 главных алгоритмов сэмплинга
  • habr.com
Работа с данными — работа с алгоритмами обработки данных. И мне приходилось работать с самыми разнообразными на ежедневной основе, так что я решил составить список наиболее востребованных в серии публикаций. Эта статья посвящена наиболее распространённым способам сэмплинга при работе с данными.
 
elibrarius:

Questo è l'algoritmo per costruire l'albero. Non si può cambiare. A meno che tu non scriva il tuo Catboost.

È di questo che sto parlando: devi creare il tuo algoritmo.

 
Aleksey Vyazmikin:

Quindi il richiamo deve rimanere alto o non ha senso. Non dipende dall'equilibrio del campione.

Capisco il principio, grazie.

C'è qualche metodo con clustering "Cluster Centroids" - o qualcos'altro da provare da qui.

Questo rimuove le etichette da una classe importante al contrario.

 
Maxim Dmitrievsky:

questo, d'altra parte, rimuove i segni dalla classe maggiore

Quindi rimuoviamo gli zeri in modo intelligente, forse avrà un effetto.

 
Aleksey Vyazmikin:

In questo modo cancella gli zeri in modo intelligente, forse avrà un effetto.

nel quaderno, basta sostituire il metodo ed è fatta.

from imblearn.under_sampling import ClusterCentroids
cc = ClusterCentroids(random_state=0)
X_resampled, y_resampled = cc.fit_resample(X, y)

Ecco un esempio

https://imbalanced-learn.readthedocs.io/en/stable/under_sampling.html

Preferisco Near-Miss (basato sulle immagini)

3. Under-sampling — imbalanced-learn 0.5.0 documentation
  • imbalanced-learn.readthedocs.io
On the contrary to prototype generation algorithms, prototype selection algorithms will select samples from the original set . Therefore, is defined such as and . In addition, these algorithms can be divided into two groups: (i) the controlled under-sampling techniques and (ii) the cleaning under-sampling techniques. The first group of methods...
 
Maxim Dmitrievsky:

sul portatile, basta sostituire il metodo ed è fatta

Devo averlo cambiato nel posto sbagliato e sta combattendo.

---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-2-e8cb95eddaea> in <module>()
      1 cc = ClusterCentroids(random_state=0)
----> 2 X_resampled, y_resampled = cc.fit_resample(X, y)

NameError: name 'X' is not defined

Per favore, controllate cosa c'è che non va.

Motivazione: