REGRESSION LÀ GÌ

Trong bài viết, bản thân sẽ trình làng một Một trong những thuật toán cơ phiên bản tốt nhất của Machine Learning. Đây là thuật toán thù Linear Regression (Hồi Quy Tuyến Tính) thuộc team Supervised learning ( Học gồm đo lường ). Hồi quy con đường tính là một trong những cách thức hết sức dễ dàng tuy nhiên đã làm được chứng tỏ được tính hữu dụng đến một trong những lượng bự các trường hợp. Trong nội dung bài viết này, bạn sẽ mày mò ra đúng đắn cách thức tuyến đường tính thao tác làm việc như thế nào.Trong câu hỏi đối chiếu dữ liệu, các bạn sẽ xúc tiếp cùng với thuật ngữ "Regression" ( Hồi quy ) hết sức tiếp tục. Trước Lúc đi sâu vào Hồi quy tuyến tính, hãy tò mò quan niệm Hồi quy trước đã. Hồi quy đó là một phương thức thống kê lại để thiết lập mối quan hệ giữa một đổi thay dựa vào với một tổ tập đúng theo những biến đổi hòa bình. lấy ví dụ :

Tuổi = 5 + Chiều cao * 10 + Trọng lượng * 13Tại đó chính ta đang thiết lập 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à 1 trong những ví dụ siêu 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 trong những cách thức thống kê để hồi quy dữ liệu cùng với vươn lên là dựa vào có mức giá trị thường xuyên trong những khi các đổi thay hòa bình hoàn toàn có thể có 1 trong các nhị quý giá thường xuyên Hay là cực hiếm phân các loại. Nói bí quyết khác "Hồi quy tuyến đường tính" là 1 trong những cách thức để dự đân oán vươn lên là nhờ vào (Y) dựa trên giá trị của biến hóa hòa bình (X). Nó có thể được thực hiện cho những trường đúng theo họ ao ước dự đân oán một trong những lượng tiếp tục. lấy ví dụ, dự đân oán giao thông ở 1 cửa hàng bán lẻ, dự đân oán thời hạn người tiêu dùng dừng lại một trang nào kia hoặc số trang vẫn truy vấn vào một trong những trang web làm sao kia v.v...

Chuẩn bị

Để ban đầu với Hồi quy tuyến tính, bọn họ hãy đi lướt qua một số trong những tư tưởng tân oán học về thống kê.

Tương quan (r) - Giải yêu thích mối quan hệ thân hai biến, quý giá có thể chạy trường đoản cú -1 cho +1Pmùi hương không nên (σ2) - Đánh giá độ phân tán trong dữ liệu của bạnĐộ lệch chuẩn (σ) - Đánh giá chỉ độ phân tán vào tài liệu của bạn (cnạp năng lượng bậc nhì của pmùi hương sai)Phân păn năn chuẩnSai số (lỗi) - quý giá thực tế - giá trị dự đoánGiả định

Không một form size làm sao cân xứng mang lại tất cả, điều này cũng giống đối với Hồi quy tuyến tính. Để đống ý hồi quy đường tính, dữ liệu bắt buộc mãn nguyện một vài ba trả định đặc trưng. Nếu tài liệu của doanh nghiệp ko làm theo những đưa định, tác dụng của chúng ta có thể sai cũng như tạo phát âm nhầm.

Tuyến tính và Thêm vào : Nên gồm một quan hệ đường tính giữa vươn lên là tự do với biến không tự do cùng ảnh hưởng của sự biến đổi trong quý giá của các biến tự do buộc phải tác động sản xuất cho tới các thay đổi phụ thuộc vào.Tính bình thường của phân bổ các lỗi : Sự phân bổ sai không giống giữa các cực hiếm thực và cực hiếm dự đân oán (sai số) nên được phân bổ một phương pháp bình thường.Sự tương đồng: Phương thơm sai của những lỗi bắt buộc là một trong những quý hiếm không thay đổi đối với ,Thời gianDự đoánGiá trị của các biến chuyển độc lậpSự chủ quyền về thống kê của những lỗi: Các không đúng số (dư) tránh việc có bất kỳ mọt tương quan như thế nào giữa chúng. Ví dụ: Trong trường phù hợp tài liệu theo chuỗi thời hạn, tránh việc có sự tương quan giữa những không nên số liên tiếp nhau.Đường hồi quy tuyến đường tính

Trong khi áp dụng hồi quy tuyến tính, mục tiêu của họ là để triển khai sao một mặt đường thẳng hoàn toàn có thể tạo ra sự phân bổ gần nhất với hầu như các điểm. Do đó làm cho sút khoảng cách (sai số) của những điểm dữ liệu cho đến mặt đường đó.

*

lấy một ví dụ, ngơi nghỉ các điểm sống hình bên trên (trái) màn biểu diễn các điểm dữ liệu khác nhau với mặt đường thẳng (mặt phải) thay mặt đại diện cho 1 mặt đường giao động hoàn toàn có thể lý giải quan hệ giữa các trục x và y. Thông qua, hồi quy tuyến đường tính bọn họ cố gắng tìm thấy một đường như vậy. lấy ví dụ, nếu như chúng ta bao gồm một vươn lên là dựa vào Y và một biến tự do X - mối quan hệ thân X cùng Y có thể được biểu diễn dưới dạng phương trình sau:

Y = Β0 + Β1*XTại trên đây,

Y = Biến prúc thuộcX = biến hóa độc lậpΒ0 = Hằng sốΒ1 = Hệ số mối quan hệ giữa X với YMột vài đặc điểm của hồi quy đường tínhĐường hồi quy luôn luôn luôn luôn trải qua vừa phải của thay đổi chủ quyền (x) tương tự như vừa phải của trở nên dựa vào (y)Đường hồi qui buổi tối tphát âm hóa tổng của "Diện tích các sai số". Đó là nguyên nhân tại sao phương thức hồi quy con đường tính được call là "Ordinary Least Square (OLS)"Β1 giải thích sự đổi khác vào Y với sự biến hóa X bởi một đơn vị chức năng. Nói cách khác, nếu như họ đội giá trị của X vì chưng một đơn vị thì nó đang là sự việc thay đổi quý giá của YTìm mặt đường hồi quy tuyến đường tính

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

Ví dụ, mang sử họ ước ao dự đoán y tự x trong bảng sau với giả sử rằng pmùi hương trình hồi quy của họ sẽ giống 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

Tại phía trên,

Độ 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 liêu x với y.989938

Nếu chúng ta phân minh các Tổng còn lại của diện tích S sai số (RSS) khớp ứng với B0 và B1 cùng tương đương với các kết quả bởi ko, họ dành được các pmùi hương trình dưới đây nlỗi là một trong những kết quả:

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

B1 = 2,64B0 = -2,2Do đó, phương thơm trình hồi quy nhất đang biến hóa -

Y = -2,2 + 2,64 * xHãy coi, dự đoán của chúng ta thế nào bằng cách áp dụng phương thơm trình này

xY -cực hiếm 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 nhằm cân xứng với 1 đường thẳng thì dự đoán thù của họ đang đúng đắn lắm, cơ mà nếu như 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ì vậy cả hai series sẽ di chuyển cùng cả nhà cùng đó là biểu đồ nhằm hiển thị giá trị dự đoán:

*

Hiệu suất của mô hình

Một khi bạn sản xuất mô hình, thắc mắc tiếp theo sau cho trong đầu là để tìm hiểu liệu mô hình của người sử dụng bao gồm đầy đủ để tham gia đoán trong tương lai Hay là quan hệ cơ mà các bạn đã desgin thân các trở nên phụ thuộc cùng tự do là đầy đủ hay không.

Vì mục đích này có nhiều chỉ số mà bọn họ phải tđắm đuối khảo

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

*

Tổng các diện tích (TSS): TSS là 1 phnghiền đo tổng đổi thay thiên trong Xác Suất đáp ứng nhu cầu / biến đổi phụ thuộc vào Y với có thể được xem như là con số biến hóa thiên vốn có vào đáp ứng trước lúc hồi quy được triển khai.Sum of Squares (RSS): RSS đo lường và thống kê lượng đổi khác còn lại ko lý giải được sau khi thực hiện hồi quy.(TSS - RSS) thống kê giám sát mức độ thay đổi vào thỏa mãn nhu cầu được giải thích (hoặc nhiều loại bỏ) bằng cách thực hiện hồi quy

Trong số đó N là số quan liêu liền kề được sử dụng để cân xứng cùng 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 trường đoản cú 0 cho 1.R2 của 0 nghĩa là đổi mới nhờ vào quan yếu dự đoán thù được trường đoản cú trở thành độc lậpR2 của 1 Có nghĩa là biến hóa dựa vào rất có thể được dự đoán cơ mà không tồn tại sai số từ bỏ biến hóa độc lậpMột R2 thân 0 với 1 chỉ ra rằng cường độ cơ mà đổi mới nhờ vào hoàn toàn có thể dự đân oán được. Một R2 của 0.đôi mươi Có nghĩa là trăng tròn Xác Suất của phương không nên trong Y hoàn toàn có thể dự đoán thù được tự X; Một R2 của 0.40 tức là 40 xác suất là rất có thể dự đoán v.v...

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

*

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

Mặc dù RMSE là 1 trong nhận xét tốt cho những không đúng số tuy nhiên vụ việc với nó là nó rất đơn giản bị tác động bởi phạm vi của biến đổi dựa vào của người sử dụng. Nếu biến chuyển dựa vào của chúng ta tất cả dải biến hóa thiên bé, RMSE của bạn sẽ tốt và ví như đổi thay nhờ vào bao gồm phạm vi rộng RMSE vẫn cao. Do đó, RMSE là một vài liệu xuất sắc để so sánh thân những lần tái diễn không giống nhau của tế bào hình

Mean Absolute Percentage Error (MAPE)

Để hạn chế phần lớn tinh giảm của RMSE, các bên so sánh thích áp dụng MAPE so với RMSE. MAPE mang đến không nên số vào Xác Suất Tỷ Lệ với cho nên so sánh được thân các quy mô. Công thức tính MAPE rất có thể được viết nlỗi sau:

*

N: Tổng số quan sát

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

Cho cho ngày nay, bọn họ đã bàn luận về kịch bản cơ mà chúng ta chỉ bao gồm một trở thành độc lập. Nếu họ có tương đối nhiều rộng một vươn lên là độc lập, phương thức tương xứng tuyệt nhất là "Multiple Regression Linear" - Hồi quy tuyến đường tính đa biến

Sự không giống biệt

Về cơ bản không tồn tại sự khác biệt thân hồi quy con đường tính "giản đơn" cùng "nhiều biến". Cả nhì hầu như thao tác làm việc tuân theo cách thức OLS với thuật toán để sở hữu được đường hồi quy buổi tối ưu độc nhất cũng tương tự. Trong ngôi trường thích hợp sau, phương trình hồi quy sẽ sở hữu được một làm ra nlỗi sau:

Y=B0+B1*X1+B2*X2+B3*X3.....Ở phía trên,

Bi: Các thông số khác nhauXi: Các biến độc lập khác nhau

Chạy hồi quy đường tính bằng Pyhẹp scikit-Learn

Tại trên, chúng ta đang biết rằng hồi quy đường tính là 1 trong những kỹ thuật thông dụng và bạn có thể thấy những pmùi hương trình toán học của hồi quy tuyến đường tính. Nhưng chúng ta bao gồm biết có tác dụng cố như thế nào nhằm triển khai một hồi quy tuyến tính trong Python thả ?? Có một số trong những phương pháp để có thể có tác dụng điều ấy, bạn cũng có thể tiến hành hồi quy con đường tính bằng cách thực hiện những quy mô những thống kê, numpy, scipy và sckit learn. Nhưng vào bài bác này chúng ta vẫn áp dụng sckit learn nhằm thực hiện hồi quy tuyến tính.

Scikit-learn là một trong những module Pyhạn hẹp trẻ trung và tràn trề sức khỏe cho việc học sản phẩm. Nó đựng hàm mang đến hồi quy, phân nhiều loại, phân cụm, sàng lọc quy mô cùng giảm kích chiều. Chúng ta đã tìm hiểu module sklearn.linear_Model tất cả cất "những method để tiến hành hồi quy, trong đó giá trị phương châm sẽ là sự việc phối hợp tuyến tính của các thay đổi đầu vào".

Trong bài xích đăng này, bọn họ đang sử dụng bộ dữ liệu Nhà nghỉ ngơi Boston, bộ dữ liệu chứa biết tin về cực hiếm công trình làm việc ngoại thành thị trấn Boston. Tập tài liệu này thuở đầu được rước từ thư viện StatLib được bảo trì tại Đại học Carnegie Mellon cùng bây chừ vẫn bao gồm bên trên UCI Machine Learning Repository.

Xem thêm: " Cổ Hũ Là Gì - Cổ Hũ Dừa Là Gì

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

Sở Dữ liệu Nhà nghỉ ngơi Boston bao hàm giá cả nhà đất nghỉ ngơi phần lớn chỗ khác biệt sinh sống Boston. Cùng với túi tiền, tập tài liệu cũng đưa thông tin nhỏng Tội phạm (CRIM), các khu vực sale không-bán-lẻ ngơi nghỉ thị trấn (INDUS), tuổi công ty tải ngôi nhà (AGE) và có rất nhiều thuộc tính khác gồm sẵn tại đây .Sở dữ liệu bao gồm nó có thể down từ trên đây . Tuy nhiên, bởi vì bọn họ thực hiện scikit-learn, bạn cũng 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, chúng ta đang import cỗ dữ liệu Boston Housing với lưu trữ nó trong một vươn lên là Gọi là boston. Để import nó trường đoản cú scikit-learn, họ đang rất cần được chạy đoạn mã này.

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

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

*

Tiếp,

print(boston.data.shape)trước hết, chúng ta cũng có thể thuận tiện soát sổ shape của nó bằng cách Hotline boston.data.shape với nó vẫn trả lại kích cỡ của tập dữ liệu cùng với form size column.

*

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

print(boston.feature_names)

*

quý khách hoàn toàn có thể cần sử dụng lệnh print(boston.DESCR) nhằm soát sổ description của tài liệu ráng bởi vì mngơi nghỉ web để phát âm.

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

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

*

Hoặc các bạn co thể cần sử dụng đoạn lệnh sau nhằm 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 đang add nó vào sử dụng đoạn mã trên

*

Nếu bạn muốn quan sát các số liệu tổng thích hợp những thống kê, hãy chạy đoạn mã sau .

print(bos.describe())

*

Tách dữ liệu nhằm train-test

Về cơ bạn dạng, trước khi phân tách tài liệu thành tập tài liệu nhằm train - demo, họ phải phân chia dữ liệu thành nhì cực hiếm : cực hiếm đích cùng cực hiếm đoán trước. Hãy call giá trị đích Y cùng những quý hiếm dự đoán X.Vậy nên,

Y = Boston Housing PriceX = All other featuresX = bos.drop("PRICE", axis = 1)Y = bos<"PRICE">Bây giờ đồng hồ chúng ta có thể split dữ liệu để train và thử nghiệm cùng với snippet nhỏng sau.

X_train, X_thử nghiệm, Y_train, Y_kiểm tra = sklearn.cross_validation.train_test_split(X, Y, test_kích cỡ = 0.33, random_state = 5)print(X_train.shape)print(X_chạy thử.shape)print(Y_train.shape)print(Y_thử nghiệm.shape)Nếu bọn họ kiểm soát shape của mỗi trở nên, bọn họ đã chiếm lĩnh được cỗ tài liệu cùng với tập tài liệu thử nghiệm có tỷ lệ 66,66% so với dữ liệu train cùng 33,33% đối với dữ liệu chạy thử.

*

Linear Regression

Tiếp, chúng ta 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_thử nghiệm, 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 đang phù hợp với 1 quy mô dựa trên X_train với Y_train. Bây giờ chúng tôi vẫn tất cả quy mô đường tính, bọn họ sẽ nỗ lực dự đoán thù nó mang lại X_kiểm tra và những quý giá dự đoán thù sẽ được giữ vào Y_pred. Để tưởng tượng sự khác biệt giữa giá chỉ thực tiễn với quý hiếm dự đoán thù, công ty chúng tôi cũng tạo thành một bảng biểu .

*

Thực tế thì đáng lẽ đồ gia dụng thị ở trên phải lập một đường tuyến tính nhỏng họ sẽ thảo luận lý thuyết sinh hoạt trên. Tuy nhiên, Mã Sản Phẩm ko tương thích 100%, cho nên vì vậy nó đã ko thể tạo được đường tuyến đường tính.

Trung bình diện tích không đúng số

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

mse = sklearn.metrics.mean_squared_error(Y_chạy thử, Y_pred)print(mse)hiệu quả nhận được

28.5413672756

Tmê mẩn khảo và 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/