Gradient Descent Metodu Kullanılarak Lineer Regresyon [Kodlama Örneği ile Açıklandı]

Yayınlanan: 2020-12-21

İster bir yazılım geliştiricisi, ister veri bilimcisi veya veri analisti olmayı hedefliyor olun, makine öğrenimi hala tur atıyor. Doğrusal regresyonda ciddi çaba sarf etmek için Python konusunda çok bilgili olmalısınız. Başlangıç ​​aşamasına başlamak sıkıcı bir iş olabilir, bu makale regresyonu daha iyi anlamanıza yardımcı olacaktır.

Gradyan iniş yöntemi, sunduğu optimizasyon teknikleri nedeniyle çeşitli yinelemelerde tercih edilir. Algoritma ile, örneğin Lojistik regresyon ve sinir ağı gibi boyutu azaltmak mümkündür. Gradyan ile başlamadan önce, Lineer regresyona bir göz atalım.

Okuyun: Veri Bilimi için Makine Öğrenimi Algoritmaları

İçindekiler

Doğrusal Regresyon Nedir?

Bir bağımlı değişken ile bir veya daha fazla bağımsız değişken arasındaki ilişkinin modellenmesine yönelik doğrusal yaklaşımdır. Bu tür değişkenler arasındaki doğrusal ilişki ay= mx+b denklem formatında ifade edilecektir.

Belirli bir x bağımlı değişkeninden ve bir etkiye neden olmaktan sorumlu diğer y'den öğrenme eğrisini geliştirecek, izlenen bir makine öğrenme algoritmasıdır. Bu doğa, x ve y için değerlerin ve kesinlik faktörlerinin tahmin edilmesine yardımcı olur.

Gradyan İniş Nedir?

Gradyan regresyonunun kullanımı, bir fonksiyonun maliyetini doğrudan en aza indirmeyi sağlayan bir fonksiyonun gerekli parametrelerinin değerlerini bulmak için kullanılan algoritmanın optimize edilmesini içerir.

Konsepti bir senaryo ile anlayalım, zifiri karanlık bir ortamda bir kaleye inmek istediğinizi hayal edin. Bu sırada tamamen engelli olduğunuzu ve geri inmek için en kısa ve en kolay mesafeyi bulmanız gerektiğini varsayalım. Gradyan iniş, hedefinize ulaşmanın optimize edilmiş yolunu bulmak için kullanılan kaynak olacaktır. Temel bir yön girişi ile, algoritma en iyi rotayı çizebilir ve önerebilir.

Gradyan, makine öğreniminde en çok kullanılan ve yaygın olarak kabul edilen algoritmalardan biridir ve aynı zamanda daha önceki aşamalarda makine öğreniminde uzmanlaşmanın temelini oluşturduğu düşünülmektedir.

Gradyanın daha iyi bir tahmini için, onu NumPy yardımıyla python üzerinde çalışarak bir örnekte bir kodla uygulamaya çalışalım.

NumPy'den içe aktarma *

# y = mx + b

# m eğimdir, b y-kesişim noktasıdır

def hesaplama_hatası_for_line_given_points(b, m, puan):

toplamHata = 0

i aralığında (0, len(puan)):

x = puan[i, 0]

y = noktalar[i, 1]

totalError += (y – (m * x + b)) ** 2

toplam Hatayı döndür / kayan nokta(len(nokta))

def step_gradient(b_current, m_current, puan, learningRate):

b_gradient = 0

m_gradyan = 0

N = kayan nokta(len(nokta))

i aralığında (0, len(puan)):

x = puan[i, 0]

y = noktalar[i, 1]

b_gradient += -(2/N) * (y – ((m_current * x) + b_current))

m_gradient += -(2/N) * x * (y – ((m_current * x) + b_current))

new_b = b_current – ​​(learningRate * b_gradient)

new_m = m_current – ​​(learningRate * m_gradient)

[new_b, new_m] döndür

def gradient_descent_runner(nokta, başlangıç_b, başlangıç_m, öğrenme_hızı, sayı_iterasyon):

b = başlangıç_b

m = başlangıç_m

aralıktaki i için (sayı_iterasyonlar):

b, m = step_gradient(b, m, dizi(nokta), öğrenme_hızı)

dönüş [b, m]

tanımlı çalıştırma():

puan = genfromtxt(“veri.csv”, sınırlayıcı=”,”)

öğrenme oranı = 0.0001

initial_b = 0 # ilk y-kesme noktası tahmini

initial_m = 0 # ilk eğim tahmini

sayı_yineleme = 1000

"B = {0}, m = {1}, error = {2} konumunda gradyan inişi başlatılıyor".format(initial_b, initial_m, hesaplama_error_for_line_given_points(initial_b, initial_m, puan))

“Koşu…” yazdır

[b, m] = gradyan_iniş_koşucu(nokta, başlangıç_b, başlangıç_m, öğrenme_hızı, sayı_yineleme)

“{0} yinelemeden sonra b = {1}, m = {2}, error = {3}”.format(num_iterations, b, m, hesaplama_error_for_line_given_points(b, m, puan))

eğer __name__ == '__main__':

koşmak()

kod referansı

Bu, noktaları tek bir çizgide çizerek doğrusal regresyonda problemlerin çözüldüğü gradyan arama programının görsel bir temsilidir. Kod, nasıl çalıştığının bir gösterimidir ve bir çizgi boyunca birkaç nokta belirlemeye yardımcı olur. Gradyan iniş, bir hata işleviyle ilgili olarak bu parametreler için en iyi değerleri bulmaya çalışır.

Kod, 'çalıştır' etiketli özel bir işlev içerir. Değişkenlerin davranışına ve çizgi eğimine dayalı olarak bir ilk tahmin seti yapmak için algoritmada kullanılan bir dizi parametrenin tanımlanmasına yardımcı olur. Diğer faktörler, aşağıda gösterilen biçimde gradyan inişini elde etmek için gereken yineleme sayısını içerir:

initial_b = 0 # ilk y-kesme noktası tahmini

initial_m = 0 # ilk eğim tahmini

sayı_yineleme = 1000

Gradient yönteminin oldukça basit ve anlaşılır olduğunu kolayca anlayabilirsiniz. İşlevsel yeteneklerini anladıktan sonra, odaklanmanız gereken tek kısım, optimize etmekle ilgilendiğiniz işlevin maliyetidir.

Amaç, değişkenlerin değerlerinin her biri için farklı iterasyonlar yapmak, maliyetlerini değerlendirmek ve programda daha iyi ve düşük maliyet başlatacak yeni değişkenler oluşturmak için sürekli çaba sarf etmektir.

Mutlaka Okuyun: Makine Öğrenimi Mülakat Soruları

Gradyan İniş için İpuçları

1. Öğrenme Hızı

Optimizasyon protokolü, daha küçük ondalık sayılarda bile öğrenme oranı değerini düşürmeye, platforma uygun farklı değerleri karıştırmaya ve ardından en iyi çalışma değerini seçmeye yardımcı olur. Öğrenme çok daha hızlı ve verimli olabilir, bunun gerçekleşmesi için her veri kümesinden geçiş sayısını sınırladığınızdan emin olun. İdeal sayı 1 ile 10 arasındadır.

2. Arsa Ortalama Maliyet

Her veri kümesi örneğinin eğitim süresi, algoritmanın çalıştırılması sırasında alınan ekstra süre nedeniyle gecikmeye neden olabilir. Daha iyi sonuçlar için, algoritma için daha iyi bir öğrenme eğilimi bulma olasılığının daha yüksek olması için 100 veya 1000 üzerinden ortalamayı seçin.

Özet

Bu makalede, gradyan ve böyle bir algoritmanın nasıl oluşturulacağını öğrendiniz, bu, öğrenilmiş bir regresyon modeliyle kesin ve daha etkili tahminler yapmanıza yardımcı olur. Gerçek vaka senaryolarıyla çok daha kapsamlı ve daha derin bir düzeyde anlamak için upGrad'a kaydolun. Kalkınan Veri Bilimcileri ve Makine Öğrenimi adayları için özel olarak yapılandırılmış küratörlü kurslar sunuyoruz.

Yapay Zeka Güdümlü Teknolojik Devrime Öncülük Edin

MAKİNE ÖĞRENİMİNDE PG DİPLOMASI VE YAPAY ZEKA
Daha fazla bilgi edin