Linear regression là gì

     

Thuật toán thù linear regression giải quyết và xử lý những bài xích toán thù bao gồm đầu ra output là giá trị thực, ví dụ: dự đoán thù giá cả nhà đất, dự đoán thù giá chỉ cổ phiếu, dự đân oán tuổi,…


Bài toán thù

Bạn có tác dụng sinh hoạt đơn vị bất động sản, bạn tất cả dữ liệu về diện tích với giá nhà, tiếng bao gồm một khu nhà ở new bạn muốn dự tính xem giá nơi ở kia khoảng tầm bao nhiêu. Trên thực tiễn giá nhà thì dựa vào không ít yếu hèn tố: diện tích S, số chống, gần trung tâm thương mại,.. tuy vậy làm cho bài bác toán thù dễ dàng và đơn giản mang, sử giá nhà đất chỉ phụ thuộc vào diện tích tòa nhà. quý khách bao gồm tài liệu về diện tích với giá bán của 30 tòa nhà nlỗi sau:

Diện tích(m2)Giá buôn bán (triệu VNĐ)
30448.524
32.4138509.248
34.8276535.104
37.2414551.432
39.6552623.418

*
Hình 2: Ước tính giá căn nhà 50 m^2

Về mặt lập trình cũng cần được làm cho 2 bài toán nhỏng vậy:

Training: tìm mặt đường thẳng (model) ngay gần những điểm trên tuyệt nhất. Mọi tín đồ rất có thể vẽ tức thì được mặt đường thẳng biểu đạt dữ liệu tự hình 1, tuy vậy máy tính xách tay thì ko, nó nên đi tìm bởi thuật toán Gradient descent sống phía bên dưới. (Từ Mã Sản Phẩm và con đường thẳng có thể bị thực hiện sửa chữa lẫn nhau vào phần sót lại của bài viết). Inference: dự đoán thù xem giá bán của khu nhà ở 50 m^2 có mức giá từng nào dựa trên phố tìm kiếm được ở vị trí bên trên.

Thiết lập công thức

Model

Phương trình đường thẳng gồm dạng y = ax + b.

Bạn đang xem: Linear regression là gì


*
Sự không giống nhau tại điểm x = 42 của mã sản phẩm con đường thẳng y = x với cực hiếm thực tiễn ở bảng 1

Rõ ràng có thể thấy đường y = x không hề ngay gần những điểm hay là không bắt buộc là đường nhưng ta yêu cầu search. ví dụ như trên điểm x = 42 (nhà 42 m^2 ) giá thật là 625 triệu cơ mà giá nhưng Model dự đân oán chỉ nên 42 triệu.

Nên giờ đồng hồ yêu cầu 1 hàm để Review là con đường thẳng với cỗ tđắm đuối số (w_0, w_1) = (0, 1) có xuất sắc hay không. Với từng điểm tài liệu (x_i, y_i) độ chênh lệch thân giá thiệt với giá bán dự đoán thù được tính bằng: displaystyle frac12 * (haty_i - y_i)^2. Và độ chênh lệch bên trên tổng thể tài liệu tính bằng tổng chênh lệch của từng điểm:

displaystyle J = frac12 * frac1N * (sum_i=1^N (haty_i - y_i)^2) (N là số điểm dữ liệu). Nhận xét:

J không âmJ càng bé dại thì mặt đường trực tiếp càng sát điểm tài liệu. Nếu J = 0 thì mặt đường trực tiếp đi qua tất những điểm dữ liệu.

=> Bài tân oán tra cứu mặt đường trực tiếp ngay gần những điểm dữ liệu tuyệt nhất biến chuyển kiếm tìm w_0, w_1 sao cho hàm J bé dại tốt nhất. Nhưng vì chưng kiếm tìm giá trị nhỏ dại nhất của J cũng tương tự như search giá trị nhỏ tuyệt nhất của k*J (k là số thực, dương) buộc phải ta đang đi tìm giá trị nhỏ nhất của

displaystyle J = frac12 *(sum_i=1^N (haty_i - y_i)^2)

Tóm tắt: trước tiên tự việc tìm kiếm con đường trực tiếp (model) -> tìm kiếm w_0, w_1 nhằm hàm J nhỏ dại nhất. Giờ đề nghị một thuật toán thù để search quý hiếm nhỏ dại độc nhất của hàm J. Đó đó là gradient descent.

Gradient descent

Đạo hàm là gì

Mình tin có tương đối nhiều bạn rất có thể tính được đạo hàm của hàm f(x) = x^2 tuyệt f(x) = sin(cos(x)) cơ mà vẫn ngần ngừ đích thực đạo hàm là gì.

Theo giờ đồng hồ hán đạo là con đường, hàm là hàm số yêu cầu đạo hàm chỉ sự đổi khác của hàm số giỏi có tên thân yêu hơn là độ dốc của vật dụng thị.


*

Bước 1: Khởi sinh sản quý hiếm bỗng dưng x = -2 (điểm A).

Xem thêm: Day Trader Market Profile Là Gì ? Tìm Hiểu Về Market Profile

Bước 2: Do nghỉ ngơi A vật thị bớt đề nghị f"(x=-2) = 2*(-2) = -4 khi gán x = x – learning_rate * f"(x) đề xuất x tăng bắt buộc thứ thị bước tiếp sau làm việc điểm C. Tiếp tục triển khai bước 2, gán x = x – learning_rate * f"(x) thì đồ dùng thị ngơi nghỉ điểm D,… => hàm số bớt dần dần tiến cho tới cực hiếm bé dại nhất.

Moị người dân có để ý là trị tuyệt đối đàm trên A to hơn tại C với tại C lớn hơn trên D không. Đến khi tới sát điểm đạt quý hiếm bé dại độc nhất vô nhị x = 0, thì đạo hàm xấp xỉ 0 đến khi hàm đạt giá trị nhỏ độc nhất vô nhị tại x = 0, thì đạo hàm bởi 0, đề xuất trên điểm ngay gần quý hiếm bé dại nhất thì bước 2 gán x = x – learning_rate * f"(x) là ko đáng kể cùng gần như là không thay đổi giá trị của x.

Tương tự giả dụ quý hiếm khởi tạo thành tại x = 2 (trên B) thì đạo hàm trên B dương bắt buộc bởi vì x = x – learning_rate * f"(x) giảm -> đồ gia dụng thị ngơi nghỉ điểm E -> rồi tiếp tục gán x=x -learning_rate * f"(x) thì hàm f(x) cũng sẽ bớt dần dần mang đến giá trị nhỏ dại nhất.

Nhận xét:

Thuật toán vận động rất tốt trong ngôi trường vừa lòng cần thiết search quý giá nhỏ độc nhất bằng đại số đường tính.Việc đặc biệt quan trọng tốt nhất của thuật toán là tính đạo hàm của hàm số theo từng vươn lên là kế tiếp lặp lại bước 2.

Việc chọn hệ số learning_rate cực kỳ quan trọng đặc biệt, tất cả 3 trường hợp:

Nếu learning_rate nhỏ: mỗi lần hàm số bớt cực kỳ không nhiều nên yêu cầu rất nhiều lần tiến hành bước 2 nhằm hàm số đạt giá trị nhỏ tuổi nhất Nếu learning_rate hòa hợp lý: sau một số trong những lần lặp bước 2 vừa phải thì hàm đang đạt giá trị đủ nhỏ.Nếu learning_rate vượt lớn: sẽ gây ra hiện tượng overshoot cùng ko bao giờ đã có được giá trị nhỏ dại độc nhất vô nhị của hàm.
*
Ma trận A (3 * 4)

Chỉ số ma trận thì hàng trước cột sau ví dụ A<1, 2> = -5 (sản phẩm 1, cột 2); A<3, 1> = 4 (hàng 3, cột 1)

Phép nhân ma trận

Phnghiền tính nhân ma trận A * B chỉ tiến hành được lúc số cột của A thông qua số mặt hàng của B, hay A bao gồm size m*n cùng B bao gồm form size n*k.

Ma trận C = A * B thì C có size m * k với C = sum_k=1^n A*B


*

Biểu diễn bài bác toán

Do cùng với môi điểm x_i, y_i ta cần phải tính (w_0 + w_1 * x_i - y_i) cần thay vì tính đến từng điểm dữ liệu một ta sẽ biểu diễn dưới dạng ma trận, X kích cỡ n * 2, Y kích thước n * 1 (n là số điểm tài liệu vào tập dữ liệu nhưng ta có).


*

Msinh sống rộng

Mọi fan mới hoàn toàn có thể bỏ qua mất phần này

Hàm bậc hai

Giả sử bài xích tân oán vẫn như bên trên dẫu vậy khi chúng ta vẽ đồ gia dụng thị tài liệu đã như thế này


Bạn rất có thể đoán thù được Mã Sản Phẩm rất có thể là hàm bậc hai giờ đồng hồ các bạn sẽ tùy chỉnh cấu hình công thức không giống đi


*
Giờ bạn cần phải tính đạo hàm của J theo w_0, w_1, w_2 nhằm áp dụng gradient descent

Gaussian Process (GP)

Tiếp nếu như bạn vẽ vật thị dữ liệu lên cùng các bạn quan trọng đân oán được mã sản phẩm là hàm gì thì sao? Câu vấn đáp là hãy dùng Gaussian Process. Mô hình sinh hoạt bên trên bạn để ý thì bản thân gồm có tham mê số phải đi tìm w_0, w_1, w_2 nhưng lại ngơi nghỉ GP thì không hề tất cả tham số nào cả (hoặc hoàn toàn có thể xem là vô số tmê say số). Bài viết này ra mắt về GP hơi hay những tín đồ rất có thể đọc thêm.

Python code

Dữ liệu và code các chúng ta cũng có thể lấy làm việc đây

# -*- coding: utf-8 -*-"""Created on Mon Feb 18 22:06:34 2019
author: DELL"""import numpy as npimport pandas as pdimport matplotlib.pyplot as plt#numOfPoint = 30#noise = np.random.normal(0,1,numOfPoint).reshape(-1,1)#x = np.linspace(30, 100, numOfPoint).reshape(-1,1)#N = x.shape<0>#y = 15*x + 8 + 20*noise#plt.scatter(x, y)data = pd.read_csv("data_linear.csv").valuesN = data.shape<0>x = data<:, 0>.reshape(-1, 1)y = data<:, 1>.reshape(-1, 1)plt.scatter(x, y)plt.xlabel("mét vuông")plt.ylabel("giá")x = np.hstack((np.ones((N, 1)), x))w = np.array(<0.,1.>).reshape(-1,1)numOfIteration = 100cost = np.zeros((numOfIteration,1))learning_rate = 0.000001for i in range(1, numOfIteration): r = np.dot(x, w) - y cost = 0.5*np.sum(r*r) w<0> -= learning_rate*np.sum(r) # correct the shape dimension w<1> -= learning_rate*np.sum(np.multiply(r, x<:,1>.reshape(-1,1))) print(cost)predict = np.dot(x, w)plt.plot((x<0><1>, x<1>),(predict<0>, predict), "r")plt.show()x1 = 50y1 = w<0> + w<1> * 50print("Giá bên mang đến 50m^2 là : ", y1)Vậy là xong xuôi bài xích đầu tiên, mình biết hoàn toàn có thể ngày xưa phần đông fan không đụng cho toán thù, hoàn toàn có thể là lần thứ nhất thiết kế. Không có điều gì đã đạt được quá dễ dãi cả, chỉ cần các bạn qua được quan ải bài bác 1 thì các bài sau vẫn nhẹ nhàng hơn.

Mọi fan thiếu hiểu biết nhiều chỗ nào hay có góp sức gì cứ đọng phản hồi sinh sống phía dưới bản thân đã đáp án. Cảm ơn đa số fan rất nhiều !!!


Chuyên mục: Đầu tư tài chính
uk88 | dwin68 | Kubet