Linear Regression Là Gì
Trong bài bác viết, mình sẽ ra mắt một 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 đường Tính) thuộc team Supervised learning ( học có đo lường và tính toán ). Hồi quy đường tính là một phương pháp rất dễ dàng và đơn giản nhưng sẽ được minh chứng được tính có lợi cho một vài lượng lớn những tình huống. Trong nội dung bài viết này, bạn sẽ khám phá ra bao gồm xác phương pháp tuyến tính làm việc như rứa nào.Trong việc phân tích dữ liệu, các bạn sẽ tiếp xúc cùng 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 đường 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 cách thức thống kê để thiết lập cấu hình mối quan hệ giới tính giữa một biến nhờ vào và một đội tập hợp các biến độc lập. Lấy một ví dụ :
Tuổi = 5 + độ cao * 10 + Trọng lượng * 13Ở đây chính ta đang tùy chỉnh thiết lập mối quan hệ tình dục giữa Chiều cao & Trọng lượng của một fan với Tuổi của anh/cô ta. Đây là 1 trong những ví dụ rất cơ bạn dạng của Hồi quy.
Bạn đang xem: Linear regression là gì
Hồi quy con đường tính giản đơn
Introduction"Hồi quy đường tính" là một cách thức thống kê để hồi quy tài liệu với biến nhờ vào có giá bán trị thường xuyên trong khi những biến chủ quyền có thể có 1 trong những hai giá trị tiếp tục hoặc là cực hiếm phân loại. Nói theo một cách khác "Hồi quy tuyến đường tính" là một cách thức để dự kiến biến phụ thuộc (Y) dựa vào giá trị của biến chủ quyền (X). Nó hoàn toàn có thể được sử dụng cho các trường hợp họ muốn dự đoán một số trong những lượng liên tục. Ví dụ, dự đoán giao thông nghỉ ngơi một siêu thị bán lẻ, dự đoán thời gian người dùng dừng lại một trang nào đó hoặc số trang đã truy vấn vào một website nào đó v.v...
Chuẩn bịĐể bước đầu với Hồi quy con đường tính, chúng ta hãy đi lướt qua một vài khái niệm toán học tập về thống kê.
Tương quan tiền (r) - giải thích mối quan hệ giữa nhị biến, giá bán trị có thể chạy từ bỏ -1 mang lại +1Phương không nên (σ2) - Đánh giá chỉ độ phân tán trong tài liệu của bạnĐộ lệch chuẩn chỉnh (σ) - Đánh giá bán độ phân tán trong dữ liệu của chúng ta (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 - quý giá dự đoánGiả địnhKhông một kích cỡ nào tương xứng cho tất cả, vấn đề đó cũng đúng so với Hồi quy tuyến đường tính. Để ưng ý hồi quy đường tính, tài liệu nên đống ý một vài mang định quan trọng. Trường hợp dữ liệu của chúng ta không làm theo các đưa định, kết quả của chúng ta có thể sai cũng như gây phát âm nhầm.
Tuyến tính & Thêm vào : Nên bao gồm một mối quan hệ tuyến tính giữa biến độc lập và trở nên không độc lập và tác động của sự chuyển đổi trong giá trị của những 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 chia các lỗi : Sự phân bổ sai không giống giữa các giá trị thực với giá trị dự kiến (sai số) cần được phân chia một phương pháp bình thường.Sự tương đồng: Phương sai của các lỗi nên là một trong những giá trị không thay đổi so cùng với ,Thời gianDự đoánGiá trị của những biến độc lậpSự hòa bình về thống kê của những lỗi: các sai số (dư) tránh việc có bất kỳ mối đối sánh tương quan nào thân chúng. Ví dụ: trong trường hợp tài liệu theo chuỗi thời gian, tránh việc có sự đối sánh tương quan giữa những sai số liên tục nhau.Đường hồi quy tuyến tínhTrong khi sử dụng hồi quy con đường tính, mục tiêu của chúng ta là để gia công sao một con đường thẳng rất có thể tạo được sự phân bổ gần nhất với hầu như các điểm. Cho nên 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ụ, ở những điểm nghỉ ngơi hình bên trên (trái) biểu diễn những điểm dữ liệu khác nhau và đường thẳng (bên phải) thay mặt đại diện cho một đường gần đúng hoàn toàn có thể giải thích quan hệ giữa những trục x và y. Thông qua, hồi quy tuyến tính chúng ta cố nuốm tìm ra một đường như vậy. Ví dụ, nếu họ có một biến phụ thuộc vào Y và một biến hòa bình X - quan hệ giữa X với Y có thể được màn biểu diễn dưới dạng phương trình sau:
Y = Β0 + Β1*XỞ đây,
Y = đổi thay phụ thuộcX = biến độc lậpΒ0 = Hằng sốΒ1 = Hệ số mối quan hệ giữa X cùng YMột vài đặc thù của hồi quy con đường tínhĐường hồi quy luôn luôn trải qua trung bình của biến tự do (x) tương tự như trung bình của biến nhờ vào (y)Đường hồi qui về 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 call là "Ordinary Least Square (OLS)"Β1 lý giải sự thay đổi trong Y cùng với sự biến hóa X bằng một đơn vị. Nói giải pháp khác, nếu họ tăng quý hiếm của X bởi vì một đơn vị thì nó đã là sự thay đổi giá trị của YTìm mặt đường hồi quy đường tínhSử dụng hiện tượng thống kê ví như Excel, R, SAS ... Các bạn sẽ trực tiếp search hằng số (B0 cùng B1) như là hiệu quả của hàm hồi quy tuyến tính. Như kim chỉ nan ở trên, nó hoạt động trên tư tưởng OLS và nỗ lực giảm bớt diện tích sai số, những công nuốm này sử dụng các gói ứng dụng tính những hằng số này.
Ví dụ, đưa sử bọn họ muốn dự đoán y từ bỏ x trong bảng sau và giả sử rằng phương trình hồi quy của họ sẽ giống hệt như y = B0 + B1 * x
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 |
Trung bình x | 5.5 |
Trung bình y | 9.7 |
Tương quan tiền x cùng y | .989938 |
Nếu họ phân biệt các Tổng sót lại của diện tích s sai số (RSS) tương xứng với B0 và B1 và tương đương với các công dụng bằng không, họ có được những phương trình dưới đây như là 1 trong kết quả:
B1 = đối sánh * ( Độ lệch chuẩn của y / Độ lệch chuẩn chỉnh của x)B0 = vừa đủ (Y) - B1 * mức độ vừa phải (X)Đưa giá trị 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 nhất sẽ biến đổi -
Y = -2,2 + 2,64 * xHãy xem, dự kiến của bọn họ như cố nào bằng cách sử dụng phương trình này
1 | 2 | 0.44 |
2 | 1 | 3.08 |
3 | 3 | 5.72 |
4 | 6 | 8.36 |
5 | 9 | 11 |
6 | 11 | 13.64 |
7 | 13 | 16.28 |
8 | 15 | 18.92 |
9 | 17 | 21.56 |
10 | 20 | 24.2 |
Chỉ với 10 điểm dữ liệu để tương xứng với một mặt đường thẳng thì dự kiến của bọn họ sẽ chính xác lắm, nhưng lại nếu họ thấy sự đối sánh giữa "Y-Thưc tế" và "Y - Dự đoán" thì triển vọng sẽ tương đối cao vì vậy cả nhị series đang dịch rời cùng nhau và đấy là biểu đồ để hiển thị quý hiếm dự đoán:

Một khi bạn xây dựng tế bào hình, thắc mắc tiếp theo mang đến trong đầu là để tìm hiểu liệu mô hình của người sử dụng có đủ để tham dự đoán sau đây hoặc là quan hệ mà bạn đã gây ra giữa các biến nhờ vào và độc lập là đầy đủ hay không.
Vì mục tiêu này có rất nhiều chỉ số mà bọn họ cần tham khảo
R – Square (R^2)Công thức tính R^2 sẽ bằng :

Trong kia N là số quan giáp được sử dụng để cân xứng với mô hình, σx là độ lệch chuẩn của x, và σ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 phụ thuộc vào không thể dự kiến được từ thay đổi độc lậpR2 của 1 tức là biến phụ thuộc có thể được dự kiến mà không tồn tại sai số từ trở thành độc lậpMột R2 giữa 0 với 1 chỉ ra mức độ mà phát triển thành phụ thuộc 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 không nên trong Y có thể dự đoán được trường đoản cú 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 mức độ phân tán các giá trị dự kiến từ các giá trị thực tế. Bí quyết tính RMSE là

N: Tổng số quan lại sát
Mặc dù RMSE là một reviews tốt cho các sai số nhưng vụ 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 phát triển thành phụ thuộc của doanh nghiệp có dải trở thành thiên hẹp, RMSE của bạn sẽ thấp với nếu biến phụ thuộc có phạm vi rộng lớn RMSE đã cao. Vị đó, RMSE là một trong những liệu tốt để so sánh giữa các lần lặp lại khác nhau của tế bào hình
Mean Absolute Percentage Error (MAPE)
Để hạn chế và khắc phục những tiêu giảm của RMSE, các nhà so với thích áp dụng MAPE so với RMSE. MAPE mang đến sai số vào tỷ lệ xác suất và vì đó so sánh được giữa những mô hình. Cách làm tính MAPE hoàn toàn có thể được viết như sau:

N: Tổng số quan tiền sát
Hồi quy đường tính nhiều biến
Cho cho hiện tại, họ đã bàn thảo về kịch bạn dạng mà bọn họ chỉ gồm một biến đổi độc lập. Nếu bọn họ có nhiều hơn nữa một biến chuyển độc lập, cách thức phù hợp tốt nhất là "Multiple Regression Linear" - Hồi quy tuyến tính đa biến
Sự khác biệtVề cơ bạn dạng không tất cả sự biệt lập giữa hồi quy tuyến đường tính "giản đơn" với "đa biến". Cả hai đều thao tác tuân theo lý lẽ OLS với thuật toán để sở hữu được con đường hồi quy buổi tối ưu duy nhất cũng tương tự. Vào trường phù hợp sau, phương trình hồi quy sẽ có được một bề ngoài như sau:
Y=B0+B1*X1+B2*X2+B3*X3.....Ở đây,
Bi: các hệ số không giống nhauXi: các biến chủ quyền khác nhau
Chạy hồi quy tuyến tính bằng Python scikit-Learn
Ở trên, các bạn đã biết rằng hồi quy đường tính là một trong những kỹ thuật phổ cập và bạn có thể thấy các phương trình toán học tập của hồi quy con đường tính. Nhưng các bạn có biết làm cố nào để thực hiện một hồi quy tuyến đường tính vào Python ?? có một số phương pháp để có thể làm điều đó, chúng ta cũng có thể thực hiện nay hồi quy tuyến tính bằng phương pháp sử dụng các quy mô thống kê, numpy, scipy và sckit learn. Mà lại trong bài bác này họ sẽ sử dụng sckit learn để triển khai hồi quy tuyến đường tính.
Scikit-learn là 1 trong những module Python mạnh bạo cho câu hỏi học máy. Nó chứa hàm mang lại 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. Bọn họ sẽ tìm hiểu module sklearn.linear_model tất cả chứa "các method để tiến hành hồi quy, trong những số ấy giá trị 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 bác đăng này, họ sẽ thực hiện bộ dữ liệu nhà tại Boston, bộ dữ liệu chứa thông tin về giá chỉ trị công trình ở ngoại ô thành phố Boston. Tập tài liệu này ban sơ được lấy từ tủ sách StatLib được duy trì tại Đại học Carnegie Mellon và hiện thời đã tất cả trên UCI Machine Learning Repository.
Xem thêm: Binary Options Là Gì? Cách Chơi Binary Option Cho Người Mới Bắt Đầu
Bộ Dữ liệu nhà ở Boston bao hàm giá nhà tại những nơi không giống nhau ở Boston. Cùng với giá cả, tập dữ liệu cũng báo tin như phạm nhân (CRIM), các quanh vùng kinh doanh không-bán-lẻ ở thị xã (INDUS), tuổi chủ cài đặt ngôi bên (AGE) và có nhiều thuộc tính khác tất cả sẵn tại chỗ này .Bộ dữ liệu chính nó có thể down từ trên đây . Mặc dù nhiên, vì bọn họ sử dụng scikit-learn, chúng ta cũng có thể import nó từ bỏ 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à lưu trữ nó vào một biến hóa gọi là boston. Để import nó tự scikit-learn, bọn họ sẽ rất cần phải chạy đoạn mã này.
from sklearn.datasets import load_bostonboston = load_boston()Biến boston là một dạng tự điển, do vậy bạn cũng có thể kiểm tra key của nó sử dụng đoạn mã bên dưới.
print(boston.keys())Nó đang trả về như sau

Tiếp,
print(boston.data.shape)Trước tiên, bạn có thể dễ dàng chất vấn shape của nó bằng phương pháp gọi boston.data.shape và nó đã trả lại kích thước của tập tài liệu với kích cỡ column.

Như chúng ta có thể thấy nó trả về (506, 13), tức là có 506 hàng dữ liệu với 13 cột. Bây giờ chúng ta mong mỏi biết 13 cột là gì. Bọn họ sẽ chạy đoạn code sau :
print(boston.feature_names)

Bạn hoàn toàn có thể dùng lệnh print(boston.DESCR) để soát sổ description của tài liệu thay vì mở web để đọc.
Tiếp, convert tài liệu về dạng pandas! Rất 1-1 giản, call hàm pd.DataFrame() cùng truyền boston.data. Bạn có thể kiểm tra 5 dữ liệu thứ nhất bằng bos.head().
bos = pd.DataFrame(boston.data)print(bos.head())

Hoặc chúng ta co thể 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 thực hiện đoạn mã trên

Nếu bạn muốn nhìn các số liệu tổng hòa hợp thống kê, hãy chạy đoạn mã sau .
print(bos.describe())

Về 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 tài liệu thành hai quý giá : quý hiếm đích và giá trị dự báo. Hãy call giá trị đích Y và những giá trị dự đoán 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ũng có thể split dữ liệu để train và chạy thử 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, họ đã đã đạt được bộ dữ liệu với tập dữ liệu thử nghiệm có xác suất 66,66% đối với dữ liệu train cùng 33,33% so với dữ liệu test.

Tiếp, bọn họ sẽ chạy hồi quy tuyến đườ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ẽ phù hợp với một quy mô dựa bên trên X_train và Y_train. Hiện giờ chúng tôi đã có mô hình tuyến tính, bọn họ sẽ nỗ lực dự đoán nó cho X_test và những giá trị dự kiến sẽ được lưu trong Y_pred. Để hình dung sự khác biệt giữa giá thực tiễn và quý giá dự đoán, shop chúng tôi cũng tạo ra một bảng biểu .
Xem thêm: Chóng Mặt, Buồn Nôn, Đau Đầu Buồn Nôn Là Triệu Chứng Của Bệnh Gì

Thực tế thì đáng lẽ vật dụng thị sinh sống trên phải tạo một mặt đường tuyến tính như chúng ta đã thảo luận lý thuyết nghỉ ngơi trên. Mặc dù nhiên, mã sản phẩm không phù hợp 100%, vì vậy nó đang ko thể tạo ra đường đườ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, bạn có thể sử dụng Mean Squared Error. Đây là một trong trong các cách thức để đo vừa phải của ô vuông của không đúng số. Về cơ bản, nó sẽ khám nghiệm sự khác biệt giữa giá bán trị thực tiễn và giá trị dự đoán. Để thực hiện nó, chúng ta có thể sử dụng hàm bình phương trung bình không đúng 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_test, Y_pred)print(mse)kết quả dấn được
28.5413672756
Tham 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/