Luận văn Sử dụng ngôn ngữ R trong khai phá dữ liệu - Nguyễn Thị Thanh Thoan
Bạn đang xem tài liệu "Luận văn Sử dụng ngôn ngữ R trong khai phá dữ liệu - Nguyễn Thị Thanh Thoan", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
luan_van_su_dung_ngon_ngu_r_trong_khai_pha_du_lieu_nguyen_th.doc
Nội dung text: Luận văn Sử dụng ngôn ngữ R trong khai phá dữ liệu - Nguyễn Thị Thanh Thoan
- SỬ DỤNG NGÔN NGỮ R TRONG KHAI PHÁ DỮ LIỆU Nguyễn Thị Thanh Thoan, Khoa Công nghệ thông tin Tóm Tắt: Ngôn ngữ R trong thời gian gần đây đang được quan tâm và sử dụng rộng rãi trong mọi lĩnh vực đặc biệt là các lĩnh vực phân tích, thống kê dữ liệu. Trên toàn cầu đã có một mạng lưới gần một triệu người sử dụng R và con số này đang tăng theo cấp số nhân. Đặc biệt, R được sử dụng trong khai phá dữ liệu với tập dữ liệu lớn. Theo khảo sát hàng năm của tổ chức Rexer's Annual Data Miner Survey năm 2010, tỷ lệ R được sử dụng trong khai phá dữ liệu là 43%. Theo dự đoán, trong khoảng 10 năm nữa, R sẽ được sử dụng để thay thế các phân mềm thống kê đắt tiền như SAS, SPSS hay Stats. Và hiện nay, hệ quản trị CSDL Oracle đã tích hợp R trong gói Big Data Appliance đã công bố vào tháng 10/2011.Vì vậy, Trong bài báo cáo này, nhóm tác giả sẽ tập trung chủ yếu giới thiệu sức mạnh của R trong việc phân tích, thống kê dữ liệu và giới thiệu một số công việc khai phá dữ liệu sử dụng R. Abstract R language in recent times are concerned and widely used in all areas, especially the areas of analytical and statistical data. In the world, a network of nearly a million people use R, and this number is increasing exponentially. In particular, R is used in data mining for large data sets. According to the survey organization's annual Rexer’s Annual Data Miner Survey 2010, R is used in data mining at a rate of 43%. As expected, in about 10 years, R will be used to replace the expensive statistical software such as SAS, SPSS or Stats. And now, Oracle database management system has integrated R in the Big Data Appliance package announced in February 10/2011. So, in this paper, the authors will focus mainly introduce the power of R in the analysis, statistical data and introduces some of the data mining using R. I. MỞ ĐẦU Phân tích số liệu và biểu đồ thường được tiến hành bằng các phần mềm thông dụng như SAS, SPSS, Stata, Statistica, và S-Plus. Đây là những phần mềm được các công ty phần mềm phát triển và giới thiệu trên thị trường khoảng ba thập niên qua, và đã được các trường đại học, các trung tâm nghiên cứu và công ty kĩ nghệ trên toàn thế giới sử dụng cho giảng dạy và nghiên cứu. Nhưng vì chi phí để sử dụng các phần mềm này tuơng đối đắt tiề, một số trường đại học ở các nước đang phát triển (và ngay cả ở một số nước đã phát triển) không có khả năng tài chính để sử dụng chúng một cách lâu dài. Do đó, các nhà nghiên cứu thống kê trên thế giới đã hợp tác với nhau để phát triển một phần mềm mới, với chủ trương mã nguồn mở, sao cho tất cả các thành viên trong ngành thống kê học và toán học trên thế giới có thể sử dụng một cách thống nhất và hoàn toàn miễn phí. Năm 1996, trong một bài báo quan trọng về tính toán thống kê, hai nhà thống kê học Ross Ihaka và Robert Gentleman [lúc đó] thuộc Trường đại học Auckland, New Zealand phác hoạ một ngôn ngữ mới cho phân tích thống kê mà họ đặt tên là R. Sáng kiến này được rất nhiều nhà thống kê học trên thế giới tán thành và tham gia vào việc phát triển R.
- Cho đến nay, qua chưa đầy 10 năm phát triển, càng ngày càng có nhiều nhà thống kê học, toán học, nghiên cứu trong mọi lĩnh vực đã chuyển sang sử dụng R để phân tích dữ liệu khoa học. Trên toàn cầu, đã có một mạng lưới hơn một triệu người sử dụng R, và con số này đang tăng rất nhanh. Có thể nói trong vòng 10 năm nữa, vai trò của các phần mềm thống kê thương mại sẽ không còn lớn như trong thời gian qua nữa. Chính vì vậy, trong khuôn khổ bài báo cáo này, nhóm tác giả sẽ tập trung chủ yếu giới thiệu sức mạnh của R trong việc phân tích, thống kê dữ liệu và giới thiệu một số công việc khai phá dữ liệu sử dụng R. II. PHƯƠNG PHÁP NGHIÊN CỨU 2.1 Giới thiệu ngôn ngữ R 2.1.1 Giới thiệu R là một phần mềm sử dụng cho phân tích thống kê và vẽ biểu đồ. Về bản chất, R là ngôn ngữ máy tính đa năng, có thể sử dụng cho nhiều mục tiêu khác nhau, từ tính toán đơn giản, toán học giải trí (recreational mathematics), tính toán ma trận (matrix), đến các phân tích thống kê phức tạp. Vì là một ngôn ngữ, cho nên R có thể được sử dụng để phát triển thành các phần mềm chuyên môn cho một vấn đề tính toán cá biệt. Các phiên bản của R thích hợp với các hệ điều hành Unix, Windows, Mac, Truy cập vào Website: để Download phần mềm R về cài trên máy. Sau khi cài xuất hiện biểu tượng 2.1.2 Văn phạm ngôn ngữ R R là một ngôn ngữ tương tác (interactive language), có nghĩa là khi chúng ta ra lệnh, và nếu lệnh theo đúng “văn phạm”, R sẽ “đáp” lại bằng một kết quả. Và, sự tương tác tiếp tục cho đến khi chúng ta đạt được yêu cầu. “Văn phạm” chung của R là một lệnh (command) hay function . Cú pháp chung của R như sau: đối tượng <- hàm(thông số1, thông số2, , thông số n) R là một ngôn ngữ “đối tượng ”. Do đó, các dữ liệu trong R được chứa trong object. R phân biệt chữ hoa và chữ thường. VD: R khác với r Việc đặt tên một đối tượng hay một biến số trong R khá linh hoạt, tên một đối tượng phải được viết liền nhau và không đặt trùng với những đối tượng đã có. Khi có 2 chữ rời nhau R dùng dấu chấm để thay vào giữa khoảng trống. VD: read.table, data.frames 2.1.3 Trợ giúp trong R R cung cấp đầy đủ tính năng trợ giúp cho người sử dụng bằng cách sử dụng các lệnh: Xem cấu trúc các lệnh trong R: args(x), help(x), apropos(x). Sử dụng help.start() gọi chỉ dẫn của toàn bộ hệ thống 2.1.4 Các hội thảo UsingR useR! 2004, Vienna, Austria, EU
- useR! 2006, Vienna, Austria, EU useR! 2007, Ames, Iowa, USA useR! 2008, Dortmund, Germany, EU useR! 2009, Rennes, France, EU useR! 2010, Gaithersburg, Maryland, USA useR! 2011, Coventry, United Kingdom, EU useR! 2012, Nashville, Tennessee, USA (30/6/2012) 2.1.5 Các phiên bản của R Version 0.16 – Đây là phiên bản alpha cuối cùng phát triển chủ yếu Ihaka and Gentleman. vào April 1, 1997. Version 0.49 – April 23, 1997 – đây là phiên bản cũ nhất với 12 gói. Version 0.60 – December 5, 1997 – R becomes an official part of the GNU Project. Version 1.0.0 – February 29, 2000 – sự phát triển tương đối ổn định. Version 1.4.0 – S4 methods are introduced and the first version for Mac OS X is made available soon after. Version 2.0.0 – October 4, 2004 – Introduced lazy loading, which enables fast loading of data with minimal expense of system memory. Version 2.1.0 – Support for UTF-8 encoding, and the beginnings of internationalization and localization for different languages. Version 2.11.0 – April 22, 2010 – Support for Windows 64 bit systems. Version 2.13.0 – April 14, 2011 – Adding a new compiler function that allows speeding up functions by converting them to byte-code. Version 2.14.0 - October 31, 2011 - Added mandatory namespaces for packages. Added a new parallel package. Version 2.15.0 – Match 30, 2012 2.2 Nhập dữ liệu cho R Dữ liệu mà R hiểu được phải là dữ liệu trong một data.frame. Nhập dữ liệu trực tiếp từ dòng lệnh theo cấu trúc từ hàm c(): Tên_biến_lưu_dữ_liệu <- c(pt1, pt2, , ptn) VD: a <- c(4,67,87,4,5,3) b <- c(9,8,7,5,6,5,22) Ghép các biến riêng lẻ nhập bằng hàm c thành một khung dữ liệu để sử dụng sau này: Tên_biến <-data.frame(tham_số_1,tham_số_2, . ,tham_số_n) Lưu tên tệp: save(tên_biến ,file=“tênfile.rdata”) Nhập số liệu trực tiếp: edit(data.frame()) Người sử dụng có thể nhập số liệu thông qua cửa số nhập dữ liệu bằng lệnh: edit(data.frame()). Với hàm này, R sẽ cung cấp cho người dùng một cửa sổ mới với một dãy cột và dòng giống như Excel, và người dùng có thể nhập số liệu trong bảng đó.
- Nhấp chuột vào cột var1, var2 và thay đổi bằng cách gõ vào đó tên biến tương ứng. Sau đó gõ số liệu cho từng cột. Sau khi xong, bấm nút chéo X ở góc phải của spreadsheet, chúng ta sẽ có một data.frame. Nhập số liệu từ một text file: read.table Cú pháp: Tênbiến library(foreign) B2: Sử dụng lệnh read.spss: >tuyensinh save(tuyensinh, file="tuyensinh.rda") 2.3 Sử dụng R cho tính toán đơn giản Một trong những lợi thế của R là có thể sử dụng như một máy tính cầm tay.Hơn thế nữa, R có thể sử dụng cho các phép tính ma trận và lập chương. Trong nội dung báo cáo này, nhóm chúng tôi sẽ trình bày một số phép tính đơn giản. Cộng hai sốhay nhiều sốvới nhau: Cộng và trừ: Nhân và chia Sốlũy thừa: (100 – > 35+9896 >35+9896 -653 >569*236/98 5)3 [1] 9931 [1] 9278 [1] 1370.245 > (100 - 5)^3 [1] 857375
- Căn sốbậc hai: 20 Sốpi (π) Logarit: loge Logarit: log10 > sqrt(20) > pi > log(10) > log10(100) [1] 4.472136 [1] 3.141593 [1] 2.302585 [1] 2 Sốmũ: e3.7689 Hàm sốlượng Tính tổng bình phương (sum of squares): > exp(3.7689) giác 12+ 22+ 32+ 42+ 52= ? [1] 43.33237 > cos(pi) KQ > x sum(x^2) kết quả [1] 55 2.4 Sử dụng R cho các phép tính ma trận Ma trận (matrix) gồm có dòng (row) và cột (column). Khi viết A[m, n], chúng ta hiểu rằng ma trận A có m dòng và n cột. Trong R, chúng ta cũng có thể thể hiện tương tự như vậy. Nhập dữ liệu vào ma trận theo cú pháp: > tenbien x A A+ (-)B ; Nhân 2 ma trận: > A %*%B; Ma trận nghịch đảo: > solve(A) 2.5 Sử dụng R cho tính toán sác xuất Phép hoán vị (permutation): Trong R cách tính này rất đơn giản với lệnh prod() như sau: • Tìm 5! câu lệnh > prod(5:1) cho kết quả [1] 120 Tổ hợp (combination) : Số lần chọn k người từ n phần tử là: Với R, phép tính này rất đơn giản bằng hàm choose(n, k). VD:Tính câu lệnh : > choose(7,5) cho kết quả [1] 21 2.6 Biểu đồ Biểu đồ có thể chia thành 2 loại chính: biểu đồ dùng để mô tả một biến số và biểu đồ về mối liên hệ giữa hai hay nhiều biến số. Tất nhiên, biến số có thể là liên tục hay không liên tục, cho nên, trong thực tế, có 4 loại biểu đồ. Nhóm chúng tôi sử dụng dữ liệu tuyển sinh năm 2011 của Trường đại học Bách Khoa (BKA) với khói D1 để làm dữ liệu vẽ biểu đồ minh hoạ cho bài viết. Trong tệp dữ liệu gồm 8 cột (truong, khoi, sobaodanh, phai, dm1, dm2, dm3, dtc0) với 1028 bản ghi. Lưu tệp dạng txt tại đường dẫn c:/Thoan/ts.txt. Trước khi vẽ đồ thị cần đọc dữ liệu vào R vào bằng câu lệnh: > dlts <- read.table("c:/Thoan/ts.txt", header=TRUE)
- > attach(dlts) Biểu đồ cho một biến số rời rạc (discrete variable): barplot Biến phai trong dữ liệu trên có hai giá trị (0 : nam và 1: nu), tức là một biến không liên tục. Người dùng muốn biết tần số của giới tính (bao nhiêu nam và bao nhiêu nữ) và vẽ một biểu đồ đơn giản. Để thực hiện ý định này, trước hết, chúng ta cần dùng hàm table để biết tần số: > phai.freq phai.freq cho kết quả phai 0 : 296 1 : 732 Theo dữ liệu có 296 nam và 732 nữ. Sau đó vẽ biểu đồ rời rạc thể hiện tần số của 2 giới tính như sau: > barplot(phai.freq, main="Bieu do tan so gioi tinh Na va Nu") (kết quả cho biểu đồ hình cột) Hoặc nếu sử dụng lệnh: > barplot(phai.freq, horiz = TRUE, col = rainbow(length(phai.freq)), + main="Bieu do tan so Nam va Nu") (kết quả sẽ trả về biểu đồ theo hàng) Biểu đồ cho hai biến số rời rạc (discrete variable): barplot: Trong dữ liệu benhnhan gồm có biến sex (giới tính), age (tuổi); Do đó, có thể chia bệnh nhân thành nhiều nhóm dựa vào độ tuổi. > ageg table(ageg) (42,49.6] (49.6,57.2] (57.2,64.8] (64.8,72.4] (72.4,80] 13 10 18 6 3 Trong 5 nhóm độ tuổi, cần biết lượng Nam và Nữ là bao nhiêu ta sử dụng lệnh: > age.sex age.sex sex (42,49.6] (49.6,57.2] (57.2,64.8] (64.8,72.4] (72.4,80] Nam 9 5 10 3 3 Nu 4 5 8 3 0 Biểu diễn bằng biểu đồ: > barplot(age.sex, main=" Bieu do so sanh gioi tinh trong nhom do tuoi benh nhan") Biểu đồ hình tròn: Nhóm bệnh nhân được chia thành 5 nhóm có thể biểu diễn bằng biểu đồ hình tròn bằng lệnh: > pie(table(ageg))
- Biểu đồ cho một biến số liên tục: stripchart và hist: > stripchart(tg, main="Dải biểu đồ cho chất béo trung tính", xlab="mg/L") > hist(age, main="Tần số phân phối theo nhóm tuổi", xlab="Nhóm tuổi", ylab="SL bệnh nhân") Biểu đồ hộp (boxplot) : > boxplot(tc, main="Biểu đồ tổng lượng Cholesterols ", ylab="mg/L") > boxplot(tc ~ sex, main="Tổng lượng cholestrol theo giới tính", ylab="mg/L") Phân tích biểu đồ cho hai biến liên tục: Biểu đồ tán xạ (scatter plot) > plot(tc, hdl) Biểu đồ tán xạ cho 2 biến liên tục > plot(hdl, tc, pch=ifelse(sex=="Nam", 16, 22)) Phân tích Biểu đồ cho nhiều biến: pairs: thể hiện mối liên hệ giữa các biến trong biểu đồ >lipid pairs(lipid, pch=16) 2.8 R với khai phá dữ liêu Những năm 60 của thế kỉ trước, người ta bắt đầu sử dụng các công cụ tin học để tổ chức và khai thác các cơ sở dữ liệu. Cùng với sự phát triển vượt bậc của các công nghệ điện tử và truyền thông, khả năng thu thập, lưu trữ và xử lí dữ liệu cho các hệ thống tin học không ngừng được nâng cao, theo đó lượng thông tin được lưu trữ trên các thiết bị nhớ không ngừng được tăng lên. Thống kê sơ bộ cho thấy, lượng thông tin trên các hệ thống tin học cứ sau 20 tháng lại tăng lên gấp đôi. Cuối thập kỉ 80 của thế kỉ XX, sự phát triển rộng khắp của các cơ sở dữ liệu ở mọi quy mô đã tạo sự bùng nổ thông tin trên toàn cầu. Lượng dữ liệu khổng lồ này thực sự là nguồn tài nguyên có nhiều giá trị bởi thông tin là yếu tố then chốt trong mọi hoạt động quản lý, kinh doanh, phát triển sản xuất và dịch vụ,
- Khai phá dữ liệu là một quá trình trích xuất tri thức mới, tiềm ẩn, hữu dụng từ trong lượng lớn dữ liệu. Mô hình sau cho thấy sự phân chia của khai phá dữ liệu. Trong các kỹ thuật trên, nhóm chúng tôi sẽ tập trung vào việc phân tích chuỗi thời gian và khai phá dữ liệu (Time Series Analysis and mining) a. Bài toán : Nhóm chúng tôi sử dụng tệp dữ liệu AirPassengers : chứa 144 giá trị từ năm 1949 đến năm 1960; > a apts f f$figure [1] -24.748737 -36.188131 -2.241162 -8.036616 -4.506313 35.402778 [7] 63.830808 62.823232 16.520202 -20.642677 -53.593434 -28.619949 > plot(f$figure, type="b", xaxt="n", xlab="") > monthNames axis(1, at=1:12, labels=monthNames, las=2) Biểu đồ chuỗi thời gian: theo xu hướng (trend), theo mùa (seasonal), theo chu kỳ (cyclical) và các thành phần bất thường (irregular components). c. Dự báo chuỗi thời gian Dự báo các sự kiện xảy ra dựa trên dữ liệu đã có trong quá khứ. Một trong những bài toán dự báo đặt ra là dự báo giá cổ phiếu dựa trên những giá trị cổ phiếu đã có trong quá khứ. Trong phần này, người ta thường xây dựng mô hình dự báo ARIMA. >fit fore U L ts.plot(AirPassengers, fore$pred, U, L, col=c(1,2,4,4), lty = c(1,1,2,2)) > legend("topleft", c("Actual", "Forecast", "Error Bounds (95% Confidence)"), + col=c(1,2,4), lty=c(1,1,2)) III. KẾT QUẢ NGHIÊN CỨU Nghiên cứu ngôn ngữ R và cách sử dụng ngôn ngữ R trong lĩnh vực thống kê, phân tích dữ liệu. Biết cách xây dựng các biểu đồ trong R phục vụ theo từng mục đích nghiên cứu. Trên cơ sở đó sử dụng ngôn ngữ R trong các lĩnh vực khai phá dữ liệu.
- Sử dụng ngôn ngữ R trong phân tích chuỗi thời gian. Từ đó có thể xây dựng các ứng dụng cụ thể cho các bài toán thực tế. Làm tài liệu cho những người quan tâm, sử dụng R. IV. KẾT LUẬN Trên đây là một số nghiên cứu về ngôn ngữ R và ứng dụng của nó trong Khai phá dữ liệu nói chung, khai phá dữ liệu chuỗi thời gian nói riêng. Nhóm chúng tôi đã đưa ra những vấn đề cơ bản nhất trong ngôn ngữ R và các lệnh của R trong các thuật toán phân tích chuỗi thời gian. Hướng phát triển tiếp theo sẽ tập trung vào những ứng dụng cụ thể của R trong các bài toán khai phá dữ liệu cụ thể có sử dụng R như là một công cụ. V. TÀI LIỆU THAM KHẢO [1].LIACC-FEP, University of Portompo Alegre, 823 - 4150 Porto, Portugal. Data Mining with R: learning by case studies, [2]. [3]. [4]. [5[.G. J. Williams. rattle: A graphical user interface for data mining in R, 2009b. project.org/package=rattle. [6].I. H. Witten and E. Frank. Data Mining: Practical Mchine Learning Tools and Techniques. Morgan Kaumann, San Francisco, 2nd edition, 2005. [7] Yanchang Zhao, R and Data Mining: Examples and Case Studies, May 31, 2012 [9] Nguyễn Văn Tuấn, Phân tích số liệu và biểu đồ bằng R [8].