Herkese merhaba ben Mert Çobanov,
Machine Learning ve Data Science alanlarında bana en sık gelen soruları tek bir yerde toplama kararı aldım. Bana sorularını Twitter veya [email protected] üzerinden iletebilirsin.
Öncelikle seni tebrik ediyorum, bu soru oldukça genel bir soru tek bir yol yok, senin bilgi birikimin ve öğrenme yöntemine göre kesinlikle değişir. Fakat özetlemek gerekirse 3 temel unsur var.
-
Matematik:
- Lineer Cebir
- Olasılık
- İstatistik
-
Programlama ve Bilgisayar Bilimleri:
- Bu alanda çalışabileceğin bir dil (Python, R, Java vs.)
- Veri yapıları
- Algoritmalar
- SQL veya DB yapıları
-
Teknik Bilgi:
- Makine öğrenmesi teorisi
- Veri görselleştirme
Bu bahsettiğim kapsamlar artırılabilir, fakat genel olarak ihtiyacın olacak konular en azından giriş düzeyinde bu şekilde. Bahsettiğim tek bir yol olmayışı bu 3'lü nedeniyle oluşuyor. Bunları peşpeşe veya paralel bir şekilde öğrenebilirsin veya bazılarına ağırlık verir ve bazılarına daha az zaman harcarsın fakat günün sonunda hepsine ihtiyacın olacak. Bu konuları halledebilmek için edindiğin her kaynak sana farklı bir bakış açısı kazandıracaktır fakat ben yine de altta bu zamana kadar tecrübe ettiğim kaynakları yazıyor olacağım.
Eğer temelleri artık aldıysan daha ileri gitmek istediğini biliyorum, bu yüzden makine öğrenmesi alanlarından birinde sivrilmelisin. Bunu seçerken ne yapmak sana keyif veriyor, uzun süre boyunca motivasyonunu kaybetmeden hangi konulara çalışabilirsin buna karar vermelisin. Ben örnek olması açısından bazı konu başlıklarını ve bilmen gereken bazı anahtar kelimeleri yazıyorum. Bu anahtar kelimeler her şeyi kapsamıyor fakat neler var diye araştırabilirsin.
-
Görüntü işleme:
- Konvansiyonel Sinir Ağlar (CNN)
- OpenCV
- YOLO, RCNN
- Sinyal işleme teknikleri, Fourier Dönüşümleri
- Haar Cascade teknikleri
-
Doğal Dil İşleme:
- Chatbotlar
- RNN, Transformatörler
- RASA
-
Robotik ve Pekiştirmeli Öğrenme:
- Dronelar
- Otonom sürüş
- Oyun botları
-
Veri Bilimi:
- Veri madenciliği
- Veri görselleştirme
- Feature Engineering
Eminim aklıma gelmeyen bir çok konu daha var, bu alanlardan birine doğru ilerlemen kaybolmanı engelleyecektir fakat diğer alanlarda neler yapılıyor merak etmen de harika olur.
Bu bahsettiğim konular için internet üzerinden çeşitli kurslar bulabilirsin, özellikle ingilizce verilen kurslar çok daha güncel ve eğitici oluyor bunu da göz önünde bulundurmakta fayda var. Kurslar hiç bitmiyor ara sıra biraz yağa, kire, pasa bulaşmak lazım bunlar için de kaggle gibi siteleri kullan veya hayatında karşılaştığın bir problemi çözmeye çalış, farkedeceksin ki eğer pes etmezsen öğrendiğin ve aklında kalan her şey ihtiyaçtan doğarak öğrendiğin konular olacak.
Aslında bunun için bir medium makalem var. Her şeyden önce oraya bakmanı öneriyorum. Bu zamana kadar kaliteli olduğunu düşündüğüm kaynakları paylaştım. Kaliteli kaynakları bulmak için çok ısrarcı olmayı önermiyoru, gördüğünüz ve denk geldiğiniz her şeye bulaşıp kendi yöntemini öğrenmen çok daha iyi olacaktır.
Hazır buradayken de birkaç örnek vermeden göndermeyeceğim.
Eğer derin öğrenme alanında çalışmak istiyorsanız ilk başvuracağınız kaynak bu olmalı diye düşünüyorum. Oldukça kapsamlı ve teorik bir kurs. Beş adımdan oluşuyor ve size bu alanda uzun süre yetebilecek derin öğrenmenin çeşitli alanlarından müthiş bilgileri veriyor.
- Hands-on Machine Learning - Geron
- Deep Learning with Python - Chollet
- Deep Learning - Goodfellow, Bengio
- Fundamentals of Deep Learning - Buduma, Locascio
- Machine Learning in Action - Harrington
- Machine Learning with Python Cookbook - Albon
- Python Data Science Handbook - VanderPlas
- Scikit-Learn Cookbook - Avila, Hauck
- The Elements of Statistical Learning - Friedman
- Data Science from Scratch - Grus
Sanırım insanların en çok linç yediği sorulardan birisi, ben de biraz yuvarlak bir cevap vereceğim ama kalbim bangır bangır python diye bağırıyor. Burada duyarlı olmaya veya başka bir duyguya da kapılmaya gerek olduğunu düşünmüyorum, böyle bir komünite desteği ve gelişim hızı varken python'dan başka bir şey önermem çok ayıp olurdu diye düşünüyorum fakat yine de sizin tercihiniz. Ben yine de 2020 itibariyle popüler olan dilleri yazayım.
- Python
- R
- Julia
- Java
Programlama dili senin enstrümanın eğer bu analojiyi anladıysan diyeceklerim her şey senin için kısa bir özet olacak. Eğer elindeki enstrümanı ne kadar iyi kullanıyorsan o kadar kullanışlı ve bir o kadar da temiz iş yaparsın. Bence dilde bir üst sınır yok her zaman daha temiz bir kod, daha iyi bir algoritma vardır. Burada bir takım standartlar var, bence bunları da bilmek önemli. PEP ve linting konularına bir bak derim.
Konuya dönecek olursak giriş seviyesindeysen en azından bulunduğun dilde fonksiyonlar konusuna kadar hallet derim, ileride nesneye yönelik programlama (OOP) gerçekten çok kritik olacak. Bu seviyeye geldiğinde işini kolaylaştıracak kütüphaneleri ve onları nasıl efektik kullanacağını öğren. Uzmanlaştığın alanda eğitimi alırken programlama eğitimine ara verme, her zaman pratik yapmak seni canlı tutacaktır.
Aslında güzel bir roadmap var. Bu repodan ulaşabilirsin. Genel olarak full-stack bir ML Engineer ve Data Scientist olma yolunda bu etmenlerin tamamını ya da bir kısmının tamamlanması bekleniyor. Burada bulduğun fotoğrafın üzerine tik atarak yolun ne kadarını tamamladığına bakabilirsin. Aynı zamanda repodaki teknik bilgiler ile eksik kaldığın kısımlara çalışmaya başlayabilirsin. Bir ufak tüyo olarak her şeyin başı ingilizce öğrenmekten geçiyor. Eğer bu kısım tamam değilse ilk önce ingilizceden başlamanı öneririm.
Genel olarak matematik temelini alabildiğin bölümler sana daha yardımcı olacaktır fakat bu demek değilki kendi başına da matematik öğrenilmez. Bu konuyla alakalı birçok yaşanmış hikaye var, bu tamamen senin gerçekten isteyip istemediğine bağlı. Fakat hayatında düzenli olarak kullandığında daha da kalıcı olduğu gerçeğini değiştiremeyiz. Tabii ki yazılımcı veya matematikçi olmanın katkısını yadsımıyorum fakat her şeyi öğrenebilirsin, bu sadece zaman meselesi.
Genel olarak üst kısımlarda bahsettiğim temel matematik etmenlerini tamamlaman gerekiyor. Bunu kitaplardan öğrenmen gerektiğini düşünüyorum. Konular bitmez fakat ben birkaçını burada belirteyim.
Doğrusal Cebir:
- Skalerler, Vektörler, Matrisler ve Tensörler
- Doğrusal bağımlılık ve Uzayı Germe
- Normlar
- Moore-Penrose Tersimsisi
- Determinant
- PCA
Olasılık:
- Rastgele değişkenler
- Olasılık Dağılımları
- Marjinal, Koşullu Olasılıklar
- Beklenti, Değişirlik, Eşdeğişirlik
- Bayes Kuralı
- Bilgi Kuramı
Sayısal Hesaplama:
- Taşma ve Küçümenlik
- Gradyan Temelli Optimizasyon
- Doğrusal En Küçük Kareler
Bunları youtube üzerinden ve kitaplardan edinebilirsin. Makine Öğrenmesi matematiğini çok güzel ve teknik şekilde anlatan youtube kanalları da var. Örneğin StatQuest bu konuda gerçekten harika.
Mert Cobanov Kaliteli içerik dediğimde kendi kanalım ile başlamama izin ver :)
Bununla da alakalı bir youtube videom var. Aynı zamanda GitHub hesabımdaki "Stars"'larıma bakabilirsin, genel olarak kullanışlı olduğunu düşündüğüm toolları orada biriktiriyorum.
Ben yine de sana özet birkaç şey bırakacağım.
-
Veri Manipülasyonu:
- Pandas
- Numpy
-
Veri Görselleştirme:
- Seaborn
- Matplotlib
-
Derin Ağlar:
- Tensorflow
- Keras
- PyTorch
-
Keşifsel Veri Analizi (EDA):
- Streamlit
- Pandas-profiling
-
Geri kalanlar için GitHub hesabımda star attığım repolara bakabilirsin, birçok kullanışlı kütüphane ve eğitim reposu var.
Takdir edersin ki çok fazla çalışıyorum, aynı zamanda full-time çalıştığım bir şirket var, akşamları da canlı yayınlar, kendi kanalıma video çekmek derken, yaşamak için hiç fırsatım kalmıyor. İlk zamanlarda yardımcı oluyordum fakat sonrasında işler içinden çıkılmaz bir hal almaya başladı bu yüzden ancak yönlendirebiliyorum hevesli arkadaşları. Bu yüzden projen için biraz çabalaman gerek, keşke birgün 36 saat olsaydı o zaman herkese yardım etmek isterdim. :)