Anasayfa / Büyük Veri / Çoklu Doğrusallık Sorunu Çözümünde VIF

Çoklu Doğrusallık Sorunu Çözümünde VIF

Çoklu regresyon analizinde bağımsız niteliklerin bağımlı nitelik üzerindeki etkisi incelenir. Bazı bağımsız nitelikler birbirleriyle yüksek doğrusal korelasyona sahip olduğundan bağımlı değişken üzerindeki etkisi dağılır. Modelin sadeliği va anlaşılırlığı adına bağımlı değişkene en çok etki eden az sayıda değişken ile model oluşturmak arzu edilen bir durumdur. Küçük veri analizinde kullanılan SPSS gibi paket programlar çoklu bağlantı tesptini yapabilmektedir. Ancak büyük veri dünyasında bu işler henüz o kadar olgunlaşmadı ve kolay da değil. Geçen gün Spark Scala ile çalışma yaparken benim de işim düştü çoklu bağlantı tespitine. Spark ML kütüphanesinde bir şey bulamadım. Böyle olunca ekip olarak biz de bir VIF değeri hesaplayan fonksiyon yazdık.

Az önce de bahsettiğim gibi bu yazımızda nitelikler arası çoklu bağlantıyı tespit etme yöntemlerinden biri olan Variance Inflation Factor (VIF – Varyans Enflasyon Faktörü)’den bahsedeceğiz ve Spark Scala ile basit bir örnek yapacağız. VIF’de her bir nitelik diğer niteliklerle sıra ile regresyona sokulur. bunun sebebi R2 değerini hesaplamaktadır. Çünkü VIF değerini tespit etmek için R2‘nin bilinmesine ihtiyaç vardır. R2 ile ilgili bilgilerimizi kısaca bir tazeleyelim. Veri noktalarının regresyon eğrisine uzaklıklarının, ortalamaya olan uzaklıklarına oranının 1’den çıkarılması bize R2‘yi verir, daha detaylı bilgi için buraya bakınız. VIF ise 1’in  R2‘nin 1’den çıkarılmış haline bölümüdür.

İki bağımsız değişken arasındaki ilişki arttıkça VIF değeri artar, azaldıkça azalır. İlişkinin olmaması 1 alt sınır; tam ilişki ise ∞ ise üst sınırdır.

 VIF=\frac { 1 }{ 1-{ R }^{ 2 } }

Uygulama esnasında kullanılan yazılım geliştirme ortamı, programlama dili,  işletim sistemi ve sürüm bilgileri: Spark 2.1.1, YARN, Hadoop 2.6.2, Scala 2.11, Apache Zeppelin Notebook, Spark2 interpreter.

Veri Setini Yükleme

Çıktı:

Iris veri setini HDFS’e aktardıktan sonra Zeppelin’e geçiyorum. Iris veri dosyasını incelediğimde başlıkların olmadığını gördüm. Bu yüzden veri yüklerken option("header","true") seçeneğini kullanmıyorum. Onun yerine load() fonksiyonu sonunda toDF() içine el ile hazırladığım nitelikler listesini parametre olarak veriyorum.

Yüklediğimiz veriye bir göz atalım:

Çıktı:

Son olarak VIF sonuçlarını hesaplayıp yazdıran fonksiyonumuzu paylaşıyorum. Gerekli açıklamaları kodların içinde yazdığım için burada fazla bir açıklamada bulunmuyorum.

Çıktılarımız:

Sonuçların yorumu:
sepal-length ve sepal-with değerleri fena durmuyor. Kalan iki nitelikte aşırı bir bağlantıya sahip değilse de ilk iki niteliğe göre epey fazla. Ben olsam ilk iki niteliği tutardım. Acaba doğru mu yapardım?
Hoşçakalın…

Kapak resmi kaynak: https://www.kiplinger.com/article/business/T019-C000-S010-inflation-rate-forecast.html

Hakkında Erkan ŞİRİN

GÖZ ATMAK İSTEYEBİLİRSİNİZ

Microsoft Excel [2013] – İki Farklı Tablonun Tek PivotTable’ da Birleştirilmesi Bölüm-1/3

Bu yazımda  birden fazla veriye ait tablonun tek bir pivottable da birleştirilmesi anlatılacaktır.Yapılan işlemlerin Excel …

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir