Cây quyết định tăng độ dốc

Giống như việc đóng gói và tăng cường, tăng cường độ dốc là một phương pháp được áp dụng bên cạnh một thuật toán máy học khác. Không chính thức, tính năng tăng cường độ dốc bao gồm hai loại mô hình sau:

  • "yếu" mô hình máy học, thường là cây quyết định.
  • a "strong" mô hình máy học, bao gồm nhiều mô hình yếu.

Trong tính năng tăng cường độ dốc, ở mỗi bước, một mô hình yếu mới được đào tạo để dự đoán "lỗi" của mô hình mạnh hiện tại (được gọi là phản hồi giả). Chúng tôi sẽ nêu chi tiết "error" sau này. Hiện tại, giả sử "error" là sự khác biệt giữa gợi ý và nhãn hồi quy. Sau đó, mô hình yếu (nghĩa là "lỗi") sẽ được thêm vào mô hình mạnh với dấu âm để giảm lỗi của mô hình mạnh.

Tăng dần độ dốc. Mỗi lần lặp lại gọi ra công thức sau:

\[ F_{i+1} = F_i - f_i \]

nơi:

  • $F_i$ là mô hình mạnh mẽ ở bước $i$.
  • $f_i$ là mô hình yếu ở bước $i$.

Thao tác này lặp lại cho đến khi đáp ứng tiêu chí dừng, chẳng hạn như số lần lặp tối đa hoặc nếu mô hình (strong) bắt đầu đáp ứng quá mức khi được đo lường trên một tập dữ liệu xác thực riêng.

Hãy minh họa việc tăng cường độ dốc trên một tập dữ liệu hồi quy đơn giản trong đó:

  • Mục tiêu là dự đoán $y$ từ $x$.
  • Mô hình mạnh được khởi tạo là hằng số 0: $F_0(x) = 0$.
# Simplified example of regressive gradient boosting.

y = ... # the labels
x = ... # the features

strong_model = []
strong_predictions = np.zeros_like(y) # Initially, the strong model is empty.

for i in range(num_iters):

    # Error of the strong model
    error = strong_predictions - y

    # The weak model is a decision tree (see CART chapter)
    # without pruning and a maximum depth of 3.
    weak_model = tfdf.keras.CartModel(
        task=tfdf.keras.Task.REGRESSION,
        validation_ratio=0.0,
        max_depth=3)
    weak_model.fit(x=x, y=error)

    strong_model.append(weak_model)

    weak_predictions = weak_model.predict(x)[:,0]

    strong_predictions -= weak_predictions

Hãy áp dụng mã này vào tập dữ liệu sau:

Biểu đồ sự thật cơ bản cho một tính năng, x và nhãn của tính năng đó, y. Cốt truyện là một loạt các chuỗi sin hơi ẩm.

Hình 25. Một tập dữ liệu hồi quy tổng hợp có một tính năng dạng số.

 

Dưới đây là 3 biểu đồ sau lần lặp đầu tiên của thuật toán tăng cường độ dốc:

3 cốt truyện. Biểu đồ đầu tiên cho thấy dự đoán của mô hình mạnh, là một đường thẳng gồm 0 và hệ số chặn y 0. Biểu đồ thứ hai cho thấy lỗi của mô hình mạnh, là một chuỗi các sóng sin. Biểu đồ thứ ba cho thấy dự đoán của mô hình yếu kém (là một tập hợp các sóng vuông).

Hình 26. 3 biểu đồ sau lần lặp đầu tiên.

 

Hãy lưu ý những điều sau về biểu đồ trong Hình 26:

  • Biểu đồ đầu tiên cho thấy dự đoán của mô hình mạnh, hiện luôn bằng 0.
  • Biểu đồ thứ hai cho thấy lỗi, đó là nhãn của mô hình yếu.
  • Biểu đồ thứ ba cho thấy mô hình yếu.

Mô hình yếu đầu tiên là học biểu diễn thô của nhãn và chủ yếu tập trung vào phần bên trái của không gian tính năng (phần có biến thể nhiều nhất, và do đó nhiều lỗi nhất cho mô hình sai liên tục).

Sau đây là các biểu đồ tương tự cho một lần lặp lại khác của thuật toán:

3 cốt truyện. Biểu đồ đầu tiên thể hiện dự đoán của mô hình mạnh, đây là nghịch đảo của biểu đồ dự đoán mô hình yếu kém so với Hình trước. Biểu đồ thứ hai cho thấy lỗi của mô hình mạnh, vốn là một tập hợp nhiễu của các sóng sin. Biểu đồ thứ ba cho thấy dự đoán của mô hình yếu kém (một vài sóng vuông).

Hình 27. 3 biểu đồ sau lần lặp thứ hai.

 

Hãy lưu ý những điều sau về biểu đồ trong Hình 27:

  • Mô hình mạnh hiện chứa dự đoán về mô hình yếu của phiên bản trước đó.
  • Lỗi mới của mô hình mạnh sẽ nhỏ hơn một chút.
  • Dự đoán mới của mô hình yếu ngay bây giờ tập trung vào phần bên phải của không gian tính năng.

Chúng tôi chạy thuật toán thêm 8 lần nữa:

Các đồ thị cho thấy mô hình mạnh dần dần trở nên gần với sự thật hơn, trong khi dự đoán của mô hình yếu dần trở nên kém hơn.

Hình 28. 3 biểu đồ sau lần lặp thứ ba và lần lặp thứ mười.

 

Trong Hình 28, hãy lưu ý rằng cụm từ gợi ý của mô hình mạnh bắt đầu giống biểu đồ của tập dữ liệu.

Những con số này minh hoạ thuật toán tăng cường độ dốc bằng cách sử dụng cây quyết định làm học viên yếu. Tổ hợp này được gọi là cây tăng độ dốc (quyết định).

Các biểu đồ trước cho thấy bản chất của việc tăng cường độ dốc. Tuy nhiên, ví dụ này thiếu hai thao tác thực tế sau:

  • Thu nhỏ
  • Tối ưu hoá giá trị lá bằng một bước của phương thức Newton

Thu hẹp

Mô hình yếu $f_i$ được nhân với một giá trị nhỏ $\nu$ (ví dụ: $\nu = 0, 1$) trước khi được thêm vào mô hình mạnh $F_i$. Giá trị nhỏ này được gọi là rút gọn. Nói cách khác, thay vì mỗi lần lặp lại, hãy sử dụng công thức sau:

\[ F_{i+1} = F_i - f_i \]

Mỗi lần lặp lại sử dụng công thức sau:

\[ F_{i+1} = F_i - \nu f_i \]

Độ co giãn của tính năng tăng cường độ tương tự tương tự như tốc độ học trong mạng nơron. Độ co ngót kiểm soát tốc độ học tập của mô hình mạnh, giúp hạn chế tình trạng quá mức. Điều này có nghĩa là giá trị của tính năng rút gọn gần bằng 0 sẽ giảm mức cung cấp quá nhiều dữ liệu hơn so với giá trị của tính năng rút gọn gần bằng 1, 0.

Trong mã của chúng tôi ở trên, việc rút gọn sẽ được triển khai như sau:

shrinkage = 0.1   # 0.1 is a common shrinkage value.
strong_predictions -= shrinkage * weak_predictions