HỒI QUY TUYẾN TÍNH LÀ GÌ

     

Trong bài bác viết, bản thân sẽ trình làng một trong những thuật toán căn bản nhất của Machine Learning. Đấy là thuật toán Linear Regression (Hồi Quy con đường Tính) thuộc nhóm Supervised learning ( học tập có tính toán ). Hồi quy đường tính là một phương thức rất đơn giản nhưng đang đc chứng minh đc tính có lợi cho một số lượng to đông đảo điều kiện. Trong bài viết này, các bạn sẽ khám phá ra đúng mực phương thức thức tuyến tính thao tác như vậy nào. Trong việc phân tích dữ liệu, bạn sẽ giao tiếp cùng với thuật ngữ “Regression” ( Hồi quy ) siêu thường xuyên. Trước lúc đi sâu vào Hồi quy tuyến tính, hãy thăm dò quan niệm Hồi quy trước đã. Hồi quy đây là một phương pháp đo đạc để thiết lập mối tình dục giữa một trở nên chịu ảnh hưởng and một tổ tập hợp những phát triển thành độc lập. Ví dụ :

Tuổi = 5 + Độ cao * 10 + khối lượng * 13

Ở đó chính ta đang tùy chỉnh cấu hình mối tình dục giữa Độ cao & cân nặng của một fan với Tuổi của anh/cô ta. Đấy là một ví dụ rất căn bản của Hồi quy.

Bạn đang xem: Hồi quy tuyến tính là gì

Bài Viết: Hồi quy con đường tính là gì


Nội Dung


Hồi quy đường tính giản đơn

Introduction

“Hồi quy tuyến tính” là một cách thức đo đạc nhằm hồi quy dữ liệu với thay đổi chịu ảnh hưởng có ghê phí liên tục trong khi đều biến hòa bình có thể chứa 1 trong các hai ghê phí tiếp tục hoặc là ngân sách đầu tư phân loại. Nói phương thức khác “Hồi quy con đường tính” là một cách thức để dự đoán biến chịu tác động (Y) dựa trên ngân sách đầu tư của biến tự do (X). Nó rất có thể đc vận dụng cho những đk các bạn có nhu cầu dự đoán một số trong những lượng liên tục. Ví dụ, dự đoán giao thông làm việc một siêu thị kinh doanh nhỏ, dự kiến thời điểm người tiêu dùng tạm dừng một trang nào kia hoặc số trang đã truy cập vào một trang web nào kia v.v…

chuẩn bị sẵn sàng

Để lúc đầu với Hồi quy đường tính, chúng ta hãy đi lướt qua một số trong những khái niệm toán học về đo đạc.

Đối sánh (r) – phân tích và lý giải mối quan hệ tình dục giữa nhị biến, kinh phí hoàn toàn có thể chạy trường đoản cú -1 mang lại +1 Phương không đúng (σ2) – nhận xét độ phân tán trong dữ liệu của doanh nghiệp Độ lệch chuẩn (σ) – đánh giá độ phân tán vào dữ liệu của bạn (căn bậc hai của phương sai) Vừa ý chuẩn chỉnh Sai số (lỗi) – trả định

Không một kích cỡ nào tương xứng cho cục bộ, điều này cũng đúng nếu với Hồi quy tuyến tính. Để vừa lòng hồi quy con đường tính, dữ liệu nên thoả nguyện một vài trả định quan lại trọng. Trường hợp dữ liệu của khách hàng không tuân theo những đưa định, tác dụng của chúng ta cũng có thể sai y y hệt như gây phát âm nhầm.

tuyến đường tính và Thêm vào : cần chứa một quan hệ tuyến tính thân biến chủ quyền and biến không chủ quyền and tương quan của sự thay đổi trong gớm phí của không ít biến tự do nên liên quan thêm vào tới những trở thành chịu hình ảnh hưởng. Tính chút ít của phân bổ những lỗi : Sự phân bổ sai khác trong số những kinh phí thực and kinh phí đầu tư dự đoán (sai số) nên được phân bổ một phương thức đôi chút. Sự duy nhất quán: Phương sai của không ít lỗi nên là 1 trong kinh phí không đổi đối với , Thời hạn dự kiến Kinh phí của rất nhiều biến chủ quyền Sự hòa bình về đo đạc của rất nhiều lỗi: gần như sai số (dư) không nên có bất cứ mối đối sánh nào thân chúng. Ví dụ: Trong điều kiện dữ liệu theo chuỗi thời điểm, ko nên sẵn sàng đối sánh một trong những sai số thường xuyên nhau. Đường hồi quy tuyến đường tính

