Jak podejść do konkurencji numer.ai z anonimowymi skalowanymi predyktorami liczbowymi?

9

Numer.ai istnieje już od jakiegoś czasu i wydaje się, że w Internecie jest niewiele postów lub innych dyskusji na ten temat.

System zmieniał się od czasu do czasu, a dzisiejsza konfiguracja jest następująca:

  1. pociąg (N = 96K) i dane testowe (N = 33K) z 21 cechami o wartościach ciągłych w [0,1] i celu binarnym.
  2. Dane są czyste (brak brakujących wartości) i aktualizowane co 2 tygodnie. Możesz przesłać swoje prognozy (na zestaw testowy) i zobaczyć utratę logów. Część danych testowych to nawet dane na żywo i zarabiasz za dobre prognozy.

O czym chciałbym porozmawiać:

Ponieważ funkcje są całkowicie anonimowe, myślę, że niewiele jest inżynierii funkcji, którą możemy zrobić. Więc moje podejście jest bardzo mechaniczne:

  1. zainspirowany tym używam algorytmu klasyfikacji, aby odfiltrować dane treningowe, które najlepiej pasują do moich danych testowych.
  2. Wymyśl jakieś ładne wstępne przetwarzanie
  3. trenuj ładne algorytmy klasyfikacji
  4. buduj ich zespoły (układanie w stosy, ...).

Konkretne pytanie:

Dotyczący kroku 1: Czy masz doświadczenie z takim podejściem? Powiedzmy, że porządkuję prawdopodobieństwo przyłożenia próbek pociągu do testu (zwykle poniżej 0,5), a następnie biorę największe prawdopodobieństwo K. Jak wybrałbyś K? Próbowałem z 15K .. ale przede wszystkim miałem mały zestaw danych treningowych, aby przyspieszyć trening w kroku 3.

Odnośnie do kroku 2: Dane są już w skali 0,1. Gdybym zastosował transformację liniową (podobną do PCA), złamałbym tę skalę. Co byś próbował w przetwarzaniu wstępnym, jeśli masz takie dane liczbowe i nie masz pojęcia, że ​​tak naprawdę jest.

PS: Zdaję sobie sprawę, że ponieważ numer.ai płaci ludziom, którzy o tym dyskutują, może pomóc mi zarobić trochę pieniędzy. Ale ponieważ jest to publiczne, pomogłoby to każdemu ...

PPS: Dzisiejsza tabela liderów ma ciekawy wzór: dwie pierwsze z utratą logarytmiczną 0,64xx, następnie numer 3 z 0,66xx, a następnie większość predyktorów osiąga 0,6888x.

Tak więc wydaje się, że jest bardzo małe pole bitwy i wielu umiarkowanie udanych facetów (w tym ja).

Richard
źródło

Odpowiedzi:

2

Patrzyłem na to podejście i wybrałem K, próbując zakresu, tj. 5k, 10k, 15k itd., A następnie badając zakres, w którym przypada najlepszy wynik, powiedzmy, że najlepszy to 15k, wtedy mógłbym zrobić 13, 14, 15, 16, 17 i tak dalej.

Jak dotąd nie znalazłem żadnego wstępnego przetwarzania, które byłoby skuteczne.

Odpowiadając na komentarz:

Próbowałem używać LogisticRegression, SVM, Neural Networks, RandomForests, Multinomial NB, Extra Trees. Wszystkie oprócz sieci neuronowych wykorzystujących implementacje w sklearn. PyBrain dla NN.

Jan
źródło
Może możesz dodać więcej szczegółów? Tak, próbujemy danych treningowych o różnych rozmiarach. Które przetwarzanie wstępne próbowałeś? które klasyfikatory Dzięki!
Richard