1. Trang chủ
  2. » Giáo Dục - Đào Tạo

tiểu luận môn học đề tài báo cáo bài tập 5 regularization

19 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Regularization
Tác giả Nguyễn Ngọc Thiện
Người hướng dẫn Trần Vũ Hoàng, GVHD
Trường học Trường Đại Học Sư Phạm Kỹ Thuật TP. Hồ Chí Minh
Chuyên ngành Tự Động Điều Khiển
Thể loại Tiểu luận môn học
Năm xuất bản 2024
Thành phố Tp. Hồ Chí Minh
Định dạng
Số trang 19
Dung lượng 201,91 KB

Nội dung

Viết chương trình cho phép học các tham số của mô hình phân loại phi tuyến trên có sử dụng regularization L2 và L1...9 2.2.1.Mô hình dữ liệu x theo dạng bậc 6 2 biến cho hai tập dữ liệu.

Trang 1

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ

MINHKHOA ĐIỆN – ĐIỆN TỬBỘ MÔN TỰ ĐỘNG ĐIỀU KHIỂN

-⸙∆⸙ -TIỂU LUẬN MÔN HỌC

(Regularization)

GVHD: Trần Vũ Hoàng

i

Trang 2

ii | 19

Trang 3

Note: chỉ lấy tập train để tìm theta thôi, hiện tại bài

làm dùng 2 theta khác nhau.Phần trị tuyệt đối tại vị trí theta dùng hàm sign()

còn phần cost function dùng hàm abs

3

Trang 4

2.1.1.Thực hiện đọc dữ liệu từ file ex5data.txt lên python và biểu diễn dữ liệu 7

2.1.2.Thực hiện chia dữ liệu thành 2 tập 9

2.1.3.Thực hiện kiểm tra các matran 9

2.2 Viết chương trình cho phép học các tham số của mô hình phân loại phi tuyến trên có sử dụng regularization L2 và L1 9

2.2.1.Mô hình dữ liệu x theo dạng bậc 6 2 biến cho hai tập dữ liệu 9

2.2.2.Viết chương trình cho phép học các tham số của mô hình phân loại phi tuyến trên có sử dụng regularization L2 11

2.2.3.Viết chương trình cho phép học các tham số của mô hình phân loại phi tuyến trên có sử dụng regularization L1 12

2.3 Tính J ở mỗi vòng lặp cho cả hai tập dữ liệu, chọn điểm dừng phù hợp 13

Trang 5

Danh Sách Ảnh

Hình 2-1: Đồ thị biểu diễn dữ liệu 8Hình 2-3: Đồ thị tương quan giữa hàm chi phí và hệ số lamda 16

5 | 19

Trang 6

Danh Sách BảngNo table of figures entries found.

6 | 19

Trang 7

Chương 1: Yêu cầu.

Các bạn sử dụng tập dữ liệu của bài tập 5, mô hình dữ liệu x theo dạng bậc 6 và làm các công việc sau:

1 Chia dữ liệu ra thành 2 tập: training (70%) và validation (30%) Phải đảm bảo việc chia dữ liệu là ngẫu nhiên và tỷ lệ positive và negative cân bằng

2 Viết chương trình cho phép học các tham số của mô hình phân loại phi tuyến trên có sử dụng regularization L2 và L1

3 Tính J ở mỗi vòng lặp cho cả hai tập, chọn điểm dừng phù hợp.4 Thay đổi lamda và tính J cho mỗi lamda tương ứng cho cả hai tập Vẽ biểu đồ

quan hệ giữa J và lamda từ đó lựa chọn lamda phù hợp

7 | 19

Trang 8

Chương 2: Thực hiện2.1.Chia dữ liệu ra thành 2 tập: training (70%) và validation (30%)

Phải đảm bảo việc chia dữ liệu là ngẫu nhiên và tỷ lệ positive và negative cân bằng.

2.1.1.Thực hiện đọc dữ liệu từ file ex5data.txt lên python và biểu diễn dữ liệu.

8 | 19

#Sử dụng các thư viện numpy, pandas, matplotlib

