Học máy - Quy trình làm việc tự động

Giới thiệu

Để thực thi và tạo ra kết quả thành công, một mô hình học máy phải tự động hóa một số quy trình công việc tiêu chuẩn. Quá trình tự động hóa các quy trình công việc tiêu chuẩn này có thể được thực hiện với sự trợ giúp của Scikit-learning Pipelines. Từ quan điểm của nhà khoa học dữ liệu, đường ống là một khái niệm tổng quát, nhưng rất quan trọng. Về cơ bản, nó cho phép dòng dữ liệu từ định dạng thô của nó đến một số thông tin hữu ích. Hoạt động của đường ống có thể được hiểu với sự trợ giúp của sơ đồ sau:

Các khối của đường ống ML như sau:

Data ingestion- Như tên cho thấy, nó là quá trình nhập dữ liệu để sử dụng trong dự án ML. Dữ liệu có thể được trích xuất trong thời gian thực hoặc theo lô từ một hoặc nhiều hệ thống. Đây là một trong những bước khó khăn nhất vì chất lượng dữ liệu có thể ảnh hưởng đến toàn bộ mô hình ML.

Data Preparation- Sau khi nhập dữ liệu, chúng ta cần chuẩn bị dữ liệu để sử dụng cho mô hình ML của mình. Tiền xử lý dữ liệu là một trong những kỹ thuật chuẩn bị dữ liệu quan trọng nhất.

ML Model Training- Bước tiếp theo là đào tạo mô hình ML của chúng tôi. Chúng tôi có các thuật toán ML khác nhau như có giám sát, không giám sát, tăng cường để trích xuất các tính năng từ dữ liệu và đưa ra dự đoán.

Model Evaluation- Tiếp theo, chúng ta cần đánh giá mô hình ML. Trong trường hợp đường ống AutoML, mô hình ML có thể được đánh giá với sự trợ giúp của các phương pháp thống kê và quy tắc nghiệp vụ khác nhau.

ML Model retraining- Trong trường hợp đường ống AutoML, không nhất thiết mô hình đầu tiên là tốt nhất. Mô hình đầu tiên được coi là mô hình cơ sở và chúng tôi có thể đào tạo lặp lại mô hình đó để tăng độ chính xác của mô hình.

Deployment- Cuối cùng, chúng ta cần triển khai mô hình. Bước này liên quan đến việc áp dụng và chuyển mô hình sang hoạt động kinh doanh để sử dụng.

Những thách thức đi kèm với đường ống ML

Để tạo ra đường ống ML, các nhà khoa học dữ liệu phải đối mặt với nhiều thách thức. Những thách thức này thuộc ba loại sau:

Chất lượng dữ liệu

Sự thành công của bất kỳ mô hình ML nào phụ thuộc nhiều vào chất lượng dữ liệu. Nếu dữ liệu chúng tôi cung cấp cho mô hình ML không chính xác, đáng tin cậy và mạnh mẽ, thì chúng tôi sẽ kết thúc với kết quả sai hoặc gây hiểu nhầm.

Độ tin cậy của dữ liệu

Một thách thức khác liên quan đến đường ống ML là độ tin cậy của dữ liệu chúng tôi đang cung cấp cho mô hình ML. Như chúng ta biết, có thể có nhiều nguồn khác nhau mà từ đó nhà khoa học dữ liệu có thể thu thập dữ liệu nhưng để có được kết quả tốt nhất, phải đảm bảo rằng nguồn dữ liệu đó là đáng tin cậy và đáng tin cậy.

Khả năng tiếp cận dữ liệu

Để có được kết quả tốt nhất từ ​​các đường ống ML, bản thân dữ liệu phải có thể truy cập được, yêu cầu hợp nhất, làm sạch và quản lý dữ liệu. Do thuộc tính trợ năng dữ liệu, siêu dữ liệu sẽ được cập nhật bằng các thẻ mới.

Lập mô hình đường ống ML và chuẩn bị dữ liệu

Rò rỉ dữ liệu, xảy ra từ tập dữ liệu đào tạo đến tập dữ liệu thử nghiệm, là một vấn đề quan trọng đối với nhà khoa học dữ liệu khi chuẩn bị dữ liệu cho mô hình ML. Nói chung, tại thời điểm chuẩn bị dữ liệu, nhà khoa học dữ liệu sử dụng các kỹ thuật như chuẩn hóa hoặc chuẩn hóa trên toàn bộ tập dữ liệu trước khi học. Nhưng những kỹ thuật này không thể giúp chúng ta khỏi việc rò rỉ dữ liệu vì tập dữ liệu huấn luyện sẽ bị ảnh hưởng bởi quy mô của dữ liệu trong tập dữ liệu thử nghiệm.

Bằng cách sử dụng các đường ống ML, chúng tôi có thể ngăn chặn sự rò rỉ dữ liệu này vì các đường ống đảm bảo rằng việc chuẩn bị dữ liệu như chuẩn hóa bị hạn chế trong từng phần của quy trình xác thực chéo của chúng tôi.

Thí dụ

Sau đây là một ví dụ bằng Python chứng minh quy trình chuẩn bị dữ liệu và đánh giá mô hình. Vì mục đích này, chúng tôi đang sử dụng tập dữ liệu về bệnh tiểu đường ở Ấn Độ Pima từ Sklearn. Đầu tiên, chúng tôi sẽ tạo đường dẫn chuẩn hóa dữ liệu. Sau đó, một mô hình phân tích Phân biệt Tuyến tính sẽ được tạo và cuối cùng, đường ống sẽ được đánh giá bằng cách sử dụng xác nhận chéo 10 lần.

Đầu tiên, nhập các gói bắt buộc như sau:

from pandas import read_csv
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis

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

Tiếp theo, chúng ta sẽ tạo một đường dẫn với sự trợ giúp của đoạn mã sau:

estimators = []
estimators.append(('standardize', StandardScaler()))
estimators.append(('lda', LinearDiscriminantAnalysis()))
model = Pipeline(estimators)

Cuối cùng, chúng tôi sẽ đánh giá đường ống này và đưa ra độ chính xác của nó như sau:

kfold = KFold(n_splits=20, random_state=7)
results = cross_val_score(model, X, Y, cv=kfold)
print(results.mean())

Đầu ra

0.7790148448043184

Kết quả trên là tóm tắt về độ chính xác của thiết lập trên tập dữ liệu.

Mô hình hóa đường ống ML và trích xuất tính năng

Rò rỉ dữ liệu cũng có thể xảy ra ở bước trích xuất tính năng của mô hình ML. Đó là lý do tại sao các quy trình trích xuất tính năng cũng nên được hạn chế để ngăn chặn rò rỉ dữ liệu trong tập dữ liệu đào tạo của chúng tôi. Như trong trường hợp chuẩn bị dữ liệu, bằng cách sử dụng đường ống ML, chúng tôi cũng có thể ngăn chặn sự rò rỉ dữ liệu này. FeatureUnion, một công cụ được cung cấp bởi các đường ống ML có thể được sử dụng cho mục đích này.

Thí dụ

Sau đây là một ví dụ bằng Python trình bày quy trình khai thác tính năng và đánh giá mô hình. Vì mục đích này, chúng tôi đang sử dụng tập dữ liệu về bệnh tiểu đường ở Ấn Độ Pima từ Sklearn.

Đầu tiên, 3 tính năng sẽ được trích xuất bằng PCA (Phân tích thành phần chính). Sau đó, 6 tính năng sẽ được trích xuất với Phân tích thống kê. Sau khi trích xuất đặc điểm, kết quả của nhiều quy trình lựa chọn và trích xuất đối tượng sẽ được kết hợp bằng cách sử dụng

Công cụ FeatureUnion. Cuối cùng, một mô hình Hồi quy Logistic sẽ được tạo và đường ống sẽ được đánh giá bằng cách sử dụng xác thực chéo 10 lần.

Đầu tiên, nhập các gói bắt buộc như sau:

from pandas import read_csv
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score
from sklearn.pipeline import Pipeline
from sklearn.pipeline import FeatureUnion
from sklearn.linear_model import LogisticRegression
from sklearn.decomposition import PCA
from sklearn.feature_selection import SelectKBest

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

Tiếp theo, liên hợp tính năng sẽ được tạo như sau:

features = []
features.append(('pca', PCA(n_components=3)))
features.append(('select_best', SelectKBest(k=6)))
feature_union = FeatureUnion(features)

Tiếp theo, đường ống sẽ được tạo với sự trợ giúp của các dòng tập lệnh sau:

estimators = []
estimators.append(('feature_union', feature_union))
estimators.append(('logistic', LogisticRegression()))
model = Pipeline(estimators)

Cuối cùng, chúng tôi sẽ đánh giá đường ống này và đưa ra độ chính xác của nó như sau:

kfold = KFold(n_splits=20, random_state=7)
results = cross_val_score(model, X, Y, cv=kfold)
print(results.mean())

Đầu ra

0.7789811066126855

Kết quả trên là tóm tắt về độ chính xác của thiết lập trên tập dữ liệu.