1. Trang chủ
  2. » Luận Văn - Báo Cá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 5 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

Tiêu đề Phát Triển Các Dự Án Máy Học Dựa Trên Các Thư Viện Python
Tác giả Nguyễn Xuân Hòa
Người hướng dẫn T.S Nguyễn Tiến Cường
Trường học Đại Học Quốc Gia Hà Nội
Chuyên ngành Khoa Học Tự Nhiên
Thể loại tiểu luận
Năm xuất bản 2021
Thành phố Hà Nội
Định dạng
Số trang 28
Dung lượng 783,03 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Ứng dụng của thuật toán này thường được sử dụng rất nhiều và rộng rãi trong những bài toán phân lớp Hình 1: Mối quan hệ giữa AI, machine learning và deep learning Nội dung chính:  Giới

Trang 1

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

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 6 năm 2021

1

Tieu luan

Trang 2

những lời động viên của các thầy cô giáo, gia đình và bạn bè.

Trước hết, em xin bày tỏ lời cảm ơn tới quý Thầy, Cô đang giảng dạy tại Trường Đại học Khoa học Tự nhiên nói chung và khoa Vật

lý nói riêng Thầy, Cô không chỉ là những người truyền thụ kiến thức đơn thuần, mà còn là những người tiếp lửa đam mê, truyền cảm hứng mãnh liệt cho chúng em trên con đường học tập và nghiên cứu khoa học Công ơn này chúng em sẽ mãi luôn khắc ghi và thực hiện thật tốt.

Đặc biệt, em xin gửi lời cảm ơn sâu sắc nhất tới thầy T.S Nguyễn Tiến Cường đã tận tình hướng dẫn và giúp đỡ em trong quá trình nghiên cứu và thực hiện bài báo cáo này Thầy không chỉ dạy em những kiến thức không chỉ về chuyên ngành, về môn học, mà còn hướng dẫn, chỉ bảo về cách sống, tác phong làm việc, Những điều thầy đã dạy quả thật rất bổ ích và em tin chắc rằng nó sẽ giúp em rất nhiều trong cuộc sống sau này.

Trong quá trình học tập cũng như thực hiện bài báo cáo, khó tránh khỏi những sai sót không đáng có, rất mong quý Thầy, Cô thông cảm và bỏ qua Ngoài ra bài báo cáo còn nhiều chỗ thiếu sót, em rất mong nhận được những ý kiến đóng góp của quý Thầy, Cô để giúp

em có thể hoàn thiện và chuẩn bị tốt hơn cho những bài báo cáo tiếp theo.

Em xin chân thành cảm ơn!

Trang 3

Mở đầu

AI (trí tuệ nhân tạo) và cụ thể hơn là machine learning ngày càng nổi lên trong thế giới công nghệ ngày nay AI đã có mặt trong mọi lĩnh vực của cuộc sống như xe tự lái của tesla, hệ thống gợi ý sản phẩm của Amazon hay máy chơi cờ vây Aphago của google deep mind Một trong những thuật toán thường dùng trong machine learning là K- lân cận Ứng dụng của thuật toán này thường được sử dụng rất nhiều và rộng rãi trong những bài toán phân lớp

Hình 1: Mối quan hệ giữa AI, machine learning và deep learning

Nội dung chính:

 Giới thiệu về machine learning

 Thuật toán K-lân cận

Trang 4

Mục lục

Lời cảm ơn 2

Mở đầu 3

Danh sách hình ảnh 5

1 Giới thiệu về machine learning 6

1.1 Khái niệm 6

1.2 Hàm mất mát và tham số mô hình 6

1.3 Mô hình chung trong các bài toán machine learning 7

1.4 Bài toán phân lớp dữ liệu 8

2 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

3 Cơ sở toán học 11

3.1 Khoảng cách giữa hai vector 11

3.2 Khoảng cách được định nghĩa như thế nào? 11

3.3 Cần phải tính toán khoảng cách thế nào cho hiệu quả 12

4 Phương pháp thử nghiệm và kết quả 13

4.1 Giới thiệu về ngôn ngữ python và thư viện Scikit learn 13

4.2 Bộ dữ liệu hoa Iris 14

4.3 Sử dụng KNN để thử nghiệm với bộ dữ liệu hoa Iris 15

4.3.1 Mô hình bài 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 các điểm lân cận 19

4.3.2d Trọng số tự định nghĩa 20

5 Kết luận và mở rộng 21

5.1 Mở rộng 21

Trang 5

Danh mục hình ảnh

machine learning và deep learning

machine learning

nhiễu với K=1

trong không gian 2 chiều

data

5

Tieu luan

Trang 6

Chương 1: Giới thiệu về machine learning

 Học không giám sát: Dữ liệu huấn luyện chỉ bao gồm dữ liệu đầu vào và không có đầu ra tương ứng (unsupervised learning)

 Học bán giám sát: Có những thuật toán mà tập huấn luyện bao gồm các cặp (đầu vào, đầu ra) và dữ liệu khác chỉ có đầu vào Những thuật toán này được gọi là học bán giám sát (semi-supervised learning)

 Học củng cố: Có một nhóm các thuật toán machine learning khác có thể không yêu cầu dữ liệu huấn luyện mà mô hình học cách ra quyết định bằng cách giao tiếp với môi trường xung quanh Các thuật toán thuộc nhóm này liên tục ra quyết định và nhận phản hồi từ môi trường để tự củng cố hành vi Nhóm các thuật toán này có tên học củng cố.

 Phân loại (classification) là một trong những bài toán được nghiên cứu nhiều nhất trong machine learning Trong bài toán này, chương trình được yêu cầu xác định lớp/nhãn (class/label) của một điểm dữ liệu trong

số N nhãn khác nhau 1.2 Hàm mất mát và tham số mô hình

Trang 7

1.3 Mô hình chung trong các bài toán machine

learning

Hình 1.3: Mô hình chung của machine learning

 Mô hình chung trong machine learning bao gồm 2 pha chính: Pha huấn luyện và pha kiểm tra.

 Pha huấn luyện: Xây dựng mô hình dựa trên dữ liệu huấn luyện.Trong pha huấn luyện sẽ có hai khối cần được thiết kế là khối bộ trích chọn đặc trưng và khối thuật toán

 Pha kiểm tra: Dữ liệu kiểm tra đánh giá hiệu quả mô hình Khi xây dựng

bộ trích chọn đặc trưng và thuật toán chính không được sử dụng dữ liệu kiểm tra, chỉ được dựa trên dữ liệu huấn luyện.

7

Tieu luan

Trang 8

1.4 Bài toán phân lớp dữ liệu

Để xây dựng được mô hình phân lớp và đánh giá hiệu quả của mô hình cần phải tiến hành theo 3 bước:

 Bước 1: chuẩn bị tập dữ liệu và rút trích đặc trưng Chúng ta cần phải biết chọn ra những đặc trưng tốt của dữ liệu Lược bỏ những đặc trưng gây nhiễu Ước lượng số chiều của dữ liệu bao nhiêu là tốt hay nói cách khác là chọn bao nhiêu feature.

Ở bước này chúng ta cũng chuẩn bị bộ dữ liệu để test trên mô hình.

 Bước 2: Xây dựng mô hình phân lớp Mục đích của mô hình huấn luyện là tìm ra hàm F(x) và thông qua hàm f tìm được để chúng ta gán nhãn cho dữ liệu Bước này thường được gọi là học hay trainning

 Bước 3: Kiểm tra dữ liệu với mô hình

Trang 9

 KNN có thể áp dụng được cho cả bài toán phân loại và hồi quy

 Khi training KNN không học một điều gì từ dữ liệu mọi tính toán được thực hiện khi dự đoán kết quả của dữ liệu mới

 Với việc phân lớp, nhãn(đầu ra) của một điểm dữ liệu mới được suy

ra từ K điểm dữ liệu gần nhất

 Với hồi quy, đầu ra của một điểm dữ liệu bằng chính đầu ra của điểm

dữ liệu đã biết gần nhất( trong trường hợp K=1)

 Tóm lại KNN là thuật toán đi tìm đầu ra của một điểm dữ liệu mới bằng cách chỉ dựa trên thông tin của K điểm dữ liệu trong tập dữ liệu gần nó nhất, mà không quan tâm đến việc có một vài điểm dữ liệu trong những điểm gần nhất này là nhiễu( dữ liệu mà có lời giải sai) 2.2 Quy trình làm việc của thuật toán KNN

 Bước 1: Xác định tham số K = số láng giềng gần nhất.

 Bước 2: Tính khoảng cách đối tượng cần phân lớp với tất cả các đối tượng trong training data.

 Bước 3: Sắp xếp khoảng cách theo thứ tự tăng dần và xác định K láng giềng gần nhất với đối tượng cần phân lớp.

 Bước 4: Lấy tất cả các lớp của K láng giềng gần nhất.

 Bước 5: Dựa vào phần lớp của K để xác định lớp cho đối tượng cần phân lớp

9

Tieu luan

Trang 10

2.3 Ví dụ về KNN nhiễu

Hình 2.3 Bản đồ minh họa KNN nhiễu với k=1

Hình trên là bài toán phân lớp với 3 lớp đỏ, lam, lục Mỗi điểm dữ liệu mới (test data point) sẽ được gán nhãn theo màu của điểm mà nó thuộc về Trong hình này, có một vài vùng nhỏ xem lẫn vào các vùng lớn hơn khác màu Ví dụ

có một điểm màu Lục ở gần góc 11 giờ nằm giữa hai vùng lớn với nhiều dữ liệu màu Đỏ và Lam Điểm này rất có thể là nhiễu Dẫn đến nếu dữ liệu test rơi vào vùng này sẽ có nhiều khả năng cho kết quả không chính xác.

Trang 11

Chương 3: Cơ sở toán học

Vì KNN ra quyết định dựa trên các điểm gần nhất nên có hai vấn đề ta cần xử lý.Vấn đề 1: Khoảng cách được định nghĩa như thế nào? Và vấn đề 2: Cần phải tính toán khoảng cách như thế nào cho hiệu quả?

3.1 Khoảng cách giữa hai vector

 Trong không gian một chiều, khoảng cách giữa hai điểm là trị tuyệt đối của hiệu giữa hai giá trị đó Trong không gian hai chiều, tức mặt phẳng, chúng ta thường dùng khoảng cách Euclid để đo khoảng cách giữa hai điểm.

 Khoảng cách Euclid chính là độ dài đoạn thẳng nối hai điểm trong mặt phẳng Việc đo khoảng cách giữa hai điểm dữ liệu nhiều chiều rất cần thiết trong machine learning Đây chính là lý do khái niệm chuẩn (norm)

ra đời Để xác định khoảng cách giữa hai vector y và z, người ta thường

áp dụng một hàm số lên vector hiệu x = y − z Hàm số này cần có một vài tính chất đặc biệt.

Một hàm số f : R n → R được gọi là một chuẩn nếu nó thỏa mãn ba điều kiện sau đây: a f(x) ≥ 0 Dấu bằng xảy ra ⇔ x = 0

3.2 Khoảng cách được định nghĩa như thế nào?

 Vì mỗi điểm dữ liệu được thể hiện bằng một vector đặc trưng nên khoảng cách giữa hai điểm dữ liệu chính là khoảng cách giữa hai vector.

 Khoảng cách thường được sử dụng là khoảng cách Eucild

11

Tieu luan

Trang 12

Hình 3.2: Minh họa chuẩnl 1 vàl 2 trong không gian hai chiều

3.3 Cần phải tính toán khoảng cách như thế nào cho hiệu quả?

 Khoảng cách từ một điểm tới từng điểm trong một tập hợp:

Khoảng cách Eucild từ một điểm z tới một điểm xi trong tập huấn luyện được định nghĩa bới ‖ z−xi ‖ 2 Ta sẽ dùng bình phương khoảng cách Eucild để tránh phép tính căn bậc 2

z−xi ‖ 2

2

= ‖ z ‖ 2 2

+ ‖ xi ‖ 2 2

Trang 13

Chương 4: Phương pháp thử nghiệm và kết quả

4.1 Giới thiệu về ngôn ngữ Python và Scikit-learn

 Python là ngôn ngữ lập trình hướng đối tượng, cấp cao, mạnh mẽ, được tạo ra bởi Guido van Rossum Nó dễ dàng để tìm hiểu và đang nổi lên như một trong những ngôn ngữ lập trình nhập môn tốt nhất cho người lần đầu tiếp xúc với ngôn ngữ lập trình Python cung cấp rất nhiều thư viện

để xử lý thuật toán ví dụ như Numpy, Scikit-learn, Matplotlip,…

 Scikit-learn (Sklearn) là thư viện mạnh mẽ nhất dành cho các thuật toán học máy được viết trên ngôn ngữ Python.

 Thư viện cung cấp một tập các công cụ xử lý các bài toán machine learning gồm: Phân loại, hồi quy, phân cụm,…

 Một số nhóm thuật toán được xây dựng bởi thư viện Scikit-learn:

Clustering, Datasets, Supervised Models,…

 Để cài đặt thư viện Scikit learn, trong cửa sổ cmd của máy tính ta gõ lệnh: pip install sklearn.

13

Tieu luan

Trang 14

4.2 Bộ dữ liệu hoa Iris

 Gồm thông tin của ba nhãn hoa Iris khác nhau: Iris setosa, Iris virginica và Iris versicolor.

 Mỗi nhãn chứa thông tin của 50 bông hoa với dữ liệu là bốn thông tin: chiều dài, chiều rộng đài hoa, và chiều dài, chiều rộng cánh hoa.

 Các điểm dữ liệu là vector đặc trưng bốn chiếu gồm các thông tin ở trên.

Hình 4.2 Hình ảnh minh họa về Iris flower data

Trang 15

 Chúng ta sẽ tách 150 dữ liệu trong Iris flower dataset làm 2 phần:

Training set và test set

 KNN sẽ dựa vào thông tin ở training set để dự đoán dữ liệu ở test set ứng với loại hoa nào

 Dữ liệu được dự đoán này sẽ được đối chiếu với loại hoa thật của mỗi dữ liệu trong test set để đánh giá hiệu quả của KNN

Hình 4.3.1 Sơ đồ minh họa phân cụm của Iris flower dataset( Nguồn: wikipidia)

15

Tieu luan

Trang 16

4.3.2 Thiết kế chương trình

4.3.2a Lập trình

 Đầu tiên chúng ta sẽ khai báo vài thư viện Thư viện Scikit-learn cung cấp sẵn bộ dữ liệu Iris flower.Thư viện Numpy phép làm việc hiệu quả với ma trận và mảng với tốc độ xử lý nhanh.

 Tiếp theo chúng ta sẽ load dữ liệu từ tập hoa Iris:

 Các lớp sẽ được gán nhãn là (0,1,2) 20 mẫu dữ liệu được lấy ra ngẫu nhiên tạo thành tập huấn luyện, 130 mẫu còn lại được dùng để kiểm tra Scikit-learn có một hàm số cho phép chúng ta ngẫu nhiên lựa chọn các điểm này, như sau:

Kết quả sau khi tách tập huấn luyện và tập kiểm tra:

Trang 17

 Ta có thể xây dựng thuật toán KNN như sau:

17

Tieu luan

Trang 18

 Thay vì phải xây dựng thuật toán phức tạp ta có thể sử trực tiếp sử dụng thư viện scikit-learn cho KNN Xét ví dụ đầu tiên với K = 1 Tức là với mỗi điểm test data, ta chỉ xét 1 điểm training data gần nhất và lấy nhãn của điểm đó để dự đoán cho điểm test này:

Kết quả nhận được:

4.3.2b Bầu chọn đa số

 1NN rất dễ gây ra over fitting

 Để tránh hiện tượng này ta có thể tăng số điểm lân cận lên, ví dụ 7 điểm, kết quả được xác định dựa trên đa số.

Kết quả nhận được:

 Như vậy khi sử dụng nhiều điểm lân cận hơn độ chính xác đã tăng lên.

 Phương pháp dựa trên đa số trong lân cận còn gọi là bầu chọn đa số.

Trang 19

