Tổng kết Linear Regression

Machine Learning cơ bản với NumPy

5.0 (1 đánh giá)
Tạo bởi Huy Trịnh Cập nhật lần cuối 21:46 31-08-2020 11.261 lượt xem 0 bình luận
Tác giả/Dịch giả: Huy Trịnh
Học nhanh

Danh sách bài học

Tổng kết Linear Regression

Dẫn nhập

Trong bài trước, chúng ta đã tìm hiểu về NORMAL EQUATION CHO LINEAR REGRESSION.

Ở bài này Kteam sẽ Tổng kết Linear Regression.


Nội dung

Để theo dõi bài này tốt nhất bạn cần có kiến thức về:

Trong bài này chúng ta sẽ tổng kết về:

  • Mục đích Linear Regression.
  • Hàm hθ(x) cho Linear Regression.
  • Hàm J(θ) cho Linear Regression.
  • Thuật toán Gradient Descent.
  • Normal Equation cho Linear Regression.
  • Những lưu ý cuối cùng.

Mục đích Linear Regression

Linear Regression là thuật toán Machine Learning để dự đoán kết quả từ các feature (tính chất của input). Kết quả và các feature có mối quan hệ tuyến tính, hoặc gần tuyến tính (nằm trên đường thẳng).

Tổng kết Linear Regression,  Python, Kteam, Howkteam

Linear Regression sẽ tìm đường thẳng phù hợp để “fit”.


Hàm hθ(x) cho Linear Regression

Công thức toán học

h_{\theta}(x)= \theta^TX

hθ(x) với Numpy

Chỉ cần thực hiện nhân 2 ma trận (thực hiện \theta^T*X với 1 example, X * Theta với nhiều example):

h= X @ Theta


Hàm J(θ) cho Linear Regression

Hàm J(θ) cho biết độ “phù hợp” của đường thẳng đã tìm so với training set.

Công thức toán học

J(\theta)=\frac{1}{2m}\sum_1^m(h_\theta(x)-y)^2

J(θ) với Numpy

def computeCost(X,y,Theta):
	predicted = predict(X,Theta)
	sqr_error = (predicted - y)**2
	sum_error = np.sum(sqr_error)
	m = np.size(y)
	J = (1/(2*m))*sum_error
	return J

Công thức vectorize

J(\theta)=\frac{1}{2m}*(h_\theta(x)-y)^T*(h_\theta(x)-y)

J(θ) vectorize với Numpy

def computeCost_Vec(X,y,Theta):
	error = predict(X,Theta) - y
	m = np.size(y)
	J = (1/(2*m))*np.transpose(error)@error
	return J

Thuật toán Gradient Descent

Thuật toán Gradient Descent dùng để tìm bộ số Theta phù hợp để điều chỉnh đường thẳng cho phù hợp với training set.

Tổng kết Linear Regression,  Python, Kteam, Howkteam

Pseudo code

Repeat{
	Theta = Theta – (alpha/m)*(X.T * (h - y))
}

Gradient Descent với Numpy

def GradientDescent(X,y,alpha=0.02,iter=5000):
	theta = np.zeros(np.size(X,1))
	J_hist = np.zeros(iter)
	m = np.size(y)
	X_T = np.transpose(X)
	pre_cost = computeCost(X,y,theta)
	for i in range(0,iter):
		#printProgressBar(i,iter)
		error = predict(X,theta) – y
		#Core code of Gradient Descent
		theta = theta - (alpha/m)*(X_T @ error)
		cost = computeCost(X,y,theta)
		if np.round(cost,15) == np.round(pre_cost,15):
			print('Reach optima at I = %d ; J = %.6f'%(i,cost))
			J_hist[i:] = cost
			break
		pre_cost = cost
		J_hist[i] = cost
	yield theta
	yield J_hist

Normal Equation

Với Normal Equation, ta không cần phải thực hiện lặp vẫn tìm được Theta.

Công thức toán học

Theta = (X.T * X)^{-1}(X.T*y)

Normal Equation với Numpy

def NormEqn(X,y):
	return np.linalg.pinv(X.T @ X) @ (X.T @ y)

Lưu ý chung về Linear Regression

Linear Regression chỉ hoạt động tốt nếu một chuyên gia về lĩnh vực cần học (ví dụ: bất động sản) có thể dự đoán được kết quả. Nếu một chuyên gia bất động sản chỉ có diện tích đất sẽ rất khó để đoán giá (vì còn phụ thuộc vào vị trí, mặt tiền…). Linear Regression cũng vậy.


Kết luận

Qua bài này chúng ta đã Tổng kết Linear Regression.

Ở bài sau, Kteam sẽ GIỚI THIỆU LOGISTIC REGRESSION.

Cảm ơn bạn đã theo dõi bài viết. Hãy để lại bình luận hoặc góp ý của mình để phát triển bài viết tốt hơn. Đừng quên “Luyện tập – Thử thách – Không ngại khó”.


Tải xuống

Tài liệu

Nhằm phục vụ mục đích học tập Offline của cộng đồng, Kteam hỗ trợ tính năng lưu trữ nội dung bài học Tổng kết Linear Regression dưới dạng file PDF trong link bên dưới.

Ngoài ra, bạn cũng có thể tìm thấy các tài liệu được đóng góp từ cộng đồng ở mục TÀI LIỆU trên thư viện Howkteam.com

Đừng quên likeshare để ủng hộ Kteam và tác giả nhé!


Thảo luận

Nếu bạn có bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện Howkteam.com để nhận được sự hỗ trợ từ cộng đồng.

Nội dung bài viết

Tác giả/Dịch giả

Chào các bạn!! Mình là Huy - một cậu bé đam mê lập trình :D Trong một mùa hè rảnh rỗi trước năm cuối cấp đầy cam go, sau khi đã cày hết 7749 bộ anime thì mình muốn làm một việc gì đó "có ích cho đời" hơn. Từ đó mình đã thành 1 Kter :)))

Liên hệ: huytrinhm@gmail.com

Khóa học

Machine Learning cơ bản với NumPy

Với mục đích giới thiệu đến mọi người về Machine Learning cũng như tạo điểm khởi đầu cho các bạn mới, muốn tham gia và tìm hiểu ban đầu về lĩnh vực khá hot này. Cùng Kteam tìm hiểu về Machine Learning cơ bản với ngôn ngữ Python.

Thông qua khóa học MACHINE LEARNING VỚI NUMPY, Kteam sẽ hướng dẫn các kiến thức cơ bản của thuật toán Machine Learning để các bạn có thể tạo ra những sản phẩm Machine Learning của riêng mình.

Đánh giá

im Palls đã đánh giá 08:39 04-06-2024

Bình luận

Để bình luận, bạn cần đăng nhập bằng tài khoản Howkteam.

Đăng nhập
Không có video.