Regresi Logistik dalam Pembelajaran Mesin

  • Post
    Regresi Logistik dalam Pembelajaran Mesin

    • Regresi logistik adalah salah satu algoritma Pembelajaran Mesin yang paling populer, yang berada di bawah teknik Pembelajaran yang Diawasi. Ini digunakan untuk memprediksi variabel dependen kategorikal menggunakan seperangkat variabel independen tertentu.
    • Regresi logistik memprediksi output dari variabel dependen kategoris. Oleh karena itu, hasilnya harus berupa nilai kategorikal atau diskrit. Ini bisa berupa Ya atau Tidak, 0 atau 1, Benar atau Salah, dll. Tetapi alih-alih memberikan nilai pasti sebagai 0 dan 1, ini memberikan nilai probabilistik yang berada di antara 0 dan 1.
    • Regresi Logistik sangat mirip dengan Regresi Linier kecuali bagaimana penggunaannya. Regresi Linier digunakan untuk menyelesaikan masalah Regresi, sedangkan Regresi logistik digunakan untuk menyelesaikan masalah klasifikasi.
    • Dalam regresi logistik, alih-alih menyesuaikan garis regresi, kami menyesuaikan fungsi logistik berbentuk “S”, yang memprediksi dua nilai maksimum (0 atau 1).
    • Kurva dari fungsi logistik menunjukkan kemungkinan sesuatu seperti apakah sel tersebut bersifat kanker atau tidak, tikus mengalami obesitas atau tidak berdasarkan beratnya, dll.
    • Regresi Logistik adalah algoritme pembelajaran mesin yang signifikan karena memiliki kemampuan untuk memberikan probabilitas dan mengklasifikasikan data baru menggunakan kumpulan data berkelanjutan dan diskrit.
    • Regresi Logistik dapat digunakan untuk mengklasifikasikan pengamatan menggunakan berbagai jenis data dan dapat dengan mudah menentukan variabel yang paling efektif yang digunakan untuk klasifikasi. Gambar di bawah ini menunjukkan fungsi logistik:

    Catatan: Regresi logistik menggunakan konsep pemodelan prediktif sebagai regresi; oleh karena itu, ini disebut regresi logistik, tetapi digunakan untuk mengklasifikasikan sampel; Oleh karena itu, ini termasuk dalam algoritma klasifikasi.

    Fungsi Logistik (Fungsi Sigmoid):

    • Fungsi sigmoid adalah fungsi matematika yang digunakan untuk memetakan nilai prediksi ke probabilitas.
    • Ini memetakan nilai nyata apa pun ke nilai lain dalam rentang 0 dan 1.
    • Nilai regresi logistik harus antara 0 dan 1, yang tidak boleh melebihi batas ini, sehingga membentuk kurva seperti bentuk “S”. Kurva bentuk S disebut dengan fungsi Sigmoid atau fungsi logistik.
    • Dalam regresi logistik, kami menggunakan konsep nilai ambang, yang mendefinisikan probabilitas baik 0 atau 1. Seperti nilai di atas nilai ambang cenderung 1, dan nilai di bawah nilai ambang cenderung 0.

    Asumsi untuk Regresi Logistik:

    • Variabel dependen harus bersifat kategoris.
    • Variabel independen tidak boleh memiliki multikolinearitas.

    Persamaan Regresi Logistik:

    Persamaan regresi logistik dapat diperoleh dari persamaan Regresi Linier. Langkah-langkah matematika untuk mendapatkan persamaan Regresi Logistik diberikan di bawah ini:

    Dalam Regresi Logistik y hanya bisa antara 0 dan 1, jadi untuk ini mari kita bagi persamaan di atas dengan (1-y):

     

    Tapi kita butuh range antara – [infinity] sampai + [infinity], kemudian ambil logaritma dari persamaan itu menjadi:

     

    Persamaan di atas adalah persamaan terakhir untuk Regresi Logistik.

    Jenis Regresi Logistik:

    Berdasarkan kategorinya, Regresi Logistik dapat diklasifikasikan menjadi tiga jenis:

    • Binomial:Dalam regresi logistik binomial, hanya ada dua kemungkinan jenis variabel dependen, seperti 0 atau 1, Lulus atau Gagal, dll.
    • Multinomial:Dalam regresi logistik multinomial, mungkin ada 3 atau lebih jenis variabel dependen yang tidak berurutan, seperti “kucing”, “anjing”, atau “domba”
    • Ordinal:Dalam regresi logistik ordinal, terdapat 3 atau lebih kemungkinan jenis variabel dependen yang diurutkan, seperti “rendah”, “Sedang”, atau “Tinggi”.

    Implementasi Regresi Logistik Python (Binomial)

    Untuk memahami implementasi Regresi Logistik dengan Python, kami akan menggunakan contoh di bawah ini:

    Contoh: Ada kumpulan data yang diberikan yang berisi informasi dari berbagai pengguna yang diperoleh dari situs jejaring sosial. Ada sebuah perusahaan pembuat mobil yang baru saja meluncurkan mobil SUV terbarunya. Jadi perusahaan ingin memeriksa berapa banyak pengguna dari kumpulan data yang ingin membeli mobil tersebut.

    Untuk masalah ini, kami akan membangun model Machine Learning menggunakan algoritma regresi logistik. Dataset ditunjukkan pada gambar di bawah ini. Dalam soal ini, kami akan memprediksi variabel yang dibeli (Variabel Dependen) dengan menggunakan umur dan gaji (variabel independen) .

     

    Langkah-langkah dalam Regresi Logistik: Untuk menerapkan Regresi Logistik menggunakan Python, kita akan menggunakan langkah-langkah yang sama seperti yang telah kita lakukan pada topik Regresi sebelumnya. Berikut langkah-langkahnya:

    • Langkah Pra-pemrosesan Data
    • Menyesuaikan Regresi Logistik ke set Pelatihan
    • Memprediksi hasil tes
    • Uji keakuratan hasil (Penciptaan matriks Kebingungan)
    • Memvisualisasikan hasil set pengujian.
    1. Langkah Pra-pemrosesan Data:Pada langkah ini, kita akan melakukan pra-proses / menyiapkan data agar dapat digunakan dalam kode kita secara efisien. Ini akan sama seperti yang kita lakukan di topik pra-pemrosesan data. Kode untuk ini diberikan di bawah ini:
    2. Langkah Pra-pemrosesan #Data
    3. # mengimpor perpustakaan
    4. impor numpy sebagai nm
    5. impor pyplot sebagai mtp
    6. import panda sebagai pd
    7. #importing dataset
    8. data_set = pd.read_csv ( ‘user_data.csv’ )

    Dengan mengeksekusi baris kode di atas, kita akan mendapatkan dataset sebagai outputnya. Pertimbangkan gambar yang diberikan:

     

    Sekarang, kami akan mengekstrak variabel dependen dan independen dari dataset yang diberikan. Di bawah ini adalah kode untuk itu:

    1. #Extracting Variabel Independen dan dependen
    2. x = data_set.iloc [:, [ 2 , 3 ]]. nilai
    3. y = data_set.iloc [:,  4 ] .values

    Pada kode di atas kita ambil [2, 3] untuk x karena variabel bebas kita adalah umur dan gaji, yang ada di indeks 2, 3. Dan kita ambil 4 untuk variabel y karena variabel terikat kita ada di indeks 4. Itu keluarannya adalah:

     

    Sekarang kita akan membagi dataset menjadi satu set pelatihan dan set pengujian. Di bawah ini adalah kode untuk itu:

    1. # Memisahkan set data menjadi set pelatihan dan pengujian.
    2. dari sklearn.model_selection  import train_test_split
    3. x_train, x_test, y_train, y_test = train_test_split (x, y, test_size =  25 , random_state = 0 )

     

    Dalam regresi logistik, kami akan melakukan penskalaan fitur karena kami ingin hasil prediksi yang akurat. Di sini kita hanya akan menskalakan variabel independen karena variabel dependen hanya memiliki nilai 0 dan 1. Di bawah ini adalah kode untuk itu:

    1. #feature Scaling
    2. dari sklearn.preprocessing  import StandardScaler
    3. st_x = StandardScaler ()
    4. x_train = st_x.fit_transform (x_train)
    5. x_test = st_x.transform (x_test)

    Output berskala diberikan di bawah ini:

     

    1. Menyesuaikan Regresi Logistik ke set Pelatihan:

    Kami telah menyiapkan dataset kami dengan baik, dan sekarang kami akan melatih dataset menggunakan set pelatihan. Untuk memberikan pelatihan atau menyesuaikan model ke set pelatihan, kami akan mengimpor kelas LogisticRegression dari pustaka sklearn .

    Setelah mengimpor kelas, kita akan membuat objek pengklasifikasi dan menggunakannya untuk menyesuaikan model dengan regresi logistik. Di bawah ini adalah kode untuk itu:

    1. #Menyesuaikan Regresi Logistik ke set pelatihan
    2. dari sklearn.linear_model  import LogisticRegression
    3. classifier = LogisticRegression (random_state = 0 )
    4. fit (x_train, y_train)

    Output: Dengan menjalankan kode di atas, kita akan mendapatkan output di bawah ini:

    Keluar [5]:

    1. LogisticRegression (C = 0 , class_weight = None, dual = False, fit_intercept = True,
    2. intercept_scaling = 1 , l1_ratio = Tidak ada, max_iter = 100 ,
    3. multi_class = ‘peringatkan’ , n_jobs = Tidak ada, penalti = ‘l2’ ,
    4. random_state = 0 , solver = ‘warn’ , tol = 0,0001 , verbose = 0 ,
    5. warm_start = Salah)

    Karenanya model kami sangat cocok dengan set pelatihan.

    1. Memprediksi Hasil Tes

    Model kita dilatih dengan baik di set pelatihan, jadi sekarang kita akan memprediksi hasilnya dengan menggunakan data set pengujian. Di bawah ini adalah kode untuk itu:

    1. #Memprediksi hasil set pengujian
    2. y_pred = classifier.predict (x_test)

    Pada kode di atas, kami telah membuat vektor y_pred untuk memprediksi hasil set pengujian.

    Gambar keluaran di atas menunjukkan pengguna yang diprediksi terkait yang ingin membeli atau tidak membeli mobil.

    1. Uji Akurasi hasil

    Sekarang kita akan membuat matriks kebingungan di sini untuk memeriksa keakuratan klasifikasi. Untuk membuatnya, kita perlu mengimpor fungsi confusion_matrix dari library sklearn. Setelah mengimpor fungsinya, kita akan memanggilnya menggunakan variabel baru cm . Fungsi ini mengambil dua parameter, terutama y_true (nilai aktual) dan y_pred (nilai yang ditargetkan dikembalikan oleh pengklasifikasi). Di bawah ini adalah kode untuk itu:

    1. #Membuat matriks Kebingungan
    2. dari sklearn.metrics  impor confusion_matrix
    3. cm = confusion_matrix ()

     

    Kita dapat menemukan keakuratan hasil prediksi dengan menginterpretasikan matriks konfusi. Dengan keluaran di atas, kita dapat mengartikan bahwa 65 + 24 = 89 (Keluaran Benar) dan 8 + 3 = 11 (Keluaran Salah).

    1. Memvisualisasikan hasil set pelatihan

    Terakhir, kami akan memvisualisasikan hasil set pelatihan. Untuk memvisualisasikan hasil, kita akan menggunakan kelas ListedColormap dari pustaka matplotlib. Di bawah ini adalah kode untuk itu:

    1. #Memvisualisasikan hasil set pelatihan
    2. dari matplotlib.colors  impor ListedColormap
    3. x_set, y_set = x_train, y_train
    4. x1, x2 = nm.meshgrid (nm.arange (mulai = x_set [:,  0 ] .min () –  1 , stop = x_set [:,  0 ] .max () +  1 , step = 0,01 ),
    5. arange (mulai = x_set [:,  1 ] .min () –  1 , stop = x_set [:,  1 ] .max () +  1 , langkah =  0,01 ))
    6. contourf (x1, x2, classifier.predict (nm.array ([x1.ravel (), x2.ravel ()]). T) .reshape (x1.shape),
    7. alpha =  0,75 , cmap = ListedColormap (( ‘ungu’ , ‘hijau’ )))
    8. xlim (x1.min (), x1.max ())
    9. ylim (x2.min (), x2.max ())
    10. untuk i, j di enumerate (nm.unique (y_set)):
    11. scatter (x_set [y_set == j,  0 ], x_set [y_set == j,  1 ],
    12. c = ListedColormap (( ‘ungu’ ,  ‘hijau’ )) (i), label = j)
    13. title ( ‘Regresi Logistik (Set Pelatihan)’ )
    14. xlabel ( ‘Usia’ )
    15. ylabel ( ‘Estimasi Gaji’ )
    16. legend ()
    17. show ()

    Pada kode di atas, kita telah mengimpor ListedColormap kelas Matplotlib perpustakaan untuk membuat peta warna memvisualisasikan hasilnya. Kami telah membuat dua variabel baru x_set dan y_set untuk menggantikan x_train dan y_train . Setelah itu, kami telah menggunakan perintah nm.meshgrid untuk membuat kisi persegi panjang, yang memiliki rentang -1 (minimum) hingga 1 (maksimum). Titik piksel yang kami ambil adalah resolusi 0,01.

    Untuk membuat kontur yang terisi, kita menggunakan perintah mtp.contourf , ini akan membuat daerah dengan warna yang disediakan (ungu dan hijau). Dalam fungsi ini, kita telah meneruskan classifier.predict untuk menunjukkan titik data yang diprediksi yang diprediksi oleh pengklasifikasi.

    Output: Dengan menjalankan kode di atas, kita akan mendapatkan output di bawah ini:

    Grafik tersebut dapat dijelaskan pada poin-poin di bawah ini:

    • Pada grafik di atas, kita dapat melihat bahwa ada beberapa titik Hijaudi dalam kawasan hijau dan titik Ungu di dalam kawasan ungu.
    • Semua poin data ini adalah poin observasi dari set pelatihan, yang menunjukkan hasil untuk variabel yang dibeli.
    • Grafik ini dibuat dengan menggunakan dua variabel bebas yaitu Umur pada sumbu xdan Taksiran gaji pada sumbu y .
    • The pengamatan titik unguadalah untuk yang dibeli (variabel dependen) mungkin 0, yaitu, pengguna yang tidak membeli mobil SUV.
    • The pengamatan titik hijauyang yang dibeli (variabel dependen) mungkin 1 berarti pengguna yang membeli mobil SUV.
    • Kami juga dapat memperkirakan dari grafik bahwa pengguna yang lebih muda dengan gaji rendah, tidak membeli mobil tersebut, sedangkan pengguna yang lebih tua dengan perkiraan gaji yang tinggi membeli mobil tersebut.
    • Namun ada beberapa titik ungu di kawasan hijau (Membeli mobil) dan beberapa titik hijau di kawasan ungu (Bukan membeli mobil). Jadi dapat dikatakan bahwa pengguna yang lebih muda dengan perkiraan gaji yang tinggi membeli mobil tersebut, sedangkan pengguna yang lebih tua dengan perkiraan gaji yang rendah tidak membeli mobil tersebut.

    Tujuan dari pengklasifikasi:

    Kami telah berhasil memvisualisasikan hasil set pelatihan untuk regresi logistik, dan tujuan kami untuk klasifikasi ini adalah untuk membagi pengguna yang membeli mobil SUV dan yang tidak membeli mobil tersebut. Jadi dari grafik keluaran, kita dapat dengan jelas melihat dua wilayah (Ungu dan Hijau) dengan titik pengamatan. Wilayah Ungu adalah untuk pengguna yang tidak membeli mobil, dan Wilayah Hijau adalah untuk pengguna yang membeli mobil.

    Pengklasifikasi Linear:

    Seperti yang dapat kita lihat dari grafik, pengklasifikasi adalah Garis lurus atau linier di alam seperti yang telah kita gunakan model Linear untuk Regresi Logistik. Dalam topik selanjutnya, kita akan belajar untuk Pengklasifikasi non-linier.

    Memvisualisasikan hasil set pengujian:

    Model kami dilatih dengan baik menggunakan set data pelatihan. Sekarang, kita akan memvisualisasikan hasil observasi baru (set Test). Kode untuk set pengujian akan tetap sama seperti di atas kecuali di sini kita akan menggunakan x_test dan y_test, bukan x_train dan y_train . Di bawah ini adalah kode untuk itu:

    1. #Melihat hasil set pengujian
    2. dari matplotlib.colors  impor ListedColormap
    3. x_set, y_set = x_test, y_test
    4. x1, x2 = nm.meshgrid (nm.arange (mulai = x_set [:,  0 ] .min () –  1 , stop = x_set [:,  0 ] .max () +  1 , step = 0,01 ),
    5. arange (mulai = x_set [:,  1 ] .min () –  1 , stop = x_set [:,  1 ] .max () +  1 , langkah =  0,01 ))
    6. contourf (x1, x2, classifier.predict (nm.array ([x1.ravel (), x2.ravel ()]). T) .reshape (x1.shape),
    7. alpha =  0,75 , cmap = ListedColormap (( ‘ungu’ , ‘hijau’ )))
    8. xlim (x1.min (), x1.max ())
    9. ylim (x2.min (), x2.max ())
    10. untuk i, j di enumerate (nm.unique (y_set)):
    11. scatter (x_set [y_set == j,  0 ], x_set [y_set == j,  1 ],
    12. c = ListedColormap (( ‘ungu’ ,  ‘hijau’ )) (i), label = j)
    13. title ( ‘Regresi Logistik (Set pengujian)’ )
    14. xlabel ( ‘Usia’ )
    15. ylabel ( ‘Estimasi Gaji’ )
    16. legend ()
    17. show ()

     

     

     

    credit. javatpoint

    Ampuh! Ini rahasia mengembangkan aplikasi secara instan, tinggal download dan kembangkan. Gabung sekarang juga! Premium Membership [PRIVATE] https://premium.codeorayo.com

Tagged: 

  • You must be logged in to reply to this topic.