Nội suy spline bậc cao


8

Tôi nhận thấy rằng phép nội suy spline với mức độ cao hơn 3 (mọi thứ nằm ngoài spline khối) có lỗi nội suy rất cao, do đó dự đoán chủ yếu là khủng khiếp. Tôi đã bắt gặp nhiều ghi chú bài giảng, slide và video Youtube chỉ đơn giản chỉ ra rằng các khối vuông (độ 3) là tối ưu và bất cứ điều gì ngoài đó là một ý tưởng tồi. Những nguồn này tuy nhiên không bao giờ đề cập tại sao đây là trường hợp.

Bất cứ ai có thể giải thích cho tôi tại sao đây là trường hợp và có thể cho tôi một tiêu đề / liên kết đến một tạp chí / hội nghị giải thích điều này hoặc thậm chí có thể đưa ra một bằng chứng.


1
Tôi phải tham khảo hiện tượng quá mức này, nhưng tôi không thể tìm thấy bất kỳ tài liệu học thuật nào đề cập đến điều này. Các bạn có thể biết về một bài báo / cuốn sách / luận án tôi có thể sử dụng?
goocreations

Câu trả lời:


10

Không có bằng chứng nào như vậy bởi vì nó không phải lúc nào cũng đúng. Đó là một quy tắc, bởi vì tôi đảm bảo rằng bạn có thể đưa ra một tình huống - thực tế là vô số tình huống - trong đó các spline bậc cao sẽ làm tốt hơn các spline khối. Thứ tự spline tối ưu cho bất kỳ tình huống cụ thể nào là thứ tự chính xác giống như hệ thống bạn đang cố gắng mô hình hóa. Nếu thứ tự là như nhau và các điểm dữ liệu của bạn không có lỗi (tất nhiên không bao giờ xảy ra, ngoại trừ trong các vấn đề lý thuyết), thì bạn sẽ có thể mô hình hóa hệ thống một cách hoàn hảo.

Lý do họ khuyên không nên đi cao hơn các khối vuông là vì quá mức thực sự, thực sự tồi tệ. Quá mức có thể làm phóng đại các lỗi rất lớn, trong khi "bảo vệ" (chọn phương pháp spline với thứ tự thấp hơn thứ tự của hệ thống mà bạn đang lập mô hình) giới thiệu một số bộ lọc thông thấp không phải là xấu hoặc đôi khi thậm chí có lợi.


+1. Lưu ý rằng việc chọn mức độ phù hợp thấp hơn so với mô hình được biểu diễn không phải là bộ lọc thông thấp 'giả' - đây một hình thức lọc thông thấp theo đúng nghĩa của nó.
Tarin Ziyaee

@ user4619 Bạn nói đúng. Ý tôi là nó không phải là bộ lọc thông thấp theo nghĩa mà chúng ta thường nghĩ về bộ lọc FIR và IIR, nhưng nó là bộ lọc thông thấp, nó không dễ nhận ra. Chỉnh sửa câu trả lời.
Jim Clay

3

Dưới đây là một phác thảo sơ bộ (có thể đúng hoặc không chính xác). Spline là một phép nội suy đa thức, tức là mọi phần của đường cong giữa các điểm hỗ trợ lân cận là một đa thức. Một đa thức bậc N có hệ số N + 1 (bậc tự do) và do đó có thể thỏa mãn 4 điều kiện biên cho mỗi phần. Sự lựa chọn các điều kiện biên xác định loại nội suy. Đối với một spline đang đánh chính xác các điểm hỗ trợ và tạo ra các đạo hàm thứ nhất và thứ hai liên tục.

Đối với các spline bậc cao hơn, bạn cũng có thể nhận được các đạo hàm bậc cao hơn nhưng điều đó có xu hướng thêm nhiều nội dung tần số cao ở các chuyển tiếp sắc nét hơn và thường dẫn đến "đổ chuông" hoặc dao động quá mức. Các từ gốc "spline" bắt nguồn từ một thước kẻ linh hoạt mà mọi người sử dụng để thực hiện các phép nội suy "cơ học". Tôi nghĩ rằng bạn thực sự có thể hiển thị bằng cách phân tích cơ học thước kẻ spline khối phù hợp với hành vi đó.

Như với hầu hết mọi thứ, nó phụ thuộc vào ứng dụng của bạn và những gì bạn muốn làm. Một thay thế thú vị cho các khối vuông là các phép nội suy ẩn có thể đảm bảo sự đơn điệu và đảm bảo rằng phép nội suy không bao giờ dao động bên ngoài các điểm hỗ trợ. Từ chức năng trợ giúp MATLAB

Tips

spline constructs  in almost the same way pchip constructs . However, spline chooses the slopes at the  differently, namely to make even  continuous. This has the following effects:

   - spline produces a smoother result, i.e.  is continuous.    
   - spline produces a more accurate result if the data consists of values of a smooth function.    
   - pchip has no overshoots and less oscillation if the data are not smooth.    
   - pchip is less expensive to set up.
   - The two are equally expensive to evaluate.

2

Có một số loại spline, với các mục tiêu mâu thuẫn:

  • đi gần các điểm dữ liệu đầu vào
  • đường cong mượt mà so với wiggly

Đối với một vài điểm dữ liệu, bạn có thể muốn nội suy chính xác; nhưng với hàng ngàn điểm, hoặc thậm chí là một tá có nhiễu, nội suy chính xác sẽ ngọ nguậy. Hầu hết các bộ phận spline có các tham số để cân bằng độ gần của độ vừa vặn so với độ mịn tổng thể. Đây là một biểu đồ của các spline cấp 1 (piecewise tuyến tính, kết nối các dấu chấm) với data = line + noise. Bạn thấy rằng việc khớp dữ liệu chính xác theo đường zic zắc lên xuống, trong khi làm mịn tối đa cho một đường thẳng:

nhập mô tả hình ảnh ở đây Có các spline cho các công việc khác nhau, tùy thuộc vào dữ liệu đầu vào và các điểm mới ở giữa: hàng chục / triệu điểm, mức độ ồn ào, phân tán / trên lưới, 1d 2d 3d ... Ví dụ: trên lưới thông thường trong 3d spline độ d sẽ nhìn vào (d+1)3hàng xóm của mỗi điểm truy vấn: 1 (hàng xóm gần nhất), 8 (trilinear), 27, 64 ... Bạn có đủ khả năng 64 không? Bạn có cần 64 không? Nó phụ thuộc.

(Rất ngắn gọn, các B-splines mượt mà; các spline
Catmull-Rom nội suy, ví dụ như các khung phim;
các hỗn hợp như 1/3 B + 2/3 CR rất hữu ích ở giữa.)

Làm thế nào để mức độ đa thức ảnh hưởng đến sự ngu ngốc? Xem hiện tượng của Runge .

Khi overshoot trong 1d 2d 3d ... hãy xem (ahem) câu hỏi này trên math.stackexchange.
Về sự nguy hiểm của EXtrapolation với splines vượt tuyến tính, hãy xem điều này trên SO.

Xem thêm stackoverflow.com/questions/tagged/spline .


-1

Một cách khác để xem xét điều này là bằng cách nhận thấy rằng hầu hết các hình ảnh và bộ dữ liệu thú vị đều "mượt" ở một mức độ nhất định. Ví dụ, nội suy nhiễu gaussian sẽ hoạt động tốt hơn với các spline bậc cao hơn.

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.