Đánh giá nhiều mô hình

Học có giám sát với scikit-learn

George Boorman

Core Curriculum Manager, DataCamp

Mỗi bài toán phù hợp một mô hình

Một vài nguyên tắc

  • Kích thước dữ liệu
    • Ít đặc trưng hơn = mô hình đơn giản hơn, huấn luyện nhanh hơn
    • Một số mô hình cần nhiều dữ liệu để hoạt động tốt
  • Khả năng diễn giải
    • Một số mô hình dễ giải thích, quan trọng với bên liên quan
    • Hồi quy tuyến tính dễ diễn giải do hệ số dễ hiểu
  • Tính linh hoạt
    • Có thể cải thiện độ chính xác bằng cách giả định ít về dữ liệu
    • KNN linh hoạt hơn, không giả định quan hệ tuyến tính
Học có giám sát với scikit-learn

Tất cả nằm ở chỉ số

  • Đánh giá hồi quy:

    • RMSE
    • R-squared
  • Đánh giá phân loại:

    • Accuracy
    • Ma trận nhầm lẫn
    • Precision, recall, F1-score
    • ROC AUC
  • Huấn luyện vài mô hình và đánh giá hiệu suất mặc định

Học có giám sát với scikit-learn

Lưu ý về chuẩn hóa

  • Mô hình bị ảnh hưởng bởi chuẩn hóa:
    • KNN
    • Hồi quy tuyến tính (và Ridge, Lasso)
    • Hồi quy Logistic
    • Mạng nơ-ron nhân tạo

 

  • Nên chuẩn hóa dữ liệu trước khi đánh giá mô hình
Học có giám sát với scikit-learn

Đánh giá mô hình phân loại

import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import cross_val_score, KFold, train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier

X = music.drop("genre", axis=1).values y = music["genre"].values X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)
scaler = StandardScaler() X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
Học có giám sát với scikit-learn

Đánh giá mô hình phân loại

models = {"Logistic Regression": LogisticRegression(), "KNN": KNeighborsClassifier(), 
         "Decision Tree": DecisionTreeClassifier()}
results = []

for model in models.values():
kf = KFold(n_splits=6, random_state=42, shuffle=True)
cv_results = cross_val_score(model, X_train_scaled, y_train, cv=kf)
results.append(cv_results)
plt.boxplot(results, labels=models.keys()) plt.show()
Học có giám sát với scikit-learn

Trực quan hóa kết quả

Biểu đồ hộp độ chính xác cho từng mô hình: Hồi quy Logistic, KNN và Cây quyết định

Học có giám sát với scikit-learn

Hiệu suất trên tập kiểm tra

for name, model in models.items():

model.fit(X_train_scaled, y_train)
test_score = model.score(X_test_scaled, y_test)
print("{} Test Set Accuracy: {}".format(name, test_score))
Logistic Regression Test Set Accuracy: 0.844
KNN Test Set Accuracy: 0.82
Decision Tree Test Set Accuracy: 0.832
Học có giám sát với scikit-learn

Ayo berlatih!

Học có giám sát với scikit-learn

Preparing Video For Download...