Hướng dẫn polynomial regression python from scratch github - hồi quy đa thức python từ đầu github

Polynomial-Regression-From-Scratch

Hồi quy đa thức sử dụng phương trình bình thường và phương pháp giảm độ dốc.

Phụ thuộc

  • Numpy
  • Matplotlib
  • Scipy

Giấy phép

Mã này được cấp phép theo giấy phép MIT - xem tệp giấy phép.md để biết chi tiết.

Tóm tắt

Mục tiêu của hồi quy đa thức là phù hợp với đa thức độ thứ n với dữ liệu để thiết lập mối quan hệ chung giữa biến độc lập X và biến phụ thuộc y. Hồi quy đa thức là một dạng đặc biệt của hồi quy tuyến tính, trong đó mục tiêu là giảm thiểu hàm chi phí được đưa ra bởi:

Hướng dẫn polynomial regression python from scratch github - hồi quy đa thức python từ đầu github

và giả thuyết được đưa ra bởi mô hình tuyến tính:

Lớp PolynomialRegression có thể thực hiện hồi quy đa thức bằng hai phương pháp khác nhau: phương trình bình thường và giảm độ dốc. Phương pháp bình thường sử dụng giải pháp biểu mẫu đóng cho hồi quy tuyến tính:

và không yêu cầu tính toán lặp hoặc tỷ lệ tính năng. Độ dốc gốc là một cách tiếp cận lặp đi lặp lại, tăng theo hướng của hàm gradient của hàm chi phí.

Mã Ví dụ 1: Phương pháp phương trình bình thường

x_pts, y_pts = generatePolyPoints(0, 50, 100, [5, 1, 1], 
                                  noiseLevel = 2, plot = 1)
PR = PolynomialRegression(x_pts, y_pts)
theta = PR.fit(method = 'normal_equation', order = 2)
PR.plot_predictedPolyLine()

Mã Ví dụ 2: Phương pháp giảm dần độ dốc

x_pts, y_pts = generatePolyPoints(0, 50, 100, [5, 1, 1], 
                                  noiseLevel = 2, plot = 1)
PR = PolynomialRegression(x_pts, y_pts)
theta = PR.fit(method = 'gradient_descent',  order = 2, tol = 10**-3, numIters = 100, learningRate = 10**-4)
PR.plot_predictedPolyLine()
PR.plotCost()

Hướng dẫn polynomial regression python from scratch github - hồi quy đa thức python từ đầu github

Một thẻ đã tồn tại với tên chi nhánh được cung cấp. Nhiều lệnh GIT chấp nhận cả tên thẻ và tên chi nhánh, vì vậy việc tạo nhánh này có thể gây ra hành vi bất ngờ. Bạn có chắc là bạn muốn tạo chi nhánh này?

Một thẻ đã tồn tại với tên chi nhánh được cung cấp. Nhiều lệnh GIT chấp nhận cả tên thẻ và tên chi nhánh, vì vậy việc tạo nhánh này có thể gây ra hành vi bất ngờ. Bạn có chắc là bạn muốn tạo chi nhánh này?

Polynomial_Regression_From_Scratch

Tôi đã triển khai một mô hình hồi quy tuyến tính và mô hình hồi quy đa thức với một biến đầu vào duy nhất bằng thuật toán giảm độ dốc. Mô hình hồi quy đa thức của tôi có thể được sử dụng cho bất kỳ mức độ nào. Vì các hàm tuyến tính về cơ bản là một hàm đa thức với mức độ 1, nên việc tự thực hiện mô hình hồi quy tuyến tính là không cần thiết.

Tôi ngẫu nhiên chọn các giá trị nổi giữa -1 và 1 để sử dụng làm trọng số ban đầu cho tất cả các tham số trong hàm. Tính đúng của dòng dự đoán được tính toán với hàm sai số bình phương trung bình (MSE). Chương trình phá vỡ vòng lặp khi sự khác biệt giữa hai giá trị lỗi liên tiếp thấp hơn ngưỡng 10^(-7) cho hồi quy tuyến tính và 10^(-8) cho hồi quy đa thức. Nó cũng ngừng lặp lại khi đã đạt được số lần lặp tối đa, điều này chỉ xảy ra khi tỷ lệ học tập và ngưỡng quá thấp.

