Zobrazit příspěvky

Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.


Příspěvky - GloGlo

Stran: 1 [2] 3 4
16
ja bych masivne paralelizoval, spustit na mnoha strojich s ruznymi starty. nebyl by vypocet v C/C++ rychlejsi nez v pythonu?

je open source vedecka knihovna GSL, tam jsou ruzne metody, nebo Linpack, Lapack.

Zkoušel sem všechno, co mě napadlo. Různý starty, různý solvery, různý parametry. S tou metodou, kterou aktuálně používám, se to vždycky někde na dlouho zasekne, než to pak pokračuje - ale to kde se to zasekne je asi dost náhodný, nejde o to, že čím by bylo maximum vyšší, tím by se to sekalo víc.

Jinak ten JIT kompiluje Python podobně jako C/C++, jak sem psal, tak mi to zrychlilo evaluaci funkce odhadem asi 100x.

S tou paralelizací to je zajímavý, jen zatím nevím, jak to udělat.

17
nikdo ti nezaruci globalni minimum!

ja mel jen cca 5 parametru a derivaci bych mohl pocitat, ale nechtel jsem slozite, takze jsem pouzival nelder-mead simplex, co derivaci nepotrebuje, akorat musis spocitat funkcni hodnotu v pocet_parametru+1 bodech pro kazdy krok.

Derivaci nemusíš počítat ručně, jsou knihovny, který ti ji spočítají - je to hrozně jednoduchý. (Zkoušel sem JAX, funkce grad)

18
Rozumíte někdo mechanismu toho, jak funguje Powell Method - hledání minima/maxima funkce bez použití gradientů? Používám scipy.optimize.minimize ve snaze najít globální maximum mé funkce MyFunction s mnoha proměnnými (500+). (MyFunction je bohužel step function a její derivace je pro jakoukoli hodnotu zero gradient, takže nejde použít metody využívající derivace).

Když to hledání maxima spustím s nějakými náhodnými výchozími hodnotami, třeba to začne na úrovni, kdy moje funkce dá hodnotu -7000000 - tak to většinou udělá celkem rychle progres a najde hodnotu funkce o dost vyšší než ta výchozí hodnota - třeba skončí na -1000000 nebo +500000. Měl jsem zato, že to je tedy maximální hodnota funkce, kterou to dokáže najít a tím jsem měl věc za uzavřenou.

Jenže sem si všimnul, že když si uložím ty koeficienty z toho jakoby nejúspěšnějšího pokusu a spustím hledání znovu s těmito koeficienty jako výchozími hodnotami - tak to v některých případech vrátí výsledek, který je malinko lepší.

Takže jsem si udělal loop, který vypadá takhle:

Kód: [Vybrat]
start = np.random.sample(532)
res = minimize(MyFunction, start, method='Powell')

while True:
   res = minimize(MyFunction, start, method='Powell')
   start = res.x
Takhle se to postupně propracovává k lepšímu a lepšímu výsledku, příklad:

Kód: [Vybrat]
   
      2 1210270.0
      1 1210780.0
      1 1213950.0
    141 1214800.0
      1 1216230.0
      7 1219820.0
      2 1220800.0
      1 1222210.0
      7 1222500.0
      1 1228050.0
      4 1229650.0
     43 1231510.0
     95 1232520.0
     22 1234020.0
     38 1234320.0
      3 1243910.0
     60 1245490.0
     20 1245700.0
     14 1245840.0
      1 1246830.0
      1 1247830.0
    117 1247940.0
     15 1250220.0
     38 1255260.0
     11 1256940.0
     44 1257950.0
     11 1258060.0
    362 1265900.0
     94 1267220.0
      8 1269460.0
    428 1270720.0
    604 1271960.0
     94 1272000.0
      5 1272840.0
    141 1275320.0
      5 1275520.0
    200 1276930.0
Ten druhý sloupeček je aktuální hodnota globálního maxima MyFunction, je vidět, že to hledání funguje. Problém je v tom prvním čísle - to je kolikrát skript spustil minimize() s koeficienty odpovídajícími jedné hodnotě funkce než to našlo vyšší.

Problém je v tom, že jedno to spuštění funkce minimize udělá cca 3-5000 evaluací MyFunction a to na AMD EPYC 7B13 (CPU MHz: 3049.996, BogoMIPS: 6099.99) trvá cca 90-120 sekund. Takže když to bylo aktuálně na hodnotě 1271960, tak trvalo asi 16 hodin než to malinko popostoupilo a našlo vyšší hodnotu.

Máte někdo nápad, jak tohle zrychlit? (Pozn: Už jsem to hodně zrychlil použitím JIT - jedna evaluace MyFunction je teď podle mého odhadu (neměřil jsem) 100x rychlejší než bez JIT - výše uvedeného hodnoty už jsou s JIT)

19
Vývoj / Re:AI: jak najít nejziskovější variantu?
« kdy: 17. 08. 2022, 20:18:54 »
Nestacilo by se ridit podle pocatecniho kurzu? Pokud ten je nastaveny podle pravdepodobnosti vysledku?

Jakoze vzit vzdy tu nizsi variantu, kterou preferuje sazkovy provider? Tak to by mohl zopovedet OP velice jednoduse, protoze ma data (tedy jestli ma i ty puvodni kurzy)

Jsou weby jako třeba oddsportal.com, kde se dá sledovat vývoj kurzů v čase.

Moje pointa každopádně byla, že ve všech kurzech (i v tom prvním) je kromě pravděpodobnosti výhry týmu započítána i nějaká korekce vyjadřující předpoklad toho toho, jak moc budou sázkaři na ten tým sázet. (Myslím, že přibližně platí, že 80% sázkařů vsází na favorita a 20% na outsidera.)


20
Vývoj / Re:AI: jak najít nejziskovější variantu?
« kdy: 17. 08. 2022, 00:45:01 »
Naprosto souhlasím s ostatními, že je potřeba se zamyslet, jestli vůbec tento jev lze takto (už z principu) predikovat.
Samozřejmě že lze. Pokaždé, když jakákoli sázkovka vypisuje kurz, tak dělá právě takovou predikci, a docela se jim to daří. Tazatel si musí uvědomit, že se nesnaží predikovat výsledek zápasu (jednoduché), ale predikovat výsledek zápasu výrazně lépe než profesionální sázkovky (good luck).

Pro sázkovku je nejideálnější situace, kdy souhrn všech vkladů na jeden tým odpovídá výplatě výher na druhý tým a opačně. V tom případě totiž vůbec neriskuje - proplatí výherní tikety z těch proherních a zbyde ji několik procent marže - zisk.

Takže kurzy sázkovek úplně dokonale nevyjadřujou pravědpodobnost výhry, je to primárně pokus rozdělit sázející na dvě skupiny tak, aby se to co nejvíc blížilo tomu stavu ekvilibria nejvýhodnějšímu pro sázkovku. Proto se (předzápasové) kurzy často v čase různě mění. Není to proto, že by se měnila pravděpodobnost výsledku, ale prostě tím sázkovky reagujou na to, že mají na jedné straně víc peněz než na druhé.

21
Vývoj / Re:AI: jak najít nejziskovější variantu?
« kdy: 16. 08. 2022, 21:28:09 »
Něco jiného je kdyby jsi zpracovával data která ovlivňují výsledek.

Tak samozřejmě jde o to, že se pokouším zpracovávat data, který ovlivňují výsledek. Resp. domnívám se, že ovlivňují výsledek, mohu se taky mýlit. V principu jde každopádně o to, že aby byl člověk v zisku, tak musí zpracovávat data, s nimiž nepracují bookmakeři - kdyby měl člověk stejný data jako oni, tak by potom pravděpodobně dospěl zhruba ke stejným výsledkům jako oni (pokud některá ze stran neudělala chybu) a pak nemůže být dlouhodobě v plusu, protože sázkovky snižují kurzy o svou marži.

Já teda svoji metodu vyvíjím necelej rok a zatím mám úspěšnost 48%, takže mi to nefunguje. Ale vlastně jde o to, že mám různý faktory a každej má jinou váhu a ty koeficienty mezi nima jsem víceméně určil metodou pokus omyl a někde i dost arbitrárně a pravděpodobně blbě. Těch vzájemnejch kombinací je ale tolik, že to prostě nemělo smysl dál zkoušet "manuálně" a tak sem se začal učit AI, aby mi s tím pomohla.

Ale teďka si říkám - vždyť v podstatě AI modely nepotřebuju, jde mi o nalezení maxima nějaký hrozně složitý funkce s hrozně moc proměnnejma. Ale asi jednodušší než než se učit celou AI, udělat model a pak ho tunit, by bylo uděla svoji loss funkci se všema těma proměnnejma/koeficientama a pustit na ní scipy.optimize.minimize :D


