Poker-AI.org

Poker AI and Botting Discussion Forum
It is currently Mon Nov 13, 2023 11:43 am

All times are UTC




Post new topic Reply to topic  [ 7 posts ] 
Author Message
PostPosted: Wed Nov 06, 2019 7:48 pm 
Offline
New Member

Joined: Wed Nov 06, 2019 7:31 pm
Posts: 2
I am already struggling for weeks on a specific problem I am sure people here can help me out with (I am asking this solely for research purposes). Since I assume most people on this forum to be familiar with basic concepts in statistics (especially Bayesian statistics), I will not waste your and my time to explain definitions and jump right to the question.

Example situation: I want to estimate an opponent's value for VPIP. I estimate this value to be a fixed number. I want to take the population into account and use Bayes' Theorem.

The solution 'so far': Well, I already told you, I'm applying Bayes' Rule and I use the population as my prior. I estimate a Gaussian mixture model on all players in my population with a sample size (number of hands observed) above a certain threshold (this could be, for example, 50). I use Bayesian inference double, as I first measure the confidence a player belongs to a certain group (resulting from my EM & Gaussian Mixture Model - I'm doing this because I expect different groups of players to exist, all with their own probability distribution of having certain values for VPIP).

The problem: This doesn't feel appropriate. Let's for example take the group of recreational players. One could easily argue that this type of player plays very differently compared to regular players. Yet, they have much smaller sample sizes (because the point is that they do not play regularly, and thus have a different playing style...), so, often with my thresholded approach, they will be not accounted for in the population set... and besides this example; I feel that just discarding data below a certain threshold makes for biases on other aspects as well, and is just not good. (Thought experiment: a human player who plays poker for many years, but will only observe at maximum 10 hands for every opponent he plays with, can still use all of his information he gained over the years when playing. Right?!). A more logical approach would be to somehow weigh the datapoints I have in my population set (players) by their respective statistical reliability. But how...?

Is there someone who could guide me a bit in the right direction? I would highly appreciate it!

Bonus question: the playing style of the poker community as a whole change over time as well (and of course an individual player's value for VPIP isn't fixed either); so, ideally populations should be taken into account dynamically. Hands played more recently should have more weight. The same goes for stakes. Now one would just totally not use hand histories on 100NL for modelling a 10NL opponent. This is not right if you ask me? Just those 100NL data is more skewed (and we should estimate parameters to 'skew' it right - or well, this is my intuitive guess) - or, more classical: we can again take stakes into account with by weighting players (same stakes = weight 1). This last paragraph are a kind of elementary thought process, but I'm sure someone could have some helpful input for me here as well...

Thanks folks! A lot.


Top
 Profile  
 
PostPosted: Sun Nov 10, 2019 6:12 pm 
Offline
Site Admin
User avatar

Joined: Sun Feb 24, 2013 9:39 pm
Posts: 642
- Is it a requirement that Bayesian stats, GMM and EM are used?
- What data do you have? Hand histories?


Top
 Profile  
 
PostPosted: Mon Nov 11, 2019 12:00 pm 
Offline
New Member

Joined: Wed Nov 06, 2019 7:31 pm
Posts: 2
spears wrote:
- Is it a requirement that Bayesian stats, GMM and EM are used?
- What data do you have? Hand histories?


My data indeed consists of hand histories. I thought using Bayesian inference would be the most logical way to 'optimize' or 'refine' the stats (such as VPIP) on opponents, using the population (hand histories of other opponents from which I calculate other opponent's VPIP values). Especially when I have very few hands on my 'current' opponent. (This is where my actual problem arises, because the population, which I use to 'optimize' my unreliable sample of my opponent, also struggles with the same problem - loads of unreliable samples... but together useful? But how?)

I thought of using Gaussian Mixture Models, since I made some 2D plots (like PFR/VPIP on the axis and stuff) and it seemed like there are clusters of players (agreeing with the consensus among players of the existence of 'loose aggressive', 'tight passive' players etc). Though, it is definitely not a requirement!


Top
 Profile  
 
PostPosted: Mon Nov 11, 2019 10:29 pm 
Offline
Senior Member
User avatar

Joined: Sun Mar 10, 2013 10:31 am
Posts: 139
DonDan wrote:
I want to estimate an opponent's value for VPIP. I estimate this value to be a fixed number.

You need some theory of how players play. For now you have only part of it, so cant calculate.
Here is good example (but not only one possible, dont forget about it never):
1. Divide all possible VPIP on diapazons (from-to) -> so now you have set of vpips. VPIP[n]. n = 0-N
(also you have fixed vpip value (center of this diapason) (VPIP[n].vpip)
2. Calculate Probability of that random player belongs to each vpip (in some way, based on your whole database) VPIP[n].PlayerProb
3. For each vpip calculate Bayes Probability (BP[n]) (I call it probability of life)
BP[n] = VPIP[n].PlayerProb * (VPIP[n].vpip ^ player_in_pot_times) * ((1 - VPIP[n].prob) ^ player_not_in_pot_times))

4. Choose best(highest) BP[n]. (This numbers can be realy small for mutch games, had write own doubles for it)


Last edited by nefton on Tue Nov 12, 2019 9:31 pm, edited 1 time in total.

Top
 Profile  
 
PostPosted: Tue Nov 12, 2019 10:07 am 
Offline
Site Admin
User avatar

Joined: Sun Feb 24, 2013 9:39 pm
Posts: 642
Quote:
Divide all possible VPIP on diapazons (from-to)
diapazons = ranges

Quote:
(This numbers can be realy small for mutch games, had write own doubles for it)
Could you use logarithms?

(The following has been edited for clarity)
Suppose you have hand histories going back a few years and you have a player who has started recently with 50 hands with a vpip of 20. Rather than use that measured vpip directly you want to find his long run latent vpip. There are 2 issues to deal with

1. From the limited number of hands you have can you tell how many hands the player will play in future?
At a bare minimum you could find all the players in your history who played at least 50 hands and determine a probability distribution of the number of hands ultimately played. Maybe this could be further refined by looking at factors like what time of day he plays, how many hours a day, what days he plays, etc. Whatever method is chosen can be tested by cross validation. Is this what you mean by "getting the population right"?

2. How does the random fall of cards change the latent vpip compared to the measured vpip? I think there are clever statistical ways of determining this, but not being a clever statitician I would just resort to sampling from the hand histories. So for each number of hands in the distribution found in 1 above, I would randomly and repeatedly choose individuals and blocks of 50 hands and find the vpip for each. This would give me a distribution of vpip.

How you use the vpip distribution is up to you. A simple solution would be just to compute the frequency weighted average.

https://www.google.co.uk/url?sa=t&rct=j ... z4xH8VDVlo


Top
 Profile  
 
PostPosted: Tue Nov 12, 2019 9:50 pm 
Offline
Senior Member
User avatar

Joined: Sun Mar 10, 2013 10:31 am
Posts: 139
DonDan wrote:
Could you use logarithms?

May be in this specific case there are some tricks to calculate it without own doubles, but not shure.
anyway dont matter, somthing like 0.3^50 can be calculated with double
0.3*0.31*0.9*0.35.... {10k - 100k times} -> that was a problem )

nefton wrote:
I think is the same procedure as Nefton proposes.

No. No any moon phases, days of week, etc. Just say that theory of a constant inner vpip of player is not enought.
Enouught, but then answer will be real measured vpip. And no matter all your dadabase.
If Bayes was alive, I'm sure he would confirm it.

nefton wrote:
So for each vpip in the distribution found in 1 above, I would randomly choose individuals and blocks of 50 hands and find the vpip for each. This would give me a distribution of vpip.

Ok, then if there are a lot of players with 1 hand and their vpip = 100% or 0% -> then by your method this values will be most probable vpips? ))

I know how to calculate vpip distribution correctly (and do something like this in a past) - but my opinoin that realy it is not way that TS need :)
Think drawing distribution by a hand will be more then enought for his purposes


Top
 Profile  
 
PostPosted: Tue Nov 12, 2019 10:06 pm 
Offline
Site Admin
User avatar

Joined: Sun Feb 24, 2013 9:39 pm
Posts: 642
Quote:
Ok, then if there are a lot of players with 1 hand and their vpip = 100% or 0% -> then by your method this values will be most probable vpips? ))


Hopefully the edits I made to the original make my intent clearer, but my response remains

- You can't select a block of 50 hands from a player who only has 1 hand.
- There is no possible way that a hand history of 50 hands is going to predict that the same player will be playing 1 hand
- I don't care which is most probable because I return a distribution
- You would only be selecting from players with a small number of hands if that what step 1 indicated you should do


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 7 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