Hướng dẫn least absolute deviation regression python - python hồi quy độ lệch tuyệt đối nhỏ nhất

Trong phần này, chúng ta nói về một bước ngoặt nhỏ về việc tạo ra hàm chi phí bình phương nhỏ nhất dẫn đến một chi phí thay thế cho hồi quy tuyến tính được gọi là độ lệch tuyệt đối nhất. Chức năng chi phí thay thế này mạnh mẽ hơn nhiều đối với các ngoại lệ trong bộ dữ liệu so với bình phương nhỏ nhất ban đầu.

Tính nhạy cảm của chi phí bình phương nhỏ nhất đối với Outliers¶

Một nhược điểm của việc sử dụng lỗi bình phương trong chi phí bình phương tối thiểu - như một biện pháp mà sau đó chúng tôi giảm thiểu để khôi phục các tham số hồi quy tuyến tính tối ưu - là bình phương lỗi làm tăng tầm quan trọng của các lỗi lớn hơn. Đặc biệt các lỗi bình phương có độ dài lớn hơn $ 1 $ làm cho các giá trị này lớn hơn đáng kể. Điều này buộc các trọng số đã học được thông qua chi phí bình phương tối thiểu để tạo ra sự phù hợp tuyến tính đặc biệt tập trung vào việc cố gắng giảm thiểu các lỗi lớn này - thường là do các ngoại lệ trong bộ dữ liệu. Nói cách khác, chi phí bình phương nhỏ nhất tạo ra các mô hình tuyến tính có xu hướng vượt quá các ngoại lệ trong bộ dữ liệu.

Chúng tôi minh họa thực tế này thông qua một bộ dữ liệu đơn giản trong ví dụ sau.

Ví dụ 1: Các ô vuông tối thiểu vượt qua Outliers¶ Least Squares overfits to outliers¶

Trong ví dụ này, chúng tôi sử dụng bộ dữ liệu được vẽ bên dưới - phần lớn có thể được biểu diễn bằng một mô hình tuyến tính thích hợp ngoại trừ một ngoại lệ lớn duy nhất - để cho thấy chức năng chi phí bình phương nhỏ nhất cho hồi quy tuyến tính có xu hướng tạo ra các mô hình tuyến tính vượt qua các ngoại lệ.

Bây giờ chúng tôi điều chỉnh các tham số của bộ hồi quy tuyến tính với bộ dữ liệu này bằng cách giảm thiểu chi phí bình phương nhỏ nhất thông qua giảm độ dốc. $ 20 $ Các bước thực sự là đủ trong trường hợp này (vì chúng tôi có thể xác minh bằng cách kiểm tra trực quan biểu đồ lịch sử chức năng chi phí).

Bây giờ chúng tôi vẽ mô hình tuyến tính liên quan đến các trọng số đó cung cấp giá trị hàm chi phí nhỏ nhất trong quá trình chạy bên dưới. Sự phù hợp này (hiển thị màu đen) không phù hợp với phần lớn các điểm dữ liệu, uốn cong lên trên rõ ràng với mục đích giảm thiểu lỗi bình phương lớn trên điểm Outlier Outlier.

Thay thế lỗi bình phương bằng lỗi tuyệt đối

Làm thế nào chúng ta có thể làm cho khung hồi quy tuyến tính của chúng ta mạnh mẽ hơn với các ngoại lệ? Nếu chúng ta trả lại dẫn xuất ban đầu của hàm chi phí bình phương nhỏ nhất trong phần trước, mục tiêu của chúng ta trong việc học một hồi quy tuyến tính là tìm hiểu một tập hợp các trọng số lý tưởng để

\ Begin {phương trình} \ mathring {\ mathbf {x}} _ {p}^t \ mathbf {w}^{\,} \ xấp xỉ \ overset {\,} {y} \, \, \, \, \, \, \, \, p = 1, ..., p \ end {phương trình}

Đối với một bộ dữ liệu của $ p $ points $ \ left \ {\ mathbf {x} _p, \, y_p \ right \} _ {p = 1}^p $. Để tìm hiểu những trọng lượng lý tưởng này, bước đầu tiên chúng tôi thực hiện là để bình phương sự khác biệt giữa cả hai mặt của mỗi xấp xỉ mong muốn - tức là, mỗi lỗi - ở trên như

\ start {y} _p^{\,} \ Right)^2 \, \, \, \, \, \, \, \, p = 1, ..., p. \ end {phương trình}

Mỗi biện pháp này là lỗi bình phương giữa mô hình $ \ mathring {\ mathbf {x}} _ {p}^{t} \ mathbf {w} $ và $ \ overset {\,} {y} _p^{\,} $. Lấy trung bình của các thuật ngữ lỗi bình phương $ p $ này đã cho chúng tôi hàm chi phí bình phương tối thiểu.

