Baru-baru ini, saya menemukan masalah. Berdasarkan kombinasi kartu yang Anda dapatkan, Anda harus memprediksi tangan yang Anda miliki dalam permainan poker. Sebelum memprediksi tangan para pemain poker, hal yang harus sering kalian lakukan adalah bisa bermain slot di situs cuan slot untuk bisa memprediksi pola slot terlebih dahulu. Jika kata ‘predict’ membuat telinga Anda berdiri dan Anda sudah memikirkan model klasifikasi mana yang akan Anda gunakan, maka ada kemungkinan Anda telah kalah. Inilah alasannya…
Latar Belakang
Sebelum saya mulai membahas pendekatannya, berikut adalah penyegaran poker cepat untuk Anda yang baru mengenal permainan. Poker mungkin adalah permainan kartu paling populer di dunia saat ini. Ini bukan permainan yang sangat rumit. Setiap permainan dapat membuat tangan menggunakan 5 kartu, 2 di antaranya ada di tangan Anda dan tiga di atas meja. Ada berbagai jenis tangan yang dapat dimiliki satu pemain dan masing-masing tangan memiliki peringkat berdasarkan Aturan Poker.
Deskripsi Data
Anda bisa mendapatkan salinan file tes dan pelatihan di sini. Meskipun mereka mengikuti format yang sama, set masalah yang saya temukan memiliki 1.000.000 sampel pelatihan dan 25.010 sampel pengujian sedangkan sebaliknya dalam hal tautan yang saya lampirkan. Namun, seperti yang saya katakan, pendekatan pembelajaran mesin mungkin tidak membawa Anda ke mana pun. Saya pikir alasan mereka memberikan contoh pengujian hampir 40 kali lebih banyak daripada pelatihan adalah agar pendekatan pembelajaran mesin generik akan gagal. Kami akan membahasnya sebentar lagi. Berikut ini adalah deskripsi data dari file tersebut. Setiap tangan terdiri dari lima kartu dengan setelan dan peringkat tertentu, diambil dari setumpuk standar 52. Setelan dan peringkat direpresentasikan sebagai kategori ordinal:
Setiap baris dalam set pelatihan memiliki label kelas yang menyertainya untuk tangan poker yang dikandungnya. Tangan dihilangkan dari set tes dan harus diprediksi. Tangan diklasifikasikan ke dalam kategori ordinal berikut:
Perhatikan bahwa tangan Straight flush dan Royal flush tidak mewakili domain sebenarnya karena mereka telah over-sampling.
Royal Flush
14,43 kali lebih mungkin terjadi di set latihan, sedangkan royal flush 129,82 kali lebih mungkin terjadi daripada di game sebenarnya. Berikut tampilan data di DataFrame setelahnya
Penyelesaian Masalah
Saya cukup yakin teknik pembelajaran mesin pertama yang muncul di pikiran Anda adalah pendekatan berbasis pohon dan, ya itu masuk akal, bukan? Kecuali, benchmark Random-Forest memiliki akurasi 62,4%. Ya, cukup rendah.
Sekarang, bagi Anda yang telah memutuskan bahwa ini adalah masalah ML dan itu hanya hasil dasar dan Anda dapat melakukan yang lebih baik, saya menghargainya. Faktanya, saya terbuka untuk membaca tentang pendekatan pembelajaran mesin apa pun yang mungkin Anda temukan untuk menyelesaikan masalah ini dengan akurasi yang sangat tinggi (lebih disukai, 1). Bicaralah tentang mereka di komentar di bawah. Namun, saya hampir yakin bahwa tidak ada solusi ML yang ‘layak’ untuk masalah ini. Anda dapat menumpuk lapisan demi lapisan dan membangun model pembelajaran mendalam dengan sejumlah besar parameter, tetapi apakah Anda benar-benar bangga pada diri sendiri?
Saat saya melihat masalah ini, saya mulai berpikir seperti pemain poker. Mereka cenderung selalu benar dan sepertinya tidak menggunakan algoritme ML apa pun. Tentu, mereka memang memiliki arsitektur jaringan saraf terbaik yaitu otak, tetapi bagaimana cara meniru pendekatan itu? Saat itulah saya menyadari bahwa alih-alih pembelajaran mesin, saya harus menggunakan pendekatan iteratif sederhana dengan beberapa fungsi dasar. Jadi, mari kita mengotori tangan kita.
Itu akan selalu berguna untuk memiliki entri pengujian. Ini akan memungkinkan Anda memodifikasi input dan menguji setiap fungsi Anda.
Perpustakaan
Ini adalah tugas yang cukup sederhana sehingga Anda hanya perlu perpustakaan pandas untuk manipulasi data dan scikit-belajar untuk ukuran akurasi.
Ekstraksi Data
Tugas kita selanjutnya adalah membuat fungsi yang mengekstrak data dari deretan DataFrame yang akan berada dalam tipe data Seri dan menyimpannya dalam kamus dengan setiap fitur sebagai kunci dalam kamus.
Sekarang, kita membutuhkan fungsi yang berbeda untuk memeriksa tangan seperti apa yang dimiliki pemain. Fungsi-fungsi ini bekerja dengan cara yang sangat mendasar. Kami memberikan informasi kartu dalam kamus dan mereka memeriksa apakah kondisi poker tertentu terpenuhi atau tidak. Kembalikan 1 untuk ya dan 0 untuk tidak. Anda bisa menjadi imajinatif seperti yang Anda inginkan. Pertama, mari kita periksa flush. Flush dicapai ketika kelima kartu memiliki jenis yang sama. Fungsi pemeriksaan yang cukup sederhana.
Baca juga : How To Find Trusted Online Poker Gambling Site