Hemen hemen her veri bilimi meraklısı, ilk algoritmaları olarak doğrusal regresyonla başlar. Anlaşılması çok kolay ve basit görünse de, temel bilgileri doğru bir şekilde almak çok önemlidir ve bu bilgi, karşılaşılan karmaşık makine öğrenimi sorunlarının bile üstesinden gelmeye yardımcı olacaktır. Bu makalede, çoklu doğrusal regresyonun ne olduğunu ve Python'da basit bir problemin nasıl çözüleceğini tartışacağız.
Bir girdi değişkenine ve bir çıktı değişkenine sahip olduğunuz basit doğrusal regresyonu duymuştunuz (aksi takdirde özellik ve hedef olarak bilinir veya bağımsız değişken ve bağımlı değişken veya sırasıyla tahmin edici değişken ve tahmin edilen değişken).
Çoklu doğrusal regresyonda, bir çıktı değişkenine, ancak birçok giriş değişkenine sahipsiniz.
Doğrusal regresyon algoritmasının amacı, bağımsız ve bağımlı değişkenler arasındaki doğrusal bir denklemi belirlemektir. Bu denklem, herhangi bir yeni veri noktası için, girdiler için değerler sağlayabileceğiniz ve işlevden bir çıktı alacağınız diğer matematiksel işlevler gibi davranacaktır.
Doğrusal regresyonda, girdi ve çıktı değişkenleri aşağıdaki formüllerle ilişkilendirilir:
Burada, 'x' değişkenleri girdi özellikleridir ve 'y' çıktı değişkenidir. b0, b1,…, bn doğrusal regresyon algoritması tarafından üretilecek katsayıları temsil eder.
Bunu basit bir doğrusal regresyon (bir girdi değişkeni ve bir çıktı değişkeni) içeren küçük bir görsel deneyle anlayalım. Burada bize evlerin büyüklüğü (sqft cinsinden) veriliyor ve satış fiyatını tahmin etmemiz gerekiyor.
Halihazırda satılmış evlerin büyüklüğünü ve fiyatını içeren örnek verilerimiz var. Evlerin fiyatı (Y ekseninde) ile evlerin büyüklüğü (X ekseninde) arasında bir grafik çizerken, aşağıdaki grafiği elde ederiz:
İki değişken arasında var olan doğrusal bir ilişkiyi ve bir evin büyüklüğü arttıkça bir evin fiyatının arttığını açıkça görebiliyoruz. Şimdi amacımız, bu ilişkiyi tanımlayabilecek en iyi çizgiyi belirlemek.
Algoritma, ilişkiyi tanımlamak için rastgele bir çizgi atayarak başlar. Bu denklem y = m * x + c biçiminde olacaktır. Ardından, her veri noktası ile bu çizgi arasındaki mesafenin karesini hesaplar (mesafenin karesi alınır çünkü pozitif veya negatif olabilir, ancak sadece mutlak değere ihtiyacımız var). Mesafenin karesine 'd' diyelim.
"D" nin değeri, en aza indirilmesi gereken hatadır. Çizgi tüm veri noktalarından geçerse, o zaman ilişkiyi tanımlamak için mükemmel çizgidir ve burada d = 0. Bununla birlikte, çoğu durumda, çizgi geçmeyeceğinden 'd' için bir miktar artık hata değerimiz olacaktır. tüm noktalarda.
Birden fazla yinelemeden sonra, algoritma nihayet en uygun çizgi denklemi y = b0 + b1 * x'e ulaşır. Bu basit doğrusal regresyon denklemidir. Buna doğrusal regresyon için Sıradan En Küçük Kareler (OLS) yöntemi denir. Aşağıda, algoritmanın verilere en iyi uyduğunu belirlediği çizgi gösterilmektedir.
Öyleyse, şimdi 1100 fit kare büyüklüğünde bir evin fiyatını tahmin etmemiz gerekirse, bunu basitçe grafikte çizebiliriz ve satırdaki karşılık gelen Y ekseni değerini alabiliriz.
Birçok giriş değişkenine sahip bir veri kümesi verildiğinde, tüm girdi değişkenlerini son regresyon denklemine dahil etmek akıllıca değildir. Bunun yerine, çıktıyı doğru bir şekilde tahmin edebilen bu özelliklerin bir alt kümesinin seçilmesi gerekir. Bu sürece özellik seçimi denir.
Özellik seçimi, işlem süresini azaltmak ve gereksiz değişkenleri kaldırmak için yapılır. Bunu bir örnekle anlayalım. Bir kişinin boyunu üç özelliğe göre tahmin etmemiz gerekiyor: cinsiyet, doğum yılı ve yaş. Burada, doğum yılı ile yaşın doğrudan ilişkili olduğu ve her ikisinin de kullanılmasının yalnızca fazlalığa neden olacağı çok açıktır. Böylece, bunun yerine doğum yılı değişkenini kaldırmayı seçebiliriz. Şimdi, bir kişinin boyunu iki değişkenle tahmin ediyoruz: yaş ve cinsiyet. Bu aynı zamanda sorunun hesaplama süresini ve karmaşıklığını da azaltır.
Aşamalı regresyon, çoklu doğrusal regresyonda özellik seçimi için bir tekniktir. Üç tür aşamalı regresyon vardır: geriye doğru eleme, ileri seçim ve çift yönlü eleme. Geriye doğru yok etmenin ne olduğunu inceleyelim.
Geriye doğru eleme, tüm girdi değişkenleriyle başladığımız ve belirli bir önem kriterini karşılamayan değişkenleri adım adım elediğimiz yinelemeli bir süreçtir.
İlk olarak, bir anlamlılık düzeyi belirleriz (genellikle alfa = 0,05). İkinci olarak, özelliklerle çoklu doğrusal regresyon yapıyoruz ve her değişken için katsayıları elde ediyoruz. Üçüncüsü, en yüksek p değerine sahip özelliği buluyoruz. Dördüncü olarak, p-değerinin> alfa olup olmadığını kontrol ederiz; evet ise, değişkeni kaldırır ve 2. adıma geri döneriz; hayır ise, geriye doğru elemenin sonuna geldik.
Geriye dönük eleme yoluyla, en az önemli özelliklerin tümünü başarıyla ortadan kaldırabilir ve modelimizi yalnızca önemli özelliklere dayanarak oluşturabiliriz.
Çoklu doğrusal regresyonda, birden fazla girdi değişkenimiz olduğundan, nasıl olduğunu anlamak için tüm verileri 2 boyutlu bir grafikte birlikte görselleştirmek mümkün değildir. Bununla birlikte, Jupyter Notebooks, verileri görselleştirme zorunluluğu olmadan veri analizi yapmamızı sağlayan birkaç pakete sahiptir.
Burada bize kullanılmış arabaların birkaç özelliği verildi ve kullanılmış bir arabanın fiyatını tahmin etmemiz gerekiyor. Hemen koda geçelim ve Python'da doğrusal bir regresyon problemini çözmenin ne kadar basit olduğunu keşfedelim!
Veri setini Pandas'tan okuma yöntemini kullanarak içe aktarıyoruz. 5 kategorik özellik ve 3 sayısal özellik olduğunu gözlemleyebiliriz. Fiyat, çıktı hedefi değişkenidir.
Eksik değerleri içeren tüm kayıtları kaldırarak ve veri setinden aykırı değerleri kaldırarak verileri önceden işlemeye devam ediyoruz. Model özelliğini, Marka, Gövde ve Motor Tipinin yaklaşık bir kombinasyonu olduğu ve yedekliliğe neden olacağı için de kaldırıyoruz.
Ancak bir sorunla karşılaştık. Sayısal özelliklerin çıktı değişkeni ile doğrusal bir ilişkisi yoktur.
Bu problem, Price'ın doğal logaritmasını çıktı değişkeni olarak alarak yeni bir değişken oluşturarak çözülebilir. Bu, doğrusal regresyon gerçekleştirirken doğrusal olmayan problemin üstesinden gelmek için birçok püf noktasından biridir.
Yıl ve Motor Hacmi, Günlük Fiyatı ile doğru orantılıyken, Kilometre dolaylı olarak Günlük Fiyatı ile orantılıdır.
Daha sonra, algoritma yalnızca sayısal değerlerle çalışabileceğinden, sayısal değerlere dönüştürülmesi gereken birkaç kategorik değişkenimiz (sayısal veri noktası değerlerine sahip olmayan değişkenler) var. Yani burada kukla değişkenler kavramını kullanıyoruz. Kendi başına ayrı bir konu olduğu için burada ayrıntılı olarak açıklamayacağım ancak bu makaleyi ve google “kukla değişkenler” i okumaya ara vermekten çekinmeyin. Sezgiyi anladıktan sonra daha ileri gidebilirsiniz.
Sonraki adım, Özellik Ölçeklendirmedir. Tüm sayısal değişkenleri aynı aralığa ölçeklendireceğiz, yani sayısal değişkenlerin değerlerini belirli bir aralıktaki değerlere çevireceğiz. Bu, özelliklerin değerlerindeki farklılıktan kaynaklanan istenmeyen önyargıları ortadan kaldırmak için yapılır. Örneğin, Yıl değişkeni 2000 aralığında değerlere sahipken, Motor Hacmi 1-5 aralığında değerlere sahiptir. Dolayısıyla, ölçeklenmemişlerse, algoritma fiyatı tahmin etmek için Yıl değişkeni daha önemliymiş gibi (daha yüksek değerlere sahip olduğu için) davranacaktır ve bu durumdan kaçınılması gerekir.
Bu formül, her özellikteki her veri noktasına ayrı ayrı uygulanacaktır. Scikit-Learn kütüphanesinden StandardScaler nesnesini kullanıyoruz ve değerleri -1 ile +1 arasında ölçeklendiriyoruz.
Daha sonra, modelin doğruluğunu daha sonra kontrol etmemize yardımcı olmak için veri setini eğitim setine ve test setine böldük.
Yukarıdaki tüm adımların tamamlanmasının ardından, 0,01 anlamlılık düzeyini belirleyerek veriler üzerinde geriye doğru eliminasyon çoklu doğrusal regresyon algoritmasını uygulamaya hazırız.
Statsmodels kitaplığı, bu makalenin önceki bölümlerinde tartıştığımız Sıradan En Küçük Kareler algoritmasını kullanır.
reg.summary (), regresyonun tam tanımlayıcı istatistiklerini üretir. Brand_Mercedes-Benz kukla değişkeninin p değeri = 0.857> 0.01 olduğu görülmüştür. Bu değişken böylece elimine edildi ve regresyon yeniden yapıldı. Sonra, Engine-Type_Other'in p-değeri = 0.022> 0.01 olduğunu gözlemledik. Bu değişken elimine edilir ve tekrar regresyon yapılır. Şimdi, tüm özelliklerin p-değerinin <0.01 olduğunu açıkça görebiliriz. Bu bizi gerilememizin sonuna getiriyor.
Şimdi eğitim verilerine uyan bir regresör nesnemiz var. Log-Price test verisi değerleri, test girdileri kullanılarak Statsmodels paketinden predikt () yöntemi kullanılarak tahmin edilir.
Şimdi gerçeğin anı geliyor! Regresyon modelimizin verilere tam olarak uyup uymadığını kontrol etmemiz gerekir. Bunu yapmak için, X eksenindeki "Log-Price" çıktı değişkeninin gerçek değerlerini (hedefleri) ve Y ekseninde "Log-Price" çıktı değişkeninin tahmin edilen değerlerini çizeriz. Ve voila! Y = x çizgisine benzeyen doğrusal bir ilişkiye sahip olduklarını görebiliriz.
Dolayısıyla, çoklu doğrusal regresyon geriye dönük eliminasyon algoritmamızın verilen verilere tam olarak uyduğu ve yeni değerleri doğru bir şekilde tahmin edebildiği sonucuna varılabilir.
Bu, veri biliminin devasa dünyasına sadece bir giriş. Kendimi de yeni başlayan biri olarak görüyorum ve veri bilimi ve analitik alanını keşfetme konusunda çok hevesliyim.
Bu, bu platformdaki ilk makalem, bu yüzden nazik olun ve bu makaleyi daha iyi hale getirmek için ekleyebileceğim tüm iyileştirmeleri bana bildirin.
Bir dahaki sefere kadar, şerefe!
Önümüzdeki 24 saat içinde, Ethereum ağında 100 milyon token serbest bırakılacak. Bu, kripto para birimi sektöründe şimdiye kadar görülen en büyük kripto odaklı veri bilimi deneyinin başlangıcı olacak.
MIT Seçim Laboratuvarı'nda yüksek lisans araştırmacısı ve doktora derecesi olan Jesse Clark tarafından yazılmıştır.
Oakland, CA'da halka açık verileri kullanarak hava kalitesini tahmin etmek Google ve EDF, Oakland'daki hava kirliliğini haritalama çalışmalarını yayınladığında, bu çalışmanın sonuçları büyük ilgi gördü. Yayınladıkları veriler, hava kalitesinin Doğu ve Batı Oakland'daki şehir bloklarına göre nasıl değiştiğini gösteren ilk veri kümelerinden biriydi.
Daniel Fleck ve David Lubert ile yazılmıştır Dizimizin ilk blogu, bir veri bilimi projesini uygun şekilde değerlendirmek için Net Şimdiki Değer (NPV), İç Getiri Oranı (IRR) ve Karlılık Endeksi'ni (PI) kullanmaya odaklanacaktır. Ayrıca, bir veri bilimi metodolojisinin kullanılmasının, bu aynı ekonomik ölçütlerin girdilerini daha yüksek kaliteli değerlendirmeler geliştirmek için nasıl daha da iyileştirebileceğini tartışacağız.
Öz bileşimi ve SVD için yararlı olan doğrusal cebir temel kavramını anlayın Bu makalede, öz ayrıştırma veya tekil değer ayrıştırma (SVD) gibi matris çarpanlara ayırma yöntemlerini anlamanın ilginç bir yolu olan temel kavramını öğreneceksiniz. Tanımlar Temel, vektör uzaylarını (vektör setleri) tanımlamak için kullanılan bir koordinat sistemidir.