import pandas as pdimport numpy as npimport matplotlib.pyplot as pltdf = pd.read_csv("ex5data.txt",header = None, sep=",")x = df.values[:,:-1]

y = df.values[:,-1]m = len(y)

x_pos = x[y==1,:]x_neg = x[y==0,:]plt.scatter(x_pos[:,0],x_pos[:,1],c='r')plt.scatter(x_neg[:,0],x_neg[:,1],c='k')

Trang 9

Hình 2-1: Đồ thị biểu diễn dữ liệu.

9 | 19

Trang 10

2.1.2.Thực hiện chia dữ liệu thành 2 tập.

2.1.3.Thực hiện kiểm tra các matran

2.2.Viết chương trình cho phép học các tham số của mô hình phân loại phi tuyến trên có sử dụng regularization L2 và L1.

2.2.1.Mô hình dữ liệu x theo dạng bậc 6 2 biến cho hai tập dữ liệu.

#Lấy ngẫu nhiên possitive 70% cho tập trainning========================

m_val=len(y_val)

#Thực hiện kiểm tra matran

x_tr.shape,x_val.shape,y_tr.shape,y_val.shape

Trang 11

11 | 19

#Mô hình dữ liệu x theo dạng bậc 6 hai biến như hình bên cạnh

def mapfeature(x1,x2,m,degree): X = np.ones((m,1))

for i in range(1,degree+1): for j in range(i+1): X = np.concatenate((X,np.reshape((x1**(i-j))*x2**j,(m,1))),1) return X

degree = 6X_tr = mapfeature(x_tr[:,0],x_tr[:,1],m_tr,degree)X_val = mapfeature(x_val[:,0],x_val[:,1],m_val,degree)print(X_tr shape,X_val.shape)

Trang 12

2.2.2.Viết chương trình cho phép học các tham số của mô hình phânloại phi tuyến trên có sử dụng regularization L2.

12 | 19

#Chuyển ma trận x_temp sang x_new như mong đợi

ite = 10000lr = 1lamda=0.5J_tr=np.zeros(ite)J_val=np.zeros(ite)y_tr = np.reshape(y_tr,(len(y_tr),1))y_val = np.reshape(y_val,(len(y_val),1))np.random.seed(2)

theta_tr = np.random.rand(X_tr.shape[1],1)theta_tr_temp=np.copy(theta_tr)

theta_tr_temp[0]=0theta_val = np.random.rand(X_val.shape[1],1)theta_val_temp=np.copy(theta_val)

theta_val_temp[0]=0z_tr = np.dot(X_tr,theta_tr)z_val = np.dot(X_val,theta_val)h_tr = 1.0/(1.0+np.exp(-z_tr))h_val = 1.0/(1.0+np.exp(-z_val))

Trang 13

2.2.3.Viết chương trình cho phép học các tham số của mô hình phânloại phi tuyến trên có sử dụng regularization L1.

13 | 19

#

for i in range(ite): theta_tr = theta_tr - (lr/m_tr)*(np.dot((X_tr.T),(h_tr-y_tr)))+(lr*lamda/m_tr)*theta_tr_temp

z_tr = np.dot(X_tr,theta_tr) h_tr = 1.0/(1.0+np.exp(-z_tr)) J_tr[i]=np.mean(-y_tr*np.log(h_tr)-(1-y_tr)*np.log(1-h_tr))

theta_val = theta_val - (lr/m_val)*(np.dot((X_val.T),(h_val-y_val)))+(lr*lamda/m_val)*theta_val_temp

z_val = np.dot(X_val,theta_val) h_val = 1.0/(1.0+np.exp(-z_val)) J_val[i]=np.mean(-y_val*np.log(h_val)-(1-y_val)*np.log(1-h_val))

# chương trình cho phép học các tham số của mô hình phân loại phi tuyến trên có #sử dụng regularization L1

#Đạo hàm trị tuyệt đối theta ra dấu của theta

for i in range(ite): theta_tr = theta_tr - (lr/m_tr)*(np.dot((X_tr.T),(h_tr-y_tr)))+(lr*lamda/m_tr)*np.sign(theta_tr_temp)*theta_tr_temp

z_tr = np.dot(X_tr,theta_tr) h_tr = 1.0/(1.0+np.exp(-z_tr)) J_tr[i]=np.mean(-y_tr*np.log(h_tr)-(1-y_tr)*np.log(1-h_tr))

theta_val = theta_val - (lr/m_val)*(np.dot((X_val.T),(h_val-y_val)))+(lr*lamda/

z_val = np.dot(X_val,theta_val) h_val = 1.0/(1.0+np.exp(-z_val)) J_val[i]=np.mean(-y_val*np.log(h_val)-(1-y_val)*np.log(1-h_val))

Trang 14

2.3.Tính J ở mỗi vòng lặp cho cả hai tập dữ liệu, chọn điểm dừng phù hợp.

h_tr = 1.0/(1.0+np.exp(-z_tr)) J_tr[i]=np.mean(-y_tr*np.log(h_tr)-(1-y_tr)*np.log(1-h_tr))

theta_val = theta_val - (lr/m_val)*(np.dot((X_val.T),(h_val-y_val)))+(lr*lamda/m_val)*theta_val_temp

z_val = np.dot(X_val,theta_val) h_val = 1.0/(1.0+np.exp(-z_val))

#Chọn điểm dừng phù hợp

np.min(J_val)

Trang 15

2.4.Thay đổi lamda và tính J ở mỗi vòng lặp tương ứng cho 2 tập dữ liệu Vẽ đồ thị tương quan giữa J và lamda từ lựa chọn lamda phù hợp đó.

15 | 19

#Thay đổi lamda và tính J ở mỗi vòng lặp cho 2 tập dữ liệu

ite = 10000lr = 1lamda=0.26875102012186747J_tr=np.zeros(ite)

J_val=np.zeros(ite)y_tr = np.reshape(y_tr,(len(y_tr),1))y_val = np.reshape(y_val,(len(y_val),1))np.random.seed(2)

theta_tr = np.random.rand(X_tr.shape[1],1)theta_tr_temp=np.copy(theta_tr)

theta_tr_temp[0]=0theta_val = np.random.rand(X_val.shape[1],1)theta_val_temp=np.copy(theta_val)

theta_val_temp[0]=0z_tr = np.dot(X_tr,theta_tr)z_val = np.dot(X_val,theta_val)h_tr = 1.0/(1.0+np.exp(-z_tr))h_val = 1.0/(1.0+np.exp(-z_val))

Trang 16

16 | 19

#Vẽ đồ thị tương quan giữa J và lamda

for i in range(ite): theta_tr = theta_tr - (lr/m_tr)*(np.dot((X_tr.T),(h_tr-y_tr)))+(lr*lamda/m_tr)*theta_tr_temp z_tr = np.dot(X_tr,theta_tr)

h_tr = 1.0/(1.0+np.exp(-z_tr)) J_tr[i]=np.mean(-y_tr*np.log(h_tr)-(1-y_tr)*np.log(1-h_tr))

theta_val = theta_val - (lr/m_val)*(np.dot((X_val.T),(h_val-y_val)))+(lr*lamda/m_val)*theta_val_temp

z_val = np.dot(X_val,theta_val) h_val = 1.0/(1.0+np.exp(-z_val)) J_val[i]=np.mean(-y_val*np.log(h_val)-(1-y_val)*np.log(1-h_val))plt.plot(J_tr,c='r',label = "Cost function")

plt.plot(J_val,c='b',label = "Lamda")plt.legend()

plt.title("Đồ thị tương quan giữa hàm chi phí J và hệ số lamda")plt.xlabel("X-axis")

plt.ylabel("Y-axis")

Trang 17

Hình 2-2: Đồ thị tương quan giữa hàm chi phí và hệ số lamda.

17 | 19

Trang 18

Tài Liệu Tham Khảo

[1]https://www.google.com/

18 | 19

Trang 19

Phụ Lục

19 | 19

Ngày đăng: 04/09/2024, 15:32

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w