Là spline quá mức dữ liệu?


47

Vấn đề của tôi : Gần đây tôi đã gặp một nhà thống kê thông báo cho tôi rằng spline chỉ hữu ích cho việc khám phá dữ liệu và phải chịu quá nhiều, do đó không hữu ích trong dự đoán. Anh ấy thích khám phá với các đa thức đơn giản ... Vì tôi là một fan hâm mộ lớn của spline, và điều này đi ngược lại với trực giác của tôi, tôi quan tâm đến việc tìm hiểu các đối số này có giá trị như thế nào, và nếu có một nhóm lớn chống spline- Nhà hoạt động ngoài kia?

Bối cảnh : Tôi cố gắng theo Frank Harrell, Regression Modelling Strategies (1), khi tôi tạo các mô hình của mình. Ông lập luận rằng các khối vuông bị hạn chế là một công cụ hợp lệ để khám phá các biến liên tục. Ông cũng lập luận rằng các đa thức rất kém trong việc mô hình hóa các mối quan hệ nhất định như ngưỡng, logarit (2). Để kiểm tra tính tuyến tính của mô hình, ông đề xuất một thử nghiệm ANOVA cho spline:

H0:β2= =β3= =Giáo dục= =βk-1= =0

Tôi đã googled vì quá nhiều với spline nhưng không thấy hữu ích lắm (ngoài những cảnh báo chung về việc không sử dụng quá nhiều nút thắt). Trong diễn đàn này dường như có một ưu tiên cho mô hình spline, Kolassa , Harrell , gung .

Tôi tìm thấy một bài viết trên blog về đa thức, ma quỷ của việc nói quá nhiều nói về việc dự đoán đa thức. Bài đăng kết thúc với những bình luận sau:

Trong một chừng mực nào đó, các ví dụ được trình bày ở đây là gian lận - hồi quy đa thức được biết là không mạnh mẽ. Trong thực tế tốt hơn là sử dụng spline chứ không phải đa thức.

Bây giờ điều này nhắc tôi kiểm tra xem splines sẽ thực hiện như thế nào với ví dụ:

library(rms)
p4 <- poly(1:100, degree=4)
true4 <- p4 %*% c(1,2,-6,9)
days <- 1:70

set.seed(7987)
noise4 <- true4 + rnorm(100, sd=.5)
reg.n4.4 <- lm(noise4[1:70] ~ poly(days, 4))
reg.n4.4ns <- lm(noise4[1:70] ~ ns(days,4))
dd <- datadist(noise4[1:70], days)
options("datadist" = "dd")
reg.n4.4rcs_ols <- ols(noise4[1:70] ~ rcs(days,5))

plot(1:100, noise4)
nd <- data.frame(days=1:100)
lines(1:100, predict(reg.n4.4, newdata=nd), col="orange", lwd=3)
lines(1:100, predict(reg.n4.4ns, newdata=nd), col="red", lwd=3)
lines(1:100, predict(reg.n4.4rcs_ols, newdata=nd), col="darkblue", lwd=3)

legend("top", fill=c("orange", "red","darkblue"), 
       legend=c("Poly", "Natural splines", "RCS - ols"))

Cho hình ảnh sau: Một so sánh của spline và đa thức

Để kết luận tôi đã không tìm thấy nhiều điều sẽ thuyết phục tôi về việc xem xét lại các spline, tôi còn thiếu gì?

  1. FE Harrell, Chiến lược mô hình hồi quy: Với các ứng dụng cho mô hình tuyến tính, hồi quy logistic và phân tích sinh tồn, tái bản bìa mềm bìa cứng lần thứ nhất. 2001. Mùa xuân, 2010.
  2. FE Harrell, KL Lee và BG Pollock, mô hình hồi quy của Hồi giáo trong nghiên cứu lâm sàng: Xác định mối quan hệ giữa các yếu tố dự đoán và phản ứng, Hồi JNCI J Natl Cancer Inst, vol. 80, không. 15, trang 1198 bia1202, tháng 10 năm 1988.

Cập nhật

Các bình luận khiến tôi tự hỏi điều gì xảy ra trong khoảng dữ liệu nhưng với những đường cong khó chịu. Trong hầu hết các tình huống tôi không đi ra ngoài ranh giới dữ liệu, như ví dụ trên chỉ ra. Tôi không chắc điều này đủ điều kiện dự đoán ...

Dù sao đây là một ví dụ nơi tôi tạo ra một dòng phức tạp hơn không thể dịch thành đa thức. Vì hầu hết các quan sát đều nằm ở trung tâm của dữ liệu, tôi cũng đã cố gắng mô phỏng điều đó:

library(rms)
cmplx_line <-  1:200/10
cmplx_line <- cmplx_line + 0.05*(cmplx_line - quantile(cmplx_line, .7))^2
cmplx_line <- cmplx_line - 0.06*(cmplx_line - quantile(cmplx_line, .3))^2
center <- (length(cmplx_line)/4*2):(length(cmplx_line)/4*3)
cmplx_line[center] <- cmplx_line[center] + 
    dnorm(6*(1:length(center)-length(center)/2)/length(center))*10

ds <- data.frame(cmplx_line, x=1:200)

days <- 1:140/2

set.seed(1234)
sample <- round(rnorm(600, mean=100, 60))
sample <- sample[sample <= max(ds$x) & 
                     sample >= min(ds$x)]
sample_ds <- ds[sample, ]

sample_ds$noise4 <- sample_ds$cmplx_line + rnorm(nrow(sample_ds), sd=2)
reg.n4.4 <- lm(noise4 ~ poly(x, 6), data=sample_ds)
dd <- datadist(sample_ds)
options("datadist" = "dd")
reg.n4.4rcs_ols <- ols(noise4 ~ rcs(x, 7), data=sample_ds)
AIC(reg.n4.4)

plot(sample_ds$x, sample_ds$noise4, col="#AAAAAA")
lines(x=ds$x, y=ds$cmplx_line, lwd=3, col="black", lty=4)

nd <- data.frame(x=ds$x)
lines(ds$x, predict(reg.n4.4, newdata=ds), col="orange", lwd=3)
lines(ds$x, predict(reg.n4.4rcs_ols, newdata=ds), col="lightblue", lwd=3)

legend("bottomright", fill=c("black", "orange","lightblue"), 
       legend=c("True line", "Poly", "RCS - ols"), inset=.05)

Điều này đưa ra cốt truyện sau:

Một cốt truyện phi đa thức phức tạp hơn

Cập nhật 2

Vì bài đăng này tôi đã xuất bản một bài viết có vẻ phi tuyến tính theo tuổi trên một tập dữ liệu lớn. Phần bổ sung so sánh các phương pháp khác nhau và tôi đã viết một bài đăng trên blog về nó .


16
Tôi thực sự không thấy người bạn thống kê của bạn đến từ đâu, phải trung thực. Bạn có thể overfit với đa thức và splines giống nhau. Quá mức đến từ lớp mô hình của bạn có năng lực quá mức; những gì phân biệt hiệu suất của các mô hình khác nhau là cách họ hạn chế năng lực của họ. Đối với splines (tự nhiên), đó là vị trí và số nút, đối với đa thức nó là mức độ.
anh chàng

1
@guy: Đó cũng là niềm tin của tôi, bạn luôn có thể điều chỉnh dữ liệu của mình bất kể bạn sử dụng phương pháp nào. Trong lớp hồi quy của mình, giáo sư của tôi đã nói với tôi rằng đa thức uốn cong nơi phần lớn dữ liệu xảy ra, do đó làm cho các cực trị không đáng tin cậy hơn. Mặc dù tôi không tìm thấy bất kỳ bài viết nào ủng hộ yêu cầu này.
Max Gordon

Tất cả các đường cong trong biểu đồ đầu tiên của bạn không khớp với dữ liệu ở phía bên tay phải.
Emil Friedman

1
Là kích thước 'x' trong các biểu đồ trên có liên quan đến thời gian không? Nếu đúng như vậy, không có phương pháp nào trong số các phương pháp này là phù hợp, bởi vì cả hai phương pháp này đều 'hướng về phía trước' theo nghĩa là chúng sử dụng các điểm lân cận (ở cả hai phía) để mô hình hóa.
thân

@arielf: Không có x không có ý định như một biến thời gian. Tôi nghĩ về nó như một số biến trong đó chúng tôi lấy mẫu số lượng quan sát tối đa tại trung tâm. Trong nghiên cứu của mình, chúng ta không nhìn vào tương lai nhiều như vậy, tôi đoán nó nằm trong lĩnh vực suy luận nhiều hơn là dự đoán. Biến này được dự định là cholesterol, huyết áp, BMI hoặc một số biến liên tục phổ biến khác.
Max Gordon

Câu trả lời:


18

Quá mức đến từ việc cho phép một lớp mô hình quá lớn. Điều này có một chút khó khăn với các mô hình có tham số liên tục (như spline và đa thức), nhưng nếu bạn phân tách các tham số thành một số giá trị riêng biệt, bạn sẽ thấy rằng việc tăng số lượng nút / hệ số sẽ tăng số lượng mô hình có sẵn theo cấp số nhân . Đối với mỗi tập dữ liệu có một spline và một đa thức phù hợp chính xác, miễn là bạn cho phép đủ hệ số / nút thắt. Nó có thể là một spline với ba nút thắt trang phục nhiều hơn một đa thức với ba hệ số, nhưng đó không phải là một so sánh công bằng.

Nếu bạn có số lượng tham số thấp và bộ dữ liệu lớn, bạn có thể chắc chắn chắc chắn rằng mình không bị thừa. Nếu bạn muốn thử số lượng tham số cao hơn, bạn có thể thử xác thực chéo trong bộ kiểm tra của mình để tìm số tốt nhất hoặc bạn có thể sử dụng một tiêu chí như Độ dài mô tả tối thiểu .

εε

viết sai rồiviết sai rồi+1giá trị tham số. Với thông tin này, người nhận mã của chúng tôi có thể khôi phục đa thức. Sau đó, chúng tôi thêm phần còn lại của thông tin cần thiết để lưu trữ tập dữ liệu. Đối với mỗi datapoint, chúng tôi đưa ra giá trị x, và sau đó có bao nhiêu hộp lên hoặc xuống điểm dữ liệu nằm ngoài đa thức. Cả hai giá trị chúng tôi lưu trữ trong mã hóa không có tiền tố để các giá trị ngắn yêu cầu vài bit và chúng tôi sẽ không cần các dấu phân cách giữa các điểm. (Bạn có thể rút ngắn mã cho các giá trị x bằng cách chỉ lưu trữ số gia giữa các giá trị)

Điểm cơ bản ở đây là sự đánh đổi. Nếu tôi chọn đa thức bậc một (như f (x) = 3,4), thì mô hình rất đơn giản để lưu trữ, nhưng đối với các giá trị y, về cơ bản tôi sẽ lưu trữ khoảng cách đến giá trị trung bình. Nhiều hệ số hơn cho tôi một đa thức phù hợp tốt hơn (và do đó mã ngắn hơn cho các giá trị y), nhưng tôi phải dành nhiều bit hơn để mô tả mô hình. Mô hình cung cấp cho bạn mã ngắn nhất cho dữ liệu của bạn là phù hợp nhất theo tiêu chí MDL.

(Lưu ý rằng điều này được gọi là 'MDL thô' và có một số tinh chỉnh bạn có thể thực hiện để giải quyết các vấn đề kỹ thuật khác nhau).


Cảm ơn bạn Peter cho câu trả lời của bạn. Tôi đã cố gắng quấn đầu quanh MDL, đặc biệt là cách áp dụng nó. Thật tuyệt khi được giải thích dựa trên một trong những ví dụ của tôi. Là một người không thống kê, tôi thích có những điều mẫu mực trước khi tôi có thể hiểu được hậu cần cơ bản. Ví dụ về đồng xu trong bài viết Wiki không đến được với tôi ...
Max Gordon

Tôi đã thêm một ví dụ.
Peter

Cảm ơn Peter vì ví dụ, nó rõ ràng hơn nhiều đối với tôi bây giờ.
Max Gordon

20

Các nhà thống kê đã tranh luận về sự phù hợp đa thức trong nhiều thời đại, và theo kinh nghiệm của tôi, điều này dẫn đến điều này:

Splines về cơ bản là một loạt các phương trình khác nhau được ghép lại với nhau, chúng có xu hướng tăng độ chính xác của các giá trị nội suy với chi phí của khả năng chiếu ngoài phạm vi dữ liệu. Điều này tốt nếu bạn biết dữ liệu của mình là thuần túy và đến từ một nguồn nhất quán và nếu bạn đang cố gắng mô tả khả năng có sự hiện diện của các giá trị khác nhau trong phạm vi giá trị của bạn. Tuy nhiên, chúng ta thường không tìm hiểu nhiều về nền tảng lý thuyết điều khiển dữ liệu của mình, vì một spline mới bắt đầu khi spline cũ dừng mô tả chính xác dữ liệu. Điều này làm cho dự đoán về các giá trị bên ngoài dữ liệu của chúng tôi gần như vô giá trị.

