Sebelum membahas apa itu Random State, mungkin anda familiar dengan penggunaan random_state saat membagi data dalam Machine Learning atau dalam penyetelan hyperparameter. Banyak orang sering menggunakan nilai random_state seperti 0 atau 42. Namun, apa sebenarnya random_state itu? Mari kita jelajahi dan temukan jawabannya.
Apa itu Random State ?

Dalam Scikit-learn, random_state mengontrol pengacakan yang diterapkan pada data sebelum melakukan pemisahan. Kami menggunakannya saat menggunakan train_test_split untuk membagi data menjadi kumpulan data pelatihan dan pengujian. Ini dapat diisi dengan salah satu dari nilai-nilai berikut.
Secara default, nilai random_state
tidak ada, yang berarti itu menggunakan contoh keadaan acak global dari numpy.random
. Dalam hal ini, jika fungsi yang sama dipanggil tanpa menetapkan nilai random_state
, akan menghasilkan hasil yang berbeda setiap kali dieksekusi.
Jika kita menggunakan nilai bilangan bulat tertentu untuk random_state
, hasilnya akan konsisten untuk nilai bilangan bulat tersebut. Namun, jika kita mengubah nilai random_state
, hanya hasil yang berubah sedangkan perilaku pengacakan tetap sama.
random_state tidak bisa negatif.
Bagaimana Cara Kerja Random State
Misalkan kita memiliki dataset yang terdiri dari 10 angka, yaitu 1 sampai 10. Sekarang, jika kita ingin membaginya menjadi dataset pelatihan dan pengujian, dengan ukuran dataset pengujian sebesar 20% dari keseluruhan dataset, maka dataset pelatihan akan terdiri dari 8 sampel data, sedangkan dataset pengujian akan terdiri dari 2 sampel data.
Penting untuk memastikan bahwa proses pengacakan dataset menghasilkan hasil yang konsisten setiap saat, sehingga kode dapat direproduksi. Tanpa pengacakan dataset, setiap eksekusi kode dapat menghasilkan dataset yang berbeda, yang tidak ideal untuk melatih model karena setiap latihan menggunakan data yang berbeda. Oleh karena itu, setiap kali kita ingin mengacak dataset, kita menggunakan nilai random_state. Ini memastikan bahwa satu nilai random_state menghasilkan pengacakan yang konsisten, sehingga setiap kali kode dijalankan dengan nilai random_state yang sama, akan menghasilkan pembagian dataset yang serupa.
Ini sangat penting untuk memastikan konsistensi dalam percobaan dan evaluasi model.

Banyak orang, termasuk saya sendiri, sering menggunakan nilai random_state = 42 saat membagi dataset. Dari gambar di atas, dapat kita lihat bahwa ketika menggunakan nilai random_state = 42, akan menghasilkan satu kumpulan data acak yang konsisten. Dengan kata lain, setiap kali kita menggunakan nilai random_state = 42, kita akan mendapatkan kumpulan data yang diacak yang sama.
Jadi, 42 bukanlah nomor atau angka khusus untuk random_state.
Mari kita cermati bagaimana ini dapat digunakan untuk memisahkan data
Dalam contoh ini, kami menggunakan dataset Kualitas anggur dan menerapkan Regresi Linier. Fokus kami adalah pada random_state, bukan akurasi model, sehingga kami memilih pendekatan yang sederhana.
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
data = pd.read_csv(‘winequality-red.csv’) # Here I use data of wine quality.
X = data.iloc[:,:-1]
y = data.iloc[:,-1]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
model = LinearRegression()
model.fit(X_train, y_train)
pred = model.predict(X_test)
print(mean_squared_error(y_test, pred))
Dalam kode di atas, saat menggunakan random_state=0, nilai mean_squared_error adalah 0.384471197820124. Namun, jika kita mencoba nilai random_state yang berbeda, maka nilai kesalahan akan bervariasi setiap kali.
- Untuk random_state=1, nilai mean_squared_error adalah 0,38307198158142.
- Untuk random_state=69, nilai mean_squared_error adalah 0,47013897077423.
- Sedangkan untuk random_state=143, nilai mean_squared_error adalah 0,42062134425032.
Berapa Banyak Random State yang mungkin terjadi ?
Â
Saya telah melakukan eksperimen untuk mengetahui berapa banyak set data unik yang dapat kita peroleh dengan mengacak dataset asli.
Saya telah mengambil kumpulan data berisi 5 data (Sederhana 1, 2, 3, 4, 5) dan membaginya menjadi kumpulan data pelatihan dan pengujian sebanyak 2000 kali, dengan menggunakan nilai random_state dari 1 hingga 2000. Saya menyimpan 2000 kumpulan data yang diacak ini dalam sebuah daftar. Setelah memeriksa daftar, saya menemukan bahwa terdapat 120 dataset unik yang berbeda.
Dengan kata lain, ketika menggunakan kumpulan data 5 data, kita dapat memperoleh total 120 kombinasi unik dari dataset yang berbeda. Artinya, kita dapat menggunakan nilai random_state dari 0 hingga 119 untuk mendapatkan setiap kombinasi tersebut. Jika kita menggunakan nilai random_state yang lebih besar dari 119, hasilnya akan tetap menghasilkan salah satu dari 120 kumpulan data unik tersebut.

