Thuật tốn NạveBayes

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu một số kỹ thuật phát hiện trang web giả mạo và ứng dụng (Trang 39)

Nạve Bayes (NB) là phƣơng pháp phân loại dựa vào xác suất đƣợc sử dụng rộng rãi trong lĩnh vực máy học [Mitchell, 1996] [Joachims, 1997] [Jason, 2001], đƣợc sử dụng lần đầu tiên trong lĩnh vực phân loại bởi Maron vào năm 1961 [Maron, 1961] sau đĩ trở nên phổ biến dùng trong nhiều lĩnh vực nhƣ trong các cơng cụ tìm kiếm [Rijsbergen et al, 1970], các bộ lọc email [Sahami et al, 1998]…

Thuật tốn Nạve Bayes dựa trên định lý Bayes đƣợc phát biểu nhƣ sau:

( | ) ( ) ( )

( | ) ( ) ( )

Áp dụng trong bài tốn phân loại, các dữ kiện gồm cĩ:

D: tập dữ liệu huấn luyện đã đƣợc vector hĩa dƣới dạng ⃗ ( )

Ci: phân lớp i, với i = {1,2,…,m}.

Các thuộc tính độc lập điều kiện đơi một với nhau. Theo định lý Bayes:

( | ) ( | ) ( ) ( )

Theo tính chất độc lập điều kiện:

( | ) ∏ ( | )

Trong đĩ:

( | ) là xác suất thuộc phân lớp i khi biết trƣớc mẫu X.

( ) xác suất là phân lớp i.

( | ) xác suất thuộc tính thứ k mang giá trị xk khi đã biết X thuộc phân

lớp i.

Các bƣớc thực hiện thuật tốn Nạve Bayes:

Bƣớc 1: Huấn luyện Nạve Bayes (dựa vào tập dữ liệu), tính ( ) và

( | )

Bƣớc 2: Phân lớp ( ), ta cần tính xác suất thuộc từng

phân lớp khi đã biết trƣớc Xnew. Xnew đƣợc gán vào lớp cĩ xác suất lớn nhất

theo cơng thức ( ( ) ∏ ( | ) ) 2.3. Thuật tốn so khớp.

Cĩ nhiều cách để phân loại các kỹ thuật đối sánh chuỗi. Căn cứ vào số lƣợng mẫu sử dụng, các kỹ thuật đối sánh chuỗi cĩ thể đƣợc chia thành 3 loại:

đối sánh sử dụng đơn mẫu, đối sánh sử dụng đa mẫu với số lƣợng cĩ hạn, đối sánh sử dụng đa mẫu với số lƣợng vơ hạn.

Các kỹ thuật đối sánh chuỗi sử dụng đơn mẫu chỉ cho phép một mẫu trong mỗi phép đối sánh.

Một số kỹ thuật đối sánh chuỗi sử dụng đơn mẫu là: thuật tốn sơ khai (Nạve string matching), thuật tốn Knuth – Morris – Pratt, thuật tốn Boyer – Moore – Horspool, thuật tốn Rabin – Karp,…

Các kỹ thuật đối sánh chuỗi sử dụng đa mẫu với số lƣợng hữu hạn cho phép một số mẫu nhất định trong mỗi phép đối sánh.

Một số kỹ thuật đối sánh chuỗi sử dụng đa mẫu với số lƣợng cĩ hạn là: thuật tốn Commentz – Walter, thuật tốn Aho – Corasick,…

Các kỹ thuật đối sánh chuỗi sử dụng đa mẫu với số lƣợng vơ hạn cho phép khơng hạn chế số mẫu nhất định trong mỗi phép đối sánh.

Dĩ nhiên, các mẫu khơng đƣợc liệt kê cụ thể trong trƣờng hợp này. Chúng thƣờng đƣợc biểu diễn bởi cấu trúc thơng thƣờng hoặc một biểu thức thơng thƣờng.