Trong khi vận dụng hồi quy tuyến đường tính, mục tiêu của chúng ta là để làm sao một đường thẳng rất có thể tạo đề nghị sự phân bố gần nhất với phần nhiều những điểm. Cho nên vì thế làm giảm khoảng chừng phương thức (sai số) của những điểm dữ liệu cho đến đường đó.


*

Ví dụ, ở các điểm ở hình trên (trái) trình diễn những điểm dữ liệu khác nhau and mặt đường thẳng (phía bên phải) đại diện cho một mặt đường gần đúng hoàn toàn có thể giải say đắm mối quan lại hệ một trong những trục x và y. Trải qua, hồi quy tuyến đường tính các bạn nỗ lực đưa ra một đường như thế. Ví dụ, nếu chúng ta chứa một biến hóa chịu ảnh hưởng Y & một biến tự do X – mối quan hệ giữa X & Y hoàn toàn có thể đc biểu diễn bên dưới dạng phương trình sau:


Y = Β + Β1*X

Ở đây,

Y = đổi thay chịu tác động X = biến tự do Β0 = Hằng số Β1 = Hệ số quan hệ giữa X & Y Một vài lừng danh của hồi quy đường tính Đường hồi quy luôn luôn luôn đi qua trung bình của biến tự do (x) y y hệt như trung bình của đổi mới chịu tác động (y) Đường hồi qui ít nhất hóa tổng của “Diện tích mọi sai số”. Này là nguyên nhân tại sao phương thức hồi quy con đường tính được gọi là “Ordinary Least Square (OLS)” Β1 lý giải sự thay đổi trong Y với sự đổi thay X bởi một 1-1 vị. Nói cách làm khác, nếu chúng ta đẩy cao cực hiếm của X vì một đơn vị thì nó sẽ bị là sự đổi thay kinh giá tiền của Y Tìm mặt đường hồi quy đường tính

Dùng khí cụ đo đạc ví như Excel, R, SAS … bạn sẽ thẳng trực tiếp search hằng số (B0 và B1) như là hiệu quả của hàm hồi quy con đường tính. Như lý thuyết ở phí a trên, nó chuyển động trên tư tưởng OLS and nỗ lực cố gắng giảm sút diện tích s sai số, những khí cụ này áp dụng những gói áp dụng tính hầu hết hằng số này.

Ví dụ, giả sử các bạn muốn dự đoán y từ x trong bảng sau and giả sử rằng phương trình hồi quy của các các bạn sẽ giống giống hệt như y = B0 + B1 * x

x y Predict “y” 1 2 Β0+B1*1 2 1 Β0+B1*2 3 3 Β0+B1*3 4 6 Β0+B1*4 5 9 Β0+B1*5 6 11 Β0+B1*6 7 13 Β0+B1*7 8 15 Β0+B1*8 9 17 Β0+B1*9 10 20 Β0+B1*10

Ở đây,

Độ lệch chuẩn chỉnh x 3.02765 Độ lệch chuẩn chỉnh y 6.617317 vừa đủ x 5.5 vừa đủ y 9.7 Đối sánh x & y .989938

Nếu chúng ta nhận ra đều Tổng còn sót lại của diện tích s sai số (RSS) tương xứng với B0 và B1 and tương đương với những tác dụng bằng không, chúng ta có được những phương trình dưới đây như là 1 kết quả:

B1 = Đối sánh * ( Độ lệch chuẩn chỉnh của y / Độ lệch chuẩn chỉnh của x) B0 = mức độ vừa phải (Y) – B1 * mức độ vừa phải (X)

Đưa kinh phí đầu tư từ bảng 1 vào rất nhiều phương trình trên,

B1 = 2,64 B0 = –2,2

Cho nên, phương trình hồi quy nhất sẽ trở thành –

Y = –2,2 + 2,64 * x