Mengapa Kita Membutuhkannya ?
Bayangkan kita menganalisis prediksi harga rumah. Dalam dataset, urutan data dari atas ke bawah mungkin mengikuti pola tertentu, misalnya jumlah kamar tidur atau luas apartemen bertambah. Ini biasanya disebut sebagai bias data. Jika kita membagi data tanpa mengacaknya, ini dapat menghasilkan performa yang baik pada kumpulan data pelatihan tetapi performa buruk pada pengujian. Oleh karena itu, penting untuk melakukan pengacakan data agar hasilnya konsisten.
Ketika kita membagi data, kita ingin memastikan konsistensi dalam hasil kumpulan data setiap kali kode dijalankan kembali. Ini berarti dataset pelatihan dan pengujian akan tetap sama setiap kali kode dijalankan kembali. Inilah sebabnya mengapa kita menggunakan random_state.
Perbedaan dalam nilai random_state dapat mempengaruhi performa model. Seperti yang terlihat dalam contoh sebelumnya, berbagai nilai random_state menghasilkan mean_squared_error yang berbeda. Artinya, dengan memilih nilai random_state yang berbeda, kita dapat mengubah hasil kesalahan model.
Kegunaan Lain Dari Random State
Dalam beberapa algoritma seperti KMeans, Random Forest, dan Decision Tree, parameter random_state digunakan untuk mengontrol keacakan dalam proses tertentu. Misalnya, dalam KMeans, parameter ini menentukan pembangkitan angka acak untuk inisialisasi centroid, sementara dalam Random Forest, parameter ini mengontrol keacakan dalam bootstrap sampel dan pemilihan fitur. Pada Decision Tree, random_state digunakan untuk menemukan fitur terbaik yang mengontrol pemisahan node. Secara umum, penggunaan random_state bertujuan untuk memastikan hasil yang konsisten dan dapat direproduksi dalam model pembelajaran mesin.
Jika anda menggunakan systemD, anda harus membuat layanan untuk skrip misalnya sync.sh anda, file ini akan menjadi:
/lib/systemd/system/sync.service
Anda dapat mengedit file ini (dengan hak ‘root’ atau ‘sudo’) sehingga berisi:
[Unit]
Description=My Shell Script for Sync
[Service]
ExecStart=/usr/bin/sync.sh
[Install]
WantedBy=multi-user.target
Kemudian, anda memuat ulang daemon systemD anda (sehingga ia mengetahui bahwa layanan telah ditambahkan):
sudo systemctl daemon-reload
Kemudian anda dapat mengaktifkan layanan anda (sehingga akan diluncurkan pada setiap permulaan sistem:
sudo systemctl enable sync.service
Kemudian anda dapat memulainya secara manual sehingga akan langsung dimulai, tanpa menunggu sistem restart berikutnya :
sudo systemctl start sync.service
Dan tentu saja, anda dapat mengubah nama layanan anda sesuai keinginan anda.
Ive read several just right stuff here Certainly price bookmarking for revisiting I wonder how a lot effort you place to create this kind of great informative website
Fantastic site Lots of helpful information here I am sending it to some friends ans additionally sharing in delicious And of course thanks for your effort
My brother suggested I might like this website He was totally right This post actually made my day You cannt imagine just how much time I had spent for this information Thanks
Thank you for the good writeup It in fact was a amusement account it Look advanced to far added agreeable from you However how could we communicate
Very nice post and right to the point. I am not sure if this is in fact the best place to ask but do you folks have any thoughts on where to hire some professional writers? Thanks in advance 🙂
I was recommended this website by my cousin I am not sure whether this post is written by him as nobody else know such detailed about my difficulty You are wonderful Thanks
I do agree with all the ideas you have introduced on your post They are very convincing and will definitely work Still the posts are very short for newbies May just you please prolong them a little from subsequent time Thank you for the post
I do not even know how I ended up here but I thought this post was great I do not know who you are but certainly youre going to a famous blogger if you are not already Cheers
I do not even know how I ended up here but I thought this post was great I dont know who you are but definitely youre going to a famous blogger if you arent already Cheers
Hi my family member I want to say that this post is awesome nice written and come with approximately all significant infos I would like to peer extra posts like this
Excellent blog here Also your website loads up very fast What web host are you using Can I get your affiliate link to your host I wish my web site loaded up as quickly as yours lol
Your blog is a testament to your expertise and dedication to your craft. I’m constantly impressed by the depth of your knowledge and the clarity of your explanations. Keep up the amazing work!
What i do not understood is in truth how you are not actually a lot more smartlyliked than you may be now You are very intelligent You realize therefore significantly in the case of this topic produced me individually imagine it from numerous numerous angles Its like men and women dont seem to be fascinated until it is one thing to do with Woman gaga Your own stuffs nice All the time care for it up