Kurs
Aday ve junior veri bilimciler sıklıkla "fonksiyon" terimini görür, ancak bu terimin tam olarak ne anlama geldiği her zaman net değildir.
Bu yazıda, matematiksel bir fonksiyonun ne olduğunu, hangi kümelerin girdi ve çıktı değerlerini tanımladığını ve sürekli ile ayrık değerlerin nasıl farklılaştığını öğreneceksiniz. Fonksiyonların teknolojide nasıl kullanıldığını, veri biliminde yaygın fonksiyonları ve nasıl optimize edildiklerini keşfedeceksiniz. Bu sırada, fonksiyonları işlemek ve görselleştirmek için Python kodları göreceksiniz.
Python'da kendi fonksiyonlarınızı yazmayı ve kullanmayı pratik etmek isterseniz, Writing Functions in Python kursumuzu öneririm.
Matematikte Fonksiyon Nedir?
Matematikte, fonksiyon her girdiyi tekil bir çıktıya eşler. Her geçerli girdi yalnızca bir çıktıya gönderilir. Bir girdinin birden fazla çıktısı olamaz.
Örneğin, 32 derece Fahrenheit, 0 Celsius'tur. Fahrenheit değeri bir Celsius değerine karşılık gelir; üstelik yalnızca tek bir değere karşılık gelir. Bir geçerli girdi (Fahrenheit) için iki farklı çıktı (Celsius) olamaz.
Diğer örnekler arasında saatlik ücretinize göre maaş bordrosu yer alır. Saatte 20 $ kazanıyorsanız ve 40 saat çalışırsanız, 20 x 40 = 800 $ kazanırsınız.
Her kural fonksiyon değildir. Bazı durumlarda, tek bir girdi için birden fazla çıktının olması mantıksal olarak anlamlıdır. Örneğin, bir ismi bir kişiyle eşleştirmek bir fonksiyon değildir. "John Smith" ismi bu ismi paylaşan birden çok kişiye karşılık gelebilir.
Matematikte, kurallar çoğunlukla her geçerli girdi için yalnızca bir çıktı olacak şekilde kurgulanır. Çoğu durumda, bu (bordro gibi) dünyanın gerçekte nasıl işlediğinin açık bir ifadesidir. Diğer durumlarda, problemler, problemi çözülebilir kıldıkları için fonksiyonlar cinsinden formüle edilir. Girdiler ve çıktılar yumağını takip etmek yerine, model her girdinin birden fazla çıktısı olmayacak şekilde kurulur.
Bir fonksiyonu, bir girdiyi (genellikle x ile gösterilir) kabul eden, onu bir şekilde işleyen ve bir çıktı (genellikle y ile gösterilir) üreten bir "makine" olarak düşünebilirsiniz.

Burada bir makine, sol taraftaki konveyör bandından girdiyi alır, işler ve sağ tarafta neşeli bir yeşil onay işareti üretir.
Çok değişkenli fonksiyonlar birden çok girdiden oluşan bir koleksiyonu kabul eder, ancak tek bir çıktı üretir. Bunu, birden fazla değişken veya özelliğe sahip tek bir veri satırını tek bir çıktıya eşlemek olarak düşünebilirsiniz.
Fonksiyon gösterimi ve terminoloji
Denklemi nasıl yazarsınız? Sıcaklık dönüşümü örneğinde, formülü y = f(x) = (5/9) (x - 32) şeklinde yazabiliriz; burada x Fahrenheit, y ise Celsius cinsindendir. Bu gösterimi anlamak için soldan sağa doğru okuyun.
Solda, çıktı olan y'yi görürsünüz. f(x) gösterimi, x girdisini alan f adlı bir fonksiyon kullandığınızı belirtir. Bu bağlamda f(x)'in, bir değer f ile başka bir değer x'in çarpımı anlamına gelmediğine dikkat edin.
Sağ tarafta ise formül yer alır. Girdi x'i alın, ondan 32 çıkarın ve sonucu 5/9 ile çarpın der.
Tanım kümesi, değer kümesi ve görüntü kümesi
Dış ortam sıcaklığını günde bir kez kaydettiğinizi ve k ölçüm topladığınızı varsayalım; bunları (x1, x2, …, xk) ile gösterelim. Yılbaşından bugüne kadar geçen n günden sonra ortalama sıcaklığı döndüren bir fonksiyon istiyorsunuz. Pozitif bir tamsayı olan ve k'ye küçük ya da eşit olan bir n alan ve ilk n sıcaklığın ortalamasını, yani bir gerçek sayıyı döndüren bir fonksiyon tanımlayın. Böyle bir fonksiyonun gösterimi f: {1, 2, …, k} → ℝ.
Fonksiyondaki kümeleri tanımlamak için jargona sahip olmak faydalıdır; bu da bizi tanım kümesi, değer kümesi ve görüntü kümesine götürür.
- Tanım kümesi, girdileri tanımlayan kümenin adıdır; bu örnekte tamsayılardır.
- Değer kümesi, hedeflediğiniz çıktı tipini tanımlayan kümedir; bu örnekte gerçek sayılar.
Şimdi de görüntü kümesine bakalım. Basit bir ikinci derece fonksiyonu düşünün: y = f(x) = x2. Tanım ve değer kümesini belirtmek için f: ℝ → ℝ yazın.
Bunun, hem tanım kümesinin (girdiler kümesi) hem de değer kümesinin (çıktılar kümesi) gerçek sayılardan oluştuğunu belirttiğini artık biliyorsunuz. Ancak biraz düşününce, çıktıların kümesinin tüm gerçek sayılar olamayacağını fark edebilirsiniz.
Herhangi bir sayının karesi negatif olmayan olduğundan, fiilen gerçekleşen çıktıların kümesi tüm gerçek sayılar değil, yalnızca negatif olmayan gerçek sayılardır. Bu durumu tanımlayan terim görüntü kümesidir. Bu fonksiyonun görüntü kümesinin tüm negatif olmayan gerçek sayılar olduğunu söyleriz.
Burada değer kümesi potansiyel çıktı kümesidir; görüntü kümesi ise fiilen gerçekleşen çıktılar kümesidir. Değer kümesini, hedeflediğiniz çıktı tipini yansıtacak şekilde siz seçersiniz; görüntü kümesini ise, gerçekten ortaya çıkan çıktı değerlerinin kümesi olarak keşfedersiniz.
Sürekli ve ayrık değişkenler
Bu da bizi sürekli ve ayrık değişkenler ayrımına getirir:
- Sürekli değişkenler, verilen bir aralıktaki her teorik değeri alabilir.
- Ayrık değişkenler, sonlu ya da sayılabilir sayıda değer alırlar.
Örneğin, [0, 1] aralığındaki sürekli bir değişken 0, 0,5, 0,4141 veya aralıktaki herhangi bir gerçek değeri alabilir. Sürekli değişkenler, çıktının teorik olarak herhangi bir değer olabildiği (regresyon gibi) modellerde yaygın olarak kullanılır.
Buna karşılık, ikili sınıflandırmada yalnızca iki değeri umursarsınız: 0 ve 1. Örneğin, bir resim ya kedi içerir ya da içermez. Çok sınıflı bir sınıflandırma probleminde bile hâlâ sonlu sayıda değer vardır; örneğin 0 köpek, 1 kedi, 2 at olabilir.
Çözmeye çalıştığınız problem, hangi tür fonksiyonla ilgilendiğinizi belirler. Sınıflandırma problemleri ayrık değerler üretir; regresyon problemleri sürekli fonksiyonlar üretir.
Vektör gösterimi
Bazen bir fonksiyona birden fazla değişken geçirmeniz gerekir. Örneğin bir makine öğrenimi fonksiyonuna bir özellik satırı geçirebilirsiniz. Bu durumda, özellikleri tek bir kapta gruplayıp onu geçebilirsiniz. Verileri bu şekilde bir kapta gruplamanın bir yolu da bir vektördür. Model bir girdi vektörü x = [x1, x2, x3] alır ve bir hedef y çıktılar.
Python'da bir vektörü temsil etmek için genellikle bir NumPy dizisi kullanırsınız.
import numpy as np
def f(x):
result = (x[0] + x[1] + x[2]) / 3
return result
x = [3, 4, 7.1]
print(f(x))
4.7
Bu kod, 3, 4 ve 7.1 sayılarından oluşan bir vektörü alır ve bir ortalama döndürür.
Vektörlerden oluşan bir koleksiyon için popüler bir yöntem, pandas kütüphanesindeki DataFrame veri yapısını kullanmaktır.
import pandas as pd
def row_averages(df):
return df.mean(axis=1).round(1)
df = pd.DataFrame({
"A": [1, 5, 2],
"B": [9, 3, 6],
"C": [7, 8, 10]
})
print(row_averages(df))
Bu kod, satır ortalamalarını içeren ve satır başına bir değer olmak üzere bir pandas Series döndürür. Bu durumda:
0 5.7
1 5.3
2 6.0
Teknolojide Fonksiyonlar
Fonksiyon kavramı teknolojide her yerde karşımıza çıkar. Pratik nedenlerle, teknolojide "fonksiyon" kavramının her zaman matematikteki kadar sıkı tanımlanmadığını bilmek gerekir. Örneğin, programlama fonksiyonlarının, çıktı dışındaki değişkenlerin değerlerini değiştiren yan etkileri olabilir; matematiksel fonksiyonlarda bu yoktur.
Elektronik tablolar
Fonksiyonlar, örneğin elektronik tablolarda ve Excel Formüllerinde yaygın olarak kullanılır. Bir sayı sütununun toplamını, ortalamasını veya medyanını hesaplamak isteyebilirsiniz. Elektronik tablolarda fonksiyonlar, daha önce tanıtılan matematiksel tanımla aynı şekilde çalışır.
Elektronik tabloların (kelime oyununa dikkat) çok iyi olduğu bir şey de Koşullu Fonksiyonlardır: IF() gibi fonksiyonları kullanarak daha karmaşık koşullu yapılar kurmanıza olanak tanırlar.
Örneğin, bir yıl içinde konut kredisi şirketinize yaptığınız ödemelerin toplamını bulmak isteyebilirsiniz. Bunu yapmak için muhtemelen elektronik tablonuzun SUM() fonksiyonunu kullanırsınız.
Programlama Dilleri
Fonksiyonlar programlama dillerinde her yerdedir. Programlama diline bağlı olarak, "fonksiyon" tanımı matematiksel fonksiyon tanımından daha esnek olabilir. Bazı diller bir fonksiyonun birden fazla değer veya hiç değer döndürmesine izin verir.
Örneğin, bir fonksiyon değerler alıp bir ifade yazdırabilir, ancak açıkça bir değer döndürmeyebilir. Bir Python Fonksiyonu şu şekilde görünür:
def print_me(name, color):
print(f"My name is {name} and my favorite color is {color}.")
name = "Mark"
color = "blue"
print_me(name, color)
Bu kodun çıktısı: "My name is Mark and my favorite color is blue." olacaktır. Fonksiyondan açıkça bir matematiksel değer döndürülmemektedir.
Python gibi birçok ana akım dildeki kod, bir fonksiyonda bir global değişkenin değerini değiştirmek gibi başka yan etkilere de sahip olabilir. Yan etkiler mümkün ve izinli olsa da, kaçınılması tavsiye edilir. Yan etkiler, programları test etmeyi, hata ayıklamayı ve mantığını kurmayı zorlaştırır.
Bu nedenlerle, Scala ve Haskell gibi bazı "fonksiyonel" diller, fonksiyon fikrini daha sıkı bir şekilde temel alır.
Makine Öğrenimi
Makine Öğrenimi bağlamında girdiler özelliklerdir, fonksiyon modeldir ve çıktı modelin tahminidir. Böyle bir model genellikle, girdi özelliklerinin çıktı tahminini vermek üzere nasıl işlendiğinin mutlaka açık olmadığı için bir "kara kutu" olarak tanımlanır; bu da önceki ”makine” metaforumuzun daha da iyi oturmasının nedenidir:

Bu görselde, özellikler model "makinesine" beslenir, bu makine onları bir şekilde işler ve bir tahmin çıktılar. Sıcaklık dönüşümü örneği gibi daha basit, deterministik fonksiyonlarla karşılaştırıldığında, makinenin içinde olan biteni tanımlamak daha zordur.
ML'de tanım kümesi özellik vektörleridir; değer kümesi olasılıklar, sınıflar veya gerçek değerli tahminler olabilir.
Derin Öğrenme alanında, fonksiyonlar genellikle doğrudan bir girdi kümesine uygulanmaz; bunun yerine modelin doğruluğu bir maliyet fonksiyonu ile değerlendirilir. Bir Maliyet Fonksiyonu, bir modelin eğitim seti genelinde ne kadar hatalı olduğunu ölçer. Tahminleri gerçek etiketlerle veya değerlerle karşılaştırır ve hataları tek bir sayıda toplar.
Veri Biliminde Yaygın Fonksiyonlar
Bazı fonksiyonlar veri biliminin neredeyse her yerinde karşımıza çıkar. Bu fonksiyonlara doğrusal fonksiyonlar, logaritmik fonksiyonlar, üstel fonksiyonlar ve derin öğrenme için doğrusal olmayan aktivasyon fonksiyonları dahildir.
Doğrusal fonksiyonlar
Klasik örnekle, doğrusal fonksiyonlarla başlayalım.
Eğim
Elma canınız çekti diyelim. Elmayı pound başına sabit 0,75 $ fiyatla satan bir markete gidiyorsunuz. Yani bir pound elma 0,75 $ tutar; 2 pound, 2 x 0,75 $ = 1,50 $; 3 pound ise 3 x 0,75 $ = 2,25 $ tutar. Aldığınız her pound, toplam maliyete sabit bir miktar ekler.
Fonksiyon gösteriminde, formülü f(x) = 0.75 x olarak yazabilirsiniz. 0,75 sayısı, doğrusal fonksiyonun eğimidir. Eğim, girdideki her birim değişime karşılık çıktının değişim oranıdır.
Böyle bir fonksiyonu grafiğe dökmek için aşağıdakine benzer bir kod kullanabilirsiniz:
import numpy as np
import matplotlib.pyplot as plt
def cost_of_apples(x, m):
result = m * x
return result
# Define x and y
x = np.linspace(0, 5, 100)
y = cost_of_apples(x, 0.75)
# Plot
plt.figure()
plt.plot(x, y)
plt.xlabel("Pounds of Apples")
plt.ylabel("Total Cost ($)")
plt.title("Cost of Apples")
plt.show()

Bu tür fonksiyonlara doğrusal fonksiyonlar denir. Girdi x'teki her artış, çıktı y'ye aynı sabit miktarı ekler. Adından da anlaşılacağı gibi, grafiğe döküldüğünde doğrusal bir fonksiyon düz bir doğru verir.
Kesişim (intercept)
Şimdi, market alışverişinizin teslim edilmesini sevdiğinizi varsayalım. Marketin sabit 2,00 $ teslimat ücreti var. Bu durumda, elmalar için fonksiyonunuz f(x) = 0.75 x + 2 olur. Önceki gibi, 0,75 eğimdir. Grafiğin y-ekseni kestiği nokta olan 2 sayısı, "y-kesişim" olarak bilinir. Girdi 0 iken çıktı değeridir.
Toplam maliyet, elmaların ve bir teslimat ücretinin toplamıdır. Genel olarak, tek değişkenli bir doğrusal fonksiyon f(x) = mx + b şeklinde yazılabilir; burada m değeri eğim, b ise y-kesişimidir.
Çok değişkenli doğrusal fonksiyon
Muhtemelen sadece elma yemek istemezsiniz. Biraz da ekmek ve fıstık ezmesi almak istediğinizi varsayalım. Elmalar pound başına 0,75 $, bir somun ekmek 2,50 $ ve bir kavanoz fıstık ezmesi 3,00 $dır. Artık market hesabı fonksiyonunuz şudur:

Bu fonksiyon, her değişkende doğrusal olduğu için hâlâ doğrusal kabul edilir. Genel olarak, doğrusal bir fonksiyon şu biçimdedir:

Bu, her bir miktarınızın kendi ağırlığı (bu bağlamda eğim için kullanılan bir başka kelime) ile çarpılıp toplanmasına ve artı kesişim terimine denk gelir.
Vektör gösteriminde bu fonksiyon şu şekilde yazılır:

Buradaki T, w ve x için vektör çarpımını gerçekleştirmek için gerekli olan "transpoze"yi ifade eder.
Doğrusal Regresyon
Yakıt verimliliği ile hız ilişkisini düşünün. Daha hızlı sürüldükçe yakıt verimliliğinin azaldığından şüpheleniyorsunuz. 45 ile 65 mil/saat hızları arasında elli veri noktası topluyorsunuz ve aşağıdaki deseni görüyorsunuz:

Her veri noktasını birleştirmek, kıvrımlı, okunması zor ve faydasız bir model verir. Ancak bu aralıkta verilerin genel eğilimi yaklaşık olarak doğrusaldır. Hıza x dersek, bu grafiğin fonksiyonu şudur:

Verilere en iyi uyan böyle bir doğruyu bulmak için Basit Doğrusal Regresyon adı verilen matematiksel bir süreç kullanırsınız.
Böyle bir doğruyu Python'da Matplotlib ve Seaborn ile hesaplayabilirsiniz:
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
# Reproducibility
np.random.seed(0)
# Create dataset
speed = np.linspace(45, 65, 50)
mpg = 38 - 0.2 * speed + 0.002 * (speed - 55)**2 + np.random.normal(0, 0.5, size=50)
df = pd.DataFrame({
"speed": speed,
"mpg": mpg
})
# Plot with regression line
sns.regplot(data=df, x="speed", y="mpg", ci=None)
plt.xlabel("Speed (mph)")
plt.ylabel("Fuel Efficiency (mpg)")
plt.title("Fuel Efficiency vs Speed")
plt.show()
Doğrusal regresyon çoklu değişkenlerle de çalışır. Hız (x), araç ağırlığı (y) ve motor hacmi (z) için bir doğrusal regresyon modeli tanımlamak istediğinizi varsayalım. Çok Değişkenli Doğrusal Regresyon için elde edilen formül şudur:

Bu durumda, her değişken için katsayı, diğer değişkenler sabit tutulurken o özelliğin ağırlığını veya önemini temsil eder.
Ters fonksiyonlar
Şimdi elma satın alma sorusunu "tersine" çevirelim: elmalara 2,25 $ harcadıysanız kaç pound aldınız? Yanıt 2,25 / 0,75 = 3'tür; yani üç pound aldınız. Bir fonksiyonun bu tür "tersine çevrilmesine" fonksiyonun tersi denir. Kesişim terimi olmayan örnekte ters fonksiyon:

Bu gösterimde "-1"in bir fonksiyonun tersinin alındığını, bir karşılığının (reciprocal) değil, belirttiğine dikkat edin.
Dikkat edilmesi gereken bir nokta, tanım kümesinin değişebileceğidir. Örneğin, orijinal fonksiyonunuzun şu olduğunu varsayalım:

Bu fonksiyon, paydanın sıfır olamayacağı için 2 haricindeki tüm gerçek sayılar için tanımlıdır. Bu fonksiyonun tersi ise

Aynı nedenle, ters fonksiyon 0 dışındaki tüm girdiler için tanımlıdır.
Dikkat edilmesi gereken bir diğer nokta, ortaya çıkan tersin bir fonksiyon olmayabileceğidir; çünkü tek bir girdi için birden fazla çıktı olabilir. y = x2 fonksiyonunu düşünün. Tersi şu olur:

Artı/eksi işaretinden de görebileceğiniz gibi, tersinin bir girdi için iki çıktısı vardır; bu nedenle bir fonksiyon değildir; ancak tanım kümesini (örneğin x ≥ 0) kısıtlarsak fonksiyon olur.
Grafiksel olarak, bir fonksiyon ve tersi (varsa) y=x doğrusu boyunca birbirinin ayna görüntüsüdür. y = x3 fonksiyonunu düşünün. Bu fonksiyonun ve tersinin grafiği şöyledir:
Orijinal fonksiyon (mavi) y=x doğrusu boyunca yansıtılan bir tersine (turuncu) sahiptir.
Üstel ve logaritmik fonksiyonlar
Birbirleriyle yakından ilişkili iki tür fonksiyona bakalım: üstel ve logaritmik fonksiyonlar.
Üstel fonksiyonlar
Yıllık bileşik faizle %10 faiz veren bir tasarruf hesabına 100 $ yatırdığınızı varsayalım.
- 0. yılda (bir yıl geçmeden önce) f(0) = 100 $.
- 1. yılın sonunda, f(1) = 100 $ x 1,10 = 110 $.
- 2. yılın sonunda, f(2) = 110 $ x 1,10 = (100 $ x 1,10) x 1,10 = 100 $ x 1,102 = 121 $.
- 3. yılın sonunda, f(3) = 121 $ x 1,10 = (100 $ x 1,10 x 1,10) x 1,10 = 100 $ x 1,103 = 133,10 $
- x yılı sonunda, f(x) = 100 $ * 1,10x.

