1. Trang chủ
  2. » Luận Văn - Báo Cáo

Lý thuyết và thực nghiệm trong khai phá dữ liệu trong phân lớp bằng dữ liệu nước ngoài và của Việt Nam

13 44 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 13
Dung lượng 652,74 KB
File đính kèm DA_Cuoiky_khai_pha_data.rar (628 KB)

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Khai phá dữ liệu (data mining) là quá trình tính toán để tìm ra các mẫu trong các bộ dữ liệu lớn liên quan đến các phương pháp tại giao điểm của máy học, thống kê và các hệ thống cơ sở dữ liệu. Đây là một lĩnh vực liên ngành của khoa học máy tính. Mục tiêu tổng thể của quá trình khai thác dữ liệu là trích xuất thông tin từ một bộ dữ liệu và chuyển nó thành một cấu trúc dễ hiểu để sử dụng tiếp. Ngoài bước phân tích thô, nó còn liên quan tới cơ sở dữ liệu và các khía cạnh quản lý dữ liệu, xử lý dữ liệu trước, suy xét mô hình và suy luận thống kê, các thước đo thú vị, các cân nhắc phức tạp, xuất kết quả về các cấu trúc được phát hiện, hiện hình hóa và cập nhật trực tuyến. Khai thác dữ liệu là bước phân tích của quá trình khám phá kiến thức trong cơ sở dữ liệu.

Trang 1

MÔN HỌC: DATA MINING KHAI PHÁ DỮ LIỆU

ĐỒ ÁN CUỐI KỲ

Nội dung: Lý thuyết và thực nghiệm trong khai phá dữ liệu trong phân lớp

bằng dữ liệu nước ngoài và của Việt Nam

Trang 2

MỤC LỤC

Table of Contents

DANH MỤC HÌNH ẢNH VÀ BẢNG BIỂU 1

LỜI MỞ ĐẦU 2

Phần 1 TỔNG QUAN VỀ CLASSIFICATION 3

1 Khái niệm 3

Phần 2 THỰC NGHIỆM 4

2.1 Dữ liệu nước ngoài 4

2.1.1 Mô tả dữ liệu 4

2.1.2 Phân tích dữ liệu 4

2.1.3 Mô hình áp dụng 5

2.1.3 Kết quả 7

2.2 Dữ liệu Việt Nam 9

2.2.1 Mô tả dữ liệu 9

2.2.2 Áp dụng mô hình 9

2.2.3 Kết quả 10

KẾT LUẬN 10

DANH MỤC TÀI LIỆU THAM KHẢO 11

Trang 3

LỜI MỞ ĐẦU

Khai phá dữ liệu (data mining) là quá trình tính toán để tìm ra các mẫu trong các bộ dữ liệu lớn liên quan đến các phương pháp tại giao điểm của máy học, thống kê và các hệ thống cơ sở dữ liệu Đây là một lĩnh vực liên ngành của khoa học máy tính Mục tiêu tổng thể của quá trình khai thác dữ liệu là trích xuất thông tin từ một bộ dữ liệu và chuyển nó thành một cấu trúc dễ hiểu để sử dụng tiếp Ngoài bước phân tích thô, nó còn liên quan tới cơ sở dữ liệu và các khía cạnh quản lý dữ liệu, xử lý dữ liệu trước, suy xét

mô hình và suy luận thống kê, các thước đo thú vị, các cân nhắc phức tạp, xuất kết quả về các cấu trúc được phát hiện, hiện hình hóa và cập nhật trực tuyến Khai thác dữ liệu là bước phân tích của quá trình "khám phá kiến thức trong cơ sở dữ liệu"

Trong Data mining có nhiều phương pháp khai phá dữ liệu khác nhau, nhưng chúng hiện thời có các nhóm chính sau:

 Phân loại (Classification): Là phương pháp dự báo, cho phép phân loại một đối tượng vào một hoặc một số lớp cho trước

 Hồi qui (Regression): Khám phá chức năng học dự đoán, ánh xạ một mục dữ liệu thành biến dự đoán giá trị thực

 Phân nhóm (Clustering): Một nhiệm vụ mô tả phổ biến trong đó người ta tìm cách xác định một tập hợp hữu hạn các cụm để mô tả dữ liệu

 Tổng hợp (Summarization): Một nhiệm vụ mô tả bổ sung liên quan đến phương pháp cho việc tìm kiếm một mô tả nhỏ gọn cho một bộ (hoặc tập hợp con) của dữ liệu

 Mô hình ràng buộc (Dependency modeling): Tìm mô hình cục bộ mô tả các phụ thuộc đáng kể giữa các biến hoặc giữa các giá trị của một tính năng trong tập dữ liệu hoặc trong một phần của tập dữ liệu

 Dò tìm biến đổi và độ lệch (Change and Deviation Dectection): Khám phá những thay đổi quan trọng nhất trong bộ dữ liệu

Trong các phương pháp trên, phương pháp Phân loại khá là phổ biến trong điều kiện thực

tế Vì vậy học viên chọn phương pháp Phân loại để thực hiện đồ án cuối kỳ cho môn học Khai phá dữ liệu Trong đồ án này, học viên áp dụng phương pháp Phân loại cho 2 tập dữ liệu: Dữ liệu nước ngoài và dữ liệu Việt Nam Đồ án này bao gồm 3 phần chính

Phần 1: Tổng quan về phương pháp Phân loại (Classification)

Phần 2: Thực hiện phương pháp Classification

Phần 3: Kết luận

Trang 4

Phần 1 TỔNG QUAN VỀ CLASSIFICATION

1 Khái niệm

Ngày nay phân lớp dữ liệu (classification) là một trong những hướng nghiên cứu chính của khai phá dữ liệu Thực tế đặt ra nhu cầu là từ một cơ sở dữ liệu với nhiều thông tin ẩn con người có thể trích rút ra các quyết định nghiệp vụ thông minh Phân lớp và dự đoán là hai dạng của phân tích dữ liệu nhằm trích rút ra một mô hình mô tả các lớp dữ liệu quan trọng hay dự đoán xu hướng dữ liệu tương lai Phân lớp dự đoán giá trị của những nhãn xác định (categorical label) hay những giá trị rời rạc (discrete value), có nghĩa là phân lớp thao tác với những đối tượng dữ liệu mà có bộ giá trị là biết trước Trong khi đó, dự đoán lại xây dựng mô hình với các hàm nhận giá trị liên tục Ví dụ mô hình phân lớp dự báo thời tiết có thể cho biết thời tiết ngày mai là mưa, hay nắng dựa vào những thông số về độ ẩm, sức gió, nhiệt độ,… của ngày hôm nay và các ngày trước đó Hay nhờ các luật về xu hướng mua hàng của khách hàng trong siêu thị, các nhân viên kinh doanh có thể ra những quyết sách đúng đắn về lượng mặt hàng cũng như chủng loại bày bán… Một mô hình dự đoán có thể dự đoán được lượng tiền tiêu dùng của các khách hàng tiềm năng dựa trên những thông tin về thu nhập và nghề nghiệp của khách hàng Trong những năm qua, phân lớp dữ liệu đã thu hút sự quan tâm các nhà nghiên cứu trong nhiều lĩnh vực khác nhau như học máy (machine learning), hệ chuyên gia (expert system), thống kê (statistics) Công nghệ này cũng ứng dụng trong nhiều lĩnh vực khác nhau như: thương mại, nhà băng, maketing, nghiên cứu thị trường, bảo hiểm, y tế, giáo dục Phần lớn các thuật toán ra đời trước đều sử dụng cơ chế dữ liệu cư trú trong bộ nhớ (memory resident), thường thao tác với lượng dữ liệu nhỏ Một số thuật toán ra đời sau này đã sử dụng kỹ thuật cư trú trên đĩa cải thiện đáng kể khả năng mở rộng của thuật toán với những tập dữ liệu lớn lên tới hàng tỉ bản ghi

Trang 5

Phần 2 THỰC NGHIỆM 2.1 Dữ liệu nước ngoài

Dữ liệu nước ngoài học viên lấy từ trang Vincentare Bundock [4]

 Package: Ecdat

 Item: PSID

 Title: Panel Survey of Income Dynamics

 Rows: 4856

 Cols: 8

2.1.1 Mô tả dữ liệu

Một khảo sát vào năm 1993

Số lượng quan sát: 4856

Quan sát: cá nhân

Quốc gia: Hoa Kỳ

Định dạng: Một dataframe chứa các thuộc tính bên dưới như sau:

 intnum: Số phỏng vấn năm 1968

 persnum: Số thứ tự người phỏng vấn

 age: Tuổi

 educatn: Chỉ số giáo dục hoàn tất cao nhất

 earnings: Tổng thu nhập

 hours: Số giờ làm việc trong năm

 kids: Số trẻ em phụ thuộc

 married: Tình trạng hôn nhân

Nguồn: Panel Survey of Income Dynamics

2.1.2 Phân tích dữ liệu

Để phân tích dữ liệu trên, học viên dùng ngôn ngữ R để có thể trực quan hóa, nhằm tìm

mô hình thích hợp cho dữ liệu

Tóm tắt dữ liệu:

> dulieu

=read.csv("/Volumes/DATA/HOC_TAP/CAO_HOC/KhaiPhaDuLieu/Thi/DuLieu/PSID.c

sv")

> summary(dulieu)

Trang 6

 Age: thấp nhất 30 tuổi, nhiều nhất 50 tuổi

 Trình độ học vấn thấp nhất: 0, cao nhất 99

 Thu nhập thấp nhất: 0, cao nhất 240,000

 Số giờ làm việc thấp nhất trong năm: 0 giờ, nhiều nhất 5160 giờ

 Số trẻ em thấp nhất: 0, nhiều nhất 99

Tiền xử lý

Học viên nhân thấy dữ liệu:

 educatn có 1 missing value

 married có 7 tình trạng hôn nhân: divorced, married, NA/DF, never married, no histories, separated, widowed

 hours có dữ liệu cao nhất là 5160 tức là số giờ trong 1 năm

 intnum và persnum không quan trọng trong việc phân lớp dữ liệu vì nó là số liệu

để đánh thứ tự

Chúng ta cần phải qua một bước tiền xử lý dữ liệu để có thể sử dụng được bộ dữ liệu này

Missing value:

Có thểtập dữ liệu của bạn không đầy đủ và khi không có thông tin, chúng ta gọi đó là giá trị thiếu - missing value Trong R các giá trị còn thiếu được mã hóa bằng ký hiệu <NA>

Để xác định các missing value trong tập dữ liệu của bạn, hàm là is.na()

Bây giờ sẽ thấy các lỗi trong bộ dữ liệu:

> is.na(dulieu$low_wind)

Trong bộ dữ liệu chúng ta có 4856 dòng, 1 dòng missing value Missing value nằm ở trường educatn, chúng ta có thể bỏ qua dòng thông tin này vì nó quá nhỏ

Bộ dữ liệu sau khi tiền xử lý có summary như hình minh họa bên dưới

Vì vậy dữ liệu để tính toán phân nhãn bao gồm 5 các thông số sau:

1 age

Trang 7

2 educatn

3 earnings

4 hours

5 kids

2.1.3 Các mô hình áp dụng và huấn luyện

Với dữ liệu như trên, có các nhãn về tình trạng hôn nhân đã được gán nhãn, học viên nhận thấy chúng ta hoàn toàn có thể dự đoán được về tình trạng hôn nhân khi có các thông tin liên quan Đây là dữ liệu có thể khai thác học có giám sát Mô hình áp dụng có các phương pháp cụ thể sau:

 Cây quyết định - Chúng được tổ chức dưới dạng các bộ câu hỏi và câu trả lời trong cấu trúc cây

 Phân loại Naive Bayes - Một mô hình máy học xác suất được sử dụng để phân loại

 Phân loại K-NN - Dựa trên các biện pháp tương tự như khoảng cách, nó phân loại các trường hợp mới

 Support Vector Machines - Đây là một bộ phân loại tuyến tính nhị phân không có xác suất, xây dựng một mô hình để phân loại một trường hợp thành một trong hai loại

Học viên chọn Phân loại K-NN

Phân loại K-NN - phần này sơ lược về thuật toán mà mình sẽ làm

1 Hàng xóm gần nhất mà chúng ta muốn kiểm tra sẽ được gọi là giá trị "k" Nếu k bằng 5 sau đó bạn kiểm tra 5 hàng xóm gần nhất để xác định lớp Nếu phần lớn hàng xóm thuộc về một loại nhất định trong số năm hàng xóm gần nhất đó, thì đó

sẽ được chọn làm danh mục của đối tượng sắp tới

2 Các biến khác nhau có các đơn vị tỷ lệ khác nhau, như trọng lượng tính bằng kg và chiều cao tính bằng cm

3 Thuật toán knn hoạt động tốt với các biến số, điều này không có nghĩa là nó không thể hoạt động với các biến phân loại, nhưng nó chỉ là khi bạn kết hợp cả hai biến phân loại và biến số như các yếu tố dự đoán thì nó đòi hỏi một chút cách tiếp cận khác nhau Nhưng nếu tất cả các dự đoán là số, thì knn là tốt nhất bởi vì chúng ta đang xử lý khoảng cách và vì thế chúng ta cần số cứng

4 Khi chúng ta chia dữ liệu của chúng tôi thành các tập huấn luyện và kiểm tra, dữ liệu đã được chuẩn hóa

5 Thuật toán knn không hoạt động với các yếu tố có thứ tự trong R mà là với các yếu tố

6 Thuật toán trung bình k khác với thuật toán lân cận K-NN K-mean được sử dụng

để phân cụm và là một thuật toán học tập không giám sát trong khi Knn là thuật toán nghiêng được giám sát hoạt động trên các vấn đề phân loại

Bên dưới là mã huấn luyện mô hình k-NN trong R :

#Bắt đầu demo k-NN

Trang 8

#load dữ liệu vào PSID

read.csv("/Volumes/DATA/HOC_TAP/CAO_HOC/KhaiPhaDuLieu/Thi/PSIDv2.csv")

#Lấy mẫu

ran = sample(1:nrow(PSID), 0.8 * nrow(PSID))

#normalize

nor =function(x) { (x -min(x))/(max(x)-min(x)) }

#PSID Normalize

PSID_norm = as.data.frame(lapply(PSID[,c(1,2,3,4,5)], nor))

#Xem tổng quát dữ liệu

summary(PSID_norm)

#Chia tập train và tập test

PSID_train = PSID_norm[ran,]

PSID_test = PSID_norm[-ran,]

#Tạo nhãn cho tập train và tập test

PSID_target_category = PSID[ran,6]

PSID_test_category = PSID[-ran,6]

#Load thư viện class vào

library(class)

#Train dư liệu với k=7

pr = knn(PSID_train,PSID_test,cl=PSID_target_category,k=7)

#Kiểm tra lại với tập test

tab = table(pr,PSID_test_category)

#Tính độ chính xác của thuật toán

accuracy = function(x){sum(diag(x)/(sum(rowSums(x)))) * 100}

accuracy(tab)

#Kết thúc Demo k-NN

read.csv("/Volumes/DATA/HOC_TAP/CAO_HOC/KhaiPhaDuLieu/Thi/PSIDv2.csv")

Ở dòng này, chúng ta tải dữ liểu PSID.csv vào biến PSID với hàm read.csv.

Sau khi đọc được PSID thì tiếp theo chúng ta lấy mẫu để huấn luyện đưa vào biến ran

ran = sample(1:nrow(PSID), 0.8 * nrow(PSID))

Trang 9

Hàm nor =function(x) { (x -min(x))/(max(x)-min(x)) }được áp dụng vào toàn bộ dữ liệu

PSID và gán vào biến PSID_norm

PSID_norm = as.data.frame(lapply(PSID[,c(1,2,3,4,5)], nor)) Chúng ta áp dụng hàm nor đấy vào dữ liệu PSID với các cột 1, 2, 3, 4, 5 cho ra dữ liệu PSID_norm

PSID_train = PSID_norm[ran,]

PSID_test = PSID_norm[-ran,]

Chia tập train là các phần tử thuộc PSID_norm với các bộ mẫu của ran

Tập test là các phần tử còn lại của PSID_norm khác với các bộ mẫu của ran

library(class)

Load thư viện class vào R

pr = knn(PSID_train,PSID_test,cl=PSID_target_category,k=7)

hàm knn như sau: knn(tap_train, tap_test, cl=các nhãn được phân lớp, k)

tab = table(pr,PSID_test_category)

Kiểm thử lại mô hình pr với tập test

Hàm tính phần trăm độ chính xác của thuật toán k-NN

accuracy = function(x){sum(diag(x)/(sum(rowSums(x)))) * 100}

accuracy(tab)

Áp dụng hàm accuracy cho tab

2.1.3 Kết quả

Kết quả thuật toán k-NN tương đối an toàn với62.51287%

Trang 10

STT k Kết quả dự đoán

Việc thay đổi giá trị k từ 1->9 ta thấy giá trị tăng dần tương đối cao khi k=1 => k=7 Khi nâng số k lên nữa thì xác suất tăng lên không đáng kể Vì vậy số k ở đây nên bằng với số nhãn

2.2 Dữ liệu Việt Nam

Học viên sử dụng dữ liệu đa dạng sinh học của Hệ Thống Cơ Sở Dữ Liệu Quốc Gia Về

Đa Dạng Sinh Học Việt Nam: http://nbds.howizbiz.com/search/taxon bộ dữ liệu Vietnam Red list 2007 trang 1 và 2

2.2.1 Mô tả dữ liệu

Dữ liệu đề cập 100 loài

Bảng dữ liệu gồm 6 thông số sau:

• Tên khoa học

• Giới

• Nghành

• Lớp

• Bộ

• Tài nguyên bộ dữ liệu: thông số này là tên bộ dữ liệu nên không xét đến

2.2.2 Áp dụng mô hình

Trang 11

REDLISTSVN =

read.csv("/Volumes/DATA/HOC_TAP/CAO_HOC/KhaiPhaDuLieu/Thi/DuLieu/REDLIS TSVN.csv")

library(magrittr)

str (col2)

str (col3)

str (col4)

str (col5)

#Lấy mẫu

ran = sample(1:nrow(REDLISTSVN), 0.8 * nrow(REDLISTSVN))

#normalize

nor =function(x) { (x -min(x))/(max(x)-min(x)) }

# REDLISTSVN Normalize

REDLISTSVN_norm = as.data.frame(lapply(REDLISTSVN [,c(2,3,4,5)], nor))

#Xem tổng quát dữ liệu

summary(REDLISTSVN_norm)

#Chia tập train và tập test

REDLISTSVN_train = REDLISTSVN_norm[ran,]

REDLISTSVN_test = REDLISTSVN_norm[-ran,]

#Tạo nhãn cho tập train và tập test

REDLISTSVN_target_category = REDLISTSVN [ran,2]

REDLISTSVN_test_category = REDLISTSVN [-ran,2]

#Load thư viện class vào

library(class)

#Train dữ liệu với k=5

pr = knn(REDLISTSVN_train, REDLISTSVN_test, cl =

REDLISTSVN_target_category,k=5)

#Kiểm tra lại với tập test

tab = table(pr, REDLISTSVN_test_category)

#Tính độ chính xác của thuật toán

accuracy = function(x){sum(diag(x)/(sum(rowSums(x)))) * 100}

accuracy(tab)

Trang 12

KẾT LUẬN

Việc khai phá dữ liệu còn hơn việc chạy một số truy vấn phức tạp trên dữ liệu mà bạn đã lưu trong cơ sở dữ liệu của mình Bạn phải làm việc với dữ liệu của mình, định dạng lại nó hoặc cấu trúc lại nó, bất kể bạn có đang sử dụng SQL, cơ sở dữ liệu dựa trên tài liệu như Hadoop hoặc các tệp phẳng đơn giản hay không Việc nhận ra định dạng thông tin mà bạn cần được dựa trên kỹ thuật và việc phân tích mà bạn muốn làm Sau khi bạn có thông tin theo định dạng mà bạn cần, bạn có thể áp dụng các kỹ thuật khác (riêng

lẻ hay kết hợp lại với nhau) không phân biệt cấu trúc dữ liệu cơ bản hay tập hợp dữ liệu cần thiết

Kết quả của thuật toán phân lớp trong bài toán trên được thực hiện khá thành công tuy nhiên đối với bài toán khác chưa chắc nó đã chính xác, tùy theo bài toán cụ thể mà ta

sẽ sử dụng các phương pháp, thuật toán phù hợp

Trang 13

DANH MỤC TÀI LIỆU THAM KHẢO

1 Introduction to Data Mining - by Pang-Ning Tan, Michael Steinbach, and Vipin Kumar, Pearson Education,1st Edition 2006

2 Trang web http://phamtthuytien.blogspot.com/2015/07/tk8-thong-ke-mo-ta-bieu-o-hop-box-plot.html

3 https://vi.wikipedia.org/wiki/Khai_phá_dữ_liệu

4 https://vincentarelbundock.github.io/Rdatasets/datasets.html

5 http://rpubs.com/Nitika/kNN_Iris

Ngày đăng: 13/11/2020, 09:30

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w