Bu makalede, Gradyan Düşüş Algoritmasını sıfırdan uygulayacağım,
1- Doğrusal Regresyon nedir?
2- Maliyet Fonksiyonu veya Kayıp Fonksiyonu
3- Gradyan Alçalma Algoritması
4- Gradyan İniş Algoritması için python kodunu uygulama
Daha fazla uzatmadan, içeri girelim.
Doğrusal Regresyon , sürekli değerleri tahmin eden bir Denetimli Öğrenme Algoritmasıdır, örneğin : Ev fiyatlarını tahmin etmek?
Bağımlı değişken (Y) ile bir (Basit Doğrusal Regresyon) veya daha fazla (Çoklu Doğrusal Regresyon) bağımsız değişken (X) arasındaki ilişkiyi modellemeye yönelik doğrusal bir yaklaşımdır.
Bu iki değişken arasında doğrusal bir ilişkiyi şu şekilde tanımlayacağız:
Maliyet İşlevi veya Kayıp İşlevi:
Kayıp işlevi ile Maliyet İşlevi arasındaki fark: https://stats.stackexchange.com/questions/179026/objective-function-cost-function-loss-function-are-they-the-same-thing
Ortalama Kareli Hatayı maliyet fonksiyonumuz olarak kullanacağız . MSE , bir gözlemin gerçek ve tahmin edilen değerleri arasındaki ortalama kare farkını ölçer. Çıktı, mevcut ağırlık setimizle ilişkili maliyeti veya puanı temsil eden tek bir sayıdır. Amacımız, modelimizin doğruluğunu artırmak için MSE'yi en aza indirmektir.
Basit doğrusal denklemimiz göz önüne alındığında, y = mx + b, MSE'yi şu şekilde hesaplayabiliriz:
Şimdi, Maliyet fonksiyonumuzun MSE olduğunu biliyoruz, hipotezimiz için en iyi m ve b değerlerini bulmak için onu en aza indiren ilginç kısma geçelim : y = mx + b.
Dereceli alçalma:
MSE'yi en aza indirmek için, maliyet fonksiyonumuzun gradyanını hesaplamak için Gradient Descent kullanıyoruz .
Gradyan inişi, gradyanın negatifi ile tanımlanan en dik iniş yönünde yinelemeli olarak hareket ederek bazı işlevleri en aza indirmek için kullanılan bir optimizasyon algoritmasıdır. Makine öğreniminde, modelimizin parametrelerini ( m ve b ) güncellemek için gradyan inişi kullanırız . Parametreler, Doğrusal Regresyondaki katsayıları ifade eder.
Dağın tepesinden başlayarak, ilk adımımızı negatif gradyanla belirtilen yönde yokuş aşağı atıyoruz. Daha sonra, negatif gradyanı yeniden hesaplıyoruz (yeni noktamızın koordinatlarını geçiyoruz) ve belirlediği yönde bir adım daha atıyoruz. Grafiğimizin alt kısmına gelene kadar veya artık yokuş aşağı hareket edemeyeceğimiz bir noktaya (yerel minimum) kadar bu işleme yinelemeli olarak devam ediyoruz. (Maliyet Fonksiyonumuz MSE'nin dışbükey bir fonksiyon (çanak şekli) olduğunu unutmayın. sonunda yerel minimumda bitecek)
Öğrenme Hızı (alfa):
Bu adımların boyutuna öğrenme hızı denir . Yüksek bir öğrenme oranıyla, her adımda daha fazla alanı kapsayabiliriz, ancak tepenin eğimi sürekli değiştiği için en alçak noktayı aşma riskimiz vardır. Çok düşük bir öğrenme oranıyla, çok sık yeniden hesapladığımız için, negatif gradyan yönünde güvenle hareket edebiliriz. Düşük bir öğrenme oranı daha kesindir, ancak gradyanı hesaplamak zaman alıcıdır, bu nedenle dibe inmemiz çok uzun zaman alacaktır.
Şimdi yeni maliyet fonksiyonumuzu kullanarak gradyan iniş yapalım. Maliyet fonksiyonumuzda kontrol edebileceğimiz iki parametre vardır: m (ağırlık) ve b (sapma) . Her birinin nihai tahmin üzerindeki etkisini dikkate almamız gerektiğinden, kısmi türevler kullanmamız gerekiyor. Maliyet fonksiyonunun kısmi türevlerini her parametreye göre hesaplıyoruz ve sonuçları bir gradyan içinde saklıyoruz.
Gradyanı çözmek için, yeni mm ve bb değerlerimizi kullanarak veri noktalarımızı yineliyoruz ve kısmi türevleri hesaplıyoruz. Bu yeni gradyan, maliyet fonksiyonumuzun mevcut konumumuzdaki eğimini (mevcut parametre değerleri) ve parametrelerimizi güncellemek için hareket etmemiz gereken yönü söyler. Güncellememizin boyutu, öğrenme oranına göre kontrol edilir.
m = m - L * Dm
b = b - L * Db
Burada: L öğrenme hızıdır (alfa), Dm m'ye göre türevdir ve Db , b'ye göre türevdir .
Python Kodu
Herhangi bir sorunuz veya açıklamanız varsa lütfen benimle iletişime geçmekten çekinmeyin, Teşekkürler.
Tam Kaynak Kodu + DataSet: https://github.com/jairiidriss/GradientDescentAlgorithmFromScratch
"Temel düzeyde, makine öğrenimi geçmişe dayalı olarak geleceği tahmin etmekle ilgilidir. Örneğin, bir kullanıcının Alice'in izlemediği bir filmi ne kadar beğeneceğini izlediği filmlere verdiği puanlara göre tahmin etmek isteyebilirsiniz.
Doğrusal regresyon, değişkenler arasındaki ilişkiyi anlamak için kullanılabilecek güçlü ancak nispeten basit bir araçtır. Bu öğretici, doğrusal regresyonun temellerini yeni başlayanlara uygun bir şekilde keşfedecek.
Kasım 2020'nin başlarında SalesForce, açıklanamayacak şekilde JARM adlı yeni bir aktif TLS parmak izi alma aracını duyurdu. JARM'ın temeli, bir hedef sunucu özel olarak hazırlanmış çeşitli farklı TCP "İstemci merhaba" paketleri kullanılarak tarandığında, elde edilen yanıtların birleştirilip, paylaşılan veya benzer bir uygulama veya sunucunun göstergesi olan bir parmak izi sağlamak için karma hale getirilebilmesidir. yığını.
Harika geliştiriciler yapan teknik olmayan şeyler Bir süredir bu makaleyi yazmayı erteliyorum - yazmak için hiç nitelikli hissetmedim. Bugün onu yazma zamanının geldiğini düşündüm.
Teknoloji endüstrisindeki bir pozisyon için mülakat yaparken, herhangi bir teklif değerlendirilmeden önce genellikle en az üç tur mülakattan geçeceksiniz. Mermiler genellikle şuna benzer: Eğer öyle düşünüyorsan, yanılıyorsun.
Pragmatik Programcı ilk olarak 1999'da yayınlandı ve o zamandan beri tüm zamanların en iyi programlama kitabı seçildi. Yazarlar Andy Hunt ve David Thomas, Agile Manifesto'nun orijinal yazarları arasındaydı ve bazı ciddi referanslara sahipler.