Ngồi cách phân loại trên cịn cĩ các cách phân loại khác nhƣ: Kỹ thuật đối sánh chuỗi chính xác và Kỹ thuật đối sánh chuỗi gần đúng; Kỹ thuật đối sánh chuỗi cĩ tiền xử lý dữ liệu và Kỹ thuật xử lý chuỗi khơng cĩ tiền xử lý dữ liệu; Kỹ thuật xử lý chuỗi từ trái qua phải và Kỹ thuật xử lý chuỗi từ phải qua trái,…

2.3.1. Thuật tốn so khớp chuỗi sơ khai

2.3.1.1.Giới thiệu

Cách tiếp cận thuật tốn sơ khai [11] chỉ đơn giản là thực hiện tất cả các

khả năng của mẫu P[1…m] trong văn bản T[1…n].

Cụ thể là chúng ta sẽ cố gắng dịch s = 0,1,…, n-m, lần liên tục và đối với mỗi vịng dịch s, so sánh T[s+1…s+m] và P[1…m].

2.3.1.2. Tiền xử lý dữ liệu

Thuật tốn đối sánh chuỗi sơ khai khơng cần bƣớc tiền xử lý dữ liệu. Nĩ thực hiện đối sánh trực tiếp trên dữ liệu thơ của mẫu P và văn bản T.

2.3.1.3. Thuật tốn

Kỹ thuật đối sánh sơ khai cĩ thể đƣợc giải thích bằng đồ họa nhƣ là một sự trƣợt của một mẫu P[1…m] trên một văn bản T[1…n] và ghi nhận đối với sự dịch chuyển mà tất cả các kí tự trong mẫu khớp với các ký tự tƣơng ứng trong văn bản.

Thuật tốn sơ khai đƣợc trình bày nhƣ sau:

Nạve-String-Matching(T,P) [11] Đầu vào:

Chuỗi văn bản T độ dài n. Chuỗi kí tự P độ dài m.

Đầu ra:

Biến kiểu nguyên (vị trí xuất hiện của P trong T).

Định nghĩa biến: Biến nguyên m  0. Biến nguyên n  0. Mảng nguyên T, P. n  length[T] m  length[P] Từ s = 0 đến s = n-m

Thực hiện: Nếu P[1…m] = T[s+1…s+m] Thì “Mẫu xuất hiện tại độ dịch s” Cài đặt thuật tốn:

Nạve- String – Matching(T,P)

n length[T] mlength[P] For s0 to (n-m) do j1 While j m and T[s+j] = P[j] do jj+1 If j>m then

Return valid shift s

2.3.2. Thuật tốn Rabin – Karp

2.3.2.1. Giới thiệu

Thuật tốn Rabin – Karp là thuật tốn đối sánh chuỗi đƣợc tạo bởi Michael O.Rabin và Richard M.Karp vào năm 1987 và nĩ sử dụng hàm băm để tìm kiếm bất kì từ mẫu nào xuất hiện trong văn bản thay vì việc kiểm tra trực tiếp các kí tự trong mẫu.

Một ứng dụng thực tế của Rabin Karp chính là sự phát hiện đạo văn. Với nguồn dữ liệu, Rabin Karp cĩ thể nhanh chĩng tìm kiếm thơng qua các câu từ trong nguồn dữ liệu, bỏ qua các chi tiết nhƣ dấu châm cấu hoặc các trƣờng hợp khác. Bởi vì sự phong phú của các chuỗi tìm kiếm, thuật tốn tìm kiếm chuỗi là khơng thực tế.

2.3.2.2. Tiền xử lý

Thuật tốn thực hiện băm chuỗi kết hợp để đối sánh.

Để đạt đƣợc hiệu quả tốt cho bài tốn đối sánh, chức năng của hàm băm nên cĩ các thuộc tính sau:

Hiệu quả tính tốn.

Phân biệt cao giữa các chuỗi.

Hash(y[j+1 … j+m]) phải dễ dàng tính tốn đƣợc từ hash(y[j… j+m]) và y[j+m]:

