Underfitting là gì? Cách phát hiện và khắc phục độ chệch cao trong mô hình ML
Tìm hiểu underfitting là gì, cách chẩn đoán một mô hình underfitting và khám phá các chiến lược khả thi để khắc phục underfitting, đảm bảo mô hình của bạn nắm bắt chính xác các khuôn mẫu dữ liệu và đưa ra dự đoán đáng tin cậy.
Khi xây dựng các mô hình để dự đoán kết quả hoặc khám phá khuôn mẫu, chúng ta sẽ gặp nhiều thách thức. Một trở ngại phổ biến là tạo ra một mô hình có thể nắm bắt chính xác các xu hướng tiềm ẩn trong dữ liệu. Đôi khi, mô hình quá đơn giản và không học được những phức tạp, dẫn đến hiệu suất kém. Hiện tượng này được gọi là Underfitting.
Một mô hình underfitting không chỉ hoạt động kém trên dữ liệu dùng để huấn luyện mà còn thất bại trong việc khái quát hóa sang dữ liệu mới, chưa thấy. Điều này có nghĩa là dự đoán của bạn có thể thiếu tin cậy trong tình huống thực tế. Nhận biết và xử lý underfitting là bước quan trọng để xây dựng các mô hình học máy mạnh mẽ và hiệu quả.
Hình ảnh: Tác giả
Trong bài viết này, chúng ta sẽ xem underfitting là gì, vì sao xảy ra, cách nhận biết và quan trọng nhất là cách khắc phục underfitting. Nếu bạn muốn thực hành trực tiếp với học máy, đừng quên xem lộ trình Machine Learning Fundamentals in Python của chúng tôi.
Underfitting là gì?
Hãy đi sâu hơn vào khái niệm underfitting và cách nó đối lập với hiện tượng overfitting. Hiểu rõ sự khác biệt này là nền tảng cho chẩn đoán và cải thiện mô hình.
Hình ảnh: Tác giả
Nói đơn giản, Underfitting xảy ra khi một mô hình học máy quá đơn giản để nắm bắt các khuôn mẫu tiềm ẩn trong dữ liệu huấn luyện. Hãy hình dung bạn cố gắng vẽ một đường thẳng qua các điểm dữ liệu rõ ràng đi theo một đường cong, và đường thẳng (mô hình của chúng ta) đơn giản là không đủ phức tạp. Một mô hình underfitting mắc độ chệch (bias) cao, tức là nó đưa ra các giả định mạnh về dữ liệu (ví dụ, giả định mối quan hệ tuyến tính khi thực tế không phải vậy).
Do không học tốt dữ liệu, nó hoạt động kém không chỉ trên dữ liệu huấn luyện mà còn trên dữ liệu mới, chưa thấy (dữ liệu kiểm thử). Tuy nhiên, các mô hình này thường có phương sai thấp, nghĩa là dự đoán của chúng không thay đổi nhiều nếu bạn huấn luyện trên các tập con dữ liệu khác nhau. Sự đơn giản khiến chúng nhất quán, dù là nhất quán theo cách sai.
Về mặt toán học, điều này liên quan đến phép phân rã bias-variance của sai số kỳ vọng của mô hình. Sai số kỳ vọng của một mô hình có thể được chia thành ba thành phần: bình phương độ chệch, phương sai và sai số không thể giảm được:
Trong đó:
E[(y - f̂(x))²] là sai số bình phương kỳ vọng của dự đoán.
Bias(f̂(x)) đo lường sai số do xấp xỉ hàm thực f(x) bằng mô hình.
Var(f̂(x)) là mức độ biến thiên của dự đoán mô hình với các tập dữ liệu huấn luyện khác nhau.
σ² biểu thị sai số không thể giảm — nhiễu vốn có trong dữ liệu không thể dự đoán được.
Trong underfitting, hạng tử Bias(f̂(x)) chi phối sai số. Mô hình quá đơn giản, dẫn đến sai số có hệ thống và không nắm bắt được mối quan hệ thực sự của dữ liệu.
So sánh underfitting và overfitting
Việc hiểu underfitting sẽ rõ ràng hơn khi so với overfitting. Trong khi các mô hình underfitting quá đơn giản, các mô hình overfitting lại quá phức tạp. Chúng học dữ liệu huấn luyện quá tốt, không chỉ nắm bắt khuôn mẫu tiềm ẩn mà còn cả nhiễu và dao động ngẫu nhiên.
Đánh đổi giữa Bias và Variance - Hình ảnh: Tác giả
Hãy xem các khác biệt chính giữa Underfitting và Overfitting:
Đặc điểm
Underfitting
Overfitting
Sai số huấn luyện
Cao
Rất thấp
Sai số kiểm thử
Cao
Cao
Độ phức tạp mô hình
Thấp
Cao
Hành vi dự đoán
Nhất quán nhưng thiếu chính xác
Chính xác trên dữ liệu huấn luyện, kém trên dữ liệu mới
Điều này dẫn đến khái niệm then chốt về đánh đổi giữa bias và variance.
Bias cao (Underfitting): Mô hình đơn giản có bias cao nhưng variance thấp. Chúng liên tục sai nhưng không thay đổi nhiều với các dữ liệu huấn luyện khác nhau.
Variance cao (Overfitting): Mô hình phức tạp có bias thấp nhưng variance cao. Chúng khớp dữ liệu huấn luyện rất tốt (bias thấp) nhưng rất nhạy với dữ liệu huấn luyện cụ thể, dẫn đến khả năng khái quát kém trên dữ liệu mới. Bạn có thể tìm hiểu thêm trong bài viết Overfitting là gì?.
Mục tiêu là tìm điểm cân bằng: mô hình đủ phức tạp để nắm bắt khuôn mẫu thực (bias thấp) nhưng không quá phức tạp đến mức học cả nhiễu (variance thấp).
Ví dụ:
Ví dụ Underfitting: Cố gắng dự đoán giá nhà, vốn phụ thuộc vào diện tích, vị trí, năm xây, v.v., chỉ bằng số phòng. Mô hình quá đơn giản (bias cao) và có thể đưa ra dự đoán kém cho hầu hết các căn nhà.
Ví dụ Overfitting: Tạo một mô hình hồi quy đa thức cực kỳ phức tạp đi qua hoàn hảo mọi điểm dữ liệu trong tập huấn luyện giá nhà. Mô hình này có thể gần như bằng không sai số trên dữ liệu huấn luyện, nhưng sẽ hoạt động rất tệ trên nhà mới vì nó đã học nhiễu đặc trưng của tập huấn luyện (variance cao).
Hiểu mô hình của bạn đang ở đâu trên phổ này rất quan trọng để phát triển các giải pháp học máy hiệu quả, như chúng ta sẽ thấy trong các phần tiếp theo về phát hiện và xử lý underfitting.
Nguyên nhân gây Underfitting và các chỉ báo chẩn đoán
Giờ khi đã hiểu underfitting là gì, hãy xem vì sao nó xảy ra và cách bạn có thể phát hiện trong chính dự án của mình. Xác định nguyên nhân gốc rễ là thiết yếu để chọn đúng chiến lược khắc phục.
Nguyên nhân chính của underfitting
Nhiều yếu tố có thể dẫn đến một mô hình underfitting:
Độ phức tạp mô hình không đủ
Thuật toán được chọn có thể quá đơn giản so với cấu trúc tiềm ẩn của dữ liệu. Ví dụ, dùng hồi quy tuyến tính khi mối quan hệ giữa đặc trưng và biến đích là phi tuyến mạnh. Mô hình vốn dĩ thiếu khả năng nắm bắt phức tạp.
Huấn luyện không đầy đủ
Mô hình có thể chưa được huấn luyện đủ lâu (ví dụ, quá ít epoch trong mạng nơ-ron) hoặc với tham số học không phù hợp. Nếu quá trình huấn luyện dừng sớm, mô hình sẽ không có đủ cơ hội học các khuôn mẫu, dù nó có đủ năng lực.
Biểu diễn đặc trưng kém
Các đặc trưng dùng để huấn luyện mô hình có thể không phản ánh đầy đủ các yếu tố nền tảng ảnh hưởng đến biến đích. Điều này có thể là:
Thiếu đặc trưng quan trọng: Các biến dự báo then chốt không được đưa vào tập dữ liệu.
Đặc trưng không liên quan: Tập dữ liệu chứa nhiễu hoặc các đặc trưng không tương quan với kết quả, có thể gây lệch lạc đối với mô hình đơn giản.
Đặc trưng cần biến đổi: Đặc trưng có thể cần chuẩn hóa, chuẩn biên hoặc mã hóa (ví dụ, biến phân loại) để hữu ích cho mô hình.
Regularization quá mức
Các kỹ thuật regularization (như phạt L1 hoặc L2) chủ yếu dùng để ngăn overfitting bằng cách thêm hình phạt cho độ phức tạp. Tuy nhiên, nếu cường độ regularization (ví dụ, tham số lambda) đặt quá cao, nó có thể phạt quá mức mô hình, buộc nó trở nên quá đơn giản và gây underfitting. Tìm hiểu thêm về regularization trong Towards Preventing Overfitting in Machine Learning: Regularization.
Dữ liệu chất lượng thấp hoặc không đủ
Không đủ dữ liệu: Nếu tập huấn luyện quá nhỏ, mô hình có thể không có đủ ví dụ để học hiệu quả các khuôn mẫu tiềm ẩn.
Nhiễu cao: Nếu dữ liệu rất nhiễu, mô hình có thể khó phân biệt tín hiệu khỏi nhiễu, đặc biệt nếu là mô hình đơn giản.
Thiếu giá trị: Lượng lớn dữ liệu thiếu có thể cản trở khả năng học của mô hình, đặc biệt nếu không được xử lý đúng. Các kỹ thuật xử lý được trình bày trong Handling Missing Data with Imputations in R.
Phương pháp phát hiện
Làm sao biết mô hình của bạn đang underfitting? Dưới đây là một số kỹ thuật chẩn đoán phổ biến:
Phân tích chỉ số hiệu suất
Chỉ báo trực quan nhất là hiệu suất kém trên cả tập huấn luyện và tập xác thực/kiểm thử. Nếu mô hình của bạn có sai số cao (hoặc độ chính xác thấp, R-squared thấp, v.v.) ngay trên dữ liệu đã huấn luyện, đó là dấu hiệu mạnh cho thấy nó chưa học hiệu quả các khuôn mẫu. Khác với overfitting, nơi hiệu suất huấn luyện rất tốt nhưng kiểm thử kém, underfitting thể hiện hiệu suất kém trên toàn bộ.
Đường học (learning curves)
Vẽ hiệu suất mô hình (ví dụ, sai số hoặc độ chính xác) trên tập huấn luyện và xác thực theo thời gian huấn luyện hoặc kích thước tập dữ liệu có thể rất hữu ích. Với mô hình underfitting, các đường học thường cho thấy:
Sai số huấn luyện cao và sớm đạt trạng thái bình ổn.
Sai số xác thực cao, gần với sai số huấn luyện và cũng bình ổn.
Cả hai đường hội tụ ở mức sai số cao, cho thấy mô hình không cải thiện đáng kể dù có thêm dữ liệu hoặc thời gian huấn luyện.
Phân tích đặc trưng
Xem lại các đặc trưng đang dùng. Chúng có liên quan không? Có tương tác nào bạn chưa nắm bắt? Các đặc trưng số đã được chuẩn hóa chưa? Các đặc trưng phân loại đã được mã hóa phù hợp chưa?
Đôi khi, xem xét lại kỹ thuật đặc trưng có thể hé lộ vì sao mô hình gặp khó. Các khái niệm cơ bản được đề cập trong Machine Learning Fundamentals in R. Để hiểu sâu hơn về các quan hệ thống kê, hãy cân nhắc các tài liệu như Statistical Inference in R.
Mô hình so sánh
Huấn luyện một mô hình phức tạp hơn (ví dụ, cây quyết định hoặc máy tăng cường độ dốc nếu ban đầu bạn dùng hồi quy tuyến tính) trên cùng dữ liệu. Nếu mô hình phức tạp hơn vượt trội đáng kể so với mô hình ban đầu trên cả tập huấn luyện và xác thực, điều đó gợi ý mô hình ban đầu có khả năng underfitting do độ phức tạp không đủ.
Bằng cách hiểu các nguyên nhân và phương pháp phát hiện này, bạn có thể chẩn đoán hiệu quả một mô hình underfitting và thực hiện các bước để cải thiện hiệu suất.
Chiến lược giảm thiểu Underfitting và Thực hành tốt
Khi đã xác định underfitting, bước tiếp theo là biết cách khắc phục underfitting. May mắn là có nhiều chiến lược hiệu quả giúp tăng khả năng của mô hình trong việc học các khuôn mẫu tiềm ẩn trong dữ liệu. Hãy xem một số cách:
Tăng cường độ phức tạp của mô hình
Nếu mô hình của bạn quá đơn giản (bias cao), làm cho nó phức tạp hơn thường có thể giải quyết underfitting. Chúng ta có thể làm theo các cách sau:
Lựa chọn thuật toán
Chuyển sang mô hình mạnh hơn. Nếu hồi quy tuyến tính bị underfitting, hãy thử hồi quy đa thức, cây quyết định, rừng ngẫu nhiên, máy tăng cường độ dốc (như XGBoost hoặc LightGBM), hoặc máy vector hỗ trợ (SVM) với kernel phi tuyến. Các mô hình này vốn dĩ có năng lực cao hơn để nắm bắt quan hệ phức tạp.
Mở rộng đặc trưng đa thức
Với bài toán hồi quy, bạn có thể tạo đặc trưng đa thức từ các đặc trưng số hiện có. Điều này cho phép các mô hình tuyến tính khớp quan hệ cong phức tạp hơn. Ví dụ, nếu có đặc trưng x, bạn có thể thêm x2, x3, v.v. làm đặc trưng mới. Scikit-learn cung cấp PolynomialFeatures để thực hiện việc này.
Điều chỉnh siêu tham số
Nhiều mô hình phức tạp có siêu tham số kiểm soát độ phức tạp (ví dụ, độ sâu của cây quyết định, số nơ-ron trong một lớp mạng nơ-ron, tham số C trong SVM). Điều chỉnh các siêu tham số này để cho phép mô hình phức tạp hơn có thể giảm bias.
Đôi khi vấn đề không nằm ở mô hình mà ở cách biểu diễn dữ liệu. Cải thiện đặc trưng có thể giúp đáng kể. Chúng ta có thể làm như sau:
Tạo đặc trưng theo miền bài toán
Dùng kiến thức miền để tạo đặc trưng mới có thể thông tin hơn. Ví dụ, trong dự đoán giá nhà, kết hợp 'số phòng ngủ' và 'số phòng tắm' thành đặc trưng 'tổng số phòng', hoặc tính 'tuổi nhà' từ 'năm xây dựng'.
Đặc trưng tương tác
Tạo đặc trưng biểu diễn tương tác giữa các đặc trưng hiện có (ví dụ, nhân hai đặc trưng). Điều này giúp mô hình nắm bắt hiệu ứng hiệp lực.
Làm giàu dữ liệu
Bổ sung tập dữ liệu bằng nguồn dữ liệu bên ngoài nếu có thể. Ví dụ, thêm dữ liệu nhân khẩu học vào thông tin khách hàng hoặc dữ liệu thời tiết vào dự đoán doanh số.
Tăng cường dữ liệu (chủ yếu cho dữ liệu phi cấu trúc)
Với dữ liệu hình ảnh hoặc văn bản, các kỹ thuật như xoay/lật ảnh hoặc thay thế từ đồng nghĩa trong văn bản có thể tăng kích thước và độ đa dạng của tập huấn luyện một cách nhân tạo, giúp mô hình học các khuôn mẫu bền vững hơn.
Điều chỉnh regularization
Nếu underfitting do regularization quá mức nhằm ngăn overfitting, bạn cần giảm bớt. Hạ giá trị tham số regularization (ví dụ, alpha trong Ridge/Lasso, C trong SVM – lưu ý với SVM, C nhỏ hơn nghĩa là regularization mạnh hơn, nên bạn cần tăng C).
Nếu dùng dropout, hãy giảm tỷ lệ dropout (tỷ lệ nơ-ron bị bỏ qua trong huấn luyện). Tỷ lệ thấp hơn giữ lại nhiều năng lực mạng hơn.
Tìm điểm cân bằng phù hợp thường đòi hỏi điều chỉnh cẩn thận, một lần nữa nhấn mạnh tầm quan trọng của tối ưu siêu tham số.
Phương pháp tổ hợp (Ensemble)
Các phương pháp tổ hợp kết hợp dự đoán từ nhiều mô hình riêng lẻ (weak learner) để tạo ra dự đoán cuối cùng mạnh hơn, vững chắc hơn. Chúng thường rất hiệu quả trong việc giảm cả bias và variance. Một số phương pháp tổ hợp như sau:
Bagging (ví dụ, Random Forests): Huấn luyện nhiều mô hình (ví dụ, cây quyết định) độc lập trên các mẫu bootstrap khác nhau của dữ liệu và trung bình dự đoán của chúng. Chủ yếu giảm variance nhưng cũng có thể hữu ích nếu learner cơ sở hơi lệch (biased). Xem hướng dẫn Bagging để biết thêm.
Boosting (ví dụ, AdaBoost, Gradient Boosting): Huấn luyện các mô hình tuần tự, với mỗi mô hình mới tập trung sửa lỗi của mô hình trước. Boosting đặc biệt hiệu quả trong việc giảm bias và biến weak learner thành strong learner, khiến nó là công cụ mạnh mẽ chống underfitting. Chúng tôi có hướng dẫn Boosting để giải thích thêm.
Stacking: Huấn luyện nhiều loại mô hình khác nhau rồi dùng một mô hình khác (meta-learner) để học cách kết hợp tốt nhất các dự đoán của chúng.
Bằng cách áp dụng các chiến lược này, thường là kết hợp với nhau, bạn có thể xử lý hiệu quả underfitting và xây dựng các mô hình nắm bắt tốt hơn độ phức tạp của dữ liệu.
Ứng dụng thực tế và Nghiên cứu tình huống
Quan sát underfitting trong thực tế với các tập dữ liệu và mã có thể làm rõ đáng kể khái niệm này. Hãy xem các ví dụ thực tiễn để minh họa cách một mô hình underfitting hoạt động và cách cải thiện hiệu suất của nó.
Ví dụ underfitting với hồi quy tuyến tính
Một kịch bản underfitting phổ biến xảy ra khi dùng mô hình tuyến tính đơn giản để mô tả mối quan hệ phi tuyến. Hãy minh họa bằng cách thử khớp một mô hình hồi quy tuyến tính với dữ liệu có quy luật bậc hai.
Chúng ta sẽ tạo dữ liệu tổng hợp trong đó biến đích y có quan hệ bậc hai với một đặc trưng X. Trước hết, chúng ta sẽ khớp một mô hình hồi quy tuyến tính đơn giản. Ta sẽ quan sát hiệu suất kém của nó (MSE cao) và trực quan hóa cách nó không nắm bắt được đường cong của dữ liệu.
Sau đó, chúng ta sẽ mở rộng đặc trưng bằng cách thêm hạng đa thức và khớp một mô hình hồi quy đa thức. Điều này sẽ cho thấy cách tăng độ phức tạp mô hình có thể giảm bias và cải thiện đáng kể độ chính xác của mô hình.
Hãy bắt đầu bằng cách nhập các thư viện cần thiết như sau:
# Import necessary librariesimport numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures
from sklearn.pipeline import make_pipeline
from sklearn.metrics import mean_squared_errorĐược hỗ trợ bởi
Hãy tạo dữ liệu tổng hợp phi tuyến. Chúng ta sẽ tạo dữ liệu có quan hệ bậc hai: y = 0.5*X^2 + X + 2 + nhiễu.
np.random.seed(42)# for reproducibility
num_samples =100
X = np.sort(10* np.random.rand(num_samples,1)-5, axis=0)# Feature X (sorted for plotting)
y_true =0.5* X**2+ X +2# True quadratic relationship
y = y_true + np.random.randn(num_samples,1)*5# Add some noise to make it realisticĐược hỗ trợ bởi
Bây giờ, chúng ta sẽ khớp một mô hình hồi quy tuyến tính đơn giản (Mô hình Underfitting) như dưới đây:
--- Simple Linear Regression (Potential Underfitting Model)---
Mean Squared Error (MSE):34.03
Model Coefficients (slope):1.00
Model Intercept:6.42Được hỗ trợ bởi
Tiếp theo, chúng ta sẽ khớp một mô hình hồi quy đa thức (Mô hình cải thiện). Để làm vậy, ta tạo các đặc trưng đa thức (bậc 2) rồi khớp một mô hình tuyến tính với các đặc trưng này. Bước PolynomialFeatures thêm các đặc trưng mới. Bước LinearRegression có các hệ số cho từng đặc trưng.
Với bậc 2, ta kỳ vọng có hệ số cho X và X^2. Pipeline giúp quy trình gọn gàng hơn. Thuộc tính named_steps của pipeline cho phép truy cập từng bước như dưới đây:
--- Polynomial Regression (Degree 2)---
Mean Squared Error (MSE):20.48
Model Coefficients (for X, X^2):1.13,0.50
Model Intercept:2.04Được hỗ trợ bởi
Giờ hãy trực quan hóa việc khớp mô hình như dưới đây:
# Visualization
plt.figure(figsize=(10,4))
plt.scatter(X, y, s=30, label="Actual Data Points", alpha=0.7, edgecolors='k')
plt.plot(X, y_pred_linear, color='red', linewidth=2, label=f'Linear Fit (Underfitting)\nMSE: {mse_linear:.2f}')
plt.plot(X, y_pred_poly, color='green', linewidth=2, label=f'Polynomial Fit (Degree 2)\nMSE: {mse_poly:.2f}')
plt.title('Demonstrating Underfitting with Linear vs. Polynomial Regression', fontsize=16)
plt.xlabel('Feature X', fontsize=14)
plt.ylabel('Target y', fontsize=14)
plt.legend(fontsize=12)
plt.grid(True, linestyle='--', alpha=0.7)
plt.show()Được hỗ trợ bởi
Kết quả:
Biểu đồ xác nhận trực quan underfitting của mô hình tuyến tính đơn giản. Nó không nắm bắt được đường cong trong dữ liệu. Mô hình hồi quy đa thức, nhờ thêm hạng X^2, cho độ khớp tốt hơn nhiều, thể hiện qua MSE thấp hơn.
Điều này cho thấy mở rộng đặc trưng (tăng độ phức tạp mô hình) có thể giảm bias và cải thiện độ chính xác khi mối quan hệ tiềm ẩn là phi tuyến. Tiếp theo, hãy xem một nghiên cứu tình huống chẩn đoán y khoa.
Nghiên cứu tình huống chẩn đoán y khoa
Hãy mô phỏng một kịch bản chẩn đoán y khoa sử dụng bộ dữ liệu Breast Cancer Wisconsin (Diagnostic) nổi tiếng có sẵn trong scikit-learn.
Đầu tiên, chúng ta sẽ cố gắng xây dựng một mô hình phân loại chỉ dùng một tập con đặc trưng rất hạn chế, có thể dẫn tới underfitting. Sau đó, chúng ta sẽ dùng một tập đặc trưng toàn diện hơn và có thể là một thuật toán phức tạp hơn để minh họa sự cải thiện.
Hãy bắt đầu bằng cách nhập các thư viện cần thiết như sau:
# Import necessary librariesimport numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score, roc_auc_score, confusion_matrix, ConfusionMatrixDisplayĐược hỗ trợ bởi
Giờ, hãy tải và chuẩn bị dữ liệu:
cancer = load_breast_cancer()
X = pd.DataFrame(cancer.data, columns=cancer.feature_names)
y = cancer.target # 0 for malignant, 1 for benignĐược hỗ trợ bởi
Để minh họa, hãy chọn một tập hợp đặc trưng rất hạn chế cho kịch bản underfitting. Tự thân chúng có thể không dự báo tốt nhất:
features_limited =['mean texture','mean symmetry']
X_limited = X[features_limited]Được hỗ trợ bởi
Với mô hình cải thiện, chúng ta sẽ dùng một tập lớn hơn (hoặc toàn bộ đặc trưng). Hãy chọn 10 đặc trưng đầu tiên cho một tập toàn diện hơn:
features_comprehensive = cancer.feature_names[:10]
X_comprehensive = X[features_comprehensive]Được hỗ trợ bởi
Hãy chia dữ liệu. Chúng ta sẽ làm riêng cho mỗi tập đặc trưng để rõ ràng:
X_train_lim, X_test_lim, y_train, y_test = train_test_split(X_limited, y, test_size=0.3, random_state=42, stratify=y)
X_train_comp, X_test_comp, _, _ = train_test_split(X_comprehensive, y, test_size=0.3, random_state=42, stratify=y)# y_train and y_test are the sameĐược hỗ trợ bởi
Hãy chuẩn hóa đặc trưng vì điều này quan trọng đối với logistic regression và nhiều thuật toán khác:
Scenario 2: Logistic Regression (Comprehensive Features)
Features used: First 10 features
Accuracy:0.9181
AUC:0.9831Được hỗ trợ bởi
Tiếp theo, hãy khớp một mô hình phức tạp hơn như Random Forest với nhiều đặc trưng:
print("Scenario 3: Random Forest (Comprehensive Features)")
rf_comp = RandomForestClassifier(random_state=42, n_estimators=100)# n_estimators is a key hyperparameter
rf_comp.fit(X_train_comp_scaled, y_train)# RF can also benefit from scaled data, though less sensitive
y_pred_comp_rf = rf_comp.predict(X_test_comp_scaled)
y_proba_comp_rf = rf_comp.predict_proba(X_test_comp_scaled)[:,1]
acc_comp_rf = accuracy_score(y_test, y_pred_comp_rf)
auc_comp_rf = roc_auc_score(y_test, y_proba_comp_rf)print(f"Features used: First 10 features")print(f"Accuracy: {acc_comp_rf:.4f}")print(f"AUC: {auc_comp_rf:.4f}")Được hỗ trợ bởi
Kết quả:
Scenario 3: Random Forest (Comprehensive Features)
Features used: First 10 features
Accuracy:0.9415
AUC:0.9878Được hỗ trợ bởi
Hãy vẽ và so sánh ma trận nhầm lẫn cho từng trường hợp:
fig, axes = plt.subplots(1,3, figsize=(20,5))
fig.suptitle('Comparison of Model Performance (Confusion Matrices on Test Set)', fontsize=16)# Model 1: Logistic Regression (Limited Features)
cm_lim = confusion_matrix(y_test, y_pred_lim)
disp_lim = ConfusionMatrixDisplay(confusion_matrix=cm_lim, display_labels=cancer.target_names)
disp_lim.plot(ax=axes[0], cmap='Blues')
axes[0].set_title(f'LogReg (Limited Features)\nAcc: {acc_lim:.2f}, AUC: {auc_lim:.2f}')# Model 2: Logistic Regression (Comprehensive Features)
cm_comp_lr = confusion_matrix(y_test, y_pred_comp_lr)
disp_comp_lr = ConfusionMatrixDisplay(confusion_matrix=cm_comp_lr, display_labels=cancer.target_names)
disp_comp_lr.plot(ax=axes[1], cmap='Greens')
axes[1].set_title(f'LogReg (Comprehensive Features)\nAcc: {acc_comp_lr:.2f}, AUC: {auc_comp_lr:.2f}')# Model 3: Random Forest (Comprehensive Features)
cm_comp_rf = confusion_matrix(y_test, y_pred_comp_rf)
disp_comp_rf = ConfusionMatrixDisplay(confusion_matrix=cm_comp_rf, display_labels=cancer.target_names)
disp_comp_rf.plot(ax=axes[2], cmap='Oranges')
axes[2].set_title(f'Random Forest (Comprehensive Features)\nAcc: {acc_comp_rf:.2f}, AUC: {auc_comp_rf:.2f}')
plt.tight_layout(rect=[0,0,1,0.96])# Adjust layout to make space for suptitle
plt.show()Được hỗ trợ bởi
Kết quả:
Trong nghiên cứu tình huống này, mô hình LogisticRegression ban đầu được huấn luyện chỉ với hai đặc trưng (Kịch bản 1) được kỳ vọng underfitting do thông tin không đủ, dẫn đến độ chính xác và AUC kém.
Hiệu suất thường cải thiện khi cùng thuật toán được cung cấp tập đặc trưng toàn diện hơn (Kịch bản 2), vì nó có nhiều dữ liệu để học, giảm bias.
Cải thiện hơn nữa thường thấy khi dùng thuật toán phức tạp hơn như RandomForestClassifier với tập đặc trưng toàn diện (Kịch bản 3), vì nó có thể nắm bắt tính phi tuyến và tương tác giữa các đặc trưng hiệu quả hơn, tiếp tục giảm bias và nâng cao độ khớp mô hình với dữ liệu.
Chủ đề nâng cao và Hướng phát triển
Dù chúng ta đã đề cập các nền tảng, lĩnh vực học máy luôn tiến hóa. Dưới đây là cái nhìn ngắn gọn về cách underfitting liên quan đến các mảng nâng cao hơn.
Vai trò của học sâu
Các mô hình học sâu, đặc biệt là mạng nơ-ron sâu với nhiều tầng, nổi tiếng với năng lực cao, nghĩa là về mặt lý thuyết chúng có thể xấp xỉ các hàm rất phức tạp.
Do độ phức tạp vốn có, các mô hình học sâu nhìn chung ít có khả năng underfitting hơn so với mô hình đơn giản, miễn là được huấn luyện đúng cách trên đủ dữ liệu. Cấu trúc của chúng cho phép tự động học biểu diễn đặc trưng tinh vi từ dữ liệu thô (như điểm ảnh trong ảnh hoặc từ ngữ trong văn bản).
Tuy nhiên, học sâu không miễn nhiễm với các vấn đề trông giống underfitting. Nếu mạng được thiết kế kém (ví dụ, độ sâu/độ rộng không đủ cho tác vụ), không được huấn luyện đủ lâu, hoặc dùng hàm kích hoạt hay thuật toán tối ưu không phù hợp, nó vẫn có thể không hội tụ và thể hiện sai số huấn luyện cao.
Các đổi mới kiến trúc như kết nối dư (ResNet) và kỹ thuật chuẩn hóa (Batch Normalization) giúp huấn luyện mạng rất sâu hiệu quả, giảm thiểu vấn đề gradient biến mất/bùng nổ và cho phép chúng đạt năng lực tối đa, tránh các vấn đề hội tụ giống underfitting.
Học máy tự động (AutoML)
Tìm đúng mô hình, đặc trưng và siêu tham số để tránh cả underfitting và overfitting có thể tốn thời gian. AutoML nhằm tự động hóa quá trình này.
Các khung AutoML có thể tự động khám phá các loại mô hình khác nhau (từ tuyến tính đến tổ hợp phức tạp và mạng nơ-ron), thực hiện kỹ thuật và chọn lọc đặc trưng, cũng như tối ưu siêu tham số. Bằng cách tìm kiếm có hệ thống một không gian khả năng rộng lớn, AutoML có thể xác định cấu hình mô hình có đủ độ phức tạp để tránh underfitting dữ liệu.
Các phương pháp như Neural Architecture Search (NAS) tự động thiết kế kiến trúc mạng, trong khi các kỹ thuật tối ưu siêu tham số tinh vi (ví dụ, Tối ưu Bayesian) hiệu quả tìm ra thiết lập tốt. Những công cụ này có thể tăng tốc đáng kể quá trình tìm mô hình khớp tốt, giảm công sức thủ công cần để chẩn đoán và sửa một mô hình underfitting.
Kết luận
Hiểu bài toán nan giải underfitting vs overfitting là nền tảng cho học máy thành công. Chúng ta đã thấy underfitting xuất hiện khi mô hình quá đơn giản (bias cao) để nắm bắt xu hướng tiềm ẩn trong dữ liệu, dẫn đến hiệu suất kém trên cả dữ liệu huấn luyện và dữ liệu chưa thấy. Nguyên nhân chính gồm độ phức tạp mô hình không đủ, đặc trưng kém, huấn luyện chưa đủ và regularization quá mức.
Chẩn đoán underfitting bao gồm xem xét các chỉ số hiệu suất, vẽ đường học và so sánh mô hình, thường được hỗ trợ bằng mã. May mắn là chúng ta có nhiều chiến lược để khắc phục underfitting: tăng độ phức tạp mô hình (chọn thuật toán tốt hơn, mở rộng đặc trưng, điều chỉnh siêu tham số), cải thiện đặc trưng (kỹ thuật đặc trưng, làm giàu dữ liệu), điều chỉnh regularization và sử dụng các phương pháp tổ hợp mạnh mẽ, như đã minh họa trong các ví dụ mã.
Một mô hình underfitting quá đơn giản để nắm bắt các khuôn mẫu tiềm ẩn trong dữ liệu, dẫn đến hiệu suất kém trên cả dữ liệu huấn luyện và dữ liệu mới.
Đặc điểm chính của mô hình underfitting là gì?⌄
Đặc trưng chính là bias cao, nghĩa là mô hình đưa ra các giả định quá đơn giản về dữ liệu.
Làm sao biết mô hình của tôi đang underfitting?⌄
Nếu mô hình có sai số cao trên cả dữ liệu huấn luyện và kiểm thử, khả năng cao là underfitting. Các đường học cũng sẽ cho thấy cả hai sai số đều cao và đã bình ổn.
Nguyên nhân phổ biến của underfitting là gì?⌄
Dùng một mô hình không đủ phức tạp cho dữ liệu (ví dụ, mô hình tuyến tính cho dữ liệu phi tuyến) hoặc có đặc trưng không đủ/chất lượng kém là các nguyên nhân phổ biến.
Làm sao khắc phục một mô hình underfitting?⌄
Bạn có thể thử tăng độ phức tạp mô hình, kỹ thuật đặc trưng tốt hơn, huấn luyện lâu hơn hoặc giảm regularization quá mức.
Tôi là một biên tập viên nội dung về khoa học dữ liệu. Tôi yêu thích sáng tạo nội dung xoay quanh các chủ đề AI/ML/DS. Tôi cũng khám phá các công cụ AI mới và viết về chúng.
Khi xây dựng các mô hình để dự đoán kết quả hoặc khám phá khuôn mẫu, chúng ta sẽ gặp nhiều thách thức. Một trở ngại phổ biến là tạo ra một mô hình có thể nắm bắt chính xác các xu hướng tiềm ẩn trong dữ liệu. Đôi khi, mô hình quá đơn giản và không học được những phức tạp, dẫn đến hiệu suất kém. Hiện tượng này được gọi là Underfitting.
Một mô hình underfitting không chỉ hoạt động kém trên dữ liệu dùng để huấn luyện mà còn thất bại trong việc khái quát hóa sang dữ liệu mới, chưa thấy. Điều này có nghĩa là dự đoán của bạn có thể thiếu tin cậy trong tình huống thực tế. Nhận biết và xử lý underfitting là bước quan trọng để xây dựng các mô hình học máy mạnh mẽ và hiệu quả.
Hình ảnh: Tác giả
Trong bài viết này, chúng ta sẽ xem underfitting là gì, vì sao xảy ra, cách nhận biết và quan trọng nhất là cách khắc phục underfitting. Nếu bạn muốn thực hành trực tiếp với học máy, đừng quên xem lộ trình Machine Learning Fundamentals in Python của chúng tôi.
Underfitting là gì?
Hãy đi sâu hơn vào khái niệm underfitting và cách nó đối lập với hiện tượng overfitting. Hiểu rõ sự khác biệt này là nền tảng cho chẩn đoán và cải thiện mô hình.
Hình ảnh: Tác giả
Nói đơn giản, Underfitting xảy ra khi một mô hình học máy quá đơn giản để nắm bắt các khuôn mẫu tiềm ẩn trong dữ liệu huấn luyện. Hãy hình dung bạn cố gắng vẽ một đường thẳng qua các điểm dữ liệu rõ ràng đi theo một đường cong, và đường thẳng (mô hình của chúng ta) đơn giản là không đủ phức tạp. Một mô hình underfitting mắc độ chệch (bias) cao, tức là nó đưa ra các giả định mạnh về dữ liệu (ví dụ, giả định mối quan hệ tuyến tính khi thực tế không phải vậy).
Do không học tốt dữ liệu, nó hoạt động kém không chỉ trên dữ liệu huấn luyện mà còn trên dữ liệu mới, chưa thấy (dữ liệu kiểm thử). Tuy nhiên, các mô hình này thường có phương sai thấp, nghĩa là dự đoán của chúng không thay đổi nhiều nếu bạn huấn luyện trên các tập con dữ liệu khác nhau. Sự đơn giản khiến chúng nhất quán, dù là nhất quán theo cách sai.
Về mặt toán học, điều này liên quan đến phép phân rã bias-variance của sai số kỳ vọng của mô hình. Sai số kỳ vọng của một mô hình có thể được chia thành ba thành phần: bình phương độ chệch, phương sai và sai số không thể giảm được:
Trong đó:
E[(y - f̂(x))²]là sai số bình phương kỳ vọng của dự đoán.Bias(f̂(x))đo lường sai số do xấp xỉ hàm thựcf(x)bằng mô hình.Var(f̂(x))là mức độ biến thiên của dự đoán mô hình với các tập dữ liệu huấn luyện khác nhau.σ²biểu thị sai số không thể giảm — nhiễu vốn có trong dữ liệu không thể dự đoán được.Trong underfitting, hạng tử
Bias(f̂(x))chi phối sai số. Mô hình quá đơn giản, dẫn đến sai số có hệ thống và không nắm bắt được mối quan hệ thực sự của dữ liệu.So sánh underfitting và overfitting
Việc hiểu underfitting sẽ rõ ràng hơn khi so với overfitting. Trong khi các mô hình underfitting quá đơn giản, các mô hình overfitting lại quá phức tạp. Chúng học dữ liệu huấn luyện quá tốt, không chỉ nắm bắt khuôn mẫu tiềm ẩn mà còn cả nhiễu và dao động ngẫu nhiên.
Đánh đổi giữa Bias và Variance - Hình ảnh: Tác giả
Hãy xem các khác biệt chính giữa Underfitting và Overfitting:
Đặc điểm
Underfitting
Overfitting
Sai số huấn luyện
Cao
Rất thấp
Sai số kiểm thử
Cao
Cao
Độ phức tạp mô hình
Thấp
Cao
Hành vi dự đoán
Nhất quán nhưng thiếu chính xác
Chính xác trên dữ liệu huấn luyện, kém trên dữ liệu mới
Điều này dẫn đến khái niệm then chốt về đánh đổi giữa bias và variance.
Mục tiêu là tìm điểm cân bằng: mô hình đủ phức tạp để nắm bắt khuôn mẫu thực (bias thấp) nhưng không quá phức tạp đến mức học cả nhiễu (variance thấp).
Ví dụ:
Hiểu mô hình của bạn đang ở đâu trên phổ này rất quan trọng để phát triển các giải pháp học máy hiệu quả, như chúng ta sẽ thấy trong các phần tiếp theo về phát hiện và xử lý underfitting.
Nguyên nhân gây Underfitting và các chỉ báo chẩn đoán
Giờ khi đã hiểu underfitting là gì, hãy xem vì sao nó xảy ra và cách bạn có thể phát hiện trong chính dự án của mình. Xác định nguyên nhân gốc rễ là thiết yếu để chọn đúng chiến lược khắc phục.
Nguyên nhân chính của underfitting
Nhiều yếu tố có thể dẫn đến một mô hình underfitting:
Độ phức tạp mô hình không đủ
Thuật toán được chọn có thể quá đơn giản so với cấu trúc tiềm ẩn của dữ liệu. Ví dụ, dùng hồi quy tuyến tính khi mối quan hệ giữa đặc trưng và biến đích là phi tuyến mạnh. Mô hình vốn dĩ thiếu khả năng nắm bắt phức tạp.
Huấn luyện không đầy đủ
Mô hình có thể chưa được huấn luyện đủ lâu (ví dụ, quá ít epoch trong mạng nơ-ron) hoặc với tham số học không phù hợp. Nếu quá trình huấn luyện dừng sớm, mô hình sẽ không có đủ cơ hội học các khuôn mẫu, dù nó có đủ năng lực.
Biểu diễn đặc trưng kém
Các đặc trưng dùng để huấn luyện mô hình có thể không phản ánh đầy đủ các yếu tố nền tảng ảnh hưởng đến biến đích. Điều này có thể là:
Regularization quá mức
Các kỹ thuật regularization (như phạt L1 hoặc L2) chủ yếu dùng để ngăn overfitting bằng cách thêm hình phạt cho độ phức tạp. Tuy nhiên, nếu cường độ regularization (ví dụ, tham số lambda) đặt quá cao, nó có thể phạt quá mức mô hình, buộc nó trở nên quá đơn giản và gây underfitting. Tìm hiểu thêm về regularization trong Towards Preventing Overfitting in Machine Learning: Regularization.
Dữ liệu chất lượng thấp hoặc không đủ
Phương pháp phát hiện
Làm sao biết mô hình của bạn đang underfitting? Dưới đây là một số kỹ thuật chẩn đoán phổ biến:
Phân tích chỉ số hiệu suất
Chỉ báo trực quan nhất là hiệu suất kém trên cả tập huấn luyện và tập xác thực/kiểm thử. Nếu mô hình của bạn có sai số cao (hoặc độ chính xác thấp, R-squared thấp, v.v.) ngay trên dữ liệu đã huấn luyện, đó là dấu hiệu mạnh cho thấy nó chưa học hiệu quả các khuôn mẫu. Khác với overfitting, nơi hiệu suất huấn luyện rất tốt nhưng kiểm thử kém, underfitting thể hiện hiệu suất kém trên toàn bộ.
Đường học (learning curves)
Vẽ hiệu suất mô hình (ví dụ, sai số hoặc độ chính xác) trên tập huấn luyện và xác thực theo thời gian huấn luyện hoặc kích thước tập dữ liệu có thể rất hữu ích. Với mô hình underfitting, các đường học thường cho thấy:
Phân tích đặc trưng
Xem lại các đặc trưng đang dùng. Chúng có liên quan không? Có tương tác nào bạn chưa nắm bắt? Các đặc trưng số đã được chuẩn hóa chưa? Các đặc trưng phân loại đã được mã hóa phù hợp chưa?
Đôi khi, xem xét lại kỹ thuật đặc trưng có thể hé lộ vì sao mô hình gặp khó. Các khái niệm cơ bản được đề cập trong Machine Learning Fundamentals in R. Để hiểu sâu hơn về các quan hệ thống kê, hãy cân nhắc các tài liệu như Statistical Inference in R.
Mô hình so sánh
Huấn luyện một mô hình phức tạp hơn (ví dụ, cây quyết định hoặc máy tăng cường độ dốc nếu ban đầu bạn dùng hồi quy tuyến tính) trên cùng dữ liệu. Nếu mô hình phức tạp hơn vượt trội đáng kể so với mô hình ban đầu trên cả tập huấn luyện và xác thực, điều đó gợi ý mô hình ban đầu có khả năng underfitting do độ phức tạp không đủ.
Bạn có thể theo dõi các so sánh như vậy bằng các công cụ được đề cập trong Machine Learning Experimentation: An Introduction to Weights & Biases.
Bằng cách hiểu các nguyên nhân và phương pháp phát hiện này, bạn có thể chẩn đoán hiệu quả một mô hình underfitting và thực hiện các bước để cải thiện hiệu suất.
Chiến lược giảm thiểu Underfitting và Thực hành tốt
Khi đã xác định underfitting, bước tiếp theo là biết cách khắc phục underfitting. May mắn là có nhiều chiến lược hiệu quả giúp tăng khả năng của mô hình trong việc học các khuôn mẫu tiềm ẩn trong dữ liệu. Hãy xem một số cách:
Tăng cường độ phức tạp của mô hình
Nếu mô hình của bạn quá đơn giản (bias cao), làm cho nó phức tạp hơn thường có thể giải quyết underfitting. Chúng ta có thể làm theo các cách sau:
Lựa chọn thuật toán
Chuyển sang mô hình mạnh hơn. Nếu hồi quy tuyến tính bị underfitting, hãy thử hồi quy đa thức, cây quyết định, rừng ngẫu nhiên, máy tăng cường độ dốc (như XGBoost hoặc LightGBM), hoặc máy vector hỗ trợ (SVM) với kernel phi tuyến. Các mô hình này vốn dĩ có năng lực cao hơn để nắm bắt quan hệ phức tạp.
Mở rộng đặc trưng đa thức
Với bài toán hồi quy, bạn có thể tạo đặc trưng đa thức từ các đặc trưng số hiện có. Điều này cho phép các mô hình tuyến tính khớp quan hệ cong phức tạp hơn. Ví dụ, nếu có đặc trưng x, bạn có thể thêm x2, x3, v.v. làm đặc trưng mới. Scikit-learn cung cấp
PolynomialFeaturesđể thực hiện việc này.Điều chỉnh siêu tham số
Nhiều mô hình phức tạp có siêu tham số kiểm soát độ phức tạp (ví dụ, độ sâu của cây quyết định, số nơ-ron trong một lớp mạng nơ-ron, tham số C trong SVM). Điều chỉnh các siêu tham số này để cho phép mô hình phức tạp hơn có thể giảm bias.
Các kỹ thuật như Grid Search hoặc Randomized Search là thiết yếu ở đây. Tìm hiểu thêm với các khóa học như Hyperparameter Tuning in Python hoặc Hyperparameter Tuning in R. Xem thêm hướng dẫn về Tối ưu siêu tham số trong mô hình học máy.
Kỹ thuật đặc trưng và tăng cường dữ liệu
Đôi khi vấn đề không nằm ở mô hình mà ở cách biểu diễn dữ liệu. Cải thiện đặc trưng có thể giúp đáng kể. Chúng ta có thể làm như sau:
Tạo đặc trưng theo miền bài toán
Dùng kiến thức miền để tạo đặc trưng mới có thể thông tin hơn. Ví dụ, trong dự đoán giá nhà, kết hợp 'số phòng ngủ' và 'số phòng tắm' thành đặc trưng 'tổng số phòng', hoặc tính 'tuổi nhà' từ 'năm xây dựng'.
Đặc trưng tương tác
Tạo đặc trưng biểu diễn tương tác giữa các đặc trưng hiện có (ví dụ, nhân hai đặc trưng). Điều này giúp mô hình nắm bắt hiệu ứng hiệp lực.
Làm giàu dữ liệu
Bổ sung tập dữ liệu bằng nguồn dữ liệu bên ngoài nếu có thể. Ví dụ, thêm dữ liệu nhân khẩu học vào thông tin khách hàng hoặc dữ liệu thời tiết vào dự đoán doanh số.
Tăng cường dữ liệu (chủ yếu cho dữ liệu phi cấu trúc)
Với dữ liệu hình ảnh hoặc văn bản, các kỹ thuật như xoay/lật ảnh hoặc thay thế từ đồng nghĩa trong văn bản có thể tăng kích thước và độ đa dạng của tập huấn luyện một cách nhân tạo, giúp mô hình học các khuôn mẫu bền vững hơn.
Điều chỉnh regularization
Nếu underfitting do regularization quá mức nhằm ngăn overfitting, bạn cần giảm bớt. Hạ giá trị tham số regularization (ví dụ, alpha trong Ridge/Lasso, C trong SVM – lưu ý với SVM, C nhỏ hơn nghĩa là regularization mạnh hơn, nên bạn cần tăng C).
Nếu dùng dropout, hãy giảm tỷ lệ dropout (tỷ lệ nơ-ron bị bỏ qua trong huấn luyện). Tỷ lệ thấp hơn giữ lại nhiều năng lực mạng hơn.
Tìm điểm cân bằng phù hợp thường đòi hỏi điều chỉnh cẩn thận, một lần nữa nhấn mạnh tầm quan trọng của tối ưu siêu tham số.
Phương pháp tổ hợp (Ensemble)
Các phương pháp tổ hợp kết hợp dự đoán từ nhiều mô hình riêng lẻ (weak learner) để tạo ra dự đoán cuối cùng mạnh hơn, vững chắc hơn. Chúng thường rất hiệu quả trong việc giảm cả bias và variance. Một số phương pháp tổ hợp như sau:
Bằng cách áp dụng các chiến lược này, thường là kết hợp với nhau, bạn có thể xử lý hiệu quả underfitting và xây dựng các mô hình nắm bắt tốt hơn độ phức tạp của dữ liệu.
Ứng dụng thực tế và Nghiên cứu tình huống
Quan sát underfitting trong thực tế với các tập dữ liệu và mã có thể làm rõ đáng kể khái niệm này. Hãy xem các ví dụ thực tiễn để minh họa cách một mô hình underfitting hoạt động và cách cải thiện hiệu suất của nó.
Ví dụ underfitting với hồi quy tuyến tính
Một kịch bản underfitting phổ biến xảy ra khi dùng mô hình tuyến tính đơn giản để mô tả mối quan hệ phi tuyến. Hãy minh họa bằng cách thử khớp một mô hình hồi quy tuyến tính với dữ liệu có quy luật bậc hai.
Chúng ta sẽ tạo dữ liệu tổng hợp trong đó biến đích y có quan hệ bậc hai với một đặc trưng X. Trước hết, chúng ta sẽ khớp một mô hình hồi quy tuyến tính đơn giản. Ta sẽ quan sát hiệu suất kém của nó (MSE cao) và trực quan hóa cách nó không nắm bắt được đường cong của dữ liệu.
Sau đó, chúng ta sẽ mở rộng đặc trưng bằng cách thêm hạng đa thức và khớp một mô hình hồi quy đa thức. Điều này sẽ cho thấy cách tăng độ phức tạp mô hình có thể giảm bias và cải thiện đáng kể độ chính xác của mô hình.
Hãy bắt đầu bằng cách nhập các thư viện cần thiết như sau:
Hãy tạo dữ liệu tổng hợp phi tuyến. Chúng ta sẽ tạo dữ liệu có quan hệ bậc hai: y = 0.5*X^2 + X + 2 + nhiễu.
Bây giờ, chúng ta sẽ khớp một mô hình hồi quy tuyến tính đơn giản (Mô hình Underfitting) như dưới đây:
Kết quả:
Tiếp theo, chúng ta sẽ khớp một mô hình hồi quy đa thức (Mô hình cải thiện). Để làm vậy, ta tạo các đặc trưng đa thức (bậc 2) rồi khớp một mô hình tuyến tính với các đặc trưng này. Bước
PolynomialFeaturesthêm các đặc trưng mới. BướcLinearRegressioncó các hệ số cho từng đặc trưng.Với bậc 2, ta kỳ vọng có hệ số cho X và X^2. Pipeline giúp quy trình gọn gàng hơn. Thuộc tính
named_stepscủa pipeline cho phép truy cập từng bước như dưới đây:Kết quả:
Giờ hãy trực quan hóa việc khớp mô hình như dưới đây:
Kết quả:
Biểu đồ xác nhận trực quan underfitting của mô hình tuyến tính đơn giản. Nó không nắm bắt được đường cong trong dữ liệu. Mô hình hồi quy đa thức, nhờ thêm hạng X^2, cho độ khớp tốt hơn nhiều, thể hiện qua MSE thấp hơn.
Điều này cho thấy mở rộng đặc trưng (tăng độ phức tạp mô hình) có thể giảm bias và cải thiện độ chính xác khi mối quan hệ tiềm ẩn là phi tuyến. Tiếp theo, hãy xem một nghiên cứu tình huống chẩn đoán y khoa.
Nghiên cứu tình huống chẩn đoán y khoa
Hãy mô phỏng một kịch bản chẩn đoán y khoa sử dụng bộ dữ liệu Breast Cancer Wisconsin (Diagnostic) nổi tiếng có sẵn trong
scikit-learn.Đầu tiên, chúng ta sẽ cố gắng xây dựng một mô hình phân loại chỉ dùng một tập con đặc trưng rất hạn chế, có thể dẫn tới underfitting. Sau đó, chúng ta sẽ dùng một tập đặc trưng toàn diện hơn và có thể là một thuật toán phức tạp hơn để minh họa sự cải thiện.
Hãy bắt đầu bằng cách nhập các thư viện cần thiết như sau:
Giờ, hãy tải và chuẩn bị dữ liệu:
Để minh họa, hãy chọn một tập hợp đặc trưng rất hạn chế cho kịch bản underfitting. Tự thân chúng có thể không dự báo tốt nhất:
Với mô hình cải thiện, chúng ta sẽ dùng một tập lớn hơn (hoặc toàn bộ đặc trưng). Hãy chọn 10 đặc trưng đầu tiên cho một tập toàn diện hơn:
Hãy chia dữ liệu. Chúng ta sẽ làm riêng cho mỗi tập đặc trưng để rõ ràng:
Hãy chuẩn hóa đặc trưng vì điều này quan trọng đối với logistic regression và nhiều thuật toán khác:
Bây giờ, hãy khớp logistic regression với tập đặc trưng hạn chế:
Kết quả:
Hãy áp dụng chiến lược khắc phục. Chúng ta sẽ khớp logistic regression với nhiều đặc trưng hơn:
Kết quả:
Tiếp theo, hãy khớp một mô hình phức tạp hơn như Random Forest với nhiều đặc trưng:
Kết quả:
Hãy vẽ và so sánh ma trận nhầm lẫn cho từng trường hợp:
Kết quả:
Trong nghiên cứu tình huống này, mô hình
LogisticRegressionban đầu được huấn luyện chỉ với hai đặc trưng (Kịch bản 1) được kỳ vọng underfitting do thông tin không đủ, dẫn đến độ chính xác và AUC kém.Hiệu suất thường cải thiện khi cùng thuật toán được cung cấp tập đặc trưng toàn diện hơn (Kịch bản 2), vì nó có nhiều dữ liệu để học, giảm bias.
Cải thiện hơn nữa thường thấy khi dùng thuật toán phức tạp hơn như
RandomForestClassifiervới tập đặc trưng toàn diện (Kịch bản 3), vì nó có thể nắm bắt tính phi tuyến và tương tác giữa các đặc trưng hiệu quả hơn, tiếp tục giảm bias và nâng cao độ khớp mô hình với dữ liệu.Chủ đề nâng cao và Hướng phát triển
Dù chúng ta đã đề cập các nền tảng, lĩnh vực học máy luôn tiến hóa. Dưới đây là cái nhìn ngắn gọn về cách underfitting liên quan đến các mảng nâng cao hơn.
Vai trò của học sâu
Các mô hình học sâu, đặc biệt là mạng nơ-ron sâu với nhiều tầng, nổi tiếng với năng lực cao, nghĩa là về mặt lý thuyết chúng có thể xấp xỉ các hàm rất phức tạp.
Do độ phức tạp vốn có, các mô hình học sâu nhìn chung ít có khả năng underfitting hơn so với mô hình đơn giản, miễn là được huấn luyện đúng cách trên đủ dữ liệu. Cấu trúc của chúng cho phép tự động học biểu diễn đặc trưng tinh vi từ dữ liệu thô (như điểm ảnh trong ảnh hoặc từ ngữ trong văn bản).
Tuy nhiên, học sâu không miễn nhiễm với các vấn đề trông giống underfitting. Nếu mạng được thiết kế kém (ví dụ, độ sâu/độ rộng không đủ cho tác vụ), không được huấn luyện đủ lâu, hoặc dùng hàm kích hoạt hay thuật toán tối ưu không phù hợp, nó vẫn có thể không hội tụ và thể hiện sai số huấn luyện cao.
Các đổi mới kiến trúc như kết nối dư (ResNet) và kỹ thuật chuẩn hóa (Batch Normalization) giúp huấn luyện mạng rất sâu hiệu quả, giảm thiểu vấn đề gradient biến mất/bùng nổ và cho phép chúng đạt năng lực tối đa, tránh các vấn đề hội tụ giống underfitting.
Học máy tự động (AutoML)
Tìm đúng mô hình, đặc trưng và siêu tham số để tránh cả underfitting và overfitting có thể tốn thời gian. AutoML nhằm tự động hóa quá trình này.
Các khung AutoML có thể tự động khám phá các loại mô hình khác nhau (từ tuyến tính đến tổ hợp phức tạp và mạng nơ-ron), thực hiện kỹ thuật và chọn lọc đặc trưng, cũng như tối ưu siêu tham số. Bằng cách tìm kiếm có hệ thống một không gian khả năng rộng lớn, AutoML có thể xác định cấu hình mô hình có đủ độ phức tạp để tránh underfitting dữ liệu.
Các phương pháp như Neural Architecture Search (NAS) tự động thiết kế kiến trúc mạng, trong khi các kỹ thuật tối ưu siêu tham số tinh vi (ví dụ, Tối ưu Bayesian) hiệu quả tìm ra thiết lập tốt. Những công cụ này có thể tăng tốc đáng kể quá trình tìm mô hình khớp tốt, giảm công sức thủ công cần để chẩn đoán và sửa một mô hình underfitting.
Kết luận
Hiểu bài toán nan giải underfitting vs overfitting là nền tảng cho học máy thành công. Chúng ta đã thấy underfitting xuất hiện khi mô hình quá đơn giản (bias cao) để nắm bắt xu hướng tiềm ẩn trong dữ liệu, dẫn đến hiệu suất kém trên cả dữ liệu huấn luyện và dữ liệu chưa thấy. Nguyên nhân chính gồm độ phức tạp mô hình không đủ, đặc trưng kém, huấn luyện chưa đủ và regularization quá mức.
Chẩn đoán underfitting bao gồm xem xét các chỉ số hiệu suất, vẽ đường học và so sánh mô hình, thường được hỗ trợ bằng mã. May mắn là chúng ta có nhiều chiến lược để khắc phục underfitting: tăng độ phức tạp mô hình (chọn thuật toán tốt hơn, mở rộng đặc trưng, điều chỉnh siêu tham số), cải thiện đặc trưng (kỹ thuật đặc trưng, làm giàu dữ liệu), điều chỉnh regularization và sử dụng các phương pháp tổ hợp mạnh mẽ, như đã minh họa trong các ví dụ mã.
Để học các kỹ thuật này và hơn thế nữa qua các ví dụ thực hành, hãy xem lộ trình kỹ năng Machine Learning Fundamentals in Python của chúng tôi.