REGRESSION LÀ GÌ

     

Trong bài bác viết, mình sẽ giới thiệu một trong những thuật toán cơ bạn dạng nhất của Machine Learning. Đây là thuật toán Linear Regression (Hồi Quy đường Tính) thuộc đội Supervised learning ( học tập có tính toán ). Hồi quy đường tính là một phương pháp rất đơn giản dễ dàng nhưng đã được chứng minh được tính bổ ích cho một vài lượng lớn những tình huống. Trong bài viết này, các bạn sẽ khám phá ra chủ yếu xác phương thức tuyến tính làm việc như cố kỉnh nào.Trong bài toán phân tích dữ liệu, bạn sẽ tiếp xúc cùng với thuật ngữ "Regression" ( Hồi quy ) khôn xiết thường xuyên. Trước khi đi sâu vào Hồi quy con đường tính, hãy mày mò khái niệm Hồi quy trước đã. Hồi quy chính là một phương thức thống kê để thiết lập mối quan hệ giữa một biến nhờ vào và một nhóm tập hợp các biến độc lập. Lấy ví dụ :

Tuổi = 5 + chiều cao * 10 + Trọng lượng * 13Ở đó chính ta đang thiết lập cấu hình mối tình dục giữa Chiều cao và Trọng lượng của một bạn với Tuổi của anh/cô ta. Đây là 1 ví dụ khôn xiết cơ phiên bản của Hồi quy.

Bạn đang xem: Regression là gì

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

Introduction

"Hồi quy tuyến tính" là một phương thức thống kê nhằm hồi quy dữ liệu với biến phụ thuộc vào có giá chỉ trị liên tục trong khi những biến chủ quyền có thể có 1 trong các hai giá trị liên tiếp hoặc là cực hiếm phân loại. Nói theo một cách khác "Hồi quy con đường tính" là một cách thức để dự đoán biến phụ thuộc (Y) dựa vào giá trị của biến tự do (X). Nó rất có thể được sử dụng cho các trường hợp chúng ta muốn dự đoán một số trong những lượng liên tục. Ví dụ, dự kiến giao thông làm việc một cửa hàng bán lẻ, dự đoán thời hạn người dùng tạm dừng một trang nào kia hoặc số trang đã truy vấn vào một website nào kia v.v...

Chuẩn bị

Để bước đầu với Hồi quy con đường tính, bọn họ hãy đi lướt qua một vài khái niệm toán học về thống kê.

Tương quan (r) - giải thích mối quan hệ nam nữ giữa nhị biến, giá bán trị có thể chạy từ -1 mang đến +1Phương không đúng (σ2) - Đánh giá bán độ phân tán trong tài liệu của bạnĐộ lệch chuẩn (σ) - Đánh giá bán độ phân tán vào dữ liệu của công ty (căn bậc nhị của phương sai)Phân phối chuẩnSai số (lỗi) - giá trị thực tiễn - cực hiếm dự đoánGiả định

Không một size nào tương xứng cho vớ cả, điều đó cũng đúng đối với Hồi quy đường tính. Để ưng ý hồi quy tuyến đường tính, tài liệu nên hài lòng một vài đưa định quan liêu trọng. Trường hợp dữ liệu của người tiêu dùng không làm theo các mang định, công dụng của bạn cũng có thể sai tương tự như gây gọi nhầm.

Tuyến tính và Thêm vào : Nên gồm một mối quan hệ tuyến tính thân biến tự do và đổi mới không hòa bình và ảnh hưởng của sự thay đổi trong giá chỉ trị của các biến chủ quyền nên tác động thêm vào tới những biến phụ thuộc.Tính thông thường của phân bổ các lỗi : Sự phân chia sai không giống giữa những giá trị thực với giá trị dự kiến (sai số) yêu cầu được phân chia một biện pháp bình thường.Sự tương đồng: Phương sai của những lỗi nên là một trong giá trị không đổi so cùng với ,Thời gianDự đoánGiá trị của các biến độc lậpSự chủ quyền về thống kê của những lỗi: các sai số (dư) tránh việc có ngẫu nhiên mối đối sánh tương quan nào thân chúng. Ví dụ: trong trường hợp dữ liệu theo chuỗi thời gian, tránh việc có sự tương quan giữa các sai số liên tục nhau.Đường hồi quy đường tính

Trong khi áp dụng hồi quy tuyến đường tính, kim chỉ nam của họ là để làm sao một đường thẳng có thể tạo được sự phân bổ gần độc nhất với phần đông các điểm. Vì vậy làm giảm khoảng cách (sai số) của những điểm dữ liệu cho đến đường đó.

*

Ví dụ, ở các điểm ngơi nghỉ hình trên (trái) biểu diễn những điểm dữ liệu không giống nhau và mặt đường thẳng (bên phải) đại diện thay mặt cho một mặt đường gần đúng có thể giải thích mối quan hệ giữa những trục x và y. Thông qua, hồi quy đường tính chúng ta cố cụ tìm ra một con đường như vậy. Ví dụ, nếu chúng ta có một biến phụ thuộc Y và một biến tự do X - mối quan hệ giữa X và Y có thể được biểu diễn dưới dạng phương trình sau:

Y = Β0 + Β1*XỞ đây,

Y = phát triển thành phụ thuộcX = trở nên độc lậpΒ0 = Hằng sốΒ1 = Hệ số quan hệ giữa X cùng YMột vài đặc điểm của hồi quy tuyến tínhĐường hồi quy luôn luôn luôn trải qua trung bình của biến độc lập (x) cũng tương tự trung bình của biến phụ thuộc (y)Đường hồi qui buổi tối thiểu hóa tổng của "Diện tích các sai số". Đó là vì sao tại sao phương thức hồi quy con đường tính được gọi là "Ordinary Least Square (OLS)"Β1 giải thích sự chuyển đổi trong Y cùng với sự biến hóa X bằng một đơn vị. Nói cách khác, nếu họ tăng quý giá của X bởi một đơn vị chức năng thì nó đã là sự biến đổi giá trị của YTìm con đường hồi quy tuyến đường tính

Sử dụng cơ chế thống kê ví như Excel, R, SAS ... Các bạn sẽ trực tiếp tra cứu hằng số (B0 với B1) như là tác dụng của hàm hồi quy tuyến tính. Như kim chỉ nan ở trên, nó chuyển động trên quan niệm OLS và cố gắng giảm bớt diện tích sai số, những công chũm này sử dụng những gói phần mềm tính các hằng số này.

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

xyPredict "y"
12Β0+B1*1
21Β0+B1*2
33Β0+B1*3
46Β0+B1*4
59Β0+B1*5
611Β0+B1*6
713Β0+B1*7
815Β0+B1*8
917Β0+B1*9
1020Β0+B1*10

Ở đây,

Độ lệch chuẩn chỉnh x3.02765
Độ lệch chuẩn chỉnh y6.617317
Trung bình x5.5
Trung bình y9.7
Tương quan x cùng y.989938

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

B1 = tương quan * ( Độ lệch chuẩn chỉnh của y / Độ lệch chuẩn của x)B0 = trung bình (Y) - B1 * vừa phải (X)Đưa quý hiếm từ bảng 1 vào các phương trình trên,

B1 = 2,64B0 = -2,2Do đó, phương trình hồi quy tuyệt nhất sẽ biến hóa -

Y = -2,2 + 2,64 * xHãy xem, dự kiến của họ như cầm cố nào bằng phương pháp sử dụng phương trình này

xY -giá trị thựcY - Dự đoán
120.44
213.08
335.72
468.36
5911
61113.64
71316.28
81518.92
91721.56
102024.2

Chỉ với 10 điểm tài liệu để cân xứng với một mặt đường thẳng thì dự đoán của bọn họ sẽ chính xác lắm, nhưng lại nếu chúng ta thấy sự tương quan giữa "Y-Thưc tế" với "Y - Dự đoán" thì triển vọng sẽ tương đối cao cho nên vì thế cả nhì series đang di chuyển cùng nhau và đấy là biểu đồ nhằm hiển thị giá trị dự đoán:

*

Hiệu suất của tế bào hình

Một khi bạn xây dựng mô hình, thắc mắc tiếp theo mang đến trong đầu là để biết liệu mô hình của khách hàng có đủ để dự đoán sau đây hoặc là quan hệ mà chúng ta đã xuất bản giữa những biến phụ thuộc vào và tự do là đầy đủ hay không.

Vì mục đích này có khá nhiều chỉ số mà họ cần tham khảo

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

*

Tổng các diện tích (TSS): TSS là một trong phép đo tổng vươn lên là thiên trong tỷ lệ đáp ứng nhu cầu / biến dựa vào Y và có thể được coi là số lượng đổi mới thiên vốn tất cả trong thỏa mãn nhu cầu trước khi hồi quy được thực hiện.Sum of Squares (RSS): RSS tính toán lượng biến đổi còn lại không lý giải được sau khoản thời gian thực hiện tại hồi quy.(TSS - RSS) giám sát và đo lường mức độ đổi khác trong đáp ứng được phân tích và lý giải (hoặc loại bỏ) bằng phương pháp thực hiện nay hồi quy

Trong kia N là số quan ngay cạnh được sử dụng để phù hợp với mô hình, σx là độ lệch chuẩn của x, với σy là độ lệch chuẩn của y.

R2 giao động từ 0 mang lại 1.R2 của 0 nghĩa là biến nhờ vào không thể dự kiến được từ trở thành độc lậpR2 của 1 tức là biến phụ thuộc có thể được dự đoán mà không có sai số từ biến chuyển độc lậpMột R2 thân 0 và 1 đã cho thấy mức độ mà trở nên phụ thuộc rất có thể dự đoán được. Một R2 của 0.20 có nghĩa là 20 xác suất của phương sai trong Y hoàn toàn có thể dự đoán được từ bỏ X; Một R2 của 0.40 có nghĩa là 40 xác suất là rất có thể dự đoán v.v...

Root Mean Square Error (RMSE)RMSE cho thấy thêm mức độ phân tán những giá trị dự kiến từ các giá trị thực tế. Cách làm tính RMSE là

*

N: Tổng số quan sát

Mặc cho dù RMSE là một reviews tốt cho những sai số nhưng sự việc với nó là nó rất đơn giản bị ảnh hưởng bởi phạm vi của biến phụ thuộc vào của bạn. Nếu biến đổi phụ thuộc của chúng ta có dải biến hóa thiên hẹp, RMSE của bạn sẽ thấp cùng nếu biến phụ thuộc vào có phạm vi rộng lớn RMSE vẫn cao. Bởi đó, RMSE là một vài liệu tốt để đối chiếu giữa các lần lặp lại khác biệt của mô hình

Mean Absolute Percentage Error (MAPE)

Để hạn chế những tinh giảm của RMSE, các nhà so sánh thích sử dụng MAPE so với RMSE. MAPE mang lại sai số trong tỷ lệ phần trăm và vì chưng đó so sánh được giữa những mô hình. Phương pháp tính MAPE rất có thể được viết như sau:

*

N: Tổng số quan lại sát

Hồi quy tuyến tính nhiều biến

Cho mang đến hiện tại, bọn họ đã luận bàn về kịch bạn dạng mà bọn họ 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, cách thức phù hợp độc nhất là "Multiple Regression Linear" - Hồi quy con đường tính nhiều biến

Sự không giống biệt

Về cơ bản không gồm sự khác hoàn toàn giữa hồi quy đường tính "giản đơn" cùng "đa biến". Cả nhị đều làm việc tuân theo cách thức OLS cùng thuật toán để có được đường hồi quy tối ưu duy nhất cũng tương tự. Trong trường vừa lòng sau, phương trình hồi quy sẽ sở hữu được một bản thiết kế như sau:

Y=B0+B1*X1+B2*X2+B3*X3.....Ở đây,

Bi: những hệ số không giống nhauXi: các biến hòa bình khác nhau

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

Ở trên, chúng ta đã hiểu được hồi quy đường tính là một kỹ thuật phổ biến và bạn có thể thấy các phương trình toán học của hồi quy đường tính. Nhưng bạn có biết làm cụ nào để triển khai một hồi quy đường tính trong Python ?? gồm một số phương pháp để có thể có tác dụng điều đó, chúng ta có thể thực hiện hồi quy đường tính bằng cách sử dụng các mô hình thống kê, numpy, scipy cùng sckit learn. Mà lại trong bài xích này bọn họ sẽ áp dụng sckit learn để tiến hành hồi quy đường tính.

Scikit-learn là 1 trong module Python trẻ trung và tràn trề sức khỏe cho việc học máy. Nó đựng hàm đến hồi quy, phân loại, phân cụm, lựa chọn mô hình và sút kích chiều. Họ sẽ tìm hiểu module sklearn.linear_model bao gồm chứa "các method để thực hiện hồi quy, trong các số đó giá trị kim chỉ nam sẽ là sự phối kết hợp tuyến tính của những biến đầu vào".

Trong bài đăng này, chúng ta sẽ thực hiện bộ dữ liệu nhà ở Boston, bộ dữ liệu chứa thông tin về giá trị thành tích ở ngoại ô thành phố Boston. Tập tài liệu này ban sơ được lấy từ thư viện StatLib được bảo trì tại Đại học tập Carnegie Mellon và hiện nay đã gồm trên UCI Machine Learning Repository.

Xem thêm: Cách Tẩy Lông Vùng Kín Cho Nữ Tại Nhà Không Đau, Cách Để Tẩy Sạch Lông Vùng Bikini Tại Nhà

Khám phá bộ tài liệu nhà Boston

Bộ Dữ liệu nhà tại Boston bao hàm giá nhà tại những nơi khác nhau ở Boston. Cùng với giá cả, tập tài liệu cũng tin báo như tầy (CRIM), các khoanh vùng kinh doanh không-bán-lẻ ở thị xã (INDUS), tuổi chủ sở hữu ngôi nhà (AGE) và có nhiều thuộc tính khác gồm sẵn tại đây .Bộ tài liệu chính nó có thể down từ đây . Tuy nhiên, vì họ sử dụng scikit-learn, bạn có thể import nó từ scikit-learn.

%matplotlib inline import numpy as npimport pandas as pdimport scipy.stats as statsimport matplotlib.pyplot as pltimport sklearnimport statsmodels.api as smimport seaborn as snssns.set_style("whitegrid")sns.set_context("poster")# special matplotlib argument for improved plotsfrom matplotlib import rcParamsTrước hết, bọn họ sẽ import bộ dữ liệu Boston Housing và tàng trữ nó trong một trở thành gọi là boston. Để import nó từ bỏ scikit-learn, chúng ta sẽ rất cần được chạy đoạn mã này.

from sklearn.datasets import load_bostonboston = load_boston()Biến boston là một trong dạng tự điển, vị vậy chúng ta có thể kiểm tra key của nó thực hiện đoạn mã mặt dưới.

print(boston.keys())Nó sẽ trả về như sau

*

Tiếp,

print(boston.data.shape)Trước tiên, chúng ta có thể dễ dàng kiểm tra shape của nó bằng phương pháp gọi boston.data.shape với nó vẫn trả lại form size của tập tài liệu với kích cỡ column.

*

Như bạn cũng có thể thấy nó trả về (506, 13), có nghĩa là có 506 hàng dữ liệu với 13 cột. Hiện thời chúng ta mong muốn biết 13 cột là gì. Bọn họ sẽ chạy đoạn code sau :

print(boston.feature_names)

*

Bạn có thể dùng lệnh print(boston.DESCR) để đánh giá description của dữ liệu thay vị mở web nhằm đọc.

Tiếp, convert tài liệu về dạng pandas! Rất đơn giản, gọi hàm pd.DataFrame() cùng truyền boston.data. Chúng ta cũng có thể kiểm tra 5 dữ liệu đầu tiên bằng bos.head().

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

*

Hoặc bạn co thể cần sử dụng đoạn lệnh sau để show được tên cột

bos.columns = boston.feature_namesprint(bos.head())

*

Có vẻ vẫn chưa tồn tại column thương hiệu là PRICE.

bos<"PRICE"> = boston.targetprint(bos.head())Ta sẽ add nó vào áp dụng đoạn mã trên

*

Nếu bạn có nhu cầu nhìn các số liệu tổng phù hợp thống kê, hãy chạy đoạn mã sau .

print(bos.describe())

*

Tách dữ liệu để train-test

Về cơ bản, trước lúc chia tài liệu thành tập tài liệu để train - test, họ cần chia tài liệu thành hai quý hiếm : quý hiếm đích và cực hiếm dự báo. Hãy call giá trị đích Y và những giá trị dự báo X.Như vậy,

Y = Boston Housing PriceX = All other featuresX = bos.drop("PRICE", axis = 1)Y = bos<"PRICE">Bây giờ bạn có thể split tài liệu để train và kiểm tra 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 bọn họ kiểm tra shape của mỗi biến, bọn họ đã đạt được bộ dữ liệu với tập tài liệu thử nghiệm có phần trăm 66,66% so với dữ liệu train và 33,33% so với dữ liệu test.

*

Linear Regression

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

from sklearn.linear_model import LinearRegressionlm = 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: $hatY_i$")plt.title("Prices vs Predicted prices: $Y_i$ vs $hatY_i$")Đoạn mã trên sẽ tương xứng với một quy mô dựa bên trên X_train với Y_train. Hiện giờ chúng tôi vẫn có quy mô tuyến tính, họ sẽ nỗ lực dự đoán nó mang đến X_test và các giá trị dự kiến sẽ được giữ trong Y_pred. Để hình dung sự biệt lập giữa giá thực tiễn và quý hiếm dự đoán, cửa hàng chúng tôi cũng tạo thành một bảng biểu .

Xem thêm: Kí Tự Là Gì ? Hướng Dẫn Dùng Đúng Cách

*

Thực tế thì đáng lẽ đồ thị sống trên phải lập một mặt đường tuyến tính như chúng ta đã luận bàn lý thuyết làm việc trên. Tuy nhiên, mã sản phẩm không phù hợp 100%, vì vậy nó đã ko thể tạo được đường tuyến đường tính.

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

Để đánh giá mức độ lỗi của một tế bào hình, chúng ta có thể sử dụng Mean Squared Error. Đây là một trong các phương thức để đo mức độ vừa phải của ô vuông của không nên số. Về cơ bản, nó sẽ kiểm soát sự biệt lập giữa giá chỉ trị thực tế và quý hiếm dự đoán. Để sử dụng nó, bạn cũng có thể sử dụng hàm bình phương trung bình sai số của scikit-learn bằng cách chạy đoạn mã này

mse = sklearn.metrics.mean_squared_error(Y_test, Y_pred)print(mse)kết quả dìm được

28.5413672756

Tham khảo cùng dịch

http://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/