next up previous contents
Next: 7.2.2 Pre-Flop Re-Weighting Up: 7.2 Learning Previous: 7.2 Learning   Contents

7.2.1 Re-Weighting System

The weight adjustment for any particular subcase is based on the threshold hand value needed for the observed action. The threshold is in turn based on the observed frequency of folding, calling and raising of the player in question (or the default frequencies when we are using generic opponent modeling or have insufficient data). From these frequencies we deduce the average ($\mu$, representing the mean hand) and spread ($\sigma$, to account for uncertainty) of the threshold needed for the observed action.

The values $\mu$ and $\sigma$ define an expected distribution of hands to be played, realizing a transformation function for re-weighting. We take some ranked distribution of all possible hands held (IR for the pre-flop and EHS' for the post-flop rounds, meaning we presume our opponents rank hands like we do) and each hand h is compared to $\mu$ and $\sigma$ and re-weighted accordingly (see Figures 7.1 and 7.2). When the value for h is equal to $\mu$, the re-weighting value is 0.5; when it is more than $\sigma$ below $\mu$, it is 0.01; when it is more than $\sigma$ above $\mu$, it is 1 (the weight is unchanged); and when it is within $\sigma$ of $\mu$ it is linearly interpolated between 0.01 and 1 (we use a simple linear interpolation because it is easy and we do not know what the distribution should look like). Since we do not want to completely rule out any legal subcase we do not allow the weight to go below 0.01.

Figure 7.1: Re-weighting Function Code
\begin{figure}
\footnotesize {\tt\begin{tabbing}
mm\=mm\=mm\=mm\=mm\=mm\=mm\=mm\...
...d]<low\_wt) weight[hand] = low\_wt\\
\>\}\\
\}
\end{tabbing}} %tt
\end{figure}

Figure 7.2: Re-weighting Function
\begin{figure}
\centerline {\psfig{figure=rewtbs.eps,height=2in}}\end{figure}

The value $\mu$ is based on the threshold needed for the observed action, which is in turn based on the frequency. For example, consider that player p has been observed 100 times in the pre-flop with 2 bets to call: 20 times it was raised, 70 times called and 10 times folded. If we wanted to re-weight based on a raise we compute the frequency of raising: $F = f''_{p}[0,2][raise] = \frac{20}{100} = 0.20$, meaning the threshold is $\mu = 1 - F = 0.80$ (player p raises with the top 20% of hands). However, if we wanted to re-weight based on a call (frequency 0.70) we must note that the threshold for a call is not $\mu = 1 - 0.70 = 0.30$ but is rather 0.70 below the raise threshold: $\mu = 0.80 - 0.70 = 0.10$ (player p calls with the middle 70% of hands). There are other intricacies dependent on the actual round of play, such as determining $\sigma$ and using IR values (which are non-percentile), which will be discussed in the following sections. One immediately noticeable source of error is that this system presumes a proper distribution over the hand rankings ( i.e. the hands above $\mu = 0.80$ represent 20% of all hands). This is not true for the post-flop rounds, because EHS' is optimistically increased with PPOT. However, the relative ranking of hands is still correct.

As a final note, to prevent the weight array from being distorted by automatic or false actions, we only perform one re-weighting per model per round. We store a copy of the weight array at the beginning of the round and each time a new action is witnessed requiring a higher threshold, the saved weight array is used in the re-weighting. For example, if we witness opponent p calling a bet, we may re-weight using some $\mu$, say 0.5. If, later in the betting round, we see that opponent raise, re-weighting will be done with the higher value of $\mu$, and is based on the original weight array.


next up previous contents
Next: 7.2.2 Pre-Flop Re-Weighting Up: 7.2 Learning Previous: 7.2 Learning   Contents
Denis Papp
1998-11-30