• Log InLog In
  • Register
Liquid`
Team Liquid Liquipedia
EST 07:12
CET 13:12
KST 21:12
  • Home
  • Forum
  • Calendar
  • Streams
  • Liquipedia
  • Features
  • Store
  • EPT
  • TL+
  • StarCraft 2
  • Brood War
  • Smash
  • Heroes
  • Counter-Strike
  • Overwatch
  • Liquibet
  • Fantasy StarCraft
  • TLPD
  • StarCraft 2
  • Brood War
  • Blogs
Forum Sidebar
Events/Features
News
Featured News
RSL Revival - 2025 Season Finals Preview8RSL Season 3 - Playoffs Preview0RSL Season 3 - RO16 Groups C & D Preview0RSL Season 3 - RO16 Groups A & B Preview2TL.net Map Contest #21: Winners12
Community News
ComeBackTV's documentary on Byun's Career !8Weekly Cups (Dec 8-14): MaxPax, Clem, Cure win4Weekly Cups (Dec 1-7): Clem doubles, Solar gets over the hump1Weekly Cups (Nov 24-30): MaxPax, Clem, herO win2BGE Stara Zagora 2026 announced15
StarCraft 2
General
When will we find out if there are more tournament ComeBackTV's documentary on Byun's Career ! Weekly Cups (Dec 8-14): MaxPax, Clem, Cure win RSL Revival - 2025 Season Finals Preview Weekly Cups (Dec 1-7): Clem doubles, Solar gets over the hump
Tourneys
https://www.facebook.com/WuffyRobotPuppyGermany.On $5,000+ WardiTV 2025 Championship RSL Offline Finals Info - Dec 13 and 14! Master Swan Open (Global Bronze-Master 2) Winter Warp Gate Amateur Showdown #1:
Strategy
Custom Maps
Map Editor closed ?
External Content
Mutation # 504 Retribution Mutation # 503 Fowl Play Mutation # 502 Negative Reinforcement Mutation # 501 Price of Progress
Brood War
General
FlaSh on: Biggest Problem With SnOw's Playstyle screp: Command line app to parse SC rep files How Rain Became ProGamer in Just 3 Months BGH Auto Balance -> http://bghmmr.eu/ [BSL21] RO8 Bracket & Prediction Contest
Tourneys
Small VOD Thread 2.0 [Megathread] Daily Proleagues [BSL21] WB SEMIFINALS - Saturday 21:00 CET [BSL21] RO8 - Day 2 - Sunday 21:00 CET
Strategy
Game Theory for Starcraft Current Meta Simple Questions, Simple Answers Fighting Spirit mining rates
Other Games
General Games
Stormgate/Frost Giant Megathread Path of Exile Nintendo Switch Thread General RTS Discussion Thread Dawn of War IV
Dota 2
Official 'what is Dota anymore' discussion
League of Legends
Heroes of the Storm
Simple Questions, Simple Answers Heroes of the Storm 2.0
Hearthstone
Deck construction bug Heroes of StarCraft mini-set
TL Mafia
Mafia Game Mode Feedback/Ideas Survivor II: The Amazon Sengoku Mafia TL Mafia Community Thread
Community
General
US Politics Mega-thread Russo-Ukrainian War Thread Things Aren’t Peaceful in Palestine The Games Industry And ATVI YouTube Thread
Fan Clubs
White-Ra Fan Club
Media & Entertainment
Anime Discussion Thread [Manga] One Piece Movie Discussion!
Sports
2024 - 2026 Football Thread Formula 1 Discussion
World Cup 2022
Tech Support
Computer Build, Upgrade & Buying Resource Thread
TL Community
TL+ Announced Where to ask questions and add stream?
Blogs
The (Hidden) Drug Problem in…
TrAiDoS
I decided to write a webnov…
DjKniteX
James Bond movies ranking - pa…
Topin
Thanks for the RSL
Hildegard
Customize Sidebar...

Website Feedback

Closed Threads



Active: 1263 users

Replay Classification Project

Blogs > StRyKeR
Post a Reply
Normal
StRyKeR
Profile Blog Joined January 2006
United States1739 Posts
Last Edited: 2008-11-19 08:06:43
November 19 2008 07:05 GMT
#1
I've embarked on a personal project of mine involving a high-tech way to classify the players in a Starcraft replay.

Basically, imagine training a computer to learn to recognize who played in a replay with an accuracy of prediction better than (paladin)roMAD's.

I was inspired by romad's superhuman ability to recognize who played in a replay just by looking at hotkey signatures. I use his example as a benchmark for my machine.

Since hotkey usage is not that sophisticated to measure and compile, I figured that the high-tech machine learning tools that I've been learning in class this term could easily apply to this domain.

Early results are very promising.

The procedure is rather simple. I take a replay and grab 212 features and put it into a 212-dimensional vector. I note who played in the replay (for the training set, I need to know who played in the replay) and label the vector accordingly. I do this for a whole bunch of replays and I apply a machine learning algorithm that uses this set of vectors and labels to train itself.

Then I go about testing the machine by giving it examples it hasn't seen yet and seeing how accurate it is.

Currently, for all matchups except TvP, I can achieve about 90% accuracy. I have to add though, that as I add more players into the mix, the accuracy might go down. Right now I'm classifying among 10 players and 90% seems to be the resulting accuracy.

For some reason, the machine finds TvP hard to learn. I think this makes sense, since there's not many variations in strategy or unit composition in TvP. I don't play T (I play Z) so it's harder for me to know how to fix TvP learning.

Currently, I'm using Taiche's RepASM library to convert mass replays into mass 212-dimensional vectors. While his library is awesome, I'd like more features. Right now, his library cannot tell which unit is actually being clicked or saved into a hotkey. All I know is the unit's ID, which doesn't tell me anything. Having that information might bump up the accuracy to 95% or even higher.

Having said that, it's quite amazing how even stupid things like hotkey typing frequencies are consistent for one player's games and helps in training the machine. Right now, 10 dimensions (one for each hotkey) in the feature vector simply count the relative frequencies of the hotkeys being used. If someone prefers to use 1 a lot, it would be reflected as a high percentage in one of these 10 dimensions.

Some actions are habitual, even if the player does not recognize them.

I'm going to eventually make a lot of this automated, so that it can be of help to a lot of people wondering who's playing in a replay. This would prove useful especially for the iCCup Who's Who thread.

I'm setting up a server to do, but I'm still learning how to setup an automated system, since I'm using MATLAB to train the machine. I'm thinking that I could manually train the machine and provide an interface that could automatically classify replays. I might retrain the machine every week or so (would take some time retraining, especially with more and more replays).

One important thing is for me to get as many replays as possible, especially the pro replays. I have a ton of TSL replays, so right now I can classify a lot of foreigners with a good amount of accuracy.

One caveat is that I need a lot of replays for training. Preferably over 50. 20 might be okay. 10 is probably not enough.

I'll probably setup a website where you guys can upload replays with labels on them (remember, I need labels for training). The labels better be right though; otherwise, it would confuse the machine (wouldn't be catastrophic but still).

I'll issue a self-challenge. Send me a replay of unknown players and ask me to classify it. I'll post the results and analysis that results from feeding the replay into my machine.

Here's an example. I trained the machine using TSL replays and I just fed the replay of Mondragon playing MistrZZZ (recent replay, look in Replay section). Here are the results:

[image loading]


Okay, ng.stryker is me, and I never played in the TSL. But I thought I might include myself.

The confidence indicates how many replays I had to train that particular classifier. Basically, the more replays I used to train, the more likely it is to be correct.

Positive similarities indicate well, good similarity.
A value of 1 means that the classifier thinks the keystrokes are pretty damn similar.
A value of -1 means that the keystrokes are pretty damn different.

Just to let you know that these features need some work, here is a bad example.

[image loading]


Apparently, the machine thinks the player is very similar to David. However, the player is none other than Jaedong. In its defense, maybe if we had trained a Jaedong classifier, we'd get a Jaedong similarity score of 2 or something which would beat out David's.

I took a look at the replay, and there are some obvious difference between Jaedong and David that the 212 dimensions do not yet capture. That will be work for tomorrow.

Because I have very few replays of progamers, if you give me a progamer replay, the machine may try to fit the player as a foreigner and give strange predictions. However, we would still be able to observe how close the player's signature is compared to the foreigners, even though the player may not be one.

EDIT: I'm adding some interesting things I've found.

Interesting Things
* Some keystrokes are habitual and consistent for a player, even if the player does not know about them.
* Analyzing the entire replay is often worse than just looking at the first 10 minutes or so. Right now, I've capped the replay analysis to 9 minutes. I've filtered out replays that were too short (I think right now I only admit replays over 4 minutes long).
* APM is factored into the algorithm, but I don't really know how useful it is. It's pretty consistent for a player, so I suppose it helps. There are two dimensions for it -- one is the APM average for the first minute, the second is the average for the entire game. I figured that the first-minute average is very unlikely to change regardless of the opponent.
* I do an initial screen based on matchup. For example, if I get a replay that is ZvP, I won't be asking the machine to identify whether Nada played it (unless I trained some examples of Nada playing Zerg).
* Machine's ZvP keystrokes seem to be radically different from all the other players I've seen. Whenever I test Player X's replay, where X is not Machine, Machine consistently ranks last in similarity.

EDIT 2: I'm wondering if I should make this blog day-by-day and have a new entry every time or just keep updating this one. Okay. This entry is getting too long. I will update on new ones from now on.

****
Ars longa, vita brevis, principia aeturna.
Grobyc
Profile Blog Joined June 2008
Canada18410 Posts
November 19 2008 07:08 GMT
#2
Sounds really wicked. If you complete this me <3 you long time!
If you watch Godzilla backwards it's about a benevolent lizard who helps rebuild a city and then moonwalks into the ocean.
EtherealDeath
Profile Blog Joined July 2007
United States8366 Posts
November 19 2008 07:08 GMT
#3
Someone give him a replay of that olympic ranked player o.O
sixghost
Profile Blog Joined November 2007
United States2096 Posts
November 19 2008 07:11 GMT
#4
http://www.teamliquid.net/forum/viewmessage.php?topic_id=65607

There's a bunch of pro gamer replays in there if you havent already found that. I'm not sure if they are up yet though.

mG.sixghost @ iCCup || One ling, two ling, three ling, four... Camp four gas, then ultra-whore . -Saracen
StRyKeR
Profile Blog Joined January 2006
United States1739 Posts
Last Edited: 2008-11-19 07:12:18
November 19 2008 07:11 GMT
#5
On November 19 2008 16:11 lgdDante wrote:
http://www.teamliquid.net/forum/viewmessage.php?topic_id=65607

There's a bunch of pro gamer replays in there if you havent already found that. I'm not sure if they are up yet though.



Yea, I found that a few weeks ago except the links are all dead.

EDIT: Hmm, some are good.
Ars longa, vita brevis, principia aeturna.
sixghost
Profile Blog Joined November 2007
United States2096 Posts
November 19 2008 07:15 GMT
#6
Have you noticed if there's general minimum length the replay has to be for the accuracy to be near the average?
mG.sixghost @ iCCup || One ling, two ling, three ling, four... Camp four gas, then ultra-whore . -Saracen
OneOther
Profile Blog Joined August 2004
United States10774 Posts
November 19 2008 07:31 GMT
#7
Wow this would be so sick.
GHOSTCLAW
Profile Blog Joined February 2008
United States17042 Posts
November 19 2008 07:43 GMT
#8
If you can manage this that would be amazing. I'm not sure how reliable it would be, but it would be very interesting.
PhotographerLiquipedia. Drop me a pm if you've got questions/need help.
MasterReY
Profile Blog Joined August 2007
Germany2708 Posts
November 19 2008 07:44 GMT
#9
wow, i never thought a thing like that can work, but its nice to hear you already have about 90% accuracy.
PLease work hard to complete this program.
People will love you forever lol :D
gj
https://www.twitch.tv/MasterReY/ ~ Biggest Reach fan on TL.net (Don't even dare to mention LR now) ~ R.I.P Violet ~ Developer of SCRChart
TL+ Member
pachi
Profile Joined October 2006
Melbourne5338 Posts
November 19 2008 07:49 GMT
#10
If you want some replays for source material, Heres an old pack of several Babara Seasons collected by yakii, which should contain many korean reps most of which are probably pros by now.

http://rapidshare.com/files/151429614/babara.rar.html

(Also here is the replay pack from Itemmania, where everyone (koreans + draco) played under a number instead of their usual nick. http://rapidshare.com/files/151430307/Itemmania.rar.html)
Moderatorpachi fanclub http://goto.tl/6DI9 。◕‿◕。
magusmind
Profile Blog Joined May 2008
50 Posts
November 19 2008 07:57 GMT
#11
Wow, this idea brilliant.

Out of curiosity, what ML algorithm are you using? I assume it's a variant of perceptron. (You mention noisy data would be bad but not disastrous, and perceptron is somewhat resilient to noise) Also, how are you choosing the 212 features? I'm wondering because you couldn't have hand picked all of them.

As a side note, every replay (assuming 1v1) would actually be 2 examples, right? How are you counting your accuracy? (+1 for guessing both players correctly? +1 for guessing each correct player?) I'm also curious... does classifying one player correctly correlate with classifying the other one correctly?

Anyway, great idea. Keep us updated. I'm very interested in the results.
BanZu
Profile Blog Joined June 2008
United States3329 Posts
November 19 2008 08:02 GMT
#12
Oh snap this is some nifty stuff

I'd like to see how efficient you can get this thing to be
Sun Tzu once said, "Defiler becomes useless at the presences of a vessel."
StRyKeR
Profile Blog Joined January 2006
United States1739 Posts
Last Edited: 2008-11-19 08:38:19
November 19 2008 08:33 GMT
#13
On November 19 2008 16:49 pachi wrote:
If you want some replays for source material, Heres an old pack of several Babara Seasons collected by yakii, which should contain many korean reps most of which are probably pros by now.

http://rapidshare.com/files/151429614/babara.rar.html

(Also here is the replay pack from Itemmania, where everyone (koreans + draco) played under a number instead of their usual nick. http://rapidshare.com/files/151430307/Itemmania.rar.html)


Hehe, this gets fun.

I ran some replays from Itemmania through the machine.

Interestingly, I got the following results for a particular player.

itemmania_29
I found 3 replays, PvT, 2 replays, PvZ. They all point to Draco.

Result for one PvT:
[image loading]


I'm gonna guess that itemmania_29 is Draco.

Also, I got pretty weak results for itemmania_16, but is it mistrzzz?
2 replays, PvT
[image loading]

[image loading]
Ars longa, vita brevis, principia aeturna.
magusmind
Profile Blog Joined May 2008
50 Posts
November 19 2008 09:02 GMT
#14
Dude, I just noticed you can extend your current project to look at how similarly progamers play.

If you train using the multiclass perceptron (one weight vector for each player), at the end, each vector is pretty much a "characteristic" of how that player plays. Since these are just vectors in a high dimensional space, their dot product tells you how similar they are. In addition, if you run some sort of clustering algorithm on the vectors, you might see some interesting groupings.

This can let us ask some really interesting questions, eg:
Who is really boxer's protege? (Which SKT terran plays most similarly to boxer?)
Is there a clear distinction between how aggro zergs (eg: July) and macro zergs (eg: sAviOr) play? (Do all the aggro zergs and macro zergs cluster into distinct groups?)

Of course this requires a lot of training data that probably isn't available. But if you one day get your hands on them, I can totally imagine these types of questions being answered (As well as many others I can't think of right now).

+ Show Spoiler +
If you couldn't tell, I am well versed in the art of machine learning. If you have any questions or run into any difficulties I'd be glad to help.
AttackZerg
Profile Blog Joined January 2003
United States7465 Posts
November 19 2008 11:12 GMT
#15
This project has my stamp of approval.

This is a neat thing your doing, I'm interested to see how hard it is to fake your machine out .
NarutO
Profile Blog Joined December 2006
Germany18839 Posts
November 19 2008 11:39 GMT
#16
Thats pretty damn sick! Keep up the work, awesome dude! Really.
CommentatorPolt | MMA | Jjakji | BoxeR | NaDa | MVP | MKP ... truly inspiring.
roMAD
Profile Blog Joined April 2004
Russia2355 Posts
Last Edited: 2008-11-29 20:29:57
November 29 2008 20:29 GMT
#17
Wait. Itemmania_29 by any means is NOT Draco. It's not even close. It's beast[fOu]. And iteammania_16 is not Mistrzz at all. Your program is very inaccurate
MasterOfChaos
Profile Blog Joined April 2007
Germany2896 Posts
November 29 2008 22:13 GMT
#18
Impressive. What do you use to analyse the vector? And which observables do you use to create it?
LiquipediaOne eye to kill. Two eyes to live.
SpiritoftheTunA
Profile Blog Joined August 2006
United States20903 Posts
November 29 2008 22:27 GMT
#19
romad desperately avoids being outsourced~

jk, i'd trust romad over a program any day
posting on liquid sites in current year
LosingID8
Profile Blog Joined December 2006
CA10828 Posts
November 29 2008 22:40 GMT
#20
On November 30 2008 05:29 (paladin)roMAD wrote:
Wait. Itemmania_29 by any means is NOT Draco. It's not even close. It's beast[fOu]. And iteammania_16 is not Mistrzz at all. Your program is very inaccurate

true it's inaccurate right now, but thats probably because he doesn't have a good amount of reps for beast[fou] and other players.

once he gets a decent amount of reps for all known gamers then i feel that it would be pretty decent.


but i'd still want romad's opinion to be 100% sure
ModeratorResident K-POP Elitist
GrayArea
Profile Blog Joined December 2007
United States872 Posts
November 29 2008 23:25 GMT
#21
Seems like you need a similarity value that is close to 1 to be more confident that the match is correct. The draco and mistrzz example are around .5 and .25 respectively which means that based on your database, it is giving you similarities only on what you have (the low numbers represent this). Basically, I am agreeing with LosingID8. As the library grows, your predictions will be more accurate.
Kang Min Fighting!
Normal
Please log in or register to reply.
Live Events Refresh
WardiTV 2025
11:00
Playoffs
ByuN vs CreatorLIVE!
Clem vs Rogue
Scarlett vs Spirit
ShoWTimE vs Cure
WardiTV699
ComeBackTV 621
TaKeTV 253
IndyStarCraft 132
Rex116
IntoTheiNu 32
LiquipediaDiscussion
[ Submit Event ]
Live Streams
Refresh
StarCraft 2
SortOf 172
IndyStarCraft 132
Rex 116
Lowko92
BRAT_OK 49
StarCraft: Brood War
Britney 26104
Calm 4978
GuemChi 2607
Rain 1951
Bisu 1123
Horang2 950
actioN 663
Stork 481
Shuttle 428
Mini 311
[ Show more ]
firebathero 201
Rush 144
Larva 119
ggaemo 109
JYJ 107
Snow 94
Mind 94
Zeus 92
GoRush 63
Sacsri 60
hero 53
ToSsGirL 51
sorry 51
Killer 51
Bale 47
Mong 46
Barracks 46
Sea.KH 42
Terrorterran 26
910 25
soO 25
Shinee 22
zelot 15
ajuk12(nOOB) 13
Shine 10
Aegong 10
SilentControl 8
Noble 8
Icarus 5
Dota 2
Gorgc2879
singsing2534
XcaliburYe140
League of Legends
C9.Mang0353
Counter-Strike
olofmeister1551
shoxiejesuss860
allub122
oskar31
Other Games
B2W.Neo779
crisheroes340
Fuzer 231
XaKoH 158
Trikslyr20
Organizations
StarCraft: Brood War
lovetv 10
StarCraft 2
Blizzard YouTube
StarCraft: Brood War
BSLTrovo
sctven
[ Show 10 non-featured ]
StarCraft 2
• AfreecaTV YouTube
• intothetv
• Kozan
• IndyKCrew
• LaughNgamezSOOP
• Migwel
• sooper7s
StarCraft: Brood War
• BSLYoutube
• STPLYoutube
• ZZZeroYoutube
Upcoming Events
OSC
1h 48m
Big Brain Bouts
4h 48m
YoungYakov vs Jumy
TriGGeR vs Spirit
The PiG Daily
8h 48m
SHIN vs ByuN
Reynor vs Classic
TBD vs herO
Maru vs SHIN
TBD vs Classic
CranKy Ducklings
21h 48m
WardiTV 2025
22h 48m
Reynor vs MaxPax
SHIN vs TBD
Solar vs herO
Classic vs TBD
SC Evo League
1d
Ladder Legends
1d 6h
BSL 21
1d 7h
Sziky vs Dewalt
eOnzErG vs Cross
Sparkling Tuna Cup
1d 21h
Ladder Legends
2 days
[ Show More ]
BSL 21
2 days
StRyKeR vs TBD
Bonyth vs TBD
Replay Cast
2 days
Wardi Open
2 days
Monday Night Weeklies
3 days
WardiTV Invitational
4 days
Replay Cast
5 days
WardiTV Invitational
5 days
ByuN vs Solar
Clem vs Classic
Cure vs herO
Reynor vs MaxPax
Liquipedia Results

Completed

Acropolis #4 - TS3
RSL Offline Finals
Kuram Kup

Ongoing

C-Race Season 1
IPSL Winter 2025-26
KCM Race Survival 2025 Season 4
YSL S2
BSL Season 21
Slon Tour Season 2
CSL Season 19: Qualifier 1
WardiTV 2025
META Madness #9
eXTREMESLAND 2025
SL Budapest Major 2025
ESL Impact League Season 8
BLAST Rivals Fall 2025
IEM Chengdu 2025
PGL Masters Bucharest 2025
Thunderpick World Champ.
CS Asia Championships 2025
ESL Pro League S22

Upcoming

CSL Season 19: Qualifier 2
CSL 2025 WINTER (S19)
BSL 21 Non-Korean Championship
Acropolis #4
IPSL Spring 2026
Bellum Gens Elite Stara Zagora 2026
HSC XXVIII
Big Gabe Cup #3
OSC Championship Season 13
ESL Pro League Season 23
PGL Cluj-Napoca 2026
IEM Kraków 2026
BLAST Bounty Winter 2026
BLAST Bounty Winter Qual
TLPD

1. ByuN
2. TY
3. Dark
4. Solar
5. Stats
6. Nerchio
7. sOs
8. soO
9. INnoVation
10. Elazer
1. Rain
2. Flash
3. EffOrt
4. Last
5. Bisu
6. Soulkey
7. Mini
8. Sharp
Sidebar Settings...

Advertising | Privacy Policy | Terms Of Use | Contact Us

Original banner artwork: Jim Warren
The contents of this webpage are copyright © 2025 TLnet. All Rights Reserved.