bavent / Intelli-RPS

AI Rock Paper Scissors opponent implementation using adapted and custom "intelligent" algorithms.
GNU General Public License v2.0
2 stars 3 forks source link

Documentation for openings.txt data file #1

Open gustavdelius opened 9 years ago

gustavdelius commented 9 years ago

@bavent , can you tell me more about the content of the openings.txt file? I understand it is data from Shawn Bayern, showing the frequency of different responses following different openings. But is this data from humans playing against a computer or humans against humans? I guess the former.

Take for example a row like SP SR 111 152 108

Does this row correspond to an opening where in the first round both the computer and the human played S and then in the second round the computer played P and the human played R, and then the third round was the final round played? Do the numbers then indicate that, in that final third round, in 111 cases the human played P, in 152 cases the human played R and in 108 cases the human played S?

And furthermore, do we know what strategy the computer played? Did the computer play the Nash equilibrium (choosing between P, R, and S uniformly at random) or did it play a data-driven strategy?

bavent commented 9 years ago

@gustavdelius, in a correspondence, Shawn mentioned: "My code (but not the Times's modification of it) also adds a few other things, like occasional randomization to make it difficult for players to discern repetitive behavior." So I'm fairly certain that the data was generated from "human vs. computer" matches, but I don't know what the computer's strategy was in those games.

Yep, your interpretation of the rows is exactly correct.

Another question to keep in mind that I never resolved, which may or may not affect an algorithm that uses the data, is: Why are there fewer observed matches in the first row than, say, the second row?

gustavdelius commented 9 years ago

The way I understand the data, the first row 0 0 119 79 150 means that 119+79+150 players left the game after the initial round. The second row P P 228 230 325 says that 228+230+325 players left the game after the second round after the first round saw both playing P. I would say that there are so few observed matches in the first row because only few players would quit already after just one game. Does that answer your question?

I have another question too: How do you know that the first column is the computer's play and the second column the human's, rather than the other way around?

bavent commented 9 years ago

That would resolve my question, but it also seems like a really convoluted way to store the data and would make it unnecessarily difficult to recover the history of "next moves" after a given state (e.g. what was played after "P P" for ALL players who continued past the first round).

How do you know that the first column is the computer's play and the second column the human's, rather than the other way around? Good thing you asked! I misread your initial question, because the first column actually represents the player's moves and the second column represents the computer's! The original data file that Shawn provided was in a format that made this clear; when I cleaned it from there, I removed all column headers.

gustavdelius commented 9 years ago

Before using the data, it seems rather important to find out whether my interpretation of the data is correct. I guess it will be necessary to contact Shawn Bayern. Do you want to do that because you are already in touch with him?

bavent commented 9 years ago

Definitely. I'll contact him and let you know what he says.

bavent commented 9 years ago

His response was that my interpretation of the data is correct, and that the data on the first move is just dirty.

gustavdelius commented 9 years ago

Ah, but what is your interpretation of the data?

bavent commented 9 years ago

Using "SP SR 111 152 108" as an example, my interpretation was that in all games where:

  1. S was played by the human and S was played by the computer in the first round, and
  2. P was played by the human and R was played by the computer in the second round,

the frequency of observed next-moves by the human was:

I just realized again that I didn't read your initial post carefully enough, so to make it explicit (since the data file gives no indication), the columns represent: [Human history] [Computer History] [# R's on next move] [# S's on next move] [# P's on next move]

Hope this cleared the confusion up!

gustavdelius commented 9 years ago

This is a very clear explanation but I don't think it can be correct. Consider for example the two rows PPP PSP 0 0 1 and PPPP PSPS 0 27 1 According to your description, the first row would tell us that after the opening where the human played PPP and the computer played PSP there was only one single game and in that the human played P. This means that there can be only one single game with an opening in which the human opened with PPPP and for the computer opened with anything starting with PSP. But the second line tells us (according to your interpretation) that there are at least 28 such games. That is a contradiction.

bavent commented 9 years ago

Yep, this is what was initially confusing me about the data set, which is why I think the data is somewhat dirty.

The algorithm that I wrote which utilizes the data set gets relatively good test set results and empirical (albeit, anecdotal) results though, which leads me to believe that the data file isn't entirely "corrupted" or useless. This could be because while consistency between related rows isn't preserved, the relative frequency of the 3 actions on a single row could be approximately correct (which is primarily what my algorithm relies on).

If you choose to use the file with a different interpretation of the data though, I'd definitely be interested to hear how your results turn out!