CHƯƠNG 3. THIẾT KẾ VÀ XÂY DỰNG CHƯƠNG TRÌNH
3.3 Xây dựng các chức năng
3.3.2 Xây dựng chức năng phân loại SVMs
Phương pháp phân loại văn bản theo SVMs là một phương pháp học có giám sát (giám sát bởi tập dữ liệu huấn luyện). Do đó, trước khi có thể đưa ra quyết định phân loại một văn bản nào đó, chương trình cần được huấn luyện trên bộ dữ liệu huấn luyện đã được phân loại trước.
Như vậy, để thực thi quá trình phân loại, trước hết chương trình cần được phân tách thành hai module riêng biệt:
Module huấn luyện: đầu vào là tập dữ liệu huấn luyện đã qua tiền xử lý và các tham số cần thiết khác (tham số trích chọn tập đặc trưng, tham số v, tham số hàm nhân Kernel). Với mỗi chủ đề văn bản nhất định, thực hiện giải bài toán tối ưu để tìm ra một siêu phẳng phân loại văn bản chủ đề đó. Đầu ra sẽ là những tham số của siêu phẳng: b và α* = (α1, α2, …, αm).
Module kiểm tra: đầu vào là tập văn bản kiểm tra đã qua tiền xử lý, và các tham số của siêu phẳng tìm được qua quá trình huấn luyện, vector trọng số của văn bản huấn luyện. Tiến hành xét dấu của văn bản kiểm tra với từng chủ đề, sau đó đưa ra danh sách nhãn (chủ đề) phù hợp với văn bản. Đánh giá kết quả của quá trình kiểm tra thông qua các công thức đánh giá hiệu năng chương trình.
3.3.2.1 Module huấn luyện SVMs
Trong phương pháp phân loại văn bản SVMs, công việc huấn luyện (học) là quan trọng nhất và tốn nhiều thời gian nhất. Quá trình huấn luyện sẽ trả ra các tham số của quá trình tối ưu hoá, cũng chính là tham số của các support vectors. Kết quả của quá trình huấn luyện sẽ được dùng cho việc kiểm tra và phân loại các văn bản khác.
Mặc dù tốn nhiều thời gian thực hiện, nhưng kết quả của một lần huấn luyện có thể áp dụng cho nhiều bộ dữ liệu kiểm tra, nhiều văn bản cần phân loại khác nhau. Vì thế việc phân tách thành các module tách biệt giữa quá trình huấn luyện và kiểm tra là cần thiết.
Để chuẩn bị dữ liệu cho quá trình huấn luyện, tập văn bản huấn luyện thô ban đầu sẽ được đưa qua bước tiền xử lý để biểu diễn dưới dạng các vector thưa. Tập văn bản huấn luyện đã được xác định nhãn, mảng lưu giá trị nhãn của các văn bản huấn luyện cũng là đầu vào cho quá trình huấn luyện của chương trình. Chú ý rằng, với số chủ đề là m, nhãn của các văn bản được đánh giá theo giá trị từ 1 đến m để thể hiện chủ đề mà nó thuộc vào. Sau đó mảng này sẽ được biến đổi thành mảng giá trị {1/-1}
tương ứng với một chủ đề nhất định đang được xét.
Sinh viên thực hiện: Hoàng Thị Nhung – Lớp HTTTA-K11 Trang 43/67
Hình 3-7: Lược đồ thực hiện module huấn luyện.
Module huấn luyện có các đầu vào, đầu ra và thuật toán thực hiện như sau:
Đầu vào:
Tập các vector thưa biểu diễn tập dữ liệu huấn luyện đã được gán nhãn (đầu ra của module tiền xử lý dữ liệu huấn luyện).
Đầu ra:
Là các tham số của siêu phẳng tối ưu: b, α* = (α1, α2, …, αm) và các hệ số nhân K(xi,xj) sử dụng cho module ra quyết định phân loại.
Thuật toán thực thi huấn luyện:
1. Lựa chọn hàm nhân Kernel và tham số tương ứng (nếu có) để tính mảng giá trị hàm nhân cặp (xi,xj) trong tập huấn luyện.
2. Khởi tạo vector hệ số α0 (theo thuật toán). Để khởi tạo các biến α = (α1, α2, …, αm):
Thiết lập tất cả các hệ số ban đầu α0 = (0, 0, …, 0), tính tập N0 (N là tập các chỉ số i của các văn bản có cặp giá trị αi, Vi chưa đạt yêu cầu).
Lặp công việc tìm kiếm các giá trị i(0)cho đến khi N =.
3. Sử dụng thuật toán giải bài toán tối ưu (trình bày trong phần) tìm ra cặp tham số tối ưu (b, α*).
4. Lưu lại các cặp giá trị (b, α*)và các tham số của hàm nhân K(xi,xj)để sử dụng trong module kiểm tra(ra quyết định phân loại).
Thuật toán 3-6: Các bước thực thi huấn luyện SVMs.
Sinh viên thực hiện: Hoàng Thị Nhung – Lớp HTTTA-K11 Trang 44/67
Trong Bước 1 để tính toán ra mảng giá trị hàm nhân của các cặp (xi,xj), ta cần vận dụng tính chất đối xứng của hàm nhân: K(xi,xj) = K(xj,xi), cho nên K sẽ là một ma trận đối xứng. Do đó, không cần tính toán và lưu K ở dạng ma trận hai chiều, mà chỉ cần lưu dưới dạng vector cho ma trận tam giác trên. Giả sử chọn hàm nhân Poly, ta có thuật toán tạo mảng giá trị nhân K như sau:
for (int i = 0; i < nsample; i++) {
for (int j = i; j < nsample; j++) {
k = nsample*i – (i-1)*i/2 + j – i;
int temp = 1;
for (int t = 0; t < nterm; t++) {
temp = temp + x[i,t]*x[j,t];
}
K[k] = Math.Pow(temp,d);
} }
Thuật toán 3-7: Ví dụ khởi tạo mảng giá trị hàm nhân đa thức (Kernel Poly).
trong đó:
nsample: là tổng số văn bản trong tập dữ liệu huấn luyện.
nterm: tổng số từ khoá của tập đặc trưng (số chiều vector biểu diễn văn bản).
- k = nsample*i – (i-1)*i/2 + j – i: là công thức tính chỉ số của vector biểu diễn ma trận tam giác với i ≤ j.
Bước 2 của thuật toán nhằm khởi tạo cho tập biến α0. Chi tiết của quá trình khởi tạo được thiết lập như sau:
1. Khởi tạo giá trị 0 ban đầu cho tất cả các biến (αi, Gi, V1, V2) 2. Tính tập N.
3. Nếu (N = ) thì chuyển sang bước 5.
4. Ngược lại, nếu (N )thì thực hiện quá trình lặp cho đến khi N =:
Tính Ii
- Nếu yi = 1 thì Ii = 2C+Gi + (C+)2.K(xi,xj).
- Nếu yi = -1 thì Ii = 2C-Gi + (C-)2.K(xi,xj).
Tìm rN sao cho Ir = min{Ii}, i N.
Cập nhật giá trị cho biến αr =
r vVr(t) , C
min 2
Cập nhật giá trị cho mảng G, V cho lần lặp tiếp theo.
Cập nhật lại N.
5. Kết thúc.
Thuật toán 3-8: Giải thuật khởi tạo mảng giá trị tham số α0. Ghi chú:
Trong phần trên của báo cáo đã trình bày khá chi tiết các công thức xác định cỏc tập G, V, N, …. Chỳng ta cú thể xem lại cỏc cụng thức này để thấy rừ hơn quy trình khởi tạo α0.
Sinh viên thực hiện: Hoàng Thị Nhung – Lớp HTTTA-K11 Trang 45/67
Sau khi khởi tạo thành công các hệ số α0, ta đã có thể tiến hành Bước 3 để giải bài toán tối ưu. Giải thuật cụ thể tiến hành giải bài toán tối ưu tìm các tham số siêu phẳng b và α* như sau:
1. Thực hiện giải thuật khởi tạo biến α0. 2. Tại lần lặp thứ k:
Xác định W+ chứa các cặp chỉ số (p, q) của các văn bản thoả mãn yp = yq = 1 và ΔG(p,q) > 0.
Xác định W- chứa tập các cặp chỉ số (p,q) của các văn bản thoả mãn yp = yq = -1 và ΔG(p,q) > 0.
3. Lặp cho đến khi W+ = hoặc W- = hoặc L = const(L: giá trị hàm Lagrange).
Tìm cặp chỉ số (p,q) có ΔG(p,q) đạt max.
Tuỳ thuộc (p,q) thuộc W+ hay W-, xác định lại αp, αq, W+, W-, L, G.
4. Kết thúc.
Thuật toán 3-9: Quy trình giải bài toán tối ưu theo SVMs.
3.3.2.2 Module Kiểm tra SVMs
Sau quá trình huấn luyện ta thu được các tham số cần thiết để đưa ra quyết định phân loại văn bản. Quá trình kiểm tra này có mục đích để kiểm nghiệm lại hiệu năng của chương trình phân loại văn bản bằng phương pháp SVMs.
Như đã trình bày từ trước, quá trình phân loại văn bản sử dụng phương pháp SVMs dựa trên nguyên tắc phân loại nhị phân đối với một lớp văn bản nhất định. Do đó khi phân loại đa lớp, ta cần dựa vào nguyên tắc 1-nhiều (one-against-rest), nghĩa là khi có m lớp văn bản, ta sẽ tạo nên m bộ phân lớp nhị phân để ra quyết định gán nhãn cho các văn bản cần phân loại. Vì thế, thông thường một văn bản có thể được gán một nhãn biểu hiện lớp văn bản nó thuộc vào, nhưng cũng có thể nó không được gán nhãn nào (nghĩa là chương trình quyết định nó không thuộc lớp văn bản nào), hoặc số nhãn nó được gán là lớn hơn 1 (nghĩa là có nhiều hơn 1 lớp văn bản phân chia nó về phía dương của siêu phẳng tối ưu của mình).
Vì có những lý do như vậy, nên module kiểm tra của chương trình sẽ được phân chia thành hai phần kiểm tra:
Kiểm tra phân loại nhị phân: đánh giá hiệu năng của chương trình phân loại đối với từng lớp văn bản.
Kiểm tra phân loại đa lớp: đánh giá hiệu năng phân loại khi kết hợp các bộ phân loại nhị phân để đưa ra quyết định phân loại đa lớp.
Đầu vào của module kiểm tra đối với cả hai phần là tập các văn bản kiểm tra đã qua module tiền xử văn bản, và được biểu diễn ở dạng vector thưa với các thành phần là các trọng số của một từ trong văn bản. Đồng thời các văn bản kiểm tra cũng đã được gán nhãn trước với mục đích để so sánh với các nhãn mà chương trình phân loại bằng phương pháp SVMs gán cho các văn bản kiểm tra, từ đó đưa ra được các giá trị đánh giá hiệu năng của chương trình (Presicion, Recall).
Sinh viên thực hiện: Hoàng Thị Nhung – Lớp HTTTA-K11 Trang 46/67
Kiểm tra phân loại nhị phân Đầu vào:
Tập các vector biểu diễn văn bản kiểm tra, tập các vector biểu diễn các văn bản huấn luyện đã được gán nhãn, lớp văn bản cần kiểm tra, các tham số b, α* của siêu phẳng tối ưu tương ứng với lớp văn bản đang xét, các tham số của hàm nhân K(xi,xj) đã được dùng trong quá trình huấn luyện.
Đầu ra:
- Quyết định phân loại nhị phân cho các văn bản kiểm tra.
- Các giá trị đánh giá hiệu năng của chương trình phân loại.
Thuật toán:
Bước 1: Với mỗi vector x tương đương văn bản thuộc tập văn bản kiểm tra, tính giá trị của hàm:
f(x) =
m
i iyiK xi x b
1
) ,
(
trong đó xi là vector biểu diễn văn bản huấn luyện thứ i, i = {1,…,m}.
- Nếu f(x) > 0 thì x được gán nhãn 1.
- Ngược lại x được gán nhãn -1.
Bước 2: Từ kết quả của bước 1, kết hợp với mảng y lưu nhãn của văn bản kiểm tra, tính các giá trị độ chính xác, độ bao, … để đưa ra kết quả đánh giá hiệu năng của chương trình phân loại đối với lớp văn bản hiện tại.
Kiểm tra phân loại đa lớp Đầu vào:
Tập các vector biểu diễn văn bản kiểm tra, tập các vector biểu diễn các văn bản huấn luyện đã được gán nhãn, tập các tham số b, α* của m siêu phẳng tối ưu tương ứng của m lớp văn bản mà chương trình huấn luyện đã được thực hiện trên đó, các tham số của hàm nhân K(xi,xj) đã được dùng trong quá trình huấn luyện.
Mảng y lưu nhãn của các văn bản có giá trị thuộc {-1, …, m-1} với:
- y = -1: văn bản không thuộc chủ đề nào trong số m chủ đề đã cho.
- y = 0 ÷ m-1: văn bản thuộc chủ đề có chỉ số tương ứng.
Đầu ra:
- Quyết định phân loại cho các văn bản kiểm tra.
- Các giá trị đánh giá hiệu năng của chương trình phân loại.
Thuật toán:
Bước 1: với mỗi vector x tương đương văn bản thuộc lớp văn bản kiểm tra, mỗi lớp văn bản có nhãn tương ứng là k (với k = {0,…, m-1}). Thực hiện tính giá trị:
fk(x) =
m
i
k i
i
kiy K x x b
1
) ,
(
Sinh viên thực hiện: Hoàng Thị Nhung – Lớp HTTTA-K11 Trang 47/67
trong đó: xi là vector biểu diễn văn bản huấn luyện thứ i, i = {1,…,m}, bk, *k là các tham số của siêu phẳng tối ưu ứng với lớp văn bản k.
Nếu fk(x) > 0 thì x được gán nhãn là k nếu giá trị fk(x) đạt max trong số tất cả các fk(x) > 0 của văn bản x.
Ngược lại x được gán nhãn là -1.
Bước 2: từ kết quả của bước 1, kết hợp với mảng y lưu nhãn của các văn bản kiểm tra, tính các giá trị độ chính xác để đưa ra kết quả đánh giá hiệu năng của chương trình phân loại đối với lớp văn bản hiện tại.
Kết quả phân loại văn bản
Đây là module dùng để quyết định phân loại cho một văn bản cụ thể.
Đầu vào:
Văn bản cần phân loại biểu diễn ở dạng vector trọng số, tập văn bản huấn luyện cũng ở dạng vector trọng số và đã được gán nhãn, các tham số b, α* của siêu phẳng tối ưu, các tham số của hàm nhân K(xi,xj) được dùng trong quá trình huấn luyện.
Đầu ra:
Đưa ra danh sách chủ đề phù hợp với văn bản đang xét.
Thuật toán:
Với từng chủ đề văn bản, thực hiện tính giá trị:
fk(x) =
m
i kiyiK xi x bk
1
) ,
(
Đưa ra danh sách những chủ đề có fk(x) > 0. Nếu chỉ có 1 chủ đề mà ứng với nó văn bản được gán nhãn = 1 thì đưa ra quyết định phân loại cho văn bản vào chủ đề đó. Trường hợp số chủ đề lớn hơn 1, có 2 giải pháp:
- Đưa ra danh sách tất cả các chủ đề để người dùng quyết định.
- Hoặc tìm giá trị max{fk(x)}, sau đó phân loại văn bản vào chủ đề có giá trị hàm quyết định đạt cực đại tương ứng (dựa vào nguyên tắc tìm siêu phẳng tối ưu).