Veri bilimi, öngörülerde bulunmak için matematik ve ileri düzey istatistikleri kullanan disiplinler arası bir alandır. Tüm veri bilimi algoritmaları doğrudan ya da dolaylı olarak matematiksel kavramlardan yararlanır. Matematiği sağlam bir şekilde kavramak, öneri sistemi gibi yenilikçi veri bilimi çözümleri geliştirmenize yardımcı olur. Matematiğiniz iyiyse, veri bilimine geçişiniz kolaylaşır. Bir veri bilimci olarak, problemleri çözmek için matematiğin temel kavramlarını kullanmanız gerekir.
Matematiğin yanı sıra alan bilgisi, programlama becerileri, iş becerileri, analitik beceriler ve meraklı bir zihniyete de ihtiyacınız vardır. Bir veri bilimci için matematikten kaçış yoktur. Veri bilimci olmak için matematik ve istatistiğin temellerini özümsemeli ve kendinize öğretmelisiniz.
Skaler ve Vektör
Skalerler: Skaler, uzaydaki bir vektörle skaler çarpım yoluyla etkileşen tek bir sayıdır.
Vektörler: Bir vektör V, sıralı bir öğe kümesidir. Vektör, satır veya sütun olabilen sayılardan oluşan bir dizidir. Vektörler birbirine eklenebilir ve skaler olarak bilinen bir gerçek sayı ile çarpılabilir.
# Vector Operations# Import numpy moduleimport numpy as np
# Create two vector
a = np.array([1,2,3,4,5])
b = np.array([1,2,3,4,5])# adding two vectors
add = a + b
print("Addition:",add)# Vector Subtraction
sub = a - b
print("Subtraction:",sub)# Vector Multiplication
mul = a * b
print("Multiplication:",mul)# Vector Division
div = a / b
print("division",div)Altyapı:
Matrisler: Matris, dönüşümleri temsil eden N-boyutlu sayı dizisidir. Bir matrisi “ölçekleme”, “döndürme”, “kaydırma” ve “yansıtma” gibi bir dönüşüm olarak düşünebilirsiniz. Uzaydaki tekil noktaları uzayın farklı noktalarına dönüştürür.
İki vektörün noktasal çarpımı, bir vektörün diğerine izdüşümünü temsil eder; iki vektörün vektörel çarpımı ise her iki vektörün de yatabileceği düzlemi belirlemeyi sağlar.
Tensör: Bazen, her bir eksenin farklı boyuta sahip olabildiği ve ızgara biçiminde düzenlenen ikiden fazla boyuta sahip dizilere ihtiyaç duyarsınız; bunlara tensör denir. Tensörün boyutu rütbe (rank) olarak adlandırılır. Skalerler ve vektörler de birer tensör türüdür. Sıfırıncı mertebe tensörler skalerler, birinci mertebe tensörler vektörlerdir.
Determinant, bir matrisin uzunluk (1-boyut), alan (2-boyut), hacim (3-boyut) gibi nicelikler üzerindeki ölçekleme etkisini ifade eden skaler bir değerdir. Determinant 2 ise hacim (3-boyut için) iki katına çıkar; determinant 1 ise hacmi etkilemez. Determinant 0 ise tersi (inversi) yoktur; çünkü sıfırla çarpılan her şey sıfırdır.
Özellikler:
Matrislerin çarpımının determinantı, determinantların çarpımına eşittir: det (M1M2)=det (M1) det (M2).
Bir matrisin determinantı, özdeğerlerin çarpımına eşdeğerdir.
Bir matrisi bir sabitle çarparsanız determinant det(cM)=cN det (M) olarak değişir. Burada N, matrisin boyutudur.
Eğer matrisiniz esneyebilen bir oyuncağı temsil ediyorsa, bu matrisin determinantı oyuncağı ne kadar esnettiğinizi gösterir.
# Import numpy moduleimport numpy as np
# Create 2*2 matrix
arr=np.array([[1,2],[3,4]])# Compute Determinant of a matrix
arr_det=np.linalg.det(arr)# Print the Computed Determinantprint("Determinant:",arr_det)Altyapı:
Özvektöre karakteristik vektör de denir. Doğrusal bir dönüşüm uygulandığında yalnızca skaler bir faktörle değişen, sıfırdan farklı bir vektördür.
Özvektörler, doğrusal dönüşümün dönme eksenleridir. Bu eksenlerin yönü sabittir ve özdeğer, matrisin yukarı ya da aşağı ölçeklendiği çarpanıdır. Özdeğerlere karakteristik değerler veya karakteristik kökler de denir. Başka bir deyişle, özvektörler doğrusal dönüşümün davranışını sınırlayan sabit doğru veya düzlem yönlerini, özdeğerler ise bu dönüşümün bozulma (distorsiyon) katsayılarını ifade eder.
Determinant, doğrusal dönüşümde yukarı veya aşağı ölçeklenen şekillerin alanını söyler. Bu yüzden özdeğerlerin çarpımı determinantla eşittir.
# Import numpy moduleimport numpy as np
# Create 2*2 matrix
arr=np.array([[1,2],[3,4]])# Find eigenvalues and eigenvectors
eigenvalues, eigenvectors = np.linalg.eig(arr)# print the eigenvalues and eigenvectorsprint("Eigen Values: \n",eigenvalues)print("Eigen Vectors:\n", eigenvectors)Altyapı:
Eigen Values:[-0.372281325.37228132]
Eigen Vectors:[[-0.82456484-0.41597356][0.56576746-0.90937671]]Altyapı:
NORM Fonksiyonu
Bazen bir vektörün büyüklüğünü ölçmek istersiniz. Norm fonksiyonu, bir vektörün büyüklüğünü ölçmenize yardımcı olur. Sıfır vektörü hariç bir vektöre kesinlikle pozitif bir uzunluk atar. L^p normunu içerir. Vektörleri sıfırdan büyük değerlere eşler. Bir vektör ve bir matris için Öklid uzaklığına denktir. En büyük tekil değere eşittir.
# import numpy moduleimport numpy as np
# Create 3*3 Matrix
a = np.array([[1,2,3],[4,5,6],[7,8,9]])# Compute norm
a_norm = np.linalg.norm(a)# print the norm of functionprint(a_norm)Altyapı:
Matris faktorizasyonu, matris ayrışımı olarak da bilinir. Bir matrisi bileşenlerine ayırmak için kullanılır. Matris faktorizasyonu, 10 sayısının 2 x 5 olarak çarpanlara ayrılmasına benzer. Doğrusal denklemleri çözmek için kullanılır.
Aşağıdaki matris faktorizasyonu teknikleri mevcuttur:
LU Ayrışımı, kare matrisler içindir ve bir matrisi L ve U bileşenlerine ayırır.
QR Ayrışımı, m x n matrisler (kare matrislerle sınırlı değildir) içindir ve bir matrisi Q ve R bileşenlerine ayırır. LU ayrışımı gibi kare matrislerle sınırlı değildir.
Cholesky Ayrışımı, doğrusal regresyon için en küçük kareler çözümünde, ayrıca benzetim ve optimizasyon yöntemlerinde kullanılır.
Tekil Değer Ayrışımı bir sonraki bölümde açıklanmıştır.
Tekil Değer Ayrışımı
Önceki bölümde, bir matrisi özvektörlere ve özdeğerlere ayıran öz-ayrışımı gördük. Tekil değer ayrışımı, bir matrisi tekil vektörlere ve tekil değerlere ayıran bir matris faktorizasyonu yöntemidir. Sinyal işleme, psikoloji, sosyoloji, iklim ve atmosfer bilimi, istatistik ve astronomi gibi alanlarda çeşitli faydalı uygulamalar sunar.
M, m×m bir matristir
U, m×n sol tekil matristir
Σ, negatif olmayan gerçek sayılardan oluşan n×n köşegen bir matristir.
V, m×n sağ tekil matristir
V*, V matrisinin transpozu olan n×m matristir.
# Import numpy moduleimport numpy as np
# Create 3*3 matrix
a = np.array([[1,3,4],[5,6,9],[1,2,3],[7,6,8]])# Decomposition of matrix using SVD
U, s, Vh = np.linalg.svd(a, full_matrices=False)
U,s,Vh
Altyapı:
Bir matrisin yarıtersi, ters matrisin genelleştirilmiş hâlidir. En küçük kareler çözümlerini hesaplamada kullanılır. Moore-Penrose tersi, matris yarıtersinin en yaygın biçimidir.
# Import numpy moduleimport numpy as np
# Create 3*3 matrix
a = np.array([[1,3,4],[5,6,9],[1,2,3],[7,6,8]])# Compute the (Moore-Penrose) pseudo-inverse of a matrix.
inv=np.linalg.pinv(a)# Print pseudo-inverse of a matrix.print(inv)Altyapı:
Hadamard çarpımı veya Schur çarpımı, aynı boyutlardaki iki orijinal matrisin eleman düzeyinde çarpımıdır. Eleman düzeyinde çarpım olarak da bilinir. Matris çarpımından daha basittir. Hadamard çarpımı, kayıplı JPEG sıkıştırma algoritmalarında kullanılır. Hadamard çarpımı değişmeli, birleşmeli ve dağılma özelliklerine sahiptir. Tersi kolayca elde edilir ve üs matrislerin hesaplanmasını basitleştirir.
Hadamard çarpımı; uydu iletimlerinde kod düzeltme, bilgi kuramı, kriptografi, örüntü tanıma, sinir ağı, en büyük olabilirlik kestirimi, JPEG kayıplı sıkıştırma, çok değişkenli istatistiksel analiz ve doğrusal modelleme gibi çeşitli alanlarda kullanılır.
# Import numpy moduleimport numpy as np
# Create 2*2 matrix a1 and a2
a1=np.array([[1,2],[3,4]])
a2=np.array([[1,2],[3,4]])# Element wise multiplication
hadamard_product = np.multiply(a1,a2)# Print hadamard distanceprint("Hadamard Product: \n", hadamard_product)Altyapı:
"Rastgele bir değişkenin entropisi, o rastgele değişkenin öngörülemezliğini betimlemeye çalışan bir fonksiyondur." (Entropy and Mutual Information) Ağaç oluşturmanın her adımında otomatik karar ağacı kurulumunda kullanılır; özellik seçimi entropi ölçütü kullanılarak yapılır. Model seçimi, çelişen modeller arasından entropisi en yüksek olanın en iyi olduğunu söyleyen maksimum entropi ilkesine dayanır.
"Eğer X adlı bir rastgele değişken χ={x1, x2,..., xn} kümesindeki değerleri alıyorsa ve P(X) olasılık dağılımıyla tanımlanıyorsa, rastgele değişkenin entropisini şu şekilde yazarız," (Entropy and Mutual Information)
"Yukarıdaki eşitlikte log tabanı 2 alınırsa, entropi bit cinsinden ifade edilir. Log doğal log alınırsa, entropi nat cinsinden ifade edilir. Daha yaygın olarak, entropi bit cinsinden ifade edilir." (Entropy and Mutual Information)
# Import scipy and numpy moduleimport scipy.stats
import numpy as np
# Create an array
a=np.array([1,1,2,3,1,3,4,2,5,6,3,2,4,3])# Compute probability distribution
a_pdf=scipy.stats.norm.pdf(a)# Calculate the entropy of a distribution for given probability values.
entropy = scipy.stats.entropy(a_pdf)# get entropy from probability valuesprint("Entropy: ",entropy)Altyapı:
Kullback–Leibler ayrışımı, iki olasılık dağılımının göreli entropisidir. Bir dağılımın başka bir başvuru dağılımından uzaklığını (benzerlik veya benzememe) ölçer. Kullback–Leibler ayrışımının 0 değeri, iki dağılımın özdeş olduğunu gösterir. Şu şekilde ifade edilebilir:
Bir uzaklık ölçüsü gibi görünse de öyle değildir. Bunun nedeni doğası gereği asimetrik olmasıdır; yani metrik değişmeli değildir. Genel olarak D(p, q) ≠ D(q, p) diyebilirsiniz. KL ayrışımı, denetimsiz makine öğrenmesi tekniği “Varyasyonel Otokodlayıcılar”da sıklıkla kullanılır.
# Import scipy.stats and numpy moduleimport scipy.stats
import numpy as np
# Create numpy arrays
a=np.array([1,1,2,3,1,3,4,2,5,6,3,2,4,3])
b=np.array([1,1,3,4,2,4,5,2,5,6,3,2,4,3])# Compute probability distribution
a_pdf=scipy.stats.norm.pdf(a)
b_pdf=scipy.stats.norm.pdf(b)# compute relative entropy or KL Divergence
kl_div=scipy.stats.entropy(a_pdf,b_pdf)print("KL Divergence: ",kl_div)Altyapı:
Gradyan inişi, doğrusal regresyon, lojistik regresyon ve sinir ağlarında katsayılar ve sabiti (bias) optimize etmek için kullanılan en bilinen algoritmalardan biridir. Verilen herhangi bir fonksiyonun minimumunu bulan yinelemeli bir süreçtir.
Gradyan inişi algoritmasının üç türü vardır: tam yığın (full batch), stokastik ve mini-yığın gradyan inişi. Tam yığın gradyan inişi, gradyanı hesaplamak için tüm veri kümesini kullanırken stokastik gradyan inişi, gradyanı hesaplamak için veri kümesinden bir örnek kullanır. Mini-yığın gradyan inişi, stokastik ve yığın gradyan inişinin bir birleşimidir. Eğitim kümesi, yığın (batch) adı verilen küçük gruplara bölünür. Bu küçük yığınlar kaybı tek tek hesaplar ve nihai kayıp sonucunun ortalamasını alır.
Sonuç
Tebrikler, bu eğitimin sonuna geldiniz!
Skaler, vektör, matris, tensör, determinant, özdeğerler, özvektörler, NORM fonksiyonu, tekil değer ayrışımı (SVD), Moore-Penrose yarıtersi, Hadamard çarpımı, Entropi, Kullback-Leibler Ayrışımı ve Gradyan İnişi gibi derin öğrenmeye yönelik temel matematiksel kavramları öğrendiniz.
Yol boyunca, bu kavramları Python’da NumPy ve SciPy kullanarak da uyguladınız.
Daha fazla Python öğrenmek isterseniz, aşağıdaki DataCamp kurslarını alın:
Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Veri bilimi, öngörülerde bulunmak için matematik ve ileri düzey istatistikleri kullanan disiplinler arası bir alandır. Tüm veri bilimi algoritmaları doğrudan ya da dolaylı olarak matematiksel kavramlardan yararlanır. Matematiği sağlam bir şekilde kavramak, öneri sistemi gibi yenilikçi veri bilimi çözümleri geliştirmenize yardımcı olur. Matematiğiniz iyiyse, veri bilimine geçişiniz kolaylaşır. Bir veri bilimci olarak, problemleri çözmek için matematiğin temel kavramlarını kullanmanız gerekir.
Matematiğin yanı sıra alan bilgisi, programlama becerileri, iş becerileri, analitik beceriler ve meraklı bir zihniyete de ihtiyacınız vardır. Bir veri bilimci için matematikten kaçış yoktur. Veri bilimci olmak için matematik ve istatistiğin temellerini özümsemeli ve kendinize öğretmelisiniz.
Skaler ve Vektör
Görsel Kaynağı
Matris ve Tensör
İki vektörün noktasal çarpımı, bir vektörün diğerine izdüşümünü temsil eder; iki vektörün vektörel çarpımı ise her iki vektörün de yatabileceği düzlemi belirlemeyi sağlar.
Görsel kaynağı
Determinant
Determinant, bir matrisin uzunluk (1-boyut), alan (2-boyut), hacim (3-boyut) gibi nicelikler üzerindeki ölçekleme etkisini ifade eden skaler bir değerdir. Determinant 2 ise hacim (3-boyut için) iki katına çıkar; determinant 1 ise hacmi etkilemez. Determinant 0 ise tersi (inversi) yoktur; çünkü sıfırla çarpılan her şey sıfırdır.
Özellikler:
Matrislerin çarpımının determinantı, determinantların çarpımına eşittir: det (M1M2)=det (M1) det (M2).
Bir matrisin determinantı, özdeğerlerin çarpımına eşdeğerdir.
Bir matrisi bir sabitle çarparsanız determinant det(cM)=cN det (M) olarak değişir. Burada N, matrisin boyutudur.
Eğer matrisiniz esneyebilen bir oyuncağı temsil ediyorsa, bu matrisin determinantı oyuncağı ne kadar esnettiğinizi gösterir.
Özdeğerler ve Özvektörler
Kare bir A matrisinin bir özvektörü, A ile çarpıldığında yalnızca ölçeği değişen sıfırdan farklı bir vektördür.
Görsel Kaynağı
Özvektöre karakteristik vektör de denir. Doğrusal bir dönüşüm uygulandığında yalnızca skaler bir faktörle değişen, sıfırdan farklı bir vektördür.
Özvektörler, doğrusal dönüşümün dönme eksenleridir. Bu eksenlerin yönü sabittir ve özdeğer, matrisin yukarı ya da aşağı ölçeklendiği çarpanıdır. Özdeğerlere karakteristik değerler veya karakteristik kökler de denir. Başka bir deyişle, özvektörler doğrusal dönüşümün davranışını sınırlayan sabit doğru veya düzlem yönlerini, özdeğerler ise bu dönüşümün bozulma (distorsiyon) katsayılarını ifade eder.
Determinant, doğrusal dönüşümde yukarı veya aşağı ölçeklenen şekillerin alanını söyler. Bu yüzden özdeğerlerin çarpımı determinantla eşittir.
NORM Fonksiyonu
Bazen bir vektörün büyüklüğünü ölçmek istersiniz. Norm fonksiyonu, bir vektörün büyüklüğünü ölçmenize yardımcı olur. Sıfır vektörü hariç bir vektöre kesinlikle pozitif bir uzunluk atar. L^p normunu içerir. Vektörleri sıfırdan büyük değerlere eşler. Bir vektör ve bir matris için Öklid uzaklığına denktir. En büyük tekil değere eşittir.
Matris Faktorizasyonu
Matris faktorizasyonu, matris ayrışımı olarak da bilinir. Bir matrisi bileşenlerine ayırmak için kullanılır. Matris faktorizasyonu, 10 sayısının 2 x 5 olarak çarpanlara ayrılmasına benzer. Doğrusal denklemleri çözmek için kullanılır.
Aşağıdaki matris faktorizasyonu teknikleri mevcuttur:
Tekil Değer Ayrışımı
Önceki bölümde, bir matrisi özvektörlere ve özdeğerlere ayıran öz-ayrışımı gördük. Tekil değer ayrışımı, bir matrisi tekil vektörlere ve tekil değerlere ayıran bir matris faktorizasyonu yöntemidir. Sinyal işleme, psikoloji, sosyoloji, iklim ve atmosfer bilimi, istatistik ve astronomi gibi alanlarda çeşitli faydalı uygulamalar sunar.
Moore-Penrose Yarıtersi
Bir matrisin yarıtersi, ters matrisin genelleştirilmiş hâlidir. En küçük kareler çözümlerini hesaplamada kullanılır. Moore-Penrose tersi, matris yarıtersinin en yaygın biçimidir.
Hadamard Çarpımı
Hadamard çarpımı veya Schur çarpımı, aynı boyutlardaki iki orijinal matrisin eleman düzeyinde çarpımıdır. Eleman düzeyinde çarpım olarak da bilinir. Matris çarpımından daha basittir. Hadamard çarpımı, kayıplı JPEG sıkıştırma algoritmalarında kullanılır. Hadamard çarpımı değişmeli, birleşmeli ve dağılma özelliklerine sahiptir. Tersi kolayca elde edilir ve üs matrislerin hesaplanmasını basitleştirir.
Hadamard çarpımı; uydu iletimlerinde kod düzeltme, bilgi kuramı, kriptografi, örüntü tanıma, sinir ağı, en büyük olabilirlik kestirimi, JPEG kayıplı sıkıştırma, çok değişkenli istatistiksel analiz ve doğrusal modelleme gibi çeşitli alanlarda kullanılır.
Entropi
"Rastgele bir değişkenin entropisi, o rastgele değişkenin öngörülemezliğini betimlemeye çalışan bir fonksiyondur." (Entropy and Mutual Information) Ağaç oluşturmanın her adımında otomatik karar ağacı kurulumunda kullanılır; özellik seçimi entropi ölçütü kullanılarak yapılır. Model seçimi, çelişen modeller arasından entropisi en yüksek olanın en iyi olduğunu söyleyen maksimum entropi ilkesine dayanır.
"Eğer X adlı bir rastgele değişken χ={x1, x2,..., xn} kümesindeki değerleri alıyorsa ve P(X) olasılık dağılımıyla tanımlanıyorsa, rastgele değişkenin entropisini şu şekilde yazarız," (Entropy and Mutual Information)
"Yukarıdaki eşitlikte log tabanı 2 alınırsa, entropi bit cinsinden ifade edilir. Log doğal log alınırsa, entropi nat cinsinden ifade edilir. Daha yaygın olarak, entropi bit cinsinden ifade edilir." (Entropy and Mutual Information)
Kullback-Leibler Ayrışımı
Kullback–Leibler ayrışımı, iki olasılık dağılımının göreli entropisidir. Bir dağılımın başka bir başvuru dağılımından uzaklığını (benzerlik veya benzememe) ölçer. Kullback–Leibler ayrışımının 0 değeri, iki dağılımın özdeş olduğunu gösterir. Şu şekilde ifade edilebilir:
Bir uzaklık ölçüsü gibi görünse de öyle değildir. Bunun nedeni doğası gereği asimetrik olmasıdır; yani metrik değişmeli değildir. Genel olarak D(p, q) ≠ D(q, p) diyebilirsiniz. KL ayrışımı, denetimsiz makine öğrenmesi tekniği “Varyasyonel Otokodlayıcılar”da sıklıkla kullanılır.
Gradyan İnişi
Gradyan inişi, doğrusal regresyon, lojistik regresyon ve sinir ağlarında katsayılar ve sabiti (bias) optimize etmek için kullanılan en bilinen algoritmalardan biridir. Verilen herhangi bir fonksiyonun minimumunu bulan yinelemeli bir süreçtir.
Görsel Kaynağı
Görsel Kaynağı
Gradyan inişi algoritmasının üç türü vardır: tam yığın (full batch), stokastik ve mini-yığın gradyan inişi. Tam yığın gradyan inişi, gradyanı hesaplamak için tüm veri kümesini kullanırken stokastik gradyan inişi, gradyanı hesaplamak için veri kümesinden bir örnek kullanır. Mini-yığın gradyan inişi, stokastik ve yığın gradyan inişinin bir birleşimidir. Eğitim kümesi, yığın (batch) adı verilen küçük gruplara bölünür. Bu küçük yığınlar kaybı tek tek hesaplar ve nihai kayıp sonucunun ortalamasını alır.
Sonuç
Tebrikler, bu eğitimin sonuna geldiniz!
Skaler, vektör, matris, tensör, determinant, özdeğerler, özvektörler, NORM fonksiyonu, tekil değer ayrışımı (SVD), Moore-Penrose yarıtersi, Hadamard çarpımı, Entropi, Kullback-Leibler Ayrışımı ve Gradyan İnişi gibi derin öğrenmeye yönelik temel matematiksel kavramları öğrendiniz.
Yol boyunca, bu kavramları Python’da NumPy ve SciPy kullanarak da uyguladınız.
Daha fazla Python öğrenmek isterseniz, aşağıdaki DataCamp kurslarını alın: