Berbagi teknologi

Regresi logistik (teori murni)

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1. Apa itu regresi logistik?

Regresi logistik merupakan salah satu metode pembelajaran statistika yang umum digunakan, terutama digunakan untuk menyelesaikan masalah klasifikasi.Meskipun ada kata "regresi" pada namanya, ini sebenarnya adalah algoritma klasifikasi

2. Mengapa pembelajaran mesin perlu menggunakan regresi logistik?

1. Klasifikasi biner

Ini adalah penggunaan regresi logistik yang paling mendasar dan umum.Dapat memprediksi apakah suatu peristiwa akan terjadi dan hasil keluarannya adalah ya atau tidak

Misalnya:

  • Memprediksi apakah pengguna akan mengklik iklan
  • Tentukan apakah sebuah email adalah spam
  • Mendiagnosis apakah pasien menderita suatu penyakit

Semua contoh ini memiliki ciri yang sama, yaitu hanya ada dua hasil, benar (1) dan salah (0)

2. Klasifikasi multi-kategori

Regresi logistik dapat diperluas ke masalah klasifikasi multi-kategori melalui metode seperti One-vs-Rest atau softmax

Misalnya:

  • Klasifikasi objek dalam pengenalan gambar
  • Klasifikasi teks (klasifikasi berita, analisis sentimen, dll.)

Semua contoh ini memiliki fitur yang sama, yaitu, objek yang sama memiliki beberapa kemungkinan hasil, mirip dengan pertanyaan pilihan ganda pada umumnya. Ada beberapa pilihan, tetapi hanya ada satu pilihan yang paling sesuai dengan jawabannya.

3. Prediksi probabilitas

Regresi logistik tidak hanya memberikan hasil klasifikasi, namun juga menghasilkan nilai probabilitas, yang sangat berguna dalam banyak skenario.

Misalnya:

  • Memprediksi kemungkinan pelanggan membeli suatu produk
  • Menilai kemungkinan risiko gagal bayar pemohon pinjaman

Semua contoh ini memiliki ciri yang sama, yaitu prediksi, yaitu menggunakan hasil yang diketahui untuk menyimpulkan hasil yang tidak diketahui.

Jika Anda belum memahami peran regresi logistik, tidak masalah. Saya akan memberikan contoh yang mudah dipahami.

Bayangkan Anda adalah seorang dokter dan perlu menentukan apakah seorang pasien mengidap penyakit tertentu. Regresi logistik seperti asisten cerdas yang membantu Anda membuat penilaian ini. Sama seperti dokter yang melihat berbagai indikator pemeriksaan fisik pasien, regresi logistik akan mempertimbangkan beberapa faktor terkait (kami menyebutnya fitur). Beberapa metrik mungkin lebih penting dibandingkan metrik lainnya. Regresi logistik memberikan "bobot" pada setiap faktor, yang mencerminkan pentingnya faktor tersebut. Terakhir, alih-alih hanya mengatakan "ya" atau "tidak", hal ini memberikan kemungkinan. Misalnya, "Kemungkinan pasien ini terkena penyakit ini adalah 70%." Anda dapat menetapkan standar, misalnya jika melebihi 50% dianggap "ya", jika tidak maka dianggap "tidak". Regresi logistik “belajar” dari sejumlah besar kasus yang diketahui. Ibarat seorang dokter yang memperoleh pengalaman melalui banyak kasus.

Tentu saja, peran regresi logistik lebih dari itu, karena dibatasi oleh ruang (Sebenarnya aku hanya ingin bermalas-malasan), saya tidak akan membahas terlalu banyak perkenalan.

3.Oke, mari kita perkenalkan rumus regresi logistik

Saya pribadi tidak suka memberi Anda banyak rumus matematika secara bertele-tele, lalu memberi tahu Anda bahwa prinsip yang mendasarinya adalah rumus matematika tersebut, dan membiarkan Anda memahaminya sendiri secara perlahan.Yang saya harapkan adalah bisa menganalisis beberapa rumus inti dan mengapa perlu menggunakan beberapa rumus tersebut. Hal ini saya harap dapat dijelaskan dengan jelas di artikel saya.

1. Rumus regresi linier

kamu = b0 + b1x1 + b2x2 + ... + bn*xn

  • kamuadalah variabel terikat, nilai yang ingin kita prediksi.
  • b0adalah intersep, yang menunjukkan nilai variabel terikat ketika semua variabel bebas bernilai 0
  • b1, b2, ..., bnadalah koefisien regresi yang menunjukkan besarnya pengaruh masing-masing variabel independen terhadap variabel dependen
  • x1, x2, ..., x3merupakan variabel bebas yaitu nilai yang digunakan untuk memprediksi variabel terikat

