Tăng cường độ dốc - dự đoán cực đoan so với dự đoán gần 0,5


7

Giả sử bạn huấn luyện hai mô hình Phân loại Tăng tốc Gradient khác nhau trên hai bộ dữ liệu khác nhau. Bạn sử dụng xác thực chéo một lần và bạn vẽ biểu đồ dự đoán mà hai mô hình đưa ra. Các biểu đồ trông như thế này: nhập mô tả hình ảnh ở đây

và điều này:

nhập mô tả hình ảnh ở đây

Vì vậy, trong một trường hợp, các dự đoán (trên các bộ ngoài mẫu / xác thực) hầu hết là cực trị (gần bằng 0 và 1) và trong các trường hợp dự đoán khác là gần 0,5.

Điều gì, nếu có, có thể được suy ra từ mỗi biểu đồ? Làm thế nào người ta có thể giải thích sự khác biệt? Có thể nói gì về tập dữ liệu / tính năng / mô hình không?

Cảm giác ruột của tôi là trong trường hợp đầu tiên, các tính năng giải thích dữ liệu tốt hơn để mô hình phù hợp hơn với dữ liệu (và có thể vượt qua nó, nhưng không nhất thiết - hiệu suất trên các bộ kiểm tra / xác thực vẫn có thể tốt nếu tính năng thực sự giải thích dữ liệu tốt). Trong trường hợp thứ hai, các tính năng không giải thích tốt dữ liệu và do đó mô hình không khớp quá chặt với dữ liệu. Tuy nhiên, hiệu suất của hai mô hình vẫn có thể giống nhau về độ chính xác và thu hồi. Điều đó có đúng không?

Câu trả lời:


9

Tôi đã chuẩn bị một kịch bản ngắn để thể hiện những gì tôi nghĩ nên là trực giác đúng đắn.

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn import ensemble
from sklearn.model_selection import train_test_split


def create_dataset(location, scale, N):
    class_zero = pd.DataFrame({
        'x': np.random.normal(location, scale, size=N),
        'y': np.random.normal(location, scale, size=N),
        'C': [0.0] * N
    })

    class_one = pd.DataFrame({
        'x': np.random.normal(-location, scale, size=N),
        'y': np.random.normal(-location, scale, size=N),
        'C': [1.0] * N
    })
    return class_one.append(class_zero, ignore_index=True)

def preditions(values):
    X_train, X_test, tgt_train, tgt_test = train_test_split(values[["x", "y"]], values["C"], test_size=0.5, random_state=9)
    clf = ensemble.GradientBoostingRegressor()
    clf.fit(X_train, tgt_train)
    y_hat = clf.predict(X_test)
    return y_hat

N = 10000
scale = 1.0
locations = [0.0, 1.0, 1.5, 2.0]

f, axarr = plt.subplots(2, len(locations))
for i in range(0, len(locations)):
    print(i)
    values = create_dataset(locations[i], scale, N)

    axarr[0, i].set_title("location: " + str(locations[i]))

    d = values[values.C==0]
    axarr[0, i].scatter(d.x, d.y, c="#0000FF", alpha=0.7, edgecolor="none")
    d = values[values.C==1]
    axarr[0, i].scatter(d.x, d.y, c="#00FF00", alpha=0.7, edgecolor="none")

    y_hats = preditions(values)
    axarr[1, i].hist(y_hats, bins=50)
    axarr[1, i].set_xlim((0, 1))

Kịch bản làm gì:

  • nó tạo ra các kịch bản khác nhau trong đó hai lớp ngày càng tách rời nhau - tôi có thể cung cấp ở đây một định nghĩa chính thức hơn về điều này nhưng tôi đoán rằng bạn sẽ có được trực giác
  • nó phù hợp với một bộ hồi quy GBM trên dữ liệu thử nghiệm và đưa ra các giá trị dự đoán cung cấp các giá trị X thử nghiệm cho mô hình được đào tạo

Biểu đồ được sản xuất cho thấy dữ liệu được tạo trong mỗi kịch bản trông như thế nào và nó cho thấy sự phân phối của các giá trị dự đoán. Giải thích: thiếu khả năng phân tách chuyển thành dự đoán ở mức hoặc phải khoảng 0,5.y

Tất cả điều này cho thấy trực giác, tôi đoán rằng không khó để chứng minh điều này theo một cách thức chính thức hơn mặc dù tôi sẽ bắt đầu từ một hồi quy logistic - điều đó sẽ làm cho toán học dễ dàng hơn.

Hình 1


CHỈNH SỬA 1

Tôi đoán trong ví dụ ngoài cùng bên trái, nơi hai lớp không thể tách rời nhau, nếu bạn đặt các tham số của mô hình để vượt quá dữ liệu (ví dụ: cây sâu, số lượng lớn cây và tính năng, tốc độ học tập tương đối cao), bạn vẫn sẽ nhận được mô hình để dự đoán kết quả cực đoan, phải không? Nói cách khác, việc phân phối dự đoán là biểu thị mức độ chặt chẽ của mô hình phù hợp với dữ liệu?

Giả sử rằng chúng ta có một cây quyết định siêu sâu. Trong kịch bản này, chúng ta sẽ thấy phân phối của các giá trị dự đoán đạt cực đại tại 0 và 1. Chúng ta cũng sẽ thấy lỗi đào tạo thấp. Chúng ta có thể làm cho lỗi đào tạo nhỏ tùy ý, chúng ta có thể có cây sâu đó phù hợp với điểm mà mỗi lá của cây tương ứng với một điểm dữ liệu trong tập tàu và mỗi điểm dữ liệu trong tập tàu tương ứng với một lá trong cây. Đó sẽ là hiệu suất kém trong bộ thử nghiệm của một mô hình rất chính xác trong khóa đào tạo đã cho thấy một dấu hiệu rõ ràng về tình trạng thừa. Lưu ý rằng trong biểu đồ của tôi, tôi trình bày các dự đoán trên bộ kiểm tra, chúng có nhiều thông tin hơn.

Thêm một lưu ý: hãy làm việc với ví dụ ngoài cùng bên trái. Chúng ta hãy huấn luyện mô hình trên tất cả các điểm dữ liệu lớp A ở nửa trên của vòng tròn và trên tất cả các điểm dữ liệu lớp B ở nửa dưới của vòng tròn. Chúng ta sẽ có một mô hình rất chính xác, với phân phối các giá trị dự đoán đạt 0 và 1. Các dự đoán trên tập kiểm tra (tất cả các điểm hạng A trong nửa vòng tròn dưới cùng và các điểm lớp B trong nửa vòng tròn trên cùng) cũng sẽ đạt đỉnh 0 và 1 - nhưng chúng sẽ hoàn toàn không chính xác. Đây là một số chiến lược đào tạo "nghịch cảnh" khó chịu. Tuy nhiên, tóm lại: phân phối giảm như mức độ phân tách, nhưng nó không thực sự là vấn đề.


Tôi đoán trong ví dụ ngoài cùng bên trái, nơi hai lớp không thể tách rời nhau, nếu bạn đặt các tham số của mô hình để vượt quá dữ liệu (ví dụ: cây sâu, số lượng cây lớn và tính năng, tốc độ học tập tương đối cao), bạn vẫn sẽ nhận được mô hình để dự đoán kết quả cực đoan, phải không? Nói cách khác, việc phân phối các dự đoán là biểu thị mức độ chặt chẽ của mô hình phù hợp với dữ liệu?
rinspy

1

Đầu tiên tôi sẽ đề nghị sử dụng một bộ dữ liệu thay vì hai để khám phá các dự đoán xác suất đầu ra. Lý do rất đơn giản: nếu chúng ta thay đổi dữ liệu thì không ai biết chuyện gì sẽ xảy ra. Như được trình diễn trong @ IcannotFix, câu trả lời này chính xác cho cùng một mô hình sẽ có đầu ra xác suất khác nhau, nếu dữ liệu thay đổi từ chồng chéo sang tách rời hơn.


Nếu chúng tôi khăng khăng nói về hai tập dữ liệu khác nhau, từ thông tin hạn chế, chúng tôi chỉ có thể nói rằng "có thể dự đoán cực đoan" có nghĩa là mô hình bị quá mức / dữ liệu quá "đơn giản" cho mô hình


1

Các dự đoán thường phụ thuộc vào mô hình của bạn. Cây quyết định nói chung mang lại kết quả đầu ra khá "hiệu chuẩn" gần như có thể được hiểu là xác suất. Một số như SVM chẳng hạn, không. Nhưng điều này cũng phụ thuộc nhiều vào sự phù hợp quá mức / không phù hợp. Hoặc về số lượng tính năng (không, không nhất thiết phải "tốt hơn"). Trên thực tế, nếu đây là một lớp, lớp đầu tiên có thể được trang bị quá mức.

Nhưng điều đầu tiên trước tiên: lớp học khác của bạn ở đâu? Theo dự đoán của bạn, bạn nên luôn vẽ cả hai lớp (với các màu khác nhau). Từ dự đoán của một lớp, bạn không thể nói quá nhiều.

Nếu bạn muốn đo hiệu suất và đưa ra kết luận về mức độ học được từ các tính năng, hãy sử dụng điểm số như ROC AUC trong đó thứ tự của các sự kiện quan trọng chứ không phải phân phối. Nếu bạn có ý định làm việc với các bản phân phối, bạn có thể xem xét các phương pháp hiệu chuẩn xác suất (hoặc đọc phân loại nào mang lại hiệu chuẩn tốt nào). Chúng không hoàn hảo nhưng nhằm mục đích chuyển đổi các dự đoán thành xác suất (và do đó mang lại ý nghĩa cho đầu ra).


0

Kịch bản đầu tiên có thể là do quá phù hợp với dữ liệu đào tạo. Hiệu suất trong mẫu và ngoài mẫu cũng phụ thuộc vào số liệu đánh giá bạn đang sử dụng (hoặc có thể áp dụng cho vấn đề). Bên cạnh việc so sánh các số liệu, hãy thử kiểm tra các ma trận nhầm lẫn để kiểm tra các phân loại sai.

Sử dụng các số liệu như logloss và giới thiệu các tham số chính quy có thể là một tùy chọn khác (Kiểm tra XGBoost - Nó cho phép thêm các tham số chính quy hóa alpha, beta.)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.