Hãy xem, dự kiến của chúng ta như vậy nào bằng phương thức áp dụng phương trình này

Chỉ cùng với 10 điểm tài liệu để cân xứng với một con đường thẳng thì dự đoán của các các bạn sẽ đúng đắn lắm, tuy nhiên nếu chúng ta cảm thấy sự đối sánh giữa “Y-Thưc tế” và “Y – Dự đoán” thì triển vọng sẽ rất cao do vậy cả hai series đang đi với nhau và này là biểu đồ để hiển thị ngân sách đầu tư dự đoán:


*

hiệu suất của bài bản

Một khi bạn thành lập quy mô, thắc mắc tiếp theo đến vào đầu là để biết liệu quy mô của khách hàng có đủ để tham dự đoán trong tương lai hoặc là mối quan hệ mà bạn đã thành lập giữa những biến chịu tác động and chủ quyền là đủ hay không.

Vì mục tiêu này có nhiều chỉ số mà các bạn cần tham khảo thêm

R – Square (R^2)

Công thức tính R^2 sẽ bởi :


*

Tổng những diện tích s (TSS): TSS là một trong những phép đo tổng thay đổi thiên trong tỷ lệ cung cấp / đổi thay chịu ảnh hưởng Y and có thể đc coi là số lượng vươn lên là thiên vốn bao gồm trong hỗ trợ trước lúc hồi quy được triển khai. Sum of Squares (RSS): RSS thống kê lượng biến đổi còn lại không giải thích đc sau khi triển khai hồi quy. (TSS – RSS) thống kê mức độ thay đổi trong cung ứng đc phân tích và lý giải (hoặc sa thải) bằng phương thức xúc tiến hồi quy

Trong số kia N là số quan liêu sát đc áp dụng để tương xứng với quy mô, σx là độ lệch chuẩn của x, & σy là độ lệch chuẩn chỉnh của y.

R2 giao động từ 0 cho 1. R2 của 0 nghĩa là biến hóa chịu tác động đã không liệu có còn gì khác dự đoán đc từ biến độc lập R2 của 1 tức là biến chịu ảnh hưởng có thể được dự đoán mà không có sai số tự biến hòa bình Một R2 thân 0 and 1 chỉ ra mức độ mà đổi mới chịu tác động có thể dự kiến đc. Một R2 của 0.20 tức là 20 tỷ lệ của phương không nên trong Y rất có thể dự đoán đc từ X; Một R2 của 0.40 có nghĩa là 40 phần trăm là có thể dự đoán v.v…


Root Mean Square Error (RMSE) RMSE cho biết mức độ phân tán những kinh phí đầu tư dự đoán từ những kinh phí thực tiễn. Phương pháp tính RMSE là


*

N: Tổng số quan tiền sát

Mặc mặc dù RMSE là 1 trong những Reviews rất tốt cho gần như sai số nhưng vụ việc với nó là nó rất đơn giản bị tương quan bởi phạm vi của biến hóa chịu ảnh hưởng của bạn. Nếu biến hóa chịu ảnh hưởng của các bạn có dải vươn lên là thiên hẹp, RMSE của bạn sẽ thấp and nếu trở thành chịu tác động có phạm vi rộng lớn RMSE sẽ cao. Mang đến nên, RMSE là một vài liệu rất tốt để so sánh một trong những lần lặp lại không giống nhau của quy mô

Mean Absolute Percentage Error (MAPE)

Để xung khắc phục những hạn chế của RMSE, hầu hết nhà phân tích thích áp dụng MAPE đối với RMSE. MAPE mang lại sai số trong tỷ lệ xác suất and vị vậy so sánh được giữa phần nhiều quy mô. Cách làm tính MAPE rất có thể đc viết như sau:


*

N: Tổng số quan liêu sát

Hồi quy đường tính đa biến

Cho cho hiện giờ, các bạn đã đàm luận về kịch bản mà chúng ta chỉ chứa một vươn lên là độc lập. Nếu chúng ta có nhiều hơn thế nữa một phát triển thành độc lập, phương thức phù hợp nhất là “Multiple Regression Linear” – Hồi quy tuyến đường tính đa biến

Sự biệt lập

Về căn bản không tất cả sự khác hoàn toàn giữa hồi quy con đường tính “giản đơn” and “đa biến”. Cả nhì đều làm việc tuân theo nguyên lý OLS & thuật toán để có được đường hồi quy buổi tối ưu nhất cũng giống như như. Trong đk sau, phương trình hồi quy sẽ đựng một dáng vẻ như sau:

Y=B0+B1*X1+B2*X2+B3*X3.....

Ở đây,

Bi: hầu như hệ số không giống nhau Xi: phần đa biến độc lập khác nhau

Chạy hồi quy tuyến đường tính bằng Python scikit-Learn

Ở tầm giá a trên, bạn đã hiểu được hồi quy con đường tính là 1 trong những kỹ thuật thông dụng and chúng ta có thể cảm thấy hầu như phương trình toán học của hồi quy đường tính. Nhưng các bạn có biết làm nạm nào để triển khai một hồi quy tuyến đường tính vào Python ?? Chứa một số phương thức để hoàn toàn có thể làm điều này, bạn có thể triển khai hồi quy đường tính bằng phương thức áp dụng những đồ sộ đo đạc, numpy, scipy & sckit learn. Mà lại trong bài này các bạn sẽ áp dụng sckit learn để triển khai hồi quy đường tính.

Scikit-learn là một trong module Python lớn mạnh cho vấn đề học máy. Nó đựng hàm cho hồi quy, phân loại, phân cụm, lựa chọn quy mô & giảm kích chiều. Các bạn sẽ khám phá module sklearn.linear_model gồm chứa “những method để thực hiện hồi quy, trong số đó kinh phí mục tiêu sẽ là sự phối hợp tuyến tính của các biến đầu vào”.

Trong bài đăng này, các bạn sẽ áp dụng bộ dữ liệu nhà ở Boston, bộ dữ liệu chứa tin tức về ngân sách đầu tư nhà cửa ngõ ở ngoại thành TP Boston. Tập tài liệu này bước đầu đc lấy từ thư viện StatLib đc bảo trì tại Đại học Carnegie Mellon and lúc này đã có tương đối nhiều trên UCI Machine Learning Repository.

mày mò bộ dữ liệu nhà Boston

Bộ Dữ liệu nhà ở Boston đề cập cả giá nhà ở các add khác nhau sinh sống Boston. Song song với chi phí, tập dữ liệu cũng vừa ý thông tin như tù túng (CRIM), phần nhiều Khu Vực buôn bán không-bán-lẻ ở thị xã (INDUS), tuổi chủ chiếm hữu khu nhà ở (AGE) and có nhiều thuộc tính khác có sẵn ở chỗ này . Bộ dữ liệu chính nó rất có thể down từ phía trên . Tuy vậy, vì các bạn áp dụng scikit-learn, các chúng ta cũng có thể import nó trường đoản cú scikit-learn.

%matplotlib inline import numpy as np import pandas as pd import scipy.stats as stats import matplotlib.pyplot as plt import sklearn import statsmodels.api as sm import seaborn as sns sns.set_style(“whitegrid”) sns.set_context(“poster”) from matplotlib import rcParams

Trước hết, các các bạn sẽ import bộ dữ liệu Boston Housing and tàng trữ nó trong một thay đổi gọi là boston. Để import nó trường đoản cú scikit-learn, các các bạn sẽ cần đề xuất chạy đoạn mã này.

Xem thêm: Nghĩa Của Từ Fork Là Gì ? Tìm Hiểu Về Hard Fork Và Soft Fork


from sklearn.datasets import load_boston boston = load_boston()

Biến boston là một trong những dạng trường đoản cú điển, vì vậy các bạn có thể check key của nó áp dụng đoạn mã dưới.

print(boston.keys())

Nó sẽ ảnh hưởng trả về như sau


Tiếp,

print(boston.data.shape)

Đầu tiên, các bạn cũng có thể dễ dàng check shape của nó bằng phương thức điện thoại tư vấn boston.data.shape và nó sẽ ảnh hưởng trả lại kích thước của tập dữ liệu với kích cỡ column.


Như các bạn có thể cảm thấy nó trả về (506, 13), tức là có 506 hàng dữ liệu với 13 cột. Lúc này các bạn muốn biết 13 cột là gì. Các các bạn sẽ chạy đoạn code sau :

