Hướng dẫn linear regression python
Trong bài viết, mình sẽ giới thiệu một trong những thuật toán cơ bản nhất của Machine Learning. Đây là thuật toán Linear Regression (Hồi Quy Tuyến Tính) thuộc nhóm Supervised learning ( Học có giám sát ). Hồi quy tuyến tính là một phương pháp rất đơn giản nhưng đã được chứng minh được tính hữu ích cho một số lượng lớn các tình huống. Trong bài viết này, bạn sẽ khám phá ra chính xác cách thức tuyến tính làm việc như thế nào. Trong việc phân tích dữ liệu, bạn sẽ tiếp xúc với thuật ngữ "Regression" ( Hồi quy ) rất thường xuyên. Trước khi đi sâu vào Hồi quy tuyến tính, hãy tìm hiểu khái niệm Hồi quy trước đã. Hồi quy chính là một phương pháp thống kê để thiết lập mối quan hệ giữa một biến phụ thuộc và một nhóm tập hợp các biến độc lập. Ví dụ : Show
Ở đây chính ta đang thiết lập mối quan hệ giữa Chiều cao & Trọng lượng của một người với Tuổi của anh/cô ta. Đây là một ví dụ rất cơ bản của Hồi quy. Hồi quy tuyến tính giản đơnIntroduction"Hồi quy
tuyến tính" là một phương pháp thống kê để hồi quy dữ liệu với biến phụ thuộc có giá trị liên tục trong khi các biến độc lập có thể có một trong hai giá trị liên tục hoặc là giá trị phân loại. Nói cách khác "Hồi quy tuyến tính" là một phương pháp để dự đoán biến phụ thuộc Chuẩn bịĐể bắt đầu với Hồi quy tuyến tính, chúng ta hãy đi lướt qua một số khái niệm toán học về thống kê.
Giả địnhKhông một kích thước nào phù hợp cho tất cả, điều này cũng đúng đối với Hồi quy tuyến tính. Để thoả mãn hồi quy tuyến tính, dữ liệu nên thoả mãn một vài giả định quan trọng. Nếu dữ liệu của bạn không làm theo các giả định, kết quả của bạn có thể sai cũng như gây hiểu nhầm.
Đường hồi quy tuyến tínhTrong khi sử dụng hồi quy tuyến tính, mục tiêu của chúng ta là để làm sao một đường thẳng có thể tạo được sự phân bố gần nhất với hầu hết các điểm. Do đó làm giảm khoảng cách (sai số) của các điểm dữ liệu cho đến đường đó. Ví dụ, ở các điểm ở hình trên (trái) biểu diễn các điểm dữ liệu khác nhau và đường thẳng (bên phải) đại diện cho một đường gần đúng có thể giải thích mối quan hệ giữa các trục
Ở đây,
Một vài tính chất của hồi quy tuyến tính
Tìm đường hồi quy tuyến tínhSử dụng công cụ thống kê ví dụ như Excel, R, SAS ... bạn sẽ trực tiếp tìm hằng số ( Ví dụ, giả sử chúng ta muốn dự đoán
Ở đây,
Nếu chúng ta phân biệt các Tổng còn lại của diện tích sai số (RSS) tương ứng với
Đưa giá trị từ bảng 1 vào các phương trình trên,
Do đó, phương trình hồi quy nhất sẽ trở thành -
Hãy xem, dự đoán của chúng ta như thế nào bằng cách sử dụng phương trình này
Chỉ với 10 điểm dữ liệu để phù hợp với một đường thẳng thì dự đoán của chúng ta sẽ chính xác lắm, nhưng nếu chúng ta thấy sự tương quan giữa 'Y-Thưc tế' và 'Y - Dự đoán' thì triển vọng sẽ rất cao do đó cả hai series đang di chuyển cùng nhau và đây là biểu đồ để hiển thị giá trị dự đoán: Hiệu suất của mô hìnhMột khi bạn xây dựng mô hình, câu hỏi tiếp theo đến trong đầu là để biết liệu mô hình của bạn có đủ để dự đoán trong tương lai hoặc là mối quan hệ mà bạn đã xây dựng giữa các biến phụ thuộc và độc lập là đủ hay không. Vì mục đích này có nhiều chỉ số mà chúng ta cần tham khảo
Công thức tính
Trong đó
Root Mean Square Error (RMSE) RMSE cho biết mức độ phân tán các giá trị dự đoán từ các giá trị thực tế. Công thức tính RMSE là
Mặc dù RMSE là một đánh giá tốt cho các sai số nhưng vấn đề với nó là nó rất dễ bị ảnh hưởng bởi phạm vi của biến phụ thuộc của bạn. Nếu biến phụ thuộc của bạn có dải biến thiên hẹp, RMSE của bạn sẽ thấp và nếu biến phụ thuộc có phạm vi rộng RMSE sẽ cao. Do đó, RMSE là một số liệu tốt để so sánh giữa các lần lặp lại khác nhau của mô hình Mean Absolute Percentage Error (MAPE) Để khắc phục những hạn chế của RMSE, các nhà phân tích thích sử dụng MAPE so với RMSE. MAPE cho sai số trong tỷ lệ phần trăm và do đó so sánh được giữa các mô hình. Công thức tính MAPE có thể được viết như sau:
Hồi quy tuyến tính đa biếnCho đến hiện tại, chúng ta đã thảo luận về kịch bản mà chúng ta chỉ có một biến độc lập. Nếu chúng ta có nhiều hơn một biến độc lập, phương pháp phù hợp nhất là "Multiple Regression Linear" - Hồi quy tuyến tính đa biến Sự khác biệtVề cơ bản không có sự khác biệt giữa hồi quy tuyến tính 'giản đơn' và 'đa biến'. Cả hai đều làm việc tuân theo nguyên tắc OLS và thuật toán để có được đường hồi quy tối ưu nhất cũng tương tự. Trong trường hợp sau, phương trình hồi quy sẽ có một hình dạng như sau:
Ở đây,
Chạy hồi quy tuyến tính bằng Python scikit-LearnỞ trên, bạn đã biết rằng hồi quy tuyến tính là một kỹ thuật phổ biến và bạn cũng có thể thấy các phương trình toán học của hồi quy tuyến tính. Nhưng bạn có biết làm thế nào để thực hiện một hồi quy tuyến tính trong Python ?? Có một số cách để có thể làm điều đó, bạn có thể thực hiện hồi quy tuyến tính bằng cách sử dụng các mô hình thống kê, numpy, scipy và sckit learn. Nhưng trong bài này chúng ta sẽ sử dụng sckit learn để thực hiện hồi quy tuyến tính. Scikit-learn là một module Python mạnh mẽ cho việc học máy. Nó chứa hàm cho hồi quy, phân loại, phân cụm, lựa chọn mô hình và giảm kích chiều. Chúng ta sẽ khám phá module Trong bài đăng này, chúng ta sẽ sử dụng bộ dữ liệu Nhà ở Boston, bộ dữ liệu chứa thông tin về giá trị nhà cửa ở ngoại ô thành phố Boston. Tập dữ liệu này ban đầu được lấy từ thư viện StatLib được duy trì tại Đại học Carnegie Mellon và bây giờ đã có trên UCI Machine Learning Repository. Khám phá bộ dữ liệu nhà BostonBộ Dữ liệu Nhà ở Boston bao gồm giá nhà ở
những nơi khác nhau ở Boston. Cùng với giá cả, tập dữ liệu cũng cung cấp thông tin như Tội phạm (CRIM), các khu vực kinh doanh không-bán-lẻ ở thị trấn (INDUS), tuổi chủ sở hữu ngôi nhà (AGE) và có nhiều thuộc tính khác có sẵn ở đây . Bộ dữ liệu chính nó có thể down từ đây . Tuy nhiên, vì chúng ta sử dụng
Trước hết, chúng ta sẽ import bộ dữ liệu Boston
Housing và lưu trữ nó trong một biến gọi là boston. Để import nó từ
Biến
Nó sẽ trả về như sau Tiếp,
Trước tiên, chúng ta có thể dễ dàng kiểm tra Như chúng ta có thể thấy nó trả về
Bạn có thể dùng lệnh Tiếp, convert dữ liệu về dạng pandas! Rất đơn giản, gọi hàm
Hoặc bạn co thể dùng đoạn lệnh sau để show được tên cột
Có vẻ vẫn chưa có column tên là
Ta sẽ add nó vào sử dụng đoạn mã trên Nếu bạn muốn nhìn các số liệu tổng hợp thống kê, hãy chạy đoạn mã sau .
Tách dữ liệu để train-testVề cơ bản, trước khi chia dữ liệu thành tập dữ liệu để train - test, chúng ta cần chia dữ liệu thành hai giá trị : giá trị đích và giá trị dự báo. Hãy gọi giá trị
đích
Bây giờ chúng ta có thể split dữ liệu để train và test với snippet như sau.
Nếu chúng ta kiểm tra shape của mỗi biến, chúng ta đã có được bộ dữ liệu với tập dữ liệu thử nghiệm có tỷ lệ 66,66% đối với dữ liệu train và 33,33% đối với dữ liệu test. Linear RegressionTiếp, chúng ta sẽ chạy hồi quy tuyến tính.
Đoạn mã trên sẽ phù hợp với một mô hình dựa trên Thực tế thì đáng lẽ đồ thị ở trên phải tạo một đường tuyến tính như chúng ta đã thảo luận lý thuyết ở trên. Tuy nhiên, model không thích hợp 100%, cho nên nó đã ko thể tạo được đường tuyến tính. Trung bình diện tích sai sốĐể kiểm tra mức độ lỗi của một mô hình, chúng ta có thể sử dụng
kết quả nhận được
Tham khảo và dịchhttp://bigdata-madesimple.com/how-to-run-linear-regression-in-python-scikit-learn/ http://aimotion.blogspot.com/2011/10/machine-learning-with-python-linear.html http://machinelearningmastery.com/simple-linear-regression-tutorial-for-machine-learning/ http://machinelearningmastery.com/implement-simple-linear-regression-scratch-python/ https://medium.com/@haydar_ai/learning-data-science-day-9-linear-regression-on-boston-housing-dataset-cd62a80775ef |