Regression Là Gì

     

xin chào mừng chúng ta đọc đã quay trở lại với chuỗi nội dung bài viết về Machine Learning của club AI. Ở nội dung bài viết trước, bọn họ đã được mày mò và tiếp cận một cách bao quát về Machine Learning với tía nhóm bài toán đó là Regression, Classification với Clustering. Để 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 bọn họ sẽ cùng mày mò về một thuật toán đơn giản trong bài toán 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 để xuất bản một mô hình máy học để tham dự đoán điểm cuối kỳ Nhập môn Lập trình, và sẽ được “nghịch” cùng với nó để xem phong cách “học” của dòng sản phẩm là như thế nào.

1.

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

Bạn sẽ xem: Linear regression là gìLinear Regression là gì?

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


*

Thử lấy ví dụ sau: bạn đang xuất hiện điểm nguyên tố về những môn như Nhập môn lập trình, OOP, Giải tích,… cùng điều ai đang cần là tính ra điểm mức độ vừa phải cuối kỳ của mình. Rất đối chọi giản, các bạn sẽ tính được chứ? tất yếu rồi! Bạn chỉ việc áp bí quyết tính điểm vừa phải vào là ra. Tiếp tục, bạn lại ước ao khảo sát, những thống kê lại coi điểm thi thời điểm giữa kỳ Nhập môn lập trình tác động như núm nào cho đ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 dục tình giữa điểm thành phần và điểm thời điểm cuối kỳ thì đề xuất làm sao? Đây có lẽ rằng là một câu hỏi khó đối với những các bạn chưa từng thao tác với sản phẩm công nghệ học hoặc Thống kê, tuy vậy cũng chớ vội lo lắng, hãy cùng nhau tò mò 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 bọn họ sẽ gặp gỡ hai loại vấn đề đó là Hồi quy đơn biếnHồi quy nhiều biến. Để đơn giản thuật toán, chúng ra sẽ tò mò và so với kỹ toán học tập của bài xích hồi quy 1-1 biến. Vậy hồi quy tuyến đường tính 1-1 biến là gì? Univariate Linear Regression (hồi quy con đường tính đơn biến) đó là mối quan hệ giữa hai vươn lên là số liên tiếp trên trục hoành (x) với trên trục tung (y). Phương trình hồi quy tuyến tính đối kháng biến gồm dạng như phương trình đường thẳng ( y = ax + b ) với (x) là biến tự do và (y) là biến phụ thuộc vào vào (x). Đối với Hồi quy tuyến tính nhiều biến, bạn cũng có thể hiểu một cách đơn giản dễ dàng là sẽ có rất nhiều biến hòa bình (x_1, x_2, dots, x_n) với nhiều hệ số (a_1, a_2, dots, a_n) thay vì chỉ một biến đổi (x) duy nhất.

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

Tổng quát mắng hơn, trong supervised learning (học gồm giám sát), bọn họ có một bộ tài liệu và bộ dữ liệu này call 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 thời điểm giữa kỳ và điểm thời điểm cuối kỳ trong Nhập môn lập trình. Lúc đó, với câu hỏi hồi quy solo biến này, đề xuất tìm ra một quy mô nhận vào input là điểm giữa kỳ với output ra dự đoán điểm thời điểm cuối kỳ hợp lí nhất dựa trên mối quan hệ giữa hai cột điểm mà mô hình đó tra cứu được.

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

(m): Đại diện số lượng các training example (mẫu huấn luyện). Trả sử, bọn họ có 40 dòng điểm cuối kỳ khác nhau được thu thập dựa trên điểm vào giữa kỳ tương ứng. Như vậy, ta tất cả 40 mẫu giảng dạy và m bằng 40.(x): Để ký kết hiệu những input variable (biến đầu vào) cũng hay được điện thoại tư vấn là các feature (đặc trưng). Trong hồi quy đa biến, (x) là 1 trong những vector nhưng trong lấy ví dụ này, (x) là số điểm review trong nửa học kỳ đầu – là một con số trong hồi quy 1-1 biến.(y): Để ký kết hiệu các biến áp ra output hay các biến mục tiêu , ở đó là điểm 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 để chỉ một mẫu giảng dạy cụ thể. Giả sử, cùng với (i = 3) tương ứng ta có điểm tài liệu (x^(3), y^(3)) : Số điểm vào cuối kỳ của chúng ta 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ý hiếm là 7.8.

Chúng ta đang 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 rất được biểu diễn giống như cho quy mô hồi quy con đường tính solo biến. Nó cũng trở thành lấy giá trị nguồn vào là x và mang đến ra hiệu quả đầu ra là y tuy vậy chỉ chuyển đổi các thông số a cùng b thành ( heta_0 = b) và ( heta_1 = a).

Xem thêm: Top 16 Loại Nước Uống Gì Để Giải Rượu Nhanh Chóng, Hiệu Quả Nhất 2022

Khi đó về phương diện toán học, (h) là 1 á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 vừa phải Nhập môn lập trình


*

Nguồn ảnh: NakedCode
*

Hình 1

Vậy điều gì vẫn xảy ra khi bạn cần mong lượng số điểm đúng chuẩn nhất khi đạt 7.00 điểm giữa kỳ từ tin tức 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 đến khi nó va vào con đường thẳng(*) vừa tìm?


*

Hình 2

Hãy quan gần kề hình bên trên , từ hai mẫu mã (4.00, 3.98) và (6.00, 5.5), ta vẽ được con đường thẳng màu đỏ và trường đoản cú đó tìm kiếm được hai cực hiếm ( heta_0) với ( heta_1) theo 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 thời điểm cuối kỳ dựa bên trên điểm vào 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á trị cầu tính khớp ứng với đườ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 vội trăm, cấp ngàn lần và con số các đặc trưng cũng chênh lệch đáng kể, việc xác định hàm đường tính trở nên trở ngại hơn. Sự lộ diện của những vấn đề trên là chi phí đề để máy học tập ra đời, tạo nên nhiều thuật toán ship hàng cho mọi fan như vận dụng thuật toán hồi quy con đường tính cùng SVM (Support Vector Machine) vào phân tích kinh doanh thị trường chứng khoán hay nhấn dạng các giọng nói bằng mô hình Markov, …

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


*

Hình 3: sản xuất hàm mất non

Khi bạn có mức giá trị dự kiến là 6.26 và cực hiếm thực là 6.00 chúng có chân thành và ý nghĩa gì? Hàm mất đuối sẽ cho bạn 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 doanh nghiệp lại càng đúng chuẩn và càng phù hợp! các bạn có ước muốn hàm mất mát đưa ra giá trị nhỏ dại nhất không? Đối với hồi quy tuyến đường tính, chúng ta cũng có thể tính bình phương độ sai lệch để đánh giá sự chênh lệch giữa giá trị đưa ra bởi hàm giả thuyết với 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 mát của bài toán 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ừ quy mô dữ liệu hình 1, ta nhận được hàm trả thuyết từ bỏ điểm giữa kỳ sang điểm cuối kỳ :

mathcalL = frac12m *

Mục tiêu của bọn họ là tối ưu hay nói một cách khác là đi tra cứu điểm cực tiểu của hàm (mathcalL) bên trên. Vì đây là một hàm số hai biến hóa nên trước khi muốn tìm rất tiểu thì họ cùng ôn tập lại kỹ năng của môn giải tích hồi năm độc nhất nhé ;). Để tìm rất trị của một hàm số 2 thay đổ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ù dịp 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 lớn hay điểm yên chiến mã (điểm không hẳn cực đái cũng không phải cực đại) của hàm (f(x, y)), họ còn cần tính ( f’_xx(x, y), f’_yy(x, y), ) với (f’_xy(x, y)) với biện luận từng nghiệm, tuy nhiên vì hàm (mathcalL) ở đấy là hàm số bậc 2, có nghĩa là nó có mẫu thiết kế như một parabol với một điểm rất tiểu duy nhất (Hình 3) bắt buộc 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ỳ tai quái này, ta áp dụng vào việc tìm kiếm cực tè của hàm mất non 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ẽ tính toán các cực hiếm trong phương trình trải qua thư viện thường dùng trong Machine Learning là Numpy, bước đặc trưng nhất trong quy mô Linear Regression là đi tìm kiếm nghiệm cho bài xích toán. Bọn họ giải hệ phương trình của bài toán đối chọi biến như sau:

# Tính điểm thời điểm cuối kỳ theo thetay_pred = theta_0 + theta_1*x1# màn biểu diễn trên thiết 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 thị trên, ta thấy các điểm dữ liệu greed color khá ngay gần với đường thẳng màu đỏ vậy mô hình hồi quy tuyến tính này vận động tốt cùng với tập tài liệu đã cho. Bây giờ, họ kiểm tra lại công dụng hai quý hiếm θ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 mẫu số của phương trình ( heta_1) sinh hoạt trên bằng không thì sao? thời điểm ấy, hệ phương trình vào hồi quy tuyến đường tính có kết quả vô nghiệm phải ta không thể tra cứu ra bộ trọng số lý tưởng nữa và điều bọn họ cần làm là đưa ra một lời giải đủ tốt, phải một thuật toán để tìm giá chỉ trị nhỏ tuổi nhất của hàm mất mát (mathcalL). Họ sẽ quay trở lại để kể thêm về vấn đề 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 để giải việc tính giá nhà.

Với mô hình hồi quy tuyến đường tính nhiều biến, nạm vì đi kiếm một mặt đường thẳng (y=ax+b) khớp với hồ hết điểm đã mang đến thì họ đi tìm một khía cạnh 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 hàng chứa những dữ liệu đầu vào mở rộngsố 1 được cung cấp để dễ dàng hóa và dễ dãi cho tính toán. Với tương tự, trong mô hình đa trở nên này, ta cũng có thể dựng đề nghị hàm mất mát mang đến siêu mặt 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 các bạn dễ chứng minh được rằng, đó là công thức bao quát 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á cả nhà đất là một trong những ví dụ điển hình của thuật toán hồi quy đa đổi mới này, với một bộ tài liệu gồm 11 đặc thù như con số phòng tắm, diện tích trong bên hay phong cảnh xung quanh, … các bạn sẽ tính θ như thế nào? làm sao vận dụng thuật toán này vào trong bài bác toán? Với nhì bộ dữ liệu gồm data_train cùng data_test, giờ bọn họ tiến hành train bằng phương thức nhân ma trận nào:

# bước 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ỏ tuổi 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 chuẩn do có sai số.

Liệu chúng ta đã đi đúng hướng chưa? Làm vắt nào chúng ta xác định được điều đó? Hãy xem sự khác biệt khi áp 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 đưa 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 non mát giữa hai phương thức là:

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

*Trong Đại số con đường tính gồm một khái niệm điện thoại tư vấn là giả nghịch đảo nhằm tìm nghịch hòn đả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ẽ tiến hành đề cập thêm ở 1 bài khác.

5. Gradient Descent là gì?

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

với thuật toán Gradient Descent, ví như lỗi không thấp chút nào thì thuật toán cần update các tham số có mức giá trị new trong

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

Xem thêm: Vở Bài Tập Toán Lớp 5 Tập 2 Trang 14, Giải Câu 1, 2, 3

Dưới đấy là code nhằm minh họa mang đế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 chế tác theta đột nhiên theta = np.random.randn(n) # Chọn những tham số như số lần lặp và hệ số alpha iterations = 1000001 alpha = 0.5 for i in range(iterations): # update theta theo công thức của GD theta = theta - alpha * dL(X, y, theta) # Tính hàm mất đuối loss = loss_multivariate(X, y, theta) if i % 20000 == 0: # Xuất quý giá mất đuối ra để theo dõi print("Iter . Loss = ".format(i, loss)) return thetaKết quả so sánh hàm mất mát giữa hai phương pháp:

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

# lựa chọn 1 điểm tài liệu trong tập tài liệu test và dự đoáni = 1x_1 = Xy_1 = yhypothesis = x_1 theta_gdprint("Dữ liệu của căn nhà cần dự đoán: ", x_1)print()print("Dự đoán của phương 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ự kiến của phương pháp đầu tiên: 0.709 (triệu USD) dự đoán của tủ sách sklearn: 0.632 (triệu USD) dự kiến của gradient descent: 0.602 (triệu USD) quý hiếm thực tế: 0.538 (triệu USD) Vậy là họ đã kết thúc phần lí thuyết cũng tương tự hiện thực ý tưởng 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 đến thuật toán này, các bạn cũng có thể tham khảo Colab Notebook 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 tương quan đến việc dự kiến mức lương trung bình sau khoản thời gian ra trường dựa 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 vận động ngoại khóa đang 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 giá trị đầu vào là ngày, ánh sáng ngoài trời và ánh sá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 thực hiện thuật toán này nhằm dự đoán con số người cốt truyện và bình luận dựa trên những can hệ trong bài viết trước đó của người tiêu dùng hay số lượng anh em trên facebook, …

7. Tổng kết.

Như vậy, qua bài viết này, bọn họ đã khám phá về thuật toán Linear Regression, những khái niệm cơ phiên bản cũng như cách vận dụng nó vào trong số bài toán dự đoán điểm Nhập môn lập trình và dự đoán giá nhà! mong là các bạn đã nắm rõ được lí thuyết và biện pháp hiện thực phát minh của Linear Regression.

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

7. Tư liệu tham khảo

Uyên Đặng – HTTT2019

Posted UnderData Science Machine Learning Mathematics OptimizationTaggeddự đoán giá nhà hồi quy đa đổi thay hồi quy 1-1 biến hồi quy tuyến đường tính linear regression Machine Learning mathematics maths vật dụng 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à vấn đề phân loại xúc cảm âm nhạc

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *