Linear Regression Là Gì

 - 

chào mừng các bạn đọc đã quay trở về với chuỗi bài viết về Machine Learning của clb AI. Ở bài viết trước, chúng ta đã được mày mò và tiếp cận một cách bao quát về Machine Learning với ba nhóm bài bác toán đó là Regression, ClassificationClustering. Để khiến cho bạn đọc nắm rõ hơn Machine Learning ở khía cạnh toán học, ở nội dung bài viết này họ sẽ cùng tò mò về một thuật toán đơn giản dễ dàng trong vấn đề RegressionLinear Regression (Hồi quy tuyến đường tính). Thông qua bài viết này, bạn sẽ có thể áp dụng kỹ năng và kiến thức để tạo ra một mô hình máy học để tham gia đoán điểm thời điểm cuối kỳ Nhập môn Lập trình, và sẽ tiến hành “nghịch” cùng với nó nhằm xem phong thái “học” của máy là như vậy nào.

1.

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

Bạn đã xem: Linear regression là gìLinear Regression là gì?

Linear Regression (Hồi quy con đường tính) là trong số những thuật toán cơ bạn dạng và thông dụng nhất của Supervised Learning (Học tất cả giám sát), trong các số ấy đầu ra dự kiến là liên tục. Thuật toán này say mê hợp để dự đoán các giá trị đầu ra output là các đại lượng liên tục như doanh số hay giá cả cầm cố vì cố gắng phân một số loại chúng thành các đại lượng rời rốc như color và gia công bằng chất liệu của quần áo, hay xác định đối tượng trong một bức hình ảnh là mèo tốt chó, …


*

Thử mang ví dụ sau: bạn đang có điểm yếu tắc về những môn như Nhập môn lập trình, OOP, Giải tích,… và điều ai đang cần là tính ra điểm vừa phải cuối kỳ của mình. Rất solo giản, bạn sẽ tính được chứ? tất yếu rồi! Bạn chỉ việc áp cách làm tính điểm vừa phải vào là ra. Tiếp tục, bạn lại ý muốn khảo sát, thống kê lại xem điểm thi giữa kỳ Nhập môn lập trình tác động như núm nào mang lại điểm vào cuối kỳ của chúng ta trong lớp, bạn có nhu cầu xác định xem quan hệ tình dục giữa điểm thành phần và điểm cuối kỳ thì cần làm sao? Đây chắc rằng là một câu hỏi khó so với những bạn chưa từng làm việc với vật dụng học hoặc Thống kê, tuy nhiên cũng đừng vội lo lắng, hãy cùng nhau mày mò và giải quyết và xử lý các thắc mắc trong bài viết này nhé!

Trong Linear Regression bọn họ sẽ chạm chán hai loại vấn đề đó là Hồi quy solo biến với Hồi quy đa biến. Để đơn giản và dễ dàng thuật toán, chúng ra sẽ khám phá và so với kỹ toán học tập của bài bác hồi quy solo biến. Vậy hồi quy tuyến đường tính đối kháng biến là gì? Univariate Linear Regression (hồi quy đường tính đối kháng biến) chính là mối quan hệ nam nữ giữa hai phát triển thành số liên tiếp trên trục hoành (x) và trên trục tung (y). Phương trình hồi quy đường tính solo biến có dạng như phương trình mặt đường thẳng ( y = ax + b ) với (x) là biến chủ quyền và (y) là biến phụ thuộc vào (x). Đối với Hồi quy tuyến đường tính đa biến, bạn có thể hiểu một cách đơn giản là sẽ có tương đối nhiều biến chủ quyền (x_1, x_2, dots, x_n) cùng nhiều hệ số (a_1, a_2, dots, a_n) thay vì chỉ một đổi thay (x) duy nhất.

2. Một vài ký kết hiệu cần lưu ý và cách xác minh input với output của bài toán.

Tổng quát tháo hơn, trong supervised learning (học bao gồm giám sát), họ có một bộ tài liệu và bộ dữ liệu này gọi là training mix (tập huấn luyện).

Giả sử chúng ta có bộ tài liệu thống kê điểm vào giữa kỳ và điểm vào cuối kỳ trong Nhập môn lập trình. Khi đó, với việc hồi quy đối chọi biến này, cần tìm ra một quy mô nhận vào input là điểm giữa kỳ cùng output ra dự kiến điểm cuối kỳ hợp lí nhất dựa vào mối quan hệ giới tính giữa hai cột điểm mà quy mô đó kiếm tìm được.

Để dễ dàng, ta vẫn thống nhất áp dụng một vài ký hiệu sau xuyên suốt nội dung bài viết này:

(m): Đại diện con số các training example (mẫu huấn luyện). Giả sử, họ có 40 dòng điểm cuối kỳ không giống nhau được thu thập dựa bên trên điểm thời điểm giữa kỳ tương ứng. Như vậy, ta tất cả 40 mẫu đào tạo và giảng dạy và m bằng 40.(x): Để ký hiệu các input variable (biến đầu vào) cũng hay được hotline là những feature (đặc trưng). Trong hồi quy đa biến, (x) là một trong vector tuy nhiên trong ví dụ này, (x) là số điểm nhận xét trong nửa học tập kỳ đầu – là một trong những con số vào hồi quy 1-1 biến.(y): Để ký hiệu các biến áp sạc ra hay những biến mục tiêu , ở đây là điểm cuối kỳ tương ứng.((x,y)): đại diện một mẫu huấn luyện – training example.(x^(i), y^(i)): dùng làm chỉ một mẫu đào tạo và huấn luyện cụ thể. đưa sử, cùng với (i = 3) tương xứng ta gồm điểm dữ liệu (x^(3), y^(3)) : Số điểm thời điểm cuối kỳ của bạn có thể là bao nhiêu khi điểm thời điểm giữa kỳ là 8.75? phụ thuộc bảng số liệu trên, trên (y^(3)), tác dụng dự đoán đạt giá trị là 7.8.

Chúng ta đã học phương trình đường thẳng (y = ax + b) ngơi nghỉ bậc trung học phổ thông và hàm h – hypothesis (giả thuyết) cũng khá được biểu diễn tựa như cho mô hình hồi quy con đường tính solo biến. Nó cũng trở nên lấy giá trị đầu vào là x và mang đến ra tác dụng đầu ra là y nhưng chỉ đổi khác các thông số a cùng b thành ( heta_0 = b) và ( heta_1 = a).

Xem thêm: Hạt Giống Dưa Hấu Không Hạt Mặt Trời Đỏ : 10 Năm Cho Trái Ngọt

Khi đó về khía cạnh toán học, (h) là 1 trong ánh xạ từ (x) sang trọng (y):

y = h(x) = h_ heta (x) = b + ax = heta_0 + heta_1 x

3. Bài toán dự kiến điểm vừa phải Nhập môn lập trình


*

Nguồn ảnh: NakedCode
*

Hình 1

Vậy điều gì đã xảy ra khi bạn cần mong lượng số điểm đúng chuẩn nhất lúc đạt 7.00 điểm giữa kỳ từ thông tin trên? phía tiếp cận đơn giản và dễ dàng nhất là tìm một mặt đường thẳng (*) cân xứng với tập tài liệu và vẽ một mặt đường thẳng từ vị trí 7 điểm trên trục x cho tới khi nó va vào con đường thẳng(*) vừa tìm?


*

Hình 2

Hãy quan ngay cạnh hình bên trên , từ bỏ hai chủng loại (4.00, 3.98) với (6.00, 5.5), ta vẽ được đường thẳng màu đỏ và từ đó tìm kiếm được hai quý giá ( heta_0) cùng ( heta_1) lần lượt là 0.76 0.94 . Bây giờ, chúng ta có thể sử dụng hàm giả thuyết để tham dự đoán điểm vào cuối kỳ dựa trên điểm giữa kỳ tương ứng với giá trị 7.00 như sau: (h(x) = 0.76x + 0.94 = 0.76*7 +0.94 = 6.26) điểm – giá chỉ trị mong tính khớp ứng với mặt đường thẳng này.

Tuy nhiên, trong thực tiễn các bộ dữ liệu đưa vào huấn luyện quy mô nhiều hơn cấp trăm, vội vàng ngàn lần và số lượng các đặc trưng cũng chênh lệch đáng kể, việc khẳng định hàm đường tính trở nên khó khăn hơn. Sự xuất hiện của các vấn đề trên là tiền đề nhằm máy học tập ra đời, tạo ra nhiều thuật toán giao hàng cho mọi bạn như áp dụng thuật toán hồi quy tuyến đường tính với SVM (Support Vector Machine) vào phân tích chứng khoán hay nhận dạng tiếng nói bằng mô hình Markov, …

Hàm đưa thuyết làm việc trên được xây dựng tốt hay chưa? làm thế nào để hàm đó trở nên cân xứng nhất tất cả thể? Làm thế nào bạn đánh giá được điều đó? Nhờ đó hàm mất mát được sinh sản ra, hàm sẽ giúp đỡ bạn tính khoảng biện pháp giữa hiệu quả mà hàm đưa thuyết h dự kiến được so với giá trị thực sự mà lại ta quan sát thấy.


*

Hình 3: kiến tạo hàm mất mát

Khi bạn có mức giá trị dự kiến là 6.26 và quý hiếm thực là 6.00 bọn chúng có ý nghĩa gì? Hàm mất non sẽ cho mình biết sự chênh lệch giữa thực tế và đưa thuyết với khi giá trị hàm này càng nhỏ, dự đoán của bạn lại càng đúng đắn và càng phù hợp! chúng ta có mong ước hàm mất mát giới thiệu giá trị nhỏ tuổi nhất không? Đối với hồi quy tuyến đường tính, bạn cũng có thể tính bình phương độ rơi lệch để reviews sự chênh lệch giữa giá trị chuyển ra vày hàm mang thuyết cùng giá trị thực tiễn đo đạc được:

mathcalL( heta_0 , heta_1) = frac12m * sum_i=1^m ^2 \= frac12m * sum_i=1^m ^2

Dưới đấy là demo code của hàm mất non của câu hỏi tính điểm cuối kỳ:

def loss_univariate(X, y, theta_0, theta_1): h = theta_0 + theta_1 * X m = len(X) loss = 1/(2*m) * np.sum((y - h) ** 2) return lossTừ mô hình dữ liệu hình 1, ta chiếm được hàm trả thuyết trường đoản cú điểm giữa kỳ sang điểm cuối kỳ :

mathcalL = frac12m *

Mục tiêu của bọn họ là về tối ưu hay có cách gọi khác là đi tìm điểm cực tiểu của hàm (mathcalL) bên trên. Vì đó là một hàm số hai biến hóa nên trước lúc muốn tìm cực tiểu thì họ cùng ôn tập lại kiến thức của môn giải tích hồi năm độc nhất vô nhị nhé ;). Để tìm cực trị của một hàm số 2 biến chuyển (f(x, y)), ta giải hệ phương trình đạo hàm ở một phía sau:


Hình 3: Đồ thị hàm mất mát

Mặc dù cơ hội trước, lúc học môn giải tích, để xác định xem nghiệm của hệ phương trình này là điểm cực tiểu, cực to hay điểm yên con ngữa (điểm không hẳn cực tè cũng chưa hẳn cực đại) của hàm (f(x, y)), chúng ta còn cần tính ( f’_xx(x, y), f’_yy(x, y), ) cùng (f’_xy(x, y)) cùng biện luận từng nghiệm, mặc dù vì hàm (mathcalL) ở đây là hàm số bậc 2, tức là nó có những thiết kế như một parabol với cùng 1 điểm cực tiểu độc nhất (Hình 3) yêu cầu nghiệm của hệ phương trình đạo hàm cũng đó là điểm rất tiểu của hàm số (mathcalL). Tiếp thu kiến thức kỳ quỷ quái này, ta vận dụng vào việc tìm cực đái của hàm mất mát như sau:

mathcalL’_ heta_0 = frac1m* = 0Leftrightarrow heta_0 + heta_1 * frac(x^(1) + … + x^(m))m = frac(y^(1) + … + y^(m))mmathcalL_ heta_1 = frac1m = 0Leftrightarrow heta_0 * frac(x^(1) + … + x^(m))m + heta_1 * frac((x^(1))^2 + … + (x^(m))^2)m = frac(y^(1)x^(1) + … + y^(m)x^(m))mLeftrightarrow egincases heta_0 = frac(y^(1) + … + y^(m)) – heta_1(x^(1) + … + x^(m))m\ heta_1 = fracm(y^(1)x^(1) + … + y^(m)x^(m)) – (y^(1) + … + y^(m))(x^(1) + … + x^(m))m((x^(1))^2 + … + (x^(m))^2) – (x^(1) + … + x^(m))^2 endcases

Chúng ta sẽ thống kê giám sát các quý hiếm trong phương trình thông qua thư viện phổ biến trong Machine Learning là Numpy, bước đặc trưng nhất trong quy mô Linear Regression là đi search nghiệm cho bài toán. Bọn họ giải hệ phương trình của bài toán 1-1 biến như sau:

# Tính điểm thời điểm cuối kỳ theo thetay_pred = theta_0 + theta_1*x1# trình diễn trên trang bị thịplt.scatter(x1,x2)plt.plot(x1,y_pred.T, "r")
Hình 2loss_univariate(X, y, theta_0, theta_1)0.27319262900804736 Từ vật dụng thị trên, ta thấy các điểm dữ liệu blue color khá sát với đường thẳng red color vậy mô hình hồi quy tuyến đường tính này hoạt động tốt cùng với tập dữ liệu đã cho. Bây giờ, họ kiểm tra lại hiệu quả hai giá trị θ0 với θ1 khi được xem bằng thư viện Scikit-Learn của Python:

Nhược điểm của phương thức này là gì? Khi chủng loại số của phương trình ( heta_1) làm việc trên bởi không thì sao? cơ hội ấy, hệ phương trình vào hồi quy đường tính có kết quả vô nghiệm đề nghị ta không thể tìm kiếm ra cỗ trọng số lý tưởng nữa với điều bọn họ cần làm là đưa ra một giải thuật đủ tốt, yêu cầu một thuật toán để tìm giá chỉ trị nhỏ dại nhất của hàm mất mát (mathcalL). Bọn họ sẽ trở lại để nói thêm về vấn đề này trong phần tiếp theo nhé!

4. Sử dụng thuật toán hồi quy đường tính để giải việc tính giá chỉ nhà.

Với mô hình hồi quy con đường tính nhiều biến, gắng vì đi kiếm một mặt đường thẳng (y=ax+b) khớp với mọi điểm đã đến thì họ đi tìm một phương diện phẳng/siêu khía cạnh phẳng (plane/hyperplane) trong không gian (n) chiều gồm dạng:

heta = eginbmatrix heta_0 \ heta_1 \ vdots \ heta_n endbmatrix

một vector sản phẩm chứa các dữ liệu đầu vào mở rộngsố 1 được phân phối để đơn giản hóa và thuận tiện cho tính toán. Với tương tự, trong mô hình đa thay đổi này, ta cũng có thể dựng nên hàm mất mát mang đến siêu phương diện phẳng trên:

mathcalL = frac12m * left vdots \ heta_n endbmatrix ight)^2 + … + left(y^(m) – eginbmatrix 1 và x_0^(m) và cdots & x_n^(m) endbmatrixeginbmatrix heta_0 \ vdots \ heta_n endbmatrix ight)^2 ight>

Các bạn dễ minh chứng được rằng, đây là công thức bao quát cho nghiệm của hệ phương trình bên trên với con số biến θ tùy ý:

Bài toán giá nhà là một trong những ví dụ điển hình của thuật toán hồi quy đa biến đổi này, với cùng một bộ tài liệu gồm 11 đặc thù như số lượng phòng tắm, diện tích s trong đơn vị hay cảnh quan xung quanh, … các bạn sẽ tính θ như vậy nào? làm sao áp dụng thuật toán này vào trong bài bác toán? Với hai bộ dữ liệu gồm data_train và data_test, giờ họ tiến hành train bằng phương pháp nhân ma trận nào:

# cách 1: Tính X^T . XXtX = X.T Xtytheta = theta# Tính định thức của X^T . Xprint(np.linalg.det(XtX)) -4.6635911969955336e-71 Để ý rằng (-4.66*10^-71), một số lượng cực kỳ nhỏ và sát với 0! Ở bước hai này, bọn họ không thể tính được nghịch đảo (X^TX) một cách đúng đắn do tất cả sai số.

Liệu họ đã đi đúng hướng chưa? Làm cầm nào các bạn xác định được điều đó? Hãy xem sự không giống biệt khi sử dụng thư viện Scikit-Learn nào:

def loss_multivariate(X, y, theta): theta = theta.reshape(-1, 1) m = len(X) # Tính hàm trả thuyết h = X theta loss = 1/(2*m) * np.sum((y - h) ** 2) return lossVà kết quả họ thu được khi so sánh hàm mát mát giữa hai phương thức là:

Lời giải của họ tính được vẫn chưa tốt bằng giải mã mà tủ sách đã gửi ra, vì sẽ sở hữu được trường đúng theo định thức của (X^TX) xấp xỉ 0, đồng nghĩa tương quan với vấn đề phương trình đạo hàm vô nghiệm. Vậy bọn họ cần tất cả một thuật toán hiệu quả và rất có thể dễ dàng tính được nghiệm cho việc này, đó đó là Gradient Descent.

*Trong Đại số đường tính có một khái niệm call là giả nghịch đảo để tìm nghịch hòn đảo của ma trận khi định thức của nó bằng không, tuy nhiên đó là một trong những phần khó và sẽ tiến hành đề cập thêm tại một bài khác.

5. Gradient Descent là gì?

Trong các bài viết trước, chúng ta đã được học tập cách sử dụng Gradient Descent để buổi tối ưu (tìm điểm cực tiểu) một hàm số bất kỳ, vậy hoàn toàn có thể áp dụng ý tưởng phát minh của Gradient Descent nhằm tìm ra cỗ trọng số ưng ý nhất đến hàm mất mát sinh hoạt trên không?

cùng với thuật toán Gradient Descent, nếu như lỗi quá cao thì thuật toán cần update các tham số có giá trị mới trong

và lúc lỗi vẫn liên tục cao trong trường thích hợp tiếp theo, nó đang tiếp tục update các tham số với cái giá trị bắt đầu lần nữa. Quy trình này được lặp đi lặp lại đến khi hàm mất đuối được bớt thiểu.

Xem thêm: Airpay Là Gì? Cách Sử Dụng Ví Airpay Là Gì ? Cách Đăng Ký Và Sử Dụng Ví Điện Tử Airpay

Dưới đây là code để minh họa đến thuật toán:

def dL(X, y, theta): theta = theta.reshape(-1, 1) m = len(X) return -(1/m) * np.sum(X * (y - X theta), axis=0)def gradient_descent(): m, n = X.shape # Khởi tạo nên theta bỗng nhiên theta = np.random.randn(n) # Chọn những tham số như tần số lặp và hệ số alpha iterations = 1000001 alpha = 0.5 for i in range(iterations): # cập nhật theta theo công thức của GD theta = theta - alpha * dL(X, y, theta) # Tính hàm mất mát loss = loss_multivariate(X, y, theta) if i % 20000 == 0: # Xuất quý hiếm mất non ra để theo dõi print("Iter . Loss = ".format(i, loss)) return thetaKết quả so sánh hàm mất mát thân hai phương pháp:

