0
0
Lập trình
Flame Kris
Flame Krisbacodekiller

Hiểu Biết Về Các Mô Hình Học Máy

Đăng vào 5 tháng trước

• 9 phút đọc

Giới Thiệu

Học máy (Machine Learning - ML) đã trở thành một trong những công nghệ quan trọng nhất thúc đẩy sự đổi mới trong thế giới ngày nay. Từ kết quả tìm kiếm trên Google đến các gợi ý của Netflix, phát hiện spam trong email, công cụ chẩn đoán y tế và xe tự lái, các mô hình học máy là trái tim của trí tuệ nhân tạo hiện đại.

Bài viết này là một hướng dẫn toàn diện về các mô hình học máy. Chúng ta sẽ cùng tìm hiểu mô hình học máy là gì, các loại mô hình khác nhau, khi nào nên sử dụng chúng, các thực hành tốt nhất và cung cấp các ví dụ mã Python để bạn có thể bắt đầu thử nghiệm ngay lập tức.

Mô Hình Học Máy Là Gì?

Mô hình học máy là một đại diện toán học hoặc tính toán của một quá trình trong thế giới thực mà học từ dữ liệu. Thay vì bị lập trình một cách rõ ràng với các hướng dẫn từng bước, một mô hình ML được đào tạo trên dữ liệu trong quá khứ để xác định các mẫu và mối quan hệ, và sau đó nó sử dụng kiến thức đã học được để đưa ra dự đoán trên dữ liệu mới, chưa thấy.

Ví Dụ:

  • Một mô hình phân loại có thể dự đoán xem một email có phải là spam hay không.
  • Một mô hình hồi quy có thể dự đoán giá của một ngôi nhà dựa trên kích thước và vị trí của nó.
  • Một mô hình phân cụm có thể nhóm các khách hàng có thói quen mua sắm tương tự.
  • Một mô hình học tăng cường có thể đào tạo một robot để đi bộ bằng cách thưởng cho các chuyển động thành công.

Cốt lõi của mọi mô hình ML là về đầu vào → biến đổi → đầu ra. Mô hình biến đổi dữ liệu thô thành các dự đoán.

Các Loại Mô Hình Học Máy

Các mô hình học máy rơi vào ba loại chính:

  1. Học có giám sát (Supervised Learning) – mô hình học từ dữ liệu được gán nhãn (đầu vào + đầu ra đúng).
  2. Học không giám sát (Unsupervised Learning) – mô hình tìm kiếm các mẫu trong dữ liệu chưa được gán nhãn.
  3. Học tăng cường (Reinforcement Learning) – mô hình học qua thử nghiệm và sai lầm thông qua phần thưởng và hình phạt.

Chúng ta hãy khám phá từng loại một cách chi tiết với các ví dụ.

1. Mô Hình Học Có Giám Sát

Học có giám sát là loại học máy phổ biến nhất. Ở đây, tập dữ liệu chứa cả các đặc trưng đầu vào (X) và nhãn đầu ra (y). Mô hình học cách ánh xạ từ đầu vào đến đầu ra.

Ví Dụ Về Các Nhiệm Vụ Học Có Giám Sát:

  • Phân loại: Dự đoán các thể loại rời rạc (spam/không spam, bệnh/không bệnh).
  • Hồi quy: Dự đoán các giá trị liên tục (giá nhà, dự báo doanh số).

Ví Dụ: Hồi Quy Tuyến Tính

Hồi quy tuyến tính là một trong những mô hình ML đơn giản nhất. Nó cố gắng phù hợp một đường thẳng để đại diện tốt nhất cho mối quan hệ giữa các đặc trưng đầu vào và biến mục tiêu.

python Copy
import numpy as np  
import matplotlib.pyplot as plt  
from sklearn.linear_model import LinearRegression

# Dữ liệu ví dụ
X = np.array([[1], [2], [3], [4], [5]])  
y = np.array([2, 4, 5, 4, 5])

# Đào tạo mô hình
model = LinearRegression()  
model.fit(X, y)

# Dự đoán
predictions = model.predict(X)

# Minh họa
plt.scatter(X, y, color="blue")  
plt.plot(X, predictions, color="red")  
plt.title("Ví Dụ Hồi Quy Tuyến Tính")  
plt.show()

print("Dự đoán:", predictions)

Ví dụ này phù hợp với một đường thẳng qua các điểm. Mô hình sau đó có thể dự đoán các giá trị mới, chẳng hạn như đầu ra dự kiến cho X=6.

Ví Dụ: Hồi Quy Logistic

Mặc dù có tên là hồi quy logistic, nhưng nó được sử dụng cho các bài toán phân loại. Nó xuất ra xác suất mà được ánh xạ đến các lớp.