22
Vývoj / Re:AI: jak najít nejziskovější variantu?
« kdy: 16. 08. 2022, 15:19:01 »
Jen takový malý dotaz: Víte, že sázkové společnosti podezřele úspěšné sázkaře odstřihávají?

Největší problém je, že si v Česku kvůli debilní regulaci, kterou prosadil Bureš jako ministr financí, můžeš legálně vsadit jen u sázkovky s českou licencí, kterých je jen pár. U těch zahraničních tě z české IP adresy většinou ani nenechají zaregistrovat, spousta zahraničních sázkovek ani z české IP adresy není dostupná.

Co se týče blokování úspěšných sázkařů, tak jsem slyšel o tom, že se to děje, a znám někoho, kdo kvůli tomu podal podnět na ministerstvo financí, tam mu řekli, že to je nelegální a že by s tou sázkovkou mohli zahájit proces odnětí licence, ať jim dá nějaký důkazy, ale pak už to ten dotyčnej dál neřešil - prostě se mu nechtělo.

23
Vývoj / Re:AI: jak najít nejziskovější variantu?
« kdy: 16. 08. 2022, 14:01:10 »
Poradím ti a ani za to nebudu chtít provizi ;).

Podle toho co píšeš, tak model učíš predikovat výsledek zápasu. Zároveň ale píšeš, že tě to vůbec nezajímá a chceš model učit tak, aby maximalizoval zisk. Z toho plyne, že máš úplně špatnou loss funkci.

Model chceš učit na to, aby maximalizoval zisk (minimalizoval ztrátu) a potřebuješ custom loss funkci: https://towardsdatascience.com/machine-learning-for-sports-betting-not-a-basic-classification-problem-b42ae4900782

Je to fakt zajímavý. Zatím jsem teda používal hlavně jednodušší modely scikit-learn a Keras vůbec, takže to neumím. Každopádně jsem si s tím pár hodin hrál a zkoušel to nacpat svejma datama, kdy mám o mnoho víc parametrů než autor (třeba 300 parametrů)
1) U velkýho datasetu (všech 130k zápasů) jsem vždycky dostával loss: nan - val_loss: nan - abych dostával nějaký výsledky a ne pořád ty nan, musel jsem ten dataset hooodně zmenšit, třeba na 1000 zápasů - nejspíš to souvisí s regularizací(?)
2) Nejlepší výsledky jsem dostával u opravdu "malýho" datasetu s cca 700 zápasy - tam mi to v některých případech ukazovalo opravdu mimořádně skvělý výsledky, rekord snad byl ziskovost 35% na zápas (!) - Jenže na druhou stranu když sem to opakovaně spouštěl se stejným zadáním, tak sem někdy dostával úplně jiný výsledky (!) - takže to celý asi je hodně o náhodě, jaký zápasy vybere na trénink a který na validaci (?)
3) Když to trochu zprůměruju, tak u datasetu se 700 zápasy sem dostával i 20-35% na zápas, u 1000 zápasů max. kolem 10%, u 1500 zápasů max. 2-3% a pak dál už vždycky jen ty nan
4) Zatím mě napadá, že bych teda pro každou predikci mohl najít třeba 700 nejpodobnějších zápasů a z nich vytvořit model jen pro účely jedný konkrétní predikce. Ale otázka je, do jaký míry by to pak bylo reprezentativní/ziskový (?)
5) Celkově vzato je to opravdu zajímavý a možná v tom je i velkej potenciál, ale nejspíš budu muset strávit hrozně moc času tím, než příjdu na to, jak to vytunit, aby to dávalo ty nejlepší možný výsledky

24
Vývoj / Re:AI: jak najít nejziskovější variantu?
« kdy: 15. 08. 2022, 21:48:48 »
Tech 6% zisku je za podminky pausalniho poplatku na sazce? :P

Poplatky se u většiny on-line sázkovek už pár let neplatí.

25
Vývoj / Re:AI: jak najít nejziskovější variantu?
« kdy: 15. 08. 2022, 21:11:44 »
Myslel sem si něco takovýho, ale neuměl to pojmenovat. Díky moc!

26
Vývoj / AI: jak najít nejziskovější variantu?
« kdy: 15. 08. 2022, 19:08:13 »
Mám dataset s asi 130k sportovními zápasy a různé informace o těch zápasech - samozřejmě výsledek (1/0/2), kurs na favorita/remízu/outsidera a různé statistické údaje.

