Standing dota 2 adalah legal center
Pengenalan Deep Learning Part 5 : Dota 2 Heroes Classification (Multiclass Classification)
Kali ini pembahasan kita sedikit menarik. Buat kalian yang suka maen Dota, pasti tahu kalau sampai patch 7.07 ada 115 heroes yang kalau dilihat dari primary attributesnya, mereka dibagi menjadi 3 kelompok : Strength(STR), Agility(AGI) dan Intelligent(INT).
Tiap hero memiliki stats yang berbeda-beda seperti Base STR, Base AGI, Base INT, STR Growth, Min DMG, Max DMG, Movement Speed, dll. Data yang kita gunakan kali ini berasal dari https://dota2.gamepedia. Standing dota 2 adalah legal center com/Table_of_hero_attributes
Kita ambil contoh Centaur, dia adalah hero type STR, kita bisa lihat kalau nilai stats base strength dan strength growth sangat tinggi namun ada cukup banyak hero yang mempunyai stats tinggi pada salah satu attributes tapi bukan merupakan hero type tersebut.
Seperti Ogre Magi, dia adalah type INT, tapi nilai base strength, strength growth dan max strength nya lebih tinggi daripada stats intelligent nya. Standing dota 2 adalah legal center Nah, yang akan kita lakukan disini adalah mencoba melakukan klasifikasi semua hero berdasarkan stats yang ada. Standing dota 2 adalah legal center
The Data
Contoh data trainingnya seperti ini :
Juga bisa didownload di:
Package yang akan kita gunakan kali ini adalah sebagai berikut:
Data Pre-processing
Pertama kita parse page tersebut dan convert HTML table menjadi CSV. Kita memiliki 115 buah data. Standing dota 2 adalah legal center Nanti ada 16 hero yang akan kita ambil sebagai validation dan sisanya kita gunakan sebagai training.
Untuk validation data, kita ambil beberapa hero yang memiliki stats yang aneh seperti Jakiro, Winter Wyvern (Strength tinggi tapi termasuk INT hero), Phoenix, IO (Strength rendah tapi termasuk STR hero), Bloodseeker, Undying, dll.
Stats yang “menurut saya” t >Day Vision, Night Vision, Collision Size, Legs :D. Sehingga kita punya 22 features yang akan kita gunakan untuk melakukan klasifikasi. Type hero akan kita gunakan sebagai target yang memiliki nilai 0 untuk STR, 1 untuk AGI dan 2 untuk INT.
Features Correlation
Dari 22 features diatas, bisa jadi tidak semua features mempunyai kontribusi terhadap type hero atau bisa dibiliang naik-turun nya sebuah feature tidak memberikan pengaruh terhadap type hero.
Untuk mencari feature tersebut kita bisa menggunakan correlation matrix untuk setiap variable.
Apa itu correlation matrix? Correlation matrix berisi nilai antara -1 dan +1. Sebagai contoh jika correlation antara variable X dan Y benilai -1, maka pada saat nilai X turun, nilai Y akan naik.
Jika bernilai +1, maka hubungan antara X dan Y adalah linear. Namun jika nilai correlation semakin dekat dengan 0, maka variable tersebut bisa dikatakan tidak mempengaruhi satu dengan yang lain.
Kali ini kita akan membuang semua feature yang memiliki nilai correlation lebih kecil dari 0.1 atau -0.1 seperti regeneration rate, turn rate, movement speed dan anehnya disini base AGI, AGI growth dan max AGI memiliki nilai yang sangat kecil.
Sehingga didapatkan 16 feature yang akan kita gunakan sebagai input dari neural network.
Prepare the Data
Pada tahap ini kita akan merubah pandas dataFrame menjadi NumPy array. Kita akan menggunakan data dari kolom 2 hingga terakhir sebagai input dan kolom 1 sebagai output/target yang nanti akan diconvert menjadi one-hot vector : STR => [1, 0, 0], AGI => [0, 1, 0] dan INT => [0, 0, 1] sehingga kita bisa gunakan sebagai output dari model.
Create The Model
Model yang akan kita buat mempunyai 16 neuron pada input layer, 10 neuron pada hidden layer dengan Sigmoid activation dan 3 neuron yang mewakili (STR, AGI dan INT) pada output layer dengan Softmax activation dan output dari model kita adalah probability distribution dari seluruh nilai target.
Kenapa tidak menggunakan ReLU? Silakan dicoba dengan menggunakan ReLU dan nanti tuliskan hasilnya di komentar, nanti sama-sama kita bahas.
Misalkan model kita 100% yakin jika hero A adalah STR, maka output dari model adalah [1, 0, 0] dan jika model kita 50% yakin jika hero B adalah AGI, 25% yakin jika hero B adalah STR atau INT, maka output dari model kita adalah [0.25, 0.5, 0.25].
Harus diingat bahwa total nilai dari probability distribution untuk semua target adalah 1
Sedangkan untuk loss function kita akan gunakan Cross Entropy dan Optimizernya kita tetap gunakan SGD dengan learning rate sebesar 0.001. Sebagai catatan kita menambahkan metrics accuracy untuk melihat seberapa bagus model kita dalam melakukan klasifikasi.
Selanjutnya kita akan melakukan training dan evaluation. Setelah selesai kita akan simpan weight dan biasnya kedalam sebuah file untuk kita bisa gunakan lagi nanti. Pada saat saya coba, saya mendapatkan 90% accuracy untuk data training dan 75% accuracy untuk data validation setelah 5000 epochs.
Terdapat kesalahan prediksi pada hasil diatas, seperti Arc Warden yang seharusnya adalah Agility Hero, Phoenix dan IO yang adalah Strength Hero dan Tuskar yang sebenarnya adalah Strength Hero.
Ada saat dimana model tidak bisa dengan yakin menebak tipe hero, hal ini dapat dilihat pada Weaver dan Undying, dimana selisih probability antara ketiga type tidak jauh berbeda. Standing dota 2 adalah legal center
Complete Code
Dibawah ini adalah series Pengenalan Deep Learning yang bisa kamu ikuti :
Pengenalan Deep Learning Part 5 : Dota 2 Heroes Classification (Multiclass Classification)
Kali ini pembahasan kita sedikit menarik. Buat kalian yang suka maen Dota, pasti tahu kalau sampai patch 7.07 ada 115 heroes yang kalau dilihat dari primary attributesnya, mereka dibagi menjadi 3 kelompok : Strength(STR), Agility(AGI) dan Intelligent(INT).
Tiap hero memiliki stats yang berbeda-beda seperti Base STR, Base AGI, Base INT, STR Growth, Min DMG, Max DMG, Movement Speed, dll. Data yang kita gunakan kali ini berasal dari https://dota2.gamepedia. Standing dota 2 adalah legal center com/Table_of_hero_attributes
Kita ambil contoh Centaur, dia adalah hero type STR, kita bisa lihat kalau nilai stats base strength dan strength growth sangat tinggi namun ada cukup banyak hero yang mempunyai stats tinggi pada salah satu attributes tapi bukan merupakan hero type tersebut.
Seperti Ogre Magi, dia adalah type INT, tapi nilai base strength, strength growth dan max strength nya lebih tinggi daripada stats intelligent nya. Standing dota 2 adalah legal center Nah, yang akan kita lakukan disini adalah mencoba melakukan klasifikasi semua hero berdasarkan stats yang ada. Standing dota 2 adalah legal center
The Data
Contoh data trainingnya seperti ini :
Juga bisa didownload di:
Package yang akan kita gunakan kali ini adalah sebagai berikut:
Data Pre-processing
Pertama kita parse page tersebut dan convert HTML table menjadi CSV. Kita memiliki 115 buah data. Standing dota 2 adalah legal center Nanti ada 16 hero yang akan kita ambil sebagai validation dan sisanya kita gunakan sebagai training.
Untuk validation data, kita ambil beberapa hero yang memiliki stats yang aneh seperti Jakiro, Winter Wyvern (Strength tinggi tapi termasuk INT hero), Phoenix, IO (Strength rendah tapi termasuk STR hero), Bloodseeker, Undying, dll.
Stats yang “menurut saya” t >Day Vision, Night Vision, Collision Size, Legs :D. Sehingga kita punya 22 features yang akan kita gunakan untuk melakukan klasifikasi. Type hero akan kita gunakan sebagai target yang memiliki nilai 0 untuk STR, 1 untuk AGI dan 2 untuk INT.
Features Correlation
Dari 22 features diatas, bisa jadi tidak semua features mempunyai kontribusi terhadap type hero atau bisa dibiliang naik-turun nya sebuah feature tidak memberikan pengaruh terhadap type hero.
Untuk mencari feature tersebut kita bisa menggunakan correlation matrix untuk setiap variable.
Apa itu correlation matrix? Correlation matrix berisi nilai antara -1 dan +1. Sebagai contoh jika correlation antara variable X dan Y benilai -1, maka pada saat nilai X turun, nilai Y akan naik.
Jika bernilai +1, maka hubungan antara X dan Y adalah linear. Namun jika nilai correlation semakin dekat dengan 0, maka variable tersebut bisa dikatakan tidak mempengaruhi satu dengan yang lain.
Kali ini kita akan membuang semua feature yang memiliki nilai correlation lebih kecil dari 0.1 atau -0.1 seperti regeneration rate, turn rate, movement speed dan anehnya disini base AGI, AGI growth dan max AGI memiliki nilai yang sangat kecil.
Sehingga didapatkan 16 feature yang akan kita gunakan sebagai input dari neural network.
Prepare the Data
Pada tahap ini kita akan merubah pandas dataFrame menjadi NumPy array. Kita akan menggunakan data dari kolom 2 hingga terakhir sebagai input dan kolom 1 sebagai output/target yang nanti akan diconvert menjadi one-hot vector : STR => [1, 0, 0], AGI => [0, 1, 0] dan INT => [0, 0, 1] sehingga kita bisa gunakan sebagai output dari model.
Create The Model
Model yang akan kita buat mempunyai 16 neuron pada input layer, 10 neuron pada hidden layer dengan Sigmoid activation dan 3 neuron yang mewakili (STR, AGI dan INT) pada output layer dengan Softmax activation dan output dari model kita adalah probability distribution dari seluruh nilai target.
Kenapa tidak menggunakan ReLU? Silakan dicoba dengan menggunakan ReLU dan nanti tuliskan hasilnya di komentar, nanti sama-sama kita bahas.
Misalkan model kita 100% yakin jika hero A adalah STR, maka output dari model adalah [1, 0, 0] dan jika model kita 50% yakin jika hero B adalah AGI, 25% yakin jika hero B adalah STR atau INT, maka output dari model kita adalah [0.25, 0.5, 0.25].
Harus diingat bahwa total nilai dari probability distribution untuk semua target adalah 1
Sedangkan untuk loss function kita akan gunakan Cross Entropy dan Optimizernya kita tetap gunakan SGD dengan learning rate sebesar 0.001. Sebagai catatan kita menambahkan metrics accuracy untuk melihat seberapa bagus model kita dalam melakukan klasifikasi.
Selanjutnya kita akan melakukan training dan evaluation. Setelah selesai kita akan simpan weight dan biasnya kedalam sebuah file untuk kita bisa gunakan lagi nanti. Pada saat saya coba, saya mendapatkan 90% accuracy untuk data training dan 75% accuracy untuk data validation setelah 5000 epochs.
Terdapat kesalahan prediksi pada hasil diatas, seperti Arc Warden yang seharusnya adalah Agility Hero, Phoenix dan IO yang adalah Strength Hero dan Tuskar yang sebenarnya adalah Strength Hero.
Ada saat dimana model tidak bisa dengan yakin menebak tipe hero, hal ini dapat dilihat pada Weaver dan Undying, dimana selisih probability antara ketiga type tidak jauh berbeda. Standing dota 2 adalah legal center
Complete Code
Dibawah ini adalah series Pengenalan Deep Learning yang bisa kamu ikuti :

