Xem mẫu

  1. GVHD: Nguyễn Mạnh Cường TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO BÀI TẬP LỚN Môn Khai phá dữ liệu Phân lớp dữ liệu số bằng giải thuật K­NN Giáo viên hướng dẫn: Nguyễn Mạnh Cường Nhóm 5  Lớp Kỹ thuật phần mềm 1 – K7 Thành viên:  Nguyễn Hà Anh Dũng Nguyễn Quang Long Nguyễn Thị Thảo Nhóm 5  1
  2. GVHD: Nguyễn Mạnh Cường Hà Nội, tháng 5 năm 2016 Lời nói đầu Trong thời buổi hiện đại ngày nay, công nghệ  thông tin cũng như  những  ứng dụng của nó không ngừng phát triển, lượng thông tin và cơ sở dữ liệu được   thu thập và lưu trữ  cũng tích lũy ngày một nhiều lên. Con người cũng vì thế  mà  cần có thông tin với tốc độ  nhanh nhất để  đưa ra quyết định dựa trên lượng dữ  liệu khổng lồ đã có. Các phương pháp quản trị và khai thác cơ sở dữ liệu truyền   thống ngày càng không đáp  ứng được thực tế, vì thế, một khuynh hướng kỹ  thuật mới là Kỹ  thuật phát hiện tri thức và khai phá dữ  liệu nhanh chóng được   phát triển. Khai phá dữ  liệu đã và đang được nghiên cứu,  ứng dụng trong nhiều lĩnh  vực khác nhau  ở  các nước trên thế  giới.  Ở  Việt Nam, kỹ  thuật này đang được  nghiên cứu và dần đưa vào  ứng dụng. Khai phá dữ  liệu là một bước trong quy   trình phất hiện tri thức. Hiện nay, mọi người không ngừng tìm tòi các kỹ  thuật   để thực hiện khai phá dữ liệu một cách nhanh nhất và có được kết quả tốt nhất. Trong bài tập lớn này, chúng em tìm hiểu và trình bày về một kỹ thuật trong khai   phá dữ liệu để phân lớp dữ liệu cũng như tổng quan về khai phá dữ liệu, với đề  tài “ Phân lớp dữ liệu số bằng giải thuật K­NN”. Trong quá trình làm bài tập lớn này, chúng em xin gửi lời cảm  ơn đến  thầy giáo Nguyễn Mạnh Cường. Thầy đã rất tận tình hướng dẫn chi tiết cho  chúng em, những kiến thức thầy cung cấp rất hữu ích. Chúng em rất mong nhận  được những góp ý từ thầy. Chúng em xin chân thành cảm ơn! Sinh viên nhóm 5. Nhóm 5  2
  3. GVHD: Nguyễn Mạnh Cường Chương 1: Tổng quan về Khai phá dữ liệu 1.1. Khái niệm cơ bản - Khai phá dữ liệu là gì ? Khai phá dữ  liệu là một quá trình xác định các mẫu tiềm  ẩn có tính hợp lệ,   mới lạ,  có ích và có thể hiểu được trong một khối dữ liệu rất lớn. - Khai phá tri thức từ CSDL ( Knowledge Discovery  in Database) Khai phá tri thức từ CSDL gồm 5 bước B1: Lựa chọn CSDL B2: Tiền xử lý B3: Chuyển đổi B4: Khai phá dữ liệu B5: Diễn giải và đánh giá  Khai phá dữ liệu là 1 bước trong quá trình khai phá tri thức từ CSDL - Các ứng dụng của khai phá dữ liệu Nhóm 5  3
  4. GVHD: Nguyễn Mạnh Cường Phát hiện tri thức và khai phá dữ  liệu liên quan đến nhiều ngành, nhiều lĩnh  vực: thống kê, trí tuệ nhân tạo, cơ  sở dữ liệu, thuật toán, tính toán song song và  tốc độ  cao, thu thập tri thức cho các hệ  chuyên gia, quan sát dữ  liệu... Đặc biệt   phát hiện tri thức và khai phá dữ liệu rất gần gũi với lĩnh vực thống kê, sử dụng  các phương pháp thống kê để mô hình dữ liệu và phát hiện các mẫu, luật ... Ngân  hàng dữ liệu (Data Warehousing) và các công cụ phân tích trực tuyến (OLAP­ On  Line Analytical Processing) cũng liên quan rất chặt chẽ với phát hiện tri thức và  khai phá dữ liệu.  Khai phá dữ liệu có nhiều ứng dụng trong thực tế, ví dụ như: Bảo hiểm, tài chính và thị  trường chứng khoán: phân tích tình hình tài  chính và dự  báo giá của các loại cổ  phiếu trong thị  trường chứng khoán.   Danh mục vốn và giá, lãi suất, dữ liệu thẻ tín dụng, phát hiện gian lận, ... Thống kê, phân tích dữ liệu và hỗ trợ ra quyết định. Điều trị y học và chăm sóc y tế: một số thông tin về chuẩn đoán bệnh lưu  trong các hệ thống quản lý bệnh viện. Phân tích mối liên hệ giữa các triệu   chứng  bệnh,   chuẩn  đoán  và   phương  pháp  điều  trị   (chế   độ   dinh  dưỡng,   thuốc, ...) Sản xuất và chế biến: Quy trình, phương pháp chế biến và xử lý sự cố. Text mining và Web mining: Phân lớp văn bản và các trang Web, tóm tắt   văn bản,... Lĩnh vực khoa học: Quan sát thiên văn, dữ liệu gene, dữ liệu sinh vật học,   tìm kiếm, so sánh các hệ  gene và thông tin di truyền, mối liên hệ  gene và   một số bệnh di truyền, ... Mạng viễn thông: Phân tích các cuộc gọi điện thoại và hệ thống giám sát  lỗi, sự cố, chất lượng dịch vụ, ... - Các bước của quá trình khai phá dữ liệu Quy trình phát hiện tri thức thường tuân theo các bước sau: Nhóm 5  4
  5. GVHD: Nguyễn Mạnh Cường Bước thứ nhất: Hình thành, xác định và định nghĩa bài toán. Là tìm hiểu  lĩnh vực ứng dụng từ đó hình thành bài toán, xác định các nhiệm vụ cần phải  hoàn thành. Bước này sẽ quyết định cho việc rút ra được các tri thức hữu ích và  cho phép chọn các phương pháp khai phá dữ liệu thích hợp với mục đích ứng  dụng và bản chất của dữ liệu. Bước thứ hai: Thu thập và tiền xử lý dữ liệu. Là thu thập và xử lý thô, còn  được gọi là tiền xử lý dữ liệu nhằm loại bỏ nhiễu (làm sạch dữ liệu), xử lý việc  thiếu dữ liệu (làm giàu dữ liệu), biến đổi dữ liệu và rút gọn dữ liệu nếu cần  thiết, bước này thường chiếm nhiều thời gian nhất trong toàn bộ qui trình phát  hiện tri thức. Do dữ liệu được lấy từ nhiều nguồn khác nhau, không đồng nhất,  … có thể gây ra các nhầm lẫn. Sau bước này, dữ liệu sẽ nhất quán, đầy đủ,  được rút gọn và rời rạc hoá. Bước thứ ba: Khai phá dữ liệu, rút ra các tri thức. Là khai phá dữ liệu, hay  nói cách khác là trích ra các mẫu hoặc/và các mô hình ẩn dưới các dữ liệu. Giai  đoạn này rất quan trọng, bao gồm các công đoạn như: chức năng, nhiệm vụ và  mục đích của khai phá dữ liệu, dùng phương pháp khai phá nào? Thông thường,  các bài toán khai phá dữ liệu bao gồm: các bài toán mang tính mô tả ­ đưa ra tính  chất chung nhất của dữ liệu, các bài toán dự báo ­ bao gồm cả việc phát hiện các  suy diễn dựa trên dữ liệu hiện có. Tuỳ theo bài toán xác định được mà ta lựa  chọn các phương pháp khai phá dữ liệu cho phù hợp. Bước thứ tư: Sử dụng các tri thức phát hiện được. Là hiểu tri thức đã tìm  được, đặc biệt là làm sáng tỏ các mô tả và dự đoán. Các bước trên có thể lặp đi  lặp lại một số lần, kết quả thu được có thể được lấy trung bình trên tất cả các  Nhóm 5  5
  6. GVHD: Nguyễn Mạnh Cường lần thực hiện. Các kết quả của quá trình phát hiện tri thức có thể được đưa vào  ứng dụng trong các lĩnh vực khác nhau do các kết quả có thể là các dự đoán. 1.2. Một số kỹ thuật Khai phá dữ liệu a. Kỹ thuật khai phá luật kết hợp Trong khai phá dữ liệu, mục đích của luật kết hợp là tìm ra các mối quan hệ giữa   các đối tượng trong khối lượng lớn dữ liệu. Để  khai phá luật kết hợp có rất nhiều thuật toán, nhưng dùng phổ  biến nhất là   thuật toán Apriori. Đây là thuật toán khai phá tập phổ biến trong dữ liệu giao dịch  để phát hiện các luật kết hợp dạng khẳng định nhị phân và được sử dụng để xác  định, tìm ra các luật kết hợp trong dữ liệu giao dịch. Ngoài ra, còn có các thuật toán FP­growth, thuật toán Partition,… b. Kỹ thuật phân lớp Trong kỹ thuật phân lớp gồm có các thuật toán: - Phân lớp bằng cây quyết định (giải thuật ID3, J48): phân lớp dữ liệu dựa  trên việc lập nên cây quyết định, nhìn vào cây quyết định có thể ra quyết  định dữ liệu thuộc phân lớp nào. - Phân lớp dựa trên xác suất (Naïve Bayesian): dựa trên việc giả định các  thuộc tính độc lập mạnh với nhau qua việc sử dụng định lý Bayes. - Phân lớp dựa trên khoảng cách (giải thuật K – láng giềng): làm như láng  giềng làm, dữ liệu sẽ được phân vào lớp của k đối tượng gần với dữ liệu  đó nhất. - Phân lớp bằng SVM: phân lớp dữ liệu dựa trên việc tìm ra một siêu phẳng  “tốt nhất” để tách các lớp dữ liệu trên không gian nhiều chiều hơn. c. Kỹ thuật phân cụm Phân cụm dữ liệu là cách phân bố các đối tượng dữ liệu vào các nhóm/ cụm sao   cho các đối tượng trong một cụm thì giống nhau hơn các phần tử khác cụm, gồm  có một số phương pháp phân cụm cơ bản như: + Phân cụm bằng phương pháp K­mean: tìm ra tâm của các cụm mà khoảng cách   của tâm đó đến các đối tượng, dữ liệu khác là ngắn. + Phân cụm trên đồ thị Nhóm 5  6
  7. GVHD: Nguyễn Mạnh Cường Ngoài ra, khai phá dữ liệu có rất nhiều kỹ thuật, nhưng đây là những kỹ thuật cơ  bản và đơn giản trong khai phá dữ liệu mà chúng em được tìm hiểu. Nhóm 5  7
  8. GVHD: Nguyễn Mạnh Cường Chương 2: Giải thuật K láng giềng gần nhất (K­NN) 2.1. Tổng quan về K­NN Bài toán phân loại dữ  liệu là một trong những bài toán thường gặp trong   cuộc sống và kĩ thuật, có rất nhiều cách tiếp cận và giải thuật được đưa ra để  giải quyết bài toán phân lớp. Một trong số  đó là thuật toán láng giềng gần k­ NN(k­Nearest Neighbors). Thuật toán K­ láng giềng gần nhất ( viết tắt là K­NN)  là thuật toán có mục đích   phân loại lớp cho một mẫu mới ( Query Point) dựa trên các thuộc tính và các mẫu  sẵn có ( Training Data) , các mẫu này được nằm trọng một hệ gọi là không gian   mẫu.   Một đối tượng được phân lớp dựa vào K láng giềng của nó. K là số  nguyên  dương được xác định trước khi thực  hiện thuật toán. Người ta thường dùng   khoảng cách Euclidean để tính khoảng cách giữa các đối tượng với mẫu mới, sau   đó chuẩn đoán mẫu mới thuộc phân lớp nào dựa vào số  k láng giềng xác định   trước có khoảng cách gần mẫu mới nhất so với các mẫu khác. 2.2. Mô tả thuật toán K­NN Các mẫu được mô tả  bằng n – chiều   thuộc tính số. Mỗi mẫu đại diện  cho một điểm trong một chiều không gian n – chiều. Theo cách này tất cả  các   mẫu được lưu trữ trong một mô hình không gian n – chiều. Các bước thực hiện của Thuật toán K­NN được mô tả như sau: Xác định giá trị tham số K ( số láng giềng gần nhất). Tính khoảng cách giữa đối tượng cần phân lớp (Query Point) với   tất   cả   các   đối   tượng   trong   các   mẫu   có   sẵn   (Trainning   Data)   ( Thường sử dụng khoảng cách Euclidean). Sắp xếp khoảng cách theo thứ tự tăng dần và xác định K láng giềng   gần nhất với Query Point. Lấy tất cả các lớp của K láng giềng gần nhất đã xác định. Dựa vào phần lớn lớp của láng giềng gần nhất để xác định lớp cho   Query Ponit. Minh họa về K­NN: Nhóm 5  8
  9. GVHD: Nguyễn Mạnh Cường Trong hình dưới đây, Trainning Data được mô tả bằng dấu (+) và dấu (­),   đối tượng cần được xác định lớp cho nó (Query Point) là hình mặt cười đỏ.  Nhiệm vụ  của  ta là  ước lượng lớp của Query Point dựa vào việc lựa chọn số  láng giềng gần nhất với nó. Nói cách khác ta muốn biết liệu Query Point sẽ được   phân vào lớp (+) hay lớp (­).  Ta thấy rằng: Có 5 Nearest Neightbor: Kết quả là (–) :Query Point được xếp vào lớp dấu (–) vì   trong 5 láng giềng gần nhất với nó thì có 3 đối tượng thuộc lớp (–) nhiều hơn   lớp (+) chỉ có 2 đối tượng.) 2.3. Đánh giá ưu, nhược điểm của thuật toán - Ưu điểm: + Tư tưởng đơn giản, thích hợp với hệ thống nhỏ. + Dễ hiểu, dễ cài đặt - Nhược điểm + Giải thuật K­NN thích hợp cho việc phân loại dữ  liệu chứ  giải thuật này   không có khả năng phân tích dữ liệu để tìm ra các thông tin có giá trị. Trong quá   trình K­NN hoạt động, nó phải tính toán "khoảng cách" từ  dữ  liệu cần xác định  Nhóm 5  9
  10. GVHD: Nguyễn Mạnh Cường loại đến tất cả các dữ liệu trong tập huấn luyện (training set) ==> Nếu tập huấn   luyện quá lớn, điều đó sẽ làm cho thời gian chạy của chương trình sẽ rất lâu. 2.4. Ví dụ minh họa Bây giờ  ta sẽ  đi vào chi tiết cách thức hoạt động của giải thuật k­NN.  Đầu tiên, chúng ta phải chuẩn bị một tập huấn luyện(training set) mà tất cả  các  dữ liệu trong tập đó đều biết trước được thuộc lớp nào. Người dùng sẽ đưa vào   một dữ  liệu chưa biết được thuộc lớp nào. K­NN sẽ  so sánh dữ  liệu đó với tất  cả dữ liệu trong tập huấn luyện và chọn ra k dữ liệu gần giống nhất. Trong k dữ  liệu đó, k­NN sẽ  xem xét xem lớp nào là lớp chiếm đa số  ­­> và sẽ  đưa ra kết   luận rằng tập dữ liệu cần xác định thuộc loại đó.  Ví dụ được tham khảo trong cuốn “Machine learning in action” của Petter   Harington. Ta sẽ  đi phân loại xem một bộ  phim thuộc thể  loại phim hành động hay   phim tình cảm. Việc phân loại phim sẽ được xác định bằng cách đếm số  lượng   cú  đá   hoặc   số   lượng  nụ   hôn   trong   phim.   Ở   đây,   chúng   ta   đã   một  tập  huấn  luyện(training set), tập đó chứa một số phim đã biết số lượng cú đá, nụ hôn trong   phim đó, và loại phim được cho trong bảng sau: Tên phim Số lượng cú đá Số lượng nụ hôn Loại phim California Man 3 104 Tình cảm He isn't really into  2 100 Tình cảm dudes Beautiful Woman 1 81 Tình cảm Kevin Longblade 101 10 Hành động Robo Slayer 3000 99 5 Hành động Amped II 98 2 Hành động Anh 18 90 ??? Ta đã biết được số lượng cú đá, số lượng nụ hôn trong phim. Nhiệm vụ của ta ở  đây là xác định xem phim ? thuộc thể loại nào? Đầu tiên chúng ta sẽ xác định xem sự giống nhau của phim  “Anh” với các  phim khác như thế nào. Để làm được điều đó, ta sẽ sử dụng Euclidean distance. Euclidean distance là việc chúng ta tìm khoảng cách giữa hai điểm trong  không gian, ví dụ  cho 2  điểm P1(x1,y1) và P2(x2,y2) thì Euclidean distance sẽ  được tính theo công thức: Nhóm 5  10
  11. GVHD: Nguyễn Mạnh Cường d =  Để  áp dụng trong euclidean distance vào trong trường hợp này, chúng ta sẽ  coi   mỗi phim sẽ được biểu diễn bởi một điểm trong tọa độ  Oxy với số lượng cú đá  là tọa độ x và số lượng nụ hôn là tọa độ y. Điều đó có nghĩa là phim “California  Man” sẽ được biểu diễn bởi điểm (3, 104); phim “ He isn't really into dudes” sẽ  được biểu diễn bởi điểm (2, 100), .. Gọi d là euclidean distance thì: “California Man”: d = =20.5 “He isn't really into dudes”: d=  = 18.7 “Beautiful Woman”: d =   =19.2 “Kevin Longblade”: d =  = 115.3 “Robo Slayer 3000”: d =  = 117.4 “Amped II”: d =  = 118.9 Sau khi tính toán ta được bảng: Tên phim Euclidean distance California Man 20.5 He isn’t really into dudes 18.7 Beautiful Woman 19.2 Kevin Longblade 115.3 Robo Slayer 3000 117.4 Amped II 118.9 Chúng ta đã có khoảng cách euclidean từ phim chưa biết lớp tới từng phim trong   tập huấn luyện, giờ chúng ta sẽ tìm ra k láng giềng gần nhất bằng cách sắp xếp  các phim theo thứ  tự euclidean distance từ nhỏ đến lớn. Giả  sử  k = 3 thì 3 láng   giềng gần nhất, đó là các phim “California Man”, “He isn't really into dudes” và  “Beautiful Woman”. Thuật toán k­NN sẽ  lấy loại phim nào chiếm  ưu thế  trong  các láng giếng gần nhất để làm loại phim cho phim cần được xác định lớp. Vì 3   phim trên đều là thể  loại Tình cảm ==> Phim “Anh” thuộc thể  loại  phim tình  cảm. Nhóm 5  11
  12. GVHD: Nguyễn Mạnh Cường Nhóm 5  12
  13. GVHD: Nguyễn Mạnh Cường Chương 3: Thực hiện giải thuật K­NN trên Weka 3.1. Tổng quan về Weka Weka (viết tắt của Waikato Environment for Knowledge Analysis) là một  bộ   phần   mềm học   máy được Đại   học   Waikato, New   Zealand phát   triển  bằng Java. Weka là phần mềm tự do phát hành theo Giấy phép công cộng GNU. Theo KDNuggets (2005): Weka là sản phẩm khai thác dữ  liệu được sử  dụng nhiều nhất và hiệu quả nhất năm 2005. Những tính năng nổi bật của Weka: Hỗ trợ nhiều thuật toán máy học và khai thác dữ liệu. Được tổ chức theo dạng mã nguồn mở. Độc lập với môi trường ( do sử dụng máy ảo java JVM). Dễ sử dụng, kiến trúc dạng thư viện dễ dàng trong việc xây dựng  các ứng dụng thực nghiệm. Các chức năng của Weka: Nhóm 5  13
  14. GVHD: Nguyễn Mạnh Cường Các chức năng chính của Weka Explorer thể  hiện trong các thẻ  (tab) của   màn hình chính, bao gồm: Preprocess:  Cho phép mở, điều chỉnh, lưu một tập tin dữ  liệu, thẻ  này   chứa các thuậtt toán áp dụng trong tiền xử lý dữ liệu. Classify: Cung cấp các mô hình phân loại dữ liệu hoặc hồi quy. Cluster: Cung cấp các mô hình gom cụm. Associate: Khai thác tập phổ biến và luật kết hợp. SelectAttribites:  Lựa chọn các thuộc tính thích hợp nhất trong 1 tập dữ  liệu. Visualize: Thể hiện dữ liệu dưới dạng biểu đồ. Khai phá dữ liệu: * Sử dụng thẻ Preprocess (1) Open file…: Mở một tập tin dữ liệu. (2) Edit…: Hiển thị và chỉnh sửa dữ liệu bằng tay nếu cần thiết. (3) Save…:  Lưu dữ  liệu hiện tại ra tập tin. Weka Explorer hỗ trợ  một số định  dạng trong đó có 2 định dạng chính cần quan tâm là *.arff và *.csv  (4) Filter: Các tác vụ tiền xử lý được gọi là các bộ lọc( thuật toán) Nhóm 5  14
  15. GVHD: Nguyễn Mạnh Cường (5) Selected attribute: Thông tin về thuộc tính đang được chọn: o Type: Kiểu dữ  liệu của thuộc tính (Numeric: Dạng số, Nominal:  Dạng rời rạc/phi số). o Missing: Số mẫu thiếu giá trị trên thuộc tính đang xét. o Distinct: Số giá trị phân biệt. o Unique: Số mẫu không có giá trị trùng với mẫu khác. o Bảng thống kê:  Dạng phi số:Thể hiện các giá trị và tần suất của mỗi giá trị  Dạng số:Thể hiện một số đại lượng thống kê như giá trị nhỏ nhất,  lớn nhất, giá trị trung bình và độ lệch chuẩn. Nhóm 5  15
  16. GVHD: Nguyễn Mạnh Cường 3.2. Thực hiện thuật toán K­NN trong Weka Để thực hiện thuật toán K­NN trên Weka, chúng em chọn bộ dữ liệu Iris sẵn có  trong Weka để trình bày. Trước tiên, để thực hiện thuật toán, ta mở Weka, chọn  Explorer, chọn Open file, dữ liệu được lưu: C:\Program Files\Weka­3­6\data.  Sau khi chọn được bộ dữ liệu, màn hình hiển thị như sau: Để thực hiện K­NN trên Weka, ta chọn tag Classify rồi Choose IBk: Nhóm 5  16
  17. GVHD: Nguyễn Mạnh Cường Chúng ta có thể chọn số K và xác định công thức tính khoảng cách cho thuật tán  bằng cách click đúp vào ô thuật toán một cửa sổ hiện ra như sau: Ngoài ra, chúng ta còn thực hiện chức năng KnowledgeFlow của Weka hiển thị  kiến thức: Nhóm 5  17
  18. GVHD: Nguyễn Mạnh Cường 3.3. Một số kết quả đạt được Sau khi thực hiện áp dụng giải thuật K­NN trên Weka với bộ dữ liệu Iris,  ta thu được kết quả như sau: Nhóm 5  18
  19. GVHD: Nguyễn Mạnh Cường Kết quả với k=1 Nhóm 5  19
  20. GVHD: Nguyễn Mạnh Cường Kết quả với k=2 Kết quả với k=5 Nhóm 5  20
nguon tai.lieu . vn