logo

THƯ VIỆN MÃ NGUỒN MỞ CHO BÀI TOÁN DỰ BÁO

Khai phá dữ liệu hiện đang là lãnh vực nghiên cứu rất phát triển. Cho đến thời điểm hiện nay đã có một số thư viện mã nguốn được hiện thực để đáp ứng cho các bài toán khai phá dữ liệu. Tuy nhiên hầu như chưa có một thư viên mã nguồn mở nào chuyên biệt cho lớp bài toán dự báo. Bài báo sẽ giới thiệu về thư viện mã nguồn mở cho bài toán dự báo với những giải thuật tiên tiến hiện nay như Artificial Neural Network (ANN), Support Vector Regression (SVR), Standard Addictive Model (SAM)....
THƯ VIỆN MÃ NGUỒN MỞ CHO BÀI TOÁN DỰ BÁO AN OPEN SOURCE LIBRARY FOR PREDICTION PROBLEMS Dương Ngọc Hiếu, Võ Hoàng Tam, Nguyễn Thành Thi (*) Khoa Khoa học & Kỹ thuật Máy tính, ĐH Bách khoa Tp. Hồ Chí Minh (*) Bộ môn Thông tin Địa lý Ứng dụng, ĐH Nông – Lâm Tp. Hồ Chí Minh {dnhieu, vhtam}@cse.hcmut.edu.vn, [email protected] BÁN TÓM TẮT Khai phá dữ liệu hiện đang là lãnh vực nghiên cứu rất phát triển. Cho đến thời điểm hiện nay đã có một số thư viện mã nguốn được hiện thực để đáp ứng cho các bài toán khai phá dữ liệu. Tuy nhiên hầu như chưa có một thư viên mã nguồn mở nào chuyên biệt cho lớp bài toán dự báo. Bài báo sẽ giới thiệu về thư viện mã nguồn mở cho bài toán dự báo với những giải thuật tiên tiến hiện nay như Artificial Neural Network (ANN), Support Vector Regression (SVR), Standard Addictive Model (SAM). ABSTRACT Datamining has recently been an emerging research trend. For the time being, there have been some open source libraries implemented to solve datamining problems. However, there is no library specialized in predicting technique. In this paper, we implement an open source library for solving prediction problems using some advanced algorithm such as: Artificial Neural Network (ANN), Support Vector Regression (SVR), Standard Addictive Model (SAM). 1. GIỚI THIỆU regression, perceptron regression, … Các phương pháp dự báo này có những ưu và nhược điểm khác Con người luôn luôn quan tâm đến tương lai. Từ nhau tùy vào vấn đề cần giải quyết. Do đó khi gặp xa xưa các nhà tiên tri luôn giữ một vị trí quan trọng phải một bài toán cụ thể, ta phải dựa vào tính chất trong cộng đồng. Khi văn minh nhân loại phát triển của bài toán để lựa chọn phương pháp thích hợp. đã làm gia tăng các mối quan hệ phức tạp vốn có trong cuộc sống. Do đó con người cần có cái "nhìn về Ngày nay đã xuất hiện khá nhiều thư viện data tương lai" của họ. Ngày nay, tất cả các cơ quan mining mã nguốn mở như Xelopes, Weka, … đã hiện Chính phủ, các tổ chức lợi nhuận, phi lợi nhuận cũng thực nhiều giải thuật khác nhau đáp ứng cho các bài như những công ty trong lĩnh vực kinh doanh và các toán data mining. Tuy nhiên hầu như chưa có một thư cá nhân đều có nhu cầu dự báo về sự kiện tương lai viên mã nguồn mở nào chuyên biệt cho lớp bài toán nhằm phục vụ cho công việc của mình: kế hoạch phát dự báo. Bài báo sẽ giới thiệu về thư viện mã nguồn triển công ty, tỉ lệ lợi nhuận trong kinh doanh… mở cho bài toán dự báo với những giải thuật tiên tiến hiện nay như ANN, SVR, SAM. Mặc dù có nhiều kỹ thuật dự báo đã phát triển trong thế kỷ thứ 19, tuy nhiên dự báo có ảnh hưởng Phần còn lại của bài báo gồm các nội dung sau. mạnh mẽ mới đây chỉ vào lúc công nghệ thông tin Phần 2 trình bày tổng quan về bài toán dự báo. Phần đang phát triển nhanh chóng. Bởi vì việc mô phỏng 3 điểm qua các giải thuật dự báo đã được hiện thực những phương pháp dự báo rất cần sự hỗ trợ của máy trong thư viện mã nguồn mở. Trong phần 4, chúng tính. Trong quá khứ, nhiều phần mềm được thiết kế tôi mô tả sơ lược kiến trúc của thư viện mã nguốn đặc biệt cho những phương pháp phân tích dự báo mở. Các so sánh thực nghiệm được nêu ra trong phần khác nhau. Ngoài ra những phần mềm thống kê vận 5. Phần 6 đúc kết và vạch ra hướng phát triển trong hành trong những máy tính thông thường cũng đã đề tương lai. cập đến nhiều kỹ thuật dự báo. Với sự phát triển của hệ thống máy tính cá nhân, các kỹ thuật dự báo hiện 2. TỔNG QUAN VỀ BÀI TOÁN DỰ đại được triển khai thực hiện một cách nhanh chóng BÁO dễ dàng. Trong lãnh vực dự báo, thường được chia ra làm Một trong những kỹ thuật dự báo hiện đại đó là hai hướng: data mining. Có rất nhiều phương pháp data mining sử dụng để dự báo như: neural network, support vetor 2.1. Phương pháp định tính Phương pháp định tính (đôi khi được gọi là + Mô hình nhân quả giả định biến số dự báo có phương pháp chuyên gia hay phương pháp phân tích thể được giải thích bởi hành vi của những biến số cơ sở) thường được sử dụng khi những dữ liệu lịch kinh tế khác (biến số độc lập). Ví dụ: doanh số có thể sử không sẵn có hay có nhưng không đầy đủ, hay giải thích phụ thuộc vào chi phí quảng cáo, thu nhập những đối tượng dự báo bị ảnh hưởng bởi những của khách hàng, giá sản phẩm, đối thủ cạnh tranh và nhân tố không thể lượng hoá đuợc: sự thay đổi tiến những nhân tố ảnh hưởng khác. Mục đích của mô bộ kỹ thuật, ảnh hưởng của tác động môi trường…. hình nhân quả là tìm ra những hình thức (mô hình Những phương pháp này bao gồm việc sử dụng toán) mô tả mối quan hệ giữa tất cả các biến số và sử những đánh giá, những kinh nghiệm của một hay dụng nó để dự báo biến số kinh tế đang quan tâm nhiều chuyên gia trong lĩnh vực liên quan. Thủ tục dự (biến phụ thuộc). báo định tính thông thường được trình bày dưới dạng + Phương pháp phân loại và nhận diện mẫu sẽ cố giải thích (exploratory) hay chuẩn tắc gắng phân loại tập dữ liệu thành nhiều loại, nhận diện (normaltive). hướng dịch chuyển của dữ liệu trong tương lai. + Phương pháp giải thích sẽ sử dụng những + Phương pháp lai là sự pha trộn của các phương thông tin quá khứ và hiện tại để hướng tới tương lai pháp trên. thông qua những kịch bản có thể. Từ đó các chuyên Một trong những phương pháp chuỗi thời gian gia có thể cung cấp những dự báo ”về điều gì có thể thường được ưa chuộng nhất là phương pháp mạng diễn ra và khi nào điều đó có thể diễn ra”. Những ước neuron. lượng chi phí nhằm đạt được mục tiêu thường được áp dụng dưới dạng dự báo giải thích. + Phương pháp chuẩn tắc sẽ căn cứ những mục 3. CÁC GIẢI THUẬT ĐƯỢC ÁP tiêu tương lai và kế đó sẽ quy ngược trở lại hiện tại DỤNG để tìm hiểu và đánh giá rằng những nguồn lực nào 3.1. Giải thuật ANN hiện có, những giới hạn cần loại bỏ hay khắc phục. Thông thường những đột phá khoa học nào đó (ví dụ Mô hình mạng truyền thống MLP như là những đột phá đã phát triển bởi chương trình Trong nhiều năm qua, mô hình mạng neuron đa không gian NASA) sẽ là những sản phẩm phụ để đạt tầng (Multi Layer Perceptron) được ứng dụng rộng được một vài mục tiêu dài hạn khác trong tương lai. rãi trong nhiều lĩnh vực như: phân tích tài chính, chẩn đoán bệnh, dự báo thời tiết, v.v... Đặc biệt trong vài Ưu Điểm của phương pháp dự báo định tính: năm trở lại đây, có rất nhiều các nghiên cứu về ứng + Sử dụng tối đa những thông tin có được (bao dụng mạng neuron trong dự báo giá cả của các mặt gồm những thông tin có thể lượng hoá và không thể hàng trên thị trường. lượng hoá) để tiến hành dự báo. Trong mô hình dự báo dựa trên mô hình mạng Khuyết điểm của phương pháp này: neuron: + Không có một phương pháp hệ thống để cải { Tập các lớp được phân loại: C = ω1 , ω 2 ,..., ω M } thiện độ chính xác dự báo. Tập dữ liệu mẫu cho quá trình huấn luyện là tập hợp + Có thể làm sai lệch kết quả dự báo xuất phát từ các bộ giá trị gồm (x,d) gồm: đánh giá chủ quan của các chuyên gia dự báo. - Vector đặt trưng x = (x1,x2,..xn) 2.2. Phương pháp định lượng - Giá trị của loại dữ liệu cần dự báo d Với tập trọng số w , mạng neuron sẽ đưa ra ngõ ra Ngược với phương pháp định tính, phương pháp d(x,w) = ƒ(uj) định lượng sử dụng những dữ liệu quá khứ theo thời uj: là hàm tổng tuyến tính của vector trọng số và ngõ gian. Nói cách khác, dựa trên những dữ liệu lịch sử ra của các neuron để phát hiện chiều hướng vận động của đối tượng ƒ(uj): là hàm hoạt tính, trong đó hàm sigmoid phù hợp với một mô hình toán học nào đó và đồng thời sử dụng mô hình này là mô hình ước lượng. Tiếp 1 được sử dụng nhiều nhất . cận định lượng dựa trên giả định rằng giá trị tương lai 1 + exp(− βu j ) của biến số dự báo sẽ phụ thuộc vào xu thế vận động của đối tượng đó trong quá khứ. Có các loại phương Có nhiều phương pháp để đánh giá lỗi, trong đó hàm pháp định lượng như sau: “mean squared error” được sử dụng nhiều nhất 2 ∑∑ (y ( X i , W) − d j ( X i )) N K + Phương pháp chuỗi thời gian dựa trên phân Min j tích chuỗi quan sát của một biến duy nhất theo biến i =1 j =1 số độc lập là thời gian. Tần suất có thể là ngày, tháng, Giải thuật học mạng là giải thuật backpropagation. quý và năm. Những biến số kinh tế quan tâm có thể là biến vĩ mô hay vi mô. Những phạm vi quan sát có Mô hình mạng neuron kết hợp với lý thuyết thể là hãng, tỉnh, hay cả nền kinh tế. Giả định chủ mờ: Recurrent Fuzzy Neural Network (RFNN) yếu là biến số kinh tế dự báo sẽ giữ nguyên chiều Để cải tiến hiệu suất của giải thuật ANN, một hướng phát triển đã diễn ra trong quá khứ và hiện tại. phương pháp được ưa chuộng đó là kết hợp ANN và lý thuyết mờ. có nhiều cách kết hợp một trong những cách phổ biến đó là dựa vào mô hình dự báo mờ, xây dựng lại một mô hình mới gồm 4 lớp: Lớp 1: Là lớp nhập gồm N dữ liệu nhập (input). Lớp 2: Gọi là lớp các hàm thành viên. Các nút trong lớp này thực hiện việc mờ hoá. Lớp này dùng để tính giá trị hàm thành viên theo hàm phân phối Gauss. Số nút trong lớp 2 là N x M, trong đó M là số luật mờ (số nút của lớp 3) Lớp 3: Lớp các luật mờ. Các nút trong lớp này Để L đạt được cực trị thì các đạo hàm riêng phải = 0: tạo thành cơ sở luật mờ (Fuzzy rule base) gồm M nút. Liên kết giữa lớp 2 và lớp 3 biểu diễn giả thiết của luật mờ. Liên kết giữa lớp 3 và lớp 4 biểu diễn kết luận của luật mờ. l Lớp 4: Lớp xuất gồm P nút có chức năng giải mờ. Do đó: f ( x ) = ∑ (α i =1 i − α i )( xi .x) + b * Giải thuật học cho mô hình mạng RFNN cũng là giải thuật backpropagation 3.3. Giải thuật SAM Mô hình mạng neural kết hợp với giải thuật SAM là hệ thống gồm m luật mờ hoạt động theo gen cơ chế song song. Các luật mờ có dạng: “NẾU tập Có nhiều cách kết hợp giải thuật gen với mạng các điều kiện được thỏa mãn THÌ tập các kết quả sẽ neuron. Tuy nhiên phương pháp sau đây được xem là xảy ra”. Không mất tính tổng quát khi ta phân rã một hữu hiệu nhất: hệ thống đa ngõ nhập, đa ngõ xuất (MIMO) thành - Xem mạng neuron như một cá thể. một nhóm các hệ thống đa ngõ nhập, đơn ngõ xuất (MISO). Luật mờ MISO có dạng: NẾU (x1 là Ai1 VÀ - Quần thể bao gồm nhiều cá thể mạng neuron. … VÀ xd là Aid) THÌ (y là Bi). - Trước khi chọn ra cá thể tốt thực hiện các phép toán gen để sinh ra tập quần thể mới, các cá thể tự tối ưu bằng phương pháp backpropation. 3.2. Giải thuật Support vector regression (SVR) Cho một tập huấn luyện {(x1, y1), (x2, y2)…., (xl, yl)} với x Є Rn, y Є R. Mục đích của phương pháp hồi quy ε-SV [2] là tìm một hàm f(x) có độ lệch lớn nhất là ε so với các giá trị đích yi của tất cả các mẫu huấn luyện. Tuy nhiên ta có thể nới lỏng điều kiện này bằng cách đưa thêm sai số vào thông qua gia số Hình 2. Cơ chế hoạt động của SAM. ξ (xem hình 1.) Các luật mờ của SAM được xây dựng dựa trên giải thuật phân lớp theo cơ chế học không giám sát. Hệ mờ sẽ xấp xỉ tốt hơn nếu thực hiện quá trình tối ưu hệ luật và điều chỉnh các thông số hệ luật theo cơ chế học giám sát. Các thông số hệ luật sẽ được điều chỉnh bằng luật học sai số nhỏ nhất. Trong SAM, ứng với mỗi giá trị đầu vào x = x0, luật thứ j sẽ kích hoạt và cho kết quả là tập mờ Bj’ được xây dựng dựa theo mức độ thỏa mãn vế trái và Hình 1. Xấp xỉ hàm theo phương pháp ε-SV tập mờ Bj của vế phải theo quy tắc PROD: Để đơn giản ta có thể chọn hàm f có dạng tuyến µ B' ( y ) = µ A ( x ).µ B ( y ) tính như sau: f(x) = (w.x) + b. Bài toán có thể được phát biểu như sau: Tập mờ ngõ ra B được xây dựng theo quy tắc SUM l các tập mờ Bj’: Cực tiểu hóa giá trị: 1 || w ||2 +C (ξ + ξ * ) 2 ∑ i i m ' i =1 Β = ∑ Βj y i − ( w.xi ) − b ≤ ε + ξ i j =1 Với điều kiện: Tập B được giải mờ để nhận được một giá trị rõ duy ( w.xi ) + b − y i ≤ ε + ξ i * nhất: ξi ,ξi ≥ 0 * Chuyển bài toán tối ưu ở trên sang bài toán đối ngẫu (dual problem), áp dụng phương pháp Larange: m - Phần thứ hai là dữ liệu dùng để học cho các ∑ w j .a j (x). j .c j V giải thuật dự báo j =1 F(x) = Centroid (B ) = m ∑ w .a (x). jV j =1 j j 4. HIỆN THỰC THƯ VIỆN MÃ NGUỐN MỞ Mục đích của thư viện mã nguốn mở là cho phép người dùng có thể xây dựng những ứng dụng dự báo dựa trên thư viện đã có sẵn. Ngoài ra khi cần, có thể phát triển thêm giải thuật để gắn vào thư viện có sẵn. Kiến trúc hiện thực thư viện (hình 3) gồm hai phần chính: + Giao diện người dùng: cho phép người dùng tương tác với phần mềm dự báo. + Giải thuật: tập những giải thuật dự báo như ANN, SVR, SAM. Một vấn đề đặt ra là khi người dùng cần xây Dưới đây là giao diện người sử dụng của thư dựng ứng dụng với dữ liệu đang có, làm sao thư viện viện đã được xây dựng. có thể đọc hiểu được những dữ liệu này. Để giải quyết vấn đề này, các giải thuật chỉ chấp nhận một định dạng dữ liệu nhập duy nhất. Như vậy khi người sử dụng thư viện muốn phát triển ứng dụng dự báo, họ phải override lại lớp tiền xử lý dữ liệu để chuyển dữ liệu hiện có sang định dạng qui định (theo định dạng XML). Hình 4: Giao diện mở đầu. Người dùng có thể lựa chọn các các giải thuật dự Hình 3. Kiến trúc thư viện mã nguồn mở cho báo khác nhau như: neural network, SAM fuzzy bài toán dự báo. system, SVM hay mô hình hồi quy tuyến tính Định dạng của dữ liệu sau khi đã được xử lý bao ARIMA (xem hình 4.). gồm 2 phần: - Phần thứ nhất là cấu trúc của bộ dữ liệu. Cấu trúc này được đọc hiểu bởi những giải thuật dự báo đã hiện thực. Hình 5. Giao diện mô hình neural network. 5. KẾT QUẢ SO SÁNH THỰC NGHIỆM Để kiểm tra thư viện đã xây dựng chúng tôi sử dụng tập dữ liệu giá của vàng, cà phê, … của Việt Nam để đo đạc và kiểm nghiệm. Tập dữ liệu này Trong các giải thuật phi tuyến, có thể thấy SAM được thu thập từ năm 1997 cho đến 2007 (trung binh cho kết quả dự báo ổn định và hữu hiệu nhất. một năm sẽ có 365 hàng dữ liệu). Chương trình được kiểm tra trên hệ thống máy tinh đơn CPU P4 1.4GHz, 6. KẾT LUẬN VÀ HƯỚNG PHÁT RAM 769. TRIỂN Đây là một số kết quả đo đạc được khi thực thi dự báo bằng giải thuật SAM. Bài báo này trình bày kết quả của đề tài nghiên cứu “Xây dựng thư viện mã nguốn mở cho bài toán dự báo”. Kết quả đạt được cho thấy thư viện này STT Số Trung Trung Thời gian hoàn toàn có thể được sử dụng để dự báo cho các bài luật bình lỗi bình lỗi toán thực thuộc các lãnh vực khác nhau như môi mờ đầu sau trường, tài chánh, y tế, … 1 499 0.07013 0.00450 05 giờ 29 phút Trong thời gian tới chúng tôi tiến hành xây dựng thêm những phương pháp dự báo khác như mô hình 2 399 0.10924 0.00457 06 giờ 56 HMME là sự kết hợp của ANN và Hidden Markov phút Model để tăng hiệu suất khi dự báo những tập dữ liệu 3 160 0.12512 0.00984 08 giờ 48 có độ biến động lớn. Đồng thời cải tiến các giải thuật phút đã xây dựng như cải thiện các giải thuật học cho Bảng 1 Đánh giá theo số luật mờ. ANN, SAM. TÀI LIỆU THAM KHẢO ST Trung Trung Thời Hàm bình lỗi bình lỗi 1. Dương Ngọc Hiếu , “Ứng dụng mạng neural dự gian T đầu sau báo giá các sản phẩm trên thị trường”, Luận văn Cauchy 0.10924 0.00457 06 giờ cao học ngành Khoa học Máy tính Khóa 2004. 1 56 phút 2. Alex J. Smola, Bernard Scholkopf, “A tutorial Gaussian 0.10752 0.00410 07 giờ on support vector regression”, Statistics and 2 05 phút Computing 14: 199-222, 2004. Laplace 0.08828 0.00212 09 giờ 3. Takagi, T. and Sugeno, M. Fuzzy identification 3 41 phút of systems and its application to modeling and Bảng 2 Đánh giá theo hàm thành viên. control. IEEE Trans. on Systems, Man & Cybernetics 15, 116-132, 1985. 4. Sugeno, M. and Yasukawa, T. A fuzzy-logic- Những thống kê trên mô hình ANN và các hệ lai based approach to qualitative modeling. IEEE của ANN có thể tham khảo tại (1). Trans. on Fuzzy Systems 1, 7-31, 1993. Thực nghiệm cho thấy các phương pháp dự báo 5. Wang, L.X. Training of fuzzy logic systems using hồi quy phi tuyến (ANN, SVM, SAM) có độ chính nearest neighborhood clustering. Proc. 2nd xác cao và thời gian chạy tương đối nhỏ. Nếu so sánh IEEE Int'l Conf. on Fuzzy Systems (FUZZ-IEEE với mô hình ARIMA trong khoảng thời gian ngắn thì ‘93), San Francisco, CA, March 28-April 1, 13- có thể xem là tương đương. Tuy nhiên ARIMA là 17, 1993. phương pháp hồi quy tuyến tính nên nếu dữ liệu có 6. Yager, R. and Filev, D. Generation of fuzzy rules sự biến động lên xuống liên tục thì ARIMA sẽ không by mountain clustering. J. of Intelligent and còn chính xác nữa. Fuzzy Systems 2, 209-219, 1994. 7. Chiu, S. Fuzzy model identification based on cluster estimation. J. of Intelligent and Fuzzy Systems 2, 267-278, 1994. 8. Ruspini, E.H. Numerical methods for fuzzy clustering. Inform. Sci. 2, 319-350, 1970. 9. Dunn, J. A fuzzy relative of the ISODATA process and its use in detecting compact, well separated clusters. J. of Cybernetics 3, 32-57, 1974. 10. Bezdek, J. Cluster validity with fuzzy sets. J. of Cybernetics 3, 58-71, 1974. 11. Keller, J., Gray, M. and Givens Jr., J. A fuzzy k- nearest neighbor algorithm. IEEE Trans. Syst., Hình 6. So sánh các phương pháp hồi quy phi tuyến Man, Cybern., 15, 580-585, 1985. và tuyến tính. 12. Chung, F.L. and Lee, T. A fuzzy learning method for membership function estimation and pattern classification. Proc. 3rd IEEE Int'l Conf. on Fuzzy Systems (FUZZ-IEEE ‘94), Orlando, FL, Int. Fuzzy Systems Association Congress (IFSA June 26-29, 426-431, 1994. ‘95), Sao Paulo, Brazil, July 22-28, vol. 2, 273- 13. Sun, C.T. and Jang, J.S.R. A neuro-fuzzy 276, 1995. classifier and its applications. Proc. 2nd IEEE 18. Kikuchi, S., Nanda, R., and Perincherry, V. Int'l Conf. on Fuzzy System (FUZZ-IEEE ‘93), Estimation of trip generation using the fuzzy San Francisco, CA, March 28-April 1, 94-98, regression method. Proc. 1994 Annual Meeting 1993. of Transportation Research Board, Washington 14. Abe, S. and Lan, M.S. A classifier using fuzzy DC, January, 1994. rules extracted directly from numerical data. 19. Chiu, S. Selecting input variables for fuzzy Proc. 2nd IEEE Int'l Conf. on Fuzzy Systems models. To appear in J. of Intelligent & Fuzzy (FUZZ-IEEE ‘93), San Francisco, CA, March Systems, 1996. 28-April 1, 1191-1198, 1993. 20. Fisher, R.A. The use of multiple measurements 15. Wang, L.X. and Mendel, J.M. Back-propagation in taxonomic problems. Annals of Eugenics 7, fuzzy system as nonlinear dynamic system 179-188, 1936. identifiers. Proc. 1st IEEE Int'l Conf. on Fuzzy 21. Chiu, S. and Cheng, J. Automatic generation of Systems (FUZZ-IEEE ‘92), San Diego, CA, fuzzy rulebase for robot arm posture selection. March 8-12, 1409-1418, 1992. Proc. 1st Joint Conf. of North American Fuzzy 16. Jang, J.S.R. ANFIS: Adaptive-network-based Information Processing Society (NAFIPS ‘94), fuzzy inference system. IEEE Trans. Syst., Man, Industrial Fuzzy Control & Intelligent Systems Cybern. 23, 665-685, 1993. Conf., and NASA Joint Technology Workshop 17. Chiu, S. Extracting fuzzy rules for pattern on Neural Networks & Fuzzy Logic, San classification by cluster estimation. Proc. 6’th Antonio, TX, December 18-21, 436-440, 1994.
DMCA.com Protection Status Copyright by webtailieu.net