Dataset jsem zkompiloval s cílem zkusit zapojit AI jestli mi v tom nenajde nějaký vzorce, který by šly využít při sázení.

Dal jsem to do modelu a ten umí předpovědět výsledek s úspěšností kolem 60% - no jenže to přesně odpovídá tomu, kdy vyhraje favorit - a takyže jo, model teda vlastně ve 100% případech předpoví, že vyhraje favorit, a protože vyhraje v 60% případech, tak má v 60% případech pravdu :) Jak geniální, že? .. Jenže samozřejmě sázet vždy na favorita se statisticky absolutně nevyplatí a kdyby někdo vsadil 1000 Kč na favorita ve všech těch 130k zápasech, tak skončí necelý 3 miliony v mínusu.

Takže se mi zdálo, že prostě ty moje parametry jsou slabý a vlastně to celý byla jen ztráta času. A jen sem si tak hrál s parametrama toho modelu - má různý solvery a ty dávaly drobně jiný výsledky. A pak sem si všiml, že jedna kombinace (solver+penalty) sice taky má úspěšnost kolem 60%, ale aspoň ve všech případech neurčí, že vyhraje favorit - výhru favorita předpoví "pouze" ve 122k případech a asi ve 4,5k případech předpoví remízu a ve 3,5k výhru outsidera. (To jsou samozřejmě stále velmi slabý čísla - reálně favorit z těch 130k zápasů vyhraje 78,5k, remíz je asi 17k a favorit vyhraje asi 34,5k)

... Pořád by to nebylo nic, co stojí za zmínku.. jenže sem zkusil udělat kalkulaci a podle kurzů, kdyby někdo vsadil na outsidera ve všech těch případech, kdy to model předpověděl, tak by to bylo ziskový! Celkovej zisk z těch 3,5k sázek by teda byl "jen" asi 219000 Kč, což odpovídá cca 60 Kč na zápas a tedy ziskovost asi 6%. No ale ale na druhou stranu... Vlastně to není vůbec špatný.

Hlavní věc ovšem je, že jsem tuto kombinaci vlastně objevil náhodou a ne tak, že bych ji cíleně hledal, a tak si říkám, že kdybych ten model udělal nějak líp, tak by mi mohl najít třeba i ziskovější varianty.

Jenže vlastně vůbec netuším, jak něco takovýho udělat. Uměl byste někdo poradit?

27
Vývoj / Re:Kolik je potřeba RAM, aby tento kód doběhl?
« kdy: 13. 08. 2022, 16:52:08 »
A co ten kod jako ma delat?

Chtěl jsem najít maximální možnou hodnotu funkce s mnoha proměnnými a nevěděl, jak na to, tak sem zvažoval zkoušet to hrubou silou a prostě tu funkci volat 25937424601*krát, ale že to není dobrej nápad sem pochopil hodně brzo, když mi to ani nenačetlo array se všema těma kombinacema :D

Naštěstí sem pak po mnoha hodinách hledání objevil scipy.optimize.minimize a ta mi to spočítala za pár vteřin :)

28
Vývoj / Re:Kolik je potřeba RAM, aby tento kód doběhl?
« kdy: 13. 08. 2022, 01:06:10 »
netusim co ma delat ale vysledek by mel byt 25937424601

a to stacila mala uprava:
Kód: [Vybrat]
counter=0
for _ in (p for p in it.product(x, repeat=10)):
    count+=1

a pameti to potrebje pod 6MB se vsim vsudy

a jak se na to divam melo by stacit:
Kód: [Vybrat]
counter = 0
for _ in it.product(x, repeat=10):
    counter+=1

ke stejnemu vysledku ...

Vysledek je len(x)**10 jak jsem psal vyse.

Jako podle tebe je na to potřeba 25 GB RAM?

Zkoušel sem to teď na Google Cloud na stroji se 128 GB RAM a taky to spadlo :))

29
Vývoj / Re:Kolik je potřeba RAM, aby tento kód doběhl?
« kdy: 06. 08. 2022, 19:49:52 »
Díky.. to by se celkem prodražilo  ;D

30
Vývoj / Kolik je potřeba RAM, aby tento kód doběhl?
« kdy: 06. 08. 2022, 04:07:32 »
Kód: [Vybrat]
import itertools as it
x = [1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2.0]
print (len([p for p in it.product(x, repeat=10)]))

Zkoušel jsem to několikrát na 16 GB RAM, ale vždycky to spadlo :D

Stran: 1 [2] 3 4