Quy trình học máy

Một phần của tài liệu (LUẬN văn THẠC sĩ) nâng cao hiệu quả phát hiện mã độc sử dụng các kỹ thuật học máy002 (Trang 25)

Quy trình học máy cơ bản được chia làm các giai đoạn sau:

 Thu thập dữ liệu (gathering data): Quá trình thu thập dữ liệu phụ thuộc vào loại dự án mà chúng ta mong muốn xây dựng, ví dụ nếu chúng ta muốn xây dựng dự án học máy mà sử dụng dữ liệu thực để chúng ta có thể xây dựng một hệ thống IoT từ các dữ liệu cảm biến khác nhau. Dữ liệu chúng ta có thể thu thập từ các nguồn dữ liệu khác nhau như một tập tin, cơ sở dữ liệu, cảm biến ...

 Tiền xử lý dữ liệu (data pre-processing): Tiền xử lý dữ liệu là một trong những giai đoạn quan trọng trong học máy, nó giúp xây dựng mô hình học máy chính xác. Tiền xử lý dữ liệu là một quá trình làm sạch dữ liệu thô, dữ liệu được thu thập từ nhiều nguồn trong thế giới thực và được chuyển thành một tập dữ liệu sạch. Dữ liệu thô ban đầu có một số đặc điểm như dữ liệu bị thiếu sót, không nhất quán, nhiễu vì vậy dữ liệu này phải được xử lý trước khi đưa vào học máy.

 Xây dựng mô hình phù hợp cho loại dữ liệu (researching model): Mục tiêu chính của chúng ta là xây dựng mô hình thực hiện tốt nhất dựa trên một số thuật toán phân loại và phân lớp.

 Huấn luyện và kiểm thử mô hình trên dữ liệu (training and testing model): để huấn luyện một mô hình, ban đầu chúng ta chia mô hình thành 03 giai đoạn bao gồm: dữ liệu huấn luyện (training data), dữ liệu xác nhận (validation data) và dữ liệu kiểm thử (testing data). Để huấn luyện bộ phân lớp ta sử dụng tập hợp dữ liệu huấn luyện (training data set), để tinh chỉnh các tham số ta sử dụng tập hợp xác nhận (validation set) và sau đó kiểm tra hiệu suất của bộ phân loại chưa biết sử dụng tập hợp dữ liệu kiểm thử (test data set). Một lưu ý quan trọng là trong quá trình huấn luyện bộ phân lớp là dữ liệu kiểm thử không được sử dụng để huấn luyện.

 Đánh giá (evaluation): Đánh giá mô hình là một phần quan trọng trong quy trình phát triển mô hình, nó giúp tìm ra mô hình tốt nhất để đại diện

cho dữ liệu của chúng ta và mô hình được chọn sẽ hoạt động tốt như thế nào trong tương lai.

2.2. Phân loại các thuật toán học máy [2]

Có hai cách phổ biến để phân loại các thuật toán học máy. Một là dựa vào phương thức học (learning style) và hai là dựa trên chức năng (function) của thuật toán. Theo phương phức học thì các thuật toán học máy được chia làm 04 loại gồm: học có giám sát (Supervise learning), học không giám sát (Unsupervised learning), học bán giám sát (Semi-supervised learning) và học tăng cường (Reinforcement Learning). Chi tiết các loại học máy theo phương thức học như sau:

 Học có giám sát: Là thuật toán dự đoán đầu ra (outcome) của một dữ liệu mới (new input) dựa trên các cặp (input, output) đã biết từ trước. Các cặp dữ liệu này còn được gọi là “dữ liệu, nhãn”, tức (data, label). Học có giám sát là loại phổ biến nhất trong các thuật toán học máy. Bài toán học có giám sát còn được chia nhỏ thành hai loại chính như sau:

 Phân loại (Classification): Một bài toán được gọi là phân loại nếu các nhãn của dữ liệu đầu vào (input data) được chia thành một số hữu hạn nhóm: Ví dụ bài toán xác định xem một email có phải spam hay không?

 Hồi quy (Regression): Nếu nhãn (label) không được chia thành các loại mà là một giá trị thực cụ thể. Ví dụ, một căn nhà rộng x , có y phòng ngủ và cách trung tâm thành phố z km sẽ có giá là bao nhiêu?

 Học không giám sát: trong bài toán này, chúng ta không biết được nhãn hay outcome mà chỉ có dữ liệu đầu vào. Thuật toán học không giám sát sẽ dựa vào cấu trúc của dữ liệu để thực hiện một công việc nào đó, ví dụ như phân nhóm (clustering) hoặc giảm số chiều của dữ liệu (dimension reduction) để thuận tiện trong việc lưu trữ và tính toán. Bài toán học không giám sát được tiếp tục chia nhỏ thành hai loại sau:

 Phân nhóm (clustering): Một bài toán phân nhóm toàn bộ dữ liệu Y thành các nhóm nhỏ dựa trên sự liên quan giữa các dữ liệu trong mỗi nhóm. Ví dụ, phân nhóm khách hàng dựa vào hành vi mua hàng

 Kết hợp (association): là bài toán khi chúng ta muốn khám phá ra một quy luật dựa trên nhiều dữ liệu cho trước. Ví dụ, những khách hàng nữ mua quần áo thường có xu hướng mua thêm son môi; những khách hàng mua bóng đá thường mua thêm bảo hộ ống quyển và tất.

 Học bán giám sát (Semi-supervised learning): Các bài toán khi chúng ta có một lượng lớn dữ liệu Z nhưng chỉ một trong chúng được gán nhãn. Những bài toán thuộc nhóm này nằm giữa hai nhóm được nêu trên. Ví dụ, chỉ một phần các bức ảnh (ảnh về người, động vật, thực vật) được gán nhán và phần lớn các bức ảnh khác chưa được gán nhãn trên internet.

Phân loại dựa trên chức năng: Cách phân loại thứ hai dựa trên chức năng của các thuật toán. Ví dụ các thuật toán hồi quy (Linear regression, Logistic Regression, Stepwise Regresstion), các thuật toán phân loại (SVM, kernel SVM, Linear Classifier), các thuật toán phân cụm (k-Means clustering, k-Medians, EM)...

2.3. Thuật toán One-class SVM.

2.3.1. Giới thiệu thuật toán One-class SVM

Theo truyền thống nhiều vấn đề phân loại cố gắng giải quyết tình huống hai hoặc phân loại nhiều lớp và mục tiêu của ứng dụng học máy là phân biệt dữ liệu kiểm thử giữa một số lớp sử dụng dữ liệu huấn luyện. Nhưng điều gì sẽ xảy ra nếu bạn chỉ có dữ liệu của một lớp và mục tiêu là kiểm tra dữ liệu mới và tìm hiểu xem nó có giống hay không giống với dữ liệu huấn luyện. Một phương pháp cho nhiệm vụ này đã trở nên phổ biến là máy véc tơ hỗ trợ một lớp (One-class Support Vector Machine). Ví dụ hãy tưởng tượng một loại thiết lập của nhà máy với các máy sản xuất rất lớn dưới sự giám sát của một số hệ thống tiên tiến và nhiệm vụ của hệ thống giám sát

là xác định khi có sự cố xảy ra, chất lượng của các sản phẩm có dưới chuẩn chất lượng không, các máy có tạo ra rung động gì lạ không hoặc một cái gì đó làm nhiệt độ tăng lên không? Việc thu thập dữ liệu huấn luyện về các tình huống tương đối dễ dàng do nó chỉ là trạng thái hoạt động bình thường nhưng mật khác dữ liệu huấn luyện thu thập từ các trạng thái bị lỗi là khá tốn kém và đôi khi là không thể thực hiện được. Để đối phó với vấn dề này, các giải pháp phân loại một lớp (one-class) được giới thiệu bằng cách chỉ cung cấp dữ liệu huấn luyện bình thường và thuật toán tạo ra một mô hình cho dữ liệu này. Nếu dữ liệu được thu được quá khác nhau cùng với một số phép đo thì nó được gán nhãn ngoài lớp từ mô hình này.

Trong phạm vi của nghiên cứu này chúng tôi sẽ trình bày 02 cách tiếp cận về thuật toán One-class SVM, một cách tiếp cận theo tác giả Schölkopf và một cách tiếp cận theo các tác giả Tax và Duin. Trước khi đi vào chi tiết thuật toán One-Class SVM, chúng ta tìm hiểu thuật toán máy véc tơ hỗ trợ (SVM – Support Vector Machine).

2.3.2. Giới thiệu thuật toán SVM.

SVM (support vector machine) là một khái niệm trong thống kê và khoa học máy tính cho một tập hợp các phương pháp học có giám sát liên quan đến nhau để phân loại và phân tích hồi quy. SVM dạng chuẩn nhận dữ liệu đầu vào và phân loại chúng vào hai lớp khác nhau. Do đó SVM là một thuật toán phân loại nhị phân. Với một bộ các ví dụ huấn luyện thuộc hai thể loại cho trước, thuật toán huấn luyện SVM xây dựng một mô hình SVM để phân loại các ví dụ khác vào hai thể loại đó. Một mô hình SVM là một cách biểu diễn các điểm trong không gian và lựa chọn ranh giới giữa hai thể loại sao cho khoảng cách từ các ví dụ huấn luyện tới ranh giới là xa nhất có thể. Các ví dụ mới cũng được biểu diễn trong cùng một không gian và được thuật toán dự đoán thuộc một trong hai thể loại tùy vào ví dụ đó nằm ở phía nào của ranh giới.

SVM xây dựng một siêu phẳng hoặc một tập hợp các siêu phẳng trong một không gian nhiều chiều hoặc vô hạn chiều, có thể được sử dụng cho phân loại, hồi quy, hoặc các nhiệm vụ khác. Một cách trực giác, để phân loại tốt nhất thì các siêu phẳng nằm ở càng xa các điểm dữ liệu của tất cả các lớp (gọi là hàm lề) càng tốt, vì nói chung lề càng lớn thì sai số tổng quát hóa của thuật toán phân loại càng bé.

Trong nhiều trường hợp, không thể phân chia các lớp dữ liệu một cách tuyến tính trong một không gian ban đầu được dùng để mô tả một vấn đề. Vì vậy, nhiều khi cần phải ánh xạ các điểm dữ liệu trong không gian ban đầu vào một không gian mới nhiều chiều hơn, để việc phân tách chúng trở nên dễ dàng hơn trong không gian mới. Để việc tính toán được hiệu quả, ánh xạ sử dụng trong thuật toán SVM chỉ đòi hỏi tích vô hướng của các vector dữ liệu trong không gian mới có thể được tính dễ dàng từ các tọa độ trong không gian cũ. Tích vô hướng này được xác định bằng một hàm hạt nhân K(x,y) phù hợp. [1] Một siêu phẳng trong không gian mới được định nghĩa là tập hợp các điểm có tích vô hướng với một vectơ cố định trong không gian đó là một hằng số. Vector xác định một siêu phẳng sử dụng trong SVM là một tổ hợp tuyến tính của các vector dữ liệu luyện tập trong không gian mới với các hệ số αi. Với siêu phẳng lựa chọn như trên, các điểm x trong không gian đặc trưng được ánh xạ vào một siêu mặt phẳng là các điểm thỏa mãn: Σi αi K(xi,x) = hằng số. Ghi chú rằng nếu K(x,y) nhận giá trị ngày càng nhỏ khi y xa dần khỏi x thì mỗi số hạng của tổng trên được dùng để đo độ tương tự giữa x với điểm xi tương ứng trong dữ liệu luyện tập. Như vậy, tác dụng của tổng trên chính là so sánh khoảng cách giữa điểm cần dự đoán với các điểm dữ liệu đã biết. Lưu ý là tập hợp các điểm x được ánh xạ vào một siêu phẳng có thể có độ phức tạp tùy ý trong không gian ban đầu, nên có thể phân tách các tập hợp thậm chí không lồi trong không gian ban đầu.

Phân loại thống kê là một nhiệm vụ phổ biến trong học máy. Trong mô hình học có giám sát, thuật toán được cho trước một số điểm dữ liệu cùng với nhãn của chúng thuộc một trong hai lớp cho trước. Mục tiêu của thuật toán là

xác định xem một điểm dữ liệu mới sẽ được thuộc về lớp nào. Mỗi điểm dữ liệu được biểu diễn dưới dạng một vector p chiều và ta muốn biết liệu có thể chia tách hai lớp dữ liệu bằng một siêu phẳng p − 1 chiều, đây gọi là phân loại tuyến tính. Có nhiều siêu phẳng có thể phân loại được dữ liệu. Một lựa chọn hợp lý trong chúng là siêu phẳng có lề lớn nhất giữa hai lớp.

2.3.2.1. Xây dựng bài toán SVM

Giả sử rằng các cặp dữ liệu của training set là ( ), ( ),.., ( ) với vector 𝞊 thể hiện đầu vào của một

điểm dữ liệu và 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ủa mỗi điểm dữ liệu được xác định bởi = 1 (lớp 1) hoặc = -1 (lớp 2). Để dễ hình dung, chúng ta cùng xét trường hợp trong không gian hai chiều dưới đây. Không gian hai chiều để dễ hình dung, các phép toán hoàn toàn có thể được tổng quát lên không gian nhiều chiều.

Hình 2.2: phân tích bài toán SVM

