informasi kontak saya
Surat[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
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
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:
Semua contoh ini memiliki ciri yang sama, yaitu hanya ada dua hasil, benar (1) dan salah (0)
Regresi logistik dapat diperluas ke masalah klasifikasi multi-kategori melalui metode seperti One-vs-Rest atau softmax
Misalnya:
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.
Regresi logistik tidak hanya memberikan hasil klasifikasi, namun juga menghasilkan nilai probabilitas, yang sangat berguna dalam banyak skenario.
Misalnya:
Semua contoh ini memiliki ciri yang sama, yaitu prediksi, yaitu menggunakan hasil yang diketahui untuk menyimpulkan hasil yang tidak diketahui.
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.
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.
kamu = b0 + b1x1 + b2x2 + ... + bn*xn
Tidak masalah jika Anda tidak memahami kodenya, lihat saja gambarnya
- import matplotlib.pyplot as plt
- import numpy as np
- import matplotlib.font_manager as fm
-
- # Generate some simulated house data
- np.random.seed(0)
- area = np.random.rand(100) * 200 + 50 # House area (square meters)
- price = 2 * area + 5000 + np.random.randn(100) * 500 # House price (ten thousand yuan)
-
- # Fit the data using linear regression
- from sklearn.linear_model import LinearRegression
- model = LinearRegression()
- model.fit(area.reshape(-1, 1), price)
-
- # Get the regression coefficients
- b0 = model.intercept_
- b1 = model.coef_[0]
-
- # Plot the scatter plot
- plt.scatter(area, price, label="House Data")
-
- # Plot the regression line
- plt.plot(area, b0 + b1*area, color="red", label="Linear Regression")
-
- # Set the plot title and axis labels
- plt.title("Linear Regression of House Area and Price")
-
- # Set the font to SimSun (楷体)
- font_prop = fm.FontProperties(fname=r"C:WindowsFontssimkai.ttf", size=12) # Replace with your SimSun font path
-
- plt.xlabel("House Area (Square Meters)", fontproperties=font_prop)
- plt.ylabel("House Price (Ten Thousand Yuan)", fontproperties=font_prop)
-
- # Add legend
- plt.legend()
-
- # Show the plot
- plt.show()
1. Hasilkan 100 data simulasi rumah
- np.random.seed(0)
- area = np.random.rand(100) * 200 + 50
- price = 2 * area + 5000 + np.random.randn(100) * 500
2. Gunakan regresi linier untuk menyesuaikan data
- from sklearn.linear_model import LinearRegression
- model = LinearRegression()
- model.fit(area.reshape(-1, 1), price)
3. Mendapatkan koefisien regresi (b0~bn)
- b0 = model.intercept_
- 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)
- font_prop = fm.FontProperties(fname=r"C:WindowsFontssimkai.ttf", size=12)
- plt.xlabel("House Area (Square Meters)", fontproperties=font_prop)
- 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)
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:
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)
σ(x) = 1 / (1 + exp(-x))
Gambar fungsi sig terlihat seperti ini:
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.
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.
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~
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.