Điều chỉnh siêu tham số trong Python

Tinh chỉnh siêu tham số trong Python

Alex Scriven

Data Scientist

Giới thiệu

 

Vì sao học khóa này?

  • Thuật toán mới, phức tạp, nhiều siêu tham số
  • Việc tinh chỉnh tốn nhiều thời gian
  • Giúp hiểu sâu hơn ngoài thiết lập mặc định

Bạn có thể bất ngờ với những gì bên trong!

Tinh chỉnh siêu tham số trong Python

Bộ dữ liệu

 

Bộ dữ liệu liên quan đến vỡ nợ thẻ tín dụng.

Chứa các biến về lịch sử tài chính của một số người tiêu dùng ở Đài Loan. Có 30.000 người dùng và 24 thuộc tính.

Mục tiêu mô hình là họ có vỡ nợ khoản vay hay không

Đã được tiền xử lý; đôi lúc ta lấy mẫu nhỏ hơn để minh họa khái niệm

Thông tin thêm về bộ dữ liệu tại:

https://archive.ics.uci.edu/ml/datasets/default+of+credit+card+clients

Tinh chỉnh siêu tham số trong Python

Tổng quan về tham số

 

Tham số là gì?

  • Thành phần của mô hình được học trong quá trình huấn luyện
  • Quý vị không tự đặt chúng (thực ra không thể!)
  • Thuật toán sẽ tìm ra cho bạn
Tinh chỉnh siêu tham số trong Python

Tham số trong Hồi quy Logistic

Một mô hình hồi quy logistic đơn giản:

log_reg_clf = LogisticRegression() 
log_reg_clf.fit(X_train, y_train)

print(log_reg_clf.coef_)
array([[-2.88651273e-06, -8.23168511e-03,  7.50857018e-04,
         3.94375060e-04,  3.79423562e-04,  4.34612046e-04,
         4.37561467e-04,  4.12107102e-04, -6.41089138e-06,
        -4.39364494e-06,  cont... ]])
Tinh chỉnh siêu tham số trong Python

Tham số trong Hồi quy Logistic

Chuẩn hóa bảng hệ số:

# Lấy tên biến gốc
original_variables = list(X_train.columns)

# Ghép tên và hệ số zipped_together = list(zip(original_variables, log_reg_clf.coef_[0])) coefs = [list(x) for x in zipped_together]
# Đưa vào DataFrame với nhãn cột coefs = pd.DataFrame(coefs, columns=["Variable", "Coefficient"])
Tinh chỉnh siêu tham số trong Python

Tham số trong Hồi quy Logistic

 

Giờ hãy sắp xếp và in 3 hệ số lớn nhất

coefs.sort_values(by=["Coefficient"], axis=0, inplace=True, ascending=False)
print(coefs.head(3))

bảng hệ số

Tinh chỉnh siêu tham số trong Python

Tìm tham số ở đâu

 

Để tìm tham số, cần:

  1. Hiểu sơ lược thuật toán
  2. Tham khảo tài liệu Scikit-learn

Tham số nằm trong mục 'Attributes', không phải 'parameters'!

Tinh chỉnh siêu tham số trong Python

Tham số trong Random Forest

Thuật toán dạng cây thì sao?

Random Forest không có hệ số, mà là quyết định tại nút (thuộc tính nào và giá trị tách).

# Một mô hình Random Forest đơn giản
rf_clf = RandomForestClassifier(max_depth=2)
rf_clf.fit(X_train, y_train)

# Lấy một cây từ rừng chosen_tree = rf_clf.estimators_[7]

Để đơn giản, chúng ta chỉ hiển thị sản phẩm cuối (một ảnh) của cây quyết định. Có thể tự khám phá graphviz & pydotplus.

Tinh chỉnh siêu tham số trong Python

Sơ đồ luồng quyết định của một cây trong Random Forest

Tinh chỉnh siêu tham số trong Python

Trích xuất quyết định nút

Ta có thể trích chi tiết của nút bên trái, nút thứ hai từ trên:

# Cột được tách
split_column = chosen_tree.tree_.feature[1]
split_column_name = X_train.columns[split_column]

# Ngưỡng tách split_value = chosen_tree.tree_.threshold[1]
print("This node split on feature {}, at a value of {}" .format(split_column_name, split_value))

"Nút này tách theo thuộc tính PAY_0 tại giá trị 1.5"

Tinh chỉnh siêu tham số trong Python

Ayo berlatih!

Tinh chỉnh siêu tham số trong Python

Preparing Video For Download...