CHƯƠNG 2 THIẾT KẾ VÀ THỰC THI KHỐI MÁY HỌC MLBLOCKS
2.3. CÁC ỨNG DỤNG MLBLOCK
Các cơng cụ học máy hiện nay có rất nhiều và phổ biến. Hiện nay, các hệ thống máy học đã và đang được áp dụng rộng rãi khi các con người cố gắng giảm bớt những khó khăn trong quản lý, tìm kiếm dữ liệu hỗ trợ trong nhiều lĩnh vực trong cuộc sống như: hỗ trợ quyết định phát đồ điều trị trong y khoa, dự đoán kết quả kinh doanh, dự đoán – hỗ trợ trong vấn đề tắc nghẽn giao thông.... Để làm được việc này, cần phải dựa vào các nhà khoa học dữ liệu, làm việc trong một thời gian lâu dài nhằm tìm kiếm một mơ hình “hỗ trợ ra quyết định” tối ưu đối với từng lĩnh vực, từng loại dữ liệu riêng biệt.
MLBlocks ra đời để giải quyết những vấn đề khó khăn trong khai phá dữ liệu, với mục đích giúp các nhà khoa học dữ liệu tìm kiếm giải pháp tốt nhất trong thời gian nhanh nhất trong việc khai thác dữ liệu đồ sộ trên.
2.3.1. Một số cơng cụ khai phá dữ liệu
Có rất nhiều sản phẩm và các cơng cụ cho các nhà khoa học dữ liệu sử dụng, một số các công cụ đặc biệt như: Theano & Pylearn2, Caffe, Torch & OverFeat, Cuda, Deeplearning4j. Sau đây là một vài cơng cụ được trình bày nhắm mục đích nghiên cứu, thử nghiệm liên quan đến MLBlocks:
Theano & Pylearn2
Theano và Pylearn2 đều được phát triển bởi nhóm LISA đại diện là Yoshua Bengio tại Đại học Montreal. Theano là một thư viện Python giúp biểu diễn các cơng thức tốn học dễ dàng. Nhờ vậy, chúng ta có thể cài đặt các thuật toán ngay từ đầu (from scratch).
Nếu chúng ta muốn sử dụng các thuật tốn chuẩn, chúng ta có thể viết các plugin Pylearn2 như các biểu thức Theano. Theano sẽ optimize và stabilize các biểu thức này. Pylearn2 chứa đựng tất cả những gì cần thiết cho việc cài đặt multilayer perceptron/RBM/Stacked Denoting Autoencoder/ConvNets.
Caffe
Caffe được phát triển bởi Berkeley Vision và Learning Center, được viết bởi Yangqing Jia. Đây là một bản cài đặt khá dễ hiểu giúp cài đặt nhanh ConvNets bằng C++. Đánh giá hiệu suất cho thấy, Caffe có thể xử lý hơn 60 triệu bức ảnh mỗi ngày chỉ với một card đồ họa NVIDIA K40 với AlexNet. Ta có thể sử dụng nó như một bộ cơng cụ cho tác vụ phân lớp ảnh. Tuy nhiên, bộ cơng cụ này khó áp dụng cho các bài tốn liên quan đến xử lý văn bản và tiếng nói.
Torch & OverFeat
Torch được viết bằng ngôn ngữ Lua, được sử dụng tại NYU, Facebook AI lab và Google DeepMind. Cơng cụ này cung cấp một mơi trường lập trình tương tự như MATLAB chuyên dùng cho các thuật toán machine learning. Tại sao họ lại sử dụng Lua/LuaJIT để phát triển thay vì Python? Trong bài báo về Torch7 họ cho rằng “Lua dễ dàng tích hợp với C. Do đó, bất kì thư viện C hay C++ nào cũng đều có thể trở thành thư viện Lua.” Lua được viết thuần theo ANSI C, mã nguồn có thể dễ dàng được biên dịch cho bất kì đối tượng nào.
Cuda
Khơng có gì đáng ngạc nhiên khi GPU đã và đang được xem như công cụ thúc đẩy hiệu suất tính tốn trong các nghiên cứu về deep learning ngày nay. Cuda- convnet/CuDNN hỗ trợ hầu hết các thư viện như Caffe, Torch hay Theano và được kích hoạt một cách dễ dàng.
Deeplearning4j
Không như các công cụ được nêu ở trên, Deeplearning4j được thiết kế để sử dụng trong môi trường doanh nghiệp hơn là một công cụ để nghiên cứu thực nghiệm. Như tên gọi của thư viện này, Deeplearning4j là một deep learning framework được phát triển bằng ngơn ngữ lập trình Java, tập trung vào lĩnh vực sản suất cơng nghiệp và hỗ trợ việc thương mại hóa sản phẩm phần mềm.
Weka và công cụ mã nguồn mở khác:
Weka[3] là một hệ thống phần mềm bao gồm nhiều thuật toán khai phá dữ liệu khác nhau, do các nhà khoa học thuộc trường Đại học Waitako, New Zealand, khởi
xướng và được sự đóng góp của rất nhiều nhà nghiên cứu trên thế giới. Weka là phần mềm mã nguồn mở, cung cấp công cụ trực quan và sinh động cho mọi người tìm hiểu về khai phá dữ liệu. Weka cịn cho phép tích hợp các giải thuật khai phá dữ liệu mới phát triển vào mơi trường của nó. Hệ thống này được phát triển với ngơn ngữ lập trình java, do vậy có thể hoạt động trên hầu hết các hệ điều hành.
Weka cung cấp nhiều giải thuật khác nhau với nhiều phương thức cho quá trình xử lý để ước lượng kết quả bằng sơ đồ cho bất kì khối dữ liệu nào.
Weka cung cấp những tính năng chính sau:
Bao gồm nhiều công cụ đa dạng để thay đổi tập dữ liệu, xử lý dữ liệu, giải thuật học và phương pháp đánh giá.
Giao diện đồ họa người dùng (trực quan hóa dữ liệu).
Môi trường để so sánh các giải thuật học.
Chúng ta có thể xử lý trước tập dữ liệu, cho vào trong một sơ đồ, và phân chia các lớp kết quả và thực hiện nó mà khơng cần viết bất cứ một chương trình nào.
Weka lấy dữ liệu từ các file có định dạng .arff, nó được phát sinh từ một file hoặc một bảng cơ sở dữ liệu.
Các dự án nguồn mở khác trong lĩnh vực này bao gồm ELKI, KNIME, MOA. ELKI tập trung vào học không giám sát qua clustering, KNIME tập trung vào các khía cạnh khám phá dữ liệu một cách trực quan, và MOA thì tương tự như Weka (cũng được phát triển tại Đại học Waikato). Trong các dự án này, KNIME được cho là có hiệu suất tốt, được sử dụng phổ biến nhất và được cơng nhận bởi các nhóm các doanh nghiệp thuộc ngành cơng nghiệp bán lẻ trong đó có eBay, Paypal và Deloitte.
Rapid Miner:
Rapid Miner là phần mềm mã nguồn mở miễn phí dùng cho việc khai phá dữ liệu ứng dụng trong xử lý, phân tích, đánh giá và xây dựng mơ hình. Rapid Miner được sử dụng trong các dự án tối ưu hóa năng lượng và tính tốn thơng số mơ tả phân tử.
Phiên bản phần mềm được nghiên cứu trong luận văn này là phiên bản RapidMiner Community Edition 5.2.003.
Tính năng tuyệt vời của Rapid Miner là hỗ trợ giao diện đồ họa Graphical User Interface có thể hiển thị dữ liệu theo nhiều cách khác nhau. Đó là hướng nghiên cứu khơng chỉ cho các nhà khoa học dữ liệu mà có thể dành cho rất nhiều đối tượng ở trình độ khác nhau khi nghiên cứu về MLBlocks. Rapid Miner sử dụng các thuật toán như Naive Bayes, Nearest Neighbors, và nhiều thuật toán khác bằng việc tạo ra các giao diện kéo thả dễ dàng và trực quan. Điều này cho phép Rapid Miner nhanh chóng thiết lập một luồng dữ liệu nếu muốn, nó là những tính năng về khai phá dữ liệu trong MLBlocks.
BigML:
BigML là Một sản phẩm tượng trưng cho kỹ thuật mơ hình hóa dữ liệu cây quyết định, giúp tạo ra một mơ hình mơ tả để hiểu được các mối quan hệ giữa những thuộc tính khác nhau trong tập dữ liệu phức tạp, từ đó lựa chọn các thuộc tính thích hợp nhất cho mơ hình dự đốn.
BigML còn được ứng dụng trong các tác vụ dự đốn mơ hình theo một khoảng thời gian xác định như chứng khốn, các khoản vay tín dụng. Tuy nhiên, khơng giống như MLBlocks, BigML chỉ cho phép chọn một thuộc tính duy nhất như là một điều kiện dự đốn, và nếu dữ liệu được sắp xếp theo chuỗi thời gian, nó sẽ là một q trình lặp lại liên tục. Ngồi ra, việc lựa chọn mơ hình kỹ thuật của BigML chỉ tập trung vào mơ hình cây quyết định, và không áp dụng kết hợp giữa các kỹ thuật mơ hình hóa khác nhau.
Trên đây là những công cụ tổng quan cho các nhà khoa học dữ liệu và phân tích kinh doanh, và bắt đầu để gợi ý về MLBlocks. Đặc biệt, trên tất cả các cơng cụ được trình bày ở trên, các kỹ thuật cho mơ hình dữ liệu chủ yếu rơi vào các loại Phân loại, hồi quy và / hoặc phân nhóm; đó là tất cả các tập con của các khối trong phần mềm MLBlocks.
2.3.2. Ngơn ngữ lập trình và thư viện cho ML
Trong số các sản phẩm được trình bày ở trên, Weka có vẻ là một hướng tốt nhất đối với các nhà khoa học dữ liệu. Các nhà khoa học trong lĩnh vực Máy học và phân tích dữ liệu phải sử dụng các cơng cụ chuyên biệt hơn để phục vụ công việc của họ.
Trong phần này tơi sẽ trình bày những ngơn ngữ lập trình và các thư viện dùng cho máy học. Không phải tất cả đều thích hợp để sử dụng trong các hệ thống thực tế, nhưng chúng là cơ sở lý tưởng để chúng ta học tập, tìm hiểu và tạo nguyên mẫu (prototyping).
Python: Scikit Learn
Python là một ngôn ngữ lập trình thơng dịch (interpreted), hướng đối tượng (object-oriented), và là một ngôn ngữ bậc cao (high-level) ngữ nghĩa động (dynamic semantics). Python hỗ trợ các module và gói (packages), khuyến khích chương trình module hóa và tái sử dụng mã nguồn. Trình thơng dịch Python và thư viện chuẩn mở rộng có sẵn dưới dạng mã nguồn hoặc dạng nhị phân cho tất cả các nền tảng chính và có thể được phân phối tự do. Sau đây là các đặc điểm của Python:
Cú pháp đơn giản, dễ đọc.
Vừa hướng thủ tục (procedural-oriented), vừa hướng đối tượng (object- oriented)
Hỗ trợ module và hỗ trợ gói (package)
Xử lý lỗi bằng ngoại lệ (Exception)
Kiểu dữ liệu động ở mức cao.
Có các bộ thư viện chuẩn và các module ngoài, đáp ứng tất cả các nhu cầu lập trình.
Có khả năng tương tác với các module khác viết trên C/C++ (Hoặc Java cho Jython, hoặc .Net cho IronPython).
Có thể nhúng vào ứng dụng như một giao tiếp kịch bản (scripting interface). Machine Learning trong Python được xây dựng dựa trên NumPy và Scipy. Thư viện này rất phù hợp với các lập trình viên Python hoặc Ruby. Nó rất dễ sử dụng, mạnh mẽ và đi kèm với tài liệu hướng dẫn tuyệt vời.
Gói tính tốn khoa học như NumPy, scipy và panda của cấu trúc dữ liệu thực sự có hiệu quả bằng cách tận dụng sức mạnh của API Python viết bằng C C++ /. NumPy là viết tắt của Numeric Python, là một gói thư viện hỗ trợ cho các tính tốn khoa học bằng ngơn ngữ lập trình Python.
Tương tự như vậy, các thư viện như Scikit đã được thiết kế để xây dựng hỗ trợ nhiều thuật tốn máy học.
Nhìn chung, hầu hết các gói phần mềm cung cấp các cơng cụ thơ cho các nhà khoa học dữ liệu có thể thực hiện các chương trình nghiên cứu, thí nghiệm của riêng mình. Luận văn này sẽ nghiên cứu làm thế nào để xây dựng MLBlocks như là một những công cụ để cung cấp một mức độ trừu tượng cao hơn cho các nhà khoa học dữ liệu.
R và Matlab:
R là một ngơn ngữ lập trình mã nguồn mở
Hỗ trợ các machine learning, thống kê máy tính
Có nhiều thư viện hỗ trợ trong ngành thống kê tin học
R rất phổ biến, nhưng nó khơng phải là lựa chọn duy nhất: Python cũng ngày càng phổ biến
R được biết đến là một ngơn ngữ lập trình mạnh mẽ và chun biệt dành cho những bài toán thống kê, hỗ trợ một thư viện lớn các số liệu thống kê và các thuật tốn máy học. Nó cung cấp hiệu suất tuyệt vời, nhưng cú pháp khá phức tạp của nó đơi khi gây khó cho các lập trình viên.
Trái ngược với Python, Matlab cũng cung cấp một nền tảng cho chuyên ngành thống kê tin học, và có thể cung cấp hiệu suất rất tốt. Hai ngôn ngữ này đã truyền cảm hứng cho sự phát triển của chính Python.
2.3.3. Cơng cụ thế hệ 2.0
Google Prediction API:
Google đã trở thành một nhà cung cấp hàng đầu các giao diện lập trình ứng dụng (API) và các sản phẩm Machine Learning như một dịch vụ (MLaaS).
Ra mắt vào tháng Chín năm 2010, Dự án API7 Google là một ví dụ về khả năng cung cấp hệ thống máy học như là dịch vụ (MLaaS). Nó hoạt động bằng cách cho phép các nhà khoa học dữ liệu tải dữ liệu của mình thơng qua một giao diện người dùng lên Google Cloud Storage, khi đó họ có thể gọi các thư viện xử lý dữ liệu thông qua các truy vấn HTTP. Google Machine Learning sử dụng các kỹ thuật phân loại dữ
liệu và hồi quy đơn giản và được dùng nhiều trong lĩnh vực phân tích dữ liệu, thăm dị và dự đốn xu hướng bất động sản. Nhược điểm của Google Machine Learning là nó bị giới hạn kiểu dữ liệu và người sử dụng khơng thể biết được các kỹ thuật mơ hình được áp dụng trên các tập dữ liệu của họ. Phương pháp này, gần giống như sử dụng thư viện NumPy và Scikit để khai phá một tập dữ liệu huấn luyện và có một máy chủ Website và đưa ra dự đoán dựa trên giải thuật SVM.
Directions API Google hiện nay được ứng dụng cho phép tính tốn đường đi giữa các vị trí, cho phép người dùng tìm đường đi bằng các phương tiện khác nhau: đi bộ, xe đạp, xe ô tô….
Dịch vụ này thực hiện tìm kiếm thơng qua nhiều đối số, trong đó có 2 đối số quan trọng là: Điểm nguồn và điểm đích. Các đối số có thể ở dạng Text String (ví dụ: điểm nguồn = Cơng viên phần mềm Đà Nẵng và điểm đích = trường Đại học Sư phạm) hoặc thay vào đó là kinh độ – vĩ độ tương ứng với từng địa điểm.
Amazon Machine Learning:
Gần đây nhất, vào ngày 09 tháng 4 năm 2015, một trong những gã khổng lồ Internet đã công bố giải pháp MLaaS. Amazon cung cấp giải pháp rất giống với đối thủ Google của mình. Người sử dụng cũng phải sử dụng một dịch vụ của Amazon (S3, Redshift hoặc RDS) để tải lên một tập tin dữ liệu với định dạng CSV, và nhãn của dữ liệu đã được xác định. Ngồi ra, người dùng cũng chỉ có thể sử dụng kỹ thuật đơn giản với rất ít tùy biến như phân loại hoặc hồi quy.
Amazon Machine Learning cho phép thiết lập web service để đưa ra dự đoán trong thời gian thực, nhưng việc cấu hình sẽ tương đối phức tạp. Chính vì những hạn chế này, Mlaas của Amazon chỉ được sử dụng bởi những người dùng có rất ít kinh nghiệm với máy học và muốn thiết lập một dịch vụ máy học đơn giản. Bên cạnh đó, hiệu suất của hệ thống dự báo trên nền tảng Mlaas của Amazon sẽ dựa nhiều vào kỹ năng cấu hình được thực hiện bởi người sử dụng, điều này làm mất tính linh hoạt của hệ thống.
Azure Machine Learning:
Có hai phases lớn là Training phase và Testing phase. Xin nhắc lại là với các bài toán Supervised learning, ta có các cặp dữ liệu đầu vào và dữ liệu đầu ra (input, output), với các bài tốn áp dụng mơ hình học khơng giám sát, ta chỉ có input mà thơi.
TRAINING PHASE
Có hai khối có nền màu xanh lục chúng ta cần phải thiết kế:
Feature Extractor
ĐẦU RA
Luận văn xin đề cập đầu ra của khối này trước vì mục đích của việc áp dụng các phương pháp khai phá dữ liệu là nhằm tạo ra một bộ dữ liệu “mẫu” (Feature Extractor) có thể đại diện cho tồn bộ khối dữ liệu thơ ban đầu, được xem như là ‘chìa khóa’ để khai thác dữ liệu thô ban đầu thành dữ liệu phù hợp với từng mục đích khác nhau.
ĐẦU VÀO
• Raw training input: Raw input là tất cả các thơng tin ta biết về dữ liệu. Ví dụ: Với ảnh thì là giá trị của từng pixel; với văn bản thì là từng từ, từng câu; với tập tin âm thanh thì nó là một đoạn tín hiệu; với cơ sở dữ liệu về ‘hoa’ thì nó là các thuộc tính về độ dài các cánh hoa và đài hoa, … Dữ liệu thô này thường không ở dạng vector, khơng có số chiều như nhau. Thậm chí có thể có số chiều như nhau nhưng số chiều quá lớn, như một bức ảnh màu 1000 pixel x 1000 pixel thì số phần tử đã là 3×1063×106 (3 vì ảnh màu thường có 3 hệ màu chủ đạo: Đỏ, xanh lá cây, xanh dương). Đây là một con số quá lớn, không thuận lợi cho lưu trữ và tính tốn.
• (optional) output của training set. Trong các bài tốn áp dụng mơ hình học