Machine Learning and Data

AYRILMAZ İKİLİ: MAKİNE ÖĞRENİMİ VE VERİ

Machine Learning ve Data Nedir?

Naciye Kuru
Academy Team

--

Her şey bir soruyla başlamıştı : Makineler de öğrenebilir mi?

Bu sorunun üzerine inşaa edilen her şey bizi bu günlere getirdi ve ileriye de götürecek. Zira “makinelerin de öğrenebilir” olduğunu gördük ve daha fazla öğrenmeleri için yıllardır çok fazla yol arıyoruz. Nedir bu insanın anlama, anlatma ve nihayetinde anlaşılma isteği? İnsanlar yeteri kadar birbirini anlamıyor madem, anlayan birşey yapalım dedi birileri herhalde :)

Evet, “Makine Öğrenimi (Machine Learning), makinelerin verilerden öğrenmesini sağlayan bir yapay zeka dalıdır”. Başka bir deyişle de ifade edilirse makine öğrenmesi, kendi kendine öğrenen ve verilerden bilgi elde etmeye ve insight çıkarmaya (öngörü elde etmeye) yarayan istatistiksel algoritmalar geliştiren bir sistemdir.

Bilgisayar oyunları ve yapay zeka alanında Amerikalı bir öncü olan ve 1959'da “makine öğrenimi” terimini popüler hale getiren Arthur Lee Samuel, Makine Öğrenimini şu şekilde tanımlar:

Bilgisayarlara açıkça programlanmadan öğrenme yeteneği veren çalışma alanı. Yani, temel olarak, insan müdahalesi olmadan verilerden “öğrenen” Bilgisayar Bilimi ve Yapay zeka alanı.

Burada makine öğrenimine yeni başlayanlar için dikkat çekmek istediğim bir terimsel farkındalık ise:

Yapay Zeka ve Makine Öğrenimi arasındaki fark.

Yapay Zeka (AI — Artificial Intelligence) ve Makine Öğrenimi (ML — Machine Learning), daha geniş bir alanı ifade eden “bilgisayar bilimi” alanında yakından ilişkili ancak farklı iki alandır.

AI, görsel algılama (visual perception) konuşma tanıma (Speech recognition), karar verme (decision-making) ve doğal dil işleme (Natural Language Processing — NLP) gibi tipik olarak insan zekası gerektiren görevleri gerçekleştirebilen akıllı makineler oluşturmaya odaklanan bir disiplindir. Girdi verilerine dayalı olarak akıl yürütebilen, öğrenebilen ve kararlar verebilen algoritmaların ve sistemlerin geliştirilmesini içerir.

Diğer taraftan, Makine Öğrenimi (ML), makinelere açıkça bir programlama yapmadan veriden elde edilecek bilgi yoluyla öğrenme işini, makinalara öğretmeyi içeren bir yapay zeka alt alanıdır. Makine öğrenimi algoritmaları, verilerdeki kalıpları ve eğilimleri tanımlayarak tahminler ve kararlar almak için kullanılabilir. Makine öğrenimi, tahmine dayalı modeller oluşturmak, verileri sınıflandırmak ve kalıpları tanımak için kullanılır ve birçok yapay zeka uygulaması için önemli bir araçtır.

Makine öğreniminde hedeflenen,

Aslında bilgisayar sistemlerinin sürekli açık talimatlar kullanarak değil de çeşitli çıkarımları ve düzenleri (örüntü-pattern) kullanarak algoritma ve istatistiksel model tabanlı tahminler yapmasıdır. Yani öyle bir anlaşılmak istiyoruz ki “leb demeden leblebi” anlaşılsın, söylemeden duysun, bakmadan görsün… İnsanoğlunun ruhunun açlık derecesindeki yegane isteği de bu gibi.

Makinelerin öğrenebilmesi için yukarıda da bahsedildiği gibi öncelikle ona bir veri verilmesi gerekir. Böylece bu veri ile o bir eğitime tabi tutulmuş olur. Hatta verilen veri ne kadar büyükse o kadar iyi bir öğrenme gerçekleştirir. Bir nevi ne kadar ekmek o kadar köfte.

Veriler, Makine Öğrenimi alanında en önemli bileşenlerden biridir. Yorumlanmamış ve analiz edilmemiş ve işlenmemiş herhangi bir olgu, değer, metin, ses veya resim bir veri olarak değerlendirilebilir. Bir makine öğrenimi modelini eğitmek için kullanılabilecek gözlemler ve ölçümler kümesini ifade eder.

Makine öğrenmesinin performansını belirlemek, eğitim ve test için mevcut verilerin kalitesi ve miktarı önemli bir role sahiptir. Veri tipleri sayısal ve kategorik olabileceği gibi bir zaman serisi gibi çeşitli biçimlerde de veritabanları, elektronik tablolar veya API’ler gibi çeşitli kaynaklardan elde edilebilir.

Makine öğrenimi algoritmaları, tahmin veya sınıflandırma görevlerini yerine getirebilmek, input değerleri ile target outputları arasındaki ilişkiyi veya patterni öğrenmek için verileri kullanır. Yani “ne ekiyorum ve neticede ne biçeceğim” muhakemesini yapabilmek için veriler yol gösterici olur.

Bu alanda veriler tipik olarak iki türe ayrılır diyebiliriz:

Labeled Data (Etiketli Veriler)

Unlabeled Data ( Etiketlenmemiş Veriler)

Labeled Data (Etiketli Veriler), modelin tahmin etmeye çalıştığı hedef nesnenin (değişkenin) veya değerin etiketini içerirken, Unlabeled Data (Etiketlenmemiş Veriler) bir etiket veya hedef değişken içermez. Makine öğreniminde kullanılan veriler genellikle sayısal veya kategoriktir. Sayısal veriler, yaş veya gelir gibi sıralanabilen ve ölçülebilen değerleri içerirken kategorik veriler, cinsiyet veya meyve türü gibi kategorileri temsil eden değerleri içerir.

Eğer Makine Öğrenmesinde veriler nasıl bölünür ve sistem tarafından nasıl ve ne amaçla kullanılır diye düşünürsek,

Train (Eğitim) ve Test kümesi olarak ikiye ayrılır ve daha sonrasında Train için kullanılan veri de tekrardan Train ve Validation (Doğrulama) olmak üzere kendi içinde bir ayrıma daha tabi tutulur.

-Train (Eğitim) Verisi: Modelimizi eğitmek için kullandığımız veri kısmıdır. Modelin gerçekte gördüğü (hem girdi hem de çıktı) yani öğrenme işlemini gerçekleştirdiği verilerdir.

-Validation (Doğrulama) Verileri: Validation verileri, train veri seti içinden seçilir. Algoritma seçildikten sonra, Validation bölümünde uygulanan model iyileştirilmeye çalışılır. Bu amaçla, hiper parametre ayarlaması gibi yöntemler kullanılır ve en uygun katsayılar/ağırlıklar bulunmaya çalışılır. Özellikle büyük veri setleri üzerinde, Train veri setinin tümü üzerinden çalışmak mümkün olmayacağından, küçük bir bölüm Validation olarak ayrılır.

Test Verileri: Modelimiz tamamen eğitildikten sonra, test verileri tarafsız bir değerlendirme sağlar. Test verilerinin girdilerini girdiğimizde, modelimiz (gerçek çıktıyı görmeden) bazı değerleri tahmin edecektir. Tahminden sonra, modelimizi test verilerinde mevcut olan gerçek çıktı ile karşılaştırarak değerlendiririz. Modelimizin eğitim sırasında belirlenen eğitim verileri olarak beslenen deneyimlerden ne kadar öğrendiğini bu şekilde değerlendiriyor ve görüyoruz.

Photo by Claudio Schwarz on Unsplash

Veri Ön İşleme (Data Preprocessing)

Makine öğrenimine başlarken en önemli adım, kaliteli ve doğru verilere sahip olmaktır. Makine öğreniminde kullanılacak verilerin bir ön işleme tabi tutulması gerekebilir. Yüksek kaliteli ve doğru veriler, modelin öğrenme sürecini daha kolay ve daha iyi hale getirecektir. Bu adıma veri ön işleme denir ve makine öğreniminde önemli bir adımdır. Bu adım, verilerin temizlenmesini ve normalleştirilmesini, eksik değerlerin işlenmesini ve özellik seçimi veya mühendisliğini (feature selection or engineering) içerebilir.

Makine Öğreniminde veri ön işleme yapılarak veriler modelenin kullanımına uygun bir hale getirilmiş olur ve bu da modelinin performansını artırılabilir. Veri işleme ile verinin gerçek durumu daha iyi bir şekilde yansıtması sağlanır ve böylece makinenin öğrenim kalitesi artmış ve değerlendirmelerdeki doğruluk yükselmiş olur.

Bu sayılan avantajlı durumların dışında veri işleme büyük ve kompleks datalar için çok zaman alan bir işlem haline dönüşebilir. veri işleme esnasında yanlış veya eksik bir değerlendirme sonucunda önemli verilerin kaybı da gerçekleşebilir bu da yeni hatalara sebep olabilir.

Ayrıca veri üzerinde yapılan dönüşümler sonucunda verilerin arasındaki ilişkinin kaybı söz konusu olabilir. Bu durum sonucunda da makineye sınırlı bir bilgi verilebilir ve öğrenimdeki doğruluk payı azalmış , sınırlandırılmış olur.

Tüm bu nedenlerden dolayı veri ön işleme adımını gerçekten dikkatli yapmalı! Domain knowledge (alan bilgisi) kısmına ağırlık verilerek, datanın güvenilir halde kalması ve yapılmak istenen tahminin doğruluğunun etkilenmemesi için çok dikkat edilmelidir.

Aşağıda verilerin saklanma veya iletim şekline yani verinin fiziksel olarak saklanış biçimine göre değerlendirildiğinde 10 tane farklı veri biçimi yer almaktadır:

  1. Metin biçimleri: Metin dosyaları ve belgeleri gibi insanlar tarafından okunabilen verilerdir.
  2. Grafiksel biçimler: Resim, fotoğraf, grafik, ikon, sembol gibi grafiksel verilerdir.
  3. Sesli biçimler: Ses kayıtları, müzik dosyaları gibi sesli verilerdir.
  4. Video biçimleri: Film, televizyon programı, animasyonlar gibi video verileridir.
  5. Sayısal biçimler: Sayısal veriler, sayılar, hesaplamalar, işlemler, istatistikler gibi matematiksel verilerdir.
  6. Programlama biçimleri: Programlama dillerinde kullanılan kaynak kodları ve uygulama dosyaları gibi verilerdir.
  7. Elektronik biçimler: Elektronik cihazlar tarafından kullanılan veriler, örneğin işletim sistemi, sürücü yazılımı, veritabanları gibi verilerdir.
  8. Web biçimleri: Web sayfaları, bloglar, forumlar, sosyal medya gibi web tabanlı verilerdir.
  9. Veritabanı biçimleri: Verilerin depolandığı ve yönetildiği veritabanları gibi verilerdir.
  10. Mobil biçimler: Mobil cihazlarda kullanılan veriler, uygulama verileri, mobil oyunlar, resimler, müzik dosyaları vb.
Photo by Luke Chesser on Unsplash

Veri tipleri, bilgisayarların yazılımları geliştirmek ve çalıştırmak için kullandığı en temel kavramlardan biridir. Verilerin kavramlar düzeyindeki sınıflandırmasını belirtir. Verinin ne tür bilgi içerdiğini tanımlar. Programların doğru çalışması için verilerin doğru bir şekilde temsil edilmesi gerekir. Veri tipleri de bu temsili sağlayan yapılardır.

Aşağıda veri tipleri hakkında bilgiler verilmiştir.

Aşağıda veri tipleri hakkında bilgiler verilmiştir.

  • Karakter veri tipi, yalnızca tek bir rakam, harf veya sembol içeren veri tipleridir. Bu veri tipinin bellekteki yer kaplaması 1 bayttır. Örneğin, bir mesajda “devam etmek istiyorsanız ‘e’ harfine basın” gibi bir ifade, tek bir karakter içerir ve bu karakter veri tipi olarak değerlendirilir.
  • Karakter dizisi veri tipi, birden fazla rakam, harf veya sembolün bir araya gelmesiyle oluşan veri tipleridir. Kullanıcı adı, blogdaki yazılar gibi veriler, karakter dizisi veri tipine örnek olarak gösterilebilir.
  • Mantıksal veri tipi, doğru-yanlış, evet-hayır, true-false, 1–0 gibi karar verme işlemlerinde kullanılan bir veri tipidir. Örneğin, “Öğrencinin notu >= 50 ise dersi geçti” gibi bir ifade, mantıksal veri tipine örnek olarak gösterilebilir.
  • Özel veri tipi, tarih, saat, IBAN, posta kodu gibi belirli tipte veriler içeren bir veri tipidir. Bu veri tipleri, özel karakterler ve semboller içerirler ve özel bir işlevsellikleri vardır. Örneğin, bir tarih, bir belgenin oluşturulduğu tarihi gösterir.
  • Sayısal veri tipi, hesaplanabilir her türlü sayı türünü içeren veri tipleridir. Sınav notu, havanın sıcaklığı gibi ölçülebilir nicelikler, sayısal veri tipine örnek olarak gösterilebilir. Bu veri tipleri, tam sayılar, ondalık sayılar ve karmaşık sayılar gibi farklı sayı türlerini içerebilirler.

Bu aşamadan sonra yani ham madde olan veri elde edildikten ve uygun hale getirildikten sonra makine öğrenimi yöntem ve teknikleri sonraki yazılarımızda. Takipte kalınız lütfen…

--

--