Tải bản đầy đủ (.docx) (27 trang)

ỨNG DỤNG NAIVE BAYESIAN TRONG KHAI PHÁ DỮ LIỆU – PHÂN LỚP EMAIL

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (368.79 KB, 27 trang )

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN

KHAI PHÁ DỮ LIỆU VÀ KHO DỮ LIỆU
ĐỀ TÀI: ỨNG DỤNG NAÏVE BAYESIAN TRONG
KHAI PHÁ DỮ LIỆU – PHÂN LỚP EMAIL
GVHD : PGS. TS. Đỗ Phúc
Thực hiện: Vưu Văn Tòng - CH1101146
Ứng dụng Naïve Bayesian trong khai phá dữ liệu – phân lớp email
Thành phố Hồ Chí Minh - Tháng 10 Năm 2012LỜI MỞ ĐẦU
Trong thời đại ngày nay, nhân tố quan trọng quyết định sự thành công chính là
kỷ năng phân tích đánh giá, tìm ra cái mới từ những dữ liệu tưởng chừng như vô
nghĩa. Hay nói chính xác hơn đó là kỷ năng nắm bắt và khai thác thông tin hiệu
quả từ những dữ liệu có sẵn.
Tuy nhiên, vấn đề đặt ra là: làm cách nào để khai thác thông tin một cách hiệu
quả nhất ? Làm cách nào để đảm bảo độ chính xác của thông tin đã khai phá
được ? Làm cách nào có thể áp dụng quá trình khai phá đó vào một lĩnh vực cụ
thể ?
Để giải quyết các vấn đề trên, lĩnh vực nghiên cứu mới “khám phá tri thức” được
ra đời. Nhiệm vụ cơ bản của “khám phá tri thức” là tìm ra những tri thức, những
thông tin hữu ích trong cơ sở dữ liệu. “Khám phá tri thức” không có nghĩa là một
quá trình tự động hoàn toàn mà là sự tương tác giữa người dung và cơ sở dữ liệu
bằng cách sử dụng các công cụ trong toán học và tin học.
Nội dung của bài thu hoạch em xin trình bày gồm bốn chương:
Chương 1: giới thiệu chung về lĩnh vực “khám phá tri thức”, các khái niệm cơ
bản, các phương pháp được áp dụng để khai phá dữ liệu – một bước quan trọng
trong khám phá tri thức
Chương 2: tìm hiểu về bộ phân lớp Naïve Bayesian
Chương 3: ứng dụng bộ phân lớp Naïve Bayesian để phân lớp email
Chương 4: những hạn chế và hướng phát triển
Em xin bày tỏ lòng biết ơn sâu sắc đến PGS. TS. Đỗ Phúc – người đã hướng dẫn


trực tiếp, chỉ bảo tận tình và cung cấp tài liệu về “khám phá tri thức” để em có
nền tảng thực hiện bài thu hoạch này.
Trong suốt quá trình nghiên cứu, mặc dù đã cố gắng hết sức nhưng chắc chắn bài
thu hoạch không tránh khỏi những thiếu sót. Rất mong nhận được những ý kiến
đóng góp quý báu từ thầy để bài thu hoạch được hoàn chỉnh hơn.
Khai phá dữ liệu và kho dữ liệu
Ứng dụng Naïve Bayesian trong khai phá dữ liệu – phân lớp email
NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN


















Khai phá dữ liệu và kho dữ liệu
Ứng dụng Naïve Bayesian trong khai phá dữ liệu – phân lớp email
NỘI DUNG
Khai phá dữ liệu và kho dữ liệu

Ứng dụng Naïve Bayesian trong khai phá dữ liệu – phân lớp email
DANH SÁCH HÌNH
Khai phá dữ liệu và kho dữ liệu
Ứng dụng Naïve Bayesian trong khai phá dữ liệu – phân lớp email
DANH SÁCH BẢNG
Khai phá dữ liệu và kho dữ liệu


Nhận dạng vấn đề

Định nghĩa vấn đề


Thu thập dữ liệu

Tiền xử lý dữ liệu


Khai phá dữ liệu

Tách tri thức


Làm rõ tri thức

Đánh giá tri thức


Sử dụng tri thức
Ứng dụng Naïve Bayesian trong khai phá dữ liệu – phân lớp email

1. GIỚI THIỆU CHUNG VỀ KHÁM PHÁ TRI THỨC
1.1. Khám phá tri thức là gì ?
Khai phá dữ liệu (data mining) và khám phá tri thức (knowledge discovery) là
một khái niệm ra đời vào cuối thập kỷ 80. Nó là sự kết hợp của các lĩnh vực: hệ quản
trị cơ sở dữ liệu, thống kê, máy học và các lĩnh vực khác có liên quan nhằm mục đích
khám phá, chiết xuất ra những kiến thức hữu ích từ bộ sưu tập cơ sở dữ liệu lớn.
Khai phá dữ liệu là một bước con trong quá trình khám phá tri thức. Là một bước
mà trong đó các giải thuật cụ thể được thực thi dưới một số điều kiện về tính hiệu quả
nhằm tìm ra các “mẫu” (pattern) hoặc “mô hình” (model) của dữ liệu đang được khai
phá.
1.2. Tiến trình khám phá tri thức
Khám phá tri thức là một tiến trình gồm nhiều bước:
Hình 1: Tiến trình khám phá tri thức
Bước 1: bước đầu tiên và không thể thiếu. Trong bước này, ta sẽ xác định lĩnh
vực cần khám phá là gì? Và mong muốn áp dụng giải thuật gì trong bước 3 dựa trên
lĩnh vực cần khám phá và đặc điểm của từng giải thuật. Chẳng hạn, lĩnh vực ta cần
khám phá là bệnh sốt, thì nhiệt độ là một trong những nhân tố quan trọng để thu thập
Khai phá dữ liệu và kho dữ liệu
Ứng dụng Naïve Bayesian trong khai phá dữ liệu – phân lớp email
dữ liệu. Mà nhiệt độ lại có miền giá trị liên tục nên ta phải lựa chọn giải thuật phù hợp
cho dạng giá trị liên tục này.
Bước 2: đây là bước để thu thập dữ liệu. Bước này bao gồm: chọn nguồn dữ liệu,
thu thập, khử bỏ dữ liệu bị nhiễu, lựa chọn biện pháp đối với dữ liệu bị thiếu, mất…
Bước này chiếm nhiều thời gian nhất trong toàn bộ tiến trình. Và là bước có thể xác
định được sự hơn thua của cả tiến trình…Với dữ liệu càng nhiều (và tất nhiên là đúng)
thì tri thức được khám phá ra sẽ càng nhiều và càng chính xác.
Bước 3: trong bước này, chúng ta sẽ trích xuất ra những “mẫu” hay “mô hình”
vốn được ẩn giấu trong dữ liệu bằng cách phương pháp như: phân lớp, gom cụm, mạng
nơ-ron…. Một mô hình có thể được xem là “một sự biểu diễn tóm tắt các thành phần
ẩn giấu trong dữ liệu một cách có hệ thống”. Thật vậy, sau khi khám phá ra “mô hình”

trong dữ liệu thì chúng ta có thể dùng nó kết hợp với một số dữ liệu đầu vào để sinh ra
dữ liệu gần như nguyên gốc (mức độ tùy thuộc vào độ tin cậy của mô hình). Một mô
hình có thể là một cấu trúc “nếu…thì…” đơn giản. Ví dụ: xét cơ sở dữ liệu lưu lại
thông tin của những nhà khoa học (cá nhân) đã đoạt giải Nobel thì người ta rút ra quy
luật rằng: nếu là nam, đã kết hôn, khoảng 61 tuổi và sinh vào mùa xuân, đã từng học
đại học Harvard và không mang kính thì tỷ lệ đoạt giải Nobel là cao nhất (nguồn:
)
Bước 4: làm rõ và đánh giá tri thức. Việc làm rõ tri thức nghĩa là chuyển những
“mẫu” hay “mô hình” đã tìm được ở bước 3 sang dạng “mô tả được và dự đoán được”
– 2 mục tiêu quan trọng của tiến trình khám phá tri thức. Trong khi đánh giá tri thức
nhằm kiểm tra mức độ chính xác của tri thức. Thông thường, người ta chia tập dữ liệu
ban đầu thành hai phần: tập huấn luyện và tập kiểm tra. Sau đó, thực hiện quá trình
đánh giá nhiều lần dựa trên mức độ chia khác nhau và lấy trung bình kết quả của những
lần chia đó. Ví dụ: lần đầu, ta chia theo tỷ lệ huấn luyện/kiểm tra là 60/40, lần hai, chia
theo 70/30…
Bước 5: sử dụng những tri thức được khám phá vào thực tế. Thực tế ở đây không
có nghĩa là phải liên quan đến máy vi tính. Vì có một số người sử dụng những tri thức
này vào cuộc sống và một số người lại đặt những tri thức này vào máy tính để dung các
chương trình khám phá. Bước này là đích đến lớn nhất của tất cả tiến trình khám phá
tri thức.
Khai phá dữ liệu và kho dữ liệu
Ứng dụng Naïve Bayesian trong khai phá dữ liệu – phân lớp email
1.3. Các phương pháp khai phá dữ liệu
Hình dưới đây thể hiện một mảng 2 chiều của dữ liệu chứa 23 mẫu. Mỗi chấm thể
hiện một người nào đó đã từng được ngân hàng cho vay trong quá khứ. Màu khác nhau
của mỗi chấm là một sự phân lớp thể hiện khoản vay của người đó trong tình trạng tốt
hay xấu (nợ khó đòi).

Debt
Income

have defaulted
on their loans
good status
with the bank
Hình 2: Tập dữ liệu đơn giản mô phỏng phân lớp
Như đã nói lúc đầu, hai mục đích chính của khai phá dữ liệu là mô tả được và dự
đoán được. Dự đoán được nghĩa là việc sử dụng một số biến trong cơ sở dữ liệu để dự
đoán một giá trị chưa biết. Mô tả được là việc đi tìm một mẫu lời giải thích rõ ràng, dễ
hiểu để mô tả dữ liệu.
Dưới đây là các phương pháp khai phá dữ liệu thường được sử dụng:
Phân lớp: là việc gắn các đối tượng (có các thuộc tính) và những lớp đã được
định nghĩa. Giống như việc gán nhãn cho đối tượng. Hình dưới đây thể hiện việc phân
lớp các đối tượng có tình trạng vay tốt và xấu (dữ liệu lấy từ hình 2)
Khai phá dữ liệu và kho dữ liệu
Ứng dụng Naïve Bayesian trong khai phá dữ liệu – phân lớp email


Income
Debt
Hình 3: Mô phỏng phương pháp phân lớp
Các kỹ thuật phân lớp được sử dụng là:
 Cây quyết định:
- Một dạng biểu đồ hình cây
- Mỗi nút bên trong cây là một sự kiểm tra dựa trên thuộc tính
- Mỗi nhánh là một kết quả của sự kiểm tra đó
- Nút là biểu thị nhãn của lớp.
- Mục đích chính là có thể phân lớp một mẫu chưa biết bằng cách kiểm
tra sự trùng khớp thuộc tính của mẫu dựa trên cây quyết định. Dưới
đây là một ví dụ về cây quyết định đối với việc một người nào đó có
là khách hang tiềm năng sẽ mua máy tính hay không ?

Hình 4: Ví dụ về cây quyết định
Khai phá dữ liệu và kho dữ liệu
Ứng dụng Naïve Bayesian trong khai phá dữ liệu – phân lớp email
 Luật:
- Các luật được tạo ra nhằm suy diễn các mẫu dữ liệu có ý nghĩa về mặt
thống kê
- Dạng của luật là nếu P thì Q, trong đó P là mệnh đề kiểm chứng được
trong cơ sở dữ liệu và Q là mệnh đề kết quả (dự đoán).
- Ví dụ: nếu giảm giá sản phẩm còn 2.900 đồng từ 3.000 đồng thì sức
mua sẽ tăng thêm 30%.
- Những luật được sử dụng rộng rãi trong các hệ chuyên gia vì chúng
đơn giản, dễ hiểu.
 Giải thuật di truyền
- Dựa trên sự tương tự của tiến hóa trong sinh học
- Mỗi luật được thể hiện bằng một chuổi các bit
- Một quần thể ban đầu được tạo dựa trên những luật ngẫu nhiên. Ví
dụ: nếu A1 và không phải là A2 thì C2 có thể được thể hiện bằng
chuỗi 100 (trong đó A1, A2 là các mệnh đề)
- Dựa trên quan niệm về sự tồn tại, một quần thể mới được tạo thành từ
các con của quần thể ban đầu và các quy tắc thích hợp nhất.
 Tập thô
- Tập thô dùng để định nghĩa lớp một cách gần đúng
- Một tập thô cho một lớp C nào đó được xấp xỉ bởi hai tập hợp: xấp xỉ
dưới (chắc chắn thuộc C) và xấp xỉ trên (không thể nói là không thuộc
C)
- Ma trận phân biệt được xử dụng để tìm tập tối tiểu các thuộc tính
(dung để rút gọn thuộc tính)
Ngoài ra, còn có các kỹ thuật khác như: tập mờ, mạng Bayes, mạng nơ-ron…
được dung trong phương pháp phân lớp.
Gom cụm: trong khi phân lớp dữ liệu là tìm lớp mà đối tượng đó thuộc về, gom

cụm dữ liệu lại gom các đối tượng có đặc tính gần như nhau vào cùng một nhóm. Các
cụm có thể riêng biệt nhau hoặc chồng lên nhau, điều này dẫn tới một đối tượng có thể
thuộc về một hay nhiều cụm. Hình bên dưới thể hiện sự khác biệt giữa gom cụm và
phân lớp:
Khai phá dữ liệu và kho dữ liệu
Ứng dụng Naïve Bayesian trong khai phá dữ liệu – phân lớp email


Income
Debt
Regression Line
Hình 5: Gom cụm và phân lớp
Trong hình trên, các đối tượng chia thành hai màu thể hiện sự phân lớp…Còn các
đối tượng trên và dưới đường chéo thể hiện sự gom cụm. Rõ rang, các đối tượng thuộc
cùng một lớp chưa chắc đã được gom vào một cụm. Vì tiêu chí của gom cụm và phân
lớp là khác nhau.
Một phương pháp gom cụm được gọi là tốt khi tạo ra được những cụm có chất
lượng cao: mức độ tương tự cao cho trong lớp (intra-class) và tương tự thấp cho ngoài
lớp (inter-class).
Luật kết hợp: đây là phương pháp được dùng để tìm những mối liên kết giữa các
thành phần dữ liệu trong tập dữ liệu. Mối liên kết đó được gọi là kết hợp và ký hiệu: A
=> B nghĩa là khi có A trong một mẫu dữ liệu (một bộ trong cơ sở dữ liệu) thì B sẽ
xuất hiện trong mẫu đó. Đầu ra của phương pháp này chính là tập các mối kết hợp như
vậy (gọi tắt là luật kết hợp).
Một định nghĩa cho luật kết hợp: cho một lược đồ cơ sở dữ liệu D={A1,A2,
…,An} (Ai: là các thuộc tính có miền giá trị 0 hoặc 1). Và một quan hệ r trên D. Một
luật kết hợp được mô tả là A=>B với A và . Một ví dụ đơn giản là cơ sở dữ liệu hàng
hóa với các cột là mã hóa đơn và hàng hóa, còn các dòng là danh sách hàng hóa trong
một hóa đơn:
Khai phá dữ liệu và kho dữ liệu

Ứng dụng Naïve Bayesian trong khai phá dữ liệu – phân lớp email
Ta thấy rằng, hễ có bánh mì xuất hiện trong một hóa đơn nào đó thì bơ cũng xuất
hiện trong hóa đơn đó. Điều này dẫn tới một luật kết hợp đơn giản: “Bánh mì”  “bơ”.
Trong tìm luật kết hợp có hai đại lượng cần chú ý là độ hỗ trợ (ký hiệu:
support(AB)) và độ tin cậy (ký hiệu: confidence(AB)). Giả sử, ta xét luật: “Bánh
mì”  “bơ” thì độ hỗ trợ là số dòng chứa cả “bánh mì” và “bơ” trên tổng số dòng
trong cơ sở dữ liệu (2/3 = 66.6%) còn độ tin cậy là số dòng chứa cả “bánh mì” và “bơ”
trên tổng số dòng có chứa bánh mì (2/2 = 100%)
Một luật kết hợp là hợp lệ khi thỏa mãn cả minsupport (độ hỗ trợ nhỏ nhất) và
minconfidence (độ tin cậy nhỏ nhất). minsupport và minconfidence được cung cấp bởi
người dùng tùy vào lĩnh vực và kinh nghiệm.
Khai phá dữ liệu và kho dữ liệu
Ứng dụng Naïve Bayesian trong khai phá dữ liệu – phân lớp email
2. BỘ PHÂN LỚP NAÏVE BAYESIAN
2.1. Cơ sở lý thuyết về xác suất
Sự độc lập về xác suất
Giả sử ta có 2 sự kiện:
F1: cô A đang dạy
F2: trời đang nắng
Ta thấy rằng, việc trời nắng hay mưa không phụ thuộc vào việc cô A có đang dạy
hay không. Vậy hai sự kiện xảy ra là độc lập với nhau.
Gọi P(F1) là xác suất xảy ra sự kiện F1, P(~F1) là xác suất không xảy ra F1
Tương tự, P(F2) là xác suất xảy ra sự kiện F2, P(~F2) là xác suất không xảy ra F2
Và P(F2|F1) là xác suất xảy ra F2 khi đã biết F1. Ta có các công thức:
Hai sự kiện được gọi là độc lập với nhau khi xác suất xảy ra một sự kiện luôn
không đổi cho dù sự kiện còn lại có xảy ra, không xảy ra hay thậm chỉ không biết rõ.
Xác suất có điều kiện
Giả sử có 2 sự kiện:
F1: đau đầu
F2: bị cảm

Với các xác suất:
P(F1) = 1/10
P(F2) = 1/40
Ta thấy, xác suất xảy ra đau đầu đã hiếm nhưng bị cảm còn hiếm hơn. Tuy nhiên,
khi bạn bị cảm thì xác suất xảy ra đau đầu là ½ nghĩa là: P(F1|F2) = ½.
Khai phá dữ liệu và kho dữ liệu


Ứng dụng Naïve Bayesian trong khai phá dữ liệu – phân lớp email
Ta có thể xem hình sau về sự liên quan giữa hai sự kiện:
Hình 6: Mối liên hệ giữa 2 sự kiện
Công thức tính như sau:
P(A|B) = Xác suất xảy ra A khi B đã xảy ra
Một số hệ quả:
2.2. Lý thuyết Bayes
Suy diễn Bayes được áp dụng trong việc ra quyết định và thống kê suy luận dựa
trên xác suất.
Suy diễn Bayes sử dụng kiến thức của các sự kiện trước đó để đưa ra dự đoán cho
sự kiện tương lai.
Ví dụ, ta có bảng dữ liệu mẫu như sau:
ID Tuoi Thu_Nhap La_sinh_vie
n
Hang_tin_dun
g
Mua_May_Tin
h
1 35 Trung binh Co F Co
2 30 Cao Khong A Khong
Khai phá dữ liệu và kho dữ liệu
Ứng dụng Naïve Bayesian trong khai phá dữ liệu – phân lớp email

3 40 Thap Co G Khong
4 35 Trung binh Khong F Co
5 45 Thap Khong F Co
6 35 Cao Khong E Co
7 35 Trung binh Khong G Khong
8 25 Thap Khong G Khong
9 28 Cao Khong A Khong
10 35 Trung binh Co A Co
Bảng 1: Dữ liệu mẫu cho suy diễn Bayes
Giả sử, chúng ta biết được thông tin của một người như sau: “người đó 35 tuổi và
có mức thu nhập trung bình”. Hỏi rằng, ông ta có mua máy tính hay không ?
Áp dụng lý thuyết về Bayes, ta có công thức như sau:
Trong đó:
D: tập các điều kiện giả thuyết
h: một giá trị của tập kết quả
P(h): xác suất xảy ra sự kiện h
P(D): xác suất các sự kiện điều kiện xảy ra cùng lúc
P(D|h): xác suất các sự kiện điều kiện xảy ra khi h xảy ra
P(h|D): xác xuất h xảy ra khi các điều kiện D đã xảy ra  kết quả
Giả sử h có hai giá trị như trong ví dụ trên h1=“Co” hoặc h2=“Khong”. Tính
xác suất xảy ra cho hai trường hợp của kết quả như sau:
Khai phá dữ liệu và kho dữ liệu
Ứng dụng Naïve Bayesian trong khai phá dữ liệu – phân lớp email
P(D) = xác suất một người 35 tuổi có mức thu nhập trung bình = 4/10 (người số
1,4,7 và 10)
P(D|h1) = xác suất một người 35 tuổi, mức thu nhập trung bình CÓ mua máy
tính = 3/5
P(h1) = xác suất để một người nào đó (không quan tâm tới tuổi, thu nhập…) CÓ
mua máy tính = 5/10 (số lượng ô “Co” trong cột Mua_May_Tinh)
P(D|h2) = xác suất một người 35 tuổi, mức thu nhập trung bình KHÔNG mua

máy tính = 1/5
P(h2) = xác suất để một người nào đó (không quan tâm tới tuổi, thu nhập…)
KHÔNG mua máy tính = 5/10 (số lượng ô “Khong” trong cột Mua_May_Tinh)
Như vậy:
Dựa trên lý thuyết về hợp lý cực đại (Maximum Likelihood):
P(h|D) = max({P(hi|D) | i=1…n})
Áp dụng cho kết quả trên ta có:
P(h|D) = max(P(h1|D),P(h2|D)) = P(h1|D)
Lưu ý là, ta có thể rút gọn P(D) trong các trường hợp tính toán vì P(D) là giống
nhau trong mỗi trường hợp tính P(hi|D)
Kết luật của bài toán trên: với thông tin là một người 35 tuổi và có mức thu nhập
trung bình thì ông ta sẽ mua máy tính.
Có một cách tính khác dành cho P(D|h):
Giả sử: D = {d1,d2,d3,…,dn} và các di và dj là sự kiện độc lập nhau
Khi đó P(D|h) = P(d1|h)*P(d2|h)*…*P(dn|h)
Khai phá dữ liệu và kho dữ liệu
Ứng dụng Naïve Bayesian trong khai phá dữ liệu – phân lớp email
Tuy nhiên, ta không áp dụng được cách này trong trường hợp một giá trị của một
thuộc tính nào đó trong mẫu không thuộc vào miền giá trị của thuộc tính đó (mà xử lý
văn bản là phần lớn xảy ra trường hợp này). Vì lúc đó P(D|h) sẽ luôn bằng 0, cho dù
các giá trị của các thuộc tính còn lại vẫn trong miền giá trị.
2.3. Bộ phân lớp Naïve Bayesian
Bộ phân lớp Naïve Bayesian sử dụng lý thuyết về Bayes làm cơ sở. Điểm mạnh
của nó là có thể áp dụng cho những mẫu có số lượng thuộc tính nhiều bằng một cách
khá đơn giản với hiệu quả cao.
Lý thuyết của bộ phân lớp Naïve Bayesian như sau:
Cho D là một tập hợp các mẫu mà mỗi mẫu là một vector thuộc tính có n chiều
Cho X là một mẫu là một vector thuộc tính cũng có n chiều
Giả sử: số lượng lớp sẵn có là m lớp. Ký hiệu: Ci với i=1…m
Bộ phân lớp Naïve Bayesian sẽ dự đoán mẫu X thuộc về lớp Ck nếu:

P(C
i
|X) > P(C
j
|X) với
Khai phá dữ liệu và kho dữ liệu
Ứng dụng Naïve Bayesian trong khai phá dữ liệu – phân lớp email
3. ỨNG DỤNG NAÏVE BAYESIAN TRONG PHÂN LỚP EMAIL
3.1. Giới thiệu ứng dụng
Trong thời đại ngày nay, email và internet là công cụ trao đổi chính, nó giúp
chúng ta có thể trao đổi, giao dịch với những người cách xa chúng ta cả vòng trái đất.
Tuy nhiên, trong cái lợi cũng có cái hại đó là với lượng email khổng lồ mà một
người nhận được hàng ngày có bao nhiêu email là mong muốn và thực sự có giá trị?
Có bao nhiêu email là công việc gấp? Những con số này chỉ được biết khi người dùng
đọc từng email và phân loại bằng tay.
Rõ ràng, việc phân loại thực hiện trên một số lượng khổng lồ email không phải là
việc dễ dàng, vừa tốn thời gian, công sức…
Do đó, một số công cụ tự động đã được ra đời để giúp người dùng phân loại
email nhận được, giúp giảm đi những phiền toái mà quá trình phân lớp bằng tay gây ra.
Công cụ phân loại như vậy trong ngữ cảnh của khai phá dữ liệu được gọi là một bộ
phân lớp và Naïve Bayesian là một bộ phân lớp tiêu biểu như vậy.
Chúng ta có thể để ý rằng, thật ra việc phân lớp email có thể dựa vào tiêu đề hoặc
nội dung email. Có nghĩa là, bộ phân lớp hoạt động dựa trên việc phân tích tiêu đề, nội
dung của email để biết được một email thuộc loại gì: công việc, spam, du lịch…Mà
tiêu đề hay nội dung email lại là những đoạn văn bản. Như vậy, công việc phân lớp
email lại đưa về bản chất của một loại khai phá dữ liệu đó là khai phá văn bản (text
mining)
Trong phạm vi bài thu hoạch này, em xin trình bày quá trình cài đặt bộ phân lớp
Naïve Bayesian đơn giản để phân lớp văn bản (email).
3.2. Môi trường và tài nguyên

- Nền tảng: ứng dụng web
- Ngôn ngữ lập trình: PHP
- Hệ điều hành: Window 7
- Web server: EASYPHP
- Cơ sở dữ liệu: file hệ thống
3.3. Tiến trình thực hiện
Khai phá dữ liệu và kho dữ liệu
Ứng dụng Naïve Bayesian trong khai phá dữ liệu – phân lớp email
3.3.1. Sơ lược về phân lớp văn bản
Phân lớp văn bản gồm các bước chính như sau:
- Làm sạch văn bản: loại bỏ những quảng cáo trong văn bản, cách hành
xử đối với những dạng không phải là thuần văn bản: bảng, hình…
- Tách văn bản: thành các cụm hoặc từ.
- Phân loại dựa vào từ loại (part of speech)
- Giải quyết vấn đề mập mờ về nghĩa của từ
- Mô tả văn bản: túi từ (bag of words) hoặc không gian vector
Tuy nhiên, trong bài thu hoạch này thì em chỉ đề cập đến túi từ. Còn các phần
như: nghĩa, part of speech không được đề cập ở đây vì phạm vi khá rộng.
3.3.2. Các thành phần của ứng dụng
3.3.2.1. Thành phần dùng để huấn luyện
Trước khi thực hiện việc phân loại thật thì hệ thống phải được huấn luyện bằng
một tập các dữ liệu huấn luyện. Tập dữ liệu huấn luyện này được lấy từ thực tế (quá
trình phân lớp bằng tay). Tập dữ liệu huấn luyện càng lớn, thì khả năng phân lớp càng
chính xác vì bộ phân lớp dựa trên cơ sở về xác suất.
Các bước huấn luyện cho hệ thống như sau:
- Người dùng cung cấp training data vào giao diện trên web
- Hệ thống nhận training data và thực hiện:
o Loại bỏ những stop word (những từ không có ý nghĩa trong
văn bản cần phân tích như: the, a, an, is…)
o Tách thành các từ riêng biệt để tạo thành túi từ (tokenization)

o Mã hóa mỗi mẫu trong training data thành một vector có giá trị
nhị phân dựa trên túi từ. Ví dụ: túi từ có 5 từ thì vector có 5
chiều, mỗi chiều nhận các giá trị 0 (từ tương ứng trong túi từ
không xuất hiện trong mẫu) hoặc 1 (từ tương ứng trong túi từ
xuất hiện trong mẫu)
o Tạo thành file trong thư mục models để lưu lại cấu trúc đã học
được
Một số yêu cầu về training data cung cấp cho hệ thống:
- Mỗi mẫu dữ liệu được viết trên một dòng duy nhất
Khai phá dữ liệu và kho dữ liệu
Ứng dụng Naïve Bayesian trong khai phá dữ liệu – phân lớp email
- Lớp của mẫu là một từ đầu tiên trong cùng dòng của mẫu dữ liệu.
- Các mẫu cách nhau bởi dấu xuống dòng trong window (\r\n).
Ví dụ:
SPAM Register account and get 100$ free
JOB We are pleasure to offer you the position of software engineer
Chữ in đậm là lớp của mẫu.
Giao diện huấn luyện trong ứng dụng như sau:
Hình 6: Giao diện huấn luyện
Khai phá dữ liệu và kho dữ liệu

 !"#$
%#&
'()*+,
#/01/23#
4567869
-:;<=
>67*/6?
Ứng dụng Naïve Bayesian trong khai phá dữ liệu – phân lớp email
3.3.2.2. Thành phần dùng để phân lớp

Sau khi hệ thống được huấn luyện, hệ thống tự động tạo ra các mô hình để lần
sau sử dụng mà không cần phải huấn luyện lại.
Quá trình phân lớp sẽ ứng dụng giải thuật Naïve Bayesian. Các bước như sau:
- Người dùng chọn một mô hình để phân lớp. Ví dụ: mô hình phân lớp
email theo 2 lớp: hội thảo hoặc không hoặc mô hình phân lớp email
theo các lớp khác nhau: spam, công việc, gia đình…
- Người dùng nhập đoạn văn bản (nội dung của email) cần phân lớp
vào khung input.
- Người dùng sẽ nhấn nút Classify và hệ thống sẽ:
o Lấy dữ liệu người dùng, chuyển thành dạng vector dựa trên túi
từ có sẵn của mô hình.
o Tính toán các xác suất: p(h), p(D), p(D|h) theo Naïve Bayesian
với giả thuyết rằng xác suất xảy ra các từ là độc lập với nhau
o Tính xác suất dữ liệu đầu vào thuộc vào một lớp nào đó p(h|D)
o Lấy giá trị lớn nhất của p(h|D) và đưa ra kết quả phân lớp là
lớp mà dữ liệu đầu vào thuộc về.
Giao diện phân lớp gồm các thành phần sau:
Khai phá dữ liệu và kho dữ liệu
Ứng dụng Naïve Bayesian trong khai phá dữ liệu – phân lớp email
Hình 7: Giao diện thực hiện phân lớp
3.4. Kết quả thử nghiệm
Để thử nghiệm tính đúng đắn của ứng dụng, em đã tạo ra một bộ dữ liệu huấn
luyện giả (chỉ gồm năm mẫu) và thuộc về 3 lớp: spam, job và family.
Khai phá dữ liệu và kho dữ liệu
@:A:06BC() D6
E"!F!B#6=
G!F!.#/;
H!<67;$
IJ#H!4.#/
!F!

-::;
>67*/6?
Ứng dụng Naïve Bayesian trong khai phá dữ liệu – phân lớp email
Hình 8: Huấn luyện hệ thống
Mô hình được lưu dưới tên là sampletest.
Sau đó, qua test mode để thực hiện việc phân lớp cho một mẫu dữ liệu nào đó:
Khai phá dữ liệu và kho dữ liệu
Ứng dụng Naïve Bayesian trong khai phá dữ liệu – phân lớp email
Hình 9: Kết quả phân lớp
Kết quả thử nghiệm hệ thống đã nhận dạng đúng đoạn email đã nhập thuộc về lớp
“family”.
Em cũng đã upload ứng dụng web này lên internet để thầy và các bạn có thể chạy
thử một cách dễ dàng:
/>Khai phá dữ liệu và kho dữ liệu
@:KC6*:
LD6E"!F!M.#/
68(N!O#1
#/!F!
P;

×