Với lượng thông tinlớn, những bài toán có độ phức tạp cấp hàm mũ, vấn đề đặt ra là làm thế nào đểphát hiện tri thức, đưa ra lời giải mà thời gian thực hiện có thể chấp nhận được.Một tron
Trang 1BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
Trang 2LỜI CẢM ƠN
Đầu tiên, chúng em xin gửi lời cảm ơn chân thành tới thầy TS Trần Hùng Cường – giảng viên khoa Công nghệ thông tin, trường Đại học Công nghiệp Hà Nội Thầy là người đã tận tình giảng dạy, truyền đạt cho chúng em những kiến thức cũng như kinh nghiệm quý báu trong suốt quá trình học Trong quá trình thực hiện đề tài, thầy đã tận tình theo sát giúp đỡ, chỉ bảo và hướng dẫn nhóm chúng em thực hiện nghiên cứu và hoàn thiện đề tài Trong quá trình học tập và làm việc với thầy, nhóm chúng em không những tiếp thu được nhiều kiến thức bổ ích và còn học tập được tinh thần làm việc và thái độ nghiêm túc, hiệu quả Đây là những điều cần thiết cho chúng
em trong quá trình học tập và làm việc sau này Trong quá trình nghiên cứu và hoàn thiện đề tài, tuy nhóm đã cố gắng hết sức và có được sự hướng dẫn từ thầy nhưng vẫn không thể tránh khỏi những sai sót do hạn chế về mặt thời gian cũng như kiến thức chuyên sâu Chúng em rất mong nhận được những ý kiến đóng góp của quý thầy cô và bạn đọc để nhóm em có thêm kinh nghiệm tiếp tục hoàn thiện đề tài của mình.
Nhóm thực hiện:
Nhóm 03
Trang 3Và với đề tài “Tìm hiểu SVM và ứng dụng cho bài toán nhận dạng khuônmặt” chúng ta sẽ đi tìm hiểu rõ hơn về một ứng dụng của học máy đó chính lànhận diện khuôn mặt Trong báo cáo có 3 chương, chương 1 giới thiệu nội dungtrong chương chủ yếu là tổng quan học máy, chương 2 thuật toán SVM trongchương này nhóm 3 chủ yếu tìm hiểu về SVM để ứng dụng vào chương trình,chương 3 kết quả thực nghiệm với nội dung đi tìm hiểu bài toán, phân tích ápdụng thuật toán SVM ở chương 2 sau đó báo cáo kết quả đạt được Trong đề tàinày nhóm em sẽ đi tìm hiểu về Support Vector Machine (SVM) và cách thức để
có thể áp dụng nó vào nhận diện khuôn mặt Chúng em xin chân thành cảm ơnthầy Trần Hùng Cường đã tận tình hướng dẫn chúng em trong quá trình hoànthiện đề tài này Trong quá trình làm bài chúng em đã cố gắng để hoàn thiện bàilàm một cách tốt nhất có thể, rất mong được nhận sự góp ý từ cô và các bạn đểbài làm hoàn thiện hơn nữa
Chúng em xin chân thành cảm ơn!
Trang 4MỤC LỤC
LỜI MỞ ĐẦU 3
DANH MỤC HÌNH ẢNH 6
CHƯƠNG 1 MỞ ĐẦU 7
1.1 Khái niệm về học máy 7
1.2 Phân loại các thuật toán học máy 8
1.3 Các bước cơ bản thực hiện một thuật toán Học máy 10
1.4 Ứng dụng của Học máy 10
CHƯƠNG 2 THUẬT TOÁN SVM (SUPPORT VECTOR MACHINE) 13
2.1 Khái niệm 13
2.2 Bài toán phân chia 2 class 14
2.3 Soft Margin SVM 20
2.4 Kernel SVM 24
2.4.1 Linear 28
2.4.2 Polynomial 28
2.4.3 Radial Basic Function 29
2.4.4 Sigmoid 29
2.4.5 Bảng tóm tắt các kernel thông dụng 29
2.5 Multi-class SVM 29
CHƯƠNG 3 KẾT QUẢ NGHIÊN CỨU 34
3.1 Bài toán nhận diện khuôn mặt 34
3.2 Bộ dữ liệu 34
3.2.1 Nguồn dữ liệu 34
3.2.2 Mô tả bộ dữ liệu 34
3.3 Thư viện Sklearn 35
3.4 Chương trình 36
3.5 Đánh giá kỹ thuật 41
KẾT LUẬN 42
TÀI LIỆU THAM KHẢO 43
Trang 5DANH MỤC HÌNH Ả
Hình 1.1 Sự khác biệt giữa học máy và các chương trình khác 6
Hình 1.2 Mô tả một cách để phân loại và lựa chọn thuật toán cho phù hợp với bài toán quan tâm 8
YHình 2.1 Minh họa Support Vector Machine……… 11
Hình 2.2 Các mặt phân cách 2 class linearly separable 12
Hình 2.3 Margin của 2 class bằng nhau và lớn nhất có thể 12
Hình 2.4 Phân tích bài toán SVM 14
Hình 2.5 Các điểm gần mặt phân cách của 2 class được khoanh tròn 15
Hình 2.6 Soft margin SVM Khi a) có nhiễu hoặc b) dữ liệu gần linearly separable, SVM thuần sẽ không hoạt động hiệu quả 17
Hình 2.7 Soft margin SVM 18
Hình 2.8 Minh họa ảnh hưởng của C lên nghiệm 19
Hình 2.9 Khi C càng lớn thì biên càng nhỏ 20
Hình 2.10 Dữ liệu 2 class không phân biệt tuyến tính 21
Hình 2.11 Dữ liệu được biến đổi sang không gian mới 22
Hình 2.12 Minh họa multi-class SVM 26
Hình 2.13 One-to-One 27
Hình 2.14 One-to-Rest 27
Trang 6CHƯƠNG 1 MỞ ĐẦU
1.1 Khái niệm về học máy
Học máy (machine learning) là một lĩnh vực của trí tuệ nhân tạo liênquan đến việc nghiên cứu và xây dựng các kĩ thuật cho phép các hệ thống “học”
tự động từ dữ liệu để giải quyết những vấn đề cụ thể Một cách tổng quát, trongcuốn sách Machine Learning của tác giả Tom Mitchell xuất bản năm 1997, họcmáy được định nghĩa như sau: “A computer program is said to learn to perform
a task T from experience E, if its performance at task T, as measured by aperformance metric P, improves with experience E over time” (một chương trìnhmáy tính được cho là học để thực hiện một nhiệm vụ T từ kinh nghiệm E, nếuhiệu suất thực hiện công việc T của nó được đo bởi chỉ số hiệu suất P và đượccải thiện bởi kinh nghiệm E theo thời gian)
Như vậy, học máy nói đến một chương trình giúp cho máy tính có thểgiải một bài toán cụ thể bằng những “kinh nghiệm” mà nó đã được “học” từ dữliệu Chương trình này có sự khác biệt lớn so với các chương trình lập trìnhtruyền thống Sự khác biệt này có thể được mô tả trực quan như trong hình 1 Ởcác chương trình lập trình truyền thống, con người sẽ phải viết ra các qui tắc,điều kiện để máy tính thực hiện nhiệm vụ và đưa ra câu trả lời Ngược lại, đốivới Học máy, nhiệm vụ của máy tính là phải dựa vào dữ liệu quan sát để tìm rađược các qui tắc này
Trang 7Hình 1.1 Sự khác biệt giữa học máy và các chương trình khác
Tương tự như con người, máy tính cũng tự cải thiện khả năng giải quyếtvấn đề thông qua việc học Điểm khác biệt là ở chỗ, con người học được từnhững quan sát thực tế, những điều mà con người được nhìn, được nghe, cònmáy tính học từ dữ liệu
1.2 Phân loại các thuật toán học máy
Dựa trên các tiêu chí khác nhau, người ta có thể phân loại các thuật toánHọc máy theo nhiều cách khác nhau Chẳng hạn, dựa vào vấn đề, nhiệm vụ cầngiải quyết của thuật toán, người ta phân loại các thuật toán Học máy thành baloại:
Hồi quy (Regression): Giải quyết bài toán dự đoán giá trị một đạilượng nào đó dựa vào giá trị của các đại lượng liên quan Ví dụ,dựa vào các đặc điểm như diện tích, số phòng, khoảng cách tớitrung tâm…để dự đoán giá trị căn nhà
Phân lớp (Classification): Giải quyết các bài toán nhận dạng xemmột đối tượng thuộc lớp nào trong số các lớp cho trước Ví dụ, bàitoán nhận diện chữ viết, bài toán phân loại email…thuộc các thuậttoán phân lớp
Phân cụm (Clustering): Ý tưởng cơ bản giống với các thuật toánphân lớp, sự khác biệt là ở chỗ, trong các bài toán phân cụm, cáccụm chưa được xác định trước và thuật toán phải tự khám phá vàphân cụm dữ liệu
Dựa trên cách máy tính học, người ta chia các thuật toán Học máy thành:
Học có giám sát (Supervised learning): Thuật toán sẽ học trên dữliệu đã được dán nhãn Ví dụ, trong bài toán nhận diện hình ảnh, dữ
Trang 8toán sẽ học các đặc điểm quan trọng từ các bức ảnh đó để nhận biếtxem một đối tượng trong một bức ảnh có phải là mèo hay không.
Học không giám sát (Unsupervised learning): Thuật toán học trêncác dữ liệu chưa được gán nhãn và sẽ phải tự khám phá ra cấu trúc,phân bố của dữ liệu để tự phân cụm chúng
Học bán giám sát (Semi-supervised learning): Kết hợp cả học giámsát và học không giám sát Tức là, một số dữ liệu đầu vào sẽ đượcgán nhãn và một số khác thì không được gán nhãn
Học tăng cường/củng cố (Reinforced learning): Thuật toán sẽ tựhọc dựa trên việc tính điểm thưởng, phạt cho các kết quả thực hiệnnhiệm vụ Cụ thể hơn, các thuật toán học tăng cường nghiên cứucách thức một tác nhân (Agent) trong một môi trường(Environment) đang ở một trạng thái (State) thực hiện một hànhđộng (Action) để tối ưu hóa một phần thưởng (Reward) chung Cácchương trình máy tính như AlphaGo đã giúp máy tính đánh bại conngười trong các trò chơi như cờ vua, cờ vây được xây dựng dựatrên thuật toán này
Cần lưu ý là việc phân loại trên chỉ có tính chất tương đối vì cùng mộtthuật toán nhưng có thể phân loại thuộc các loại khác nhau
Hình 1.2 Mô tả một cách để phân loại và lựa chọn thuật toán cho phù hợp với bài
toán quan tâm
Trang 91.3 Các bước cơ bản thực hiện một thuật toán Học máy
Nhìn chung, việc thực hiện một thuật toán Học máy thường trải qua cácbước cơ bản sau:
1 Thu thập dữ liệu – Gathering data/Data collection
2 Tiền xử lý dữ liệu – Data preprocessing
1 Trích xuất dữ liệu – data extraction
2 Làm sạch dữ liệu – data cleaning
3 Chuyển đổi dữ liệu – Data transformation
4 Chuẩn hóa dữ liệu – Data normalization
5 Trích xuất đặc trưng – Feature extraction
3 Phân tích dữ liệu – Data analysis
1 Xây dựng mô hình máy học – Model building
2 Huấn luyện mô hình – Model training
3 Đánh giá mô hình – Model evaluation Trong tất cả các bước thì việc thu thập dữ liệu, tiền xử lý và xây dựng
bộ dữ liệu là tốn nhiều thời gian và công sức nhất Đây là bước quan trọng, cóảnh hưởng rất nhiều đến hiệu quả của thuật toán Học máy
1.4 Ứng dụng của Học máy
Các thuật toán Học máy đang được áp dụng rộng rãi trong rất nhiều lĩnhvực trong đời sống xã hội, từ sản xuất công nghiệp, nông nghiệp, tới tài chính,ngân hàng, y tế, giáo dục, dịch vụ giải trí… Một số ứng dụng phổ biến của Họcmáy có thể đề cập đến như:
a Xử lý ảnh
Bài toán xử lý ảnh(Image Processing) giải quyết các vấn đề phân
tích thông tin từ hình ảnh hay thực hiện một số phép biến đổi Một số ví dụ là:
Gắn thẻ hình ảnh(Image Tagging), giống như Facebook, một thuậttoán tự động phát hiện khuôn mặt của bạn và bạn bè trên những bứcảnh Về cơ bản, thuật toán này học từ những bức ảnh mà bạn tự gắnthẻ cho mình trước đó
Nhận dạng ký tự(Optical Character Recognition), là một thuật toánchuyển dữ liệu trên giấy tờ, văn bản thành dữ liệu số hóa Thuậttoán phải học cách nhận biết ảnh chụp của một ký tự là ký tự nào
Ô tô tự lái(Self-driving cars), một phần cơ chế sử dụng ở đây là xử
lý ảnh Một thuật toán machine learning giúp phát hiện các mépđường, biển báo hay các chướng ngại vật bằng cách xem xét từng
Trang 10Phân tích văn bản (Text analysis) là công việc trích xuất hoặc phânlọi thông tin từ văn bản Các văn bản ở đây có thể là các facebook posts,emails, các đoạn chats, tài liệu,… Một số ví dụ phổ biến là:
Lọc spam (Spam filtering), là một trong những ứng dụng phân loạivăn bản được biết và sử dụng nhiều nhất Ở đây, phân loại văn bản
là xác định chủ đề cho một văn bản Bộ lọc spam sẽ học cách phânloại một email có phải spam không dựa trên nội dung và tiêu đề củaemail
Phân tích ngữ nghĩa (Sentiment Analysis), học cách phân loại một ýkiến là tích cực, trung tính hay tiêu cực dựa trên nội dung văn bảncủa người viết
Khai thác thông tin (Information Extraction), từ một văn bản, họccách để trích xuất các thông tin hữu ích Chẳng hạn như trích xuấtđịa chỉ, tên người, từ khóa,…
c Khai phá dữ liệu
Khai phá dữ liệu (Data mining) là quá trình khám phá ra các thông
tin có giá trị hoặc đưa ra các dự đoán từ dữ liệu Định nghĩa này có vẻ baoquát, nhưng bạn hãy nghĩ về việc tìm kiếm thông tin hữu ích từ một bảng
dữ liệu rất lớn Mỗi bản ghi sẽ là một đối tượng cần phải học, và mỗi cột
là một đặc trưng Chúng ta có thể dự đoán giá trị của một cột của bản ghimới dựa trên các bản ghi đã học Hoặc là phân nhóm các bản ghi của bản.Sau đây là những ứng dụng của khai phá dữ liệu:
Phát hiện bất thường (Anomaly detection), phát hiện các ngoại lệ,
ví dụ như phát hiện gian lận thẻ tín dụng Bạn có thể phát hiện mộtgiao dịch là khả nghi dựa trên các giao dịch thông thường củangười dùng đó
Phát hiện các quy luật (Association rules), ví dụ, trong một siêu thịhay một trang thương mại điện tử Bạn có thể khám phá ra kháchhàng thường mua các món hàng nào cùng nhau Dễ hiểu hơn, kháchhàng của bạn khi mua món hàng A thường mua kèm món hàngnào? Các thông tin này rất hữu ích cho việc tiếp thị sản phẩm
Ngoài ra, các thuật toán Học máy được sử dụng rộng rãi trong cácbài toán như nận diện giọng nói (Search by text, talk to assitant like Siri hayGoogle Assistant), hệ thống khuyến nghị (ví dụ khi bạn tìm một sản phẩm nào
đó trên Google thì sau đó trên các nền tảng xã hội mà bạn sử dụng sẽ xuất hiệnmột loạt các quảng cáo liên quan đến sản phẩm đó), xây dựng xe tự hành, dịchthuật, lọc email…
Trang 11CHƯƠNG 2 THUẬT TOÁN SVM (SUPPORT VECTOR
MACHINE)
2.1 Khái niệm
Support Vector Machine hay SVM là một trong những thuật toán giám sátphổ biến nhất, được sử dụng cho phân loại cũng như hồi quy Tuy nhiên, nó chủyếu được sử dụng cho các vấn đề phân loại trong học máy
Mục tiêu của thuật toán SVM là tạo ra các đường hoặc ranh giới quyếtđịnh tốt nhất có thể phân tách không gian n chiều thành các lớp để chúng ta cóthể dễ dàng đặt điểm dữ liệu mới vào đúng danh mục trong tương lai Ranh giớiquyết định tốt nhất này được gọi là siêu phẳng (hyperplane)
Trang 12SVM chọn các điểm/vector cực trị giúp tạo siêu phẳng Hãy xem xét sơ
đồ bên dưới, trong đó có hai class khác nhau được phân loại bằng cách sử dụngranh giới quyết định hay siêu mặt phẳng:
Hình 2.1 Minh họa Support Vector Machine
Thuật toán SVM có thể được sử dụng để nhận diện khuôn mặt, phân loạihình ảnh, phân loại văn bản,…
SVM có 2 loại:
- SVM tuyến tính: SVM tuyến tính được sử dụng cho dữ liệu có thểphân tách tuyến tính, có nghĩa là nếu một tập dữ liệu có thể được phânloại thành hai lớp bằng cách sử dụng một đường thẳng thì dữ liệu đó đượcgọi là dữ liệu có thể phân tách tuyến tính và bộ phân loại được sử dụng là
bộ phân loại SVM tuyến tính
- SVM phi tuyến tính: SVM phi tuyến tính được sử dụng cho dữliệu được phân tách phi tuyến tính, có nghĩa là nếu một tập dữ liệu khôngthể được phân loại bằng cách sử dụng một đường thẳng, thì dữ liệu đó
Trang 13được gọi là dữ liệu phi tuyến tính và bộ phân loại được sử dụng được gọi
là phi tuyến tính
Siêu phẳng và các vector hỗ trợ trong thuật toán SVM:
- Siêu phẳng (Hyperplane): Có thể có nhiều đường/ranh giới quyếtđịnh để phân tách các lớp trong không gian n chiều, nhưng chúng ta cầntìm ra ranh giới quyết định tốt nhất giúp phân loại các điểm dữ liệu Ranhgiới tốt nhất này được gọi là siêu phẳng của SVM
- Vector hỗ trợ (Support Vectors): Các điểm dữ liệu hoặc vector gầnsiêu phẳng nhất và ảnh hưởng đến vị trí của siêu phẳng được gọi là vector
hỗ trợ
2.2 Bài toán phân chia 2 class
Giả sử có 2 class khác nhau được mô tả bởi các điểm trong không giannhiều chiều, 2 class này linearly separable, tức tồn tại 1 siêu phẳng phân chiachính xác 2 class đó, tức là các điểm thuộc 1 class nằm về cùng một phía củasiêu phẳng đó và ngược phía với toàn bộ các điểm thuộc class còn lại Thuậttoán tìm đường phân chia 2 class cho kết quả là vô số nghiệm như Hình 2.2 dướiđây:
Trang 14Hình 2.2 Các mặt phân cách 2 class linearly separable
Câu hỏi đặt ra là trong số các mặt phân chia đó, đâu là mặt phân chia tốt
nhất theo một tiêu chuẩn nào đó? Trong 3 đường thẳng minh họa trong Hình 2.2
phía trên, có hai đường thẳng khá lệch về phía class hình tròn đỏ Liệu có cách
nào để tìm được đường phân chia mà cả 2 class đều cảm thấy công bằng và hạnh phúc nhất không?
Chúng ta cần tìm một tiêu chuẩn để đo sự hạnh phúc của mỗi class Hãy xem Hình 2.3 dưới đây:
Hình 2.3 Margin của 2 class bằng nhau và lớn nhất có thể
Trang 15Nếu ta định nghĩa mức độ hạnh phúc của một class tỉ lệ thuận với khoảng cách gần nhất từ một điểm của class đó tới đường/mặt phân cách thì ở Hình 2.3
trái, class tròn đỏ sẽ không được hạnh phúc cho lắm vì đường phân chia gần nóhơn class vuông xanh rất nhiều Chúng ta cần một đường phân chia sao chokhoảng cách từ điểm gần nhất của mỗi class (các điểm được khoanh tròn) tớiđường phân chia là như nhau Khoảng cách như nhau này được gọi là margin
Chúng ta xét tiếp đến Hình 2.3 bên phải khi khoảng cách từ đường phân
chia tới các điểm gần nhất của mỗi class là như nhau Xét hai cách phân chia bởiđường nét liền màu đen và đường nét đứt màu lục, đường nào sẽ làm cho cả 2class hạnh phúc hơn? Rõ ràng đó phải là đường nét liền màu đen vì nó tạo ramột margin rộng hơn
Việc margin rộng hơn sẽ mang lại hiệu ứng phân lớp tốt hơn vì sự phânchia giữa 2 class là rạch ròi hơn Việc này là một điểm khá quan trọng giúpSupport Vector Machine mang lại kết quả phân loại tốt hơn so với NeuralNetwork với 1 layer, tức Perceptron Learning Algorithm
Bài toán tối ưu trong Support Vector Machine (SVM) chính là bài toán đitìm đường phân chia sao cho margin là lớn nhất
Xây dựng bài toán tối ưu cho SVM:
Giả sử rằng các cặp dữ liệu của training set là (x1,y1), (x2,y2),…,(xN,yN) vớivector xi Rd thể hiện đầu vào của một điểm dữ liệu và yi là nhãn của điểm dữliệu đó d là số chiều của dữ liệu và N là số điểm dữ liệu Giả sử rằng nhãn củamỗi điểm dữ liệu được xác định bởi yi=1 (class1) hoặc yi= -1 (class2)
Trang 16Hình 2.4 Phân tích bài toán SVM
Các điểm xuông xanh thuộc class 1, các điểm tròn đỏ thuộc class -1 và
mặt w T x+b = w1x1 + w2x2 + b = 0 là mặt phân cách giữa 2 class (Hình 2.4) Hơn
nữa, class 1 nằm về phía dương, class -1 nằm về phía âm của mặt phân chia
Với cặp dữ liệu (xn, yn) bất kỳ, khoảng cách từ điểm đó tới mặt phân chialà:
Với ||w||2 = với d là số chiều của không gian
Vì theo giả sử ở trên, yn luôn cùng dấu với phía của xn Từ đó suy ra yn
cùng dấu với (wTxn + b), và tử số luôn là 1 số không âm
Với mặt phân chia như trên, margin được tính là khoảng cách gần nhất từ
1 điểm tới mặt đó (bất kể điểm nào trong 2 class):
Bài toán tối ưu trong SVM chính là bài toán tìm w và b sao cho margin
này đạt giá trị lớn nhất:
Trang 17= (1)
Nếu ta thay vector hệ số w bởi kw và b bởi kb trong đó k là 1 hằng sốdương thì mặt phân chia không thay đổi, tức margin không đổi Dựa trên tínhchất này ta có thể giả sử:
với những điểm nằm gần mặt phân chia nhất như Hình 2.5 dưới đây:
Hình 2.5 Các điểm gần mặt phân cách của 2 class được khoanh tròn
Như vậy với mọi n ta có:
Vậy bài toán tối ưu (1) có thể đưa về bài toán tối ưu có ràng buộc sau đây:
(w, b) = (2)
Trang 18subject to: 1 – yn(wTxn + b) ≤ 0, n = 1,2,…,N
Xác định class cho một điểm dữ liệu mới:
Sau khi tìm được mặt phân cách wTx+ b = 0, class của bất kỳ một điểm dữ liệunào sẽ được xác định bằng:
class(x) = sgn(wTx+ b)Trong đó hàm sgn là hàm xác định dấu, nhận giá trị 1 nếu đối số là không âm và-1 nếu ngược lại
Lagrangian của bài toán (3) là:
Với T và
Hàm đối ngẫu Lagrange được định nghĩa:
g( =Bài toán đối ngẫu Lagrange:
subject to = 0Sau khi tìm được , ta có thể suy ra w,b
2.3 Soft Margin SVM
Support Vector Machine (SVM) thuần chỉ làm việc khi dữ liệu của 2 classnày là linearly separable Xét ví dụ trong hình dưới đây:
Trang 19a) b)
Hình 2.6 Soft margin SVM Khi a) có nhiễu hoặc b) dữ liệu gần linearly separable,
SVM thuần sẽ không hoạt động hiệu quả
Có hai trường hợp dễ nhận thấy SVM làm việc không hiệu quả hoặc thậmchí không làm việc:
+ Trường hợp 1: Dữ liệu vẫn linearly separable như Hình 2.6.a)
nhưng có 1 điểm nhiễu của lớp tròn đỏ ở quá gần so với lớp vuông xanh.Trong trường hợp này, nếu ta sử dụng SVM thuần thì sẽ tạo ra một marginrất nhỏ Ngoài ra đường phân lớp nằm quá gần lớp vuông xanh và xa lớptròn đỏ Trong khi đó, nếu ta hy sinh điểm nhiễu này thì ta được mộtmargin tốt hơn rất nhiều được mô tả bởi các đường nét đứt đậm
+ Trường hợp 2: Dữ liệu không linearly separable nhưng gần
linearly separable như Hình 2.6.b) Trong trường hợp này nếu ta sử dụng
SVM thuần thì bài toán tối ưu SVM trở nên vô nghiệm Tuy nhiên nếu ta
hy sinh những điểm ở gần biên giữa 2 class, ta vẫn có thể tạo được mộtđường phân chia tốt như đường nét đứt đậm Các đường support đườngnét đứt mảnh vẫn giúp tạo được một margin lớn cho bộ phân lớp này Vớimỗi điểm nằm lấn sang phía bên kia của các đường support tương ứng, tagọi điểm đó rơi vào vùng không an toàn Vùng an toàn của 2 class là khác
Trang 20Như vậy, để có một margin lớn hơn trong Soft Margin SVM, chúng ta cần
hy sinh một vài điểm dữ liệu bằng cách chấp nhận cho chúng rơi vào vùngkhông an toàn Tất nhiên, chúng ta phải hạn chế sự hy sinh này, nếu không,chúng ta có thể tạo ra một biên cực lớn bằng cách hy sinh hầu hết các điểm Vậyhàm mục tiêu là sự kết hợp để tối đa margin và tối thiểu sự hy sinh
Hình 2.7 Soft margin SVM
Giới thiệu các biến slack n Với những điểm nằm trong vùng an toàn, n
= 0 Những điểm nằm trong vùng không an toàn nhưng vẫn đúng phía so vớiđường phân chia tương ứng với các 0 < n ≤ 1, ví dụ x2 Những điểm nằm ngượcphía với class của chúng so với đường boundary ứng với các n > 1, ví dụ như