Mengapa tidak mendekati klasifikasi melalui regresi?


51

Beberapa bahan yang saya lihat pada pembelajaran mesin mengatakan bahwa itu adalah ide yang buruk untuk mendekati masalah klasifikasi melalui regresi. Tapi saya pikir itu selalu mungkin untuk melakukan regresi terus menerus agar sesuai dengan data dan memotong prediksi terus menerus untuk menghasilkan klasifikasi diskrit. Jadi mengapa itu ide yang buruk?


saya pikir regresi selalu lebih rumit daripada klasifikasi di lingkungan produksi

Jawaban:


57

"..mendapatkan masalah klasifikasi melalui regresi .." dengan "regresi" Saya akan menganggap Anda maksud regresi linier, dan saya akan membandingkan pendekatan ini dengan pendekatan "klasifikasi" yang sesuai dengan model regresi logistik.

Sebelum kita melakukan ini, penting untuk memperjelas perbedaan antara model regresi dan klasifikasi. Model regresi memprediksi variabel kontinu, seperti jumlah curah hujan atau intensitas sinar matahari. Mereka juga dapat memprediksi probabilitas, seperti probabilitas bahwa suatu gambar mengandung kucing. Model regresi probabilitas-prediksi dapat digunakan sebagai bagian dari classifier dengan menerapkan aturan keputusan - misalnya, jika probabilitasnya adalah 50% atau lebih, putuskan itu kucing.

Regresi logistik memprediksi probabilitas, dan karenanya merupakan algoritma regresi. Namun, ini umumnya digambarkan sebagai metode klasifikasi dalam literatur pembelajaran mesin, karena dapat (dan sering) digunakan untuk membuat pengklasifikasi. Ada juga algoritma klasifikasi "benar", seperti SVM, yang hanya memprediksi hasil dan tidak memberikan probabilitas. Kami tidak akan membahas algoritme semacam ini di sini.

Regresi Linier vs Logistik pada Masalah Klasifikasi

Seperti yang dijelaskan Andrew Ng , dengan regresi linier Anda memasukkan polinomial melalui data - katakanlah, seperti pada contoh di bawah ini kami memasang garis lurus melalui {ukuran tumor, jenis tumor} set sampel:

masukkan deskripsi gambar di sini

10h(x)xh(x)0.5

Sepertinya dengan cara ini kita dapat memprediksi dengan benar setiap sampel set pelatihan tunggal, tapi sekarang mari kita ubah sedikit tugas.

Secara intuitif jelas bahwa semua tumor dengan ambang tertentu yang lebih besar ganas. Jadi mari kita tambahkan sampel lain dengan ukuran tumor yang sangat besar, dan jalankan regresi linier lagi:

masukkan deskripsi gambar di sini

h(x)>0.5malignanth(x)>0.2

Kami tidak dapat mengubah hipotesis setiap kali sampel baru tiba. Sebagai gantinya, kita harus mempelajarinya di luar data yang ditetapkan pelatihan, dan kemudian (menggunakan hipotesis yang telah kita pelajari) membuat prediksi yang benar untuk data yang belum kita lihat sebelumnya.

Semoga ini menjelaskan mengapa regresi linier bukan yang paling cocok untuk masalah klasifikasi! Juga, Anda mungkin ingin menonton VI. Regresi logistik. Video klasifikasi di ml-class.org yang menjelaskan ide secara lebih rinci.


SUNTING

probabilityislogic bertanya apa yang akan dilakukan oleh classifier yang baik. Dalam contoh khusus ini Anda mungkin akan menggunakan regresi logistik yang mungkin mempelajari hipotesis seperti ini (saya hanya mengada-ada):

masukkan deskripsi gambar di sini

Perhatikan bahwa baik regresi linier dan regresi logistik memberi Anda garis lurus (atau polinomial orde tinggi) tetapi garis-garis tersebut memiliki arti yang berbeda:

  • h(x)xx
  • h(x)xh(x)>0.5

Jadi, intinya adalah bahwa dalam skenario klasifikasi kita menggunakan sama sekali berbeda penalaran dan sama sekali berbeda algoritma dari dalam skenario regresi.


@andreister: Tetapi bagaimana jika semua outlier telah dihapus atau terpotong, apakah regresi linier masih merupakan ide yang buruk?
Tomek Tarczynski

Contoh Anda bagus, namun tidak menunjukkan apa yang akan dilakukan "pengelompokan yang baik". apakah Anda dapat menambahkan ini? perhatikan bahwa menambahkan titik data harus mengubah baris untuk hampir semua metode. Anda belum menjelaskan mengapa ini adalah perubahan yang buruk.
probabilityislogic

1
@andreister: Contoh Anda menunjukkan beberapa data buruk dapat merusak regresi linier. Tetapi dapatkah kita menggunakan regresi kuadrat atau bahkan hipotesis yang lebih rumit untuk menjadikan "regresi" sebagai pengklasifikasi yang baik?
Strin

1
@probabilityislogic - poin bagus, saya memperbarui jawabannya.
andreister

2
@ Strin: Hipotesa yang lebih rumit lebih cenderung sesuai dengan data. (Yaitu, agar sesuai dengan keanehan dari data yang Anda miliki, sehingga tidak sesuai dengan data yang akan datang.) Saya ingat kelas yang saya ambil di mana seorang pria di barisan depan hanya yakin bahwa profesor menahan kami dan tidak memberi kami algoritme canggih yang akan membuat kami melakukan pembunuhan di pasar listrik ... Dia tidak pernah benar-benar memahami overfitting.
Wayne

14

Saya tidak dapat memikirkan contoh di mana klasifikasi sebenarnya adalah tujuan akhir. Hampir selalu tujuan sebenarnya adalah membuat prediksi yang akurat, misalnya probabilitas. Dalam semangat itu, regresi (logistik) adalah teman Anda.


5
Sepertinya saya apa yang efektif klasifikasi akhirnya tujuan di sebagian besar proses otomatis yang tidak praktis atau tidak mungkin untuk memiliki campur tangan manusia atau penilaian. Ketika menerima, katakanlah, sinyal digital yang ditransmisikan berisik, penerima tidak dapat memutuskan bahwa bit tertentu harus 0,97, bukan 0 atau 1.
kardinal

6
Kecuali untuk fakta bahwa biaya false positive atau false negative palsu jarang di bawah kendali analis yang membuat klasifikasi, maka analis asli tidak dapat secara andal memilih cutpoint "kanan" untuk klasifikasi. Selain itu, sebaiknya memiliki "zona abu-abu" risiko menengah di mana tidak ada klasifikasi dibuat dan rekomendasinya adalah "dapatkan lebih banyak data".
Frank Harrell

1
Saya pikir saya percaya persis kebalikan dari klaim dalam jawaban ini, dan tidak pernah menemukan perspektif ini dalam seluruh pendidikan universitas saya dalam pembelajaran mesin. Sangat mengejutkan bagi saya bahwa seseorang akan mengatakan ini. Dalam praktiknya, saya hampir selalu menghadapi masalah di mana orang berpikir mereka ingin memprediksi kuantitas terus menerus, tetapi sebenarnya mereka ingin memprediksi keanggotaan dalam ember kategori berbeda dari kuantitas itu. Saya berjuang untuk menemukan contoh di mana sebenarnya memprediksi kuantitas kontinu berguna dalam hal kesimpulan substantif yang mendasari masalah.
ely

9
Saya pikir Anda telah mengambil banyak dogma pembelajaran mesin begitu saja. Anda membuat sejumlah besar asumsi yang tidak beralasan. Salah satunya adalah bahwa orang benar-benar membutuhkan pilihan paksa ke dalam ember kategori. Mereka mungkin mengklaim menginginkan ini tetapi mereka benar-benar tidak membutuhkan ini dalam kebanyakan situasi. Pilihan tidak harus dipaksakan. Pilihan yang bagus adalah "tidak ada keputusan, dapatkan lebih banyak data". Prediksi kuantitas berkelanjutan yang mendasarinya biasanya adalah apa yang dibutuhkan. Sebaiknya Anda mempelajari teori keputusan yang optimal (Bayes). Jika Anda dapat memberikan contoh nyata, saya akan berkomentar lebih lanjut.
Frank Harrell

11
+1 di komentar @Frank Harrell. Misalnya, memperkirakan suhu, curah hujan, ketinggian sungai jauh lebih bermanfaat daripada prediksi bahwa cuaca akan panas atau basah atau akan banjir. Bahkan jika masalahnya adalah domba atau kambing? perkiraan pr (domba) lebih informatif daripada biner "domba" atau "kambing".
Nick Cox

1

Mengapa tidak melihat beberapa bukti? Meskipun banyak yang berpendapat bahwa regresi linier tidak tepat untuk klasifikasi, itu mungkin masih berfungsi. Untuk mendapatkan intuisi, saya memasukkan regresi linier (digunakan sebagai classifier) ​​ke dalam perbandingan classifier scikit-learn . Inilah yang terjadi:

masukkan deskripsi gambar di sini

Batas keputusan lebih sempit daripada dengan pengklasifikasi lain, tetapi akurasinya sama. Sama seperti classifier vektor dukungan linier, model regresi memberi Anda hyperplane yang memisahkan kelas-kelas dalam ruang fitur.

Seperti yang kita lihat, menggunakan regresi linier sebagai penggolong dapat bekerja, tetapi seperti biasa, saya akan memvalidasi prediksi.

Sebagai catatan, ini adalah bagaimana kode classifier saya terlihat seperti:

class LinearRegressionClassifier():

def __init__(self):
    self.reg = LinearRegression()

def fit(self, X, y):
    self.reg.fit(X, y)

def predict(self, X):
    return np.clip(self.reg.predict(X),0,1)

def decision_function(self, X):
    return np.clip(self.reg.predict(X),0,1)

def score(self, X, y):
    return accuracy_score(y,np.round(self.predict(X)))


0

1,10,100,...1,2,3,...

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.