Berikut adalah contoh regresi linier

Tidak masalah jika Anda tidak memahami kodenya, lihat saja gambarnya

  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. import matplotlib.font_manager as fm
  4. # Generate some simulated house data
  5. np.random.seed(0)
  6. area = np.random.rand(100) * 200 + 50 # House area (square meters)
  7. price = 2 * area + 5000 + np.random.randn(100) * 500 # House price (ten thousand yuan)
  8. # Fit the data using linear regression
  9. from sklearn.linear_model import LinearRegression
  10. model = LinearRegression()
  11. model.fit(area.reshape(-1, 1), price)
  12. # Get the regression coefficients
  13. b0 = model.intercept_
  14. b1 = model.coef_[0]
  15. # Plot the scatter plot
  16. plt.scatter(area, price, label="House Data")
  17. # Plot the regression line
  18. plt.plot(area, b0 + b1*area, color="red", label="Linear Regression")
  19. # Set the plot title and axis labels
  20. plt.title("Linear Regression of House Area and Price")
  21. # Set the font to SimSun (楷体)
  22. font_prop = fm.FontProperties(fname=r"C:WindowsFontssimkai.ttf", size=12) # Replace with your SimSun font path
  23. plt.xlabel("House Area (Square Meters)", fontproperties=font_prop)
  24. plt.ylabel("House Price (Ten Thousand Yuan)", fontproperties=font_prop)
  25. # Add legend
  26. plt.legend()
  27. # Show the plot
  28. plt.show()

1. Hasilkan 100 data simulasi rumah

  1. np.random.seed(0)
  2. area = np.random.rand(100) * 200 + 50
  3. price = 2 * area + 5000 + np.random.randn(100) * 500

2. Gunakan regresi linier untuk menyesuaikan data

  1. from sklearn.linear_model import LinearRegression
  2. model = LinearRegression()
  3. model.fit(area.reshape(-1, 1), price)

3. Mendapatkan koefisien regresi (b0~bn)

  1. b0 = model.intercept_
  2. b1 = model.coef_[0]

4. Gambarlah plot pencar

plt.scatter(area, price, label="House Data")

5. Gambarkan garis regresi

plt.plot(area, b0 + b1*area, color="red", label="Linear Regression")

6. Menetapkan judul artikel

plt.title("Linear Regression of House Area and Price")

7. Atur font menjadi miring && ukuran font (jika ada)

  1. font_prop = fm.FontProperties(fname=r"C:WindowsFontssimkai.ttf", size=12)
  2. plt.xlabel("House Area (Square Meters)", fontproperties=font_prop)
  3. plt.ylabel("House Price (Ten Thousand Yuan)", fontproperties=font_prop)

8. Tambahkan legenda

plt.legend()

9. Menampilkan grafik

plt.show()

Kode ini menggunakan regresi linier untuk menyesuaikan hubungan antara luas rumah dan harga (judul horizontal dan vertikal dijelaskan dalam bahasa Inggris untuk menghindari kesalahan)

Hasil yang berjalan adalah sebagai berikut:

Beberapa orang mungkin bertanya: Mengapa kami menghasilkan data dalam jumlah besar?

Pertanyaan bagus~

Dengan data tersebut, bisa kita hitung secara kasar kamu = b0 + b1x1 + b2x2 + ... + bn*xn Bagaimana dengan koefisiennya?

Secara khusus:

  • y mewakili variabel target yang ingin kita prediksi, seperti harga rumah.
  • x1, x2, ... xn mewakili faktor-faktor yang mempengaruhi variabel target, seperti luas rumah, jumlah ruangan, letak geografis, dll.
  • b0, b1, b2, ... bn mewakili besarnya pengaruh masing-masing faktor terhadap variabel target, yaitu koefisien yang ingin kita hitung.

Dengan mengumpulkan data dalam jumlah besar, kita dapat menggunakan model regresi linier untuk menghitung koefisien tersebut dan membangun model prediktif.Model ini dapat membantu kita memahami dampak berbagai faktor terhadap variabel target dan memprediksi nilai variabel target di masa depan (mirip dengan y = kx + b dalam matematika. Dengan k dan b tertentu, kita dapat memprediksi y dengan mendapatkan x , perbedaannya adalah koefisien k lebih banyak di sini)

2.rumus fungsi sigmoid

σ(x) = 1 / (1 + exp(-x))

Gambar fungsi sig terlihat seperti ini:

