TRƯỜNG ĐẠI HỌC ĐIỆN LỰCKHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO CHUYÊN ĐỀ HỌC PHẦN HỌC MÁY NÂNG CAO ĐỀ TÀI: SỬ DỤNG PHƯƠNG PHÁP GIẢM CHIỀU PCA VÀO BÀI TOÁN DỰ ĐOÁN KÍ TỰ SỐ VIẾT TAYSinh viên thự
Trang 1TRƯỜNG ĐẠI HỌC ĐIỆN LỰC
KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO CHUYÊN ĐỀ HỌC PHẦN
HỌC MÁY NÂNG CAO
ĐỀ TÀI:
SỬ DỤNG PHƯƠNG PHÁP GIẢM CHIỀU PCA VÀO BÀI
TOÁN DỰ ĐOÁN KÍ TỰ SỐ VIẾT TAYSinh viên thực hiện : VŨ MINH QUÝ
: PHẠM ĐỨC DŨNG Giảng viên hướng dẫn : PHẠM ĐỨC HỒNG
Chuyên ngành : CÔNG NGHỆ PHẦN MỀM
Hà Nội, tháng 12 năm 2022
Trang 2PHIẾU CHẤM ĐIỂM STT Họ và tên sinh viên Nội dung thực hiện Điểm Chữ ký
2 Phạm Đức Dững
Phiếu chấm điểm của giảng viên
Giảng viên chấm 1:
Giảng viên chấm 2:
MỤC LỤC
Trang 3LỜI CẢM ƠN 1
LỜI MỞ ĐẦU 2
CHƯƠNG 1: TỔNG QUAN VỀ HỌC MÁY 3
1.1 Tổng quan 3
1.2 Các thuật toán học máy 3
1.2.1 Phân loại dựa trên phương thức học 3
1.2.2 Phân nhóm dựa trên chức năng 4
1.3 Các ứng dụng của học máy 6
1.4 Một số bài toán ứng dụng của học máy 6
CHƯƠNG 2: TỔNG QUAN VỀ PCA, SVM VÀ KNN 8
2.1 Tổng quan về PCA 8
2.1.1 Giới thiệu 8
2.1.2 Các bước của thuật toán PCA 9
2.1.3 Ưu nhược điểm của PCA 10
2.2 Thuật toán SVM 11
2.2.1 Giới thiệu 11
2.2.2 Phương thức làm việc của SVM 12
2.3 Thuật toán KNN 15
2.3.1 Giới thiệu 15
2.3.2 Phương thức làm việc của KNN 15
CHƯƠNG 3: ỨNG DỤNG THUẬT TOÁN VÀO BÀI TOÁN 17
3.1 Mô tả bài toán 17
Trang 43.2 Dữ liệu thực nghiệm 17
3.3 Môi trường thực nghiệm 17
3.4 Kết quả thực nghiệm 17
3.5 Đánh giá kết quả thực nghiệm 19
KẾT LUẬN 20
DANH MỤC TÀI LIỆU THAM KHẢO 21
Trang 5LỜI CẢM ƠN
Thực tế thì không có sự thành công nào mà không gắn liền với học tập và thựchành Kèm theo đó chính là sự hỗ trợ, sự giúp đỡ từ giảng viên hướng dẫn và sự tìmtòi, học hỏi của bản thân Trong suốt quá trình học tập ở giảng đường Đại học đã đếnnay, em đã nhận được rất nhiều sự quan tâm, giúp đỡ của thầy cô, gia đình và bạn bè.Với lòng biết ơn sâu sắc nhất, em xin gửi đến thầy cô ở Khoa Công NghệThông Tin - trường Đại Học Điện Lực đã truyền đạt vốn kiến thức quý báu chochúng em trong suốt thời gian học tập tại trường Và đặc biệt, trong kỳ này, em đượctiếp cận với môn học rất hữu ích đối với sinh viên ngành Công Nghệ Thông Tin Đó
là môn: “Học máy nâng cao”
Chúng em xin chân thành cảm ơn thầy Phạm Đức Hồng đã tận tâm hướng dẫnchúng em qua từng buổi học trên lớp cũng như những buổi nói chuyện, thảo luận vềmôn học Trong thời gian được học tập và thực hành dưới sự hướng dẫn của thầy, emkhông những thu được rất nhiều kiến thức bổ ích, mà còn được truyền sự say mê vàthích thú đối với bộ môn “Học máy nâng cao” Nếu không có những lời hướng dẫn,dạy bảo của thầy thì chúng em nghĩ báo cáo này rất khó có thể hoàn thành được Mặc dù đã rất cố gắng hoàn thiện báo cáo với tất cả sự nỗ lực Tuy nhiên, dothời gian có hạn mà đây lại là bước đầu tiên đi vào thực tế, và vốn kiến thức còn hạn
chế, nhiều bỡ ngỡ, nên báo cáo về dự án “Sử dụng phương pháp giảm chiều PCA vào bài toán dự đoán kí tự số viết tay” chắc chắn sẽ không thể tránh khỏi những
thiếu sót Chúng em rất mong nhận được sự quan tâm, thông cảm và những đóng gópquý báu của các thầy cô và các bạn để báo cáo này được hoàn thiện hơn
Chúng em xin trân trọng cảm ơn quý thầy cô giáo!
Trang 6LỜI MỞ ĐẦU
Phân tích dữ liệu là một công việc đã khá thân quen với chúng ta trong cuộcsống thường ngày Rất nhiều công ty đến trường học đều và đang sử dụng để phântích chính xác các báo cáo, số liệu của dơn vị
Những dữ liệu này mang thông tin của nhiều ngành nghề và nhiều kiểu dữ liệukhác nhau, đặc biệt là trong lĩnh vực y tế Trong thời gian gần đây, Việt Nam đanghiện đại hóa hệ thống thông tin y tế, vì vậy, vấn đề đặt ra là phải có những phươngpháp tổ chức cơ sở dữ liệu tốt cùng với những kỹ thuật tìm kiếm, tra cứu thông tinhiệu quả, có độ chính xác cao và hiệu năng tốt Hiện nay, công nghệ này đang được
sử dụng rất rộng rãi trên phạm vi rộng khắp toàn thế giới và ích lợi nó mang lại làkhông hề nhỏ
Bản báo cáo này chúng em xin được trình bày về đề tài: “Sử dụng phương pháp giảm chiều PCA vào bài toán dự đoán kí tự số viết tay”.
Trang 7CHƯƠNG 1: TỔNG QUAN VỀ HỌC MÁY
1.1 Tổng quan
Học máy (Machine Learning) là một ngành khoa học nghiên cứu các thuật toán chophép máy tính có thể học được các khái niệm (concept) Có 2 phương pháp học máychính
- Phương pháp quy nạp: Máy học / phân biệt các khái niệm dựa trên dữ liệu đãthu thập được trước đó Phương pháp này cho phép tận dụng được nguồn dữliệu rất nhiều và sẵn có
- Phương pháp suy diễn: Máy học / phân biệt các khái niệm dựa vào các luật.Phương pháp này cho phép tận dụng được các kiến thức chuyên ngành để hỗtrợ máy tính
Hiện nay, các thuật toán học máy đều dựa trên 2 phương pháp này
Các ngành khoa học liên quan:
- Lý thuyết thống kê: các kết quả trong xác suất thống kê là tiền đề cho rất nhiềuphương pháp học máy Đặc biệt, lý thuyết thống kê cho phép ước lượng sai sốcủa các phương pháp học máy
- Các phương pháp tính: các thuật toán học máy thường sử dụng các tính toán sốthực / số nguyên trên dữ liệu rất lớn Trong đó , các bài toán như: tối ưu có /không ràng buộc, giải phương trình tuyến tính vv được sử dụng rất phổ biến
- Khoa học máy tinh: là cơ sở đánh giá các thuật toán, đồng thời đánh giá thờigian chạy, bộ nhớ của các thuật toán học máy
1.2 Các thuật toán học máy
1.2.1 Phân loại dựa trên phương thức học
Theo phương thức học, các thuật toán Machine Learning thường được chia làm 4nhóm: Supervised learning, Unsupervised learning, Semi-supervised learning và
Trang 8Reinforcement learning Có một số cách phân nhóm không có Semi-supervisedlearning hoặc Reinforcement learning.
- Supervised Learning (Học có giám sát):
Supervied Learning là thuật toán dự đoán đầu ra (outcome) của một dữ liệumới (new input) dựa trên các cặp (input, outcome) đã biết từ trước Cặp dữ liệunày còn được gọi là (data, label), tức (dữ liệu, nhãn) Supervised learning lànhóm phổ biến nhất trong các thuật toán Machine Learning
Thuật toán này được chia làm 2 loại: Classification(Phân loại) vàRegression(Hồi quy)
- Unsupervised Learning (Học không giám sát):
Được chia làm 2 loại: Clustering(Phân nhóm) và Association
- Semi-Supervised Learning (Học bán giám sát):
Các bài toán khi chúng ta có một lượng lớn dữ liệu XX nhưng chỉ một phầntrong chúng được gán nhãn được gọi là Semi-Supervised Learning Những bàitoán thuộc nhóm này nằm giữa hai nhóm được nêu bên trên
- Reinforcement Learning (Học củng cố):
Reinforcement Learning là các bài toán giúp cho một hệ thống tự động xácđịnh hành vi dựa trên hoàn cảnh để đạt được lợi ích cao nhất (maximizing theperformance) Hiện tại, Reinforcement learning chủ yếu được áp dụng vào LýThuyết Trò Chơi (Game Theory), các thuật toán cần xác định nước đi tiếp theo
để đạt được điểm số cao nhất
1.2.2 Phân nhóm dựa trên chức năng
- Thuật toán Regression:
o Linear Regression
o Logistic Regression
o Stepwise Regression
Trang 9- Thuật toán Classification
o Linear Classifier
o SVM(Support Vector Machine)
o Kernel SVM
o SRC (Sparse Representation-based classification)
- Thuật toán dựa trên Instance
o K-láng giềng gần nhất(KNN)
o Learning Vector Quantization(LVQ)
- Thuật toán Regularization
o Ridge Regression
o Least Absolute Shrinkage and Selection Operator (LASSO)
o Least-Angle Regression (LARS)
- Thuật toán Bayesian
o Naive Bayes
o Gaussian Naive Bayes
- Thuật toán Clustering
o K-mean
o K-median
o Exceptation Maximization (EM)
- Thuật toán mạng nơ ron
Trang 10o Principal Component Analysis (PCA)
o Linear Discriminant Analysis (LDA)
- Thuật toán Ensemble
• Xử lý ngôn ngữ tự nhiên (Natural Language Processing): xử lý văn bản, giao tiếpngười – máy…
• Nhận dạng (Pattern Recognition): nhận dạng tiếng nói, chữ viết tay, vân tay, thị giácmáy (Computer Vision)…
• Tìm kiếm (Search Engine)
• Chẩn đoán trong y tế: phân tích ảnh X - quang , các hệ chuyên gia chẩn đoán tựđộng
• Tin sinh học phân loại chuỗi gene, quá trình hình thành gene / protein
• Vật lý: phân tích ảnh thiên văn , tác động giữa các hạt…
• Phát hiện gian lận tài chính (financial fraud): gian lận thẻ tỉn dụng
• Phân tích thị trường chứng khoán (stock market analysis)
• Chơi trò chơi: tự động chơi cờ , hành động của các nhân ảo…
• Rôbốt: là tổng hợp của rất nhiều ngành khoa học, trong đó học máy tạo nên hệ thầnkinh / bộ não của người máy
Trang 111.4 Một số bài toán ứng dụng của học máy
- Phân lớp(classification): trong bài toán phân lớp dữ liệu sẽ được dự đoán đầu
ra từ một danh sách khả năng Một số bài toán phân lớp tiêu biểu: một bức ảnhchụp hình động vật được phân vào lớp nào sau đây [cá heo, mèo, chuột, gà],một lá thư được gửi vào hòm thư của bạn nó là [thư spam, không phải thưspam]…
- Các thuật toán học tiêu biểu: Naive Bayes, k nearest neighbor, logisticregression, decision tree, support vector machine, neural network
- Hồi quy(regression): đầu ra một số thực Một số bài toán hồi quy tiêu biểu là:
dự đoán thu nhập cá nhân, dự đoán giá nhà đất, dự đoán sản lượng nôngnghiệp,
- Các thuật toán học tiêu biểu: linear regression, decision tree regression,generalized linear model…
- Phân cụm(clustering): bài toán này sẽ gom những nhóm đối tượng tương tựnhau về cấu trúc (theo một ngữ cảnh) Bài toán này có nhiều ứng dụng khácnhau như: phân đoạn hình ảnh, gom nhóm các đối tượng tương tự nhau…
- Các thuật toán học tiêu biểu: k-mean, k-medium, DBSCAN, Fuzzy C-Mean,Expectation–maximization algorithm…
- Giảm chiều dữ liệu (dimensionality reduction): khi đối mặt với các bài toán cụthể ngoài thực tế, có khả năng số lượng chiều rất lớn (như bài toán ảnh chỉ cầnảnh width:1000, height:1000 là chúng ta đã có 1000000 chiều dữ liệu), điềunày gây nhiều trở ngại về tốc độ tính toán và khả năng dự đoán của mô hình
- Các thuật toán học tiêu biểu: principal component analysis, factor analysis, rough set theory
Trang 12CHƯƠNG 2: TỔNG QUAN VỀ PCA, SVM VÀ KNN
2.1 Tổng quan về PCA
Trong thời đại dữ liệu bùng nổ như ngày nay, dữ liệu ta thu thập được rất lớn Trongthực tế, các vector đặc trưng (feature vectors) có thể có số chiều rất lớn, tới vài nghìn.Đồng thời, lượng điểm dữ liệu cũng rất lớn Điều đó sẽ gây khó khăn cho việc lưu trữ
và tính toán Vì vậy, một trong những bước quan trọng trong nhiều bài toán học máy
là ta phải giảm chiều dữ liệu (dimentionality reduction)
Giảm chiều dữ liệu còn là phương pháp được sử dụng để giảm vấn đề quá khớp(overfitting), nó có hai hướng là hướng lựa chọn đặc trưng (feature selection) vàhướng trích xuất đặc trưng (feature extraction) Hôm nay ta sẽ tìm hiểu về một thuậttoán theo hướng trích xuất đặc trưng là Principal Component Analysis (PCA)
2.1.1 Giới thiệu
PCA là thuật toán tìm một không gian mới (với số chiều nhỏ hơn không gian cũ), các trục tọa độ trong không gian mới được xây dựng sao cho trên mỗi trục, độ biến thiên của dữ liệu trên đó là lớn nhất có thể
Hình 2.1 Ví dụ minh họa PCA
Trang 13PCA về về cơ bản là một kỹ thuật giảm kích thước đơn giản, biến đổi các cột của bộ
dữ liệu thành một tập các đặc trưng mới Nó thực hiện điều này bằng cách tìm mộttập hợp các hướng mới (như trục X và Y) giải thích sự biến đổi tối đa trong dữ liệu,tức là hướng đó ta tìm được maximum của variance
Tại sao lại là maximum của variance?
Như ta có thể thấy, variance thể hiện độ phân tán của dữ liệu, khi variance lớn thì độphân tán lớn và ngược lại Mà thuật toán là muốn lấy tối đa các thông tin, nên nó sẽlấy theo hướng variance lớn, dữ liệu sẽ có độ biến thiên cao, mang lại nhiều thông tin.Trục tọa độ hệ thống mới này được gọi là Principal Components (PCs) Cácphép chiếu của dữ liệu gốc trên bộ trục tọa độ (PC) mới đóng vai trò là bộ dữ liệuđược chuyển đổi mới Nhưng tại sao lại tính toán PCs?
Vì thông tin chứa trong một cột dữ liệu tỉ lệ thuận với lượng phương sai của
nó Tương tự, các PCs có lượng phương sai lớn sẽ mang lại nhiều thông tin và từ đó
ta có thể chọn các PCs chứa nhiều thông tin nhất
2.1.2 Các bước của thuật toán PCA
1 Chuẩn hóa dữ liệu
2 Tìm ma trận hiệp phương sai(covariance matrix)
3 Tìm các trị riêng ( ) và vector riêng ( ) của ma trận này, sắp xếp theo sự giảm dầncủa trị riêng
Các vector là độc lập tuyến tính, và chính là các trục của không gian mới
4 Chọn vector riêng (PCs) ứng với trị riêng lớn nhất để xây dựng ma trận
5 Xây dựng ma trận chiếu (projection matrix)
Trang 146 Chiếu dữ liệu ban đầu đã chuẩn hóa thông qua ma trận chiếu để tạo thành khônggian đặc trưng mới K chiều Dữ liệu mới chính là tọa độ của các điểm dữ liệu trênkhông gian mới.
Hình 2.2 Trình tự của thuật toán PCA
2.1.3 Ưu nhược điểm của PCA
Ưu điểm:
- Loại bỏ các đặc trưng tương quan
- Cải thiện hiệu suất thuật toán
- Giảm sự quá khớp dữ liệu(overfitting)
- Cải thiện trực quan hóa dữ liệu
Trang 15SVM(Support Vector Machine) là một thuật toán giám sát, nó có thể sử dụng cho
cả việc phân loại hoặc đệ quy Tuy nhiên nó được sử dụng chủ yếu cho việc phânloại Trong thuật toán này, chúng ta vẽ đồi thị dữ liệu là các điểm trong n chiều ( ởđây n là số lượng các tính năng bạn có) với giá trị của mỗi tính năng sẽ là một phầnliên kết Sau đó chúng ta thực hiện tìm "đường bay" (hyper-plane) phân chia các lớp.Hyper-plane nó chỉ hiểu đơn giản là 1 đường thẳng có thể phân chia các lớp ra thànhhai phần riêng biệt
Support Vectors hiểu một cách đơn giản là các đối tượng trên đồ thị tọa độ quan sát,Support Vector Machine là một biên giới để chia hai lớp tốt nhất
Trang 162.2.2 Phương thức làm việc của SVM
Kernel
Quá trình xây dựng siêu phẳng phân cách trong SVM được thực hiện qua các phépbiển đổi đại số Với kernel dạng tuyến tính (linear kernel) công thức dùng để dự đoánnhững điểm dữ liệu mới là: thực hiện tích vô hướng giữa đầu vào (x) với mỗi supportvector (xi) như sau: f(x) = B(0) + sum(ai (x, xi)) Các hệ số B0 và ai (cho mỗi đầuvào) phải được ước tính từ dữ liệu học Với kernel dạng đa thức (polynomialkernel) có thể được viết dưới dạng: K(x, xi) = 1 + sum(x, xi) ^ d Còn với kernel dạnglũy thừa (exponential kernel) có dạng: K(x, xi) = exp(-gamma * sum((x - xi2)).Kernel dạng đa thức và dạng lũy thừa tính toán đường phân cách ở những chiềukhông gian cao hơn và được gọi là kernel trick
Regularization
Tham số Regularization ( được nhắc đến trong thư viên sklearn là tham số C) điềuchỉnh việc có nên bỏ qua các điểm dữ liệu bất thường trong quá trình tối ưu mô hìnhSVM Nếu tham số này có giá trị lớn, quá trình tối ưu sẽ chọn một siêu phẳng sao chosiêu phẳng này phân cách tất cả các điểm dữ liệu một cách tốt nhất, từ đó khoảngcách giữa siêu phẳng tới các điểm dữ liệu của 2 lớp sẽ có giá trị nhỏ (small-margin).Ngược lại, khi tham số này có giá trị nhỏ, siêu phẳng sẽ được xây dựng sao chokhoảng cách với các điểm dữ liệu của 2 lớp có giá trị lớn (large-margin), kể cả khisiêu phẳng này sẽ phân loại sai nhiều điểm dữ liệu hơn
Dưới đây là các ví dụ về 2 trường hợp chọn tham số C:
Tham số C có giá trị nhỏ
Trang 17Tham số C có giá trị lớn
Gamma
Tham số gamma xác định việc sử dụng bao nhiêu điểm dữ liệu cho việc xây dựngsiêu phẳng phân cách Với giá trị gamma nhỏ, các điểm dữ liệu nằm xa đường phâncách sẽ được sử dụng trong việc tính toán đường phân cách Ngược lại, với giá trịgamma lớn, chỉ những điểm nằm gần đường phân cách mới được sử dụng để tínhtoán
Trang 18 Margin
Margin trong SVM là khoảng cách giữa siêu phẳng phân cách với các điểm dữ liệugần nó nhất Khoảng cách này đối với các điểm dữ liệu gần nhất của cả 2 lớp cànglớn thì mô hình càng phân loại chính xác Các ví dụ về margin:
SVM có margin tốt : khoảng cách lớn và cân bằng giữa siêu phẳng và các điểm dữliệu của 2 lớp