Hash(y[j+1…j+m]) = rehash(y[j], y[j+m], hash(y[j… j+m-1])).

Đối với một từ w cĩ độ dài m, hàm hash(w) đƣợc định nghĩa nhƣ sau:

Hash(w[0…m-1]) = (w[0]* 2m-1

+ w[1]*2m-2 +…+w[m-1]*20)mod q (với q là

một số lớn).

Do đĩ, rehash(a,b,h) = ((h-a*2m-1)*2+b) mod q.

Pha tiền xử lý dữ liệu của thuật tốn Karp – Rabin chính là việc tính tốn hàm hash(x).

Nĩ cĩ thể đƣợc thực hiện trong một hằng số khơng gian và O(m) thời gian.

2.3.2.3. Thuật tốn

Trong suốt quá trình thực hiện pha tìm kiếm, thuật tốn cần thực hiện

trùng khớp đƣợc tìm thấy, thuật tốn cần thiết để kiểm tra sự giống nhau giữa x = y[j…j+m-1] kí tự liên tục.

Cấu trúc thuật tốn thể hiện nhƣ sau:

RabinKarp(string T[1…n], P[1…m]) Đầu vào:

Chuỗi văn bản T. Chuỗi mẫu P.

Đầu ra:

Số nguyên, vị trí xuất hiện mẫu.

Định nghĩa các biến: Số nguyên n  0. Số nguyên m  0. n = length[T]. m = length[P]. Hsub:= hash(P[1…m]); For i từ 1 đến n-m+1 If hs = hsub If s[i…i+m-1] = sub Return i Hs: = hash(T[i+1…i+m]) Return not found

2.3.3.Thuật tốn Boyer Moore Horspool

2.3.3.1. Giới thiệu

Thuật tốn Boyer Moore Horspool [5] đƣợc cơng bố bởi R.Nigel

Horspool. Thuật tốn dựa trên nền thuật tốn Boyer – Moore nhƣng lại thực hiện thuật tốn từ trái qua phải, đạt hiệu quả cao hơn đối với thuật tốn Boyer – Moore.

2.3.3.2. Tiền xử lý

Bảng bmBC chính là sự dịch tƣơng ứng với kí tự bên phải cuối cùng của sự đối sánh ngay phía trƣớc.

P : GCAGAGAG

A A C G *

bmBC[] 1 6 2 8

Cách tính tốn bảng bmBC:

Cách tính tốn bắt đầu từ kí tự cuối cùng của mẫu P và di chuyển về phía kí tự đầu tiên. Mỗi lần di chuyển sang trái, nếu gặp kí tự nào thì thêm kí tự và khoảng cách từ kí tự đĩ tới kí tự ngồi cùng bên phải. Tất cả các kí tự khác mà khơng xuất hiện trong mẫu thì đƣợc gán giá trị là chiều dài của chuỗi tìm kiếm.

Thuật tốn của tiền xử lý: Đầu vào :

Chuỗi kí tự mẫu P.

Đầu ra:

Mảng bmBC chứa vị trí dịch của các kí tự tƣơng ứng trong P.

Định nghĩa các biến: Biến nguyên m 0. m  length [P] for i = 0 to 255 bmBC[i] = m for i = 0 to ( m-1) bmBC[x[i]] = m-i-1 Thuật tốn

Cấu trúc thuật tốn đƣợc thể hiện nhƣ sau:

BMH-String-Matching(T,P) [5] Đầu vào:

Chuỗi văn bản T Chuỗi mẫu P

Đầu ra: Kiểu biến nguyên (vị trí xuất hiện của P trong T).

Định nghĩa các biến:

Biến nguyên m  0.

Mảng nguyên T,P. prebmBC ()

pos = 0

while (pos <= n-m-1) do j  m-1

while (j > 0 và tj+pos = pj )do j j-1

if(j = 0) return (pos + 1) j  j + bmbc[Tpos+m]

end of while

2.3.4. DOM Tree

