Cách vẽ đồ thị hàm chi phí trong Python

Đây là bài viết thứ 4 của loạt bài “Deep Learning cho người mới bắt đầu viết mã”. Tại đây, bạn sẽ có thể tìm thấy các liên kết đến tất cả các bài viết, chương trình làm việc và thông tin chung về ngày phát hành ước tính của các bài viết tiếp theo ở cuối bài viết đầu tiên. Chúng cũng có sẵn trong danh mục mã nguồn mở của tôi — MyRoadToAI, cùng với một số dự án nhỏ, bản trình bày, hướng dẫn và liên kết

Bạn cũng có thể đọc bài viết trên trang web cá nhân của tôi, được lưu trữ với Jekyll để cải thiện khả năng đọc (hỗ trợ đánh dấu cú pháp mã, phương trình LaTeX, v.v.

Tóm tắt lại

Bài viết trước đã giới thiệu vấn đề sẽ được giải quyết sau khi triển khai Hồi quy tuyến tính kết thúc. Mục tiêu là dự đoán giá căn hộ Cracow. Bộ dữ liệu bao gồm các mẫu được mô tả bởi ba tính năng. distance_to_city_center, phòng và kích thước. Để đơn giản hóa việc trực quan hóa và làm cho việc học hiệu quả hơn — chỉ tính năng kích thước sẽ được sử dụng

Ngoài ra, công thức toán học đằng sau mô hình hồi quy tuyến tính đã được trình bày và giải thích. Để phương trình hoàn thành, các tham số của nó cần phải được gán giá trị. Sau đó, công thức sẵn sàng trả về một dự đoán số cho bất kỳ mẫu đầu vào đã cho nào

Hai bước được mô tả ở đây được gọi là Khởi tạo và Dự đoán. Cả hai đều được biến thành các hàm Python riêng biệt và được sử dụng để tạo mô hình Hồi quy tuyến tính với tất cả các tham số được khởi tạo bằng 0 và được sử dụng để dự đoán giá cho các căn hộ dựa trên tham số kích thước

Mã được sử dụng để chuẩn bị biểu đồ có sẵn trong liên kết này. Vấn đề tiếp theo cần giải quyết

Mô hình có các tham số hiện tại sẽ trả về 0 cho mọi giá trị của tham số diện tích do tất cả các trọng số của mô hình và độ lệch bằng 0. Bây giờ, hãy sửa đổi các tham số và xem hình chiếu của mô hình thay đổi như thế nào

Mã được sử dụng để chuẩn bị các biểu đồ này có sẵn trong liên kết này

Có hai bộ tham số khiến mô hình Hồi quy tuyến tính trả về giá căn hộ khác nhau cho từng giá trị của đặc điểm kích thước. Do dữ liệu có dạng tuyến tính nên mô hình có thể trở thành công cụ ước lượng chính xác giá sau khi hiệu chỉnh đúng các tham số

câu hỏi để trả lời

Với bộ tham số nào, mô hình trả về kết quả tốt hơn?

  • Quả cam. w = 3 , b = 200
  • Chanh xanh. w = 12 , b = -160

Mặc dù có thể đoán chính xác câu trả lời bằng phán đoán trực quan, nhưng máy tính không tưởng tượng — nó so sánh các giá trị. Đây là nơi mà hàm Chi phí Chi phí đến để trợ giúp

Chức năng ước lượng

Đây là một chức năng đo lường hiệu suất của mô hình Machine Learning đối với dữ liệu đã cho. Hàm chi phí định lượng lỗi giữa giá trị dự đoán và giá trị dự kiến ​​và trình bày nó dưới dạng một số thực. Tùy thuộc vào vấn đề Hàm chi phí có thể được hình thành theo nhiều cách khác nhau. Mục đích của Hàm chi phí là hoặc

  • Tối thiểu hóa - sau đó giá trị được trả về thường được gọi là chi phí, tổn thất hoặc lỗi. Mục tiêu là tìm các giá trị của các tham số mô hình mà Hàm chi phí trả về số nhỏ nhất có thể
  • Tối đa hóa - khi đó giá trị mà nó mang lại được đặt tên là phần thưởng. Mục tiêu là tìm các giá trị của tham số mô hình mà số trả về càng lớn càng tốt

Đối với các thuật toán dựa trên Gradient Descent để tối ưu hóa các tham số mô hình, mọi chức năng phải khả vi

Chức năng chi phí may

Đưa ra một mô hình sử dụng công thức sau

ở đâu

  • ŷ - giá trị dự đoán,
  • x - vectơ dữ liệu được sử dụng để dự đoán hoặc đào tạo,
  • w - trọng lượng

Lưu ý rằng tham số thiên vị được bỏ qua có mục đích. Hãy thử tìm giá trị của tham số trọng số, như vậy đối với các mẫu dữ liệu sau

đầu ra của mô hình càng gần càng tốt với

Bây giờ là lúc gán giá trị ngẫu nhiên cho tham số trọng số và trực quan hóa kết quả của mô hình. Bây giờ hãy chọn w = 5.0

Mã được sử dụng để chuẩn bị biểu đồ có sẵn trong liên kết này

Có thể thấy rằng các dự đoán của mô hình khác với các giá trị dự kiến. Làm thế nào nó có thể được thể hiện bằng toán học? . Bất kỳ kết quả nào khác có nghĩa là các giá trị khác nhau. Kích thước của số nhận được cung cấp thông tin về mức độ nghiêm trọng của lỗi. Từ góc độ hình học, có thể nói rằng sai số là khoảng cách giữa hai điểm trong hệ tọa độ. Hãy xác định khoảng cách là

Theo công thức, tính toán các lỗi giữa các dự đoán và giá trị dự kiến

Như đã nói trước đây, Hàm chi phí là một con số duy nhất mô tả hiệu suất của mô hình. Do đó, hãy tổng hợp các lỗi

Tuy nhiên, bây giờ hãy tưởng tượng có một triệu điểm thay vì bốn. Các lỗi tích lũy sẽ trở thành một con số lớn hơn đối với mô hình đưa ra dự đoán trên tập dữ liệu lớn hơn so với trên tập dữ liệu nhỏ hơn. Do đó, những mô hình đó không thể được so sánh. Đó là lý do tại sao nó phải được thu nhỏ theo một cách nào đó. Ý tưởng đúng là chia các lỗi tích lũy cho số điểm. Chi phí được nêu như vậy có nghĩa là lỗi mà mô hình đã tạo ra cho tập dữ liệu nhất định

Thật không may, công thức chưa hoàn thành. Trước đó, tất cả các trường hợp phải được xem xét, vì vậy, bây giờ hãy thử chọn trọng số nhỏ hơn và xem Hàm chi phí đã tạo có hoạt động không. Bây giờ, trọng lượng sắp được đặt thành w = 0.5

Mã được sử dụng để chuẩn bị biểu đồ có sẵn trong liên kết này

Các dự đoán đã tắt một lần nữa. Tuy nhiên, điểm khác so với trường hợp trước đó là điểm dự đoán thấp hơn điểm dự đoán. Số dự đoán nhỏ hơn. Công thức chi phí sẽ bị trục trặc vì khoảng cách được tính toán có giá trị âm

Giá trị chi phí cũng âm

Không đúng khi nói rằng khoảng cách có thể có giá trị âm. Có thể đính kèm một hình phạt đáng kể hơn cho các dự đoán được đặt ở trên hoặc dưới kết quả dự kiến ​​(một số hàm chi phí làm như vậy, e. g. RMSE), nhưng giá trị không được âm vì nó sẽ loại bỏ các lỗi dương. Sau đó, sẽ trở nên không thể giảm thiểu hoặc tối đa hóa Hàm chi phí một cách hợp lý

Vậy còn việc khắc phục sự cố bằng cách sử dụng giá trị tuyệt đối của khoảng cách thì sao?

Chi phí cho mỗi giá trị của trọng số là

Bây giờ chi phí cho cả hai trọng số w = 5.0w = 0.5 được tính toán chính xác. Có thể so sánh các thông số. Mô hình đạt được kết quả tốt hơn cho w = 0.5 vì giá trị chi phí nhỏ hơn

Chức năng đã được tạo được gọi là Lỗi tuyệt đối trung bình

Có nghĩa là lỗi tuyệt đối

Chỉ số hồi quy đo mức độ lỗi trung bình trong một nhóm dự đoán mà không xem xét hướng của chúng. Nói cách khác, đó là giá trị trung bình của sự khác biệt tuyệt đối giữa các dự đoán và kết quả mong đợi trong đó tất cả các sai lệch riêng lẻ thậm chí còn quan trọng hơn

ở đâu

  • i - chỉ số của mẫu,
  • ŷ - giá trị dự đoán,
  • y - giá trị mong đợi,
  • m - số lượng mẫu trong tập dữ liệu

Đôi khi có thể thấy dạng công thức với giá trị dự đoán và giá trị mong đợi được hoán đổi, nhưng nó hoạt động giống nhau

Hãy biến toán học thành mật mã

Hàm lấy đầu vào là hai mảng có cùng kích thước. predictionsb = 2000. Tham số b = 2001 của công thức, là số lượng mẫu, bằng với độ dài của mảng đã gửi. Nhờ thực tế là các mảng có cùng độ dài nên có thể lặp lại cả hai mảng cùng một lúc. Giá trị tuyệt đối của chênh lệch giữa mỗi b = 2002 và b = 2003 được tính toán và cộng vào biến b = 2004. Sau khi thu thập lỗi từ tất cả các cặp, kết quả tích lũy được tính trung bình theo tham số b = 2001 trả về lỗi MAE cho dữ liệu đã cho

Có nghĩa là lỗi bình phương

Một trong những số liệu hồi quy được sử dụng phổ biến nhất và được giải thích đầu tiên. Chênh lệch bình phương trung bình giữa các dự đoán và kết quả mong đợi. Nói cách khác, một sự thay đổi của MAE thay vì lấy giá trị tuyệt đối của sự khác biệt, chúng được bình phương

Trong MAE, các giá trị lỗi một phần bằng khoảng cách giữa các điểm trong hệ tọa độ. Đối với MSE, mỗi lỗi một phần tương đương với diện tích hình vuông được tạo ra từ khoảng cách hình học giữa các điểm được đo. Tất cả các khu vực khu vực được tổng hợp và trung bình

Mã được sử dụng để chuẩn bị biểu đồ có sẵn trong liên kết này

Công thức MSE có thể được viết như thế này

  • i - chỉ số của mẫu,
  • ŷ - giá trị dự đoán,
  • y - giá trị mong đợi,
  • m - số lượng mẫu trong tập dữ liệu

Có nhiều dạng công thức MSE khác nhau, trong đó mẫu số không chia hết cho hai. Sự hiện diện của nó làm cho phép tính đạo hàm MSE sạch hơn

Tính đạo hàm của phương trình sử dụng giá trị tuyệt đối là vấn đề. Thay vào đó, MSE sử dụng phép lũy thừa và do đó có các thuộc tính toán học tốt giúp cho việc tính toán đạo hàm của nó dễ dàng hơn so với MAE. Nó có liên quan khi sử dụng một mô hình dựa trên thuật toán Gradient Descent

MSE có thể được viết bằng Python như sau

Sự khác biệt duy nhất từ, được giới thiệu trong đoạn trước, hàm b = 2006 là

  • sự khác biệt giữa b = 2002 và b = 2003 là bình phương,
  • b = 2009 ở mẫu số trung bình
Sự khác biệt giữa MAE và MSE

Có nhiều số liệu hồi quy hơn có thể được sử dụng làm Hàm chi phí để đo hiệu suất của các mô hình cố gắng giải quyết các vấn đề hồi quy (ước tính giá trị). MAE và MSE dường như tương đối đơn giản và rất phổ biến

Tại sao có rất nhiều chỉ số?

Mỗi số liệu xử lý sự khác biệt giữa các quan sát và kết quả mong đợi theo một cách riêng. Khoảng cách giữa kết quả lý tưởng và dự đoán đang bị phạt theo số liệu, dựa trên độ lớn và hướng trong hệ tọa độ. Ví dụ: một số liệu khác, chẳng hạn như RMSE, sẽ xử phạt mạnh mẽ hơn các dự đoán có giá trị thấp hơn mong đợi so với các giá trị cao hơn. Việc sử dụng nó có thể dẫn đến việc tạo ra một mô hình trả về các ước tính bị thổi phồng

MAE và MSE xử lý sự khác biệt giữa các điểm như thế nào?

Bảng trình bày sai số của nhiều model được tạo với thông số trọng lượng khác nhau. Chi phí của từng mô hình được tính bằng cả hai chỉ số MAE và MSE

Và hiển thị nó trên đồ thị

Các biểu đồ cho thấy giá trị chỉ số thay đổi như thế nào đối với các giá trị khác nhau của tham số w. Mã được sử dụng để chuẩn bị các biểu đồ này có sẵn trong liên kết này

Có thể quan sát thấy rằng

  • MAE không thêm bất kỳ trọng số bổ sung nào vào khoảng cách giữa các điểm - sự gia tăng sai số là tuyến tính
  • Lỗi MSE tăng theo cấp số nhân với các giá trị khoảng cách lớn hơn. Đó là một số liệu bổ sung một hình phạt lớn đối với các điểm ở xa và một hình phạt tối thiểu đối với các điểm gần với kết quả mong đợi. Đường cong lỗi có dạng parabol

Ngoài ra, bằng cách kiểm tra các giá trị trọng số khác nhau, có thể tìm thấy tham số cho lỗi bằng 0. Nếu w = 120 được sử dụng để xây dựng mô hình, thì các dự đoán sẽ như sau

Mã được sử dụng để chuẩn bị biểu đồ có sẵn trong liên kết này

Khi dự đoán và kết quả mong đợi trùng nhau, thì giá trị của từng Hàm chi phí hợp lý bằng không

Câu trả lời

Đã đến lúc trả lời câu hỏi về bộ thông số nào, màu cam hay màu vàng chanh, tạo ra công cụ ước lượng tốt hơn cho giá căn hộ ở Cracow. Hãy sử dụng MSE để tính toán sai số của cả hai mô hình và xem mô hình nào thấp hơn

Phần lớn mã đã được giải thích trong bài viết trước. Thay vì gọi hàm w = 121, từ điển tham số được tạo thủ công cho mục đích thử nghiệm. Lưu ý rằng cả hai mô hình lần này đều sử dụng độ lệch. Hàm w = 122 đã được sử dụng cho cùng một dữ liệu với đối số w = 123 khác nhau. Sau đó, kết quả dự đoán có tên w = 124 và w = 125 trở thành đối số cho hàm w = 126 trả về giá trị lỗi cho từng mô hình riêng biệt

Kết quả như sau

  • trái cam. 4909. 18
  • Vôi. 10409. 77

điều đó có nghĩa là các tham số màu cam tạo ra mô hình tốt hơn vì chi phí nhỏ hơn

Tóm lược

Trong bài viết này, tôi đã giải thích ý tưởng về Hàm Chi phí - một công cụ cho phép chúng ta đánh giá các tham số của mô hình. Tôi đã giới thiệu cho bạn hai thước đo hồi quy thường được sử dụng nhất MAE và MSE

Trong bài viết tiếp theo, tôi sẽ hướng dẫn các bạn cách huấn luyện các tham số mô hình bằng thuật toán Gradient Descent

RMSE có phải là một hàm chi phí không?

Trong điều chỉnh mô hình, hàm chi phí có thể muốn kết hợp cả Lỗi tuyệt đối trung bình (MAE) và Lỗi bình phương trung bình gốc (RMSE) . Các hàm chi phí với nhiều điều khoản cần một cách để cân bằng hai điều khoản, tùy theo mức độ bạn đánh giá cái này so với cái kia.

Hàm chi phí trong hồi quy tuyến tính là gì?

Đối với mô hình hồi quy tuyến tính, hàm chi phí sẽ là mức tối thiểu của Sai số bình phương trung bình gốc của mô hình, thu được bằng cách lấy giá trị thực tế trừ đi các giá trị dự đoán. The cost function will be the minimum of these error values.

Hàm chi phí được biểu diễn như thế nào trong hồi quy logistic?

Hàm chi phí được sử dụng trong Hồi quy logistic là Mất nhật ký .

Tại sao chức năng chi phí được chia cho 2m?