gépi tanulási algoritmus

Kiejtés

  • IPA: [ ˈɡeːpi ˈtɒnulaːʃi ˈɒlɡoritmuʃ]

Főnév

gépi tanulási algoritmus

  1. (matematika, algoritmusok)

A gépi tanulás (Machine Learning, ML) algoritmusai különböző problémák megoldására alkalmasak, mint például az adatok osztályozása, regresszió, klaszterezés vagy éppen mintázatok felismerése. Az ML algoritmusok három fő kategóriába sorolhatók:

  • Felkügyelt tanulás (Supervised Learning)
  • Felkügyelet nélküli tanulás (Unsupervised Learning)
  • Megerősítéses tanulás (Reinforcement Learning)

Az alábbiakban bemutatom a leggyakrabban használt gépi tanulási algoritmusokat, példákkal együtt.



1. Felügyelt tanulási algoritmusok

Ezek az algoritmusok címkézett adatokkal dolgoznak. Két fő típus: osztályozás (classification) és regresszió (regression).

1.1. Lineáris regresszió

Egyszerű regressziós algoritmus, amely egyenes vonallal modellezi az adatok közötti kapcsolatot.

from sklearn.linear_model import LinearRegression
import numpy as np

# Adatok
X = np.array([[1], [2], [3], [4], [5]])  # Független változó
y = np.array([2, 4, 5, 4, 5])  # Függő változó

# Modell betanítása
model = LinearRegression()
model.fit(X, y)

# Előrejelzés
predicted = model.predict(np.array([[6]]))
print("Előrejelzett érték:", predicted)

1.2. Döntési fa (Decision Tree)

Egy fa-alapú osztályozási algoritmus.

from sklearn.tree import DecisionTreeClassifier

# Adatok
X = [[0, 0], [1, 1], [1, 0], [0, 1]]  # Bemeneti változók
y = [0, 1, 1, 0]  # Célváltozó (osztályok)

# Modell létrehozása és tanítása
model = DecisionTreeClassifier()
model.fit(X, y)

# Osztályozás
prediction = model.predict([[1, 0]])
print("Osztályozás eredménye:", prediction)

1.3. Támogatóvektor-gép (Support Vector Machine, SVM)

Egy hatékony algoritmus osztályozásra és regresszióra, amely egy hipersíkot használ az adatok elválasztására.

from sklearn.svm import SVC

# Adatok
X = [[0, 0], [1, 1], [1, 0], [0, 1]]
y = [0, 1, 1, 0]

# Modell létrehozása és tanítása
model = SVC(kernel='linear')
model.fit(X, y)

# Előrejelzés
prediction = model.predict([[0.8, 0.8]])
print("Osztályozás eredménye:", prediction)

2. Felügyelet nélküli tanulási algoritmusok

Ezek az algoritmusok nem címkézett adatokkal dolgoznak. Céljuk az adatok közötti struktúra vagy mintázat feltárása.

2.1. K-means klaszterezés

Az adatok csoportokba rendezése a távolságuk alapján.

from sklearn.cluster import KMeans
import numpy as np

# Adatok
data = np.array([[1, 2], [2, 3], [3, 4], [8, 8], [9, 9], [10, 10]])

# Modell
kmeans = KMeans(n_clusters=2, random_state=0)
kmeans.fit(data)

# Klaszterek és címkék
print("Klaszter középpontok:", kmeans.cluster_centers_)
print("Címkék:", kmeans.labels_)

2.2. Főkomponens-analízis (PCA)

Dimenziócsökkentési algoritmus.

from sklearn.decomposition import PCA
import numpy as np

# Adatok
data = np.array([[2, 3, 4], [3, 4, 5], [5, 6, 7], [8, 9, 10]])

# PCA
pca = PCA(n_components=2)
reduced_data = pca.fit_transform(data)

print("Csökkentett dimenziójú adatok:\n", reduced_data)

3. Megerősítéses tanulási algoritmusok

Ezek az algoritmusok a környezetből érkező visszacsatolás (jutalom vagy büntetés) alapján tanulnak. Ezek implementációjára leggyakrabban a gym könyvtárat használják.

Példa: Egyszerű Q-learning

Egy egyszerű megerősítéses tanulási példa egy 2D rácsban történő navigációval.

import numpy as np

# Q-táblázat inicializálása
q_table = np.zeros((5, 5, 4))  # Állapotok: 5x5 rács, Akciók: 4 (fel, le, bal, jobb)

# Példa: Q-learning iteráció
state = (0, 0)  # Kezdeti állapot
action = 2  # Példa akció (balra)
reward = -1  # Példa jutalom
next_state = (0, 1)  # Következő állapot

# Q-érték frissítése
alpha = 0.1  # Tanulási ráta
gamma = 0.9  # Jövőbeli jutalom súlya

q_table[state][action] = q_table[state][action] + alpha * (
    reward + gamma * np.max(q_table[next_state]) - q_table[state][action]
)
print("Q-táblázat frissítve:", q_table[state])

4. Neurális hálózatok

A neurális hálózatok mély tanulási (Deep Learning) algoritmusok alapjai.

4.1. Egyszerű neurális hálózat (Keras)

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
import numpy as np

# Adatok
X = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])
y = np.array([0, 1, 1, 0])  # XOR probléma

# Modell létrehozása
model = Sequential([
    Dense(4, input_dim=2, activation='relu'),
    Dense(1, activation='sigmoid')
])

# Modell fordítása és tanítása
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
model.fit(X, y, epochs=100, verbose=0)

# Előrejelzés
prediction = model.predict([[1, 0]])
print("Előrejelzés:", prediction)

Fordítások