Python İle Makine Öğrenmesi |
Bölüm 1:
Veriler
Yazı serimizin önceki bölümünde python ile makine öğrenmesini giriş yapmış ve serimizde kullanacağımız python kütüphanelerinden bahsetmiştik. Bu bölümde ise veri kavramı üzerinde duracağız.
07.05.2022 tarihli yazı 4676 kez okunmuştur.
Makine öğrenmesi sürecinin gerçekleşebilmesi için probleme özgü yeterli miktarda veri gerekmektedir. Bu veriler “veri kümesi” olarak adlandırılır. Veri kümelerinin boyutu çok büyük olabilir. Fazla verilerden oluşan veri kümesi makinenin öğrenebilmesi için çok daha yararlıdır. Bu durumu şöyle özetleyebiliriz. Bir konuda araştırma yapmak istediğinizi düşünün. Çok daha fazla kaynak ile araştırmanızı genişletebilir ve yaptığınız araştırmayı daha çok yüksek doğrulukla tamamlayabilirsiniz. Böylece yaptığınız araştırma daha güvenilir olacaktır. Makinenin öğrenme sürecini de böyle düşünebiliriz. Makinenin bir problem karşısında doğru bir yanıt üretebilmesi için öncesinde çok fazla kaynağa ihtiyaç duyar. Öğrenme sürecini fazla sayıda veri kaynaklarından gerçekleştiren makinenin yaptığı tahminler doğruluğa daha yakın olacaktır.
Verilerin çok fazla özellik bulundurması yine sistem için kötü bir etkendir. Özelliklerin de temizlenmesi en uygun olanlarının yani veriyi etkileyenlerinin seçilmesi gerekmektedir. Problem dahilinde alakasız özellikler bulunduran bir veri kümesinin makine tarafından anlaşılması çok zor olacaktır. Özellikler makine öğrenmesinin performansını etkileyen önemli bir bölümdür. Öznitelik olarak da isimlendirilen bu kavram hakkında oldukça geniş çalışma alanı mevcuttur. Hatta “Öznitelik Çıkarımı” olarak isimlendirilen bu çalışma alanı “Özellik Mühendisliği” gibi bir meslek alanı oluşturmuştur. Veriler toplanırken doğru özelliklerin seçilmesi öğrenme sürecinde daha yararlı bir süreç sağlayacaktır.
Veriler hakkında konuşulması gerekilen diğer bir konuda modeller ile ilgilidir. Oluşturacağımız makine öğrenmesi modelinin veriler ile bir uyumluluğu söz konusudur. Tahmin sürecinin sonunda eğitim verileri ile çıktı üreten sistem değerlendirilirken “test verileri” ile karşılaştırılır. Test verileri ile eğitim verilerinin toplamı veri kümesini oluşturur. Test verileri, sistemin tahmin verileri ile karşılaştırılırken uyumdan söz edilir. Eğer tahmin verileri ile test verileri arasında çok fazla uyum varsa sistem veya model verileri “ezberlemiş” olabilir. Ezber kavramı aşırı derecede birbirine benzeyen tahmin verileri ile test veriler olursa bahsedilebilir. Ama her aşırı uyum durumunda “model ezberlemiş” diye bir kaide yoktur. Model veya sistem gerçekten çok başarılı olabilir. Kullanılan modelin tahmini test verileri ile az uyum içerisinde ise bu model başarısız olarak nitelendirilir. Tabi başarı oranını sizin probleminize göre seçmeniz daha uygun olacaktır. Bazı problemlerde %95 uyum başarı olarak seçilebilecekken bazı problemlerde ise %75 olarak da seçilebilir. Problemin ve verinin büyüklüğüne bağlıdır.
1. Değer mi tahmin etmek istiyorsunuz?
2. Veri kümesi içinde “Alışılmadık bir olayı” mı bulmak istiyorsunuz? (Anomali Tespiti)
3. Veriler arasındaki “Örüntüyü” mü keşfetmek istiyorsunuz?
4. Bir kategori (sınıf) mi tahmin etmek istiyorsunuz?
►UCI Machine Learning Deposu
►UCI KDD Arşivi
►Kaggle
►KAPSARC Veri Portalı
►AWS Veri Kümeleri
►Data World
Başlangıç olarak seri içerisinde çok basit bir veri kümesi ile çalışacağız. Ardından diğer bölümlerde gerçek veri kümelerini kullanarak çalışmamıza devam edeceğiz. Kaggle sitesinden basit bir veri kümesi seçerek bir başlangıç yapalım.
Bir çalışanın çalışma süresine yani tecrübesine bağlı olarak maaşını tahmin etmeye çalıştığımızı düşünelim. Bu problem dahilinde düşüneceğimiz iki veri bölümü var. Birincisi çalışanın kaç yıl çalıştığı yani tecrübesi ve diğeri ise çalışanın maaşı. Buradaki verilerin bir kısmı “öznitelik” diğer kısmı ise “hedef” olarak nitelendirilir. Hedef olarak isimlendirilen verinin, özniteliklerden ulaşılmaya çalışıldığı durum olarak belirtebiliriz. Öznitelikler ise hedefe ulaşılmaya yarayan, hedefi etkileyen, hedefi niteleyen ve hedef hakkında bilgiler veren verilerdir. Bizim problemimizde ise özniteliğimiz çalışanın çalıştığı süre, hedefimiz ise çalışanın maaşıdır.
Göründüğü üzere çalışanın çalıştığı süre ile aldığı maaşı birlikte değişiklik göstermektedir. Yani süre, maaş durumunu etkiliyor. Bu bölümümüzde veri kümelerinden bahsettik ve başlangıçta çalışacağımız veriyi de seçtik. Diğer bölümümüzde ise Python ile tahmin sürecimize başlıyor olacağız.
Kaynak:
► kaggle.com
► Aurélien Géron - Hands-On Machine Learning with Scikit-Learn and TensorFlow-O’Reilly (2017)
Sadece Verinin Yüksek Sayılarda Olması Yeterli mi?
Tabiki de hayır. Bu durumda uygunluktan bahsetmemiz olasıdır. Yüksek sayıda örnek içeren veri kümelerinin tahmin sürecinin öncesinde hatalı bir veri bulundurup bulundurmamasına bakılmalıdır. Çünkü yüksek sayıda örnek içeren verilerin bir kısmı makineyi aldatacak yönde olabilir. Aldatmadan kasıt makineye verilecek eğitim verilerinin anlamlı olmamasıdır. Anlamsız veriler bize bir sonuç çıkarmamıza yardımcı olmayacak işimizi güçleştirecektir. Bunca olumsuzluk içinde makineye eğitmek için vereceğimiz verilerimiz nasıl olmalıdır? Biraz bundan bahsedelim.Verilerin Uygunluğu
Bazen problemimiz için uygun veriyi hazırlamak zor olabilir. Hazırlanan veri içerisinde hatalı özellikler, eksik veriler bulunabilir. Her zaman tahmin aşamasından önce bu durumların temizlenmesi, verilerin probleme uyumlu olması gerekmektedir. Bu durumda verilerin probleme uygunluğunu konuşabiliriz. Toplanan veriler düşük kalitede olabilir. Kaliteden kasıt hatalar, istisnalar, eksik veriler örnek verilebilir. Bu veriler makineler için büyük zorluk oluşturacak, sistemin performansını kötü yönde etkileyecektir.Verilerin çok fazla özellik bulundurması yine sistem için kötü bir etkendir. Özelliklerin de temizlenmesi en uygun olanlarının yani veriyi etkileyenlerinin seçilmesi gerekmektedir. Problem dahilinde alakasız özellikler bulunduran bir veri kümesinin makine tarafından anlaşılması çok zor olacaktır. Özellikler makine öğrenmesinin performansını etkileyen önemli bir bölümdür. Öznitelik olarak da isimlendirilen bu kavram hakkında oldukça geniş çalışma alanı mevcuttur. Hatta “Öznitelik Çıkarımı” olarak isimlendirilen bu çalışma alanı “Özellik Mühendisliği” gibi bir meslek alanı oluşturmuştur. Veriler toplanırken doğru özelliklerin seçilmesi öğrenme sürecinde daha yararlı bir süreç sağlayacaktır.
Veriler hakkında konuşulması gerekilen diğer bir konuda modeller ile ilgilidir. Oluşturacağımız makine öğrenmesi modelinin veriler ile bir uyumluluğu söz konusudur. Tahmin sürecinin sonunda eğitim verileri ile çıktı üreten sistem değerlendirilirken “test verileri” ile karşılaştırılır. Test verileri ile eğitim verilerinin toplamı veri kümesini oluşturur. Test verileri, sistemin tahmin verileri ile karşılaştırılırken uyumdan söz edilir. Eğer tahmin verileri ile test verileri arasında çok fazla uyum varsa sistem veya model verileri “ezberlemiş” olabilir. Ezber kavramı aşırı derecede birbirine benzeyen tahmin verileri ile test veriler olursa bahsedilebilir. Ama her aşırı uyum durumunda “model ezberlemiş” diye bir kaide yoktur. Model veya sistem gerçekten çok başarılı olabilir. Kullanılan modelin tahmini test verileri ile az uyum içerisinde ise bu model başarısız olarak nitelendirilir. Tabi başarı oranını sizin probleminize göre seçmeniz daha uygun olacaktır. Bazı problemlerde %95 uyum başarı olarak seçilebilecekken bazı problemlerde ise %75 olarak da seçilebilir. Problemin ve verinin büyüklüğüne bağlıdır.
Problem
Problem üzerinde çalışırken, problemi iyi anlamak ve kavramak gerekir. Bunun için ilk başta problemi açıkça tanımlamak ve sonrasında problemin aşağıdaki kategorilerden hangisinde yer aldığını belirlemek gerekir.1. Değer mi tahmin etmek istiyorsunuz?
2. Veri kümesi içinde “Alışılmadık bir olayı” mı bulmak istiyorsunuz? (Anomali Tespiti)
3. Veriler arasındaki “Örüntüyü” mü keşfetmek istiyorsunuz?
4. Bir kategori (sınıf) mi tahmin etmek istiyorsunuz?
Bunu belirledikten sonra problem için artık kullanacağınız algoritmaları belirleyebilir, bir adım atmaya başlayabilirsiniz.
Veri Seçimi
Makine öğrenmesi ile çalışırken uzun süre toplanmış gerçek verileri kullanmak daha sağlıklı olacaktır. Rastgele yapay olarak üretilmiş veri kümelerinin makine öğrenmesinde kullanılması sağlıklı olmayabilir. Bazı durumlarda verileri hazır olarak alabiliriz fakat çoğu zaman verileri toplamak zorunda kalacağız. Verileri veri tabanları gibi çeşitli yerlerden elde edebilir veya kendi veri kümemizi oluşturabiliriz. Bu yazı serisi içerisinde çeşitli veri kümeleri kullanarak makine öğrenmesi gerçekleştirilecektir. Veri kümelerinin yayınlandığı sitelerin bazıları aşağıda verilmiştir. Ayrıca bu sitelere ek olarak TÜBİTAK’ın yayınlamış olduğu bazı verileri de bulabilirsiniz.►UCI Machine Learning Deposu
►UCI KDD Arşivi
►Kaggle
►KAPSARC Veri Portalı
►AWS Veri Kümeleri
►Data World
Başlangıç olarak seri içerisinde çok basit bir veri kümesi ile çalışacağız. Ardından diğer bölümlerde gerçek veri kümelerini kullanarak çalışmamıza devam edeceğiz. Kaggle sitesinden basit bir veri kümesi seçerek bir başlangıç yapalım.
Bir çalışanın çalışma süresine yani tecrübesine bağlı olarak maaşını tahmin etmeye çalıştığımızı düşünelim. Bu problem dahilinde düşüneceğimiz iki veri bölümü var. Birincisi çalışanın kaç yıl çalıştığı yani tecrübesi ve diğeri ise çalışanın maaşı. Buradaki verilerin bir kısmı “öznitelik” diğer kısmı ise “hedef” olarak nitelendirilir. Hedef olarak isimlendirilen verinin, özniteliklerden ulaşılmaya çalışıldığı durum olarak belirtebiliriz. Öznitelikler ise hedefe ulaşılmaya yarayan, hedefi etkileyen, hedefi niteleyen ve hedef hakkında bilgiler veren verilerdir. Bizim problemimizde ise özniteliğimiz çalışanın çalıştığı süre, hedefimiz ise çalışanın maaşıdır.
Göründüğü üzere çalışanın çalıştığı süre ile aldığı maaşı birlikte değişiklik göstermektedir. Yani süre, maaş durumunu etkiliyor. Bu bölümümüzde veri kümelerinden bahsettik ve başlangıçta çalışacağımız veriyi de seçtik. Diğer bölümümüzde ise Python ile tahmin sürecimize başlıyor olacağız.
Kaynak:
► kaggle.com
► Aurélien Géron - Hands-On Machine Learning with Scikit-Learn and TensorFlow-O’Reilly (2017)
YORUMLAR
Aktif etkinlik bulunmamaktadır.
- Dünyanın En Görkemli 10 Güneş Tarlası
- Dünyanın En Büyük 10 Makinesi
- 2020’nin En İyi 10 Kişisel Robotu
- Programlamaya Erken Yaşta Başlayan 7 Ünlü Bilgisayar Programcısı
- Üretimin Geleceğinde Etkili Olacak 10 Beceri
- Olağan Üstü Tasarıma Sahip 5 Köprü
- Dünyanın En İyi Bilim ve Teknoloji Müzeleri
- En İyi 5 Tıbbi Robot
- Dünyanın En Zengin 10 Mühendisi
- Üretim için 6 Fabrikasyon İşlemi
- Nasıl Dönüşür I Elektrik 4.0
- Nasıl Dönüşür I Fosil Yakıt
- Nasıl Dönüşür I Kompost
- Sigma DIN Rayı Çözümleri: Ürün Portföyü, Teknik Özellikler ve Kullanım Alanları
- Denizcilik Endüstri Uygulamaları ve Servis Bakım Süreçleri
- DrivePro Yaşam Döngüsü Hizmetleri
- Batarya Testinin Temelleri
- Enerji Yönetiminde Ölçümün Rolü: Verimliliğe Giden Yol
- HVAC Sistemlerinde Kullanılan EC Fan, Sürücü ve EC+ Fan Teknolojisi
- Su İşleme, Dağıtım ve Atık Su Yönetim Tesislerinde Sürücü Kullanımı
ANKET