Tuy nhiên, cũng trở nên có trường hợp nhưng mà Gradient Descent lại mang đến ra hiệu quả tốt rộng trên tập test, hãy xem ví dụ sau:

# chọn 1 điểm dữ liệu trong tập tài liệu test với dự đoáni = 1x_1 = Xy_1 = yhypothesis = x_1 theta_gdprint("Dữ liệu của tòa nhà cần dự đoán: ", x_1)print()print("Dự đoán của cách thức đầu tiên: :.3f (triệu USD)".format(hypothesis))print("Dự đoán của tủ sách sklearn: :.3f (triệu USD)".format(hypothesis_sklearn))print("Dự đoán của gradient descent: :.3f (triệu USD)".format(hypothesis_gd))print("Giá trị thực tế: :.3f (triệu USD)".format(y_1))Dữ liệu của tòa nhà cần dự đoán: dự đoán của phương thức đầu tiên: 0.709 (triệu USD) dự đoán của thư viện sklearn: 0.632 (triệu USD) dự kiến của gradient descent: 0.602 (triệu USD) cực hiếm thực tế: 0.538 (triệu USD) Vậy là bọn họ đã hoàn thành phần lí thuyết cũng như hiện thực ý tưởng của Linear Regression trải qua Python và những thư viện. Để bài viết liên quan code minh họa cho thuật toán này, các chúng ta có thể tham khảo Colab Notebook nhưng mình đã chuẩn bị ở phía trên nhé!

6. Ứng dụng của Linear Regression trong thực tiễn

Dựa vào thuật toán này, chúng ta cũng có thể sử dụng nhằm giải các bài toán liên quan đến việc dự đoán mức lương trung bình sau khoản thời gian ra trường nhờ vào các đối số nguồn vào là giới tính, điểm trung bình khóa đào tạo và huấn luyện và số lượng các hoạt động ngoại khóa đang tham gia ,…

Hay trong số bài toán trả về giá trị ánh nắng mặt trời phòng với giá trị đầu vào là ngày, ánh nắng mặt trời ngoài trời và ánh nắng trong phòng, …

Cụ thể hơn và thân cận với người dùng nhất, Facebook cũng sử dụng thuật toán này nhằm dự đoán con số người nói qua và bình luận dựa vào những can dự trong bài viết trước đó của khách hàng hay số lượng đồng đội trên facebook, …

7. Tổng kết.

Như vậy, qua nội dung bài viết này, bọn họ đã mày mò về thuật toán Linear Regression, các khái niệm cơ phiên bản cũng như cách ứng dụng nó vào trong các bài toán dự đoán điểm Nhập môn xây dựng và dự kiến giá nhà! ao ước là chúng ta đã nắm rõ được lí thuyết và phương pháp hiện thực ý tưởng của Linear Regression.

Tuy nhiên, đây mới chỉ là thí nghiệm trên dữ liệu ta đã quan gần cạnh được, và tác dụng chưa thể phản bội ánh đúng chuẩn mức độ hiệu quả của quy mô Linear Regression khi áp dụng vào việc dự kiến điểm nhập môn lập trình hay dự kiến giá nhà bên cạnh thực tế. Ở các nội dung bài viết sau của club thì các các bạn sẽ được ra mắt thêm những phương thức để đánh giá một mô hình khi chuyển vào đời sống. Hãy đón tìm hiểu thêm các nội dung bài viết tiếp theo của bọn chúng mình nhé!

7. Tài liệu tham khảo

Uyên Đặng – HTTT2019

Posted UnderData Science Machine Learning Mathematics OptimizationTaggeddự đoán giá cả nhà đất hồi quy đa thay đổi hồi quy đối chọi biến hồi quy con đường tính linear regression Machine Learning mathematics maths sản phẩm học nhập môn lập trình

Post navigation

những khái niệm cơ bạn dạng trong ngôn từ lập trình Python Logistic Regression và câu hỏi phân loại cảm giác âm nhạc

Leave a Reply Cancel reply

Your e-mail address will not be published. Required fields are marked *