Bu, üstel büyümenin bir örneğidir. Her adım, bir önceki adımı sabit bir miktarla çarpar. Üstel büyümenin genel fonksiyonu y = A bx biçimindedir; burada y çıktı, x girdi (genellikle zaman), A başlangıç miktarı ve b x'in birimi başına büyüme katsayısıdır.
Veri biliminde, üstel modeller, kullanıcı veya gelir büyümesi gibi bileşik büyüme süreçlerinde, olasılık modellerinde ve daha birçok uygulamada karşımıza çıkar.
Logaritmik fonksiyonlar
Logaritmik fonksiyonlar bu soruyu tersine çevirir. Artık x süre geçtikten sonraki miktarı sormak yerine, %10 bileşik artış varsayımıyla paranızın 200 $'a ulaşması için ne kadar süre beklemeniz gerektiğini bilmek istediğinizi varsayalım.
- Denklemi kurun: 200 = 100 * 1,10x
- Her iki tarafı 100'e bölün: 2 = 1 * 1,10x
Şimdi 2'yi elde etmek için 1,10'un kendisiyle kaç kez çarpılması gerektiğini bilmemiz gerekiyor. Logaritmalar bu soruyu yanıtlar.

Grafiğe baktığımızda, paramızın ikiye katlanması için 7 yıldan biraz fazla zaman alacağını görüyoruz.
Çıkardığımız gibi, logaritmik fonksiyonlar üstel fonksiyonların tersidir. Üstel modeller şu soruları sorar: x ay sonra büyüme oranı nedir? Logaritmik modeller şunu sorar: belirli bir büyüme oranı verildiğinde, oraya ulaşmak kaç ay sürdü?
Veri bilimciler, çarpık bir dağılımı yönetilebilir kılmak için sıklıkla logaritma kullanır. Örneğin, gelir dağılımları genellikle aşırı sağa çarpıktır: birkaç yüksek kazançlı üst kuyruğu uzatır, çoğu insan ise alt uçta kümelenir.

Veriyi, her veri noktasının logaritmasını alarak dönüştürebilirsiniz:

Yüksek gelirler sıkışırken diğer gelirler yayılır. Log dönüşümleri, soruyu mutlak farklardan göreli farklara çevirir. Sonuç olarak, uzun sağ kuyruk çöker ve dağılım genellikle kabaca normal hale gelir. Artık varyans daha stabildir ve doğrusal regresyon uygulayabiliriz.
Logaritma, ikili sınıflandırmada en yaygın kullanılan kayıp fonksiyonlarından biri olan ve tek bir örnek için şu şekilde tanımlanan Çapraz Entropi Kaybı veya log kayıpta merkezi bir rol oynar:

Burada ikili değişken y (0 veya 1) bir örneğin gerçek değeridir ve p, y'nin 1. sınıf olma olasılığına ilişkin tahmindir.
- y, 1 ise kayıp -log(p)'dir; p değeri 0'a yaklaştıkça daha fazla cezalandırır.
- y, 0 ise kayıp -log(1-p)'dir; p değeri 1'e yaklaştıkça daha fazla cezalandırır.
Log kaybı, kendinden emin ama hatalı tahminleri güçlü şekilde cezalandırır. Gerçek etiket 1 iken olasılığı 0'a yakın tahmin etmek (veya tersi) büyük bir cezaya yol açarken, belirsiz tahminler daha küçük cezalar alır. Bu, log kaybını Lojistik Regresyon gibi olasılıksal sınıflandırıcıları eğitmek için uygun kılar.
Doğrusal olmayan aktivasyon fonksiyonları
Aktivasyon fonksiyonları, sinir ağlarında her katmanın çıktısının doğrusal olmamasını sağlamak için kullanılır. Yaygın aktivasyon fonksiyonları sigmoid ve ReLU fonksiyonlarıdır.
Sigmoid fonksiyonu
Sigmoid Fonksiyon, yumuş, S-şekilli bir fonksiyondur ve aşağıdaki formülle tanımlanır:

Herhangi bir gerçek sayıyı girdi olarak alır ve 0 ile 1 arasında kesin bir değer üretir. Ham skorları olasılıklara dönüştürmek için kullanılır.

Sigmoid fonksiyonunun yaygın bir kullanım alanı, ikili sınıflandırma için lojistik regresyondur. Lojistik regresyon, girdilerin doğrusal bir kombinasyonunu hesaplayarak bir skor üretir. Bu skor daha sonra sigmoid fonksiyonuyla bir olasılığa dönüştürülür. Eşik değerinin (genellikle 0,5) üzerindeki olasılıklar 1, altındaki olasılıklar 0 olarak sınıflandırılır.
Bu konuda daha fazlası için Python Lojistik Regresyon ve R ile Lojistik Regresyon eğitimlerimize bakın.
ReLU (doğrultulmuş doğrusal birim)
Rectified Linear Unit (ReLU) fonksiyonu, negatif sayıları 0'a dönüştürür ve pozitif sayıları olduğu gibi bırakır. Şu şekilde tanımlanır:

0'ın üzerindeki değerler için, grafikten de görebileceğiniz gibi özdeş fonksiyonla aynıdır:

Sigmoid fonksiyonunda olduğu gibi, bir Sinir Ağının gizli katmanlarında doğrusal olmayan bir aktivasyon fonksiyonu olarak görev yapar. Ancak hesaplaması basittir; yalnızca maksimum işlemi gerektirir; oysa sigmoid, maliyetli bir üs alma işlev çağrısı gerektirir.
Bir ReLU negatif değerlerin tümünü 0'a ayarladığı için, ağda birçok nöronun sıfırlandığı seyreklik üretir. Bu, gürültüyü azaltabilir ve daha verimli temsillere yol açabilir.
Parçalı fonksiyonlar olarak karar ağaçları
Doğrusal olmayan fonksiyonların bir başka biçimi de karar ağaçlarında bulunur; bunlar, bir durdurma ölçütü sağlanana kadar özellikler ve eşikler üzerinden bölerek girdi uzayını yinelemeli olarak daha küçük bölgelere ayırır.
Ortaya çıkan her yaprak düğümüne bir tahmin değeri atanır. Böylece bir karar ağacı, tanım kümesinin her bölgesinin sabit bir tahmin değerine eşlendiği parçalı bir fonksiyon olarak görülebilir. Birçok yerel kuralı bir araya getirerek karar ağaçları karmaşık desenleri yakalayabilir.
Örneğin, iki boyutlu bir bölgenin şu şekilde bölündüğünü görebilirsiniz:

Bu ısı haritası aşağıdaki bölgelere karşılık gelir:
|
Bölge |
Tanım kümesi parçası |
Fonksiyon değeri |
|
1 |
x1 < 3 ve x2 < 4 |
1 |
|
2 |
x1 < 3 ve x2 >= 4 |
2 |
|
3 |
3 ≤ x1 < 6 ve x2 < 2.5 |
3 |
|
4 |
3 ≤ x1 < 6 ve 2.5 ≤ x2 < 7 |
4 |
|
5 |
3 ≤ x1 < 6 ve x2 ≥ 7 |
5 |
|
6 |
x1 ≥ 6 ve x2 < 5 |
6 |
|
7 |
x1 ≥ 6 ve x2 ≥ 5 |
7 |
Fonksiyon Optimizasyonu
Fonksiyon optimizasyonu, bir fonksiyonu en çoklayan veya en aza indiren girdi değerlerini bulma sürecidir. Örneğin, bir kâr fonksiyonunu en çoklamak veya bir hata fonksiyonunu en aza indirmek isteyebilirsiniz. Fonksiyon optimizasyonunun incelenmesi "yöneylem araştırması" olarak bilinir ve kapsamlı, sürmekte olan büyük bir matematik kuramı bütünüdür.
Fonksiyonları optimize etmek, bir fonksiyonun yerel ve küresel "ekstremumları" (maksimum veya minimum noktaları) ile yakından ilişkilidir. "Yerel minimum", belirli bir aralık içindeki minimumdur; "küresel minimum" ise fonksiyonun genel minimumudur.
Örneğin, f(x) = x4 - 3x2 + x fonksiyonunu düşünün.

İki yerel minimum vardır: biri x yaklaşık -1,30 iken, diğeri ise x yaklaşık 1,13 iken. y değeri x = -1,30 iken daha düşüktür; dolayısıyla bu, fonksiyonun küresel minimumudur.
Tek değişkenli bir fiyatlandırma modelinde kârı en çoklamak gibi basit optimizasyon görevleri için fonksiyonun türevini almak, onu sıfıra eşitlemek ve x için çözmek yeterlidir. Derin sinir ağlarını eğitmek için bu kadar basit değildir; ancak benzer şekilde çalışır.
Derin Öğrenme için en önemli optimizasyon yöntemi Gradyan İnişi'dir. Gradyan, kaybın her parametreye göre nasıl değiştiğini söyleyen eğimin çok boyutlu genellemesidir.
En dik aşağı yöne doğru tekrarlı olarak hareket ederek çalışır. Her adımda, hangi yöne gidileceğine karar vermek için gradyanı ve ne kadar gidileceğine karar vermek için bir adım boyutunu kullanır. Zaman içinde bu süreç, bir yerel minimuma doğru ilerler.
Sonuç
Fonksiyonlar matematikte, programlamada ve veri biliminde her yerde karşımıza çıkar. Makine öğrenimindeki "öğrenme", girdileri çıktılara eşlemek için en iyi fonksiyonu (ve parametrelerini) bulmaktan ibarettir. Artık fonksiyonlar hakkında bilgi sahibi olduğunuza göre, Python veya favori programlama dilinizde birkaç tane kodlayın!
Bu fikirlerin gerçek makine öğrenimi iş akışlarına nasıl oturduğunu görmek için Understanding Machine Learning kursuyla devam edebilirsiniz.
Matematiksel Fonksiyonlar SSS
Matematikte fonksiyon nedir?
Matematiksel bir fonksiyon, her girdiyi tam olarak bir çıktıya eşleyen bir kuraldır.
Neden matematiksel bir fonksiyonun yalnızca bir çıktısı vardır?
Aksi takdirde kural, tanım gereği fonksiyon olmaz; çünkü belirsiz olurdu.
Programlama fonksiyonları matematiksel fonksiyonlarla aynı mıdır?
Tam olarak değil. Programlama fonksiyonlarının yan etkileri olabilir veya hiç faydalı bir değer döndürmeyebilir; bu matematiksel fonksiyonlarda kabul edilmez.
Fonksiyonlar veri bilimi için neden önemlidir?
Çünkü modeller fonksiyondur. Modeller, özellikleri tahminlere, olasılıklara veya skorlara eşler.
Bir fonksiyonun tanım kümesi ve değer kümesi nedir?
Tanım kümesi geçerli girdiler kümesidir. Değer kümesi geçerli çıktılar kümesidir.
Mark Pedigo, PhD, sağlık verisi bilimi, programlama ve eğitim alanlarında uzmanlığa sahip seçkin bir veri bilimcisidir. Matematikte doktora, Bilgisayar Biliminde lisans ve Yapay Zekâ alanında Profesyonel Sertifika sahibi olan Mark, teknik bilgisini pratik problem çözme becerileriyle birleştirir. Kariyeri, dolandırıcılık tespiti, bebek ölümü tahmini ve finansal öngörü gibi rollerin yanı sıra NASA’nın maliyet tahmin yazılımına katkıları içerir. Bir eğitimci olarak DataCamp ve St. Louis’teki Washington University’de ders vermiş ve kıdemsiz programcılara mentorluk yapmıştır. Boş zamanlarında Mark, eşi Mandy ve köpeği Harley ile Minnesota’nın doğasında vakit geçirmeyi ve caz piyano çalmayı sever.

