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

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 13 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

Thông tin cơ bản

Định dạng
Số trang 28
Dung lượng 210,84 KB

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 Lời cảm ơn Trong 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à 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 hoàn thiện chuẩn bị tốt cho báo cáo Em xin chân thành cảm ơn! A /T1’ 4-Ầ 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 195O'S 1960's 197O’S 1980’s 1990's 2000's 2010's 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ở tốn học Phương pháp Mở•rộng kết luậnthử nghiệm kết Mục lục 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 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 i1 vài không gian chiều Minh họa Iris flower data Chương learning 1: Giới thiệu vê machine l.Khái niệm • • • • • • • Là tập AI, 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 khơng có đầ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 • 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 tố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 • 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 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 toá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 tốn thực dự đố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 • • 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 tố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 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 bơng 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 • Irís setosa Iris versicolor Hình 4.2 Hình ảnh minh họa Iris flower data Iris virginica 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ự đố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) 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 # Khai báo thư viện cần dũng from tuture import print_function import numpy as np from sklearn import neighbors, datasets írom sklearn.model_selection import train_test_split # Để chia nhó Liệu from sklearn.metrics import accuracyscore # Để đánh giá kết • Tiếp theo load liệu từ tập hoa Iris: # Loũd Liệu iris = datasets.load_iris() irỉs_x = iris.data irỉs_y = iris.target • 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 cịn 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, nhu sau: print('Labels:', np.unique(iris_y)) # Tách Liệu huấn Luyện kiềm tra np.random.seed(7) xtrain, xtest, y train, ytest = train_test_spl.it( iris_x, irỉs_y, test_size=130) print('Training size:‘, x_train.shape[0], test size:', x_test.shape[0]) Kết sau tách tập huấn luyện tập kiểm tra: Labels: [0 2] Training size: 20 , test size: 130 • Ta có thê xây dựng thuật toán KNN sau: def KNN(X_train,X_testJy_trainJk): # # # # # # num test: x_test.shape[0 i số lượng liệu test nuntrain: xtraỉn.shape 0] # só lưọìig dừ liệu train yjred ma trận, mồi hàng tương ứng lờ khoảng cách cửa điểm liệu tập test đổi với tất điểm I ypred: np.zeros((rium_test,nuiii train)) duyệt qua môi điểm tập test for i in range(numtest): tưong ứng điỂm tập test duyêt qua hết train for i in range(num_train): tính khoảng cách tói tập train yjred[i,i]: np.sqrt(np.sum(np.power(x test[i,:]-x_train[jj:],2))) results : [] xếp theo chiêu tăng dan khoảng cách for i in range(len(y_pred)): zipped: zip(y_pred[i,:],y_train) res : sorted(zipped,key : lambda x:x[0]) resultstopk = res[:k] Đem số lượng class classes : {} for _j in results_topk: Ị-iirt(í) ’ if i not in classes: classes[j] : else: classes[j] : classes[j] + # trở class có số lượng nhiều results.append(iỉiax(classes,key: classes.get)) return np.array(resjlts) • 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: Kcf = neighbors.KNeighborsClassifier(n_neighbors = 1, p = 2) #Train Kcf fit(x_trairij y_traỉn) # Dự đoán kết kiểm tra ypred = Kcí.predict(X-test) print("Accuracy of 1NN: %.2f %%" %(100*accuracy_score(y_test, ypred))) Kết nhận được: Accuracy of 1NN: 92.31 % 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ố Kcf = neighbors.KNeỉghborsClassifỉer(n_neighbors = 7j p = 2) Kcf.fit(x_train, y_train) ypred = Kcf predict(x_test) print("Accuracy of 7NN with major voting: %.2f %°/o” %(100*accuracy_score(y_test, y_pred))) Kết nhận được: Accuracy of 7NN with major voting: 93.85 % • • 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ố 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) • • # tóih trọng só cho điéin Lân cận Kcf: neighbors.KNeighborsClassifier(n neighbors: 7) p: 2, weights: 'distance') Kcf.fit(x train, y train) y pred: Kcf ,predict(x test) print("Accuracy of 7NII (distance weights): I2f 0" ?í(1001accuracy score(y test) y pred))) Kết nhận được: Accuracy of 7NN (dĩstance ueights): 94.17 % Độ xác tiếp tục tăng lên 3.3.2d Trọng số tự định nghĩa wi = exp -||z xi ơ2 ||2 I Scikit-learn cung cấp đánh trọng số tùy chọn: wi trọng số điểm gần thứ i số dương (xi) điểm liệu xét z Hàm số thỏa mãn điều kiện gần x trọng số cao cao # Trọng số tự định nghĩa def myweight(distances): sigma2 = # we can change this number return np.exp(-distances**2/sigma?) Kcf = neighbors,KNeighborsClassifier(n_neighbors = 7j p : 2, weights = myweight) Kcf fỉt(x_train, y train) y_pred: Kcf predict(x test) print("Accuracy of 7NN (self-defined ueights): %.2f %(100*accuracy_score(y_testí y_pred))) Kết tiếp tục tăng lên chút: Accuracy of 7NN (self-deíỉned ueights): 95.38 % 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 toá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 tốn hồi quy (Nguồn: Nearest neighbors regression scikitlearn -https://goo.gl/9VyBF3) 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ự đoá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 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 Phụ Lục •• 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 18.def get2DPlot(iris): 19.X = iris.data[:, :2] # Lấy hai thuộc tính 20.Y = iris.target 21.X_min, X_max = X[:, 0].min() - 5, X[:, 0].max() + 22.Y_min, Y_max = X[:, 1].min() - 5, X[:, 1].max() + 23.plt.figure(2, figsize=(8, 6)) 24.plt.clf() 26 25.# Biểu diễn tập liệu huấn luyện đồ thị 26.plt.scatter(X[:, 0], X[:, 1], c=Y, cmap=plt.cm.Paired) 27.plt.xlabel('Sepal length') 28.plt.ylabel('Sepal width') 31 29.plt.xlim(X_min, X_max) 30.plt.ylim(Y_min, Y_max) 31.plt.xticks(()) 32.plt.yticks(()) 33.plt.show() 37 34.# Xây dựng hàm KNN 35.def KNN(X_train,X_test,y_train,k): 36.num_test = X_test.shape[0] # số lượng liệu test 37.num_train = X_train.shape[0] # số lượng liệu train 38.# 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 39.y_pred = np.zeros((num_test,num_train)) 40.# duyệt qua điểm tập test 41.for i in range(num_test): 42.# tương ứng điểm tập test duyêt qua hết train 43.for j in range(num_train): 44.# tính khoảng cách tới tập train 45.y_pred[ij] = np.sqrt(np.sum(np.power(X_test[i,:]-X_train[j,:],2))) 46.results = [] 47.# xếp theo chiều tăng dần khoảng cách 48.for i in range(len(y_pred)): 49.zipped = zip(y_pred[i,:],y_train) 50.res = sorted(zipped,key = lambda x:x[0]) 51.results_topk = res[:k] 52.# Đếm số lượng class 53.classes = {} 54.for _,j in results_topk: 55.j = int(j) 56.if j not in classes: 57.classes[j] = 58.else: 59.classes[j] = classes[j] + 60.# trả class có số lượng nhiều 61.results.append(max(classes,key = classes.get)) 62.return np.array(results) 67 63.# Xây dựng hàm Accuracy 64.def Accuracy(y_test,y_pred): 65.dem = 66.for i in range(len(y_test)): 67.if y_test[i] == y_pred[i]: 68.dem += 69.return dem/len(y_test)*100 75 70.# gọi hàm KNN 71.results = KNN(X_train,X_test,y_train,3) 78 72.# in accuracy 73.print(Accuracy(results,y_test)) 81 74.# Kết với 1NN 75.Kcf = neighbors.KNeighborsClassifier(n_neighbors = 1, p = 2) 76.#Train 77.Kcf.fit(X_train, y_train) 78.# Dự đoán kết kiểm tra 79.y_pred = Kcf.predict(X_test) 80.print("Accuracy of 1NN: %.2f %%" %(100*accuracy_score(y_test, y_pred))) 89 81.# Bầu chọn đa số 82.Kcf = neighbors.KNeighborsClassifier(n_neighbors = 7, p = 2) 83.Kcf.fit(X_train, y_train) 84.y_pred = Kcf.predict(X_test) 85.print("Accuracy of 7NN with major voting: %.2f %%" %(100*accuracy_score(y_test, y_pred))) 95 86.# Đánh trọng số cho điểm lân cận 87.Kcf = neighbors.KNeighborsClassifier(n_neighbors = 7, p = 2, weights = 'distance') 88.Kcf.fit(X_train, y_train) 89.y_pred = Kcf.predict(X_test) 90.print("Accuracy of 7NN (distance weights): %.2f %%" %(100*accuracy_score(y_test, y_pred))) 101 91.# Trọng số tự định nghĩa 92.def myweight(distances): 93.sigma2 = # we can change this number 94.return np.exp(-distances**2/sigma2) 95.Kcf = neighbors.KNeighborsClassifier(n_neighbors = 7, p = 2, weights = myweight) 96.Kcf.fit(X_train, y_train) 97.y_pred = Kcf.predict(X_test) 98.print("Accuracy of 7NN (self-defined weights): %.2f %%" %(100*accuracy_score(y_test, y_pred))) 28 ... 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 toán... 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 tốn học máy viêt ngơn ngữ Python Thư viện. .. Đầ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 # Khai báo thư viện cần dũng from

Ngày đăng: 18/01/2022, 12:30

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w