(Putting this as its own thread because it's so large and slightly off-topic).

I've thought long and hard on this, it's one of my life goals to create a piece of software that could mimic good players in texas hold-em, and I think I might have found a way to do just that using big data, hand histories, neural-networking, and a ton of input by actual players. Or at least a good start.

How would I accomplish this? Well a very high-level overview below. Basically it starts out extremely stupid and grows as a player:

1. Dump hand histories from pros into a large database. The number of hand histories would run into the billions. Users could dump online logs in bulk or create one-offs using input software.

2. Create an input system for a single user to choose a random hand-history and then classify it using tags. For instance tags might help categorize the player's style, the opponent's style, the "street" of play they are tagging, common name for the situation (Facing donk-bet on flop after raising pre-flop), etc. I would leave this fairly flexible and allow users to create new tags. Think similar to Galaxy Zoo but a little less rigid.

3. Using these tags/classifications the system would create a poll and present it to users with a question. What would you do in this particular situation? Where that situation is point in time of a hand history.

4. Eventually the computer player would then have a huge number of situations to use as examples with input from humans on how to proceed. This obviously will be very fuzzy and that's where, IMHO, the strength of the bot actually lies. The system would not lead to a rigid "Do X when Y occurs". It would decide from a large range of choices that have been entered by humans in the polls described above, leaning towards the most common answers first, but trying outliers also.

5. Use a neural network to create pathways based on previous successes.

How would this work once it's all together? An example:

The computer player is dealt AJ off-suit while being last to act on the dealer button. It would ask the database for a set of situations where AJ was dealt to players in the same position. It would then choose one of them and look at the results of the polls. How do most people with the highest success rate play this hand in this particular spot? Choose a random path to take based on that data. Observe and record outcome. This data becomes the true empirical data that the system will eventually rely on. If the situation has been encountered before in it's own play it will look at that and use it or it might choose randomly like it did above from the polling data. Eventually the weight of the empirical data it has collected might outweigh the data from the polls and it will "know" the right move based on its previous pathway choices. If this move is recognized by the opponent and exploited the results would dictate that the system falls back on another random choice. As the data set grows and the system plays the game, it could hypothetically be tuned to play consistently well.

The main hurdle is actually user-input. There would need to be incentive for users to enter the data they think is correct. The system is also open to manipulation through input data so that would need to be thwarted. And then on top of that the system would have to play an enormous amount of hands to create known successful pathways. But I think the sheer randomness and human-like qualities of the system would create a truly awesome experience.

(Joking) Now, does anyone have the $1M+ USD I need to fund this? I promise I'll pay you back. ;)