Verileri Nasıl Normalize Edilir: Örneklerle Eksiksiz Rehber
Kaybolan gradyanları ve yanlı modelleri durdurun. Makine öğrenimi modellerini iyileştirmek için Scikit-learn'de min-maks ve z-skor kullanarak verileri nasıl normalize edeceğinizi öğrenin.
Kayıp düzeyinde sabit kalan kayıpla, gradyanları ya yok olan ya da patlayan ve bir türlü yakınsamayan bir sinir ağında çoğu zaman mimaride bir sorun yoktur. Sorun genellikle çok daha basittir: Girdilerin bambaşka ölçeklerde olması; bir sütun 0 ile 1 arasında değişirken bir diğeri on binlere uzanır.
Deneyimlerime göre bu desen pratikte sürekli karşımıza çıkar. Beş dakikalık ön işlem, günler süren hiperparametre ayarlamasının çözemediğini çözebilir.
Bu eğitimde, verileri nasıl normalize edeceğinizi göstereceğim. Farklı normalizasyon tekniklerini, hangisinin ne zaman uygulanacağını ve Python uygulamalarını adım adım anlatacağım. Ayrıca yaygın hataları ve yanlış anlamaları ve bunlardan nasıl kaçınacağınızı öğreneceksiniz.
Makine öğrenimi algoritmaları için verileri nasıl hazırlayacağınız hakkında daha fazla bilgi edinmek isterseniz, Python ile Makine Öğrenimi için Önişleme kursumuzu öneririm.
Veri Normalizasyonu Nedir?
Veri normalizasyonu, sayısal özellikleri karşılaştırılabilir aralıklara yerleştirmek veya tutarlı bir ölçeğe getirmek için dönüştürme sürecini ifade eder.
Terim bağlama göre farklı anlamlar taşır: makine öğreniminde genellikle, büyüklüğün önemi belirlemesini engellemek için özellik değerlerinin yeniden ölçeklendirilmesini ifade ederken, veritabanı tasarımında fazlalığı ortadan kaldırmak için tabloların düzenlenmesini ifade eder.
Ben ağırlıklı olarak makine öğrenimi anlamına odaklanacağım; ancak terimlerin çakışmasını netleştirmek için veritabanı normalizasyonunu da kısaca ele alacağız.
Veri normalizasyonu neden önemlidir
Özellikler farklı ölçeklerde olduğunda, bazı algoritmalar sayısal olarak daha büyük olan değerlere orantısız ağırlık verebilir.
Geliri binlerle ölçen bir özellik, yaşı on yıllarla ölçene baskın gelir; bunun nedeni gelirin tahmin görevi için daha önemli olması değil, sayıların daha büyük olmasıdır. Normalizasyon, özellikleri eşit zemine taşır; böylece model gerçekten hangilerinin önemli olduğunu öğrenebilir.
Model eğitimine ek olarak normalizasyon şu konularda da yardımcı olur:
farklı birimler kullanan ölçümleri birleştirmek
tutarsız kurallara sahip birden çok kaynaktan verileri entegre etmek
zaman içinde tutarlılığı koruması gereken veritabanı şemaları tasarlamak.
Veri normalizasyonu vs. ölçekleme vs. standardizasyon
Peki normalizasyon, ölçekleme ve standardizasyon arasındaki fark nedir? Bu üç terim dokümantasyonda sıkça görünür; genellikle farklı anlamları olmasına rağmen birbirinin yerine kullanılır.
Pratik ayrım, modelinizin değerleri belirli sınırlar içinde gerektirip gerektirmediğine dayanır. Min-maks normalizasyon sınırları garanti eder, standardizasyon etmez. Aşağıdaki tablo farkları özetler:
Terim
Ne Yapar
Çıktı Aralığı
En Uygun Olduğu Durum
Ölçekleme
Her türlü aralık dönüşümü için genel terim
Değişken
Şemsiye kategori
Normalizasyon (min-maks)
Sabit sınırlara sıkıştırır
Genellikle 0 ile 1
Sınırlı veriler, belirli giriş aralıkları bekleyen sinir ağları
Standardizasyon (z-skor)
Ortalamayı 0'a merkezler, standart sapmayı 1'e ölçekler
Sınırsız (negatif değerler mümkün)
Sınırsız veriler, yaklaşık normal dağılım varsayan algoritmalar
Artık terimleri netleştirdiğimize göre, bazı klasik kullanım alanlarına bakalım. Normalizasyon, kullanım durumunuza bağlı olarak farklı amaçlara hizmet eder; model eğitim dinamiklerini iyileştirmekten, heterojen veri kaynakları arasında anlamlı karşılaştırmalar yapmaya kadar.
Makine öğrenimi model performansını iyileştirin
Sinir ağları ve lojistik regresyon, her özelliğin tahmin hatasına katkısına göre ilgili ağırlığın ne kadar ayarlanacağını belirleyen gradyan inişi ile ağırlıkları günceller.
Özellik büyüklükleri dramatik biçimde farklı olduğunda, ortaya çıkan gradyanlar da öyledir: büyük özellikler büyük gradyanlar, küçük olanlar küçük gradyanlar üretir. Bu dengesizlik, bazı yönlerde çok büyük adımlar atarken diğerlerinde neredeyse hiç hareket etmemeye yol açar; bu da kararsız eğitime veya hiç yakınsamamaya neden olur.
Mesafe tabanlı algoritmalar olan kNN ve K-means benzer bir sorunla karşılaşır. Benzerliği genellikle Öklidyen mesafe ile hesaplarlar; burada daha büyük sayısal değerler sırf daha büyük oldukları için hesaba daha fazla katkı yapar. 0 ile 10.000 arasında değişen bir özellik, 0 ile 1 arasında değişene baskın gelir; hangi özelliğin tahmin için aslında önemli olduğundan bağımsız olarak.
Ölçekleme, tüm özelliklerin keyfi sayısal aralıklarına göre değil, gerçek öngörü gücüne orantılı katkı yapmasını sağlar.
Özellikler arasında adil karşılaştırma sağlayın
Bileşik skorlar oluştururken veya farklı birimlere sahip ölçümleri birleştirirken, ham değerler yanıltıcı karşılaştırmalara yol açabilir.
Aylık harcamayı dolar cinsinden, oturum açma sıklığını sayı olarak ve hesap yaşını gün olarak birleştiren bir müşteri sağlık metriği, sırf sayılar daha büyük olduğu için dolar tutarlarına en fazla ağırlığı verir.
Normalizasyon, bu ölçümleri tesadüfi büyüklüklerinden ziyade gerçek önemlerini yansıtacak şekilde birleştirmenize olanak tanır.
Bu, keşif amaçlı analiz ve görselleştirme için de geçerlidir. Farklı ölçeklerdeki özellikleri çizmek, desenleri fark etmeyi veya dağılımları karşılaştırmayı zorlaştırır. Normalize edilmiş veriler, özelliklerin birbirleriyle nasıl ilişkili olduğuna dair daha net bir tablo sunar.
Veri kalitesini ve bütünlüğünü iyileştirin
Canlı hatlar genellikle tutarsız kurallara sahip birden fazla veri kaynağından çekim yapar. Gelir, bir sistemde dolar cinsinden, diğerinde binler cinsinden raporlanabilir. Tarihler bir API'de Unix zaman damgası, diğerinde biçimlendirilmiş metin olarak görünebilir.
Aşağı adımlardan önce tutarlı bir ölçek ve biçim belirlemek, sonradan teşhis edilmesi zor olan ince hataları önler.
Veritabanı bağlamında normalizasyon, farklı ama ilişkili bir anlama gelir: her bilginin tam olarak bir yerde yaşadığı şekilde tabloları düzenlemek.
Bu, bir yerdeki değeri değiştirdiğinizde başka yerlerde çelişkili değerlerin kalmasını önler. Teknikler özellik ölçeklemeden farklı olsa da, altta yatan motivasyon benzerdir: verileri tutarlı ve öngörülebilir tutmak.
Yaygın Veri Normalizasyon Teknikleri
Her normalizasyon yaklaşımı veriniz hakkında farklı varsayımlar yapar ve farklı çıktı özellikleri üretir. Doğru seçim, verinizin dağılımına, aykırı değerlere ve aşağıdaki modelin ne beklediğine bağlıdır.
Min-maks normalizasyonu
Min-maks normalizasyonu, genellikle 0 ile 1 arasında, değerleri sabit bir aralığa sıkıştırır; bunu minimumu çıkarıp aralığa bölerek yapar. Bu yaklaşım, tüm değerlerin bilinen sınırlar içinde olmasını garanti ederken orijinal dağılım şeklini korur.
Nasıl çalışır: Minimumu çıkarın, aralığa bölün. Hepsi bu.
Ne yapar:
Çıktının tanımlı sınırlar içinde kalmasını garanti eder
Orijinal dağılım şeklini korur—sadece yeniden ölçeklenmiştir
Sıfır taban, bir tavan olur
En uygun olduğu durumlar:
Piksel yoğunlukları (tanım gereği her zaman 0-255)
Olasılıklar ve yüzdeler
Sınav notları, puanlamalar; taban ve tavanı doğal olan her şey
Sınırlı girdi bekleyen sinir ağları, örn. görüntü sınıflandırıcıları
Dikkat edilmesi gerekenler:
Aykırı değerler min-maks normalizasyonunu tamamen bozabilir. Çoğunluğu 10 ile 100 arasında olan, ama bir değeri 99.999 olan bir veri hayal edin. Bu tek nokta aralığı o kadar genişletir ki normal olan her şey sıfıra yakın dar bir dilime sıkışır. Tek bir kötü gözlem, tüm özelliği mahveder.
Ayrıca yeni verilerin eğitim aralığının dışına düştüğünde ne olacağını da düşünün. Eğitim maksimumunu aşan test değerleri 1'in üzerinde çıktılar üretir. Bunun bir şeyi bozup bozmadığı modelinize bağlıdır.
Z-skor standardizasyonu
Z-skor standardizasyonu, ortalamayı sıfır ve standart sapmayı bir olacak şekilde dönüştürür; çıktıya sabit sınırlar koymaz. Doğal sınırları belirgin olmayan veriler için iyi çalışır ve birçok algoritma tarafından varsayılır veya önerilir.
Nasıl çalışır: Ortalamayı çıkarın, standart sapmaya bölün.
Ne yapar:
Her şeyi ortalamanın sıfır olacağı şekilde yeniden merkezler
Bir standart sapma bir birime eşit olacak şekilde ölçekler
Çıktı negatif olabilir, belirli bir sınırı aşabilir
En uygun olduğu durumlar:
Doğal sınırları belirgin olmayan veriler
Yaklaşık çan eğrisi (normal) dağılımlar
Girdilerin standartlaştırılmasını varsayan veya öneren algoritmalar (çoğu sinir ağı eğitimi, lojistik regresyon uygulamaları)
Başka ne kullanacağınızdan emin olmadığınızda (makul varsayılan)
Değiş tokuş:
Yorumlanabilirlik azalır. "Bu gözlem ortalamanın 1,7 standart sapma üzerinde" demek, "aralığın %80'inde" demekten daha fazla zihinsel çaba ister. Paydaşların ölçeklenmiş değerleri doğrudan anlaması gerekiyorsa, min-maks daha iyi iletişim kurabilir.
Aykırılar yine de ortalamayı ve std sapmayı şişirip yığının ölçeklenmesini bozabilir; ancak min-maks normalizasyona göre daha az sorundur.
Sağlam (robust) ölçekleme
Sağlam ölçekleme, min-maks ve z-skor yaklaşımlarının aykırı değerlere duyarlılığını, ortalama ve standart sapma yerine medyan ve çeyrekler arası aralığı (IQR) kullanarak giderir. Bu istatistikler dağılımınızın kuyruklarındaki uç değerlere rağmen kararlı kalır.
Nasıl çalışır: Medyanı çıkarın, IQR'ye bölün (25. ve 75. yüzdelikler arası fark).
Ne yapar:
Aşırılıkları görmezden gelerek verinizin orta kitlesine göre ölçekler
Kuyruklar istedikleri gibi davranabilir; tipik değerler için dönüşümü çarpıtmazlar
Kaldıramadığınız meşru aykırı değerler olduğunda daha kararlıdır
En uygun olduğu durumlar:
Çoğu alışverişin küçük ama ara sıra meşru yüksek tutarlı işlemlerin olduğu finansal işlemler
Sağa uzun kuyruk gösterme eğilimindeki gelir verileri
Piklerin gerçek olayları temsil ettiği sensör okumaları
Çok çarpık dağılımlar ve ortalama temelli yaklaşımların uç değerlerce sürüklendiği durumlar
Çarpık verilerde neden yardımcı olur:
Gelir dağılımları iyi bir örnektir. Çoğu insan orta düzeyde kazanır, bazıları ise çok yüksek: klasik sağa çarpık dağılım. Standart sapma yüksek gelirlerce şişirilir; bu da standardizasyonu çoğunluk için daha az faydalı yapar. Medyan ve IQR, ne olursa olsun dağılımın ortasına bağlı kalır.
Birim-norm vektör normalizasyonu
Birim-norm (L1/L2) normalizasyonu yukarıdaki tekniklerden farklı çalışır: özellikleri (sütunları) ölçeklemek yerine genellikle tekil örnekleri (satırları) ölçekler. Her örnek vektörü seçilen norma (çoğunlukla L2) göre uzunluğu 1 olacak şekilde yeniden ölçeklenir; böylece toplam büyüklük çıkarılır, yalnızca yön/oranlar kalır.
Bunu L1/L2 düzenlileştirme (Lasso/Ridge) ile karıştırmayın: düzenlileştirme, girdi vektörlerini yeniden ölçeklemek yerine, aşırı uyumu azaltmak için model ağırlıklarına ceza ekleyerek eğitim amacını değiştirir.
Nasıl çalışır: L2 normalizasyonda her satır Öklidyen normuna bölünür; karelerin toplamı bir olur. L1'de bunun yerine mutlak değerlerin toplamı kullanılır.
Ne yapar:
Denklemden büyüklüğü çıkarır
Satırları ham büyüklük yerine orana göre karşılaştırılabilir kılar
Vektörler arası açı sinyal olur; vektörün uzunluğu alakasız hale gelir
En uygun olduğu durumlar:
Kelime sayımı vektörleri olarak temsil edilen metin verileri: 50.000 kelimelik bir rapor doğal olarak 500 kelimelik bir e-postadan daha büyük sayımlara sahiptir; L2 içerik oranlarını karşılaştırmanıza olanak tanır
Kosinüs benzerliği içeren her şey
Belge sınıflandırma, bilgi erişimi ve içeriğe dayalı öneri sistemleri
İşe yaramadığı durumlar:
Büyüklüğün gerçekten önemli olduğu durumlar. Toplam kelime sayısı göreviniz için anlamlıysa, bunu normalize ederek ortadan kaldırmak bilgi kaybına yol açar.
Veritabanı normalizasyonu
Veritabanı normalizasyonu, fazlalığı ortadan kaldırmak ve veri bütünlüğünü iyileştirmek için ilişkisel tabloların yeniden yapılandırılmasını ifade eder—örneğin, bir müşterinin e-postasının her sipariş kaydında tekrarlanmak yerine tam olarak bir yerde saklanmasını sağlamak.
Özellik ölçekleme ile bağlantısı yoktur.
Terim sadece çakışır. Makine öğreniminde "normalizasyon" neredeyse her zaman sayısal değerlerin ölçeklenmesini ifade eder. Veri mühendisliği veya SQL'de ise tablo yapılarının düzenlenmesini (genellikle 1NF, 2NF veya 3NF olarak tartışılır) ifade eder.
Temel Ayrım:
Özellik normalizasyonu (ML): Modellerin öğrenmesine yardımcı olmak için sayıları dönüştürmek (örn., 0–1 ölçekleme).
Veritabanı normalizasyonu (SQL): Veri çoğaltımını önlemek için şemayı düzenlemek.
Bir veri mühendisi sizden "veritabanını normalize edin" derse, MinMaxScaler çalıştırmanızı değil, tablo yapısını düzeltmenizi ister.
Normalizasyonu doğru uygulamak, özellikle eğitim/test bölmeleri etrafında işlem sırasına dikkat etmeyi gerektirir. Kodun kendisi basittir; ancak sıralamadaki ince hatalar tüm değerlendirmenizi geçersiz kılabilir.
Python'da verileri normalize etmek
Scikit-learn size ölçekleyicileri sağlar; ancak ana kural matematiksel değil işlemseldir: önce bölün, sadece eğitim üzerinde fit edin, sonra bu eğitilmiş dönüştürücüyü her yerde yeniden kullanın.
Neden bu kadar titizleniyoruz? Çünkü ölçekleme veriden sayılar öğrenir: min/maks, ort/std, medyan/IQR. Bu sayılar test seti kullanılarak hesaplanırsa, geleceğe dair bilgiyi sessizce eğitime sızdırmış olursunuz. Hiçbir şey çökmez; ama metrikleriniz artık düşündüğünüz şeyi ifade etmez.
Minimal bir örnek:
import pandas as pd
from sklearn.preprocessing import MinMaxScaler, StandardScaler, RobustScaler
from sklearn.model_selection import train_test_split
# Example data
data = pd.DataFrame({'age':[25,32,47,51,62,28,35,44],'income':[30000,45000,72000,85000,120000,38000,55000,67000],'score':[0.2,0.5,0.7,0.4,0.9,0.3,0.6,0.8]})# Split happens before any scaling
train_data, test_data = train_test_split(data, test_size=0.25, random_state=42)Altyapı:
Bu noktada, eğitim bölmesini "modeli inşa ettiğimde dünyanın nasıl göründüğü" olarak değerlendirirsiniz. Test bölmesi "yeni, görülmemiş veri"dir. Ölçekleyiciniz dünyayı yalnızca birincisinden öğrenmelidir.
MinMaxScaler
Min-maks standardizasyonu basittir: her sütun için eğitim minimumunu ve maksimumunu saklar, ardından aynı eşlemeyi daha sonra uygular.
scaler = MinMaxScaler()
scaler.fit(train_data)# training only
train_scaled = scaler.transform(train_data)
test_scaled = scaler.transform(test_data)Altyapı:
Kendinizi test setinde fit() çağırırken yakalarsanız, durun. Bu, test setini ayırmanın amacını boşa çıkarır.
StandardScaler
StandardScaler, eğitim bölmesinden ortalama ve standart sapmayı saklar; ardından hem eğitimi hem testi dönüştürmek için bu aynı değerleri kullanır.
Sağlam ölçeklemenin değer olduğuna dair pratik bir işaret: Tutmak istediğiniz uzun bir kuyruk vardır (ödemeler, tazminatlar, sensör pikleri) ve tek bir garip günün geri kalan özelliği sıfıra yakın sıkıştırmasını istemezsiniz.
Hızlı pandas hesaplamaları
Hızlı keşif çalışmaları için matematiği doğrudan pandas'ta yapmak uygundur; yeter ki ne yaptığınız konusunda dürüst olun: bu, dağılımlara göz atmak içindir, model değerlendirmesi için değil.
Buradaki tehlike: istatistikler tüm veri setine dayanır. Bölmeden önce bunu yaparsanız, test değerleri dönüşümü etkiler. Değerlendirmeniz anlamını yitirir; çünkü önişleme, görmemesi gereken yanıtlara önceden göz atmıştır.
Sızıntı deseni genelde şöyle görünür:
Yanlış yol:
scaler = MinMaxScaler()
scaled_all = scaler.fit_transform(full_data)# problem
train, test = split(scaled_all)Altyapı:
Bu yaklaşım, bölmeden önce verileri normalize eder; dolayısıyla test verisi dönüşümü zaten etkilemiştir.
Doğru yol:
Verileri önce bölerek, ölçekleyicinin istatistikleri yalnızca eğitim setinden öğrenmesini ve test verisinin gerçekten görülmemiş kalmasını sağlarız.
Önişlemeyi uçtan uca uygulamayı (doğru standardizasyon ve sızıntıdan kaçınma dahil) tercih ederseniz, bu kurs tam size göre: Python ile Makine Öğrenimi için Önişleme.
SQL'de normalizasyon
Daha önce belirttiğimiz gibi, aynı kelimenin farklı anlamları var. Burada "normalizasyon" sayısal bir dönüşüm değildir. Gerçekleri çoğaltmayı bırakma yönünde yapısal bir karardır.
Siparişler tablonuz her satırda customer_email depoluyorsa, veritabanı buna izin verir. Veritabanı daha sonra çelişkilere de memnuniyetle izin verir: bir satırda bir e-posta, başka birinde farklı bir e-posta ve hangisinin "gerçek" olduğunu bilmenin bariz bir yolu yok.
Müşteri bilgisi tek bir yerde bulunur. Sorgular join gerektirir; ama güncellemeler tek noktadan yapılır.
Doğru Normalizasyon Tekniğini Nasıl Seçersiniz
Son olarak, hangi normalizasyon tekniğini kullanmanız gerektiğini düşündüğünüzde başvurabileceğiniz bir karar çerçevesi vermek istiyorum.
Sınırlar varsa min-maks
Min-maks ölçekleme, verinizin eğitim ve dağıtıma alma arasında değişmeyecek, bilinen ve kararlı sınırları olduğunda en iyi sonucu verir. Piksel değerleri her zaman 0 ile 255 arasındadır. Olasılık skorları 1'i aşamaz. Sınav notlarının tanımlı taban ve tavanları vardır.
Modelinizin özellikle sınırlı girdi beklediği durumlarda da uygundur; bazı sinir ağı mimarileri böyledir. Ancak aykırı değerler varken min-maks ölçeklemeden kaçının; zira tek bir uç değer normal gözlemlerin tamamını sıfıra yakın dar bir aralığa sıkıştırabilir.
Yedek plan olarak standardizasyon
Standardizasyon, verinizin sınırları veya dağılımı hakkında güçlü varsayımlarınız olmadığında makul bir varsayılan görevi görür. Değişen aralıklara, bilinmeyen sınırlara veya yaklaşık çan eğrisi dağılımlara sahip özellikler için iyi çalışır.
Birçok algoritma uygulaması, çoğu sinir ağı çatısı ve lojistik regresyon kütüphaneleri dahil, standartlaştırılmış girdi varsayar veya önerir. Hangi yaklaşımı kullanacağınızdan emin değilseniz ve verinizin belirgin doğal sınırları yoksa, standardizasyon genellikle güvenli bir seçimdir.
Gerçek dünya karmaşası için sağlam ölçekleme
Veriniz hata değil meşru değerleri temsil eden önemli aykırı değerler içerdiğinde sağlam ölçekleme doğru seçim olur. Finansal işlem verileri tipik olarak bu özelliğe sahiptir: çoğu alışveriş küçüktür, ancak ara sıra büyük harcamalar gerçektir ve veri setinde kalmalıdır.
Gelir dağılımları, zaman zaman pik yapan sensör okumaları ve ağır çarpıklık veya uzun kuyruk içeren tüm veriler sağlam ölçeklemeden fayda görür. Medyan ve çeyrekler arası aralık, uçlarda ne olursa olsun dağılımın kitlesine bağlı kalır.
Ne zaman normalize etmemeli
Rastgele ormanlar, XGBoost ve gradyanla güçlendirilmiş ağaçlar gibi ağaç tabanlı modeller, eşik değerlerinde bölünür ve asla özellikler arasında mesafe veya gradyan hesaplamaz. Ölçek onlar için görünmezdir; bu nedenle normalizasyon fayda sağlamadan karmaşıklık ekler.
Tek-sıcak kodlanmış (one-hot) özellikler zaten ikiliktir (0 ve 1); bu yüzden onları ölçeklemek işe yarar bir şey kazandırmaz. Yalnızca kategorik özelliklerden oluşan veri setleri de aynı kapsamdadır.
Bazen alan-özel dönüşümler, genel amaçlı normalizasyondan daha iyi çalışır:
Log ölçekleme, sağa uzun kuyrukları sıkıştırırken altta toplanmış değerleri açar; bu, gelir veya fiyat verileri için standart yaklaşımlardan sıkça daha iyi çalışır.
Aralıklama (binning), kategori üyeliğinin kesin sayısal değerden daha önemli olduğu durumlarda anlamlıdır.
Güç dönüşümleri belirli durumlarda varyansı dengelemeye yardımcı olur.
Özet karşılaştırma tablosu
İşte tekniklerin ve kullanım durumlarının genel bir görünümü:
Teknik
Şu Durumlarda Kullanın
Şu Durumlarda Kaçının
Çıktı Aralığı
Min-maks
Verinin bilinen sınırları var; model sınırlı girdi bekliyor
Aykırılar mevcut; sınırlar kayabilir
0 ile 1 (sabit)
Standardizasyon
Sınırlar bilinmiyor; yaklaşık normal dağılım; kararsızsanız
Garantili sınırlara ihtiyaç var; ağır aykırılar var
Sınırsız
Sağlam ölçekleme
Önemli aykırılar; çarpık dağılımlar; uzun kuyruklar
Veri zaten temiz ve simetrik
Sınırsız
L1/L2 normalizasyonu
Metin verisi; kosinüs benzerliği; yüksek boyutlu uzaylar
Büyüklük anlam taşıyor
Birim vektör
Hiçbiri
Ağaç tabanlı modeller; one-hot özellikler; alan-özel dönüşümler mevcut
Gradyan veya mesafe tabanlı modeller
Orijinal
Sonuç
Ölçek farkları, bundan etkilenen modeller için gerçek sorunlar yaratır. Mesafe ölçümleri, büyük büyüklükteki özellikleri kayırır. Gradyan inişi, gradyanlar mertebeler boyu farklıyken zorlanır. Eğitim, koddaki veya mimarideki açık nedenlerden bağımsız olarak durur veya patlar.
Normalizasyon bunu çözer. Sınırlı veriler için min-maks normalizasyonu, aykırılar gerçek ve kaldırılamıyorsa sağlam ölçekleme ve makul varsayılan olarak standardizasyon kullanın. Mekanikler basittir: eğitimde fit edin, her yerde tutarlı şekilde uygulayın.
Deneyimime göre zaman kaybettiren, ölçeklemenin ne zaman önemli olduğunu fark etmemek ve ön işlemenin cevap olduğu bir durumda modeli günlerce hata ayıklamaktır. Ya da bunun tersi—ölçeklemeyi refleks olarak, umursamayan modellere uygulayıp faydasız karmaşıklık eklemek.
Seviyenizi yükseltmeye hazır mısınız? Kapsamlı Machine Learning Engineer eğitim yolumuz, makine öğrenimi iş akışı hakkında bilmeniz gereken her şeyi öğretir.
Veri Normalizasyonu Hakkında SSS
Normalizasyon ve standardizasyon arasındaki fark nedir?⌄
Terimler dokümantasyonda sıklıkla birbirinin yerine kullanılsa da, farklı tekniklere karşılık gelir. Normalizasyon (özellikle Min-Maks ölçekleme) genellikle verilerin sabit bir aralığa, çoğu zaman 0 - 1'e yeniden ölçeklendirilmesini içerir. Standardizasyon (Z-skor normalizasyonu) verileri, ortalaması 0 ve standart sapması 1 olacak şekilde dönüştürür.
Her makine öğrenimi modeli veri ölçeklemesi gerektirir mi?⌄
Hayır. Mesafe hesaplarına (K-En Yakın Komşular gibi) veya gradyan inişine (Sinir Ağları gibi) dayanan algoritmaların düzgün çalışması için ölçekleme gerekir. Ancak, Rastgele Ormanlar ve XGBoost gibi ağaç tabanlı modeller, özellikleri bölme kurallarına göre tek tek işler ve genellikle özellik ölçeklemesine karşı değişmezdir.
Boru hattının hangi aşamasında ölçekleyiciyi fit etmeliyim?⌄
Ölçekleyiciyi yalnızca eğitim verisi üzerinde, özellikle eğitim-test bölmesinden sonra fit etmelisiniz. Ölçekleyiciyi bölmeden önce tüm veri setine fit ederseniz, test setinden bilgi eğitim sürecini etkiler ve yanıltıcı değerlendirme metriklerine yol açar.
Normalizasyonu atlamanın sonuçları nelerdir?⌄
Etkisi algoritmaya göre değişir. Sinir Ağları yakınsamada zorlanabilir; bu da dengesiz eğitime veya tamamen öğrenememeye yol açabilir. K-En Yakın Komşular (KNN) ise yanlı sonuçlar verir; çünkü algoritma, daha büyük büyüklüklü özelliklere (ör. maaş) daha küçük olanlara (ör. yaş) kıyasla çok daha fazla ağırlık verir.
Ölçeklemenin ters tepebileceği senaryolar var mı?⌄
Evet. Veri setiniz önemli aykırı değerler içeriyorsa, Min-Maks normalizasyonu "normal" verilerin çoğunluğunu çok dar bir aralığa sıkıştırabilir ve tüm faydalı varyansı fiilen bastırabilir. Ayrıca, tek-sıcak kodlanmış kategorik özellikler zaten ikili (0 ve 1) olduğundan, genellikle bu özellikler için ölçekleme gereksizdir.
Josep, Avrupa projelerine odaklanan serbest bir Veri Bilimcidir; veri depolama, işleme, ileri analitik ve etkili veri hikâyeleştirme konularında uzmandır.
Eğitmen olarak Navarra Üniversitesi'nin Yüksek Lisans programında Büyük Veri dersleri vermekte ve Medium, KDNuggets ve DataCamp gibi platformlarda yayımladığı makalelerle görüşlerini paylaşmaktadır. Josep ayrıca Databites bülteninde (databites.tech) Veri ve Teknoloji üzerine yazmaktadır.
Katalonya Politeknik Üniversitesi'nden Mühendislik Fiziği lisans derecesine ve Pompeu Fabra Üniversitesi'nden Akıllı Etkileşimli Sistemler yüksek lisans derecesine sahiptir.
Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Kayıp düzeyinde sabit kalan kayıpla, gradyanları ya yok olan ya da patlayan ve bir türlü yakınsamayan bir sinir ağında çoğu zaman mimaride bir sorun yoktur. Sorun genellikle çok daha basittir: Girdilerin bambaşka ölçeklerde olması; bir sütun 0 ile 1 arasında değişirken bir diğeri on binlere uzanır.
Deneyimlerime göre bu desen pratikte sürekli karşımıza çıkar. Beş dakikalık ön işlem, günler süren hiperparametre ayarlamasının çözemediğini çözebilir.
Bu eğitimde, verileri nasıl normalize edeceğinizi göstereceğim. Farklı normalizasyon tekniklerini, hangisinin ne zaman uygulanacağını ve Python uygulamalarını adım adım anlatacağım. Ayrıca yaygın hataları ve yanlış anlamaları ve bunlardan nasıl kaçınacağınızı öğreneceksiniz.
Makine öğrenimi algoritmaları için verileri nasıl hazırlayacağınız hakkında daha fazla bilgi edinmek isterseniz, Python ile Makine Öğrenimi için Önişleme kursumuzu öneririm.
Veri Normalizasyonu Nedir?
Veri normalizasyonu, sayısal özellikleri karşılaştırılabilir aralıklara yerleştirmek veya tutarlı bir ölçeğe getirmek için dönüştürme sürecini ifade eder.
Terim bağlama göre farklı anlamlar taşır: makine öğreniminde genellikle, büyüklüğün önemi belirlemesini engellemek için özellik değerlerinin yeniden ölçeklendirilmesini ifade ederken, veritabanı tasarımında fazlalığı ortadan kaldırmak için tabloların düzenlenmesini ifade eder.
Ben ağırlıklı olarak makine öğrenimi anlamına odaklanacağım; ancak terimlerin çakışmasını netleştirmek için veritabanı normalizasyonunu da kısaca ele alacağız.
Veri normalizasyonu neden önemlidir
Özellikler farklı ölçeklerde olduğunda, bazı algoritmalar sayısal olarak daha büyük olan değerlere orantısız ağırlık verebilir.
Geliri binlerle ölçen bir özellik, yaşı on yıllarla ölçene baskın gelir; bunun nedeni gelirin tahmin görevi için daha önemli olması değil, sayıların daha büyük olmasıdır. Normalizasyon, özellikleri eşit zemine taşır; böylece model gerçekten hangilerinin önemli olduğunu öğrenebilir.
Model eğitimine ek olarak normalizasyon şu konularda da yardımcı olur:
Veri normalizasyonu vs. ölçekleme vs. standardizasyon
Peki normalizasyon, ölçekleme ve standardizasyon arasındaki fark nedir? Bu üç terim dokümantasyonda sıkça görünür; genellikle farklı anlamları olmasına rağmen birbirinin yerine kullanılır.
Pratik ayrım, modelinizin değerleri belirli sınırlar içinde gerektirip gerektirmediğine dayanır. Min-maks normalizasyon sınırları garanti eder, standardizasyon etmez. Aşağıdaki tablo farkları özetler:
Terim
Ne Yapar
Çıktı Aralığı
En Uygun Olduğu Durum
Ölçekleme
Her türlü aralık dönüşümü için genel terim
Değişken
Şemsiye kategori
Normalizasyon (min-maks)
Sabit sınırlara sıkıştırır
Genellikle 0 ile 1
Sınırlı veriler, belirli giriş aralıkları bekleyen sinir ağları
Standardizasyon (z-skor)
Ortalamayı 0'a merkezler, standart sapmayı 1'e ölçekler
Sınırsız (negatif değerler mümkün)
Sınırsız veriler, yaklaşık normal dağılım varsayan algoritmalar
Her yaklaşımın ne zaman ters tepebileceğine dair daha derin bir karşılaştırma için, Normalizasyon vs. Standardizasyon Açıklandı başlıklı blogumuz uç durumları iyi kapsar.
Veri Normalizasyonu Kullanım Alanları
Artık terimleri netleştirdiğimize göre, bazı klasik kullanım alanlarına bakalım. Normalizasyon, kullanım durumunuza bağlı olarak farklı amaçlara hizmet eder; model eğitim dinamiklerini iyileştirmekten, heterojen veri kaynakları arasında anlamlı karşılaştırmalar yapmaya kadar.
Makine öğrenimi model performansını iyileştirin
Sinir ağları ve lojistik regresyon, her özelliğin tahmin hatasına katkısına göre ilgili ağırlığın ne kadar ayarlanacağını belirleyen gradyan inişi ile ağırlıkları günceller.
Özellik büyüklükleri dramatik biçimde farklı olduğunda, ortaya çıkan gradyanlar da öyledir: büyük özellikler büyük gradyanlar, küçük olanlar küçük gradyanlar üretir. Bu dengesizlik, bazı yönlerde çok büyük adımlar atarken diğerlerinde neredeyse hiç hareket etmemeye yol açar; bu da kararsız eğitime veya hiç yakınsamamaya neden olur.
Mesafe tabanlı algoritmalar olan kNN ve K-means benzer bir sorunla karşılaşır. Benzerliği genellikle Öklidyen mesafe ile hesaplarlar; burada daha büyük sayısal değerler sırf daha büyük oldukları için hesaba daha fazla katkı yapar. 0 ile 10.000 arasında değişen bir özellik, 0 ile 1 arasında değişene baskın gelir; hangi özelliğin tahmin için aslında önemli olduğundan bağımsız olarak.
Ölçekleme, tüm özelliklerin keyfi sayısal aralıklarına göre değil, gerçek öngörü gücüne orantılı katkı yapmasını sağlar.
Özellikler arasında adil karşılaştırma sağlayın
Bileşik skorlar oluştururken veya farklı birimlere sahip ölçümleri birleştirirken, ham değerler yanıltıcı karşılaştırmalara yol açabilir.
Aylık harcamayı dolar cinsinden, oturum açma sıklığını sayı olarak ve hesap yaşını gün olarak birleştiren bir müşteri sağlık metriği, sırf sayılar daha büyük olduğu için dolar tutarlarına en fazla ağırlığı verir.
Normalizasyon, bu ölçümleri tesadüfi büyüklüklerinden ziyade gerçek önemlerini yansıtacak şekilde birleştirmenize olanak tanır.
Bu, keşif amaçlı analiz ve görselleştirme için de geçerlidir. Farklı ölçeklerdeki özellikleri çizmek, desenleri fark etmeyi veya dağılımları karşılaştırmayı zorlaştırır. Normalize edilmiş veriler, özelliklerin birbirleriyle nasıl ilişkili olduğuna dair daha net bir tablo sunar.
Veri kalitesini ve bütünlüğünü iyileştirin
Canlı hatlar genellikle tutarsız kurallara sahip birden fazla veri kaynağından çekim yapar. Gelir, bir sistemde dolar cinsinden, diğerinde binler cinsinden raporlanabilir. Tarihler bir API'de Unix zaman damgası, diğerinde biçimlendirilmiş metin olarak görünebilir.
Aşağı adımlardan önce tutarlı bir ölçek ve biçim belirlemek, sonradan teşhis edilmesi zor olan ince hataları önler.
Veritabanı bağlamında normalizasyon, farklı ama ilişkili bir anlama gelir: her bilginin tam olarak bir yerde yaşadığı şekilde tabloları düzenlemek.
Bu, bir yerdeki değeri değiştirdiğinizde başka yerlerde çelişkili değerlerin kalmasını önler. Teknikler özellik ölçeklemeden farklı olsa da, altta yatan motivasyon benzerdir: verileri tutarlı ve öngörülebilir tutmak.
Yaygın Veri Normalizasyon Teknikleri
Her normalizasyon yaklaşımı veriniz hakkında farklı varsayımlar yapar ve farklı çıktı özellikleri üretir. Doğru seçim, verinizin dağılımına, aykırı değerlere ve aşağıdaki modelin ne beklediğine bağlıdır.
Min-maks normalizasyonu
Min-maks normalizasyonu, genellikle 0 ile 1 arasında, değerleri sabit bir aralığa sıkıştırır; bunu minimumu çıkarıp aralığa bölerek yapar. Bu yaklaşım, tüm değerlerin bilinen sınırlar içinde olmasını garanti ederken orijinal dağılım şeklini korur.
Nasıl çalışır: Minimumu çıkarın, aralığa bölün. Hepsi bu.
Ne yapar:
En uygun olduğu durumlar:
Dikkat edilmesi gerekenler:
Aykırı değerler min-maks normalizasyonunu tamamen bozabilir. Çoğunluğu 10 ile 100 arasında olan, ama bir değeri 99.999 olan bir veri hayal edin. Bu tek nokta aralığı o kadar genişletir ki normal olan her şey sıfıra yakın dar bir dilime sıkışır. Tek bir kötü gözlem, tüm özelliği mahveder.
Ayrıca yeni verilerin eğitim aralığının dışına düştüğünde ne olacağını da düşünün. Eğitim maksimumunu aşan test değerleri 1'in üzerinde çıktılar üretir. Bunun bir şeyi bozup bozmadığı modelinize bağlıdır.
Z-skor standardizasyonu
Z-skor standardizasyonu, ortalamayı sıfır ve standart sapmayı bir olacak şekilde dönüştürür; çıktıya sabit sınırlar koymaz. Doğal sınırları belirgin olmayan veriler için iyi çalışır ve birçok algoritma tarafından varsayılır veya önerilir.
Nasıl çalışır: Ortalamayı çıkarın, standart sapmaya bölün.
Ne yapar:
En uygun olduğu durumlar:
Değiş tokuş:
Yorumlanabilirlik azalır. "Bu gözlem ortalamanın 1,7 standart sapma üzerinde" demek, "aralığın %80'inde" demekten daha fazla zihinsel çaba ister. Paydaşların ölçeklenmiş değerleri doğrudan anlaması gerekiyorsa, min-maks daha iyi iletişim kurabilir.
Aykırılar yine de ortalamayı ve std sapmayı şişirip yığının ölçeklenmesini bozabilir; ancak min-maks normalizasyona göre daha az sorundur.
Sağlam (robust) ölçekleme
Sağlam ölçekleme, min-maks ve z-skor yaklaşımlarının aykırı değerlere duyarlılığını, ortalama ve standart sapma yerine medyan ve çeyrekler arası aralığı (IQR) kullanarak giderir. Bu istatistikler dağılımınızın kuyruklarındaki uç değerlere rağmen kararlı kalır.
Nasıl çalışır: Medyanı çıkarın, IQR'ye bölün (25. ve 75. yüzdelikler arası fark).
Ne yapar:
En uygun olduğu durumlar:
Çarpık verilerde neden yardımcı olur:
Gelir dağılımları iyi bir örnektir. Çoğu insan orta düzeyde kazanır, bazıları ise çok yüksek: klasik sağa çarpık dağılım. Standart sapma yüksek gelirlerce şişirilir; bu da standardizasyonu çoğunluk için daha az faydalı yapar. Medyan ve IQR, ne olursa olsun dağılımın ortasına bağlı kalır.
Birim-norm vektör normalizasyonu
Birim-norm (L1/L2) normalizasyonu yukarıdaki tekniklerden farklı çalışır: özellikleri (sütunları) ölçeklemek yerine genellikle tekil örnekleri (satırları) ölçekler. Her örnek vektörü seçilen norma (çoğunlukla L2) göre uzunluğu 1 olacak şekilde yeniden ölçeklenir; böylece toplam büyüklük çıkarılır, yalnızca yön/oranlar kalır.
Bunu L1/L2 düzenlileştirme (Lasso/Ridge) ile karıştırmayın: düzenlileştirme, girdi vektörlerini yeniden ölçeklemek yerine, aşırı uyumu azaltmak için model ağırlıklarına ceza ekleyerek eğitim amacını değiştirir.
Nasıl çalışır: L2 normalizasyonda her satır Öklidyen normuna bölünür; karelerin toplamı bir olur. L1'de bunun yerine mutlak değerlerin toplamı kullanılır.
Ne yapar:
En uygun olduğu durumlar:
İşe yaramadığı durumlar:
Büyüklüğün gerçekten önemli olduğu durumlar. Toplam kelime sayısı göreviniz için anlamlıysa, bunu normalize ederek ortadan kaldırmak bilgi kaybına yol açar.
Veritabanı normalizasyonu
Veritabanı normalizasyonu, fazlalığı ortadan kaldırmak ve veri bütünlüğünü iyileştirmek için ilişkisel tabloların yeniden yapılandırılmasını ifade eder—örneğin, bir müşterinin e-postasının her sipariş kaydında tekrarlanmak yerine tam olarak bir yerde saklanmasını sağlamak.
Özellik ölçekleme ile bağlantısı yoktur.
Terim sadece çakışır. Makine öğreniminde "normalizasyon" neredeyse her zaman sayısal değerlerin ölçeklenmesini ifade eder. Veri mühendisliği veya SQL'de ise tablo yapılarının düzenlenmesini (genellikle 1NF, 2NF veya 3NF olarak tartışılır) ifade eder.
Temel Ayrım:
Bir veri mühendisi sizden "veritabanını normalize edin" derse,
MinMaxScalerçalıştırmanızı değil, tablo yapısını düzeltmenizi ister.Daha derin bir inceleme için, şu rehbere göz atın: SQL'de veritabanı normalizasyonu.
Pratikte Veriler Nasıl Normalize Edilir
Normalizasyonu doğru uygulamak, özellikle eğitim/test bölmeleri etrafında işlem sırasına dikkat etmeyi gerektirir. Kodun kendisi basittir; ancak sıralamadaki ince hatalar tüm değerlendirmenizi geçersiz kılabilir.
Python'da verileri normalize etmek
Scikit-learn size ölçekleyicileri sağlar; ancak ana kural matematiksel değil işlemseldir: önce bölün, sadece eğitim üzerinde fit edin, sonra bu eğitilmiş dönüştürücüyü her yerde yeniden kullanın.
Neden bu kadar titizleniyoruz? Çünkü ölçekleme veriden sayılar öğrenir: min/maks, ort/std, medyan/IQR. Bu sayılar test seti kullanılarak hesaplanırsa, geleceğe dair bilgiyi sessizce eğitime sızdırmış olursunuz. Hiçbir şey çökmez; ama metrikleriniz artık düşündüğünüz şeyi ifade etmez.
Minimal bir örnek:
Bu noktada, eğitim bölmesini "modeli inşa ettiğimde dünyanın nasıl göründüğü" olarak değerlendirirsiniz. Test bölmesi "yeni, görülmemiş veri"dir. Ölçekleyiciniz dünyayı yalnızca birincisinden öğrenmelidir.
MinMaxScaler
Min-maks standardizasyonu basittir: her sütun için eğitim minimumunu ve maksimumunu saklar, ardından aynı eşlemeyi daha sonra uygular.
Kendinizi test setinde
fit()çağırırken yakalarsanız, durun. Bu, test setini ayırmanın amacını boşa çıkarır.StandardScaler
StandardScaler, eğitim bölmesinden ortalama ve standart sapmayı saklar; ardından hem eğitimi hem testi dönüştürmek için bu aynı değerleri kullanır.Sızıntı olduğunda sessizce bozulan budur; çünkü ort/std'yi, farkında olmadan gereğinden fazla veri kullanarak "dengelemek" kolaydır.
RobustScaler
RobustScaleraynı "bir kez fit et, sonsuza dek kullan" rutinini yapar; ancak medyan ve IQR kullanır; böylece birkaç uç nokta ölçeği belirlemez.Sağlam ölçeklemenin değer olduğuna dair pratik bir işaret: Tutmak istediğiniz uzun bir kuyruk vardır (ödemeler, tazminatlar, sensör pikleri) ve tek bir garip günün geri kalan özelliği sıfıra yakın sıkıştırmasını istemezsiniz.
Hızlı pandas hesaplamaları
Hızlı keşif çalışmaları için matematiği doğrudan pandas'ta yapmak uygundur; yeter ki ne yaptığınız konusunda dürüst olun: bu, dağılımlara göz atmak içindir, model değerlendirmesi için değil.
Veri sızıntısını önlemek
Buradaki tehlike: istatistikler tüm veri setine dayanır. Bölmeden önce bunu yaparsanız, test değerleri dönüşümü etkiler. Değerlendirmeniz anlamını yitirir; çünkü önişleme, görmemesi gereken yanıtlara önceden göz atmıştır.
Sızıntı deseni genelde şöyle görünür:
Yanlış yol:
Bu yaklaşım, bölmeden önce verileri normalize eder; dolayısıyla test verisi dönüşümü zaten etkilemiştir.
Doğru yol:
Verileri önce bölerek, ölçekleyicinin istatistikleri yalnızca eğitim setinden öğrenmesini ve test verisinin gerçekten görülmemiş kalmasını sağlarız.
Aynı işlemler, farklı sıra. Ve tüm mesele sıra.
Önişlemeyi uçtan uca uygulamayı (doğru standardizasyon ve sızıntıdan kaçınma dahil) tercih ederseniz, bu kurs tam size göre: Python ile Makine Öğrenimi için Önişleme.
SQL'de normalizasyon
Daha önce belirttiğimiz gibi, aynı kelimenin farklı anlamları var. Burada "normalizasyon" sayısal bir dönüşüm değildir. Gerçekleri çoğaltmayı bırakma yönünde yapısal bir karardır.
Siparişler tablonuz her satırda
customer_emaildepoluyorsa, veritabanı buna izin verir. Veritabanı daha sonra çelişkilere de memnuniyetle izin verir: bir satırda bir e-posta, başka birinde farklı bir e-posta ve hangisinin "gerçek" olduğunu bilmenin bariz bir yolu yok.Normalizasyon öncesi:
Müşteri bilgileri her satırda tekrarlanır. E-postayı güncellemek, tüm siparişlerini bulup değiştirmeyi gerektirir.
Normalizasyon sonrası:
Müşteri bilgisi tek bir yerde bulunur. Sorgular join gerektirir; ama güncellemeler tek noktadan yapılır.
Doğru Normalizasyon Tekniğini Nasıl Seçersiniz
Son olarak, hangi normalizasyon tekniğini kullanmanız gerektiğini düşündüğünüzde başvurabileceğiniz bir karar çerçevesi vermek istiyorum.
Sınırlar varsa min-maks
Min-maks ölçekleme, verinizin eğitim ve dağıtıma alma arasında değişmeyecek, bilinen ve kararlı sınırları olduğunda en iyi sonucu verir. Piksel değerleri her zaman 0 ile 255 arasındadır. Olasılık skorları 1'i aşamaz. Sınav notlarının tanımlı taban ve tavanları vardır.
Modelinizin özellikle sınırlı girdi beklediği durumlarda da uygundur; bazı sinir ağı mimarileri böyledir. Ancak aykırı değerler varken min-maks ölçeklemeden kaçının; zira tek bir uç değer normal gözlemlerin tamamını sıfıra yakın dar bir aralığa sıkıştırabilir.
Yedek plan olarak standardizasyon
Standardizasyon, verinizin sınırları veya dağılımı hakkında güçlü varsayımlarınız olmadığında makul bir varsayılan görevi görür. Değişen aralıklara, bilinmeyen sınırlara veya yaklaşık çan eğrisi dağılımlara sahip özellikler için iyi çalışır.
Birçok algoritma uygulaması, çoğu sinir ağı çatısı ve lojistik regresyon kütüphaneleri dahil, standartlaştırılmış girdi varsayar veya önerir. Hangi yaklaşımı kullanacağınızdan emin değilseniz ve verinizin belirgin doğal sınırları yoksa, standardizasyon genellikle güvenli bir seçimdir.
Gerçek dünya karmaşası için sağlam ölçekleme
Veriniz hata değil meşru değerleri temsil eden önemli aykırı değerler içerdiğinde sağlam ölçekleme doğru seçim olur. Finansal işlem verileri tipik olarak bu özelliğe sahiptir: çoğu alışveriş küçüktür, ancak ara sıra büyük harcamalar gerçektir ve veri setinde kalmalıdır.
Gelir dağılımları, zaman zaman pik yapan sensör okumaları ve ağır çarpıklık veya uzun kuyruk içeren tüm veriler sağlam ölçeklemeden fayda görür. Medyan ve çeyrekler arası aralık, uçlarda ne olursa olsun dağılımın kitlesine bağlı kalır.
Ne zaman normalize etmemeli
Rastgele ormanlar, XGBoost ve gradyanla güçlendirilmiş ağaçlar gibi ağaç tabanlı modeller, eşik değerlerinde bölünür ve asla özellikler arasında mesafe veya gradyan hesaplamaz. Ölçek onlar için görünmezdir; bu nedenle normalizasyon fayda sağlamadan karmaşıklık ekler.
Tek-sıcak kodlanmış (one-hot) özellikler zaten ikiliktir (0 ve 1); bu yüzden onları ölçeklemek işe yarar bir şey kazandırmaz. Yalnızca kategorik özelliklerden oluşan veri setleri de aynı kapsamdadır.
Bazen alan-özel dönüşümler, genel amaçlı normalizasyondan daha iyi çalışır:
Özet karşılaştırma tablosu
İşte tekniklerin ve kullanım durumlarının genel bir görünümü:
Teknik
Şu Durumlarda Kullanın
Şu Durumlarda Kaçının
Çıktı Aralığı
Min-maks
Verinin bilinen sınırları var; model sınırlı girdi bekliyor
Aykırılar mevcut; sınırlar kayabilir
0 ile 1 (sabit)
Standardizasyon
Sınırlar bilinmiyor; yaklaşık normal dağılım; kararsızsanız
Garantili sınırlara ihtiyaç var; ağır aykırılar var
Sınırsız
Sağlam ölçekleme
Önemli aykırılar; çarpık dağılımlar; uzun kuyruklar
Veri zaten temiz ve simetrik
Sınırsız
L1/L2 normalizasyonu
Metin verisi; kosinüs benzerliği; yüksek boyutlu uzaylar
Büyüklük anlam taşıyor
Birim vektör
Hiçbiri
Ağaç tabanlı modeller; one-hot özellikler; alan-özel dönüşümler mevcut
Gradyan veya mesafe tabanlı modeller
Orijinal
Sonuç
Ölçek farkları, bundan etkilenen modeller için gerçek sorunlar yaratır. Mesafe ölçümleri, büyük büyüklükteki özellikleri kayırır. Gradyan inişi, gradyanlar mertebeler boyu farklıyken zorlanır. Eğitim, koddaki veya mimarideki açık nedenlerden bağımsız olarak durur veya patlar.
Normalizasyon bunu çözer. Sınırlı veriler için min-maks normalizasyonu, aykırılar gerçek ve kaldırılamıyorsa sağlam ölçekleme ve makul varsayılan olarak standardizasyon kullanın. Mekanikler basittir: eğitimde fit edin, her yerde tutarlı şekilde uygulayın.
Deneyimime göre zaman kaybettiren, ölçeklemenin ne zaman önemli olduğunu fark etmemek ve ön işlemenin cevap olduğu bir durumda modeli günlerce hata ayıklamaktır. Ya da bunun tersi—ölçeklemeyi refleks olarak, umursamayan modellere uygulayıp faydasız karmaşıklık eklemek.
Seviyenizi yükseltmeye hazır mısınız? Kapsamlı Machine Learning Engineer eğitim yolumuz, makine öğrenimi iş akışı hakkında bilmeniz gereken her şeyi öğretir.