Cải thiện Hiệu suất của Mô hình ML (Tiếp theo…)
Cải thiện hiệu suất với Điều chỉnh thuật toán
Như chúng ta biết rằng các mô hình ML được tham số hóa theo cách mà hành vi của chúng có thể được điều chỉnh cho một vấn đề cụ thể. Điều chỉnh thuật toán có nghĩa là tìm ra sự kết hợp tốt nhất của các tham số này để có thể cải thiện hiệu suất của mô hình ML. Quá trình này đôi khi được gọi là tối ưu hóa siêu tham số và bản thân các tham số của thuật toán được gọi là siêu tham số và các hệ số do thuật toán ML tìm thấy được gọi là tham số.
Ở đây, chúng ta sẽ thảo luận về một số phương pháp điều chỉnh tham số thuật toán do Python Scikit-learning cung cấp.
Điều chỉnh tham số tìm kiếm lưới
Đó là một cách tiếp cận điều chỉnh tham số. Điểm chính hoạt động của phương pháp này là nó xây dựng và đánh giá mô hình một cách có phương pháp cho mọi sự kết hợp có thể có của tham số thuật toán được chỉ định trong lưới. Do đó, chúng ta có thể nói rằng thuật toán này có tính chất tìm kiếm.
Example
Trong công thức Python sau đây, chúng ta sẽ thực hiện tìm kiếm lưới bằng cách sử dụng lớp GridSearchCV của sklearn để đánh giá các giá trị alpha khác nhau cho thuật toán hồi quy Ridge trên tập dữ liệu bệnh tiểu đường của người da đỏ Pima.
Đầu tiên, nhập các gói bắt buộc như sau:
import numpy
from pandas import read_csv
from sklearn.linear_model import Ridge
from sklearn.model_selection import GridSearchCV
Bây giờ, chúng ta cần tải tập dữ liệu bệnh tiểu đường Pima như đã làm trong các ví dụ trước -
path = r"C:\pima-indians-diabetes.csv"
headernames = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(path, names=headernames)
array = data.values
X = array[:,0:8]
Y = array[:,8]
Tiếp theo, đánh giá các giá trị alpha khác nhau như sau:
alphas = numpy.array([1,0.1,0.01,0.001,0.0001,0])
param_grid = dict(alpha=alphas)
Bây giờ, chúng ta cần áp dụng tìm kiếm lưới trên mô hình của mình -
model = Ridge()
grid = GridSearchCV(estimator=model, param_grid=param_grid)
grid.fit(X, Y)
In kết quả với dòng script sau:
print(grid.best_score_)
print(grid.best_estimator_.alpha)
Output
0.2796175593129722
1.0
Kết quả trên cho chúng ta điểm tối ưu và tập hợp các tham số trong lưới đạt được điểm đó. Giá trị alpha trong trường hợp này là 1,0.
Điều chỉnh tham số tìm kiếm ngẫu nhiên
Đó là một cách tiếp cận điều chỉnh tham số. Điểm chính hoạt động của phương pháp này là nó lấy mẫu các tham số thuật toán từ một phân phối ngẫu nhiên cho một số lần lặp cố định.
Example
Trong công thức Python sau, chúng tôi sẽ thực hiện tìm kiếm ngẫu nhiên bằng cách sử dụng lớp RandomizedSearchCV của sklearn để đánh giá các giá trị alpha khác nhau từ 0 đến 1 cho thuật toán hồi quy Ridge trên tập dữ liệu bệnh tiểu đường của người da đỏ Pima.
Đầu tiên, nhập các gói bắt buộc như sau:
import numpy
from pandas import read_csv
from scipy.stats import uniform
from sklearn.linear_model import Ridge
from sklearn.model_selection import RandomizedSearchCV
Bây giờ, chúng ta cần tải tập dữ liệu bệnh tiểu đường Pima như đã làm trong các ví dụ trước -
path = r"C:\pima-indians-diabetes.csv"
headernames = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(path, names=headernames)
array = data.values
X = array[:,0:8]
Y = array[:,8]
Tiếp theo, đánh giá các giá trị alpha khác nhau trên thuật toán hồi quy Ridge như sau:
param_grid = {'alpha': uniform()}
model = Ridge()
random_search = RandomizedSearchCV(estimator=model, param_distributions=param_grid, n_iter=50,
random_state=7)
random_search.fit(X, Y)
In kết quả với dòng script sau:
print(random_search.best_score_)
print(random_search.best_estimator_.alpha)
Output
0.27961712703051084
0.9779895119966027
Kết quả trên cho chúng ta điểm tối ưu giống như tìm kiếm lưới.