python Copy
from sklearn.datasets import load_iris  
from sklearn.linear_model import LogisticRegression  
from sklearn.model_selection import train_test_split  
from sklearn.metrics import accuracy_score

# Tải tập dữ liệu
iris = load_iris()  
X = iris.data  
y = iris.target

# Chia thành tập huấn luyện và kiểm tra
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# Đào tạo mô hình
clf = LogisticRegression(max_iter=200)  
clf.fit(X_train, y_train)

# Dự đoán

y_pred = clf.predict(X_test)

print("Độ chính xác:", accuracy_score(y_test, y_pred))

Mô hình này dự đoán loài hoa dựa trên các kích thước cánh hoa và đài hoa.

Cây Quyết Định

Cây quyết định chia nhỏ dữ liệu dựa trên giá trị đặc trưng thành các nhánh dẫn đến các dự đoán. Chúng dễ hiểu và được sử dụng rộng rãi trong tài chính, chăm sóc sức khỏe và các hệ thống gợi ý.

python Copy
from sklearn.datasets import load_wine  
from sklearn.tree import DecisionTreeClassifier  
from sklearn.model_selection import train_test_split  
from sklearn.metrics import classification_report

# Tải dữ liệu
wine = load_wine()  
X = wine.data  
y = wine.target

# Chia
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# Đào tạo
clf = DecisionTreeClassifier()  
clf.fit(X_train, y_train)

# Dự đoán

y_pred = clf.predict(X_test)

print(classification_report(y_test, y_pred))

Máy Vector Hỗ Trợ (SVM)

SVM hoạt động bằng cách tìm ra mặt phẳng tốt nhất phân tách các điểm dữ liệu của các lớp khác nhau.

python Copy
from sklearn import datasets  
from sklearn.svm import SVC  
import matplotlib.pyplot as plt

# Tải tập dữ liệu
X, y = datasets.make_classification(n_samples=100, n_features=2, n_classes=2, random_state=42)

# Đào tạo SVM
model = SVC(kernel="linear")  
model.fit(X, y)

# Vẽ biểu đồ
plt.scatter(X[:, 0], X[:, 1], c=y, cmap="coolwarm")  
plt.title("Ví Dụ Phân Loại SVM")  
plt.show()

2. Mô Hình Học Không Giám Sát

Học không giám sát xử lý dữ liệu chưa được gán nhãn. Mô hình khám phá các cấu trúc, cụm hoặc mẫu ẩn.

Ví Dụ: Phân Cụm K-Means

K-Means nhóm các điểm dữ liệu thành k cụm.

python Copy
from sklearn.cluster import KMeans  
import numpy as np  
import matplotlib.pyplot as plt

# Các điểm dữ liệu
X = np.array([[1, 2], [1, 4], [1, 0],  
[4, 2], [4, 4], [4, 0]])

# Đào tạo KMeans
kmeans = KMeans(n_clusters=2, random_state=0).fit(X)

# Vẽ biểu đồ
plt.scatter(X[:, 0], X[:, 1], c=kmeans.labels_, cmap="viridis")  
plt.scatter(kmeans.cluster_centers_[:, 0],  
kmeans.cluster_centers_[:, 1],  
s=200, c="red", marker="X")  
plt.title("Ví Dụ Phân Cụm K-Means")  
plt.show()

Ví Dụ: Phân Tích Thành Phần Chính (PCA)

PCA giảm dữ liệu có nhiều chiều thành ít chiều hơn trong khi vẫn bảo tồn phương sai.

python Copy
from sklearn.decomposition import PCA  
from sklearn.datasets import load_digits  
import matplotlib.pyplot as plt

digits = load_digits()  
X = digits.data

# Giảm chiều xuống 2
pca = PCA(2)  
X_projected = pca.fit_transform(X)

plt.scatter(X_projected[:, 0], X_projected[:, 1],  
c=digits.target, cmap="Spectral", s=10)  
plt.colorbar()  
plt.title("Minh Họa PCA của Tập Dữ Liệu Chữ Số")  
plt.show()

3. Mô Hình Học Tăng Cường

Học có giám sát và không giám sát không giống như học tăng cường (RL). Một tác nhân trong RL thu thập kiến thức bằng cách tương tác với môi trường xung quanh. Mục tiêu là tối đa hóa phần thưởng tích lũy khi tác nhân thực hiện các hoạt động và nhận thưởng.

Ví Dụ:

  • Xe tự lái
  • AI chơi game (như AlphaGo)
  • Robotics

Ví Dụ: Q-Learning (Đơn Giản)

python Copy
import numpy as np

# Môi trường đơn giản
states = [0, 1, 2, 3, 4] # vị trí  
actions = [0, 1] # trái hoặc phải  
Q = np.zeros((len(states), len(actions))) # Bảng Q

