Tại sao việc giảm mô hình hồi quy thành mô hình phân loại bằng cách phân tách đầu ra sẽ cải thiện mô hình?


7

Trong các vấn đề hồi quy, nếu đầu ra được phân tách thành các thùng / danh mục / cụm và được sử dụng làm nhãn, mô hình được giảm xuống thành mô hình phân loại.

Câu hỏi của tôi là: động lực lý thuyết hoặc ứng dụng đằng sau việc giảm này là gì? Trong các thử nghiệm cụ thể của tôi về dự đoán vị trí từ văn bản, tôi thường thấy các cải tiến khi tôi mô hình hóa vấn đề dưới dạng phân loại thay vì hồi quy.

Trong trường hợp cụ thể của tôi, đầu ra là 2d nhưng tôi đang tìm kiếm một lời giải thích tổng quát hơn cho việc này.

Cập nhật: Giả sử đầu vào là văn bản BoW và đầu ra là tọa độ (ví dụ như trong dữ liệu Twitter được gắn thẻ địa lý). Trong hồi quy, nhiệm vụ là dự đoán lat / lon cho văn bản bằng cách sử dụng mất bình phương lỗi. Nếu chúng ta phân cụm các điểm lat / lon đào tạo và giả sử mỗi cụm là một lớp thì chúng ta có thể dự đoán một lớp bằng cách tối ưu hóa tổn thất entropy chéo trong mô hình phân loại.

Đánh giá:

Để hồi quy khoảng cách trung bình giữa các vị trí dự đoán và vị trí vàng.

Để phân loại khoảng cách trung bình giữa điểm đào tạo trung bình trong cụm dự đoán và vị trí vàng.


Có rất ít thông tin, bạn có thể tăng cường? Cụ thể, mô hình của bạn là gì?
kjetil b halvorsen

Bạn có đang so sánh hồi quy LINEAR với phân loại nhiều lớp với hàm điểm tuyến tính không? Nếu vậy, sau này rõ ràng là một mô hình biểu cảm hơn.
Sobi

Theo nghĩa nào bạn có nghĩa là "cải thiện"? Làm thế nào bạn đo nó?
Glen_b -Reinstate Monica

Giả sử MLP với văn bản đầu vào BoW trong đó mục tiêu là tọa độ 2D (hồi quy) và sử dụng mất lỗi bình phương và so sánh nó với nơi bạn dự đoán một thành phố hoặc cụm k có nghĩa là các nhãn sử dụng mất mát entropy chéo.
Tro

Câu trả lời:


8

Hãy xem xét các nguồn lỗi cho các dự đoán phân loại của bạn, so với các nguồn dự đoán tuyến tính. Nếu bạn phân loại, bạn có hai nguồn lỗi:

  1. Lỗi từ phân loại vào thùng sai
  2. Lỗi từ chênh lệch giữa giá trị trung bình bin và giá trị đích ("vị trí vàng")

Nếu dữ liệu của bạn có độ ồn thấp, thì bạn thường sẽ phân loại vào đúng thùng. Nếu bạn cũng có nhiều thùng thì nguồn lỗi thứ hai sẽ thấp. Nếu ngược lại, bạn có dữ liệu nhiễu cao, thì bạn có thể phân loại sai vào thùng sai thường xuyên và điều này có thể chi phối lỗi tổng thể - ngay cả khi bạn có nhiều thùng nhỏ, do đó, nguồn lỗi thứ hai là nhỏ nếu bạn phân loại chính xác. Sau đó, một lần nữa, nếu bạn có ít thùng, thì bạn sẽ thường xuyên phân loại chính xác hơn, nhưng lỗi trong thùng của bạn sẽ lớn hơn.

Cuối cùng, nó có thể đi xuống một sự tương tác giữa tiếng ồn và kích thước thùng.

Dưới đây là một ví dụ đồ chơi nhỏ, mà tôi đã chạy trong 200 mô phỏng. Một mối quan hệ tuyến tính đơn giản với tiếng ồn và chỉ có hai thùng:

đào tạo

Bây giờ, hãy chạy cái này với độ ồn thấp hoặc cao. (Tập huấn luyện ở trên có độ ồn cao.) Trong mỗi trường hợp, chúng tôi ghi lại các MSE từ mô hình tuyến tính và từ mô hình phân loại:

nn.sample <- 100
stdev <- 1
nn.runs <- 200
results <- matrix(NA,nrow=nn.runs,ncol=2,dimnames=list(NULL,c("MSE.OLS","MSE.Classification")))

for ( ii in 1:nn.runs ) {
    set.seed(ii)
    xx.train <- runif(nn.sample,-1,1)
    yy.train <- xx.train+rnorm(nn.sample,0,stdev)
    discrete.train <- yy.train>0
    bin.medians <- structure(by(yy.train,discrete.train,median),.Names=c("FALSE","TRUE"))

    # plot(xx.train,yy.train,pch=19,col=discrete.train+1,main="Training")

    model.ols <- lm(yy.train~xx.train)
    model.log <- glm(discrete.train~xx.train,"binomial")

    xx.test <- runif(nn.sample,-1,1)
    yy.test <- xx.test+rnorm(nn.sample,0,0.1)

    results[ii,1] <- mean((yy.test-predict(model.ols,newdata=data.frame(xx.test)))^2)
    results[ii,2] <- mean((yy.test-bin.medians[as.character(predict(model.log,newdata=data.frame(xx.test))>0)])^2)
}

plot(results,xlim=range(results),ylim=range(results),main=paste("Standard Deviation of Noise:",stdev))
abline(a=0,b=1)
colMeans(results)
t.test(x=results[,1],y=results[,2],paired=TRUE)

Tiếng ồn thấp Tiếng ồn cao

Như chúng ta thấy, việc phân loại có cải thiện độ chính xác đến mức độ nhiễu trong ví dụ này hay không.

Bạn có thể chơi xung quanh một chút với dữ liệu mô phỏng hoặc với các kích cỡ thùng khác nhau.

Cuối cùng, lưu ý rằng nếu bạn đang thử các kích cỡ thùng khác nhau và giữ cho các kích thước hoạt động tốt nhất, bạn không nên ngạc nhiên rằng điều này hoạt động tốt hơn mô hình tuyến tính. Rốt cuộc, về cơ bản, bạn đang thêm nhiều mức độ tự do hơn và nếu bạn không cẩn thận (xác thực chéo!), Bạn sẽ kết thúc việc vượt quá các thùng.

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.