Công nghệ thông tin vàviệc ứng dụng công nghệ thông tin trong nhiều lĩnh vực của đời sống, kinh tế xã hộitrong nhiều năm qua cũng đồng nghĩa với lượng dữ liệu đã được các cơ quan thuthập
Trang 1LỜI CẢM ƠN
Lời đầu tiên tơi xin chân thành cám ơn thầy PGS.TS Đỗ Phúc đã giảng dạy cho tơi những kiến thức quan trọng của mơn Khai phá dữ liệu và đã hướng dẫn tơi hồn thành được đồ án mơn học này
Sau đĩ tơi chân thành cảm ơn phịng Đào tạo ĐH&SĐH của trường Đại học CNTT đã tạo điều kiện cho tơi cĩ những thơng tin bổ ích, quan trọng
để tơi tham khảo và hồn thành đồ án này.
Trong quá trình làm đồ án, tơi khơng thể tránh được những thiếu sĩt, mong nhận được những ý kiến đĩng gĩp chân thành và những lời nhận xét của quý Thầy Cơ cùng bạn bè để giúp tơi cĩ thể tiếp tục nghiên cứu sâu hơn, phát triển và hồn thiện đề tài này.
HỌC VIÊN THỰC HIỆN
Trần Duy Phong
Trang 2MỞ ĐẦU
Ngày nay, chúng ta đang sống trong thế kỷ bùng nổ về khoa học công nghệ
mà đặc biệt là sự phát triển vượt bậc về công nghệ tông tin Công nghệ thông tin vàviệc ứng dụng công nghệ thông tin trong nhiều lĩnh vực của đời sống, kinh tế xã hộitrong nhiều năm qua cũng đồng nghĩa với lượng dữ liệu đã được các cơ quan thuthập và lưu trữ ngày một tích luỹ nhiều lên Bên cạnh đó, các thiết bị thu thập dữliệu tự động tương đối phát triển đã tạo ra những kho dữ liệu khổng lồ, như các dữliệu ngân hàng, hàng không, giáo dục.… Cùng với sự phát triển mạnh mẽ của côngnghệ, các thiết bị lưu trữ và các thiết bị thu thập thông tin tự động đã cho phép xâydựng được những hệ thống thông tin có khả năng tự động hoá ngày càng cao Vấn
đề đặt ra là làm thế nào để xử lý khối lượng thông tin cực lớn như vậy để phát hiện
ra các tri thức tiềm ẩn trong núi dữ liệu khổng lồ này Những tri thức thu được nhưvậy chúng được chuyên môn hoá, phân chia theo các lĩnh vực ứng dụng như sảnxuất, kinh doanh, tài chính, nghiên cứu… Các cơ sở dữ liệu cần phải đem lại trithức hơn là chính dữ liệu đó
Để hiểu hơn về vấn đề này em xin trình bày báo cáo tiểu luận môn học với đềtài “Các kỹ thuật Khái Phá dữ liệu – Xây dựng chương trình dựa vào thuật toán gomcụm K-Means”
Trang 4K-CHƯƠNG I: TỔNG QUAN VỀ KHAI THÁC DỮ LIỆU – DATA MINING
Theo đánh giá của IBM, các phương pháp khai thác thông tin truyền thốngchỉ thu được khoảng 80% thông tin từ CSDL, phần còn lại bao gồm các thông tinmang tính chất khái quát, thông tin có tính quy luật vẫn đang còn tiềm ẩn trong dữliệu Lượng thông tin này tuy nhỏ nhưng là những thông tin cốt lõi và cần thiết chotiến trinh ra quyết định
Khai thác dữ liệu – Data Mining (KTDL) là tiến trình khám phá tri thức tiềm
ẩn trong các CSDL Cụ thể hơn, đó là tiến trình trích lọc, sản sinh ra những tri thứchoặc các mẫu tiềm ẩn, chưa biết nhưng hữu ích từ các CSDL lớn
Khai thác dữ liệu là một khái niệm ra đời vào những năm cuối của thập kỷ
80 của thế kỷ trước Nó bao hàm một loạt các kỹ thuật nhằm phát hiện ra các thôngtin có giá trị tiềm ẩn trong các tập dữ liệu lớn Thật ra, khai thác dữ liệu liên quanđến việc phân tích các dữ liệu và sử dụng các kỷ thuật để tìm ra các mẫu hình cótính chính quy trong tập dữ liệu Hay nó còn là một quá trình trích xuất thông tin cómối quan hệ hoặc có mối tương quan nhất định từ một kho dữ liệu lớn nhằm mụcđích dự đoán các xu thế, các hành vi trong tương lai, hoặc tìm kiếm những thông tinhữu ích mà bình thường không thể nhận diện được
Trang 5Ứng dụng của nó rất đa dạng và rộng lớn, từ marketing, chống gian lận, giảmgiá thành sản xuất, tăng doanh thu, phân tích hành vi sử dụng người dùng Internet
để tìm ra nhu cầu, đúng đối tượng hay ứng dụng hỗ trợ ra quyết định, nghiên cứukhoa học đến việc chống khủng bố …
Tại sao cần khai phá dữ liệu
Khai phá dữ liệu là cần thiết đối với người dùng vì những lý do sau:
Ngày càng nhiều dữ liệu được lưu trữ trong các CSDL, kho dữ liệu và hìnhthành một “mỏ vàng dữ liệu” chứa đầy các thông tin chiến lược mà các hệ quản trịCSDL thông thường không thể phát hiện và quản trị được chúng
CSDL phát triển nhanh chóng cả về kích thước lẫn số lượng Không xét nhữngthông tin mang tính sự kiện được lưu trữ trong CSDL Những thông tin được suydiễn từ nó cũng hết sức lý thú Tuy nhiên với các quan hệ có số lượng khổng lồ cácbản ghi (record) và có quá nhiều trường ghi (field), việc duyệt hàng triệu bản ghihay hàng trăm trường ghi để tìm ra các mẫu và các quy luật là một thách thức và trởngại thật sự đối với các nhà phân tích dữ liệu
Không phải người dùng nào cũng là nhà thống kê hay nhà phân tích dữ liệu chuyênnghiệp
Sử dụng cho các trường hợp tìm kiếm nhưng chưa xác lập rõ hoặc chưa mô tả đượccác điều kiện tìm kiếm Nếu người dùng biết họ đang tìm kiếm gì thì dùng SQL,nhưng nếu nguoiwf dùng chỉ có một ý tưởng không rõ ràng, hoặc một cảm nhận nào
đó thì họ nên dùng KTDL
KTDL là một công cụ hiệu quả trong các lĩnh vực
1 Sử dụng dữ liệu để xây dựng các mô hình dự báo:
a Khả năng dự báo tiềm ẩn trong dữ liệu
b Gợi ý về các chiều và các nhóm dữ liệu có khả năng chứa các tri thứchữu ích
2 Tạo tóm tắt và báo cáo rõ ràng
Trang 6a Tự động tìm ra những phân đoạn trong dữ liệu
b Tìm ra những phân đoạn mà nhà phân tích chưa biết hoặc có hiểu biếtchưa rõ ràng
3 Cung cấp cơ chế hỗ trợ ra quyết định
a Dự báo
b Mô hình hóa
Ứng dụng của Khai thác dữ liệu
Khai thác dữ liệu được ứng dụng rộng rãi trong rất nhiều lĩnh vực như
- Ngân hàng
o Xây dựng mô hình dự báo rủi ro tín dụng.
o Tìm kiếm tri thức, quy luật của thị trường chứng khoán và đầu tư bất
động sản
- Thương mại điện tử
o Công cụ tìm hiểu, định hướng, thúc đẩy, giao tiếp với khách hàng.
o Phân tích khách hàng duyệt web.
o Phân tích hành vi mua sắm trên mạng và cho biết thông tin tiếp thị
phù hợp với loại khách hàng trong một phân khu thị trượng nhất định
- Công nghệ sinh học và dược phẩm
o Xây dụng công cụ KTDL trực quan cho phép phát hiện sự hiện diện
của dược chất, phân tích dữ liệu truyền đi
- Nhân sự
o Giúp nhà tuyển dingj chọn ứng viên thích hợp nhất theo nhu cầu của
công ty
o Phát hiện giả mạo thẻ trong lĩnh vự viễn thông
o Phát hiện dùng thẻ tín dụng giả trên mạng và là công cụ hữu ích cho
dịch vụ quản lý rủi ro cho thương mại điện tử
o Phát hiện xâm nhập mạng trái phép
Trang 72 Các phương pháp khai phá dữ liệu
Quá trình khai phá dữ liệu là quá trình phát hiện mẫu trong đó giải thuật khai phá
dữ liệu tìm kiếm các mẫu đáng quan tâm theo dạng xác định như các luật, cây phânlớp, hồi quy, phân nhóm,…
a Phương pháp quy nạp (Induction)
Một cơ sở dữ liệu là một kho thông tin nhưng các thông tin quan trọng hơn cũng cóthể được suy diễn từ kho thông tin đó Có hai việc chính để thực hiện việc này làsuy diễn và quy nạp
- Phương pháp suy diễn: Nhằm rút ra thông tin là kết quả logic của các thông
tin trong cơ sở dữ liệu Ví dụ như toán tử liên kết áp dụng cho hai bảng quan
hệ, bảng đầu chứa thông tin về các nhân viên và các phòng ban, bảng thứ haichứa thông tin về các phòng ban và các trưởng phòng Như vậy sẽ suy ra mốiquan hệ giữa các nhân viên và trưởng phòng Phương pháp suy diễn dựa trêncác sự kiện chính xác để suy ra các tri thức mới từ các thông tin cũ Mẫuchiết xuất được bằng cách sử dụng phương pháp này thường là các luật suydiễn
- Phương pháp quy nạp: Phương pháp quy nạp suy ra các thông tin được sinh
ra từ cơ sở dữ liệu Có nghĩa là nó tự tìm kiếm, tạo mẫu và sinh ra tri thứcchứ không phải bắt đầu với các tri thức đã biết trước Các thông tin màphương pháp này đem lại là các thông tin hay các tri thức cấp cao diễn tả vềcác đối tượng trong cơ sở dữ liệu Phương pháp này liên quan đến việc tìmkiếm các mẫu trong cơ sở dữ liệu
Trong khai phá dữ liệu, quy nạp được sử dụng trong cây quyết định và tạoluật
b Cây quyết định và luật
- Cây quyết định: Cây quyết định là một mô tả tri thức dạng đơn giản nhằm
phân các đối tượng dữ liệu thành một số lớp nhất định Các nút của cây đượcgán nhãn là tên các thuộc tính, các cạnh được gán các giá trị có thể của các
Trang 8thuộc tính, các lá miêu tả các lớp khác nhau Các đối tượng được phân lớptheo các đường đi trên cây, qua các cạnh tương ứng với giá trị của thuộc tínhcủa đối tượng tới lá Hình 3.10 mô tả một mẫu đầu ra có thể của quá trìnhkhai phá dữ liệu khách hàng xin vay vốn.
- Tạo luật: Các luật được tạo ra nhằm suy diễn một số mẫu dữ liệu có ý nghĩa
về mặt thống kê Các luật có dạng Nếu P thì Q với P là mệnh đề đúng với
phần dữ liệu trong cơ sở dữ liệu, Q là mệnh đề dự đoán Ví dụ ta có một mẫuphát hiện được bằng phương pháp tạo luật: Nếu giá 1 cân táo thấp hơn 5000đồng thì số lượng táo bán ra sẽ tăng 5% Những luật như thế này được sửdụng rất rộng rãi trong việc miêu tả tri thức trong hệ chuyên gia Chúng cóthuận lợi là dễ hiểu đối với người sử dụng
Cây quyết định và luật có ưu điểm là hình thức miêu tả đơn giản, mô hình suy diễnkhá dễ hiểu đối với người sử dụng Tuy nhiên, giới hạn của nó là miêu tả cây và luậtchỉ có thể biểu diễn được một số dạng chức năng và vì vậy giới hạn cả về độ chínhxác của mô hình Cho đến nay, đã có rất nhiều giải thuật suy diên sử dụng các luật
và cây quyết định được áp dụng trong máy học và trong thống kê
c Phát hiện các luật kết hợp
Phương pháp này nhằm phát hiện ra các luật kết hợp giữa các thành phần dữ liệutrong cơ sở dữ liệu Mẫu đầu ra của giải thuật khai phá dữ liệu là tập luật kết hợptìm được Ta có thể lấy một số ví dụ đơn giản về luật kết hợp như sau: Sự kết hợpgiữa hai thành phần A và B có nghĩa là sự xuất hiện của A trong bản ghi kéo theo
sự xuất hiện của B trong cùng bản ghi đó: A B
Trang 9Cho một lược đồ R = {A1,…Ap} các thuộc tính với miền giá trị {0,1}, và mộtquan hệ r trên R Một tập luật kết hợp trên r được mô tả dưới dạng X B với X
R và BR\X Về mặt trực giác, ta có thể phát biểu ý nghĩa của luật như sau: nếumột bản ghi của bảng r có giá trị 1 tại mỗi thuộc tính thuộc X thì giá trị của thuộctính B cũng là 1 trong cùng bản ghi đó Ví dụ như ta có tập cơ sở dữ liệu về các mặthàng bán trong siêu thị, các dòng tương ứng với các ngày bán hàng, các cột tươngứng với các mặt hàng thì giá trị 1 tại ô (20/10, bánh mì) xác định rằng bánh mì đãđược bán ngày hôm đó và cũng kéo theo sự xuất hiện giá trị 1 tại ô (20/10, bơ)
Cho WR, đặt s(W,r) là tần số xuất hiện của W trong r được tính bằng tỷ lệcủa các dòng trong r có giá trị 1 tại mỗi cột thuộc W Tần số xuất hiện của luật X
B trong r được định nghĩa là s(X{B},r) còn gọi là độ hỗ trợ của luật, độ tin cậycủa luật là s(X{B},r)/s(X,r), ở đây X có thể gồm nhiều thuộc tính, B là giá trịkhông cố định Nhờ vậy mà không xảy ra việc tạo ra các luật không mong muốntrước khi quá trình tìm kiếm bắt đầu Điều đó cũng cho thấy không gian tìm kiếm
có kích thước tăng theo hàm mũ của số lượng các thuộc tính ở đầu vào Do vậy cầnphải chú ý khi thiết kế dữ liệu cho việc tìm kiếm các luật kết hợp
Nhiệm vụ của việc phát hiện các luật kết hợp là phải tìm tất cả các luật X B saocho tần số của luật không nhỏ hơn ngưỡng cho trước và độ tin cậy của luật khôngnhỏ hơn ngưỡng cho trước Từ một cơ sở dữ liệu ta có thể tìm được hàng nghìnthậm chí hàng trăm nghìn các luật kết hợp
Ta gọi một tập con X R là phổ biến trong r nếu thoả mãn điều kiện s(X,r) .
Nếu biết tất cả các tập phổ biến trong r thì việc tìm kiếm các luật kết hợp rất dễdàng Vì vậy, giải thuật tìm kiếm các luật kết hợp trước tiên đi tìm tất cả các tập phổbiến này, sau đó tạo dựng dần các luật kết hợp bằng cách ghép dần các tập thuộctính dựa trên mức độ phổ biến
Giải thuật tìm kiếm các luật kết hợp tạo ra số luật ít nhất phải bằng số các tậpthường xuyên và nếu như một tập thường xuyên có kích thước K thì phải có ít nhất
là 2K luật kết hợp Thông tin về các tập thường xuyên được sử dụng để ước lượng
độ tin cậy của các tập luật kết hợp
Trang 10d Gom cụm (clustering)
Kỹ thuật phân nhóm là kỹ thuật phân chia dữ liệu sao cho mỗi phần hoặc mỗi nhómgiống nhau theo một tiêu chuẩn nào đó Mối quan hệ thành viên của các nhóm cóthể dựa trên mức độ giống nhau của các thành viên và từ đó xây dựng nên các luậtràng buộc giữa các thành viên trong nhóm Một kỹ thuật phân nhóm khác là xâydựng nên các hàm đánh giá thuộc tính của các thành phần như là hàm của các tham
số của các thành phần Phương pháp này được gọi là phương pháp phân hoạch tối
ưu (optimal partitioning) Một ví dụ ứng dụng của phương pháp phân nhóm theo độgiống nhau là cơ sở dữ liệu khách hàng, ứng dụng của phương pháp tối ưu ví dụnhư phân nhóm khách hàng theo số các tham số và các nhóm thuế tối ưu có đượckhi thiết lập biểu thuế bảo hiểm
Mẫu đầu ra của quá trình khai phá dữ liệu sử dụng kỹ thuật này là các tập mẫu chứacác dữ liệu có chung những tính chất nào đó được phân tách từ cơ sở dữ liệu Khicác mẫu được thiết lập, chúng có thể được sử dụng để tái tạo các tập dữ liệu ở dạng
dễ hiểu hơn, đồng thời cũng cung cấp các nhóm dữ liệu cho các hoạt động cũng nhưcông việc phân tích Đối với cơ sở dữ liệu lớn, việc lấy ra các nhóm này là rất quantrọng
e Mạng neuron
Mạng neuron là một tiếp cận tính toán mới liên quan đến việc phát triển các cấu trúctoán học với khả năng lọc Các phương pháp là kết quả của việc nghiên cứu môhình học của hệ thống thần kinh con người Mạng neuron có thể đưa ra ý nghĩa từcác dữ liệu phức tạp hoặc không chính xác và có thể được sử dụng để chiết xuất cácmẫu và phát hiện ra các xu hướng quá phức tạp mà con người cũng như các kỹ thuậtmáy tính khác không thể phát hiện được
Khi đề cập đến khai thác dữ liệu, người ta thường đề cập nhiều đến mạng neuron.Tuy mạng neuron có một số hạn chế gây khó khăn trong việc áp dụng và triển khainhưng nó cũng có những ưu điểm đáng kể Một trong số những ưu điểm phải kể đếncủa mạng neuron là khả năng tạo ra các mô hình dự đoán có độ chính xác cao, cóthể áp dụng được cho rất nhiều loại bài toán khác nhau đáp ứng được các nhiệm vụ
Trang 11đặt ra của khai phá dữ liệu như phân lớp, phân nhóm, mô hình hoá, dự báo các sựkiện phụ thuộc vào thời gian,…
Đặc điểm của mạng neuron là không cần gia công dữ liệu nhiều trước khi bắt đầuquá trình học như các phương pháp khác Tuy nhiên, để có thể sử dụng mạngneuron có hiệu quả cần phải xác định các yếu tố khi thiết kế mạng như:
Mạng neuron được đóng gói với những thông tin trợ giúp của các chuyên gia đángtin cậy và được các chuyên gia đảm bảo các mô hình này làm việc tốt Sau khi học,mạng có thể được coi là một chuyên gia trong lĩnh vực thông tin mà nó vừa đượchọc
Những thách thức trong khai khai thác dữ liệu
Khai thác dữ liệu phải làm việc với khối lượng dữ liệu lớn và do từ nhiều nguồnkhác nhau (CSDL, Internet, các thiết bị thu nhận tín hiệu, các loại thiết bị nhậndạng, các loại thiết bị lưu trữ như băng từ, CD…) nên vấn đề tốc độ xử lý là vấn
đề cần quan tâm trước nhất Có hai phương hướng để giải quyết vấn đề này lànâng cao năng lực của phần cứng và cải tiến phần mềm, trong đó việc nghiệncứu đề xuất các thuật toán hiệu quả có khả năng làm việc trên khối lượng dữ liệulớn, và có độ phức tạp tính toán thấp là một hướng nghiên cứu đầy tiềm năng
Từ nhu cầu thực tế trên, gần đây đã xuất hiện nhiều ngành khoa học công nghệ
hỗ trợ KTDL, như tính toán song song, máy tính lượng tử, công nghệ nano, kháttriển thuật toán…
Trang 12CHƯƠNG II: GIỚI THIỆU VỀ KỸ THUẬT PHÂN CỤM DỮ LIỆU
BẰNG THUẬT TOÁN K-MEANS
Phân cụm là kỹ thuật rất quan trọng trong khai phá dữ liệu, nó thuộc lớp cácphương pháp Unsupervised Learning trong Machine Learning Có rất nhiều địnhnghĩa khác nhau về kỹ thuật này, nhưng về bản chất ta có thể hiểu phân cụm là cácqui trình tìm cách nhóm các đối tượng đã cho vào các cụm (clusters), sao cho cácđối tượng trong cùng 1 cụm tương tự (similar) nhau và các đối tượng khác cụm thìkhông tương tự (Dissimilar) nhau
Mục đích của phân cụm là tìm ra bản chất bên trong các nhóm của dữ liệu Cácthuật toán phân cụm (Clustering Algorithms) đều sinh ra các cụm (clusters) Tuynhiên, không có tiêu chí nào là được xem là tốt nhất để đánh hiệu của của phân tíchphân cụm, điều này phụ thuộc vào mục đích của phân cụm như: data reduction,
“natural clusters”, “useful” clusters, outlier detection
Kỹ thuật phân cụm có thể áp dụng trong rất nhiều lĩnh vực như:
Marketing: Xác định các nhóm khách hàng (khách hàng tiềm năng, kháchhàng giá trị, phân loại và dự đoán hành vi khách hàng,…) sử dụng sản phẩmhay dịch vụ của công ty để giúp công ty có chiến lược kinh doanh hiệu quảhơn;
Biology: Phận nhóm động vật và thực vật dựa vào các thuộc tính của chúng;
Libraries: Theo dõi độc giả, sách, dự đoán nhu cầu của độc giả…;
Insurance, Finance: Phân nhóm các đối tượng sử dụng bảo hiểm và các dịch
vụ tài chính, dự đoán xu hướng (trend) của khách hàng, phát hiện gian lận tàichính (identifying frauds);
WWW: Phân loại tài liệu (document classification); phân loại người dùngweb (clustering weblog);