Pattern Finder

From PokerManager

PokerManager's Pattern Finder is a powerful tool that lets you find patterns in your betting actions. These patterns might predict your actions (when you will Fold, Call, or Bet), or predict the profitability of certain actions. By studying these patterns, you can learn more about your game and how to tune it up. The Pattern Finder works by finding patterns in the Player Action File.


Player Actions

Player Action File

The source of the patterns is the "Player Action File". This file is created by PokerManager using all of the hands that the player has played. For each hand, one or more action records are created, one for each action the player takes. An "Action Record" describes all of the player & game information surrounding that action. The Action Record has input, output, and info-only fields. The table below describes all of the fields in the Action Record.

Action Record Format

Field Name Field Type Description
GameNum Info-Only The game number for the player action.  It is not used in the Pattern Finder, but is provided for informational-purposes so you can cross-reference the game. 
Player Info-Only Player Name
Cards Info-Only Player Cards (in string format).
Board Info-Only Board Cards (in string format)
StartCards Input This is the numerical rank (1-169) of the Starting Cards the player has.  #1 is AA, #2 is KK, #169 is 72 offsuit.
Round Input Round the action was taken.  1 = PreFlop, 2 = Flop, 3 = Turn, 4 = River
PotOdds Input The PotOdds for calling at the time of the action.  This is calculated by the (Pot + CallAmt) / CallAmt.  If CallAmt is zero, then PotOdds are set at 99.
NumActivePlayers Input The number of players still playing in the hand (and haven't folded)
OtherActiveBets Input The total number of bets (across the game) made by other players (not the hero player) that haven't folded
SelfBets Input The total number of bets (for this round only) made by the hero player
SelfBetsTotal Input The total number of bets (across the game) made by the hero player
Position Input Player's position relative to the button.  1 = Small Blind, 2 = Big Blind, 3 = Early Position, 4 = Mid Position, 5 = Late Position, 6 = Button
PlayersToAct Input The number of players who have yet to act assuming the player only checks or calls for this action.  The higher this number, the more risk involved in betting since a later player could raise the bet.
Score Input Score is a ranking 0-100 of the hand value (Flop-River). 100 is the nuts, 0 is the worst
Outs95 Input Outs is the probability of making a score >95 with the next card (different than actual Poker Outs)
PrevAction Input This is the previous action the player made for this game. 0 = Fold, 1 = Check (or None), 2 = Call, 3 = Bet/Raise.
PlayerIsAggressor Input Boolean Value (0 is False, 1 is True).  If True, the player is the last one to have made a voluntary bet or raise.
OtherIsAggressor Input Boolean Value (0 is False, 1 is True).  If True, a different player (other than the hero) is the last one to have made a voluntary bet or raise.
Action Output 0 = Fold, 1 = Check / Call, 2 = Bet / Raise
SawShowdown Output Boolean Value (0 is False, 1 is True)
HandBBWon Output This is the number of Big Bets (BB) won (or lost if negative) for the hand this action was in.

Once the Action Records are calculated for each game, they are combined in the Player Action File. The Player Action File is then sent to the Pattern Finder to find the Patterns.


Finding Patterns

A Pattern is a group of similar records in the Player Action File. They are similar if they have similar input values.

For example, if you have played 10,000 hands, your Player Action File might have 25,000 action records. The Pattern Finder might find 600 (or so) patterns in those 25,000 records. Each pattern will be made up of 50-100 records, all having similar input values.

A small pattern might have only 1-10 action records associated with it. If a pattern is small, its not as useful since there isn't enough data to have statistical significance. If a pattern is large, it is usually more useful since there's lots of data backing it up.

Once the patterns have been found, they are displayed in the user interface so that you can browse the patterns to see their properties.

Pattern Properties

Each pattern that is found has properties that describe the pattern.

Pattern Number 
This is just a unique number assigned to the pattern
Can be "High", "Average", or "Low". This describes how well the pattern predicts the output field. It is calculated using the standard deviation of the output field value. If the pattern is highly predictible, it means it has a low standard deviation in the output field values. This means that the pattern gives a very strong prediction for what the output would be.
Pattern Size 
Can be "Small", "Normal", or "Large". The size is determined by the number of action records that match this pattern's conditions. A small pattern is less useful because there is not enough data backing up the pattern.
Can be "High", "Medium", or "Low". If there is a high or medium correlation, it means that really this pattern should've been split down into two smaller patterns, but there wasn't enough data there to have two medium sized patterns. Also, a high correlation means that one of the input fields correlates (or predicts) the output field.

Pattern Organization

The Patterns are organized into a Decision Tree. A Decision Tree starts at the root, and branches out at each level based on a condition. If the condition is true, then the "True" branch is taken, otherwise the "False" branch is taken. The size of the tree depends on the number of Action Records and the number of Patterns, but is usually 10-12 branches deep.

For example, the Decision Tree might look something like this. At the first node the Condition might be "Score < 26". For all the patterns where this is true, they are stored on the "True" side of the branch. For patterns where this is not true, they are stored on the "False" side of the branch. If the condition is selected well, it generally splits the tree into two equal sizes, so that half the patterns have a score < 26, and half have a score >= 26.

After splitting the tree based on the score, the next condition might be the StartCards, with a condition like "StartCards < 92". The set of patterns will then be split into two halves again, depending on the StartCard values in the pattern.

The condition tree keeps branching until the resulting patterns have a size from 50-100 records, and then no more conditions are added. If a condition was added, the resulting two patterns from the split would be too small.

Also note that at each level of the decision tree, the following condition may use a different field than the current condition. It uses whichever field would split the patterns in the most optimal way.

Using the Pattern Finder

The Pattern Finder is accessed by selecting the "Modeling" main menu, and then the "Player Model" menu. If this is the first time using the menu, you will be prompted that PokerManager needs to create a Player Action File. If you have a lot of hands (say 10,000), it can take about 10 minutes for this to complete. Once you have created a Player Action File, you can access the menu and not have to recreate it (to save time).

PokerManager creates the Player Action File in a background job. You can view the status of the job by opening up the Job Manager (its on the View menu, or press Ctrl+J). When the job is complete you will be prompted with this dialog:

The dialog explains the different types of models you can view from the Player Action File.

Pattern Finder User Interface

This model predicts the chance you will Fold, Call, or Bet based on the various model inputs. When the Pattern Finder is displayed it will look something like this:

Pattern Finder Window
Pattern Finder Window

You can navigate the Pattern Finder through the left hand side. Once you've selected a pattern on the left side, you can double click to display the pattern details in the right hand side windows.


Drill Down Tab

The Drill Down tab lets you easily select Patterns based on similar pattern properties. The patterns are grouped based on their properties, and you can select to view only those patterns with the properties you want to see.

The Drill Down Tab has some pre-defined paths for browsing the patterns, based on the type of model you are viewing. For the Action Probability Model, these predefined paths are the default:

  • Drill Down on Betting Action, then by Predictability
  • Drill Down on Predictability, then by Betting Action

If you want to see all the patterns where your Betting Action is "Bet/Raise", then you should drill down on the first path, selecting the "Bet+" branch of the tree. The "+" means that Bet is the majority action for the patterns in this branch. If it just says "Bet" that means it is usually Bet, but there are some calls and fold. If the branch is labeled "Bet or Call", then it is probably evenly split between those two actions.

So you can click on the "Bet+" branch. Some more branches are displayed based on the patterns predictibility. Select the branch with the highest predictibility, and it will list all the patterns in that group. You can double-click a pattern to display the pattern details in the right hand side of the GUI.

The last root path on the Drill Down tab is the custom drill down branch. With this branch you can select any property at any level to drill down with. This requires more clicking, but has the most flexibility for how to view the data. When you select a branch on the custom drill down, at the next level you can choose to drill down by another field, or select "Show All" to show all the patterns that match the current drill-down.

All Patterns Tab

You can navigate the patterns by selecting the "All Patterns" tab. This just lists all of the patterns in a single list. The list displays the Pattern Number, Predictability, the Pattern Size, and the Output field.

You can click on the column headers of this list to sort the list by that field. For example, you can click on Pattern Size to view all of the Large Patterns, or then click on the Output field to find all the patterns that have "Bet" (for the Action Model).

Condition Tree Tab

You can navigate the patterns in the same manner they are organized by selecting the "Condition Tree" Tab. See the section above on Pattern Ogranization for how the condition tree works.

Pattern Details

The details for each pattern are displayed on the right hand side windows. These include the Pattern Stats window, the Conditions Window, and the Detail Records window.

The Pattern Stats window simply displays the properties for that Pattern. See Pattern Properties above for more details on the properties.

The Conditions Window lists all of the conditions that must be true for this pattern to match. You can double click any of the conditions in this list to automatically locate the pattern in the Condition Tree.

The Detail Records Window just displays all of the Action Records that make up the pattern.

More Information

The Pattern Finder in PokerManager uses a hierarchical divisive clustering algorithm.

See also