Pertanyaan 1: Mengapa memilih fungsi sigmoid?

Seperti yang kami sebutkan sebelumnya, penggunaan paling dasar dari regresi logistik adalah untuk menyelesaikan masalah klasifikasi biner.

Tujuan dari regresi logistik adalah untuk mengubah keluaran model linier (yang dapat berupa bilangan real apa pun) menjadi nilai probabilitas yang mewakili kemungkinan terjadinya suatu peristiwa, dan nilai probabilitas secara alami harus berkisar dari 0 hingga 1.

Fungsi sigmoid menyelesaikan tugas ini dengan sempurna: ia memampatkan keluaran model linier menjadi antara 0 dan 1, dan seiring dengan meningkatnya nilai masukan, nilai keluaran secara bertahap meningkat, yang konsisten dengan tren perubahan nilai probabilitas.

Lihatlah fungsi sig. Ketika mendekati tak terhingga positif, ia mendekati 1 tanpa batas. Ketika mendekati tak terhingga negatif, ia mendekati 0 tanpa terhingga.

Pertanyaan 2: Bagaimana cara mengklasifikasikan fungsi sigmoid?

Lalu ada yang mau bilang lagi, maka anda salah. Walaupun dikatakan kedua sisinya bisa sangat dekat, namun titik tengahnya tidak bisa dijangkau. Misalnya 0,5 di antara 0 dan 1, maka Anda mengatakan 0,5 dekat dengan 0. Atau mendekati angka 1?

Meski dikatakan angka di tengah tidak boleh mendekati, saya bisa mengaturnya secara artifisial~

Misalnya, jika saya memasukkan angka >= 0,5 ke dalam kategori 1, dan angka < 0,5 ke dalam kategori 0, maka masalahnya akan terselesaikan~

Oleh karena itu, 0,5 bukanlah titik kritis, melainkan ambang batas yang kami tetapkan secara artifisial untuk klasifikasi.

3. Rumus regresi logistik

p = σ(b0 + b1*x1 + b2*x2 + ... + bn*xn) = 1 / (1 + exp(-(b0 + b1*x1 + b2*x2 + ... + bn*xn)))

Kami telah mengatakan banyak hal sebelumnya hanya untuk memperkenalkan formula ini

Apakah itu membuat Anda sakit kepala hanya dengan melihatnya? Itu membuatku pusing hanya dengan melihatnya, jadi mengapa kita tidak menyederhanakannya~

Soalnya, rasanya jauh lebih menyegarkan seperti ini, seperti pria tampan yang tidak suka berdandan. Dia sedikit merapikan penampilannya, lalu kamu tahu, wah, pria ini terlihat sangat tampan~

Ahem, aku ngelantur~ JadiRegresi logistik sebenarnya adalah regresi linier + fungsi sigmoid

z pada fungsi sigmoid menggunakan regresi linier kamu = b0 + b1x1 + b2x2 + ... + bn*xn untuk menggantikan

Jadi apa fungsinya?

Oke, mari kita lihat~

4. Hakikat dan fungsi regresi logistik

Inti dari regresi logistik adalahMemprediksi kemungkinan terjadinya suatu peristiwa .Ini tidak secara langsung mengklasifikasikan data, tetapi memetakan hasil regresi linier ke interval 0~1 melalui suatu fungsi (fungsi Sigmoid).

Dasar dari regresi logistik adalah regresi linier. Regresi linier membangun model linier dan berupaya menyesuaikan data dengan fungsi linier untuk mendapatkan nilai prediksi.Nilai prediksi ini dapat berupa nilai apa pun dan tidak dibatasi oleh interval 0~1.

Fungsi Sigmoid adalah fungsi "ajaib" yang mengubah nilai prediksi yang diperoleh dari regresi linier menjadi interval 0~1, dan nilai dalam interval ini dapat diartikan sebagai probabilitas terjadinya suatu peristiwa.

Untuk melakukan klasifikasi biner, kita perlu menetapkan ambang batas, biasanya 0,5.Jika probabilitas prediksi lebih besar dari ambang batas maka ditentukan sebagai kelas positif, jika tidak maka ditentukan sebagai kelas negatif.

Misalnya:

Fungsi di sebelah kiri dapat dilihat sebagai fungsi regresi linier dan fungsi di sebelah kanan adalah fungsi sigmoid yang dipetakan.

Semua gambar dalam artikel ini berasal[Pembelajaran Mesin] Regresi logistik dapat dipelajari dalam sepuluh menit, mudah dipahami (termasuk proses solusi percikan)_bilibili_bilibili