Uçtan Uca Makine Öğrenimi Projesi için En İyi Yaklaşım [2022]
Yayınlanan: 2021-01-01Makine Öğrenimi hız kazanıyor ve çok uzun bir süredir tartışma konusu oldu. Bu alandaki bazı çok büyük algoritmalar ve mimariler, Makine Öğrenimi kavramının pratik ve canlı dünyada uygulanmasını mümkün kılmıştır.
Artık sadece araştırma için bir kavram değildir ve faydalı uygulama alanlarına derinlemesine yayılmıştır. Ve bugün, Makine Öğrenimi projeleri için uçtan uca ardışık düzen sanatında ustalaşmaya her zamankinden daha fazla ihtiyaç var.
Pek çok insan için Makine Öğrenimi'ne artan bir ilgi var ve makine öğrenimi ve yapay zekanın temellerini anlamanıza yardımcı olabilecek muazzam miktarda kaynak mevcut. Pek çok kurs, sizi bazı temel kavramları öğrenmekten, son teknoloji harikası modeller oluşturmaya kadar götürür.
Ama bu kadar mı? Verilere nasıl erişeceğimizi gerçekten öğreniyor muyuz ve ML modelimizin ondan faydalı özellikler çıkarabilmesi için verileri nasıl temizleyeceğimizi gerçekten görüyor muyuz? Peki ya dağıtım kısmı? Bu tür dersleri ve müfredatları tamamladıktan sonra benzer hatlarda aklımızda cevapsız kalan o kadar çok soru var ki.
Bu sorun, herhangi bir proje için eksiksiz bir uçtan uca Makine Öğrenimi işlem hattının yeterince anlaşılmamasından kaynaklanmaktadır. Bu makalede, herhangi bir ML projesi için gerçek yaşam senaryosunda daha iyi sonuçlar elde etmek için tam olarak ne yapılması gerektiğini anlamak için böyle bir boru hattından geçeceğiz.
Bunu en iyi gösteren kitaplardan biri, Aurelien Geron'un Scikit-Learn, Keras ve TensorFlow ile Uygulamalı Makine Öğrenimidir.

Bu uçtan uca boru hattı, daha iyi anlaşılması için birkaç adıma ayrılabilir ve bunlar:
- Sorun ifadesini anlama
- Gerekli verilerin elde edilmesi
- Verileri anlama
- Verileri temizleme
- Eğitim için en iyi modeli seçme
- Hiperparametrelerde ince ayar
- Sonuçların sunulması
- Sistemin dağıtılması ve bakımı
Gerçek hayattaki herhangi bir Makine Öğrenimi projesinin boru hattını daha iyi anlamak için California House fiyat tahmini probleminin popüler örneğini kullanacağız. Yukarıdaki tüm noktaları bu sorun bildirimi ile ilgili olarak tartışacağız. Farklı projeler için bazı küçük değişiklikler olabilir, ancak genel olarak amaç aynı kalır.
İçindekiler
Sorun ifadesini anlama
İyi bir çözüm oluşturmak için kişinin problem ifadesini çok net bir şekilde anlaması gerekir. Büyük olasılıkla bir Makine Öğrenimi modeli oluşturup eğiteceksiniz, ancak gerçek hayattaki uygulama alanlarının sadece modellerden çok daha fazlasına ihtiyacı var. Modelin çıktısı, son kullanıcının tam olarak ihtiyaç duyduğu şeyle eşleştirilmelidir.
Bu özel örnek için, bize nüfus, gelir, ev fiyatları ve diğerleri gibi Kaliforniya'daki tüm metriklerin bir veri kümesi verilmiştir. Modelin ihtiyaç duyduğu çıktı, konum, nüfus, gelir ve diğerleri gibi diğer özellikleri göz önüne alındığında evin fiyatını tahmin edebilmesidir.
Bu adımın önemli nedeni, tam olarak ne yapılması gerektiğini ve nasıl bir çözüme ihtiyaç duyulduğunu tam olarak anlamaktır. Problem cümlesine nasıl yaklaşılması gerektiğine dair ana beyin fırtınasının yapıldığı yer burasıdır.
Okuyun: Yeni Başlayanlar için Makine Öğrenimi Proje Fikirleri
Gerekli verilerin elde edilmesi
Sorun ifadesini net bir şekilde anladıktan ve sorunu çözmek için bir Makine Öğrenimi yaklaşımıyla ilerlemeye karar verdikten sonra, ilgili verileri aramaya başlamalısınız. Veriler, herhangi bir Makine Öğrenimi projesinin en önemli bileşenidir, bu nedenle yalnızca kaliteli verileri dikkatlice bulup seçmelisiniz. ML modellerinin nihai performansı, eğitim sırasında kullanılan verilere bağlıdır.
Gerçek hayattaki örneklerde de veri dağılımını anlamaya yardımcı olabilecek verileri bulmak için çeşitli kaynaklar vardır. Örneğimiz için Kaggle'dan California House Price Prediction veri setini alabiliriz. Bu veriler CSV biçimindedir ve bu nedenle veri kümesini yüklemek için Pandas kitaplığını kullanacağız.
Verileri anlama
Çalıştığınız verileri anlayabilmek ML çözümünün çok önemli bir yönüdür. Bu, proje için hangi algoritmaların veya model mimarilerinin daha uygun olduğunu seçmemizi sağlar. Verilere detaylı olarak bakmaya başlamadan önce, veri setini tren ve test setlerine bölmek iyi bir uygulamadır. Bu, test setine dokunulmamasını sağlar ve dolayısıyla test setine fazla uyma şansını azaltır. Bunu yaparak, modeldeki veri gözetleme yanlılığını ortadan kaldırmış olursunuz.
Veri kümelerini bu tren ve test kümelerine bölmenin çeşitli yolları vardır. Bunlardan biri, sabit kodlanmış bir yüzde değeriyle bölmektir. %90 tren ve %10 test çoğu durumda ortak bir değerdir.
Bölmeden sonra, verileri anlamak için tren setini derinlemesine görselleştirmeniz gerekecek. Mevcut veri seti, enlem ve boylam noktalarını içerir ve bu nedenle, konumlara göre yoğunluğa bakmak için dağılım grafiğini kullanmak oldukça yararlıdır.
Veri kümesindeki iki öznitelik arasındaki korelasyonu bulmak, hangi özniteliklerin gerekli öznitelikle daha çok ilişkili olduğunu anlamada yardımcı olur. Bu durumda veri setinde hangi özelliğin konut fiyatları ile daha çok ilişkili olduğunu bulmamız gerekiyor. Bu, corr() yöntemi kullanılarak Scikit-Learn'de kolayca yapılabilir. Her öznitelik için diğerine göre bir değer döndürür. Yani ev fiyatlarına göre ilişkileri görmeniz gerekiyorsa, bunu şu şekilde yapabilirsiniz:
corr_matrix[“median_house_value”].sort_values(artan=Yanlış)
medyan_house_değeri 1.000000medyan_gelir 0.687170total_rooms 0.135231konut_ortanca_yaşı 0.114220hane 0.064702toplam_yatak odası 0.047865nüfus -0.026699boylam -0.047279enlem -0.142826
Burada medyan_gelirin konut değeri ile doğrudan, enlem değerinin ise dolaylı olarak ilişkili olduğu görülmektedir.
Son olarak, bazı nitelikleri bir araya getirerek bazı özellik mühendisliği yapmayı da deneyebilirsiniz. Örneğin, toplam oda_başına_hane_toplam_oda sayısı veya tek tek hane değerlerinden çok daha bilgilendirici olabilir .
Verileri temizleme
Bu adımda, Machine Learning projesi için verileri hazırlarsınız. Tüm boru hattının en çok zaman alan ve önemli adımıdır. Modelin performansı büyük ölçüde verileri ne kadar iyi hazırladığınıza bağlıdır. Genellikle bu amaç için işlevler yazmak iyi bir uygulamadır, çünkü gerektiğinde bu işlevleri kullanmanıza izin verir ve aynı işlevler üretim hattında yeni verileri tahminler için hazırlamak için kullanılabilir.
Gerçek verilerde en çok karşılaşılan sorunlardan biri, veri kümesindeki birkaç girişin eksik değerleridir. Bununla başa çıkmanın birkaç yolu var. Tüm niteliği doğrudan silebilirsiniz ancak bu, model için pek iyi değil. Bir değeri eksik olan satırdan kurtulabilirsiniz. Çoğunlukla kullanılan başka bir yol, eksik değeri sıfır gibi başka bir değere veya sayısal bir değerse tüm sütunun aritmetik ortalamasına ayarlamaktır.
Kategorik değerler için, onları sayılarla temsil etmek ve tek-sıcak kodlamaya kodlamak daha iyidir, böylece modelin üzerinde çalışması daha kolay olur. Scikit-Learn ayrıca kategorik değerleri tek-sıcak vektörlere kolayca dönüştürebilmemiz için OneHotEncoder sınıfını da sağlar.
Dikkat etmeniz gereken bir diğer şey de özellik ölçeklendirmedir. Değer aralıkları çok sert olan bazı nitelikler olabilir. Bu nedenle, modelin bu değerlerle kolayca çalışabilmesi ve daha iyi performans gösterebilmesi için bunları standart bir ölçeğe ölçeklendirmek daha iyidir.
Ayrıca şunu da okuyun: Hindistan'da Makine Öğrenimi Mühendisi Maaşı

Eğitim için en iyi modeli seçme
Tüm veri temizleme ve özellik mühendisliğini tamamladıktan sonra bir sonraki adım oldukça kolaylaşıyor. Şimdi tek yapmanız gereken veriler üzerinde bazı umut verici modeller eğitmek ve en iyi tahminleri veren modeli bulmak. En iyi modeli seçmemize yardımcı olacak birkaç yol var.
Kaliforniya ev fiyatı tahmini örneğimiz bir regresyon problemidir. Bu, bu durumda ev fiyatı olan bir dizi sayıdan bir değer tahmin etmemiz gerektiği anlamına gelir.
Buradaki ilk adım, birkaç modeli eğitmek ve bunları doğrulama setinde test etmektir. Burada test setini kullanmamalısınız çünkü bu test setinde fazla uyumaya yol açacaktır ve sonunda model çok düşük bir düzenliliğe sahip olacaktır. Bu modellerden çoğu zaman eğitim doğruluğu ve doğrulama doğruluğu iyi olan model seçilmelidir. Bazı görevler diğerlerinden farklı konfigürasyonlar gerektirdiğinden, kullanım durumuna da bağlı olabilir.
Verileri zaten temizlediğimiz ve ön işleme fonksiyonları hazır olduğu için, Scikit-Learn veya Keras gibi bazı çerçeveleri kullanarak üç ila dört satırlık kodda farklı modelleri eğitmek çok kolaydır. Scikit-Learn'de, karar ağaçları gibi modeller için iyi hiperparametreler bulmaya çok yardımcı olan bir çapraz doğrulama seçeneğimiz de var.
Hiperparametrelerde ince ayar
Birkaç modelin kısa listeye alınmasından sonra, gerçek potansiyellerini açığa çıkarmak için hiperparametrelerde ince ayar yapılmasına ihtiyaç duyulur. Bunu başarmanın da birçok yolu vardır. Bunlardan biri, tatmin edici bir sonuç elde edene kadar hiperparametreleri manuel olarak değiştirebilmeniz ve modelleri tekrar tekrar çalıştırabilmenizdir. Burada, otomatikleştirilmiş bir görevin yapacağı kadar çok kombinasyonu kontrol edemeyeceğiniz sorunu açıkça görebilirsiniz. İşte bu şeyleri otomatikleştirmek için bazı iyi yöntemler geliyor.
Grid Search , Scikit-Learn tarafından, çapraz doğrulamayı kendi başına yaptığı ve daha iyi sonuçlar için mükemmel hiperparametre değerlerini bulduğu GridSearchCV sınıfı biçiminde sağlanan harika bir özelliktir. Tek yapmamız gereken, hangi hiperparametreleri denemesi gerektiğini belirtmek. Bu basit ama çok güçlü bir özelliktir.
Rastgele arama , benzer bir amaç için kullanılabilecek başka bir yaklaşımdır. Izgara Arama, denenecek küçük bir hiperparametre alanı olduğunda iyi çalışır, ancak çok sayıda hiperparametre olduğunda, RandomizedSearchCV'yi kullanmak daha iyidir. Rastgele hiperparametreleri dener ve gördüğü en iyi değerleri bulur.
Son fakat en az değil, Ensemble Learning yaklaşımıdır . Burada, ilgili tahminlerini vermek için birden fazla model kullanabiliriz ve sonunda, hepsinin ortalamasına göre nihai tahmini seçebiliriz. Bu çok umut verici bir yöntem ve Kaggle'da birçok yarışma kazanıyor.
Nihai model için tüm hiperparametrelerde ince ayar yaptıktan sonra, modeli test setinde tahminler yapmak için kullanabilirsiniz. Burada modelin test setinde ne kadar iyi olduğunu değerlendirebiliriz. Test setindeki örneklerin fazla takılmasına yol açacağından, test setindeki doğruluğu artırmak için bundan sonra modelinize ince ayar yapmamanız gerektiğini unutmayın.
Sonuçların sunulması
En iyi model seçildikten ve değerlendirme yapıldıktan sonra, sonuçların düzgün bir şekilde görüntülenmesine ihtiyaç vardır. Görselleştirme, tamamen verilerle ve arkasındaki kalıpları anlamakla ilgili olduğu için daha iyi Makine Öğrenimi projeleri yapmanın anahtarıdır. Ham sayısal sonuçlar, bu alana zaten aşina olan kişilere iyi gelebilir, ancak projeyi çekici kıldığı ve herkes çözümümüzde gerçekte neler olduğuna dair net bir resim elde edebileceği için, grafikler ve çizelgeler üzerinde görselleştirmek çok önemlidir.
Sistemin dağıtılması ve bakımı
Öğrencilerin çoğu, boru hattının bu aşamasına ulaşır ve projeyi gerçek yaşam senaryosunda uygulama için dağıtmaya çalışırken muazzam sorunlarla karşı karşıya kalır. Bir Jupyter Notebook'ta modeller oluşturmak ve eğitmek oldukça kolaydır, ancak önemli olan, modeli başarılı bir şekilde kaydetmek ve ardından canlı bir ortamda kullanmaktır.
ML mühendislerinin karşılaştığı en yaygın sorunlardan biri, canlı olarak alınan veriler ile modeli eğittikleri veriler arasında bir fark olmasıdır. Burada, modellerimizi eğitmek için boru hattını oluştururken oluşturduğumuz ön işleme işlevlerini kullanabiliriz.
Dağıtılabilecek iki tür Makine Öğrenimi modeli vardır: Çevrimiçi model ve çevrimdışı model. Çevrimiçi model, gerçek zamanlı olarak aldığı verilerden öğrenmeye devam eden modeldir. Çevrimdışı modeller yeni örneklerden öğrenmezler ve aldığı veri türünde bir değişiklik olması durumunda uygun şekilde güncellenmeli ve bakımı yapılmalıdır. Bu nedenle, her iki model türü için de uygun bakım yapılması gerekir.
Makine öğrenimi modellerini dağıtırken, kullanıcıların kendileriyle etkileşimde bulunmalarını kolaylaştıracak bir platforma sarılmaları gerekir. Seçenekler geniş, bir web uygulamasına, android uygulamasına, Restful API'ye ve daha pek çok şeye sarabiliriz. Bu tür uygulamalar veya API'ler oluşturmaya ilişkin temel bilgiler, büyük bir artı puandır. NodeJS veya Python uygulamalarını Google Cloud Platforms, Amazon Web Services veya Microsoft Azure gibi bulut hizmetlerinde dağıtabilmeniz gerekir.

Django veya Flask gibi bazı çerçevelerden memnun değilseniz, yalnızca birkaç satırlık ek kodla bir web uygulaması biçiminde bir python kodunu dağıtmanıza izin veren Streamlit'i deneyebilirsiniz. Keşfedilebilecek bu tür çeşitli kütüphaneler ve çerçeveler vardır.
Çözüm
Bu makalenin tamamını sonuçlandırmak için, Makine Öğrenimi projelerinin bir boru hattı açısından diğer geleneksel projelerden oldukça farklı olduğunu ve bu boru hattında ustalaşmayı başarırsanız, her şeyin çok daha kolay hale geldiğini söyleyebilirim.
Yeni başlayanların çoğunun ihmal etme eğiliminde olduğu bu uçtan uca boru hattının en önemli adımlarından bazıları, veri temizleme ve model dağıtımıdır. Bu adımlar halledilirse, kalan kısım tıpkı diğer projeler gibidir.
Bu adımları takip etmek ve projeler için bir işlem hattına sahip olmak, görevler hakkında net bir vizyona sahip olmanıza yardımcı olur ve sorunların hatalarını ayıklamak daha kolay yönetilebilir hale gelir. Bu nedenle, bu adımları izlemenizi ve bu kontrol listesini kullanarak kendi başınıza bir Makine Öğrenimi projesini uçtan uca uygulamayı denemenizi öneririm. Bir sorun bildirimi alın, veri kümesini bulun ve projenizde eğlenmek için devam edin!
Makine öğrenimi hakkında daha fazla bilgi edinmek istiyorsanız, çalışan profesyoneller için tasarlanmış ve 450+ saat zorlu eğitim, 30'dan fazla vaka çalışması ve ödev, IIIT- sunan IIIT-B & upGrad'ın Makine Öğrenimi ve Yapay Zeka PG Diplomasına göz atın. B Mezun statüsü, 5+ pratik uygulamalı bitirme projesi ve en iyi firmalarla iş yardımı.
Makine öğrenimi veya makine öğrenimi nedir?
Bir sistemin sağlanan verilerden açıkça programlanmadan bir görevi öğrenme kapasitesine makine öğrenimi denir. Bu alan, verilere erişebilen ve kendi kendine öğrenebilen bilgisayar programlarının geliştirilmesine odaklanır. Geniş yapay zeka (AI) konusunun bir alt alanıdır. Üretkenliği, pazarlamayı, satışları, müşteri mutluluğunu ve kurumsal kârı artırmak için hemen hemen tüm sektörlerde makine öğrenmesi uygulanmaktadır. Birçok BT uzmanı bununla ilgileniyor ve kariyer değiştirmeyi düşünüyorlar.
Uçtan uca makine öğrenimi projeleri nelerdir?
Uçtan uca makine öğrenimi projeleri, verilerin hazırlanması, üzerinde bir modelin eğitilmesi ve bu modelin devreye alınması gibi adımları içerir. Kodu yazmanın ve iş sürecini otomatikleştirmenin yolları olan boru hatlarından oluşur. Bu boru hatları, düzgün bir şekilde derlendiğinde, başarılı bir Makine öğrenimi projesinin oluşmasına yol açar. Sorun bildirimini anlamak, uygun verileri elde etmek, verileri anlamak, verileri temizlemek, eğitim için en uygun modeli seçmek, hiperparametrelerde ince ayar yapmak ve bulguları sunmak, ilgili aşamalardan sadece birkaçıdır.
Makine öğreniminde hiperparametreler nelerdir?
Hiperparametre, değeri öğrenme sürecini etkilemek için kullanılan makine öğreniminde bir parametredir. Model hiperparametreleri ve Algoritma hiperparametreleri olmak üzere iki kısma ayrılabilirler. Model hiperparametreleri, makineyi eğitim setine sunarken model seçme görevine yönlendirdikleri için varsayılamaz. Buna karşılık, algoritma hiperparametrelerinin modelin performansı üzerinde hiçbir etkisi yoktur, ancak öğrenme sürecinin hızını ve kalitesini etkiler. Farklı model eğitim teknikleri için farklı hiperparametreler gerekir, ancak herhangi bir hiperparametreye ihtiyaç duymayan bazı temel algoritmalar vardır.