Hƣớng tiếp cận để phát hiện trang web giả mạo bằng cách kiểm tra xem “hình dáng” hay cấu trúc cĩ giống nhau khơng. Nếu giống thì sẽ sử dụng thêm một số kỹ thuật khác để làm rõ các chi tiết kỹ thuật để phát hiện đĩ là trang web giả mạo hay trang web hợp lệ.

DOM là tên gọi tắt của Document Object Model (Mơ hình đối tƣợng tài liệu) – là một chuẩn đƣợc định nghĩa bởi W3C dùng để truy xuất và thao tác trên các tài liệu cĩ cấu trúc dạng HTML và XML bằng các ngơn ngữ lập trình thơng dịch nhƣ Javascript, python,… Do vậy, để so sánh hai trang web với nhau chúng ta cĩ thể so sánh hai DOM – Tree tƣơng ứng của chúng.

DOM giúp thao tác dữ liệu theo mơ hình hƣớng đối tƣợng. Các phần tử

bên trong 1 tài liệu cĩ cấu trúc đƣợc định nghĩa thành các đối tượng, phương

thứcthuộc tínhđể cĩ thể truy xuất dễ dàng mà vẫn đảm bảo tính cấu trúc: mỗi phần tử là một đối tƣợng, sở hữu các thuộc tính và các phƣơng thức để làm việc với các thuộc tính đĩ nhƣ thêm, xĩa, sửa, cập nhật. Bên cạnh đĩ, bạn cũng cĩ thể thêm bớt các phần tử tùy thích, giúp cho nội dung và cấu trúc của trang web luơn cập nhật động. [3]

2.4. Thuật tốn dựa trên sự tƣơng đồng về hình ảnh của trang web.

Hƣớng tiếp cận này kiểm tra sự hiển thị tƣơng đồng của một trang web và so sánh những đặc trƣng hiển thị của nĩ với một trang web hợp lệ lƣu

trong danh sách trắng. Ngƣời ta đã đề xuất một giải pháp chống giả mạo mới bằng cách sử dụng 2 thuật tốn K-mean và Naive bayes.

Nếu hai trang web cĩ cấu trúc giống nhau về hình ảnh thì cĩ thể nghi ngờ, tiếp theo sử dụng các thuật tốn dựa trên sự tƣơng đồng về hình ảnh của hai trang web để so sánh các thành phần chi tiết của chúng để phát hiện trang Web giả mạo.

2.4.1. Thuật Tốn K-Means

K-Means là thuật tốn rất quan trọng và đƣợc sử dụng phổ biến trong kỹ thuật phân cụm. Tƣ tƣởng chính của thuật tốn K-Means là tìm cách phân nhĩm các đối tƣợng (objects) đã cho vào K cụm (K là số các cụm đƣợc xác định trƣớc, K nguyên dƣơng) sao cho tổng bình phƣơng khoảng cách giữa các đối tƣợng đến tâm nhĩm (centroid ) là nhỏ nhất.

Thuật tốn K-Means đƣợc mơ tả nhƣ sau

Hình 2.1. Thuật tốn K-means dạng sơ đồ khối

Thuật tốn K-Means thực hiện qua các bước chính sau:

1. Chọn ngẫu nhiên K tâm (centroid) cho K cụm (cluster). Mỗi cụm đƣợc đại diện bằng các tâm của cụm.

2. Tính khoảng cách giữa các đối tƣợng (objects) đến K tâm (thƣờng dùng khoảng cách Euclidean)

3. Nhĩm các đối tƣợng vào nhĩm gần nhất 4. Xác định lại tâm mới cho các nhĩm

5. Thực hiện lại bƣớc 2 cho đến khi khơng cĩ sự thay đổi nhĩm nào của các đối tƣợng

Ví dụ minh họa thuật tốn K-Mean:

Giả sử ta cĩ 4 loại thuốc A,B,C,D, mỗi loại thuốc đƣợc biểu diễn bởi 2 đặc trƣng X và Y nhƣ sau. Mục đích của ta là nhĩm các thuốc đã cho vào 2 nhĩm (K=2) dựa vào các đặc trƣng của chúng.

Object Feature 1 (X): weight index Feature 2 (Y): pH

Medicine A 1 1

Medicine B 2 1

Medicine C 4 3

Medicine D 5 4

Bƣớc 1. Khởi tạo tâm (centroid) cho 2 nhĩm. Giả sử ta chọn A là tâm

của nhĩm thứ nhất (tọa độ tâm nhĩm thứ nhất c1(1,1)) và B là tâm của nhĩm thứ 2 (tọa độ tâm nhĩm thứ hai c2 (2,1)).

Bƣớc 2. Tính khoảng cách từ các đối tƣợng đến tâm của các nhĩm (Khoảng cách Euclidean) D0 = [ ] ( ) ( ) A B C D [ ]

Mỗi cột trong ma trận khoảng cách (D) là một đối tƣợng (cột thứ nhất tƣơng ứng với đối tƣợng A, cột thứ 2 tƣơng ứng với đối tƣợng B,…). Hàng

thứ nhất trong ma trận khoảng cách biểu diễn khoảng cách giữa các đối tƣợng đến tâm của nhĩm thứ nhất (c1) và hàng thứ 2 trong ma trận khoảng cách biểu diễn khoảng cách của các đối tƣợng đến tâm của nhĩm thứ 2 (c2).

Ví dụ: Khoảng cách từ loại thuốc C=(4,3) đến tâm c1(1,1) là 3.61 và đến tâm c2(2,1) là 2.83 đƣợc tính nhƣ sau: c1 = (1,1) √( ) ( ) = 3.61 c2 = (2,1) √( ) ( ) = 2.83 Bƣớc 3. Nhĩm các đối tƣợng vào nhĩm gần nhất G0 = [ ] A B C D

Ta thấy rằng nhĩm 1 sau vịng lặp thứ nhất gồm cĩ 1 đối tƣợng A và nhĩm 2 gồm các đối tƣợng cịn lại B,C,D.

Bƣớc 4. Tính lại tọa độ các tâm cho các nhĩm mới dựa vào tọa độ của

các đối tƣợng trong nhĩm. Nhĩm 1 chỉ cĩ 1 đối tƣợng A nên tâm nhĩm 1 vẫn khơng đổi, c1(1,1). Tâm nhĩm 2 đƣợc tính nhƣ sau:

c2 = ( , ) = ( )

Bƣớc 5. Tính lại khoảng cách từ các đối tƣợng đến tâm mới

D1 = [ ]

( )

( )

A B C D

Bƣớc 6. Nhĩm các đối tƣợng vào nhĩm

G1 = [ ]

A B C D

Bƣớc 7. Tính lại tâm cho nhĩm mới

c1 = ( , ) = ( ) c2 = ( , ) = ( )

Bƣớc 8. Tính lại khoảng cách từ các đối tƣợng đến tâm mới

D2 = [ ] ( ) ( ) A B C D [ ] Bƣớc 9. Nhĩm các đối tƣợng vào nhĩm G2 = [ ] A B C D Ta thấy G2

= G1 (Khơng cĩ sự thay đổi nhĩm nào của các đối tƣợng)

Object Feature 1 (X): weight index Feature 2 (Y): pH Group (result)

Medicine A 1 1 1

Medicine B 2 1 1

Medicine C 4 3 2

Medicine D 5 4 2

Thuật tốn K-Means cĩ ƣu điểm là đơn giản, dễ hiểu và cài đặt. Tuy nhiên, một số hạn chế của K-Means là hiệu quả của thuật tốn phụ thuộc vào việc chọn số nhĩm K (phải xác định trƣớc) và chi phí cho thực hiện vịng lặp tính tốn khoảng cách lớn khi số cụm K và dữ liệu phân cụm lớn.

2.4.2. Thuật tốn so khớp đ thị

