Thuật Toán Học Máy: Hướng Dẫn Toàn Diện Cho Phỏng Vấn Kỹ Thuật 2026
Nắm vững các thuật toán học máy cốt lõi được kiểm tra trong phỏng vấn kỹ thuật năm 2026. Bao gồm học có giám sát, học không giám sát, phương pháp ensemble, chỉ số đánh giá và chính quy hóa với các triển khai Python thực tế.

Các thuật toán học máy là nền tảng của mọi buổi phỏng vấn kỹ thuật trong lĩnh vực khoa học dữ liệu năm 2026. Dù vị trí ứng tuyển là junior data scientist hay senior ML engineer, người phỏng vấn đều kỳ vọng ứng viên có thể giải thích, triển khai và so sánh các nhóm thuật toán cốt lõi — từ mô hình tuyến tính đến phương pháp ensemble và các kỹ thuật học không giám sát. Bài viết này đi sâu vào từng nhóm thuật toán chính với các triển khai Python sử dụng scikit-learn 1.8, chiến lược đánh giá và những đánh đổi quan trọng giúp ứng viên nổi bật trong vòng phỏng vấn.
Các thuật toán học máy được chia thành ba nhóm chính: học có giám sát (hồi quy, phân loại), học không giám sát (phân cụm, giảm chiều dữ liệu) và học tăng cường. Phỏng vấn kỹ thuật năm 2026 tập trung chủ yếu vào hai nhóm đầu, với trọng tâm là khả năng lựa chọn thuật toán phù hợp và đánh giá kết quả một cách thực tế.
Học Có Giám Sát: Hồi Quy và Phân Loại
Học có giám sát là nhóm thuật toán học từ dữ liệu được gán nhãn — mỗi mẫu huấn luyện bao gồm đầu vào và đầu ra kỳ vọng. Hồi quy dự đoán giá trị liên tục (giá nhà, nhiệt độ), trong khi phân loại gán nhãn rời rạc (thư rác hay không, chẩn đoán bệnh). Hiểu rõ cả hai dạng bài toán là yêu cầu bắt buộc trong các cuộc phỏng vấn khoa học dữ liệu.
Hồi quy tuyến tính là điểm xuất phát cho mọi bài toán hồi quy. Thuật toán mô hình hóa mối quan hệ giữa các đặc trưng và biến mục tiêu dưới dạng tổng có trọng số. Người phỏng vấn thường yêu cầu ứng viên triển khai thuật toán này, giải thích hàm chi phí và thảo luận về các trường hợp thuật toán mất tác dụng.
# linear_regression_demo.py
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error, r2_score
# Generate synthetic housing data: square footage -> price
np.random.seed(42)
sqft = np.random.uniform(500, 3000, size=200).reshape(-1, 1)
price = 150 * sqft.flatten() + np.random.normal(0, 20000, size=200)
X_train, X_test, y_train, y_test = train_test_split(sqft, price, test_size=0.2)
model = LinearRegression()
model.fit(X_train, y_train) # Fit on training data
predictions = model.predict(X_test) # Predict on unseen data
print(f"Coefficient: {model.coef_[0]:.2f}") # Weight per sqft
print(f"R2 Score: {r2_score(y_test, predictions):.4f}")
print(f"RMSE: {np.sqrt(mean_squared_error(y_test, predictions)):.2f}")Hệ số (coefficient) cho biết mỗi foot vuông bổ sung đóng góp bao nhiêu vào giá trị dự đoán. Điểm R2 và RMSE đo lường chất lượng dự đoán — hai chỉ số mà người phỏng vấn kỳ vọng ứng viên diễn giải được ngay lập tức.
Đối với bài toán phân loại, hồi quy logistic áp dụng hàm sigmoid để tạo ra xác suất. Mặc dù tên gọi là "hồi quy", thuật toán này giải quyết bài toán phân loại. Ranh giới quyết định, tham số chính quy hóa C và sự khác biệt giữa phân loại nhị phân với đa lớp đều là chủ đề phỏng vấn phổ biến.
# logistic_classification.py
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report
data = load_breast_cancer() # Binary classification dataset
X_train, X_test, y_train, y_test = train_test_split(
data.data, data.target, test_size=0.2, random_state=42
)
clf = LogisticRegression(max_iter=5000, C=1.0) # C controls regularization strength
clf.fit(X_train, y_train)
y_pred = clf.predict(X_test)
print(classification_report(y_test, y_pred, target_names=data.target_names))Báo cáo phân loại hiển thị precision, recall và F1-score theo từng lớp — đúng những chỉ số sẽ được thảo luận chi tiết trong phần tiếp theo. Việc đọc hiểu báo cáo này một cách thành thạo sẽ tạo ấn tượng tốt với người phỏng vấn.
Cây Quyết Định và Phương Pháp Ensemble
Cây quyết định phân chia dữ liệu đệ quy dựa trên ngưỡng đặc trưng. Khi đứng riêng lẻ, cây quyết định dễ bị overfitting. Phương pháp ensemble — Random Forest và Gradient Boosting — giải quyết vấn đề này bằng cách kết hợp nhiều cây. Các thuật toán này xuất hiện trong hầu hết mọi buổi phỏng vấn ML vì chúng cân bằng giữa khả năng diễn giải và hiệu suất.
Random Forest xây dựng nhiều cây độc lập trên các mẫu bootstrap và lấy trung bình kết quả dự đoán. Cách tiếp cận này giảm variance mà không tăng bias. Câu hỏi phỏng vấn về cây quyết định và ensemble thường kiểm tra sự hiểu biết về bagging so với boosting, tầm quan trọng của đặc trưng và ước tính lỗi out-of-bag.
# ensemble_comparison.py
from sklearn.ensemble import RandomForestClassifier, GradientBoostingClassifier
from sklearn.model_selection import cross_val_score
from sklearn.datasets import load_wine
X, y = load_wine(return_X_y=True)
# Random Forest: parallel trees, reduces variance
rf = RandomForestClassifier(n_estimators=100, max_depth=5, random_state=42)
rf_scores = cross_val_score(rf, X, y, cv=5, scoring='accuracy')
# Gradient Boosting: sequential trees, reduces bias
gb = GradientBoostingClassifier(n_estimators=100, learning_rate=0.1, max_depth=3)
gb_scores = cross_val_score(gb, X, y, cv=5, scoring='accuracy')
print(f"Random Forest: {rf_scores.mean():.4f} +/- {rf_scores.std():.4f}")
print(f"Gradient Boosting: {gb_scores.mean():.4f} +/- {gb_scores.std():.4f}")Random Forest nổi bật khi mục tiêu là sự ổn định và ít điều chỉnh tham số. Gradient Boosting thường đạt độ chính xác cao hơn nhưng đòi hỏi lựa chọn siêu tham số cẩn thận — learning rate, số lượng estimator và độ sâu cây đều tương tác với nhau. Người phỏng vấn kiểm tra xem ứng viên có hiểu được sự đánh đổi này hay không, không chỉ đơn thuần là con số nào lớn hơn.
| Tiêu chí | Random Forest | Gradient Boosting | |----------|--------------|-------------------| | Tốc độ huấn luyện | Nhanh (song song) | Chậm hơn (tuần tự) | | Rủi ro overfitting | Thấp | Cao hơn nếu không tinh chỉnh | | Độ nhạy siêu tham số | Thấp | Cao | | Tầm quan trọng đặc trưng | Tích hợp sẵn (dựa trên impurity) | Tích hợp sẵn (dựa trên gain) | | Phù hợp nhất | Mô hình baseline, dữ liệu nhiễu | Thi đấu, dữ liệu dạng bảng |
Học Không Giám Sát: Phân Cụm và Giảm Chiều Dữ Liệu
Các thuật toán học không giám sát tìm cấu trúc ẩn trong dữ liệu chưa được gán nhãn. K-Means và PCA (Phân tích thành phần chính) là hai kỹ thuật được hỏi nhiều nhất trong phỏng vấn. Nắm vững cả hai là điều kiện cần thiết để vượt qua vòng phỏng vấn về học không giám sát.
K-Means phân vùng dữ liệu thành k cụm bằng cách tối thiểu hóa phương sai trong từng cụm. Thuật toán lặp đi lặp lại giữa việc gán điểm dữ liệu vào centroid gần nhất và cập nhật centroid. Hai câu hỏi phỏng vấn quan trọng: cách chọn k (phương pháp elbow, điểm silhouette) và điều gì xảy ra với các cụm không có hình cầu.
# kmeans_clustering.py
from sklearn.cluster import KMeans
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import silhouette_score
from sklearn.datasets import load_iris
data = load_iris()
X = StandardScaler().fit_transform(data.data) # Scale features first
# Test multiple values of k to find optimal cluster count
for k in [2, 3, 4, 5]:
kmeans = KMeans(n_clusters=k, n_init=10, random_state=42)
labels = kmeans.fit_predict(X)
sil = silhouette_score(X, labels) # Higher = better-defined clusters
inertia = kmeans.inertia_ # Within-cluster sum of squares
print(f"k={k}: silhouette={sil:.3f}, inertia={inertia:.1f}")Chuẩn hóa đặc trưng trước khi phân cụm là bắt buộc — K-Means sử dụng khoảng cách Euclidean, nên các đặc trưng chưa chuẩn hóa có phạm vi lớn sẽ chi phối chỉ số này. Chi tiết này xuất hiện thường xuyên trong phỏng vấn.
PCA giảm chiều dữ liệu bằng cách chiếu dữ liệu lên các hướng có phương sai lớn nhất. Kỹ thuật này phục vụ hai mục đích: trực quan hóa (chiếu xuống 2D/3D) và tiền xử lý (loại bỏ nhiễu, tăng tốc mô hình downstream). Người phỏng vấn kỳ vọng ứng viên giải thích được tỷ lệ phương sai giải thích và cách chọn số lượng thành phần.
PCA hoạt động tốt nhất khi các đặc trưng có tương quan với nhau và tín hiệu tập trung ở một vài hướng. Với dữ liệu thưa, chiều cao (văn bản, danh mục one-hot), PCA có thể phá hủy cấu trúc hữu ích. Truncated SVD hoặc các embedding chuyên biệt hoạt động tốt hơn trong những trường hợp đó.
Sẵn sàng chinh phục phỏng vấn Data Science & ML?
Luyện tập với mô phỏng tương tác, flashcards và bài kiểm tra kỹ thuật.
Các Chỉ Số Đánh Giá Mô Hình Mà Ứng Viên Cần Nắm Vững
Việc chọn đúng chỉ số đánh giá quan trọng hơn việc chọn đúng thuật toán. Mô hình đạt 99% accuracy trên dữ liệu mất cân bằng (tỷ lệ gian lận 1%) có thể vô dụng — nó chỉ đơn giản dự đoán "không gian lận" mọi lúc. Người phỏng vấn sử dụng câu hỏi về chỉ số để kiểm tra khả năng phán đoán thực tế.
Đối với bài toán phân loại, bốn chỉ số chiếm ưu thế trong phỏng vấn:
- Precision: trong tổng số dự đoán dương tính, bao nhiêu là đúng? Quan trọng khi false positive tốn kém (lọc thư rác)
- Recall: trong tổng số dương tính thực sự, bao nhiêu được tìm thấy? Quan trọng khi false negative tốn kém (chẩn đoán bệnh)
- F1-Score: trung bình điều hòa của precision và recall — lựa chọn cân bằng khi không có loại lỗi nào rõ ràng chiếm ưu thế
- AUC-ROC: đo lường chất lượng xếp hạng trên tất cả các ngưỡng phân loại — cần thiết khi so sánh các mô hình
Đối với hồi quy, các chỉ số chính là RMSE (phạt nặng lỗi lớn), MAE (bền vững với ngoại lệ) và R2 (tỷ lệ phương sai được giải thích). Biết khi nào ưu tiên MAE hơn RMSE — hoặc ngược lại — cho thấy sự hiểu biết sâu sắc thực sự.
# evaluation_metrics.py
from sklearn.metrics import (
precision_score, recall_score, f1_score,
roc_auc_score, confusion_matrix
)
import numpy as np
# Simulated predictions on imbalanced data (5% positive class)
np.random.seed(42)
y_true = np.array([1]*50 + [0]*950)
y_pred = np.array([1]*40 + [0]*10 + [1]*30 + [0]*920) # Some errors
print(f"Precision: {precision_score(y_true, y_pred):.3f}") # 40/(40+30) = 0.571
print(f"Recall: {recall_score(y_true, y_pred):.3f}") # 40/(40+10) = 0.800
print(f"F1-Score: {f1_score(y_true, y_pred):.3f}") # Harmonic mean
cm = confusion_matrix(y_true, y_pred)
print(f"\nConfusion Matrix:\n{cm}")
# [[920, 30], -> TN=920, FP=30
# [10, 40]] -> FN=10, TP=40Đọc ma trận nhầm lẫn (confusion matrix) đúng cách đòi hỏi thực hành. Ô trên-trái (true negative) và ô dưới-phải (true positive) biểu diễn dự đoán đúng. Các ô lệch đường chéo thể hiện hai loại lỗi. Người phỏng vấn thường đưa ra một confusion matrix và yêu cầu ứng viên tính precision và recall từ đó.
Đánh Đổi Bias-Variance và Chiến Lược Chính Quy Hóa
Sự đánh đổi bias-variance là khái niệm lý thuyết quan trọng nhất trong học máy. Bias cao đồng nghĩa với mô hình quá đơn giản và bị underfitting. Variance cao đồng nghĩa với mô hình quá phức tạp và bị overfitting. Mọi lựa chọn thuật toán và quyết định siêu tham số đều liên quan đến việc điều hướng sự đánh đổi này.
Chính quy hóa kiểm soát độ phức tạp của mô hình bằng cách phạt các hệ số lớn. Ridge regression (L2) co hệ số về phía không nhưng giữ tất cả đặc trưng. Lasso regression (L1) đẩy một số hệ số về chính xác bằng không, thực hiện lựa chọn đặc trưng ngầm định. Elastic Net kết hợp cả hai. Những phân biệt này xuất hiện trong cả câu hỏi phỏng vấn về phân loại lẫn hồi quy.
Chính quy hóa phạt độ lớn của hệ số. Nếu các đặc trưng có thang đo khác nhau (tuổi tính bằng năm so với thu nhập tính bằng nghìn đồng), hình phạt sẽ ảnh hưởng không cân xứng đến các đặc trưng có thang đo nhỏ hơn. Luôn chuẩn hóa đặc trưng trước khi áp dụng Ridge, Lasso hoặc Elastic Net. Bỏ qua điều này là lỗi phỏng vấn thường gặp.
# regularization_comparison.py
from sklearn.linear_model import Ridge, Lasso, ElasticNet
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import make_pipeline
from sklearn.model_selection import cross_val_score
from sklearn.datasets import load_diabetes
X, y = load_diabetes(return_X_y=True)
models = {
"Ridge (L2)": make_pipeline(StandardScaler(), Ridge(alpha=1.0)),
"Lasso (L1)": make_pipeline(StandardScaler(), Lasso(alpha=0.1)),
"ElasticNet (L1+L2)": make_pipeline(StandardScaler(), ElasticNet(alpha=0.1, l1_ratio=0.5)),
}
for name, model in models.items():
scores = cross_val_score(model, X, y, cv=5, scoring='r2')
print(f"{name:25s} R2: {scores.mean():.4f} +/- {scores.std():.4f}")Pipeline đảm bảo việc chuẩn hóa và chính quy hóa diễn ra cùng nhau, ngăn ngừa rò rỉ dữ liệu từ việc fit scaler trên dữ liệu test. Người phỏng vấn cấp senior đặc biệt kiểm tra điều này: áp dụng fit_transform trên toàn bộ tập dữ liệu trước khi chia là lỗi loại trừ ứng viên.
Chuẩn Bị Phỏng Vấn Thuật Toán ML Năm 2026
Chuẩn bị phỏng vấn thuật toán học máy năm 2026 không chỉ là ghi nhớ công thức. Đội ngũ tuyển dụng đánh giá ba chiều: hiểu biết lý thuyết (ứng viên có giải thích được toán học không?), triển khai thực tế (ứng viên có viết được code không?) và khả năng phán đoán (ứng viên có biết thuật toán nào phù hợp với bài toán không?).
Dưới đây là các lĩnh vực tạo ra nhiều câu hỏi phỏng vấn nhất:
- Lựa chọn thuật toán: cho trước mô tả tập dữ liệu, hãy lý giải lý do chọn một thuật toán thay vì thuật toán khác. Cân nhắc kích thước dữ liệu, kiểu đặc trưng, yêu cầu khả năng diễn giải và giới hạn thời gian huấn luyện
- Điều chỉnh siêu tham số: giải thích từng siêu tham số kiểm soát điều gì và ảnh hưởng đến sự đánh đổi bias-variance như thế nào. Grid search và random search là kiến thức cơ bản — tối ưu hóa Bayesian với Optuna ngày càng được kỳ vọng
- Yêu cầu triển khai thực tế: phát hiện data drift, giám sát mô hình, A/B testing và feature store là chủ đề tiêu chuẩn cho các vị trí mid-level và senior năm 2026
- Khả năng diễn giải: cùng với sự phát triển của AI có thể giải thích, ứng viên nên biết về SHAP values và các phương pháp tầm quan trọng đặc trưng
Cross-validation xứng đáng được chú ý đặc biệt. Người phỏng vấn kỳ vọng ứng viên giải thích được tại sao phân chia holdout đơn giản là không đủ, cách k-fold cross-validation hoạt động và khi nào cần dùng stratified folds (lớp mất cân bằng). Dữ liệu chuỗi thời gian đòi hỏi phân chia theo thứ tự thời gian — điều này khiến nhiều ứng viên bất ngờ.
Kết Luận
- Mô hình tuyến tính (hồi quy tuyến tính, hồi quy logistic) là nền tảng — nắm vững các giả định, hàm chi phí và thời điểm chúng thất bại trước khi chuyển sang các thuật toán phức tạp hơn
- Cây quyết định đơn lẻ dễ bị overfitting; Random Forest và Gradient Boosting khắc phục điều này thông qua bagging và boosting tương ứng, với các đặc điểm đánh đổi khác nhau
- K-Means và PCA bao phủ các kiến thức cơ bản về học không giám sát, nhưng luôn chuẩn hóa đặc trưng trước và nắm rõ giới hạn của từng phương pháp
- Chỉ số đánh giá phải phù hợp với bài toán kinh doanh — accuracy đơn thuần vô nghĩa trên dữ liệu mất cân bằng; precision, recall, F1 và AUC-ROC mỗi chỉ số phục vụ mục tiêu khác nhau
- Chính quy hóa (Ridge, Lasso, Elastic Net) kiểm soát overfitting, nhưng chỉ hoạt động đúng trên các đặc trưng đã chuẩn hóa bên trong một pipeline
- Thành công trong phỏng vấn năm 2026 đòi hỏi thể hiện khả năng phán đoán lựa chọn thuật toán, không chỉ khả năng triển khai — hãy giải thích lý do "tại sao" đằng sau mọi lựa chọn
Thẻ
Chia sẻ
