Makine Öğrenmesinde Sınıflandırma Problemlerine Neden Lineer Regresyon İle Yaklaşmıyoruz?

Fethi Tekyaygil
8 min readJan 27, 2022

--

Merhabalar,

Öncelikle bu yazım esnasında kendilerinden sıkça yararlandığım Vader figürüme, Spotify’a, Paint’e ve 3 litrelik su şişeme teşekkür etmek istiyorum :)
Yazımın başında mantık oturtmanız ve en temel şeyleri pekiştirmeniz amaçlı çok kabaca anlatıma sahip bir girizgah bölümü hazırlamam iyi olur diye düşündüm. Eğer girizgaha ihtiyacınız olmayacağını düşünüyorsanız Sınıflandırma Probleminde Lineer Regresyon Kullanmak kısmına geçebilirsiniz :)
O zaman hazırsanız çayınızı, kahvenizi alın ve başlayalım :)

Girizgah

Kabaca açıklamak gerekirse, Makine Öğrenmesi’ndeki amacımız inputunu daha önce vermediğimiz bir değer için o değere karşılık gelecek output(tahmin) üretmektir. Örneğin siz makine öğrenmesi ile evinizin değerini tahmin etmek istiyorsunuz. Bunun için evinizle ilgili verileri giriyor ve makine öğrenmesi bu bilgileri kullanarak size tahmini bir fiyat sunuyor. Ama bir dakika bir dakika. Elinde hiç veri yoksa yapay zekamız bu tahmini nasıl gerçekleştiriyor? Bu nasıl oluyor? Yoksa Yapay Zeka’mız gücü kulllanarak zihnimizi mi okuyor? Peki ya biz insan değil de Toydairan’sak? (Star Wars şakası, anlayanlar güldü bile :) )

Yapay Zeka’mızın bunu tahmin etmesi için önce onu verilerle beslememiz gerekiyor. Anlamanızı kolaylaştırmak adına bu adım için aşağıda hem regresyon hem de sınıflandırma problemleri için senaryolar oluşturdum.

Girizgah — Regresyon Problemi Senaryosu

Bir eviniz olduğunu ve onu satmak istediğinizi düşünün fakat evinizin değerini bilmiyorsunuz. Bunu ölçmek için makine öğrenmesine başvurabilirsiniz. Peki nasıl?
Makine öğrenmesinde modelinize elinizde önceden bulundurduğunuz yüzlerce,binlerce hatta milyonlarca ev bilgisi ve fiyatı verisini (veriseti) veriyorsunuz ve modelimiz bu bilgileri öğreniyor. Bunları öğrenen modele ise önceden verdiğiniz verisetinde yer almayan ev bilgilerini vererek (örneğin oda sayısı, metrekaresi veya konumu) bir fiyat tahmin etmesini istiyorsunuz o da size öğrendiği kadarıyla bir tahmin çıkarıyor. Öğrendiği kadarıyla diyorum çünkü modelimizin öğrenme şeklini de bu öğrenme sırasında optimize edebiliyoruz.

Girizgah — Terminoloji

Feature: Regresyon Problemi senaryomuzda fiyat tahmin edilmesi için verisetimizin içinden kullanılmasını istediğimiz değerlerdir. Örneğin fiyat tahminini oda sayısı, konum, metrekare bilgilerine göre yapıyorsak verisetimizde bu alanlar feature olarak kabul edilir ve makine öğrenmesi bu featureları öğrenir.
Label: Verisetimizdeki tahmin edilmesini istediğimiz değerdir. Resresyon Problemi senaryomuzda bu değer fiyat değeridir.

Size, Beds, Baths ve Zip alanlarını vererek Price kolonunu tahmin etmeye çalıştığımız bir senaryoda feature ve label alanları.

Lineer Regresyon Denklemi: Feature sayımız 1 ise simple linear regression, feature’ımız birden çok ise multiple linear regression kullanılır. Featurelarımız bu denklemlerde x olarak gösterilmekte, o featureların denklemdeki katsayıları(weight) ise b olarak gösterilmektedir. b0 ise doğrumuzun origin noktasına olan uzaklığını temsil eder.

Lineer Regresyon Denklemi

Hipotez fonksiyonu: Modelimizi ilgili verilerle eğittimizde modelimiz bize bir hipotez fonksiyonu döner. Modelimiz bu fonksiyonda ilgili parametrelere bizden aldığı feature değerlerini vererek tahminlerini yapar. Örneğin regresyon problemimizde sadece bina yaşı ile fiyat tahmini yapmak istiyor olalım. Eğitimin sonucunda modelimiz bize y=w0+w1x1 formülünü döndürür. Bu formül tipini bir yerden hatırlıyorsunuz değil mi? Evet! Bu lineer regresyon formülü. Bu formülü grafiğe çizdiğimizde lineer bir çizgi elde ederiz. Buradaki y tahmin edilmek istenen label değeri, x ise tahminde kullanılacak feature değeri (bina yaşı) ve w0-w1 değerleri ise modelimizin eğitim sırasında tespit edeceği weight değerleridir.

Cost Function: Cost function bizim makine öğrenmemize önceden verdiğimiz verilerin içindeki gerçek label verileri ile modelimizin bu label featurelarını kullanarak tahmin ettiği label değeri arasındaki farktır. Ne mi demek istiyorum? Örneğin sizin verisetinizde bina yaşı 3 olan bir evin fiyatı 100000 tl olsun. Modelimizin ise bina yaşı 3 olan feature’ın labelını 98000 tl olarak tahmin ettiğini varsayarsak sizin buradaki kaybınız 2000 tl olur. Cost function ise bu işlemi verisetinizdeki her veri için yapar ve ortalama hata kaybını bulur. Cost function ile modelinizin performansını görebilirsiniz. Cost function’ımınız convex bir fonksiyondur yani grafikte göstermek istediğimizde kase şekli elde ederiz.

Convex fonksiyon

Lineer: Bir aşamadan (bu durumda bizim düzlemdeki noktalarımız olsun) diğer aşamaya tek adımda ardışık olarak ilerleme veya doğrusal olarak tanımlanabilir. Bu tanıma göre aşağıdaki şekil lineerdir diyebiliriz:

Düzlemde lineer bir doğrunun görüntüsü

Girizgah — Sınıflandırma Problemi Senaryosu

Az önce konuştuğumuz ev fiyatı tahmin etme problemimiz regresyon bir problemdi yani tahmin edilen veri sürekli bir veriydi. (Tahmin edilecek değer 0 — +sonsuz arasında olabilir.)
Bir doktor olduğunuzu ve hastaların tümör büyüklüklerine göre bu tümörün iyi huylu mu kötü huylu olduğunu tahmin etmeye çalıştığınızı düşünün. Bunun için yapay zekaya başvurabilirsiniz. Peki nasıl? (Deja Vu oldunuz değil mi ben de öyle hissettim :) )
Bahsettiğimiz bu problem tahmininde bilgisayar bize 2 şekilde tahminde bulunabilir. Tümör ya iyi huyludur ya da kötü huyludur. Başka bir tahmin seçeneği yoktur. Bu yüzden tahmin değeri discrete(ayrık) ve sınırlı bir değer aralığıdır.
Makine Öğrenmesi modelinize önceden elinizde bulunan hasta verisetini veriyorsunuz. Bu verisetinde hastaların tümör büyüklüğü ile bu tümörün iyi huylu mu yoksa kötü huylu mu olduğu bilgisinin tutan iki tane kolonumuz olsun. Terminoloji bölümümüze bakarak hangi kolonun feature hangisinin label olduğunu söyleyebilir misiniz?

Eğer tümör büyüklüğüne feature, tümörün huyu kolonuna da label dediyseniz doğru bildiniz!

Girizgah — Kapanış

Makine Öğrenmesi alanında proje geliştirirken, Python kullanıyorsanız numpy ve pandas kütüphaneleri ile veriyi görselleştirebiliriz. Veriyi görselleştirmemiz bize makine öğrenmesi modelimizi oluştururken rehber niteliği taşır. Aşağıda Supervized Learning algoritması için iki farklı problem tipi (regresyon ve sınıflandırma) karakteristiğini gösteren verilerin numpy ve pandas yardımıyla bir grafik üzerinde gösterimleri verilmiştir:

Classification ve Regression problem karakteristiği içeren iki verisetinin grafiğe dökülmüş halleri

Bu grafikteki noktalar bizim modelimize verdiğimiz gerçek veri değerleri, doğrular ise modelimizin bu değer dağılım grafiğinde en optimum şekilde çizmeye çalıştığı ve tahminde kullanacağı doğrudur.
Üstteki resimde de görebileceğiniz üzere sınıflandırma problemindeki veri dağılımında regresyon problemindeki gibi düz, lineer bir doğru kullanmanız tahminde tutarsızlık ve hatalara yol açacaktır.

Classification Probleminde Lineer Regresyon Kullanmak ve Sonuçları

Yukarıdaki tümör örneği üzerinden ilerleyelim ve lineer regresyon kullanarak bu probleme yaklaşalım. (Paint skills loading…)
Öncelikle verisetimizi şu şekilde grafiğe dökebiliriz.

Classification Probleminin grafikle görselleştirilmiş hali

Bu verisetimizin sonucu kötü huylu veya iyi huylu olacağından değerlerimiz y eksenindeki Yes ve No değerlerinde toplanmıştır. Modelimizin grafiğine lineer regresyon doğrusunu hesaplayıp çizdiğimizi düşünelim.

Eğer bu lineer regresyon modelimiz üzerinden tahminlerimizi gerçekleştirmek istiyorsak, kendimiz y ekseninde bir threshold değeri belirleyebiliriz. Örneğin bu threshold değerini 0,5 belirledik diyelim. Grafiğimize bu threshold değerini de eklersek aşağıdaki gibi gözükecektir.

Threshold içeren grafiğimiz

Buradaki 0,5 bizim belirlediğimiz threshold değeri, bu threshold değerine karşılık gelen x ekseni değeri ise bizim beta değerimiz olmaktadır.
Türkçesi mi?
Beta değerinden küçük olan tümör büyüklükleri iyi niyetli, beta değerinden büyük olan tümör büyüklükleri ise kötü niyetli olarak sınıflandırılacaktır.
Şu an her şey güzel (mi!?)

Peki neden?
Bir tane daha eğitim verimizin olduğunu düşünün. O da diğerlerinden uzakta olsun:

O zaman hesapladığımız yeni lineer regresyon doğrumuz ile veri eklenmeden önceki lineer regresyon doğru karşılaştırması şu şekilde olacaktır:

Buradan gelecek her yeni veri için doğrumuzun değişeceğini anlıyoruz. Son eklenen veri bize yeni bir bilgi vermiyor yani yeni eklenen noktanın kötü niyetli tümör olduğu bizim beta değerimizin sağında kaldığı için zaten belliydi. Ama buna rağmen lineer çizgimizin yönü kaydı ve bu da beta noktamızın daha da pozitif yöne kaymasına neden oldu ve bize daha kötü bir hipotez fonksiyonu sunmuş oldu. Tabii ki şunu da göz ardı etmememiz lazım, lineer regresyon modelimiz her seferinde iki ayrık değeri ayırmada bu örnekte olduğu gibi şanslı olmayacaktır.
Tümör örneğimize bakarsak label değerimizin sadece 1 veya 0 olabileceğini görebiliriz bu da demektir ki hipotez fonksiyonumuz sadece 1 veya 0 çıkarmalıdır. Ancak lineer regresyon modelimiz bize sürekli(continuos) bir değer çıkaracağı için lineer regresyon hipotez fonksiyonumuz bize 0'dan küçük veya 1'den büyük bir değer döndürebilir.

SONUÇ

Söylediklerimizin üzerinden son kez geçersek, lineer regresyon bize doğrusal bir hipotez fonksiyonu üretir. Ancak sınıflandırma problemlerinde verilerimiz doğrusal bir şekilde değil, gruplanmış bir şekilde dağılım sergiler. Bunun nedeni regresyon problemlerinde label verimiz numerik bir veri iken, sınıflandırma problemlerinde label verimiz kategorik bir veridir. Bu yüzden lineer regresyon kullanmamız tahminlerimizde hatalarımıza ve tutarsızlıklara neden olacaktır. Peki lineer regresyon yerine ne kullanabiliriz?
Sınıflandırma problemleri için Lojistik Regresyon kullanıyoruz. Yani sınıflandırma problemlerimizde hipotez fonksiyonumuzun denklemi değişiyor bu da hipotez doğrumuzun artık lineer olmadığı anlamına geliyor. Lojistik regresyona bu yazımda detaylıca değinmeyeceğim ama lineer regresyon ile lojistik regresyonun hem denklemsel hemde doğrusal kıyasını aşağıda görebilirsiniz (mavi: lineer regresyon, turuncu: lojistik regresyon):

Aynı zamanda cost function’ımıza lojistik modelimizin hipotez denklemini parametre olarak verirsek elde edeceğimiz cost function’ımız non-convex bir fonksiyon olacaktır. Non convex ve convex fonksiyon arasındaki farkı aşağıda görebilirsiniz:

Gradient descent fonksiyonumuzun cost function değerimizi minimize etmek istediğini yani modelimizdeki hata oranını olabilecek en optimum değere indirmek istediğini biliyoruz. Convex fonksiyonlarda bu işlem aşağıdaki şekilde olabilir:

Siz bir grafikte bir weight değeri ile başlayıp (kırmızı değerler) gradient descent fonksiyonumuzu her iterasyonunda minimuma daha da yaklaşırsınız. Minimum noktasına olabildiğince yaklaştığınızda eğiminiz dikleşeceğinden türev işleminiz daha az sonuçlar vermiş olacak ve siz minimuma atacağınız adımlar küçülse bile minimuma yakınsayabileceksiniz. Bu şekilde de weight değerlerinizi optimize ederek elinizdeki cost function değerini düşürmüş olmuş olacaksınız.
Gradient descent bu yazının konusu olmadığı için bu konu ile ilgili buraya bir link bırakıyorum. Yaptığımız şey weight değerlerini olabildiğince optimize ederek modelimizdeki hata oranını azaltmak.

Peki ya non-convex bir fonksiyon kullansaydık? Aşağıdaki grafiği ele alalım. Kırmızı yatay çizgimiz bizim yakınsadığımız minimum noktası olsun:

Yakınsayabileceğimiz çok daha minimum bir nokta varken biz daha büyük bir değere sahip sözde minimum değere yakınsadık. Non convex fonksiyonlarda birden fazla çukur noktası olduğu için en optimum değre ulaşabilmek neredeyse imkansız ve zordur.

Zor değilmiş değil mi :)

KAPANIŞ

Bu yazımda sizlere neden lineer regresyon kullanarak sınıflandırma problemlerimizi çözemeyeceğimizi anlatmaya çalıştım. Umarım faydalı ve öğretici bir yazı olmuştur. Eğer yazının bu kısmına kadar geldiyseniz tebrikler ve teşekkürler :)

Herkese iyi ve sağlıklı haftalar diliyorum. Daha fazla yazı için lütfen takipte kalın :)

-Fethi Tekyaygil

--

--

Fethi Tekyaygil
Fethi Tekyaygil

Written by Fethi Tekyaygil

.NET Core Backend & Google Certified Tensorflow Developer — Flutter & Solidity Padawan — Animal Person

No responses yet