print(boston.feature_names)


Bạn cũng hoàn toàn có thể sử dụng lệnh print(boston.DESCR) để check description của dữ liệu sửa chữa thay thế vì mở web để đọc.

Tiếp, biến đổi dữ liệu về dạng pandas! rất dễ chơi, call hàm pd.DataFrame() và truyền boston.data. Các chúng ta có thể check 5 dữ liệu trước tiên bởi bos.head().

bos = pd.DataFrame(boston.data) print(bos.head())


Hoặc các bạn co thể thực hiện đoạn lệnh sau để show được tên cột

bos.columns = boston.feature_names print(bos.head())


Hình như vẫn chưa có column thương hiệu là PRICE.

bos“PRICE”> = boston.target print(bos.head())

Ta sẽ địa chỉ nó vào vận dụng đoạn mã trên


bóc dữ liệu để train-test

Về căn bản, trước khi chia dữ liệu thành tập dữ liệu để train – test, các bạn cần chia tài liệu thành hai kinh phí đầu tư : ngân sách đầu tư đích and kinh phí dự báo. Hãy gọi ngân sách đầu tư đích Y & những ngân sách đầu tư dự báo X. Như thế,

Y = Boston Housing Price X = All other features X = bos.drop(“PRICE”, axis = 1) Y = bos“PRICE”>

Hôm ni các bạn có thể split tài liệu để train & test với snippet như sau.

X_train, X_test, Y_train, Y_test = sklearn.cross_validation.train_test_split(X, Y, test_size = 0.33, random_state = 5) print(X_train.shape) print(X_test.shape) print(Y_train.shape) print(Y_test.shape)

Nếu các bạn check shape của mỗi biến, các bạn đã có rất nhiều được bộ dữ liệu với tập dữ liệu thử nghiệm có phần trăm 66,66% giả dụ như với tài liệu train & 33,33% nếu như như với dữ liệu test.


Linear Regression

Tiếp, các bạn sẽ chạy hồi quy con đường tính.

from sklearn.linear_model import LinearRegression lm = LinearRegression() lm.fit(X_train, Y_train) Y_pred = lm.predict(X_test) plt.scatter(Y_test, Y_pred) plt.xlabel(“Prices: $Y_i$”) plt.ylabel(“Predicted prices: $hat_i$”) plt.title(“Prices vs Predicted prices: $Y_i$ vs $hat_i$”)

Đoạn mã trên sẽ tương xứng với một quy mô dựa vào X_train & Y_train. Bây giờ chúng tôi đã có nhiều quy mô tuyến tính, các bạn sẽ nỗ lực dự đoán nó mang đến X_test and những kinh phí dự đoán và để được lưu trong Y_pred. Để tưởng tượng sự khác biệt giữa giá thực tiễn and kinh phí dự đoán, cửa hàng chúng tôi cũng tạo nên một bảng biểu .


Thực tiễn thì đáng lẽ đồ vật thị ở phí a trên phải khởi tạo một mặt đường tuyến tính như các bạn đã trao đổi lý thuyết ở phí a trên. Tuy vậy, mã sản phẩm không thích hợp 100%, cho nên vì thế nó đang ko thể tạo nên đường con đường tính.

Xem thêm: Cách Lấy Lông Mi Ra Khỏi Mắt, Lông Mi Rơi Vào Mắt Có Nguy Hiểm Không

Trung bình diện tích s sai số

Để kiểm tra mức độ lỗi của một quy mô, các bạn có thể áp dụng Mean Squared Error. Đấy là 1 trong trong những phương thức để đo mức độ vừa phải của ô vuông của sai số. Về căn bản, nó vẫn bị check sự khác hoàn toàn giữa kinh phí đầu tư thực tiễn and kinh phí đầu tư dự đoán. Để vận dụng nó, các chúng ta cũng có thể áp dụng hàm bình phương trung bình không đúng số của scikit-learn bởi phương thức chạy đoạn mã này

mse = sklearn.

metrics.mean_squared_error(Y_test, Y_pred) print(mse)

kết quả nhận đc

28.5413672756

How khổng lồ 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/