Giả sử rằng các điểm vuông xanh thuộc lớp 1, các điểm tròn đỏ thuộc lớp -1 và mặt ( ) là mặt phân chia giữa hai lớp (hình 2.2). Hơn nữa, lớp 1 nằm về phía dương, lớp -1 nằm về phía âm của mặt phân chia. Nếu ngược lại, ta chỉ cần đổi dấu của w và b. Chú ý rằng chúng ta cần đi tìm các hệ số w và b. Ta quan sát thấy một điểm quan trọng sau đây: với cặp dữ liệu ( ) bất kỳ, khoảng cách từ điểm đó tới mặt phân chia là:

Điều này có thể dễ nhận thấy vì theo giả sử ở trên, ynluôn cùng dấu với phía của . Từ đó suy ra yn cùng dấu với ( xn + b) và tử số luôn là 1 số không âm. Với mặt phần chia như trên, giới hạ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 hai lớp):

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:

Nhận xét quan trọng nhất là nếu ta thay vector hệ số w bởi kw và b bởi kb trong đó k là một hằng số dương thì mặt phân chia không thay đổi, tức khoảng cách từ từng điểm đến mặt phân chia không đổi, tức margin không đổi. Dựa trên tính chất này, ta có thể giả sử:

( + b) = 1

Với những điểm nằm gần mặt phân chia nhất như hình 2.3 dưới đây:

Hình 2.3: các điểm gần mặt phân cách nhất của hai class được khoanh tròn

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:

Bằng một biến đổi đơn giản, ta có thể đưa bài toán này về bài toán dưới đây:

Ở đây, chúng ta đã lấy nghịch đảo hàm mục tiêu, bình phương nó để được một hàm khả vi và nhân với 1/2 để biểu thức đạo hàm đẹp hơn. Xác định lớp (class) cho một điểm dữ liệu mới: sau khi tìm được mặt phân cách

, class của bất kỳ một điểm nào sẽ được xác định đơn giản bằng cách:

class(x) = sgn( x + 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.

2.3.3. Thuật toán One-class SVM theo tác giả Schölkopf

Về cơ bản, thuật toán One-class SVM theo tác giả Schölkopf thực hiện tách tất cả các điểm dữ liệu khỏi điểm gốc (trong không gian đặc trưng F) và tối đa khoảng cách từ siêu phẳng này đến điểm gốc. Điều này dẫn đến một hàm nhị phân thu thập các vùng trong không gian đầu vào nơi mật độ xác suất của dữ liệu tồn tại vì vậy hàm này sẽ trả lại giá trị +1 trong một vùng bé (vùng thu thập các điểm dữ liệu huấn luyện) và -1 đối với các vùng khác.

Chúng ta xem xét dữ liệu huấn luyện ... với l N là các mẫu và X là một số tập hợp, để đơn giản chúng ta nghĩ nó như một tập hợp con , đặt ɸ là một chuyển đổi đặc trưng X -> F, ví dụ một chuyển đổi vào F không gian sản phẩm điểm sao cho có thể tính toán sản phẩm điểm trong hình ảnh của ɸ có thể được tính toán bằng hàm nhân đơn giản:

Chúng ta phát triển một thuật toán mà trả về môt hàm f lấy giá trị +1 trong một vùng nhỏ chứa đa số các điểm dữ liệu và -1 cho vùng khác. Chiến lược của chúng ta là ánh xạ dữ liệu ban đầu vào không gian đặc trưng tương ứng với hàm nhân và tách chúng khỏi không gian ban đầu với khoảng cách tối đa. Đối với một điểm X mới, giá trị f(x) được xác định bằng việc nào của siêu phẳng mà nó thuộc về trong không gian đặc trưng.

2.3.4. Thuật toán One-class SVM theo tác giả Tax và Duin

Phương pháp mô tả dữ liệu véc tơ hỗ trợ theo các tác giả Tax và Duin tạo ra một hình cầu thay cho cách tiếp cận mặt phẳng. Thuật toán thu được một ranh giới hình cầu trong không gian đặc trưng bao quanh dữ liệu. Khối lượng của siêu cầu này được giảm thiểu để giảm tác động của việc kết hợp các ngoại lệ trong giải pháp này.

Siêu cầu được tạo ra được đặc trưng bởi một tâm a và một bán kính R > 0, là khoảng cách từ tâm đến bất kỳ véc tơ hỗ trợ nào trên ranh giới. Tâm a là

Một phần của tài liệu (LUẬN văn THẠC sĩ) nâng cao hiệu quả phát hiện mã độc sử dụng các kỹ thuật học máy002 (Trang 25)