Ana içeriğe geç

Yan yana

SınıflandırmavsRegresyon

Sınıflandırma ile regresyon arasındaki fark nedir?

Güncellendi 2 dk okuma7 fark

Kısaca

Sınıflandırma, spam olup olmaması gibi bir kategori; regresyon ise fiyat ya da teslimat süresi gibi bir sayı tahmin eder. İkisi de denetimli öğrenmedir.

Sınıflandırma

Sınıflandırma, modelin her girdi için bir kategori tahmin ettiği denetimli öğrenme türüdür: bir e-postanın spam olup olmadığı ya da fotoğraftaki rakam gibi.

Sınıflandırma sayfasını oku

Regresyon

Regresyon, modelin verilen girdiden bir fiyat, sıcaklık ya da teslimat süresi gibi bir sayıyı tahmin ettiği denetimli öğrenme türüdür.

Regresyon sayfasını oku

Sınıflandırma ve Regresyon karşılaştırması

ÖzellikSınıflandırmaRegresyon
Tahmin ettiğiSınıf denen bir kategoriSürekli bir sayı
Örnek sorularBu e-posta spam mı? Bu görüntüdeki rakam hangisi?Bu daire kaça satılır? Teslimat ne kadar sürer?
ÇıktıHer sınıf için bir olasılık; bir eşikle etikete dönüşür235 ya da 4,7 gibi tek bir değer
Ölçüldüğü metriklerDoğruluk, kesinlik, duyarlılık ve karışıklık matrisiMAE, RMSE ve R²
Yanlış bir yanıtYanlış sınıfı seçerGerçek değeri bir miktar ıskalar
Klasik ilk modelLojistik regresyonDoğrusal regresyon
Yaygın tuzakBir sınıf nadir olduğunda doğruluk yanıltırAykırı değerler tahminleri kendine çeker ve RMSE'yi şişirir

Fark, açıklamalı

Sınıflandırma ve regresyon, denetimli öğrenmenin iki ana türüdür: ikisinde de model etiketli örneklerden, yani doğru yanıtla eşleştirilmiş girdilerden öğrenir ve ardından yeni girdiler için o yanıtı tahmin eder. Sınıflandırmada yanıt, sınıf denen bir kategoridir; örneğin dolandırıcılık olup olmaması ya da bir destek talebinin hangi konuyla ilgili olduğu. Regresyonda ise yanıt sürekli bir sayıdır; örneğin bir dairenin satış fiyatı, yarınki sıcaklık ya da bir teslimatın ne kadar süreceği.

Yanıtın türü, modelin nasıl değerlendirildiğini de değiştirir. Bir sınıflandırıcı genellikle her sınıf için bir olasılık üretir ve bunu bir eşikle karara dönüştürür; doğruluk (accuracy), kesinlik (precision), duyarlılık (recall) ve karışıklık matrisiyle (confusion matrix) ölçülür. Bir regresyon modeli ise bir sayı üretir ve ne kadar ıskaladığıyla, yani ortalama mutlak hata (MAE), kök ortalama kare hata (RMSE) ya da R² ile ölçülür.

Karar ağaçları, gradient boosting ağaçları ve sinir ağları gibi pek çok algoritmanın iki türü de vardır; bu yüzden seçim araca değil, soruya bağlıdır. Kısa bir sınama: bir tahminin ne kadar şaştığını sormak anlamlıysa bu regresyondur; tahmin yalnızca doğru ya da yanlışsa sınıflandırmadır. Bir sayı da bir eşikle sınıfa dönüşebilir; örneğin bir teslimat süresini tahmin edip gecikecek siparişleri işaretlemek gibi.

Kafa karışıklığının yaygın bir kaynağı lojistik regresyondur; adına rağmen bir sınıflandırma modelidir: 0 ile 1 arasında bir olasılık hesaplar, bir eşik de bunu bir sınıfa dönüştürür. Bir diğeri, ürün kodları ya da bir görüntüdeki 0'dan 9'a kadar rakamlar gibi tesadüfen sayı olan etiketleri regresyon hedefi olarak ele almaktır; bunlar miktar değil addır, bu yüzden sınıflandırma gerektirir.

Hangisini kullanmalısınız?

Sınıflandırma şu durumlarda doğru seçim:

  • Yanıt, spam olup olmaması gibi sabit bir etiket kümesinden biri.
  • Bir işlemi onaylamak ya da işaretlemek gibi evet-hayır türünde bir karar gerekiyor.
  • Öğeler, bir makalenin konuları gibi aynı anda birkaç etiket taşıyabiliyor.
  • Etiketler, ürün kodları gibi tesadüfen sayı olan adlar.

Regresyon şu durumlarda doğru seçim:

  • Yanıt; fiyat, süre ya da sıcaklık gibi bir miktar.
  • Yakın olmak önemli: küçük bir ıskalama büyük bir ıskalamadan iyidir.
  • Talep, satış ya da enerji tüketimi gibi değerleri tahmin ediyorsunuz.
  • Doğrusal regresyonun gösterdiği gibi, her girdinin sonucu ne kadar etkilediğini bilmek istiyorsunuz.

Aynı girdilerle bir sınıf ve bir sayı tahmin etmek (scikit-learn)

Sınıflandırmapython
from sklearn.tree import DecisionTreeClassifier

# Flat size in m² and distance to the center in km -> sold within a month?
X = [[50, 2], [65, 8], [80, 3], [100, 12], [120, 5]]
y = ["yes", "no", "yes", "no", "yes"]  # categories

clf = DecisionTreeClassifier(random_state=0).fit(X, y)
print(clf.predict([[90, 4]]))        # ['yes']: a class
print(clf.predict_proba([[90, 4]]))  # a probability for each class
Regresyonpython
from sklearn.tree import DecisionTreeRegressor

# The same inputs -> sale price in thousands
X = [[50, 2], [65, 8], [80, 3], [100, 12], [120, 5]]
y = [150, 190, 235, 290, 345]  # numbers

reg = DecisionTreeRegressor(random_state=0).fit(X, y)
print(reg.predict([[90, 4]]))  # an estimated price: a number

Sık sorulan sorular

Lojistik regresyon sınıflandırma mı, regresyon mu?

Sınıflandırma. Adına rağmen bir girdinin bir sınıfa ait olma olasılığını hesaplar; çoğu zaman 0,5 olan bir eşik de bu olasılığı tahmin edilen bir sınıfa dönüştürür.

Aynı algoritma hem sınıflandırma hem regresyon yapabilir mi?

Evet. Karar ağaçlarının, rastgele ormanların (random forest), gradient boosting ağaçlarının, k-en yakın komşu yönteminin ve sinir ağlarının hepsinin bir sınıflandırma, bir de regresyon sürümü vardır; değişen, çıktı ve modelin eğitimde azaltmaya çalıştığı hatadır.

1'den 5'e kadar bir puanı tahmin etmek sınıflandırma mı, regresyon mu?

İkisi de işe yarayabilir. Yıldızları sınıf olarak ele almak 4'ün 5'e 1'den daha yakın olduğunu yok sayar; regresyon bu sırayı korur ama 3,6 gibi değerler tahmin edebilir. Sıralı kategoriler için yapılmış sıralı regresyon (ordinal regression) ise ikisinin arasında bir yoldur.

Daha fazla

Ayarlar