Giải pháp phân tích

Hồi quy tuyến tính cũng có thể được tính toán với giải pháp phân tích. Công thức cho giải pháp phân tích như sau: θ biểu thị hàm giải pháp phân tích, x biểu thị các giá trị x của tập dữ liệu của chúng tôi, biểu thị sự chuyển đổi của ma trận X, biểu thị nghịch đảo của sản phẩm chấm và ma trận X, biểu thị các giá trị y trong Bộ dữ liệu của chúng tôi.

Hướng dẫn polynomial regression python from scratch github - hồi quy đa thức python từ đầu github
θ represents the analytical solution function, X represents the x values of our dataset,
Hướng dẫn polynomial regression python from scratch github - hồi quy đa thức python từ đầu github
represents the transpose of the x matrix,
Hướng dẫn polynomial regression python from scratch github - hồi quy đa thức python từ đầu github
represents the inverse of the dot product of
Hướng dẫn polynomial regression python from scratch github - hồi quy đa thức python từ đầu github
and X matrices,
Hướng dẫn polynomial regression python from scratch github - hồi quy đa thức python từ đầu github
represents the y values in our dataset.

Âm mưu mô hình hồi quy tuyến tính

6 con số sau đây cho thấy kết quả cho hồi quy tuyến tính với các tỷ lệ học tập khác nhau. Các đường màu xanh lá cây đại diện cho giải pháp phân tích trong khi các đường màu đen đại diện cho giải pháp giảm độ dốc

Hình 1. LR = 0.1

Hướng dẫn polynomial regression python from scratch github - hồi quy đa thức python từ đầu github

Hình 2.

Hướng dẫn polynomial regression python from scratch github - hồi quy đa thức python từ đầu github

Hình 3. Tiền thưởng

Hướng dẫn polynomial regression python from scratch github - hồi quy đa thức python từ đầu github

Hình 4. LR = 0,7

Hướng dẫn polynomial regression python from scratch github - hồi quy đa thức python từ đầu github

Hình 5.

Hướng dẫn polynomial regression python from scratch github - hồi quy đa thức python từ đầu github

Hình 6. Tiền thưởng

Hướng dẫn polynomial regression python from scratch github - hồi quy đa thức python từ đầu github

Nó được quan sát thấy rằng các giải pháp phân tích và các giải pháp gốc gradient rất giống nhau. Tỷ lệ học tập thấp cần nhiều lần lặp lại để hoàn thành. Ngoài ra, chúng không chính xác vì ngưỡng chấm dứt dễ dàng hơn, điều này là do các thông số thay đổi rất ít với tỷ lệ học tập thấp. Nó có ý nghĩa hơn để giữ cho tỷ lệ học tập cao để có kết quả nhanh hơn và chính xác hơn. Tuy nhiên, các chức năng hội tụ và không thể tìm thấy một giải pháp khi tỷ lệ học tập quá lớn. Tỷ lệ học tập tốt nhất mà tôi tìm thấy là 0,7, nó cho giá trị chức năng tổn thất thấp nhất với số lần lặp tối thiểu, bất cứ thứ gì lớn hơn 0,7 đều dẫn đến sự hội tụ.

Hình tiếp theo cho thấy kết quả của bộ dữ liệu giây sử dụng mô hình hồi quy tuyến tính, trong khi hai hình còn lại sử dụng các mô hình hồi quy đa thức với tỷ lệ học tập 0,001 và 0,01, với mức độ 3.

Hình 7. LR = 0,05

Hướng dẫn polynomial regression python from scratch github - hồi quy đa thức python từ đầu github

Hình 8. LR = 0,001

Hướng dẫn polynomial regression python from scratch github - hồi quy đa thức python từ đầu github

Hình 9. LR = 0,01

Hướng dẫn polynomial regression python from scratch github - hồi quy đa thức python từ đầu github

Hình 9. LR = 0,01

Tôi vô tình đặt mức độ thành 33 thay vì 3 và có biểu đồ này, thật không may, chức năng khá phức tạp không phù hợp với màn hình.

Hình 10. LR = 0,01

Hướng dẫn polynomial regression python from scratch github - hồi quy đa thức python từ đầu github