4.3.2c Đánh trọng số cho các điểm lân cận

 Những điểm gần hơn sẽ phải có trọng số cao hơn.

 Ta sẽ đánh trọng số khác nhau cho 7 điểm đang xét nhưng phải thỏa mãn điều kiện điểm gần test data thì phải có trọng số cao hơn

 Scikit-learn giúp chúng ta đơn giản hóa việc này bằng cách gán giá trị weights = ‘distance’, lúc đó những điểm gần với test data sẽ có trọng số cao hơn( giá trị mặc định của weights là ‘uniform’ tương ứng tất cả các điểm lân cận có giá trị như nhau).

Kết quả nhận được:

 Độ chính xác tiếp tục được tăng lên

19

Tieu luan

Trang 21

Chương 5 Mở rộng và kết luận

5.1 Mở rộng Ngoài bài toán phân lớp, KNN còn có thể áp dụng cho bài toán hồi quy.

 Với bài toán hồi quy, chúng ta cũng hoàn toàn có thể sử dụng phương pháp KNN: đầu ra của một điểm được xác định dựa trên đầu ra của các điểm lân cận và khoảng cách tới chúng.

 Hình dưới là một ví dụ về KNN cho hồi quy với K = 5, sử dụng hai cách đánh trọng số khác nhau Ta có thể thấy rằng weights = ’distance’ có xu hướng gây ra overfitting.

 Ngoài ra KNN còn được sử dụng trong những bài toán về lĩnh vực y tế, tài chính,…

Hình 8:KNN cho bài toán hồi quy (Nguồn: Nearest neighbors regression – scikitlearn -https://goo.gl/9VyBF3)

21

Tieu luan

Trang 22

5.2 Kết luận

Ưu điểm của KNN:

1 Độ phức tạp tính toán của quá trình training là bằng 0.

2 Việc dự đoán kết quả của dữ liệu mới rất đơn giản.

3 Không cần giả sử gì về phân phối của các lớp(class).

Nhược điểm của KNN:

1 KNN rất nhạy cảm với nhiễu khi K nhỏ.

2 Tính toán khoảng cách rất tốn thời gian

3 K càng lớn thì độ phức tạp cũng sẽ tăng lên Ngoài ra, việc lưu toàn bộ

dữ liệu trong bộ nhớ cũng ảnh hưởng tới hiệu năng của KNN.

Trang 23

Chương 6 Tài liệu tham khảo

1 sklearn.neighbors.NearestNeighb ors

2 sklearn.model_selection.train_tes t_split

Trang 24

Phụ Lục

Trang 25

Mã nguồn của chương trình

1 # Khai báo các thư viện cần dùng

2 from future import print_function

3 import numpy as np

4 from sklearn import neighbors, datasets

5 from sklearn.model_selection import train_test_split # Để chia nhỏ dữ liệu

6 from sklearn.metrics import accuracy_score # Để đánh giá kết quả

7 # Load dữ Liệu

8 iris = datasets.load_iris()

9 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 dữ liệu huấn luyện và 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 đầu tiên

21 Y = iris.target

22 X_min, X_max = X[:, 0].min() - 5, X[:, 0].max() + 5

23 Y_min, Y_max = X[:, 1].min() - 5, X[:, 1].max() + 5

24 plt.figure(2, figsize=(8, 6))

25 plt.clf() 26.

27 # Biểu diễn tập dữ liệu huấn luyện bằng đồ 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.

25

Tieu luan

Trang 26

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 dữ liệu test

41 num_train = X_train.shape[0] # số lượng dữ liệu train

42 # y_pred là một ma trận, mỗi hàng tương ứng là khoảng cách của một điểm dữ liệu trong tập test đối với tất cả các điểm dữ liệu trong tập train

68.# Xây dựng hàm Accuracy

Ngày đăng: 24/12/2023, 11:38

HÌNH ẢNH LIÊN QUAN

Hình 2.3. Bản đồ minh họa KNN nhiễu với k=1 - (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
Hình 2.3. Bản đồ minh họa KNN nhiễu với k=1 (Trang 10)
Hình 4.2. Hình ảnh minh họa về Iris flower data - (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
Hình 4.2. Hình ảnh minh họa về Iris flower data (Trang 14)

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

TÀI LIỆU LIÊN QUAN

w