REGRESSION LÀ GÌ

     

chào mừng các bạn đọc đã quay trở lại với chuỗi nội dung bài viết về Machine Learning của clb AI. Ở nội dung bài viết trước, bọn họ đã được tìm hiểu và tiếp cận một cách tổng thể về Machine Learning với tía nhóm bài bác toán đó là Regression, Classification cùng Clustering. Để giúp đỡ bạn đọc làm rõ hơn Machine Learning ở góc nhìn toán học, ở nội dung bài viết này chúng ta sẽ cùng mày mò về một thuật toán dễ dàng trong việc RegressionLinear Regression (Hồi quy tuyến tính). Thông qua nội dung bài viết này, bạn sẽ có thể áp dụng kỹ năng và kiến thức để xuất bản một quy mô máy học để tham dự đ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” với nó để xem phong thái “học” của dòng sản phẩm là như vậy nào.

1.

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

Bạn vẫn xem: Linear regression là gìLinear Regression là gì?

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


*

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

Trong Linear Regression họ sẽ gặp hai loại bài toán đó là Hồi quy đơn biếnHồi quy đa biến. Để dễ dàng và đơn giản thuật toán, chúng ra sẽ mày mò và đối chiếu kỹ toán học tập của bài hồi quy đối kháng biến. Vậy hồi quy đường tính 1-1 biến là gì? Univariate Linear Regression (hồi quy đường tính solo biến) đó là mối quan hệ giữa hai biến số liên tục trên trục hoành (x) cùng trên trục tung (y). Phương trình hồi quy tuyến tính đối chọi biến gồm dạng như phương trình mặt đường thẳng ( y = ax + b ) cùng với (x) là biến độc lập 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ũng có thể hiểu một cách đơn giản và dễ dàng là sẽ có không ít 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 do chỉ một trở nên (x) duy nhất.

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

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

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

Để dễ dàng dàng, ta đã thống nhất sử dụng một vài ký kết 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). Mang sử, bọn họ có 40 cái điểm cuối kỳ khác biệt được tích lũy dựa bên trên điểm giữa kỳ tương ứng. Như vậy, ta gồm 40 mẫu giảng dạy và m bằng 40.(x): Để ký hiệu những input variable (biến đầu vào) cũng hay được call là những feature (đặc trưng). Trong hồi quy nhiều biến, (x) là một trong những vector tuy nhiên trong lấy ví dụ như này, (x) là số điểm review trong nửa học tập kỳ đầu – là một trong con số trong hồi quy 1-1 biến.(y): Để cam kết hiệu các biến đầu ra output hay các biến mục tiêu , ở đây là điểm vào cuối kỳ tương ứng.((x,y)): thay mặt 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à giảng dạy cụ thể. đưa sử, với (i = 3) tương ứng ta bao gồm điểm dữ liệu (x^(3), y^(3)) : Số điểm vào cuối kỳ của bạn cũng có thể là từng nào khi điểm thời điểm giữa kỳ là 8.75? dựa vào bảng số liệu trên, trên (y^(3)), hiệu quả dự đoán đạt quý giá là 7.8.

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

Xem thêm: Hàng Uk Là Gì - Cách Order Hàng Uk Như Thế Nào

Khi đó về mặt toán học, (h) là 1 trong ánh xạ từ (x) sang (y):

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

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


*

Nguồn ảnh: NakedCode
*

Hình 1

Vậy điều gì sẽ 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 vào giữa kỳ từ thông tin trên? phía tiếp cận đơn giản dễ dàng nhất là tìm một con đường thẳng (*) tương xứng với tập dữ liệu và vẽ một con đường thẳng từ vị trí 7 điểm trên trục x cho tới khi nó đụng vào con đường thẳng(*) vừa tìm?


*

Hình 2

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

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

Hàm mang thuyết sống trên được xây dựng xuất sắc hay chưa? làm thế nào để hàm đó trở nên phù hợp nhất bao gồm thể? Làm thế nào bạn nhận định được điều đó? Nhờ đó hàm mất mát được chế tạo ra ra, hàm sẽ giúp đỡ bạn tính khoảng cách giữa công dụng mà hàm giả thuyết h dự kiến được so với giá trị thực sự cơ mà ta quan giáp thấy.


*

Hình 3: thiết kế hàm mất non

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

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

Dưới đó là demo code của hàm mất non của việc 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 giả thuyết từ bỏ điểm giữa kỳ sang điểm thời điểm cuối kỳ :

mathcalL = frac12m *

Mục tiêu của chúng ta là tối ưu hay nói một cách khác là đi tìm điểm rất tiểu của hàm (mathcalL) mặt trên. Vì đó là một hàm số hai trở nên 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 duy nhất nhé ;). Để tìm rất trị của một hàm số 2 biến đổi (f(x, y)), ta giải hệ phương trình đạo hàm một bên sau:


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

Mặc dù lúc trước, lúc học môn giải tích, để xác minh xem nghiệm của hệ phương trình này là vấn đề cực tiểu, cực đại hay điểm yên chiến mã (điểm chưa hẳn cực đái cũng chưa hẳn cực đại) của hàm (f(x, y)), bọn họ còn nên tính ( f’_xx(x, y), f’_yy(x, y), ) và (f’_xy(x, y)) với biện luận từng nghiệm, mặc dù vì hàm (mathcalL) ở đó là hàm số bậc 2, có nghĩa là nó có bản thiết kế như một parabol với một điểm cực tiểu tuyệt nhất (Hình 3) đề nghị 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 và kỹ năng kỳ quái quỷ này, ta áp dụng vào việc tìm kiế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ẽ giám sát và đo lường các cực hiếm trong phương trình trải qua thư viện thịnh hành trong Machine Learning là Numpy, bước quan trọng đặc biệt nhất trong quy mô Linear Regression là đi tìm nghiệm cho bài xích toán. Chúng ta giải hệ phương trình của bài xích toán đối chọi biến như sau:

# Tính điểm cuối kỳ theo thetay_pred = theta_0 + theta_1*x1# biểu diễn trên vật dụng 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ừ đồ thị trên, ta thấy các điểm dữ liệu blue color khá ngay gần với mặt đường thẳng màu đỏ vậy quy mô hồi quy tuyến đường tính này hoạt động tốt với tập dữ liệu đã cho. Bây giờ, chúng ta kiểm tra lại công dụng hai quý hiếm θ0 cùng θ1 khi được tính bằng tủ sách Scikit-Learn của Python:

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

4. Sử dụng thuật toán hồi quy tuyến đường tính nhằm giải việc tính giá bán nhà.

Với quy mô hồi quy con đường tính nhiều biến, rứa vì đi kiếm một con đường thẳng (y=ax+b) khớp với rất nhiều điểm đã đến thì bọn 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 khí (n) chiều tất cả dạng:

heta = eginbmatrix heta_0 \ heta_1 \ vdots \ heta_n endbmatrix

một vector mặt hàng chứa các dữ liệu nguồn vào mở rộngsố 1 được phân phối để dễ dàng hóa và tiện lợi cho tính toán. Cùng tương tự, trong mô hình đa trở thành này, ta cũng có thể dựng phải hàm mất mát cho siêu phương diện phẳng trên:

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

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

Bài toán giá nhà là trong số 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 1 bộ dữ liệu gồm 11 đặc thù như con số phòng tắm, diện tích s trong nhà hay cảnh sắc xung quanh, … bạn sẽ tính θ như vậy nào? làm cho sao vận dụng thuật toán này vào trong bài xích toán? Với hai bộ dữ liệu gồm data_train với data_test, giờ bọn họ tiến hành train bằng phương thức 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ỳ bé dại và ngay sát với 0! Ở bước hai này, chúng ta không thể tính được nghịch đảo (X^TX) một cách chính xác do gồm sai số.

Liệu họ đã đi đúng hướng chưa? Làm nuốm nào chúng ta xác định được điều đó? Hãy xem sự khác 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 mang thuyết h = X theta loss = 1/(2*m) * np.sum((y - h) ** 2) return lossVà kết quả chúng ta thu được khi đối chiếu hàm non mát giữa hai phương thức là:

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

*Trong Đại số con đường tính tất cả một khái niệm gọi là giả nghịch đảo nhằm tìm nghịch đảo của ma trận lúc định thức của nó bởi không, tuy nhiên đó là một phần khó và sẽ được đề cập thêm ở một bài khác.

5. Gradient Descent là gì?

Trong các nội dung bài viết trước, họ đã được học tập cách thực hiện 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 có thể áp dụng phát minh của Gradient Descent nhằm tìm ra cỗ trọng số lý tưởng nhất cho hàm mất mát sinh sống trên không?

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

và khi lỗi vẫn tiếp tục cao trong trường phù hợp tiếp theo, nó sẽ tiếp tục cập nhật các tham số với cái giá trị mới lần nữa. Quy trình này được lặp đi tái diễn đến lúc hàm mất mát được giảm thiểu.

Xem thêm: Cách Nấu Thịt Kho Tàu Bằng Gói Gia Vị, Cách Nấu Thịt Kho Tàu Cực Dễ Dàng Với Gói Gia Vị

Dưới đây là code nhằm minh họa mang lại 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 chế tạo theta bỗng dưng theta = np.random.randn(n) # Chọn những tham số như mốc giới hạn lặp và thông số alpha iterations = 1000001 alpha = 0.5 for i in range(iterations): # cập nhật theta theo phương pháp 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 đuối ra để theo dõi print("Iter . Loss = ".format(i, loss)) return thetaKết quả đối chiếu hàm mất mát thân hai phương pháp:

Tuy nhiên, cũng sẽ có ngôi trường hợp cơ mà Gradient Descent lại mang lại ra tác dụng tốt rộng trên tập test, hãy xem lấy một ví dụ sau:

# lựa chọn một điểm tài liệu trong tập dữ liệu test và 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 phương pháp đầu tiên: :.3f (triệu USD)".format(hypothesis))print("Dự đoán của thư viện 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 căn nhà cần dự đoán: dự kiến của cách 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ự đoán của gradient descent: 0.602 (triệu USD) giá trị thực tế: 0.538 (triệu USD) Vậy là chúng ta đã xong xuôi phần lí thuyết cũng tương tự hiện thực ý tưởng phát minh của Linear Regression thông qua Python và các thư viện. Để bài viết liên quan code minh họa mang lại thuật toán này, các chúng ta có thể tham khảo Colab Notebook cơ mà mình đã sẵn sàng ở đây nhé!

6. Ứng dụng của Linear Regression trong thực tế

Dựa vào thuật toán này, bạn 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ố đầu vào là giới tính, điểm trung bình khóa đào tạo và huấn luyện và con số các chuyển động ngoại khóa đã tham gia ,…

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

Cụ thể rộng và thân cận với người tiêu dùng nhất, Facebook cũng sử dụng thuật toán này để dự đoán con số người tóm tắt và bình luận dựa vào những địa chỉ trong bài viết trước đó của doanh nghiệp hay số lượng bạn bè trên facebook, …

7. Tổng kết.

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

Tuy nhiên, đây chỉ mới là nghiên cứu trên tài liệu ta vẫn quan liền kề được, và tác dụng chưa thể bội nghịch ánh đúng mực mức độ tác dụng của mô hình Linear Regression khi vận dụng vào việc dự kiến điểm nhập môn lập trình sẵn hay dự đoán giá nhà ngoài thực tế. Ở các bài viết sau của câu lạc bộ thì các bạn sẽ được ra mắt thêm những cách thức để nhận xét một mô hình khi đưa vào đời sống. Hãy đón xem thêm các bài viết tiếp theo của 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á nhà hồi quy đa biến đổi hồi quy đơn biến hồi quy tuyến tính linear regression Machine Learning mathematics maths lắp thêm học nhập môn lập trình

Post navigation

những khái niệm cơ bản trong ngữ điệu lập trình Python Logistic Regression và việc phân loại xúc cảm âm nhạc

Leave a Reply Cancel reply

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