alpha = 0.1 # tỷ lệ học  
gamma = 0.9 # hệ số giảm giá  
epsilon = 0.2 # tỷ lệ khám phá

# Mô phỏng các tập
for episode in range(1000):  
state = np.random.choice(states[:-1]) # bắt đầu ngẫu nhiên  
while state != 4: # trạng thái mục tiêu  
if np.random.rand() < epsilon:  
action = np.random.choice(actions)  
else:  
action = np.argmax(Q[state])

    # Chuyển tiếp
    next_state = state + 1 if action == 1 else max(0, state - 1)
    reward = 1 if next_state == 4 else 0

    # Cập nhật Q
    Q[state, action] = Q[state, action] + alpha * (
        reward + gamma * np.max(Q[next_state]) - Q[state, action]
    )
    state = next_state

print("Bảng Q đã học:")  
print(Q)

Đây là một ví dụ đơn giản nơi một tác nhân học cách đạt được trạng thái mục tiêu.

Đánh Giá Các Mô Hình Học Máy

Việc chọn đúng chỉ số là rất quan trọng:

  • Phân loại: Độ chính xác, Độ chính xác dương tính (Precision), Độ nhạy (Recall), Điểm F1, ROC-AUC.
  • Hồi quy: Sai số bình phương trung bình (MSE), Căn bậc hai của sai số bình phương trung bình (RMSE), Điểm R².
  • Phân cụm: Điểm Silhouette, chỉ số Davies–Bouldin.

Ví Dụ Đánh Giá:

python Copy
from sklearn.metrics import accuracy_score, confusion_matrix

print("Độ chính xác:", accuracy_score(y_test, y_pred))  
print("Ma trận nhầm lẫn:\n", confusion_matrix(y_test, y_pred))

Tinh Chỉnh Siêu Tham Số

Các mô hình ML thường có các tham số (như tỷ lệ học, độ sâu cây, số lượng cụm). Tinh chỉnh siêu tham số tìm ra các giá trị tốt nhất.

Ví Dụ: Tìm Kiếm Lưới

python Copy
from sklearn.model_selection import GridSearchCV  
from sklearn.svm import SVC

parameters = {'kernel':('linear', 'rbf'), 'C':[1, 10]}  
svc = SVC()  
clf = GridSearchCV(svc, parameters)  
clf.fit(X_train, y_train)

print("Tham số tốt nhất:", clf.best_params_)

Triển Khai Các Mô Hình Học Máy

Khi đã được đào tạo, các mô hình ML có thể được triển khai vào sản xuất. Các tùy chọn bao gồm:

  • Flask / FastAPI – triển khai như một REST API.
  • TensorFlow Serving – hệ thống phục vụ ML có khả năng mở rộng.
  • ONNX – định dạng mở cho tính di động của mô hình.

Ví Dụ: API Flask

python Copy
from flask import Flask, request, jsonify  
import joblib

app = Flask(__name__)  
model = joblib.load("model.pkl")

@app.route('/predict', methods=['POST'])  
def predict():  
    data = request.json  
    prediction = model.predict([data["features"]])  
    return jsonify({"prediction": prediction.tolist()})

if __name__ == '__main__':  
    app.run()

Thực Hành Tốt Nhất Cho Các Mô Hình Học Máy

  • Thu thập dữ liệu chất lượng cao, đại diện.
  • Tiền xử lý và làm sạch dữ liệu trước khi đào tạo.
  • Sử dụng kỹ thuật khai thác đặc trưng để cải thiện hiệu suất.
  • Chia dữ liệu thành các tập huấn luyện, kiểm tra và xác thực.
  • Ngăn ngừa hiện tượng overfitting bằng cách sử dụng regularization hoặc dropout.
  • Liên tục giám sát các mô hình trong sản xuất.

Kết Luận

Các mô hình học máy là động cơ phía sau trí tuệ nhân tạo hiện đại. Dù bạn đang xây dựng một mô hình hồi quy tuyến tính để dự đoán, một mô hình phân cụm để phát hiện mẫu, hay một tác nhân học tăng cường, điều quan trọng là hiểu công cụ nào là đúng cho công việc.

Với các thư viện Python như scikit-learn, TensorFlow và PyTorch, việc bắt đầu thử nghiệm với các mô hình ML trở nên dễ dàng hơn bao giờ hết. Bằng cách thực hành với các tập dữ liệu, tinh chỉnh các mô hình và cuối cùng triển khai chúng vào các ứng dụng thực tế, bạn có thể tận dụng sức mạnh của học máy để giải quyết các vấn đề trong thế giới thực.

Liên Kết Tham Khảo:

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào