Trong loạt bài tiếp theo, tôi đã trình bày về một trong số những thuật tân oán classification thông dụng độc nhất (với softmax regression). Có tương đối nhiều suy luận tân oán học tập trong phần này yêu cầu chúng ta cần có kỹ năng và kiến thức về Duality cũng tương tự về tối ưu lồi. quý khách hàng được khuyến nghị gọi những Bài 16, 17, và 18 trước lúc gọi bài bác này.
Bạn đang xem: Support vector machine là gì
Nếu không thích đi sâu vào phần toán thù, chúng ta cũng có thể bỏ lỡ mục 3.
Trong trang này:
1. Giới thiệu 3. Bài toán thù đối ngẫu đến SVM 4. Lập trình tra cứu nghiệm mang đến SVM1. Giới thiệu
Trước khi lấn sân vào phần ý tưởng bao gồm của Support Vector Machine, tôi xin một lần tiếp nữa kể lại kỹ năng về hình học giải tích nhưng bọn họ vẫn thừa quen lúc ôn thi đại học.
1.1. Khoảng phương pháp xuất phát từ 1 điểm tới một cực kỳ mặt phẳng
Trong không khí 2 chiều, ta biết rằng khoảng cách từ 1 điểm tất cả toạ độ ((x_0, y_0)) cho tới mặt đường thẳng gồm phương trình (w_1x + w_2y + b = 0) được xác minh bởi:
Trong không khí ba chiều, khoảng cách xuất phát từ một điểm tất cả toạ độ ((x_0, y_0, z_0)) tới một phương diện phẳng tất cả pmùi hương trình (w_1x + w_2y + w_3 z + b = 0) được xác minh bởi:
mà còn, nếu như ta bỏ lốt trị tuyệt vời sinh sống tử số, bạn có thể xác định được đặc điểm này nằm về phía nào của đường thẳng tốt phương diện phẳng vẫn xét. Những điểm tạo cho biểu thức trong vết quý hiếm hoàn hảo nhất với lốt dương ở về cùng một phía (tôi nhất thời gọi đó là phía dương của mặt đường thẳng), các điểm tạo cho biểu thức vào lốt quý hiếm tuyệt vời và hoàn hảo nhất mang vết âm nằm về phía sót lại (tôi gọ là phía âm). Những điểm nằm ở con đường thẳng/măt phẳng đã khiến cho tử số có giá trị bởi 0, tức khoảng cách bằng 0.
Việc này có thể được bao quát lên không gian nhiều chiều: Khoảng bí quyết từ 1 điểm (vector) gồm toạ độ (mathbfx_0) tới rất khía cạnh phẳng (hyperplane) bao gồm phương trình (mathbfw^Tmathbfx + b = 0) được xác minh bởi:
Với (||mathbfw||_2 = sqrtsum_i=1^d w_i^2) với (d) là số chiều của không khí.
1.2. Nhắc lại bài bác toán phân loại nhì classes
Chúng ta cùng quay trở lại với bài xích tân oán vào Perceptron Learning Algorithm (PLA). Giả sử rằng gồm nhị class khác biệt được thể hiện vì chưng những điểm vào không gian những chiều, nhì classes này linearly separable, tức vĩnh cửu một cực kỳ phẳng phân chia chính xác hai classes kia. Hãy kiếm tìm một siêu khía cạnh phẳng phân chia hai classes kia, tức toàn bộ những điểm thuộc một class nằm về cùng một phía của vô cùng phương diện phẳng kia và ngược phía cùng với cục bộ những điểm trực thuộc class còn sót lại. Chúng ta đang hiểu được, thuật toán thù PLA rất có thể làm được việc này tuy thế nó rất có thể mang đến chúng ta rất nhiều nghiệm như Hình 1 dưới đây:

Câu hỏi đưa ra là: trong nhiều các phương diện phân loại đó, đâu là khía cạnh phân loại cực tốt theo một tiêu chuẩn chỉnh nào đó? Trong bố đường thẳng minch họa trong Hình 1 phía bên trên, tất cả hai tuyến đường trực tiếp hơi lệch về phía class hình trụ đỏ. Như vậy hoàn toàn có thể làm cho lớp màu đỏ ko vui vị phạm vi hoạt động coi ra bị lấn nhiều quá. Liệu tất cả giải pháp làm sao để tìm kiếm được con đường phân loại nhưng cả nhì classes đều thấy công bằng cùng hạnh phúc độc nhất vô nhị hay không?
Chúng ta buộc phải kiếm tìm một tiêu chuẩn nhằm đo sự hạnh phúc của mỗi class. Hãy coi Hình 2 dưới đây:
![]() | ![]() |
Nếu ta tư tưởng mức độ hạnh phúc của một class tỉ trọng thuận với khoảng cách sớm nhất từ 1 điểm của class đó tới đường/khía cạnh phân chia, thì sinh sống Hình 2 trái, class tròn đỏ đã ko được hạnh phúc cho lắm bởi đường phân loại sát nó hơn class vuông xanh tương đối nhiều. Chúng ta nên một con đường phân chia làm sao để cho khoảng cách từ điểm gần nhất của mỗi class (những điểm được khoanh tròn) tới mặt đường phân chia là giống hệt, như vậy thì mới công bằng. Khoảng giải pháp tương đồng này được Gọi là margin (lề).
Đã bao gồm công bằng rồi, bọn họ đề nghị văn minh nữa. Công bằng nhưng cả nhì số đông kỉm hạnh phúc như nhau thì chưa hẳn là vnạp năng lượng mình mang đến lắm.
Chúng ta xét tiếp Hình phía 2 bên đề xuất lúc khoảng cách từ mặt đường phân loại cho tới các điểm gần nhất của từng class là như nhau. Xét nhị phương pháp phân chia vị con đường đường nét ngay tức thì color black với đường nét đứt màu sắc lục, đường làm sao đã làm cho cho tất cả nhị class hạnh phúc hơn? Rõ ràng đó đề nghị là đường đường nét ngay lập tức màu black vì chưng nó tạo nên một margin rộng rộng.
Việc margin rộng lớn hơn đã đem về cảm giác phân lớp xuất sắc rộng vì sự phân chia thân hai classes là rạch ròi hơn. Việc này, sau này những các bạn sẽ thấy, là 1 điểm hơi đặc trưng giúp Support Vector Machine đưa về tác dụng phân nhiều loại xuất sắc rộng so với Neural Network với 1 layer, tức Perceptron Learning Algorithm.
Bài toán thù về tối ưu vào Support Vector Machine (SVM) đó là bài xích toán đi kiếm đường phân loại sao để cho margin là lớn nhất. Đây cũng là nguyên do vị sao SVM còn được gọi là Maximum Margin Classifier. Nguồn gốc của tên thường gọi Support Vector Machine sẽ nhanh chóng được gia công rành mạch.
2. Xây dựng bài tân oán buổi tối ưu đến SVM
Giả sử rằng các cặp dữ liệu của training set là ((mathbfx_1, y_1), (mathbfx_2, y_2), dots, (mathbfx_N, y_N)) cùng với vector (mathbfx_i in mathbbR^d) diễn đạt đầu vào của một điểm dữ liệu và (y_i) là nhãn của điểm tài liệu đó. (d) là số chiều của tài liệu và (N) là số điểm tài liệu. Giả sử rằng nhãn của mỗi điểm tài liệu được xác định bởi vì (y_i = 1) (class 1) hoặc (y_i = -1) (class 2) giống hệt như trong PLA.
Để giúp chúng ta dễ hình dung, bọn họ cùng xét ngôi trường vừa lòng trong không gian hai chiều dưới đây. Không gian hai phía nhằm các bạn dễ dàng tưởng tượng, những phnghiền toán thù hoàn toàn hoàn toàn có thể được tổng thể lên không khí nhiều chiều.

Giả sử rằng những điểm vuông xanh thuộc class 1, những điểm tròn đỏ ở trong class -1 với khía cạnh (mathbfw^Tmathbfx + b = w_1x_1 + w_2x_2 + b = 0) là mặt phân chia thân nhị classes (Hình 3). Nhiều hơn, class 1 nằm về phía dương, class -1 nằm về phía âm của mặt phân chia. Nếu trở lại, ta chỉ cần đổi vệt của (mathbfw) cùng (b). Crúc ý rằng họ phải đi tìm các thông số (mathbfw) và (b).
Ta quan tiền sát thấy một điểm quan trọng sau đây: cùng với cặp tài liệu ((mathbfx_n, y_n)) bất kỳ, khoảng cách tự điểm này tới phương diện phân loại là:
Điều này có thể dễ dàng nhận ra vày theo đưa sử sinh sống trên, (y_n) luôn cùng vệt với phía của (mathbfx_n). Từ đó suy ra (y_n) thuộc vết với ((mathbfw^Tmathbfx_n + b)), với tử số luôn là một số không âm.
Với mặt phần chia nhỏng bên trên, margin được tính là khoảng cách sớm nhất từ 1 điểm tới mặt kia (bất cứ điểm làm sao trong hai classes):< extmargin = min_n fracy_n(mathbfw^Tmathbfx_n + b)>
Bài toán tối ưu trong SVM đó là bài xích tân oán kiếm tìm (mathbfw) cùng (b) làm sao để cho margin này đạt giá trị bự nhất: <(mathbfw, b) = argmax_mathbfw, b left min_n fracy_n(mathbfw^Tmathbfx_n + b)_2 ight= argmax_mathbfw, bleft frac1 min_n y_n(mathbfw^Tmathbfx_n + b) ight ~~~ (1)>
Việc giải thẳng bài xích tân oán này sẽ tương đối phức tạp, nhưng các bạn sẽ thấy tất cả cách để đưa nó về bài toán thù đơn giản hơn.
Nhận xét đặc biệt độc nhất là nếu ta núm vector hệ số (mathbfw) vị (kmathbfw) với (b) bởi vì (kb) trong đó (k) là một trong hằng số dương thì phương diện phân loại ko thay đổi, tức khoảng cách tự từng điểm đến mặt phân loại không đổi, tức margin ko đổi. Dựa bên trên tính chất này, ta hoàn toàn có thể giả sử:
với phần lớn điểm ở ngay sát mặt phân loại nhất nlỗi Hình 4 dưới đây:

vì vậy, với mọi (n), ta có:
Vậy bài xích tân oán về tối ưu ((1)) có thể đem đến bài xích toán tối ưu có buộc ràng sau đây: <egineqnarray (mathbfw, b) &=& arg max_mathbfw, b frac1mathbfw extsubject to:~ &và y_n(mathbfw^Tmathbfx_n + b) geq 1, forall n = 1, 2, dots, N ~~~~(2)endeqnarray>
Bằng 1 biến đổi dễ dàng, ta rất có thể đưa bài xích toán thù này về bài bác tân oán dưới đây:<egineqnarray (mathbfw, b) &=& arg min_mathbfw, b frac12||mathbfw||_2^2 extsubject to:~ && 1 - y_n(mathbfw^Tmathbfx_n + b) leq 0, forall n = 1, 2, dots, N ~~~~ (3)endeqnarray>Tại trên đây, họ đã lấy nghịch đảo hàm phương châm, bình pmùi hương nó và để được một hàm khả vi, với nhân cùng với (frac12) nhằm biểu thức đạo hàm trông đẹp hẳn.
Quan gần kề quan lại trọng: Trong bài tân oán ((3)), hàm phương châm là 1 trong norm, bắt buộc là 1 trong hàm lồi. Các hàm bất đẳng thức ràng buộc là các hàm đường tính theo (mathbfw) với (b), nên chúng cũng chính là những hàm lồi. Vậy bài bác toán thù tối ưu ((3)) bao gồm hàm phương châm là lồi, cùng những hàm ràng buộc cũng là lồi, cho nên nó là một trong những bài bác toán lồi. ngoài ra, nó là 1 trong Quadratic Programming. Thậm chí, hàm kim chỉ nam là strictly convex bởi vì (||mathbfw||_2^2 = mathbfw^TmathbfImathbfw) và (mathbfI) là ma trận đơn vị - là 1 trong ma trận khẳng định dương. Từ phía trên có thể suy ra nghiệm cho SVM là duy nhất.
Đến đây thì bài xích toán thù này rất có thể giải được bằng các chính sách cung cấp tìm kiếm nghiệm đến Quadratic Programing, ví dụ CVXOPT.
Tuy nhiên, câu hỏi giải bài xích toán thù này trsinh hoạt cần phức tạp Khi số chiều (d) của không khí dữ liệu cùng số điểm dữ liệu (N) tăng lên cao.
Người ta thường giải bài bác toán đối ngẫu của bài bác toán thù này. Thứ đọng tuyệt nhất, bài bác toán thù đối ngẫu bao hàm đặc thù độc đáo rộng khiến nó được giải hiệu quả rộng. Thứ nhị, vào quy trình thiết kế bài bác tân oán đối ngẫu, fan ta thấy rằng SVM có thể được áp dụng cho những bài bác toán thù nhưng tài liệu không linearly separable, tức những đường phân chia chưa hẳn là 1 mặt phẳng nhưng có thể là những phương diện có hình thù phức tạp rộng.
Đến trên đây, bạn đọc có thể ban đầu hiểu vì sao tôi đề nghị viết 3 bài xích 16-18 trước khi viết bài xích này. Nếu bạn có nhu cầu hiểu sâu hơn về SVM, tôi khuyến khích phát âm Mục 3 tiếp sau đây. Nếu không, bạn cũng có thể quý phái Mục 4 giúp xem ví dụ về kiểu cách áp dụng SVM lúc lập trình sẵn. Xem thêm: Pick Up Lines Là Gì - 5 Cụm Từ Hay Dùng Để Tán Tỉnh
Xác định class cho một điểm tài liệu mới: Sau lúc tìm kiếm được khía cạnh phân làn (mathbfw^Tmathbfx + b = 0), class của bất kỳ một điểm nào sẽ được khẳng định dễ dàng và đơn giản bởi cách:
< extclass(mathbfx) = extsgn (mathbfw^Tmathbfx + b )>Trong đó hàm ( extsgn) là hàm xác minh lốt, thừa nhận quý giá 1 ví như đối số là ko âm và -1 nếu trở lại.
3. Bài toán thù đối ngẫu đến SVM
Nhắc lại rằng bài tân oán về tối ưu ((3)) là một trong bài xích toán lồi. Chúng ta biết rằng: trường hợp một bài toán thù lồi toại ý tiêu chuẩn chỉnh Slater thì svào duality vừa ý. Và nếu svào duality nhất trí thì nghiệm của bài xích toán thù đó là nghiệm của hệ ĐK KKT.
3.1. Kiểm tra tiêu chuẩn chỉnh Slater
Bước tiếp theo sau, bọn họ vẫn minh chứng bài bác toán thù buổi tối ưu ((3)) hợp ý điều kiện Slater. Điều khiếu nại Slater bảo rằng, nếu như mãi mãi (mathbfw, b) thoả mãn:<1 - y_n(mathbfw^Tmathbfx_n + b) Leftrightarrow 2 - y_n(2mathbfw_0^Tmathbfx_n + 2b_0) &leq& 0, ~~forall n = 1, 2, dots, N endeqnarray>
Vậy chỉ việc chọn (mathbfw_1 = 2mathbfw_0) cùng (b_1 = 2b_0), ta đã có: <1 - y_n(mathbfw_1^Tmathbfx_n + b_1) leq -1
3.2. Lagrangian của bài xích toán thù SVM
Lagrangian của bài xích toán ((3)) là:
với (lambda =
3.3. Hàm đối ngẫu Lagrange
Hàm đối ngẫu Lagrange được định nghĩa là:
Việc tra cứu giá trị nhỏ dại độc nhất của hàm này theo (mathbfw) cùng (b) hoàn toàn có thể đựợc thực hiện bằng cách giải hệ pmùi hương trình đạo hàm của (mathcalL(mathbfw, b, lambda)) theo (mathbfw) và (b) bởi 0:
<egineqnarrayfracpartial mathcalL(mathbfw, b, lambda)partial mathbfw &=& mathbfw - sum_n=1^N lambda_n y_n mathbfx_n = 0 Rightarrow mathbfw = sum_n=1^N lambda_n y_n mathbfx_n ~~~~~ (5)\fracpartial mathcalL(mathbfw, b, lambda)partial b &=& -sum_n=1^N lambda_ny_n = 0 ~~~~~~~~~~(6)endeqnarray>
Txuất xắc ((5)) với ((6)) vào ((4)) ta nhận được (g(lambda))(phần này tôi rút gọn gàng, coi như một bài bác tập nhỏ tuổi cho chính mình như thế nào mong muốn đọc sâu):
Đây là hàm số quan trọng đặc biệt nhất trong SVM, các các bạn sẽ thấy rõ rộng ngơi nghỉ bài xích sau.
Xét ma trận:
(Nếu khó khăn tin, bạn có thể viết ra để thân quen dần dần cùng với những biểu thức đại số tuyến đường tính.)
Đặt (mathbfK = mathbfV^TmathbfV), ta tất cả một quan liêu ngay cạnh quan tiền trọng: (mathbfK) là một ma trận nửa khẳng định dương. Thật vậy, với tất cả vector (lambda), ta có:
(Đây chính là khái niệm của ma trận nửa khẳng định dương.)
Vậy (g(lambda) = -frac12lambda^TmathbfKmathbflambda + mathbf1^Tlambda) là một trong hàm concave.
3.4. Bài tân oán đối ngẫu Lagrange
Từ kia, phối hợp hàm đối ngẫu Lagrange cùng những điều kiện ràng buộc của (lambda), ta sẽ nhận được bài tân oán đối ngẫu Lagrange:
< egineqnarray lambdomain authority &=và arg max_lambda g(lambda) extsubject to:~ &và lambda succeq 0~~~~~~~~~~ (9) &và sum_n=1^N lambda_ny_n = 0 endeqnarray > Ràng buộc trang bị hai được đem từ bỏ ((6)).
Đây là một trong bài toán thù lồi bởi ta đang đi tìm kiếm giá trị lớn số 1 của một hàm kim chỉ nam là concave trên một polyhedron.
Bài tân oán này cũng rất được là 1 Quadratic Programming cùng cũng hoàn toàn có thể được giải bằng các thỏng viện nlỗi CVXOPT.
Trong bài tân oán đối ngẫu này, số tyêu thích số (parameters) bắt buộc tìm kiếm là (N), là chiều của (lambda), tức số điểm dữ liệu. Trong lúc đó, với bài toán gốc ((3)), số tmê man số buộc phải search là (d + 1), là tổng cộng chiều của (mathbfw) cùng (b), tức số chiều của mỗi điểm tài liệu cùng với một. Trong tương đối nhiều ngôi trường đúng theo, số điểm dữ liệu dành được trong training set to hơn số chiều dữ liệu rất nhiều. Nếu giải trực tiếp bằng các giải pháp giải Quadratic Programming, có thể bài toán thù đối ngẫu còn phức tạp rộng (tốn thời gian hơn) so với bài xích toàn gốc. Tuy nhiên, điều hấp dẫn của bài bác toán đối ngẫu này đến từ phần Kernel Support Vector Machine (Kernel SVM), tức cho những bài bác tân oán mà lại tài liệu không hẳn là linearly separable hoặc sát linearly separable. Phần Kernel SVM sẽ tiến hành tôi trình bày sau 1 hoặc 2 bài nữa. Hình như, dựa vào đặc điểm quan trọng đặc biệt của hệ điều kiện KKT mà SVM rất có thể được giải bởi nhiều phương thức tác dụng rộng.
3.5. Điều kiện KKT
Quay trở về bài xích tân oán, vì chưng đấy là một bài bác tân oán lồi với svào duality bằng lòng, nghiệm của bài xích tân oán đang hài lòng hệ ĐK KKT dưới đây với biến chuyển số là (mathbfw, b) với (lambda): <egineqnarray1 - y_n(mathbfw^Tmathbfx_n + b) &leq& 0, ~ forall n = 1, 2, dots, N ~~~~(10) \lambda_n &geqvà 0, ~forall n = 1, 2, dots, N \lambda_n (1 - y_n(mathbfw^Tmathbfx_n + b)) &=& 0, ~forall n = 1, 2, dots, N ~~~~(11) mathbfw &=& sum_n=1^N lambda_n y_n mathbfx_n ~~~~~~~~~~~(12)\ sum_n=1^N lambda_ny_n &=và 0 ~~~~~~~~~~~~~~~~~~~(13)endeqnarray>
Trong gần như điều kiện bên trên, ĐK ((11)) là độc đáo độc nhất vô nhị. Từ kia ta rất có thể suy ra tức thì, với (n) ngẫu nhiên, hoặc (lambda_n =0) hoặc (1 - y_n(mathbfw^Tmathbfx_n + b) = 0). Trường hợp thiết bị nhị chủ yếu là:
Những điểm thoả nguyện ((14)) chính là đầy đủ điểm nằm ngay gần phương diện phân loại tốt nhất, là rất nhiều điểm được khoanh tròn trong Hình 4 bên trên. Hai đường thẳng (mathbfw^Tmathbfx_n + b = pm 1) tựa lên các điểm chấp thuận ((14)). Vậy bắt buộc các điểm (vectors) tán thành ((14)) có cách gọi khác là những Support Vectors. Và tự đó, cái brand name Support Vector Machine thành lập.
Một quan liêu ngay cạnh không giống, số lượng đầy đủ điểm toại nguyện ((14)) thường chỉ chiếm số lượng rất bé dại trong các (N) điểm. Chỉ đề xuất dựa trên phần đông support vectors này, chúng ta trọn vẹn có thể xác định được khía cạnh ngăn cách nên tra cứu. Nhìn theo một phương pháp khác, phần nhiều những (lambda_n) bằng 0. Vậy là mặc dù vector (lambda in mathbbR^N) gồm số chiều có thể rất to lớn, con số những bộ phận không giống 0 của nó siêu ít. Nói biện pháp không giống, vector (lambda) là một trong những sparse vector. Support Vector Machine do vậy còn được xếp vào Sparse Models. Các Sparse Models thường sẽ có bí quyết giải công dụng (nhanh) rộng các quy mô tựa như với nghiệm là dense (số đông không giống 0). Đây chính là nguyên nhân vật dụng nhì của câu hỏi bài xích toán đối ngẫu SVM được quan tâm nhiều hơn nữa là bài toán thù gốc.
Tiếp tục so sánh, với mọi bài toán thù bao gồm số điểm dữ liệu (N) nhỏ, ta có thể giải hệ ĐK KKT bên trên bằng cách xét những trường đúng theo (lambda_n = 0) hoặc (lambda_n eq 0). Tổng số trường hòa hợp bắt buộc xét là (2^N). Với (N > 50) (thường là nlỗi thế), đấy là một con số không nhỏ, giải bằng phương pháp này sẽ không còn khả thi. Tôi sẽ không còn đi sâu tiếp vào Việc giải hệ KKT ra sao, trong phần tiếp theo họ đang giải bài xích toán tối ưu ((9)) bởi CVXOPT cùng bởi tlỗi viện sklearn.
Sau Lúc tìm được (lambda) từ bỏ bài toán ((9)), ta có thể suy ra được (mathbfw) dựa vào ((12)) với (b) phụ thuộc vào ((11)) và ((13)). Rõ ràng ta chỉ cần quan tâm cho tới (lambda_n eq 0).
gọi tập hợp (mathcalS = : lambda_n eq 0\) cùng (N_mathcalS) là số thành phần của tập (mathcalS). Với mỗi (n in mathcalS), ta có:<1 = y_n(mathbfw^Tmathbfx_n + b) Leftrightarrow b + mathbfw^Tmathbfx_n = y_n >Mặc dù từ có một cặp ((mathbfx_n, y_n)), ta có thể suy ra ngay được (b) ví như vẫn biết (mathbfw), một phiên phiên bản khác nhằm tính (b) thường xuyên được thực hiện và được biết bình ổn rộng trong tính toán (numerically more stable) là:
tức vừa đủ cộng của phần nhiều cách tính (b).
Trước đó, (mathbfw) đang được xem bằng:
Quan liền kề quan tiền trọng: Để xác minh một điểm (mathbfx) mới nằm trong vào class như thế nào, ta đề xuất xác minh vết của biểu thức:
4. Lập trình kiếm tìm nghiệm đến SVM
Trong mục này, tôi sẽ trình diễn nhì phương pháp tính nghiệm mang đến SVM. Cách trước tiên dựa trên bài xích toán ((9)) cùng những cách làm ((15)) với ((16)). Cách sản phẩm hai thực hiện trực tiếp thư viện sklearn. Cách trước tiên chỉ nên để minh chứng nãy tiếng tôi không viết nhảm, bằng phương pháp minch hoạ kết quả kiếm được cùng đối chiếu với nghiệm tìm được bằng cách vật dụng nhì.
4.1. Tìm nghiệm theo công thức
Trước hết họ điện thoại tư vấn các modules nên sử dụng và tạo ra dữ liệu đưa (dữ liệu này chính là dữ liệu tôi cần sử dụng trong số hình phía trên nên chúng ta biết có lẽ nhì classes là linearly separable):