Lớp đa thức python

Trong bài trước, chúng ta đã tìm hiểu về PHÂN TÍCH THÔNG SỐ CỦA QUÁ TRÌNH ĐÀO TẠO VÀ MỘT SỐ THAM SỐ LỰA CHỌN TỰ ĐỘNG

Tại bài viết này, Kteam sẽ giới thiệu đến các bạn cách Tạo tính năng đa thức để cải thiện thuật toán

Nội dung

Để theo dõi bài viết 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ìm hiểu về

  • Tính năng đa thức là gì?
  • Cách bổ sung các tính năng đa thức
  • Lưu ý về overfit

Tính năng đa thức là gì?

Chúng ta có thể cải thiện các tính năng của thuật toán theo nhiều cách khác nhau. Đầu tiên, ta có thể kết hợp nhiều tính năng lại thành 1. Ví dụ như ta có thể tạo ra x3 bằng cách nhân x1 với x2 quay lại với nhau. x3 = x1 * x2 hoặc x1 / x2 …

Một cách cải thiện khác đó là thêm vào các bậc cao hơn cho cùng một tính năng để nâng bậc cho hàm hθ[x] thành hàm bậc 2, bậc 3, bậc 2… khiến nó không còn là một đường thẳng đơn giản nữa

Ví dụ. from function hθ[x] as this

Ta có thể tạo các tính năng bậc cao hơn dựa trên x1 để được hàm  

 bậc 2 như thế này.

Hay là hàm  bậc 3.

Do đó ta đã thêm các tính năng mới là 

 và
để tạo ra hàm bậc 3 này. Ta cũng có thể thêm cả
để tạo ra hàm  căn bậc 2.

Ngẩn ra, ta cũng có thể vừa kết hợp 2 tính năng với nhau vừa nâng cấp chúng ta.

.

Lưu ý. Cần chú ý chuẩn hóa dữ liệu khi thêm các tính năng bậc cao để tránh quá tải. Ví dụ nếu x có phạm vi từ 1 - 1000 thì phạm vi của x2 trở thành 1 - 1000000 và của x3 trở thành 1 - 1000000000

Cách bổ sung các tính năng đa thức

Bây giờ chúng ta sẽ thực hiện việc bổ sung các tính năng đa thức cho bộ dữ liệu bài trước và đào tạo lại để thấy sự khác biệt

Bài 10 - Tài nguyên

Ta process load data as normal

data = np.loadtxt['data.txt',delimiter=',']

Sau đó chúng ta sẽ tách X, y ra

#Khởi tạo ma trận X cùng kích thước với data 
X = np.ones[data.shape]
#lấy các cột đầu làm X
X[:,1:] = data[:,:-1]
#lấy cột cuối làm y
y = data[:,-1]

Sau đó ta dùng vòng lặp để thêm từng tính năng bậc cao hơn vào X [thêm từ

đến
].

#Vòng lặp từ mũ 2 đến mũ 8
for i in range[2,9]:
	#thêm một cột feature vào bên phải X với giá trị bằng x1 mũ i
	X = np.c_[X, X[:,1]**i]
#Lấy kích thước y làm m
m = y.size
#Lấy số cột của X làm n
n = X.shape[1]

Sau đó ta tạo ma trận xp để thuận tiện cho việc làm dữ liệu cốt truyện sau này

#tính min và max của x1
min_x = np.min[X[:,1]]
max_x = np.max[X[:,1]]
#tạo ma trận xp có giá trị từ min_x – 10 đến max_x + 10, step là 0.5 [mỗi giá trị lệch nhau 0.5]
xp = np.arange[min_x - 10, max_x + 10, 0.5]
#thêm x0 bằng 1 cho xp
xp = np.c_[np.ones[xp.size], xp]
#thực hiện thêm polynomial feature như đã làm với X
for i in range[2,9]:
	xp = np.c_[xp, xp[:,1]**i]

Cuối cùng trong quá trình chuẩn bị, data is normalize both X and xp

#Normalize X
[X, mu, sig] = Normalize[X]
#thực hiện normalize xp bằng mu và sigma tính từ X
xp -= mu
xp /= sig
xp[:,0] = 1

Bây giờ ta chỉ cần huấn luyện dữ liệu và vẽ sơ đồ để xem kết quả

#train data với alpha bằng 0.1
theta, jhist = GradientDescent[X, y, 0.1, 100]
#plot bộ training set, cần đảo ngược quá trình normalize bằng cách * sigma + mu
plt.plot[X[:,1]*sig[1] +mu[1], y, 'rx']
#plot đường dự đoán
plt.plot[xp[:,1]*sig[1] +mu[1], xp@theta]

plt.show[]

Lưu ý về overfit

The ta don't should too used used multinomial feature, create a function  bậc quá cao dẫn đến tình trạng overfit.

Ở bài sau, chúng ta sẽ có cách giải quyết trường hợp này bằng cách sử dụng hồi quy tuyến tính chính quy

Kết luận

Qua bài này chúng ta đã tìm hiểu cách Tạo đặc trưng đa thức

Ở bài sau, Kteam sẽ hướng dẫn HỒI QUY TUYẾN TÍNH CHÍNH XÁC

Cảm ơn bạn đã theo dõi bài viết. Hãy để lại bình luận hoặc đóng góp ý kiến ​​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 sợ khó”

Load down

Dự định

Nếu công việc thực hiện theo hướng dẫn không thể hiện ra các phần như mong muốn. Bạn cũng có thể tải xuống DỰ ÁN THAM KHẢO ở liên kết bên dưới

Thảo luận

Nếu bạn gặp bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngại đặt câu hỏi trong phần BÌNH LUẬN bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện Howkteam. com to get the support from the community

Chủ Đề