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 ?
![workshop-data-analytic workshop-data-analytic](https://i0.wp.com/www.bengkelti.com/wp-content/uploads/2023/09/workshop-data-analytic-scaled-1.webp?resize=1080%2C608&ssl=1)
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.
![random_state apa-itu-random-state](https://i0.wp.com/www.bengkelti.com/wp-content/uploads/2024/03/random_state.webp?resize=1080%2C614&ssl=1)
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.
![random_state-1 apa-itu-random-state](https://i0.wp.com/www.bengkelti.com/wp-content/uploads/2024/03/random_state-1.webp?resize=1080%2C665&ssl=1)
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.
0 Comments