Hướng dẫn intercept trong python - intercept in python
Mục lục bài viết:
Show
Chúng ta đang sống trong thời đại của một lượng lớn dữ liệu, máy tính mạnh mẽ và trí tuệ nhân tạo. Điều này chỉ là khởi đầu. Khoa học dữ liệu và máy học đang thúc đẩy nhận dạng hình ảnh, phát triển phương tiện tự hành, các quyết định trong lĩnh vực tài chính và năng lượng, tiến bộ trong y học, sự nổi lên của mạng xã hội, v.v. Hồi quy tuyến tính là một phần quan trọng của điều này. Hồi quy tuyến tính là một trong những kỹ thuật thống kê và học máy cơ bản. Cho dù bạn muốn thống kê, học máy hay khoa học máy tính, thì rất có thể bạn sẽ cần nó. Bạn nên tìm hiểu nó trước và sau đó tiến hành các phương pháp phức tạp hơn. Đến cuối bài viết này, bạn sẽ học được:
Hồi quyHồi quy là gì? Hồi quy là gì?Khi nào bạn cần hồi quy? Hồi quy tuyến tính Công thức Hiệu suất hồi quy Đơn hồi quy tuyến tính Đa hồi quy tuyến tính Hồi quy đa thức Underfitting và Overfitting Triển khai hồi quy tuyến tính bằng Python Các gói Python cho hồi quy tuyến tính Khi nào bạn cần hồi quy?Hồi quy tuyến tính Công thức Hiệu suất hồi quy Hồi quy tuyến tínhCông thức Công thứcHiệu suất hồi quy Hồi quy tuyến tính tính toán các ước (estimator) của các hệ số hồi quy hoặc đơn giản là trọng số dự đoán, được ký hiệu bằng 𝑏₀, 𝑏₁,…, 𝑏ᵣ. Chúng định nghĩa hàm hồi quy ước lượng 𝑓(𝐱) = 𝑏₀ + 𝑏₁𝑥₁ + ⋯ + 𝑏ᵣ𝑥ᵣ. Hàm này phải nắm bắt đầy đủ các mối quan hệ phụ thuộc giữa các đầu vào và đầu ra. Ước hoặc phản hồi được dự đoán, 𝑓(𝐱ᵢ), với 𝑖 = 1, ..., 𝑛, cần phải càng gần càng tốt để tương ứng với câu trả lời thực tế 𝑦ᵢ. Hiệu 𝑦ᵢ - 𝑓 (𝐱ᵢ) với 𝑖 = 1,…, 𝑛, được gọi là phần dư. Hồi quy là xác định các trọng số được dự đoán tốt nhất, đó là các trọng số tương ứng với các phần dư nhỏ nhất. Để có được trọng số tốt nhất, bạn thường tối thiểu hóa tổng các phần dư bình phương (SSR) với 𝑖 = 1,…, 𝑛: SSR = Σᵢ (𝑦ᵢ - 𝑓 (𝐱ᵢ)) ². Cách tiếp cận này được gọi là phương pháp bình phương nhỏ nhất thông thường. Hiệu suất hồi quySự thay đổi của các phản hồi thực tế 𝑦ᵢ, 𝑖 = 1,…, 𝑛, xảy ra một phần do sự phụ thuộc vào các yếu tố dự đoán 𝐱ᵢ. Tuy nhiên, cũng có một phương sai cố hữu bổ sung của đầu ra. Các hệ số xác định, ký hiệu là 𝑅², cho bạn biết số lượng biến thể trong 𝑦 có thể được giải thích bởi sự phụ thuộc vào 𝐱 sử dụng mô hình hồi quy cụ thể. 𝑅² lớn hơn cho thấy sự phù hợp hơn và có nghĩa là mô hình có thể giải thích tốt hơn sự biến đổi của đầu ra với các đầu vào khác nhau. Giá trị 𝑅² = 1 tương ứng với SSR = 0, nghĩa là hoàn toàn phù hợp vì giá trị của câu trả lời được dự đoán và thực tế hoàn toàn khớp với nhau. Đơn hồi quy tuyến tínhĐơn hồi quy tuyến tính hoặc đơn biến thiên là trường hợp đơn giản nhất của hồi quy tuyến tính với một biến độc lập duy nhất, 𝐱 = 𝑥. Hình sau minh họa đơn hồi quy tuyến tính: Ví dụ về hồi quy tuyến tính đơn giản Khi thực hiện hồi quy tuyến tính đơn giản, bạn thường bắt đầu với một tập hợp các cặp đầu vào-đầu ra (𝑥-𝑦) nhất định (vòng tròn màu xanh lá cây). Những cặp này là quan sát của bạn. Ví dụ, quan sát ngoài cùng bên trái (vòng tròn màu xanh lá cây) có đầu vào 𝑥 = 5 và đầu ra thực tế (phản hồi) 𝑦 = 5. Quan sát tiếp theo có 𝑥 = 15 và 𝑦 = 20, v.v. Hàm hồi quy ước lượng (đường đen) có phương trình 𝑓(𝑥) = 𝑏₀ + 𝑏₁𝑥. Mục tiêu của bạn là tính toán các giá trị tối ưu của trọng số dự đoán 𝑏₀ và 𝑏₁ để giảm thiểu SSR và xác định hàm hồi quy ước tính. Giá trị của 𝑏₀, còn gọi là đánh chặn, cho thấy điểm mà đường hồi quy ước đi qua trục 𝑦. Nó là giá trị của phản hồi ước lượng 𝑓(𝑥) cho 𝑥 = 0. Giá trị của 𝑏₁ xác định độ dốc của đường hồi quy ước tính. Các phản hồi dự đoán (ô vuông màu đỏ) là các điểm trên đường hồi quy tương ứng với các giá trị đầu vào. Ví dụ: đối với đầu vào 𝑥 = 5, phản hồi dự đoán là 𝑓(5) = 8,33 (được biểu thị bằng hình vuông màu đỏ ngoài cùng bên trái). Phần dư (các đường màu xám gạch ngang dọc) có thể được tính là 𝑦ᵢ - 𝑓(𝐱ᵢ) = 𝑦ᵢ - 𝑏₀ - 𝑏₁𝑥ᵢ cho 𝑖 = 1,…, 𝑛. Chúng là khoảng cách giữa các hình tròn màu xanh lá cây và hình vuông màu đỏ. Khi bạn thực hiện hồi quy tuyến tính, bạn thực sự đang cố gắng giảm thiểu những khoảng cách này và làm cho các hình vuông màu đỏ càng gần với các hình tròn màu xanh lá cây được xác định trước càng tốt. Đa hồi quy tuyến tínhHồi quy tuyến tính nhiều biến hoặc đa biến là trường hợp hồi quy tuyến tính với hai hoặc nhiều biến độc lập. Nếu chỉ có hai biến độc lập, thì hàm hồi quy ước lượng là 𝑓(𝑥₁, 𝑥₂) = 𝑏₀ + 𝑏₁𝑥₁ + 𝑏₂𝑥₂. Nó biểu diễn một mặt phẳng hồi quy trong không gian ba chiều. Mục tiêu của hồi quy là xác định giá trị của các trọng số 𝑏₀, 𝑏₁ và 𝑏₂ sao cho mặt phẳng này càng gần với các phản hồi thực tế càng tốt và mang lại SSR tối thiểu. Trường hợp có nhiều hơn hai biến độc lập cũng tương tự, nhưng tổng quát hơn. Hàm hồi quy ước tính là 𝑓(𝑥₁,…, 𝑥ᵣ) = 𝑏₀ + 𝑏₁𝑥₁ + ⋯ + 𝑏ᵣ𝑥ᵣ, và có 𝑟 + 1 trọng số được xác định khi số lượng đầu vào là 𝑟. Hồi quy đa thứcBạn có thể coi hồi quy đa thức như một trường hợp tổng quát của hồi quy tuyến tính. Bạn giả định sự phụ thuộc đa thức giữa đầu ra và đầu vào và do đó, hàm hồi quy ước lượng đa thức. Nói cách khác, ngoài các thuật ngữ tuyến tính như 𝑏₁𝑥₁, hàm hồi quy 𝑓 của bạn có thể bao gồm các thuật ngữ phi tuyến tính như 𝑏₂𝑥₁², 𝑏₃𝑥₁³ hoặc thậm chí 𝑏₄𝑥₁𝑥₂, 𝑏₅𝑥₁²𝑥₂, v.v. Ví dụ đơn giản nhất về hồi quy đa thức có một biến độc lập duy nhất và hàm hồi quy ước lượng là đa thức bậc 2: 𝑓(𝑥) = 𝑏₀ + 𝑏₁𝑥 + 𝑏₂𝑥². Bây giờ, hãy nhớ rằng bạn muốn tính toán 𝑏₀, 𝑏₁ và 𝑏₂ để giảm thiểu SSR. Đây là những ẩn số của bạn! Hãy ghi nhớ điều này, hãy so sánh hàm hồi quy trước đó với hàm 𝑓(𝑥₁, 𝑥₂) = 𝑏₀ + 𝑏₁𝑥₁ + 𝑏₂𝑥₂ được sử dụng cho hồi quy tuyến tính. Chúng trông rất giống nhau và đều là hàm tuyến tính của các ẩn số 𝑏₀, 𝑏₁ và 𝑏₂. Đây là lý do tại sao bạn có thể giải quyết vấn đề hồi quy đa thức như một bài toán tuyến tính với thuật ngữ 𝑥² được coi là một biến đầu vào. Trong trường hợp hai biến và đa thức bậc 2, hàm hồi quy có dạng: 𝑓(𝑥₁, 𝑥₂) = 𝑏₀ + 𝑏₁𝑥₁ + 𝑏₂𝑥₂ + 𝑏₃𝑥₁² + 𝑏₄𝑥₁𝑥₂ + 𝑏₅𝑥₂². Quy trình giải quyết vấn đề giống với trường hợp trước. Bạn áp dụng hồi quy tuyến tính cho năm đầu vào: 𝑥₁, 𝑥₂, 𝑥₁², 𝑥₁𝑥₂ và 𝑥₂². Những gì bạn nhận được là kết quả của hồi quy là giá trị của sáu trọng số tối thiểu hóa SSR: 𝑏₀, 𝑏₁, 𝑏₂, 𝑏₃, 𝑏₄ và 𝑏₅. Tất nhiên, có nhiều vấn đề tổng quát hơn, nhưng điều này đủ để minh họa cho điểm. Underfitting và OverfittingMột câu hỏi rất quan trọng có thể nảy sinh khi bạn thực hiện hồi quy đa thức có liên quan đến việc lựa chọn mức độ tối ưu của hàm hồi quy đa thức. Không có quy tắc đơn giản để làm điều này. Nó phụ thuộc vào từng trường hợp. Tuy nhiên, bạn nên lưu ý hai vấn đề có thể xảy ra theo sự lựa chọn của mức độ: trang bị thiếu và trang bị thừa. Trang bị thiếu xảy ra khi một mô hình không thể nắm bắt chính xác các yếu tố phụ thuộc giữa các dữ liệu, thường là do sự đơn giản của chính nó. Nó thường mang lại 𝑅² thấp với dữ liệu đã biết và khả năng tổng quát hóa kém khi áp dụng với dữ liệu mới. Trang bị thừa xảy ra khi một mô hình lại học cả sự phụ thuộc giữa dữ liệu và các biến động ngẫu nhiên. Nói cách khác, mô hình được học với dữ liệu hiện có là quá tốt. Các mô hình phức tạp, có nhiều tính năng hoặc thuật ngữ, thường dễ bị trang bị quá mức. Khi áp dụng cho dữ liệu đã biết, các mô hình như vậy thường mang lại 𝑅² cao. Tuy nhiên, chúng thường không khái quát hóa tốt và có 𝑅² thấp hơn đáng kể khi được sử dụng với dữ liệu mới. Hình tiếp theo minh họa các mô hình thiếu trang bị, trang bị tốt và trang bị thừa: Ví dụ về các mẫu không được trang bị tốt, được trang bị tốt và được trang bị thừa Biểu đồ trên cùng bên trái hiển thị một đường hồi quy tuyến tính có 𝑅² thấp. Điều quan trọng nữa là một đường thẳng không thể tính đến thực tế là phản ứng thực tế tăng lên khi 𝑥 di chuyển từ 25 về 0. Đây có thể là một ví dụ về trang bị thiếu. Biểu đồ trên cùng bên phải minh họa hồi quy đa thức với mức độ bằng 2. Trong trường hợp này, đây có thể là mức độ tối ưu để mô hình hóa dữ liệu này. Mô hình có giá trị 𝑅² phù hợp trong nhiều trường hợp và hiển thị xu hướng một cách độc đáo. Biểu đồ dưới cùng bên trái trình bày hồi quy đa thức với bậc bằng 3. Giá trị của 𝑅² cao hơn trong các trường hợp trước. Mô hình này hoạt động tốt hơn với dữ liệu đã biết so với các mô hình trước đó. Tuy nhiên, nó cho thấy một số dấu hiệu của việc trang bị thừa, đặc biệt là đối với các giá trị đầu vào gần 60 khi dòng bắt đầu giảm, mặc dù dữ liệu thực tế không cho thấy điều đó. Cuối cùng, ở biểu đồ dưới cùng bên phải, bạn có thể thấy sự phù hợp hoàn hảo: sáu điểm và đường đa thức bậc 5 (hoặc cao hơn) cho kết quả 𝑅² = 1. Mỗi phản hồi thực tế bằng với dự đoán tương ứng của nó. Trong một số tình huống, đây có thể là chính xác những gì bạn đang tìm kiếm. Tuy nhiên, trong nhiều trường hợp, đây là một mô hình được trang bị thừa. Nó có khả năng có hành vi kém với dữ liệu không nhìn thấy, đặc biệt là với các đầu vào lớn hơn 50. Ví dụ, nó giả định, mà không có bất kỳ bằng chứng nào, rằng có sự sụt giảm đáng kể trong các phản hồi cho 𝑥> 50 và 𝑦 bằng 0 cho 𝑥 gần 60. Hành vi như vậy là hậu quả của nỗ lực quá mức để tìm hiểu và điều chỉnh dữ liệu hiện có. Có rất nhiều nguồn mà bạn có thể tìm thêm thông tin về hồi quy nói chung và hồi quy tuyến tính nói riêng. Các trang phân tích hồi quy trên Wikipedia, bài báo hồi quy tuyến tính của Wikipedia, cũng như bài viết hồi quy tuyến tính của Học viện Khan là điểm khởi đầu tốt. Triển khai hồi quy tuyến tính bằng PythonĐã đến lúc bắt đầu triển khai hồi quy tuyến tính bằng Python. Về cơ bản, tất cả những gì bạn nên làm là áp dụng các gói thích hợp và các hàm và lớp của chúng. Các gói Python cho hồi quy tuyến tínhGói NumPy là một gói khoa học Python cơ bản cho phép nhiều hoạt động hiệu suất cao trên các mảng đơn và đa chiều. Nó cũng cung cấp nhiều thói quen toán học. Tất nhiên, nó cũng là mã nguồn mở. Nếu bạn không quen với NumPy, bạn có thể sử dụng Hướng dẫn sử dụng NumPy chính thức và đọc Look Ma, No For-Loops: Array Programming With NumPy. Ngoài ra, So sánh hiệu suất Pure Python vs NumPy vs TensorFlow có thể cung cấp cho bạn một ý tưởng khá tốt về hiệu suất mà bạn có thể đạt được khi áp dụng NumPy. Gói scikit-learning là một thư viện Python được sử dụng rộng rãi để học máy, được xây dựng dựa trên NumPy và một số gói khác. Nó cung cấp các phương tiện để xử lý trước dữ liệu, giảm kích thước, thực hiện hồi quy, phân loại, phân cụm và hơn thế nữa. Giống như NumPy, scikit-learning cũng là mã nguồn mở. Bạn có thể xem trang Mô hình tuyến tính tổng quát trên trang web scikit-learning để tìm hiểu thêm về mô hình tuyến tính và hiểu sâu hơn về cách hoạt động của gói này. Nếu bạn muốn triển khai hồi quy tuyến tính và cần chức năng vượt ra ngoài phạm vi của scikit-learning, bạn nên cân nhắc 5. Đó là một gói Python mạnh mẽ để ước tính các mô hình thống kê, thực hiện các bài kiểm tra và hơn thế nữa. Nó cũng là mã nguồn mở.Bạn có thể tìm thêm thông tin về 5 trên trang web chính thức.Đơn hồi quy tuyến tính với scikit-learningHãy bắt đầu với trường hợp đơn giản nhất, đó là hồi quy tuyến tính đơn giản. Có năm bước cơ bản khi bạn triển khai hồi quy tuyến tính:
Các bước này ít nhiều chung chung cho hầu hết các cách tiếp cận và triển khai hồi quy. Bước 1: Import các gói và lớpBước đầu tiên là import gói 7 và lớp 8 từ 9: 0
Bây giờ, bạn có tất cả các chức năng cần thiết để thực hiện hồi quy tuyến tính. Kiểu dữ liệu cơ bản của NumPy là kiểu mảng được gọi 1. Phần còn lại của bài viết này sử dụng thuật ngữ mảng để chỉ các trường hợp của kiểu 1.Lớp 3 sẽ được sử dụng để thực hiện hồi quy tuyến tính và đa thức và đưa ra các dự đoán cho phù hợp.Bước 2: Cung cấp dữ liệuBước thứ hai là xác định dữ liệu để làm việc. Các đầu vào (bộ hồi quy, 𝑥) và đầu ra (bộ dự đoán, 𝑦) phải là mảng (các đối tượng của của lớp 1) hoặc các đối tượng tương tự. Đây là cách đơn giản nhất để cung cấp dữ liệu cho hồi quy: 0
Bây giờ, bạn có hai mảng: đầu vào 6 và đầu ra 7. Bạn nên gọi 8 trên 6 bởi vì mảng này bắt buộc phải là hai chiều, hay nói chính xác hơn, để có một cột và nhiều hàng khi cần thiết. Đó là chính xác những gì mà các đối số 0 của 8 quy định cụ thể. 6 và 7 bây giờ sẽ như sau: 0
Như bạn có thể thấy, 6 có hai chiều, và 6 là 7, trong khi 7 có một chiều, và 9 là 0.Bước 3: Tạo một mô hình và phù hợp với nóBước tiếp theo là tạo mô hình hồi quy tuyến tính và điều chỉnh nó bằng cách sử dụng dữ liệu hiện có. Hãy tạo một thể hiện của lớp 8, nó sẽ đại diện cho mô hình hồi quy: 0
Câu lệnh trên tạo biến 3 dưới dạng là đối tượng (hay thể hiện) của 8. Bạn có thể cung cấp một số tham số tùy chọn cho 8:
Ví dụ trên sử dụng các giá trị mặc định của tất cả các tham số. Đã đến lúc bắt đầu sử dụng mô hình. Trước tiên, bạn cần phải gọi 2 trên 3: 0
Với 2, bạn tính toán các giá trị tối ưu của trọng số 𝑏₀ và 𝑏₁, sử dụng đầu vào và đầu ra hiện có ( 6 và 7) làm đối số. Nói cách khác, 2 phù hợp với mô hình. Nó trả về 9, chính là biến 3. Đó là lý do tại sao bạn có thể thay thế hai câu lệnh cuối cùng bằng câu lệnh sau: 0
Câu lệnh này thực hiện tương tự như hai câu trước. Nó chỉ ngắn hơn. Bước 4: Nhận kết quảKhi bạn đã phù hợp với mô hình của mình, bạn có thể nhận được kết quả để kiểm tra xem mô hình có hoạt động tốt hay không và giải thích nó. Bạn có thể nhận được hệ số xác định (𝑅²) với lệnh 02 trên 3: 0
Khi bạn đang áp dụng 02, các đối số cũng là công cụ dự đoán 6 và hồi quy 7, và giá trị trả về là 𝑅².Các thuộc tính của 3 là 09, nó đại diện cho hệ số 𝑏₀, còn 10 đại diện cho 𝑏₁: 0
Đoạn mã trên minh họa cách lấy 𝑏₀ và 𝑏₁. Bạn có thể nhận thấy rằng 09 là một đại lượng vô hướng, trong khi 10 là một mảng.Giá trị 𝑏₀ = 5,63 (gần đúng) minh họa rằng mô hình của bạn dự đoán phản ứng 5,63 khi 𝑥 bằng 0. Giá trị 𝑏₁ = 0,54 có nghĩa là phản ứng dự đoán tăng 0,54 khi 𝑥 tăng thêm một. Bạn nên lưu ý rằng bạn cũng có thể cung cấp 7 dưới dạng một mảng hai chiều. Trong trường hợp này, bạn sẽ nhận được một kết quả tương tự: 0
Như bạn có thể thấy, ví dụ này rất giống với ví dụ trước, nhưng trong trường hợp này, 09 là mảng một chiều với phần tử đơn 𝑏₀ và 10 là mảng hai chiều với phần tử đơn 𝑏₁.Bước 5: Dự đoán phản hồiKhi có một mô hình ưng ý, bạn có thể sử dụng nó để dự đoán với dữ liệu hiện có hoặc dữ liệu mới. Để nhận được phản hồi dự đoán, hãy sử dụng 18: 0 Khi áp dụng 18, bạn truyền hàm hồi quy làm đối số và nhận được phản hồi dự đoán tương ứng.Đây là một cách gần giống nhau để dự đoán phản ứng: 0 0Trong trường hợp này, bạn nhân từng phần tử của 6 với 23 và thêm 24 vào sản phẩm.Kết quả đầu ra ở đây chỉ khác với ví dụ trước đó về kích thước. Phản hồi được dự đoán bây giờ là một mảng hai chiều, trong khi trong trường hợp trước, nó có một chiều. Nếu bạn giảm số chiều của 6 xuống còn một, thì hai cách tiếp cận này sẽ mang lại cùng một kết quả. Bạn có thể làm điều này bằng cách thay thế 6 bằng 27, 28 hoặc 29 khi nhân nó với 23.Trong thực tế, các mô hình hồi quy thường được áp dụng cho các dự báo. Điều này có nghĩa là bạn có thể sử dụng các mô hình được trang bị để tính toán kết quả đầu ra dựa trên một số đầu vào mới khác: 0 1Ở đây, 18 áp dụng cho bộ hồi quy mới 33 và tạo ra phản hồi 34. Ví dụ này thuận tiện sử dụng arange() từ 7 để tạo ra một mảng với các phần tử từ 0 (inclusive) đến 5 (exclusive), có nghĩa là 36, 37, 38, 39, và 40.Bạn có thể tìm thêm thông tin về 8 trên trang tài liệu chính thức.Đa hồi quy tuyến tính với scikit-learningBạn có thể thực hiện đa hồi quy đa tuyến tính theo các bước tương tự như bạn làm đối với đơn hồi quy tuyến tính. Bước 1 và 2: Import gói và lớp và cung cấp dữ liệuTrước tiên, bạn import 7 và 3 và cung cấp đầu vào và đầu ra: 0 2Đó là một cách đơn giản để xác định đầu vào 6 và đầu ra 7. Bạn có thể in 6 và 7 để xem chúng trông như thế nào: 0 3Trong đa hồi quy tuyến tính, 6 là mảng hai chiều có ít nhất hai cột, trong khi 7 thường là mảng một chiều. Đây là một ví dụ đơn giản về đa hồi quy tuyến tính và 6 có chính xác hai cột.Bước 3: Tạo một mô hình và phù hợp với nóBước tiếp theo là tạo mô hình hồi quy như một đối tượng của 8 và phù hợp với 2: 0
Kết quả của câu lệnh này là biến 3 tham chiếu đến đối tượng của kiểu 8. Nó đại diện cho mô hình hồi quy phù hợp với dữ liệu hiện có.Bước 4: Nhận kết quảBạn có thể có được các thuộc tính của mô hình theo cách tương tự như trong trường hợp đơn hồi quy tuyến tính: 0 5Bạn nhận được giá trị của 𝑅² bằng cách sử dụng 02 và các giá trị của các ước lượng của hệ số hồi quy với 09 và 10. Một lần nữa, 09 giữ thiên vị 𝑏₀, trong khi bây giờ 10 là một mảng chứa 𝑏₁ và 𝑏₂ tương ứng.Trong ví dụ này, giới hạn xấp xỉ 5,52 và đây là giá trị của phản hồi được dự đoán khi 𝑥₁ = 𝑥₂ = 0. Việc tăng 𝑥₁ thêm 1 dẫn đến sự gia tăng của phản hồi dự đoán thêm 0,45. Tương tự, khi 𝑥₂ tăng thêm 1, thì phản ứng tăng 0,26. Bước 5: Dự đoán phản hồiCác dự đoán cũng hoạt động theo cách tương tự như trong trường hợp đơn hồi quy tuyến tính: 0 6Phản ứng dự đoán nhận được với 18 có vẻ rất giống với phản ứng sau: 0 7Bạn có thể dự đoán các giá trị đầu ra bằng cách nhân từng cột của đầu vào với trọng số thích hợp, tính tổng các kết quả và thêm số chặn vào tổng. Bạn cũng có thể áp dụng mô hình này cho dữ liệu mới: 0 8Đó là dự đoán sử dụng mô hình hồi quy tuyến tính. Hồi quy đa thức với scikit-learningThực hiện hồi quy đa thức với scikit-learning rất giống với hồi quy tuyến tính. Chỉ có một bước bổ sung: bạn cần biến đổi mảng đầu vào để bao gồm các số hạng phi tuyến tính như 𝑥². Bước 1: Import các gói và lớpNgoài 7 và 3, bạn cũng nên import lớp 70 từ 71: 0 9Quá trình import hiện đã hoàn tất và bạn có mọi thứ cần thiết để làm việc. Bước 2a: Cung cấp dữ liệuBước này xác định đầu vào và đầu ra và giống như trong trường hợp hồi quy tuyến tính: 0 0Bây giờ bạn có đầu vào và đầu ra ở định dạng phù hợp. Hãy nhớ rằng bạn cần đầu vào là một mảng hai chiều. Đó là lý do tại sao 8 được sử dụng.Bước 2b: Chuyển đổi dữ liệu đầu vàoĐây là bước mới bạn cần thực hiện cho hồi quy đa thức! Như bạn đã thấy trước đó, bạn cần bao gồm 𝑥² (và có thể là các thuật ngữ khác) làm các tính năng bổ sung khi triển khai hồi quy đa thức. Vì lý do đó, bạn nên biến đổi mảng đầu vào 6 để chứa (các) cột bổ sung có giá trị 𝑥² (và cuối cùng là nhiều tính năng hơn).Có thể biến đổi mảng đầu vào theo một số cách (như sử dụng 76 từ 7), nhưng lớp 70 này rất thuận tiện cho mục đích này. Hãy tạo một thể hiện (đối tượng) của lớp này: 0 1Biến 80 chính là đối tượng của 70 mà bạn có thể sử dụng để biến đổi đầu vào 6.Bạn có thể cung cấp một số tham số tùy chọn cho 70:
Ví dụ này sử dụng các giá trị mặc định của tất cả các tham số, nhưng đôi khi bạn sẽ muốn thử nghiệm với mức độ của hàm và dù sao cũng có thể có lợi nếu cung cấp đối số này. Trước khi áp dụng 80, bạn cần phải đảm bảo sự phù hợp với 2: 0 2Sau khi 80 được trang bị, nó đã sẵn sàng để tạo một đầu vào mới, được sửa đổi. Bạn đăng ký 98 để làm điều đó: 0 3Đó là sự biến đổi của mảng đầu vào với 98. Nó nhận mảng đầu vào làm đối số và trả về mảng đã sửa đổi.Bạn cũng có thể sử dụng 01 để thay thế ba câu lệnh trước đó bằng một câu lệnh duy nhất: 0 4Điều đó phù hợp và biến đổi mảng đầu vào trong một câu lệnh với 01. Nó cũng lấy mảng đầu vào và thực hiện hiệu quả điều tương tự như 2 và 98 được gọi theo thứ tự đó. Nó cũng trả về mảng đã sửa đổi. Mảng đầu vào mới trông như sau: 0 5Mảng đầu vào đã sửa đổi chứa hai cột: một cột chứa các đầu vào ban đầu và cột kia chứa các ô vuông của chúng. Bạn có thể tìm thêm thông tin 70 trên trang tài liệu chính thức.Bước 3: Tạo một mô hình và phù hợp với nóBước này cũng giống như trong trường hợp hồi quy tuyến tính. Bạn tạo và phù hợp với mô hình: 0 6Mô hình hồi quy hiện đã được tạo và điều chỉnh. Nó đã sẵn sàng để áp dụng. Bạn nên nhớ rằng đối số đầu tiên của 2 là mảng đầu vào đã sửa đổi 10 chứ không phải là đối số ban đầu 6.Bước 4: Nhận kết quảBạn có thể có được các thuộc tính của mô hình theo cách tương tự như trong trường hợp hồi quy tuyến tính: 0 7Một lần nữa, 02 trả về 𝑅². Đối số đầu tiên của nó cũng là đầu vào được sửa đổi 10, không phải 6. Giá trị của các trọng số được liên kết với 09 và 10: 09 đại diện cho 𝑏₀, trong khi 10 tham chiếu đến mảng chứa 𝑏₁ và 𝑏₂ tương ứng.Bạn có thể nhận được một kết quả rất giống nhau với các đối số biến đổi và hồi quy khác nhau: 0 8Nếu bạn gọi 70 với tham số mặc định 22 (hoặc nếu bạn chỉ bỏ qua nó), bạn sẽ nhận được mảng đầu vào mới 10 với cột ngoài cùng bên trái bổ sung chỉ chứa những tham số. Cột này tương ứng với điểm đánh chặn. Mảng đầu vào đã sửa đổi trông như sau: 0 9Cột đầu tiên của 10 chứa chính chúng, cột thứ hai có các giá trị của 6, trong khi cột thứ ba chứa các bình phương của 6.Phần đánh chặn đã được bao gồm trong cột ngoài cùng bên trái của những cái đó và bạn không cần phải bao gồm lại nó khi tạo phiên bản của 8. Vì vậy, bạn có thể cung cấp 29. Đây là câu lệnh tiếp theo: 0 0Biến 3 lại tương ứng với mảng đầu vào mới 10. Do đó 10 nên được chuyển làm đối số đầu tiên thay vì 6.Cách tiếp cận này mang lại các kết quả sau, tương tự như trường hợp trước: 0 1Bạn thấy rằng bây giờ 09 là 0, nhưng 10 thực sự chứa 𝑏₀ là phần tử đầu tiên của nó. Mọi thứ khác là như nhau.Bước 5: Dự đoán phản hồiNếu bạn muốn nhận được phản hồi dự đoán, chỉ cần sử dụng 18, nhưng hãy nhớ rằng đối số phải là đầu vào được sửa đổi 10 thay vì 6: 0 2Như bạn có thể thấy, dự đoán hoạt động gần giống như trong trường hợp hồi quy tuyến tính. Nó chỉ yêu cầu đầu vào được sửa đổi thay vì đầu vào ban đầu. Bạn có thể áp dụng quy trình tương tự nếu bạn có nhiều biến đầu vào. Bạn sẽ có một mảng đầu vào với nhiều hơn một cột, nhưng mọi thứ khác đều giống nhau. Đây là một ví dụ: 0 3Ví dụ hồi quy trên mang lại các kết quả và dự đoán sau: 0 4Trong trường hợp này, có sáu hệ số hồi quy (bao gồm cả hệ số chặn), như được thể hiện trong hàm hồi quy ước tính 𝑓 (𝑥₁, 𝑥₂) = 𝑏₀ + 𝑏₁𝑥₁ + 𝑏₂𝑥₂ + 𝑏₃𝑥₁² + 𝑏₄𝑥₁𝑥₂ + 𝑏₅𝑥₂². Bạn cũng có thể nhận thấy rằng hồi quy đa thức mang lại hệ số xác định cao hơn đa hồi quy tuyến tính cho cùng một vấn đề. Ban đầu, bạn có thể nghĩ rằng có được một 𝑅² lớn như vậy là một kết quả tuyệt vời. Có thể là. Tuy nhiên, trong các tình huống thực tế, có một mô hình phức tạp và 𝑅² rất gần với 1 cũng có thể là dấu hiệu của việc trang bị thừa. Để kiểm tra hiệu suất của một mô hình, bạn nên kiểm tra nó với dữ liệu mới, tức là với các quan sát không được sử dụng để điều chỉnh (huấn luyện) mô hình. Để tìm hiểu cách tách tập dữ liệu của bạn thành các tập con huấn luyện và kiểm tra, hãy xem Tách tập dữ liệu của bạn với train_test_split() của scikit-learning. Hồi quy tuyến tính nâng cao với model.fit(x, y)5Bạn cũng có thể triển khai hồi quy tuyến tính trong Python một cách tương đối dễ dàng bằng cách sử dụng gói 5. Thông thường, điều này là mong muốn khi cần có kết quả chi tiết hơn.Quy trình tương tự như của scikit-learning. Bước 1: Import các góiĐầu tiên bạn cần thực hiện một số thao tác import. Ngoài 7 ra, bạn cần import 47: 0 5Bây giờ bạn có các gói bạn cần. Bước 2: Cung cấp dữ liệu và chuyển đổi đầu vàoBạn có thể cung cấp các đầu vào và đầu ra giống như cách bạn đã làm khi sử dụng scikit-learning: 0 6Các mảng đầu vào và đầu ra được tạo, nhưng công việc vẫn chưa được thực hiện. Bạn cần thêm cột của chúng vào các đầu vào nếu bạn muốn 5 tính toán hệ số chặn 𝑏₀. Nó không tính đến 𝑏₀ theo mặc định. Đây chỉ là một lệnh gọi hàm: 0 7Đó là cách bạn thêm cột của chúng vào 6 với 53. Nó nhận mảng đầu vào 6 làm đối số và trả về một mảng mới với cột của chúng được chèn ở đầu. Kết quả là 6 và 7 trông như sau: 0 8Bạn có thể thấy rằng 6 đã được sửa đổi có ba cột: cột đầu tiên là cột (tương ứng với 𝑏₀ và thay thế dấu chặn) cũng như hai cột của các đối tượng địa lý ban đầu.Bước 3: Tạo một mô hình và phù hợp với nóMô hình hồi quy dựa trên bình phương nhỏ nhất thông thường là một thể hiện của lớp 59. Đây là cách bạn có thể có được: 0 9Bạn nên cẩn thận ở đây! Xin lưu ý rằng đối số đầu tiên là đầu ra, tiếp theo là đầu vào. Có một số tham số tùy chọn khác. Để tìm thêm thông tin về lớp này, vui lòng truy cập trang tài liệu chính thức. Sau khi mô hình của bạn được tạo, bạn có thể áp dụng 2: 0 0Bằng cách gọi 2, bạn nhận được biến 64, là một thể hiện của lớp 65. Đối tượng này nắm giữ nhiều thông tin về mô hình hồi quy.Bước 4: Nhận kết quảBiến 64 đề cập đến đối tượng chứa thông tin chi tiết về kết quả của hồi quy tuyến tính. Việc giải thích chúng vượt xa phạm vi của bài viết này, nhưng bạn sẽ tìm hiểu ở đây cách giải nén chúng.Bạn có thể gọi 67 để lấy bảng với kết quả của hồi quy tuyến tính: 0 1Bảng này rất toàn diện. Bạn có thể tìm thấy nhiều giá trị thống kê được kết hợp với hồi quy tuyến tính bao gồm 𝑅², 𝑏₀, 𝑏₁ và 𝑏₂. Trong trường hợp cụ thể này, bạn có thể nhận được cảnh báo liên quan đến 69. Điều này là do số lượng nhỏ các quan sát được cung cấp. 2Bạn có thể trích xuất bất kỳ giá trị nào từ bảng trên. Đây là một ví dụ: 0Đây là cách bạn thu được một số kết quả của hồi quy tuyến tính:
Bạn cũng có thể nhận thấy rằng những kết quả này giống hệt với những kết quả thu được với scikit-learning cho cùng một vấn đề. Để tìm thêm thông tin về kết quả của hồi quy tuyến tính, vui lòng truy cập trang tài liệu chính thức. Bước 5: Dự đoán phản hồiBạn có thể nhận được phản hồi dự đoán về các giá trị đầu vào được sử dụng để tạo mô hình bằng cách sử dụng 74hoặc 18 với mảng đầu vào làm đối số: 0 3Đây là phản ứng dự đoán cho các đầu vào đã biết. Nếu bạn muốn dự đoán với các bộ hồi quy mới, bạn cũng có thể áp dụng 18 với dữ liệu mới làm đối số: 0 4Bạn có thể nhận thấy rằng kết quả dự đoán cũng giống như kết quả nhận được với scikit-learning cho cùng một vấn đề. Vượt ra ngoài hồi quy tuyến tínhHồi quy tuyến tính đôi khi không thích hợp, đặc biệt đối với các mô hình phi tuyến tính có độ phức tạp cao. May mắn thay, có những kỹ thuật hồi quy khác phù hợp với những trường hợp mà hồi quy tuyến tính không hoạt động tốt. Một số trong số đó là máy vectơ hỗ trợ, cây quyết định, rừng ngẫu nhiên và mạng nơ-ron. Có rất nhiều thư viện Python để hồi quy bằng cách sử dụng các kỹ thuật này. Hầu hết chúng đều miễn phí và mã nguồn mở. Đó là một trong những lý do tại sao Python là một trong những ngôn ngữ lập trình chính cho học máy. Gói scikit-learning cung cấp các phương tiện để sử dụng các kỹ thuật hồi quy khác theo cách rất giống với những gì bạn đã thấy. Nó chứa các lớp cho máy vectơ hỗ trợ, cây quyết định, rừng ngẫu nhiên , v.v. cùng với các phương thức 2, 80, 02, v.v. 82Phần kết luậnBây giờ bạn đã biết hồi quy tuyến tính là gì và cách bạn có thể triển khai nó với Python và ba gói mã nguồn mở: NumPy, scikit-learning và 5.Bạn sử dụng NumPy để xử lý mảng. Hồi quy tuyến tính được thực hiện như sau:
Cả hai cách tiếp cận đều đáng để học cách sử dụng và khám phá thêm. Các liên kết trong bài viết này có thể rất hữu ích cho việc đó. Khi thực hiện hồi quy tuyến tính trong Python, bạn có thể làm theo các bước sau:
|