En aquest tema, explorarem els diferents tipus d'algoritmes de Machine Learning (ML) que s'utilitzen per resoldre problemes reals. Els algoritmes de ML es poden classificar en diverses categories segons el tipus d'aprenentatge que utilitzen i el tipus de problema que resolen. A continuació, veurem les categories principals i alguns dels algoritmes més populars dins de cada categoria.
- Classificació d'Algoritmes de Machine Learning
1.1. Algoritmes Supervisats
Els algoritmes supervisats aprenen d'un conjunt de dades etiquetades, on cada exemple d'entrenament està associat amb una etiqueta o resultat desitjat.
Exemples d'algoritmes supervisats:
- Regressió Lineal
- Regressió Logística
- K-Nearest Neighbors (KNN)
- Suport Vector Machines (SVM)
- Àrbre de Decisió
- Random Forest
- Gradient Boosting Machines (GBM)
1.2. Algoritmes No Supervisats
Els algoritmes no supervisats treballen amb dades no etiquetades i intenten trobar estructures ocultes o patrons dins de les dades.
Exemples d'algoritmes no supervisats:
- K-Means Clustering
- Hierarchical Clustering
- Principal Component Analysis (PCA)
- Independent Component Analysis (ICA)
- Aprenentatge d'Associació (Apriori, Eclat)
1.3. Algoritmes Semi-Supervisats
Els algoritmes semi-supervisats utilitzen una combinació de dades etiquetades i no etiquetades per millorar l'aprenentatge.
1.4. Algoritmes d'Aprenentatge per Reforç
Els algoritmes d'aprenentatge per reforç aprenen a través de l'experiència, on un agent pren accions en un entorn per maximitzar una recompensa acumulada.
Exemples d'algoritmes d'aprenentatge per reforç:
- Q-Learning
- Deep Q-Networks (DQN)
- Proximal Policy Optimization (PPO)
- Algoritmes Supervisats
2.1. Regressió Lineal
La regressió lineal és un mètode per modelar la relació entre una variable dependent i una o més variables independents.
from sklearn.linear_model import LinearRegression # Exemple de codi per a regressió lineal X = [[1], [2], [3], [4], [5]] y = [1, 2, 3, 4, 5] model = LinearRegression() model.fit(X, y) predictions = model.predict([[6]]) print(predictions) # Sortida esperada: [6.0]
2.2. Regressió Logística
La regressió logística s'utilitza per a problemes de classificació binària.
from sklearn.linear_model import LogisticRegression # Exemple de codi per a regressió logística X = [[0], [1], [2], [3], [4], [5]] y = [0, 0, 0, 1, 1, 1] model = LogisticRegression() model.fit(X, y) predictions = model.predict([[2.5]]) print(predictions) # Sortida esperada: [0]
2.3. K-Nearest Neighbors (KNN)
KNN és un algoritme de classificació que classifica un punt de dades basant-se en la seva proximitat als punts de dades més propers.
from sklearn.neighbors import KNeighborsClassifier # Exemple de codi per a KNN X = [[0], [1], [2], [3], [4], [5]] y = [0, 0, 0, 1, 1, 1] model = KNeighborsClassifier(n_neighbors=3) model.fit(X, y) predictions = model.predict([[2.5]]) print(predictions) # Sortida esperada: [0]
2.4. Suport Vector Machines (SVM)
SVM és un algoritme de classificació que troba l'hiperplà que millor separa les classes en un espai de característiques.
from sklearn.svm import SVC # Exemple de codi per a SVM X = [[0], [1], [2], [3], [4], [5]] y = [0, 0, 0, 1, 1, 1] model = SVC(kernel='linear') model.fit(X, y) predictions = model.predict([[2.5]]) print(predictions) # Sortida esperada: [0]
2.5. Àrbre de Decisió
Un arbre de decisió és un model predictiu que utilitza un arbre de decisions per prendre decisions basades en les característiques de les dades.
from sklearn.tree import DecisionTreeClassifier # Exemple de codi per a Àrbre de Decisió X = [[0], [1], [2], [3], [4], [5]] y = [0, 0, 0, 1, 1, 1] model = DecisionTreeClassifier() model.fit(X, y) predictions = model.predict([[2.5]]) print(predictions) # Sortida esperada: [0]
2.6. Random Forest
Random Forest és un conjunt d'arbres de decisió que millora la precisió i redueix el sobreajustament.
from sklearn.ensemble import RandomForestClassifier # Exemple de codi per a Random Forest X = [[0], [1], [2], [3], [4], [5]] y = [0, 0, 0, 1, 1, 1] model = RandomForestClassifier(n_estimators=10) model.fit(X, y) predictions = model.predict([[2.5]]) print(predictions) # Sortida esperada: [0]
2.7. Gradient Boosting Machines (GBM)
GBM és un conjunt d'algoritmes de boosting que combinen diversos models febles per crear un model fort.
from sklearn.ensemble import GradientBoostingClassifier # Exemple de codi per a GBM X = [[0], [1], [2], [3], [4], [5]] y = [0, 0, 0, 1, 1, 1] model = GradientBoostingClassifier(n_estimators=10) model.fit(X, y) predictions = model.predict([[2.5]]) print(predictions) # Sortida esperada: [0]
- Algoritmes No Supervisats
3.1. K-Means Clustering
K-Means és un algoritme de clustering que agrupa les dades en K clústers basant-se en la seva similitud.
from sklearn.cluster import KMeans # Exemple de codi per a K-Means X = [[1, 2], [1, 4], [1, 0], [10, 2], [10, 4], [10, 0]] model = KMeans(n_clusters=2) model.fit(X) predictions = model.predict([[0, 0], [12, 3]]) print(predictions) # Sortida esperada: [0, 1]
3.2. Hierarchical Clustering
Hierarchical Clustering és un mètode de clustering que construeix una jerarquia de clústers.
from scipy.cluster.hierarchy import dendrogram, linkage import matplotlib.pyplot as plt # Exemple de codi per a Hierarchical Clustering X = [[1, 2], [1, 4], [1, 0], [10, 2], [10, 4], [10, 0]] Z = linkage(X, 'ward') dendrogram(Z) plt.show()
3.3. Principal Component Analysis (PCA)
PCA és una tècnica de reducció de dimensionalitat que transforma les dades a un nou espai de característiques de menor dimensió.
from sklearn.decomposition import PCA # Exemple de codi per a PCA X = [[1, 2], [1, 4], [1, 0], [10, 2], [10, 4], [10, 0]] model = PCA(n_components=1) X_reduced = model.fit_transform(X) print(X_reduced)
- Algoritmes d'Aprenentatge per Reforç
4.1. Q-Learning
Q-Learning és un algoritme d'aprenentatge per reforç que aprèn una política per maximitzar la recompensa acumulada.
import numpy as np # Exemple de codi per a Q-Learning # Definició de l'entorn states = ["A", "B", "C", "D"] actions = ["left", "right"] rewards = { ("A", "left"): 1, ("A", "right"): 0, ("B", "left"): 0, ("B", "right"): 1, ("C", "left"): 1, ("C", "right"): 0, ("D", "left"): 0, ("D", "right"): 1, } # Inicialització de la taula Q Q = np.zeros((len(states), len(actions))) # Paràmetres alpha = 0.1 # Taxa d'aprenentatge gamma = 0.9 # Factor de descompte epsilon = 0.1 # Taxa d'exploració # Algoritme de Q-Learning for episode in range(1000): state = np.random.choice(states) while state != "D": if np.random.uniform(0, 1) < epsilon: action = np.random.choice(actions) else: action = actions[np.argmax(Q[states.index(state)])] next_state = "B" if action == "right" else "A" reward = rewards[(state, action)] Q[states.index(state), actions.index(action)] = Q[states.index(state), actions.index(action)] + alpha * (reward + gamma * np.max(Q[states.index(next_state)]) - Q[states.index(state), actions.index(action)]) state = next_state print(Q)
Exercicis Pràctics
Exercici 1: Implementació de Regressió Lineal
Implementa un model de regressió lineal utilitzant un conjunt de dades sintètic i avalua el seu rendiment.
Exercici 2: Clustering amb K-Means
Utilitza l'algoritme K-Means per agrupar un conjunt de dades i visualitza els resultats.
Exercici 3: Q-Learning en un Entorn Simulat
Implementa l'algoritme Q-Learning en un entorn simulat i avalua la política aprenent.
Conclusió
En aquest tema, hem explorat diversos algoritmes de Machine Learning, incloent algoritmes supervisats, no supervisats i d'aprenentatge per reforç. Hem vist exemples pràctics de com implementar aquests algoritmes utilitzant Python i biblioteques com scikit-learn. Els exercicis pràctics proporcionats us ajudaran a consolidar els conceptes apresos i a aplicar-los a problemes reals.
Fonaments d'Intel·ligència Artificial (IA)
Mòdul 1: Introducció a la Intel·ligència Artificial
Mòdul 2: Principis Bàsics de la IA
Mòdul 3: Algoritmes en IA
Mòdul 4: Aprenentatge Automàtic (Machine Learning)
- Conceptes Bàsics de Machine Learning
- Tipus d'Aprenentatge Automàtic
- Algoritmes de Machine Learning
- Avaluació i Validació de Models
Mòdul 5: Xarxes Neuronals i Deep Learning
- Introducció a les Xarxes Neuronals
- Arquitectura de Xarxes Neuronals
- Deep Learning i les seves Aplicacions