Thay vào đó là một giải pháp thay thế cho việc sử dụng một lỗi bình phương cho chi phí thông minh của chúng tôi, thay vào đó, chúng tôi có thể đo lường lỗi tuyệt đối cho mỗi xấp xỉ mong muốn

\ started {phương trình} g_p \ left (\ mathbf {w} \ right) = \ left \ vert \ mathring {\ mathbf {x}} _ {p}^{t} \ mathbf {w} - \ overset {\, } {y} _p^{\,} \ Right \ vert \, \, \, \, \, \, \, \, p = 1, ..., p. \ end {phương trình}

Bằng cách sử dụng lỗi tuyệt đối thay vì giống bình phương, chúng tôi vẫn đối xử với các lỗi tiêu cực và dương tính như nhau, nhưng chúng tôi không phóng đại tầm quan trọng của các lỗi lớn lớn hơn $ 1 $ (tất nhiên, vì chúng tôi không bình phương chúng). Nếu chúng ta hình thành mức trung bình của các chi phí điểm lỗi tuyệt đối này

\ started {phương trình} \, g \ left (\ mathbf {w} \ right) = \ frac {1} {p} \ sum_ {p = 1}^{p} g_p \ left (\ mathbf {w} \ ) = \ frac {1} {p} \ sum_ {p = 1}^{p} \ Left \ vert \ mathring {\ mathbf {x {\,} {y} _p^{\,} \ Right \ Vert. \ end {phương trình}

Giá duy nhất chúng tôi phải trả khi sử dụng lỗi tuyệt đối thay vì lỗi bình phương là một lỗi kỹ thuật: chúng tôi bị hạn chế hơn trong đó các sơ đồ tối ưu hóa chúng tôi có thể áp dụng để giảm thiểu chi phí độ lệch tuyệt đối nhất. Mặc dù hàm chi phí này cũng luôn lồi ra bất kể bộ dữ liệu đầu vào, nhưng chỉ có thể sử dụng các phương thức đơn hàng bằng không / đầu tiên để giảm thiểu đúng phương thức thứ tự thứ hai (vì đạo hàm thứ hai của hàm chi phí này là không ở mọi nơi, như có thể dễ dàng hiển thị) .

Tuy nhiên, bị giới hạn trong việc sử dụng các phương pháp tối ưu hóa cục bộ như giảm độ dốc không phải là sự lên án nghiêm trọng - giảm độ dốc là thuật toán tối ưu hóa được sử dụng rộng rãi nhất trong học máy / học sâu!

Ví dụ 2: Những sai lệch tuyệt đối nhất so với bình phương ít nhất Least absolute deviations versus Least Squares¶

Với loại triết lý thực hiện được mô tả trong phần trước - nơi chúng tôi chia hàm chi phí thành các thành phần cơ bản của nó để thực hiện mô -đun - chúng tôi có thể suy nghĩ tương đương về chi phí trong phương trình (4) là

\ started {phương trình} \, g \ left (\ mathbf {w} \ right) = \ frac {1} {p} \ sum_ {p = 1}^{p} \ left \ vert \ text . \ end {phương trình}

nơi chúng tôi đã biểu thị tuyến tính model của chúng tôi về đầu vào và trọng số là

\ start }. \ end {phương trình}

Khi thực hiện chi phí trong Python, chúng tôi có thể sử dụng hàm model mà chúng tôi đã sử dụng với triển khai bình phương tối thiểu được hiển thị trong ví dụ: Ví dụ 1, vì đây là cách chúng tôi thực hiện kết hợp tuyến tính giữa đầu vào và trọng số của chúng tôi. Tất cả những gì chúng ta cần làm là thay đổi một chút chức năng chi phí để có được triển khai mong muốn của chúng ta, như được hiển thị bên dưới.

Dưới đây chúng tôi vẽ sơ đồ biểu đồ bề mặt / đường viền của hàm chi phí này bằng cách sử dụng bộ dữ liệu được hiển thị trước đó - thực sự đó là lồi.

Dưới đây chúng tôi chạy độ dốc gradient với giá 100 đô la, sử dụng cùng một lựa chọn tham số bước như được sử dụng trong ví dụ trước.

Bây giờ chúng tôi vẽ và so sánh mức độ phù hợp tốt nhất được tìm thấy thông qua giảm độ dốc cho cả hai hàm chi phí trên bộ dữ liệu.Độ phù hợp bình phương nhỏ nhất được thể hiện bằng màu đen, trong khi độ lệch tuyệt đối nhất được thể hiện trong Magenta.Cái sau phù hợp tốt hơn đáng kể, vì nó không phóng đại lỗi lớn được tạo ra bởi một ngoại lệ duy nhất.