Poker-AI.org

Poker AI and Botting Discussion Forum
It is currently Mon Nov 13, 2023 5:45 pm

All times are UTC




Post new topic Reply to topic  [ 11 posts ] 
Author Message
 Post subject: Bucketing
PostPosted: Sun Jul 21, 2013 2:43 pm 
Offline
Veteran Member

Joined: Thu Feb 28, 2013 2:39 am
Posts: 437
Thought: Why not cluster statistical metrics of the ahead/tied/behind histograms for each round?

For example, from the flop, we roll out each turn, creating three histograms versus all op pockets. Then we calculate something like Skewness and Kurtosis for each histogram, giving us an idea of how the data within those histograms is distributed (stored in just 6 variables). We do the same for each river too. Including the current, normalized flop ahead/tied/behind, that's a total of 15 variables per hand from the flop, which describes the entire distribution of hands at each round, instead of just the hand strength on the river like with KHE and KHO.

Code:
for each turn ...
{
  for each op_pocket ...
  {
    if (myev > opev) ahead_count += 1;
    ...
  }
  ahead_histogram[(ahead_count / total) * size] += 1;
  ...
}

a_kurtosis = kurtosis(ahead_histogram);
a_ skewness = skewness(ahead_histogram);
...


Top
 Profile  
 
 Post subject: Re: Bucketing
PostPosted: Mon Jul 22, 2013 12:25 pm 
Offline
Junior Member

Joined: Fri Jul 05, 2013 9:57 pm
Posts: 15
Maybe it would be a good idea. But I don't get it, how you want do it for the flop? For turn it is clear: you check win/lose rate for river, and put it into histogram. But what exactly you want do on a flop? Histogram of histograms?


Top
 Profile  
 
 Post subject: Re: Bucketing
PostPosted: Fri Jul 26, 2013 2:21 am 
Offline
Veteran Member

Joined: Thu Feb 28, 2013 2:39 am
Posts: 437
The above pseudo-code is for a single flop board, when calculating the turn.


Top
 Profile  
 
 Post subject: Re: Bucketing
PostPosted: Tue Sep 17, 2013 1:10 pm 
Offline
Senior Member

Joined: Mon Mar 11, 2013 10:24 pm
Posts: 216
The idea of breaking down distributions by the 2 measures sounds pretty smart. I could imagine we probably would need to use a modified distance measure for the clustering (maybe euclidean distance is not optimal), but the use of kurtosis and skewness seems like a pretty good method to abstract enough without losing the relevant information (shape of the distribution). Did you do some clustering with it?


Top
 Profile  
 
 Post subject: Re: Bucketing
PostPosted: Wed Sep 18, 2013 2:49 am 
Offline
Veteran Member

Joined: Thu Feb 28, 2013 2:39 am
Posts: 437
I used Weka and tried a number of different clustering algos available through their package. I crunched small test EQs with 200m iterations each. Xmeans performed the best. They only offered a couple generic distance metrics, though. But, I dunno if anything special is needed, since we're just comparing similar metrics, not histograms.

I think the neo poker guys did something like this for their HUL bot that won the 2013 ACPC. The above metrics reduced the number of flop boards from about 22k to 2.2k, just by removing duplicates, no clustering. They probably reduced the game size significantly in this fashion while retaining statistical relevance to the real, unabstracted game.


Top
 Profile  
 
 Post subject: Re: Bucketing
PostPosted: Sun Sep 22, 2013 5:21 am 
Offline
Junior Member

Joined: Fri Jul 05, 2013 9:57 pm
Posts: 15
There is only 1755 different flop boards. I don't know how you get 22k ?


Top
 Profile  
 
 Post subject: Re: Bucketing
PostPosted: Sun Sep 22, 2013 10:18 am 
Offline
Junior Member

Joined: Tue Mar 19, 2013 11:45 pm
Posts: 24
Hipp wrote:
There is only 1755 different flop boards. I don't know how you get 22k ?


There are 22100 = C(52,3) distinct flops and 1755 isomorphic flops.


Top
 Profile  
 
 Post subject: Re: Bucketing
PostPosted: Sun Sep 22, 2013 8:11 pm 
Offline
Veteran Member

Joined: Thu Feb 28, 2013 2:39 am
Posts: 437
For whatever reason the stats method I used reduced it to ~ 2.2k. So, maybe it's not as efficient as it could be, or maybe I have bugs? I imagine the neo poker guys didn't use board texture at all, but performed stat analysis on all possible hands (and their histories).


Top
 Profile  
 
 Post subject: Re: Bucketing
PostPosted: Sun Sep 29, 2013 4:42 am 
Offline
Veteran Member

Joined: Thu Feb 28, 2013 2:39 am
Posts: 437
Another idea, along the same lines...

In the example above, we project forward from the flop, determining the possible win/tie/loss distribution on the turn/river. However, the problem with using LUTs, from the river we can't determine how our hand evolved to it's current state. For example, if the flop came Ac As Ad, then 2s on the turn and 3d on the river, it would be the same river board but a strategically different hand had we flopped As 2s 3d, then turned/rivered Ac Ad. To deal with this (while maintaining the same sized river LUT), we can project backwards, looking at the possible distributions that lead to our current river hand. So, at any given round, we're projecting forwards and backwards in time, in the same histogramatical fashion mentioned above. We can then perform stat descriptives on the histograms and cluster these hands into buckets that engender some sense of the complete game.

From the river, I have about 47 attributes per hand -- a big clustering problem, but not infeasible. That's about 2.5 billion pieces of data.


Last edited by cantina on Mon Sep 30, 2013 2:53 am, edited 1 time in total.

Top
 Profile  
 
 Post subject: Re: Bucketing
PostPosted: Mon Sep 30, 2013 12:18 am 
Offline
Junior Member

Joined: Mon Apr 22, 2013 11:46 am
Posts: 34
Nasher wrote:
Another idea, along the same lines...

In the example above, we project forward from the flop, determining the possible win/tie/loss distribution on the turn/river. However, the problem with using LUTs, from the river we can't determine how our hand evolved to it's current state. For example, if the flop came Ac As Ad, then 2s on the turn and 3d on the river, it would be the same river board but a strategically different hand had we flopped As 2s 3d, then turned/rivered Ac Ad. To deal with this (while maintaining the same sized river LUT), we can project backwards, looking at the possible distributions that lead to our current river hand. So, at any given round, we're projecting forwards and backwards in time, in the same hisogramatical fashion mentioned above. We can then perform stat descriptives on the histograms and cluster these hands into buckets that engender some sense of the complete game.

From the river, I have about 47 attributes per hand -- a big clustering problem, but not infeasible. That's about 2.5 billion pieces of data.


i haven't entirely figured out what you're doing, but how is this different from recalling our buckets on previous streets?


Top
 Profile  
 
 Post subject: Re: Bucketing
PostPosted: Mon Sep 30, 2013 12:51 am 
Offline
Veteran Member

Joined: Thu Feb 28, 2013 2:39 am
Posts: 437
It's not different per se, in function, and that's the point. It's different because you don't have to store the previous buckets in memory, but you're still able to connect them strategically. ;) It's a bit like the best of both worlds (perfect and imperfect recall).


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 11 posts ] 

All times are UTC


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Powered by phpBB® Forum Software © phpBB Group