Overfitting là cái quái gì

Đây là cuộc hành trình của mình tìm về bản chất của câu chuyện over­fit­ting, un­der­fit­ting và các khái niệm lung tung xung quanh như bias-vari­ance trade­off.

Tài liệu tham khảo chính được lấy từ 2 cuốn sách:

  • Abu-Mostafa, Yaser S., Malik Magdon-Ismail, and Hsuan-Tien Lin. Learning from data. Vol. 4. New York, NY, USA:: AMLBook, 2012.
  • Friedman, Jerome, Trevor Hastie, and Robert Tibshirani. The el­e­ments of sta­tis­ti­cal learn­ing. Vol. 1. New York: Springer se­ries in sta­tis­tics, 2001.

Nếu ai đó nói về hiện tượng over­fit­ting, người nào học ma­chine learn­ing nghiêm chỉnh sẽ nói over­fit­ting là khi mô hình có low bias và high vari­ance. Trong khi đó thì un­der­fit­ting là khi mà mô hình có high bias và low vari­ance. Tuy nhiên, 2 khái niệm quái quỷ này xuất phát từ đâu.

Ta quay trở lại với câu chuyện về ma­chine learn­ing, mà theo bản thân mình, đây chính là thống kê hiện đại”. Nào bắt đầu.

Đặt bối cảnh là học có giám sát (supervised learn­ing), ta có một tập dữ liệu in­put và đồng thời thông tin được gán nhãn (x,y). Trong đa số các thuật toán học giám sát, bản chất của các mô hình chính là việc tìm ta hàm f(x) sao cho hàm này có thể xấp xỉ được y. Bởi ta không thể lấy toàn bộ mẫu của không gian x, nên ta không thể xây dựng chính xác được f(x), đó là lí do ta gọi f(x) là xấp xỉ.

Tuy nhiên, nếu giả sử vì 1 điều nhiệm màu nào đó, và với 1 mô hình huyền bí nào đó, ta thực sự có được F(x), tức với mọi x, F(x) tính chính xác được y. Tuy nhiên ta có 1 điều cần lưu ý, bởi sự gán nhãn, hay y, không phải luôn luôn đúng, nên thay vì y=F(x), ta có:

y=F(x)+ϵ

Với ϵ là nhiễu với mean = 0, vari­ance = σ2.

Và giờ đây là lúc điều kì diệu bắt đầu xuất hiện. Trong đa số các mô hình giám sát, ta muốn tối thiểu độ lỗi của hàm xấp xỉ f(x) và nhãn của dữ liệu. Một độ lỗi phổ biến chính là MSE, ta muốn tối ưu kỳ vọng của MSE này (lý do dùng kỳ vọng bởi ta tính MSE thông qua tập dữ liệu có trong tay):

MSE=E[(yf(x))2] , giờ là lúc trò mèo khai triển bắt đầu, để cho gọn thì f(x)=f, và F(x)=F. Bởi F xác định (bởi đây là hàm duy nhất và tính chính xác quan hệ của x, y), nên E[F]=F. Đồng thời ta có E[y]=E[F(x)+ϵ]=E[F(x)]+E[ϵ]=F+0=F.

Công thức quan trọng nhất trong các khai triển sau: Var[A]=E[A2]E[A]2. (*)

Ta cũng có biểu thức sau:

Var[y]=E[(yE[y])2]=E[(F+ϵF)2]=E[ϵ2]=Var[ϵ]+E[ϵ]2=Var[ϵ]=σ2MSE=E[y22yf+f2]=E[y2]+E[f2]E[2yf]=Var[y]+E[y]2+Var[f]+E[f]22yE[f]$$(Côngthcvàydeterministic).$$=σ2+Var[f]+E[f]22FE[f]+F2$$(bìnhtĩnhkhaitrin)$$=σ2+Var[f]+(FE[f])2=σ2+Var[f]+Bias2

Tạm thời bỏ qua nhiễu của nhãn, ta có 2 hạng tử:

  • Variance: độ biến thiên của mô hình đề xuất, hay trực quan hơn là độ di chuyển của mô hình đề xuất xoay quanh kỳ vọng của nó. Nếu ta có rất nhiều data, và cố gắng fit toàn bộ data đó, một cách nào đó f của ta phải di chuyển rất nhiều dẫn đến vari­ance cao.

  • Bias: khoảng cách giữa kì vọng của mô hình đề xuất và mô hình “thật sự”. Đây chính là chi phí của việc ta đã đơn giản hóa” mô hình thực sự F.

Và giờ ta có thể thực sự hình dung một cách trực quan” mô hình của mình thực sự tốt thế nào.

Nếu ta cố gắng fit mọi điểm trong data đang có, ta sẽ khiến bias nó thực sự thấp (bởi dùng rất nhiều điểm ra kết quả chính xác, nó sẽ rất gần với F thực sự”), nhưng đồng thời đây vari­ance lên cao, hiện tượng over­fit­ting xuất hiện. Điều ngược lại sẽ dễ thấy, nếu ta dùng quá ít data, f sẽ di chuyển ít (variance thấp), tuy nhiên f ta ước tính sẽ rất xa F thực sự (bias cao).

Điều này giúp ta trực quan hơn về các mô hình học:

  • Linear Regression: ta đã giả sử” F thần bí là lin­ear, 1 giả sử quá phiêu và đơn giản, và do đó chi phí” nó sẽ rất cao dẫn đến bias của lin­ear re­gres­sion sẽ cao. Tuy nhiên, vì ta không cố fit chính xác toàn bộ data point dẫn đến vari­ance sẽ thấp.
  • KNN: kNN cố gắng fit toàn bộ data nó đang có (với k càng lớn) dẫn đến bias nó sẽ về 0, nhưng càng lấy nhiều k, độ biến động của f càng cao dẫn đến vari­ance cao.

Biết được bản chất của bias và vari­ance, ta có thể phân tích trực quan” mô hình đề xuất, qua đó có cái nhìn chính xác hơn với mô hình.