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

(TIỂU LUẬN) tiểu luận khoa học phát triển các dự án máy học dựa trên các thư viện python

28 4 0

Đ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

Nội dung

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN Khoa Vật lý Tiểu Luận Khoa Học Phát triển dự án máy học dựa thư viện Python Giảng viên hướng dẫn: T.S Nguyễn Tiến Cường Sinh viên thực hiện: Nguyễn Xuân Hòa Hà Nội, Tháng năm 2021 Tieu luan Lời cảm ơn Trong q trình nghiên cứu hồn thành tiểu luận, em nhận định hướng, giúp đỡ, ý kiến đóng góp quý báu lời động viên thầy giáo, gia đình bạn bè Trước hết, em xin bày tỏ lời cảm ơn tới quý Thầy, Cô giảng dạy Trường Đại học Khoa học Tự nhiên nói chung khoa Vật lý nói riêng Thầy, Cơ khơng người truyền thụ kiến thức đơn thuần, mà người tiếp lửa đam mê, truyền cảm hứng mãnh liệt cho chúng em đường học tập nghiên cứu khoa học Công ơn chúng em khắc ghi thực thật tốt Đặc biệt, em xin gửi lời cảm ơn sâu sắc tới thầy T.S Nguyễn Tiến Cường tận tình hướng dẫn giúp đỡ em trình nghiên cứu thực báo cáo Thầy không dạy em kiến thức không chuyên ngành, mơn học, mà cịn hướng dẫn, bảo cách sống, tác phong làm việc, Những điều thầy dạy thật bổ ích em tin giúp em nhiều sống sau Trong trình học tập thực báo cáo, khó tránh khỏi sai sót khơng đáng có, mong q Thầy, Cơ thơng cảm bỏ qua Ngồi báo cáo cịn nhiều chỗ thiếu sót, em mong nhận ý kiến đóng góp q Thầy, Cơ để giúp em hồn thiện chuẩn bị tốt cho báo cáo Em xin chân thành cảm ơn! Tieu luan Mở đầu AI (trí tuệ nhân tạo) cụ thể machine learning ngày lên giới công nghệ ngày AI có mặt lĩnh vực sống xe tự lái tesla, hệ thống gợi ý sản phẩm Amazon hay máy chơi cờ vây Aphago google deep mind Một thuật toán thường dùng machine learning Klân cận Ứng dụng thuật toán thường sử dụng nhiều rộng rãi tốn phân lớp Hình 1: Mối quan hệ AI, machine learning deep learning Nội dung chính:  Giới thiệu machine learning  Thuật toán K-lân cận  Cơ sở toán học  Phương pháp thử nghiệm kết  Mở rộng kết luận Tieu luan Mục lục Lời cảm ơn .2 Mở đầu .3 Danh sách hình ảnh Giới thiệu machine learning .6 1.1 Khái niệm .6 1.2 Hàm mát tham số mơ hình .6 1.3 Mơ hình chung tốn machine learning .7 1.4 Bài toán phân lớp liệu .8 Thuật toán K-lân cận .9 2.1 Định nghĩa .9 2.2 Quy trình làm việc .9 2.3 Ví dụ minh họa KNN nhiễu .10 Cơ sở toán học 11 3.1 Khoảng cách hai vector .11 3.2 Khoảng cách định nghĩa nào? 11 3.3 Cần phải tính tốn khoảng cách cho hiệu 12 Phương pháp thử nghiệm kết .13 4.1 Giới thiệu ngôn ngữ python thư viện Scikit learn 13 4.2 Bộ liệu hoa Iris .14 4.3 Sử dụng KNN để thử nghiệm với liệu hoa Iris 15 4.3.1 Mơ hình toán 15 4.3.2 Thiết kế chương trình 16 4.3.2a Lập trình .17 4.3.2b Bầu chọn đa số 18 4.3.2c Đánh trọng số cho điểm lân cận .19 4.3.2d Trọng số tự định nghĩa 20 Kết luận mở rộng 21 5.1 Mở rộng 21 5.2 Kết luận 22 Tài liệu tham khảo 23 Phụ lục .24 Tieu luan Danh mục hình ảnh STT Tên hình ảnh Hình Hình 1.3 Hình 2.3 Hình 3.2 Hình 4.3 Tieu luan Nội dung Mối quan hệ AI, machine learning deep learning Mơ hình chung machine learning Bản đồ minh họa KNN nhiễu với K=1 Minh họa chuẩn l vàl không gian chiều Minh họa Iris flower data Chương 1: Giới thiệu machine learning 1.Khái niệm  Là tập AI,  nó có khả tự học hỏi dựa liệu đưa vào mà không cần phải lập trình cụ thể  Các thuật tốn machine learning: Học có giám sát, học khơng giám sát, học bán giám sát học củng cố  Học có giám sát: Một thuật tốn machine learning gọi học có giám sát (supervised learning) việc xây dựng mơ hình dự đốn mối quan hệ đầu vào đầu thực dựa cặp (đầu vào, đầu ra) biết tập huấn luyện  Học không giám sát: Dữ liệu huấn luyện bao gồm liệu đầu vào đầu tương ứng (unsupervised learning)  Học bán giám sát: Có thuật tốn mà tập huấn luyện bao gồm cặp (đầu vào, đầu ra) liệu khác có đầu vào Những thuật tốn gọi học bán giám sát (semi-supervised learning)  Học củng cố: Có nhóm thuật tốn machine learning khác khơng u cầu liệu huấn luyện mà mơ hình học cách định cách giao tiếp với môi trường xung quanh Các thuật tốn thuộc nhóm liên tục định nhận phản hồi từ môi trường để tự củng cố hành vi Nhóm thuật tốn có tên học củng cố  Phân loại (classification) toán nghiên cứu nhiều machine learning Trong tốn này, chương trình u cầu xác định lớp/nhãn (class/label) điểm liệu số N nhãn khác 1.2 Hàm mát tham số mơ hình  Mỗi mơ hình machine learning mơ tả tham số mơ hình  Quan hệ phép đánh giá tham số mơ hình mơ tả thơng qua hàm số gọi hàm mát (loss function cost function).Hàm số có giá trị nhỏ phép đánh giá cho kết tốt ngược lại  Xây dựng mơ hình ML việc tối thiểu hàm mát Tieu luan 1.3 Mô hình chung tốn machine learning Hình 1.3: Mơ hình chung machine learning  Mơ hình chung machine learning bao gồm pha chính: Pha huấn luyện pha kiểm tra  Pha huấn luyện: Xây dựng mơ hình dựa liệu huấn luyện.Trong pha huấn luyện có hai khối cần thiết kế khối trích chọn đặc trưng khối thuật toán  Pha kiểm tra: Dữ liệu kiểm tra đánh giá hiệu mơ hình Khi xây dựng trích chọn đặc trưng thuật tốn khơng sử dụng liệu kiểm tra, dựa liệu huấn luyện Tieu luan 1.4 Bài toán phân lớp liệu Để xây dựng mơ hình phân lớp đánh giá hiệu mơ hình cần phải tiến hành theo bước:  Bước 1: chuẩn bị tập liệu rút trích đặc trưng Chúng ta cần phải biết chọn đặc trưng tốt liệu Lược bỏ đặc trưng gây nhiễu Ước lượng số chiều liệu tốt hay nói cách khác chọn feature Ở bước chuẩn bị liệu để test mơ hình  Bước 2: Xây dựng mơ hình phân lớp Mục đích mơ hình huấn luyện tìm hàm F(x) thơng qua hàm f tìm để gán nhãn cho liệu Bước thường gọi học hay trainning  Bước 3: Kiểm tra liệu với mô hình Tieu luan Chương 2: Thuật tốn K lân cận 2.1 Định nghĩa  Tên tiếng anh K-nearest neghibor, thuật tốn thuộc loại học có giám sát  KNN áp dụng cho toán phân loại hồi quy  Khi training KNN khơng học điều từ liệu tính toán thực dự đoán kết liệu  Với việc phân lớp, nhãn(đầu ra) điểm liệu suy từ K điểm liệu gần  Với hồi quy, đầu điểm liệu đầu điểm liệu biết gần nhất( trường hợp K=1)  Tóm lại KNN thuật tốn tìm đầu điểm liệu cách dựa thông tin K điểm liệu tập liệu gần nhất, mà khơng quan tâm đến việc có vài điểm liệu điểm gần nhiễu( liệu mà có lời giải sai) 2.2 Quy trình làm việc thuật toán KNN  Bước 1: Xác định tham số K = số láng giềng gần  Bước 2: Tính khoảng cách đối tượng cần phân lớp với tất đối tượng training data  Bước 3: Sắp xếp khoảng cách theo thứ tự tăng dần xác định K láng giềng gần với đối tượng cần phân lớp  Bước 4: Lấy tất lớp K láng giềng gần  Bước 5: Dựa vào phần lớp K để xác định lớp cho đối tượng cần phân lớp Tieu luan 2.3 Ví dụ KNN nhiễu Hình 2.3 Bản đồ minh họa KNN nhiễu với k=1 Hình toán phân lớp với lớp đỏ, lam, lục Mỗi điểm liệu (test data point) gán nhãn theo màu điểm mà thuộc Trong hình này, có vài vùng nhỏ xem lẫn vào vùng lớn khác màu Ví dụ có điểm màu Lục gần góc 11 nằm hai vùng lớn với nhiều liệu màu Đỏ Lam Điểm nhiễu Dẫn đến liệu test rơi vào vùng có nhiều khả cho kết khơng xác 10 Tieu luan 4.2 Bộ liệu hoa Iris  Gồm thông tin ba nhãn hoa Iris khác nhau: Iris setosa, Iris virginica Iris versicolor  Mỗi nhãn chứa thông tin 50 hoa với liệu bốn thông tin: chiều dài, chiều rộng đài hoa, chiều dài, chiều rộng cánh hoa  Các điểm liệu vector đặc trưng bốn chiếu gồm thơng tin Hình 4.2 Hình ảnh minh họa Iris flower data 14 Tieu luan 4.3 Sử dụng thuật toán KNN để thử nghiệm với liệu hoa Iris 4.3.1.Mơ hình tốn  Lưu đồ chương trình  Chúng ta tách 150 liệu Iris flower dataset làm phần: Training set test set  KNN dựa vào thông tin training set để dự đoán liệu test set ứng với loại hoa  Dữ liệu dự đoán đối chiếu với loại hoa thật liệu test set để đánh giá hiệu KNN Hình 4.3.1 Sơ đồ minh họa phân cụm Iris flower dataset( Nguồn: wikipidia) 15 Tieu luan 4.3.2 Thiết kế chương trình 4.3.2a Lập trình  Đầu tiên khai báo vài thư viện Thư viện Scikit-learn cung cấp sẵn liệu Iris flower.Thư viện Numpy phép làm việc hiệu với ma trận mảng với tốc độ xử lý nhanh  Tiếp theo load liệu từ tập hoa Iris:  Các lớp gán nhãn (0,1,2) 20 mẫu liệu lấy ngẫu nhiên tạo thành tập huấn luyện, 130 mẫu lại dùng để kiểm tra Scikit-learn có hàm số cho phép ngẫu nhiên lựa chọn điểm này, sau: Kết sau tách tập huấn luyện tập kiểm tra: 16 Tieu luan  Ta xây dựng thuật toán KNN sau: 17 Tieu luan  Thay phải xây dựng thuật tốn phức tạp ta sử trực tiếp sử dụng thư viện scikit-learn cho KNN Xét ví dụ với K = Tức với điểm test data, ta xét điểm training data gần lấy nhãn điểm để dự đốn cho điểm test này: Kết nhận được: 4.3.2b Bầu chọn đa số  1NN dễ gây over fitting  Để tránh tượng ta tăng số điểm lân cận lên, ví dụ điểm, kết xác định dựa đa số Kết nhận được:  Như sử dụng nhiều điểm lân cận độ xác tăng lên  Phương pháp dựa đa số lân cận gọi bầu chọn đa số 18 Tieu luan 4.3.2c Đánh trọng số cho điểm lân cận  Những điểm gần phải có trọng số cao  Ta đánh trọng số khác cho điểm xét phải thỏa mãn điều kiện điểm gần test data phải có trọng số cao  Scikit-learn giúp đơn giản hóa việc cách gán giá trị weights = ‘distance’, lúc điểm gần với test data có trọng số cao hơn( giá trị mặc định weights ‘uniform’ tương ứng tất điểm lân cận có giá trị nhau) Kết nhận được:  Độ xác tiếp tục tăng lên 19 Tieu luan 3.3.2d Trọng số tự định nghĩa  Scikit-learn cung cấp đánh trọng số tùy chọn: −‖z−xi‖2 wi=exp ( ) σ2 wi trọng số điểm gần thứ i ( xi ) điểm liệu xét z σ số dương  Hàm số thỏa mãn điều kiện gần x trọng số cao cao Kết tiếp tục tăng lên chút: 20 Tieu luan Chương Mở rộng kết luận 5.1 Mở rộng Ngồi tốn phân lớp, KNN cịn áp dụng cho tốn hồi quy  Với tốn hồi quy, hồn tồn sử dụng phương pháp KNN: đầu điểm xác định dựa đầu điểm lân cận khoảng cách tới chúng  Hình ví dụ KNN cho hồi quy với K = 5, sử dụng hai cách đánh trọng số khác Ta thấy weights = ’distance’ có xu hướng gây overfitting  Ngồi KNN cịn sử dụng tốn lĩnh vực y tế, tài chính,… Hình 8:KNN cho toán hồi quy (Nguồn: Nearest neighbors regression – scikitlearn -https://goo.gl/9VyBF3) 21 Tieu luan 5.2 Kết luận Ưu điểm KNN: Độ phức tạp tính tốn q trình training Việc dự đốn kết liệu đơn giản Không cần giả sử phân phối lớp(class) Nhược điểm KNN: KNN nhạy cảm với nhiễu K nhỏ Tính tốn khoảng cách tốn thời gian K lớn độ phức tạp tăng lên Ngoài ra, việc lưu toàn liệu nhớ ảnh hưởng tới hiệu KNN 22 Tieu luan Chương Tài liệu tham khảo sklearn.neighbors.NearestNeighb ors sklearn.model_selection.train_tes t_split Machinelearningcoban.com Nearest neighbors regression – scikitlearn 23 Tieu luan Phụ Lục 24 Tieu luan Mã nguồn chương trình # Khai báo thư viện cần dùng from future import print_function import numpy as np from sklearn import neighbors, datasets from sklearn.model_selection import train_test_split # Để chia nhỏ liệu from sklearn.metrics import accuracy_score # Để đánh giá kết # Load Liệu iris = datasets.load_iris() iris_X = iris.data 10.iris_y = iris.target 11 12.print('Labels:', np.unique(iris_y)) 13.np.random.seed(7) 14.# Tách liệu huấn luyện kiểm tra 15.X_train, X_test, y_train, y_test = train_test_split( 16.iris_X, iris_y, test_size=120) 17.print('Training size:', X_train.shape[0], ', test size:', X_test.shape[0]) 18 19.def get2DPlot(iris): 20 X = iris.data[:, :2] # Lấy hai thuộc tính 21 Y = iris.target 22 X_min, X_max = X[:, 0].min() - 5, X[:, 0].max() + 23 Y_min, Y_max = X[:, 1].min() - 5, X[:, 1].max() + 24 plt.figure(2, figsize=(8, 6)) 25 plt.clf() 26 27 # Biểu diễn tập liệu huấn luyện đồ thị 28 plt.scatter(X[:, 0], X[:, 1], c=Y, cmap=plt.cm.Paired) 29 plt.xlabel('Sepal length') 30 plt.ylabel('Sepal width') 31 32 plt.xlim(X_min, X_max) 33 plt.ylim(Y_min, Y_max) 34 plt.xticks(()) 35 plt.yticks(()) 36 plt.show() 37 25 Tieu luan 38.# Xây dựng hàm KNN 39.def KNN(X_train,X_test,y_train,k): 40 num_test = X_test.shape[0] # số lượng liệu test 41 num_train = X_train.shape[0] # số lượng liệu train 42 # y_pred ma trận, hàng tương ứng khoảng cách điểm liệu tập test tất điểm liệu tập train 43 y_pred = np.zeros((num_test,num_train)) 44 # duyệt qua điểm tập test 45 for i in range(num_test): 46 # tương ứng điểm tập test duyêt qua hết train 47 for j in range(num_train): 48 # tính khoảng cách tới tập train 49 y_pred[i,j] = np.sqrt(np.sum(np.power(X_test[i,:]-X_train[j,:],2))) 50 results = [] 51 # xếp theo chiều tăng dần khoảng cách 52 for i in range(len(y_pred)): 53 zipped = zip(y_pred[i,:],y_train) 54 res = sorted(zipped,key = lambda x:x[0]) 55 results_topk = res[:k] 56 # Đếm số lượng class 57 classes = {} 58 for _,j in results_topk: 59 j = int(j) 60 if j not in classes: 61 classes[j] = 62 else: 63 classes[j] = classes[j] + 64 # trả class có số lượng nhiều 65 results.append(max(classes,key = classes.get)) 66 return np.array(results) 67 68.# Xây dựng hàm Accuracy 69.def Accuracy(y_test,y_pred): 70 dem = 71 for i in range(len(y_test)): 72 if y_test[i] == y_pred[i]: 73 dem += 74 return dem/len(y_test)*100 75 76.# gọi hàm KNN 26 Tieu luan 77.results = KNN(X_train,X_test,y_train,3) 78 79.# in accuracy 80.print(Accuracy(results,y_test)) 81 82.# Kết với 1NN 83.Kcf = neighbors.KNeighborsClassifier(n_neighbors = 1, p = 2) 84.#Train 85.Kcf.fit(X_train, y_train) 86.# Dự đoán kết kiểm tra 87.y_pred = Kcf.predict(X_test) 88.print("Accuracy of 1NN: %.2f %%" %(100*accuracy_score(y_test, y_pred))) 89 90.# Bầu chọn đa số 91.Kcf = neighbors.KNeighborsClassifier(n_neighbors = 7, p = 2) 92.Kcf.fit(X_train, y_train) 93.y_pred = Kcf.predict(X_test) 94.print("Accuracy of 7NN with major voting: %.2f %%" %(100*accuracy_score(y_test, y_pred))) 95 96.# Đánh trọng số cho điểm lân cận 97.Kcf = neighbors.KNeighborsClassifier(n_neighbors = 7, p = 2, weights = 'distance') 98.Kcf.fit(X_train, y_train) 99.y_pred = Kcf.predict(X_test) 100 print("Accuracy of 7NN (distance weights): %.2f %%" %(100*accuracy_score(y_test, y_pred))) 101 102 # Trọng số tự định nghĩa 103 def myweight(distances): 104 sigma2 = # we can change this number 105 return np.exp(-distances**2/sigma2) 106 Kcf = neighbors.KNeighborsClassifier(n_neighbors = 7, p = 2, weights = myweight) 107 Kcf.fit(X_train, y_train) 108 y_pred = Kcf.predict(X_test) 109 print("Accuracy of 7NN (self-defined weights): %.2f %%" %(100*accuracy_score(y_test, y_pred))) 27 Tieu luan 28 Tieu luan ... trình Python cung cấp nhiều thư viện để xử lý thuật tốn ví dụ Numpy, Scikit-learn, Matplotlip,…  Scikit-learn (Sklearn) thư viện mạnh mẽ dành cho thuật toán học máy viết ngôn ngữ Python  ? ?Thư viện. ..  nó có khả tự học hỏi dựa liệu đưa vào mà khơng cần phải lập trình cụ thể  Các thuật tốn machine learning: Học có giám sát, học không giám sát, học bán giám sát học củng cố  Học có giám sát:... vài thư viện Thư viện Scikit-learn cung cấp sẵn liệu Iris flower .Thư viện Numpy phép làm việc hiệu với ma trận mảng với tốc độ xử lý nhanh  Tiếp theo load liệu từ tập hoa Iris:  Các lớp gán

Ngày đăng: 08/12/2022, 15:51

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

TÀI LIỆU LIÊN QUAN

w