Lei Feng Net Not: Bu makalenin yazarı Yang Xi, orijinal metin yazar tarafından yayınlandı kişisel blog Leifeng.com yetkilendirildi.
Geçen hafta, Abhishek Thakur adlı bir veri bilimci, Linkedin'inde (Neredeyse) Herhangi Bir Makine Öğrenimi Problemine Yaklaşımla ilgili (Neredeyse) Herhangi Bir Makine Öğrenimi Problemine Yaklaşan bir makale yayınladı ve kendi oluşturduğu ve neredeyse tüm makine öğrenimi problemlerini çözebilecek otomatik bir makine öğrenimi çerçevesini tanıttı. Proje çok hızlı. Ayrıca yayınlanacak. Bu makale Kaggle'da hızla popüler oldu. 100'den fazla veri bilimiyle ilgili yarışmaya katıldı ve çok değerli deneyim biriktirdi. Esprili bir şekilde, "Böyle bir çerçeve yazmak çok fazla deneyim gerektirir. Herkes buna sahip değil. Birçok insanın değerli deneyimleri var, ancak paylaşmak istemiyorlar. Ben biraz deneyimi olan ve paylaşmaya istekli biriyim. " Elbette bu makale de tartışmalı ve pek çok kişi kapsamlı olmadığını düşünüyor.
Ben de son zamanlarda Kaggle'a katılmaya hazırlanıyorum, daha önce birkaç örnek görmüştüm ve bir analiz sürecini de özetledim.Bugün bu yazıyı okudum ve bazı verimli yöntemlerden bahsettim.En kuru olanı masa yapmasıdır. Her algoritmanın genellikle eğitilmesi gereken parametreler listelenmiştir.
Bu soru çok önemlidir, çünkü çoğu zaman parametreleri ayarlayarak ve modelleri eğiterek doğruluğu artırmaktır. Yeni başlayan biri olarak, ilk aşamada, en çok bilmek istediğim soru, parametrelerin nasıl ayarlanacağıdır. Analiz rutini çok basit olduğu için sadece birkaç adım var ve sadece birkaç yaygın kullanılan algoritma var.Algoritmayı çağırmanın yeterli olduğunu düşünüyorsanız, bu kesinlikle yeterli değil. Gerçek süreçte, algoritma çağrıldıktan sonra sonuçlar genellikle çok iyi değildir.Bu sırada, hangi parametrelerin ayarlanabileceği, hangi verilerin daha fazla işlenmesi gerektiği ve daha uygun algoritmaların var olduğu daha fazla analize ihtiyaç vardır.
Çerçevesine bir göz atalım.
Veri bilimcilerinin zamanının% 60-70'inin veri temizleme ve model algoritmaları uygulamaya harcandığı söyleniyor.Bu çerçeve esas olarak algoritmanın uygulama kısmına yöneliktir.
Kaggle, veri bilimi yarışmaları için bir platformdur. Birçok şirket, gerçek işletmeye yakın bazı sorunları yayınlayacak ve veri bilimini seven insanları birlikte çözmek için çekecek. Bu veriler aracılığıyla deneyim biriktirebilir ve makine öğrenimi düzeyini artırabilirsiniz.
Kaggle problemlerini çözmek için algoritmalar uygulamak için genellikle aşağıdaki adımlar vardır:
1. Adım: Sorunu belirleyin
Adım 2: Verileri ayırın
3. Adım: Özellikleri oluşturun ve çıkarın
4. Adım: Verileri birleştirin
5. Adım: Ayrıştırın
6. Adım: Özellikleri seçin
7. Adım: Eğitim için bir algoritma seçin
Tabii ki, bir işçi işini iyi yapmak istiyorsa, önce aletlerini keskinleştirmeli ve aletleri ve çantaları yerleştirmelidir. En uygun yol, veri bilimi için gerekli paketlerin çoğunu içeren Anaconda'yı kurmaktır, sadece doğrudan içe aktarın. Yaygın olarak kullanılan paketler şunlardır:
-pandalar: genellikle verileri işlem için bir veri çerçevesine dönüştürmek için kullanılır
-scikit-learn: İçinde kullanılacak makine öğrenimi algoritma modelleri var
-matplotlib: resim çizmek için kullanılır
-Ve xgboost, keras, tqdm vb.
Bu adımda, sorunun sınıflandırma mı yoksa regresyon mu olduğu açıktır. Soru ve verilerle değerlendirilebilir.Veri X ve etiket sütunlarından oluşur.Etiket bir sütun veya birden fazla sütun olabilir. İkili veya gerçek olabilir. İkili olduğunda sorun sınıflandırmaya aittir. Gerçek olduğunda sorun Dönülecek.
Verileri neden iki bölüme ayırmanız gerekiyor?
Modeli eğitmek için Eğitim Verilerini ve modelin performansını test etmek için Doğrulama Verilerini kullanın. Aksi takdirde, çeşitli ayarlama parametreleri aracılığıyla model, eğitim veri kümesinde çok iyi performans gösterebilir, ancak bu, aşırı uydurma olabilir. Mevcut verilere fazlasıyla bağımlıdır, uydurma etkisi özellikle iyidir, ancak yalnızca eğitim seti için geçerlidir, böylece yeni bir veri geldiğinde, tahminin ne olacağını bilmiyorum. Bu nedenle, bu modelin kendi kendine eğlence için var olup olmadığını veya gerçekten iyi performans gösterip göstermediğini görmek için doğrulama gereklidir.
Scikit öğrenme paketinde bunu yapmanıza yardımcı olabilecek araçlar vardır:
Sınıflandırma problemleri için StrtifiedKFold kullanın
sklearn.cross_validation'dan içe aktarma StratifiedKFold
Regresyon problemleri için KFold
sklearn.cross_validation'dan içe aktarma KFold
Şu anda verilerin modelin gerektirdiği forma dönüştürülmesi gerekiyor. Üç tür veri vardır: sayılar, kategoriler ve metin. Veriler kategoriler biçiminde olduğunda, her bir kategoriyi ayrı bir sütun olarak çıkarmak ve ardından her kaydın karşılık gelen değerini temsil etmek için ikili kullanmak gerekir. Örneğin:
kayıt 1: cinsiyet kadın
kayıt 2: cinsiyet kadın
kayıt 3: cinsiyet erkek
Dönüşümden sonra:
Kadın erkek
kayıt 1: 10
kayıt 2: 10
kayıt 3: 01
Bu süreç sklearn size şu konularda da yardımcı olabilir:
sklearn.preprocessing adresinden LabelEncoder'ı içe aktar
veya
sklearn.preprocessing'den OneHotEncoder'ı içe aktar
Özelliği işledikten sonra bunları bir araya getirin. Veriler yoğunsa, numpy'nin hstack'ini kullanabilirsiniz:
numpy'yi np olarak içe aktar
X = np.hstack ((x1, x2, ...))
Seyrekse, sparse's hstack'i kullanın:
cılız ithalattan seyrek
X = seyrek.hstack ((x1, x2, ...))
Kombinasyondan sonra aşağıdaki algoritma modelleri uygulanabilir:
-RandomForestClassifier
-RandomForestRegressor
-ExtraTreesClassifier
-EkstraTreeRegressor
-XGBClassifier
-XGBRegresör
Ancak doğrusal model uygulanamaz ve verilerin yukarıdaki ön işleme yerine doğrusal modelden önce düzenlenmesi gerekir.
Bu adım, modeli daha da optimize etmek içindir, aşağıdaki yöntemleri kullanabilirsiniz:
PCA: Temel bileşen analizi, temel bileşen analizi , Veri setlerini analiz etmek ve basitleştirmek için bir tekniktir. Veri setindeki varyansa en fazla katkı sağlayan özellikleri korurken, veri setinin boyutsallığını azaltmak için kullanılır.
sklearn.decomposition'dan içe aktarma PCA
Metin verileri için, seyrek bir matrise dönüştürdükten sonra, SVD'yi kullanabilirsiniz.
sklearn.decomposition'dan import TruncatedSVD
SVD: Tekil Değer Ayrışımı, tekil değer ayrışımı, Doğrusal cebirde önemli bir matris ayrıştırmasıdır.Normalleştirilmiş ortogonal temelden sonra en büyük varyansa sahip boyutu her zaman bulabilir, bu nedenle boyut azaltma ve denoising için kullanılır.
Özelliklerin sayısı arttıkça, özellikleri analiz etmek ve modelleri eğitmek için gereken süre daha uzun olacak, bu da muhtemelen "boyut felaketine" neden olacak, model daha karmaşık olacak ve terfi yeteneği azalacak, bu nedenle alakasız veya gereksiz özelliklerin ortadan kaldırılması gerekiyor.
Yaygın olarak kullanılan algoritmalar tam arama, sezgisel arama ve rastgele algoritmadır.
Örneğin, Rastgele Orman:
sklearn.ensemble içeriğinden import RandomForestClassifier
Veya xgboost:
xgboost'u xgb olarak içe aktar
Seyrek veriler için iyi bilinen bir yöntem chi-2'dir:
sklearn.feature_selection'dan içe aktarma SelectKBest
sklearn.feature_selection import chi2'den
En alakalı parametreleri seçtikten sonra algoritma uygulanabilir. Yaygın olarak kullanılan algoritmalar şunlardır:
Sınıflandırma:
Rastgele Orman
GBM
Lojistik regresyon
Naif bayanlar
Vektör makineleri desteklemek
k-En Yakın Komşular
Regresyon
Rastgele Orman
GBM
Doğrusal Regresyon
çıkıntı
Kement
SVR
Scikit-learn'de sınıflandırma ve regresyon için mevcut algoritmaların bir listesini, prensipleri ve örnek kodları dahil olmak üzere görebilirsiniz.
Her bir algoritmayı uygulamadan önce, bu yöntemin uygun olup olmadığını netleştirmek gerekir.
Neden bu kadar çok algoritma sadece bu birkaç algoritmayı önermektedir? Farklı algoritmaların performansını karşılaştırmak gerekir.
Bu ilahi makale, Gerçek Dünya Sınıflandırma Problemlerini Çözmek İçin Yüzlerce Sınıflandırıcıya İhtiyacımız Var mı? 179 sınıflandırma modelinin tüm 121 UCI verisi üzerindeki performansını test etti ve Rastgele Ormanlar ve SVM'nin en iyi performansı gösterdiğini buldu.
İçerideki araştırma fikirlerinden öğrenebilir ve karşılaştırma sonuçlarını nasıl aldığımızı görebiliriz.Ayrıca uygulamamızda belirli bir yol gösterici rolü vardır.
Ancak algoritma direkt uygulandıktan sonra genel doğruluk pek tatmin edici olmuyor, şu anda parametrelerin ayarlanması gerekiyor.Çoğu kuru ürün sorunu geliyor. Hangi model için hangi parametrelerin ayarlanması gerekiyor?
Sklearn belgesinde olmasına rağmen, algoritmanın tüm parametreleri listelenecek, ancak hangi ayarlamanın etkili olacağını söylemeyecektir. Bazı mooc kurslarında, bazı algoritmalar uygulandığında ayarlamaya odaklandıkları parametreleri görebileceğiniz bazı proje kodları vardır, ancak bazıları neden diğerlerini ayarlamadıklarını açıklamaz. Yazar burada 100'den fazla yarışmadaki deneyimine dayanarak bu tabloyu listeliyor. Sanırım ondan öğrenebilirim. Elbette, eğer zamanınız varsa, belgedeki parametre listesini kontrol edin ve algoritmanın ilkesini kontrol edin. Teori ile değerlendirilebilir. Hangi parametrenin daha büyük etkisi vardır.
Parametreleri ayarladıktan sonra, bu büyük bir başarı değil. Şu anda, düşük doğruluğa neyin neden olduğunu ve ne tür verilerin araştırılmadığını düşünmemiz gerekiyor. Şu anda, ihtiyacımız var Verileri tekrar keşfetmek için istatistikleri ve görselleştirmeyi kullanın , Ve sonra yukarıdaki işlemden tekrar geçin.
Sanırım burada bahsedilen çok faydalı bir deneyim, Tüm transformatörleri kaydedin Doğrulama veri setinde uygulamayı kolaylaştırmak için:
Makale, sorunu analiz etme fikrini ortaya koydu ve ayrıca birkaç çok pratik deneyimden bahsetti.Ancak, deneyim başkalarının deneyimidir ve yalnızca referans için kullanılabilir.Kendi seviyenizi geliştirmek istiyorsanız, yine de yazarın arkasındaki şeyleri görmeniz gerekir. 100'den fazla gerçek savaş, Şimdi harekete geçelim , Algoritmalar, kodlar ve verilerle oynamanın heyecanını yaşayın.
Başlangıçtan ileri düzeye, teori + gerçek savaş, TensorFlow'u tek noktadan derinlemesine anlama!
Bu kurs, derin öğrenme geliştiricilerine yöneliktir ve TensorFlow'un görüntü tanıma ve metin analizi gibi belirli sorunları çözmek için nasıl kullanılacağını öğretir. Kurs 10 haftayı kapsıyor.TensorFlow'un ilkeleri ve temel pratik becerileriyle başlayacak ve öğrencilere TensorFlow'da adım adım CNN, kendi kendine kodlama, RNN, GAN ve diğer modellerin nasıl oluşturulacağını öğretecek ve son olarak TensorFlow'a dayalı eksiksiz bir derin öğrenme geliştirme setinde ustalaşacak. beceri.
İki öğretim görevlisi Tong Da ve Bai Fachuan, ThoughtWorks'ün kıdemli teknik uzmanlarıdır ve büyük veri platformları ve derin öğrenme sistemi geliştirme projeleri oluşturma konusunda zengin deneyime sahiptir.
Saat: Her Salı ve Perşembe gecesi 20: 00-21: 00
Kurs süresi: Toplam 20 saat, 10 haftada tamamlandı, haftada 2 kez, her seferinde 1 saat
Çevrimiçi öğretim adresi:
Leifeng.com'da İlgili Okumalar:
Bir örnek size şunu söyler: Kaggle veri rekabetinin rutinleri nelerdir?
Kaggle'ın çıkmazından, yerel veri rekabeti platformunun nasıl ortaya çıktığını görün