Một trang Web (hay trang HTML) cĩ thể đƣợc biểu diễn dƣới dạng một DOM - Tree và ngƣợc lại ngƣời ta cĩ thể cập nhật các trang Web dễ dàng bằng việc sửa đổi DOM-Tree của nĩ. Do vậy, việc xem xét hai trang web cĩ giống nhau hay khơng, chúng ta hồn tồn cĩ thể so sánh xem hai DOM-Tree tƣơng ứng của chúng. Mặt khác, cây chỉ là một dạng đặc biệt của đồ thị. Vì vậy, tổng quát hơn từ bài tốn phát hiện trang Web giả mạo chúng ta cĩ thể đƣa về bài tốn so khớp đồ thị. [1]

2.4.2.1. Phát biểu bài tốn

Cho 2 đồ thị Graph A (GA) và Graph B (GB) cĩ một số cạnh và một số đỉnh tƣơng ứng nào đĩ. Vấn đề đặt ra là xác định xem hai đồ thị đã cho cĩ “khớp nhau” hay khơng?

Ví dụ cho hai đồ thị

2.4.2.2. Thuật tốn di truyền cho bài tốn so khớp đ th

Thuật tốn di truyền là một trong những thuật tốn tiến hĩa, hình thành dựa trên quan niệm cho rằng, quá trình tiến hĩa tự nhiên là quá trình hồn hảo và hợp lý nhất, tự nĩ đã mang tính tối ƣu..

Nhƣ đã nĩi ở mục trên, với hai đồ thị GA = (V1 , E1) và GB= (V2, E2)

với |V1| = m, |V2| = n (m < n) ta phải đi tìm một ánh xạ f: V1  V2 phù hợp nhất biến mỗi cặp đỉnh của đồ thị GA thành một cặp đỉnh của đồ thị GB. Nếu tổng số cặp đỉnh thỏa mãn ánh xạ f càng lớn thì ánh xạ f càng phù hợp.

Ta nĩi f là song ánh nếu và chỉ nếu với mỗi cặp đỉnh (u, v) E1 , cho

ta cặp (f(u), f(v)) E2. Nhƣ vậy cạnh (f(u),f(v)) là ảnh của cạnh (u,v) trong

đồ thị G2.

Mã giả của một thuật tốn di truyền áp dụng cho bài tốn so khớp đồ thị nhƣ sau:

Bắt đầu t=0;

P(0)=initial_Population();// khởi tạo quần thể ban đầu.

P(0).fit=getFit(P(t));// Tính độ thích nghi của tất cả các cá thể trong quần thể ban đầu.

While(! điều kiện dừng){

rd1=rand()%10/10.000;// Sinh ngẫu nhiên xác suất lai ghép if (rd1<0.6){

child_c = crossover(P(t));// Lai ghép các cá thể của quần thể P(t) đƣa vào child_c

child_c.fit =getFit(child_c);// Tính độ thích nghi cho cá thể lai ghép }

rd2 = rand()%10/10.000;// Sinh ngẫu nhiên xác suất đột biến if (rd2<0.02){

child_m = mutation(P(t));// Đột biến các cá thể của quần thể P(t) đƣa vào child_m

child_m.fit =getFit(child_m);// Tính độ thích nghi cho cá thể đột biến }

// Chọn ra P_SIZE cá thể cĩ độ thích nghi lớn nhất từ quần thể P(t) ở thế hệ t, cá thể lai ghép child_c, các cá thể đột biến child_m.

P(t+1) = Chon_loc(P(t), child_c, child_m); t++;

}

Kết thúc.

Chƣơng 3

XÂY DỰNG CHƢƠNG TRÌNH PHÁT HIỆN WEBSITE GIẢ MẠO VÀ ỨNG DỤNG.

3.1. Ứng dụng thuật tốn Naive Bayes trong phát hiện website giả mạo

Hiện nay, cĩ rất nhiều cơng cụ phát hiện các trang web giả mạo, tuy

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu một số kỹ thuật phát hiện trang web giả mạo và ứng dụng (Trang 39)

Tải bản đầy đủ (PDF)

(77 trang)