Bây giờ, splines không phải là duy nhất trong khía cạnh này. Các hàm đa thức thực sự gặp phải vấn đề tương tự nếu chúng ta chỉ khớp dữ liệu và không sử dụng khung lý thuyết để chọn các biến. Những người có một lý thuyết được hình thành tốt sẽ điều khiển các biến nào cho phép thay đổi và mức độ tin cậy của hàm đa thức phức tạp sẽ ngoại suy các dự đoán bên ngoài dữ liệu.

Tuy nhiên, nhiều nhà thống kê đang làm việc với dữ liệu mà không có sự trợ giúp từ khung lý thuyết đã được thiết lập sẵn và điều này đẩy một số người tới các đa thức đơn giản. Họ cho rằng một chức năng kém linh hoạt phù hợp với dữ liệu có nhiều khả năng dự đoán chính xác các giá trị bên ngoài dữ liệu, bởi vì chức năng này ít có khả năng bị ảnh hưởng bởi sự bất thường trong dữ liệu. Trong khi tôi đã nói chuyện về vấn đề này với những người thích đa thức đơn giản, tôi chưa bao giờ có cảm giác về một nhóm chống spline. Cảm giác giống như đa thức đơn giản làm cho một số nhà thống kê cảm thấy thoải mái hơn về việc tránh quá mức.

Khước từ

Cá nhân, tôi không có xu hướng sử dụng spline hoặc đa thức đơn giản với hầu hết dữ liệu của mình, vì tôi làm việc trong một lĩnh vực có nhiều khung lý thuyết được thiết lập sẵn. Ngoài ra, tôi thường quan sát việc thu thập dữ liệu và có thể hiểu rõ về những gì đang dẫn đến kết quả. Trong trường hợp đó, tôi đang xây dựng nhiều thuật toán logic hơn và kiểm tra mức độ phù hợp của thuật toán, thay vì kiểm tra mức độ phù hợp của hàm đa thức. Bạn có thể thêm hạt muối này vào câu trả lời của tôi.


18
Đa thức là xa hơn nhạy cảm với dị tật trong dữ liệu hơn splines đang có. Một ngoại lệ ở bất cứ nơi nào trong tập dữ liệu đều có hiệu ứng toàn cầu lớn , trong khi ở các biểu tượng thì hiệu ứng là cục bộ.
chàng trai

Tôi thấy quan điểm của bạn và điều đó đúng nếu bạn đang sử dụng một cách tiếp cận thông tin hoàn hảo hoặc không có đủ thông tin về bản chất của dữ liệu. Nhiều nhà thống kê (bao gồm cả tôi) cho rằng thông tin không hoàn hảo và cố gắng áp dụng các tiêu chí loại trừ dựa trên thông tin đã biết trước khi cố gắng phù hợp với dữ liệu. Các ngoại lệ nguy hiểm về mặt lý thuyết nên được loại trừ khỏi nỗ lực phù hợp. Nếu bạn không có thông tin đã biết về bản chất của dữ liệu (và điều này khá phổ biến), thì bạn sẽ bị mắc kẹt khi cố gắng làm việc xung quanh các ngoại lệ.
Dinre

5
Tôi sẽ phải được thuyết phục tốt hơn rằng hồi quy splines ngoại suy nguy hiểm hơn đa thức.
Frank Harrell

1
Đây không phải là bất cứ điều gì mới. Thay vào đó, đó là sự khác biệt nhìn thấy giữa các thống kê được thực hiện trong giai đoạn đầu của sự hiểu biết so với giai đoạn hiểu biết sau này. Bạn càng hiểu một hệ thống, bạn càng ít dựa vào các chức năng được trang bị và bạn càng dựa vào các mô hình lý thuyết.
Dinre

1
Làm thế nào về việc sử dụng các khối vuông bị hạn chế, điều này buộc các hàm phải tuyến tính ở bên ngoài các điểm dữ liệu (Tôi đang đọc sách của Mitchell). Dù sao ngoại suy luôn luôn đáng ngờ. Hãy nghĩ về một thí nghiệm phát hiện ra tính siêu dẫn hoặc plasma. Lý thuyết cần được chứng minh thông qua các thí nghiệm! Tôi nghĩ những chức năng nào phù hợp có liên quan nhiều hơn đến vấn đề nội suy. Nếu không có lý thuyết, tôi đoán bạn sẽ không thể chọn chỉ một mô hình với các yếu tố dự đoán (cũng là phân phối không xác định) và phân phối không xác định của y | x, ngay cả khi bạn cung cấp đủ dữ liệu.
KH Kim
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.