Vọc thử Orange: phần mềm data mining

orange_overview

Tôi thường nhận được nhiều câu hỏi từ các bạn ở nhóm ngành khác IT, rất quan tâm đến lĩnh vực Data mining và Machine learning, rằng họ không biết nên bắt đầu từ đâu và như thế nào, có cần phải học lập trình không, có cần phải biết xác suất thống kê không. Tôi thường trả lời rằng:

Cũng giống như bạn chơi piano vậy, bạn không cần phải học nhạc lý để có thể chơi được nhạc cụ này nhưng nếu bạn không học những kiến thức căn cơ đó, bạn chỉ chơi được ở level trung bình, chỉ đủ thoả mãn sở thích, không đi xa và lâu dài được.

Lập trình và thống kê toán là một trong các kĩ năng không thể thiếu để tiến hành xây dựng các mô hình phân tích và nghiên cứu phức tạp. Tuy nhiên, những người không biết lập trình vẫn có thể sử dụng các sản phẩm phần mềm để phân tích và xử lý thông tin ở mức cơ bản một cách nhanh chóng mà không cần biết lập trình. Điển hình là các phần mềm spreadsheet quen thuộc như Excel (Windows), Libre office Calc (Linux), Numbers (Mac OS). Ta có thể làm các thống kê trên bảng dữ liệu (sum, count, avg, stddev, quantile, etc.), transform dữ liệu, load dữ liệu từ nhiều nguồn, visualize bằng các biểu đồ trực quan, thậm chí ta có thể làm data mining nếu ta cài thêm các plugin cho chúng.

Xu hướng tương lai mà các bạn sẽ nhận thấy đó là tất cả các tác vụ hiện nay mà Data Engineer/Analyst/Scientist đang làm mỗi ngày dần dần sẽ bị thay thế bởi các công cụ automation mạnh mẽ và trực quan, tiết kiệm chi phí thực nghiệm thay vì hàng tuần, tháng chỉ cần một hai ngày là hoàn tất. Đó cũng là mục đích tiến hoá của ngành công nghiệp, cố gắng tự động hoá các công việc tay chân vất vả, nhàm chán để nhường chỗ cho con người sáng tạo ở các vai trò khác quan trọng hơn. Bản thân tôi cũng thuộc type người lười công việc tay chân, không thích coding nhiều, cái gì automation được thì tôi rất muốn thử và sử dụng ngay.

Orange là một trong những công cụ Data mining nhắm đến mục tiêu tự động hoá này. Tôi nhận thấy đây là phần mềm dễ sử dụng nhờ giao diện nhỏ gọn, các toolbox được sắp xếp hợp lý mạch lạc, ai cũng có thể bắt đầu. Trong bài viết này, tôi sẽ tiến hành phân tích dữ liệu cũng như cài đặt một số hàm Machine learning quen thuộc để cho các bạn mới bắt đầu có thể hình dung vắn tắt một pipeline làm việc với dữ liệu thì sẽ như thế nào.

Bài viết sẽ bắt đầu bằng lược đồ overview của workflow mà bạn đang quan tâm rồi mới đi vào chi tiết từng thành phần. Trong quá trình hướng dẫn, những bước đã được trình bày, tôi sẽ lướt qua và chỉ đề cập đến các bước mới. Ở mỗi phần, tôi cũng dẫn link đến file Orange workflows (*.ows) để các bạn có thể download về tham khảo.

Continue reading “Vọc thử Orange: phần mềm data mining”

Truy vấn văn bản – Document Retrieval

wikipedia

Giả sử bạn đang đọc một bài viết nào đó, hệ thống truy vấn văn bản sẽ giúp bạn tìm kiếm những bài viết tương tự như bài viết của bạn đang đọc. Vậy làm sao ta có thể tính được độ tương tự giữa các văn bản để tìm kiếm trong vô số các tài liệu có sẵn, tỷ lệ giống nhau về nội dung của các văn bản là bao nhiêu?

Trong bài viết này, ta sẽ sử dụng tập văn bản liên quan đến những người nổi tiếng download từ wikipedia (file csv đã xử lý có thể download ở đây) để xây dựng hệ thống truy vấn văn bản dựa trên nội dung đang đọc.

Notebooks: document_retrieval.ipynb

Hệ thống recommend bài nhạc

iTunes

Một trong những công nghệ giúp cho đời sống con người ngày càng dễ dàng hơn đó là recommender system. Recommender system giúp kết nối người dùng với sản phẩm mà họ tìm kiếm được thuận tiện và nhanh chóng hơn từ đó mang lại lợi thế cạnh tranh của sản phẩm so với các đối thủ khác. Bạn có thể bắt gặp hệ thống này ở các trang xem phim, nghe nhạc, mua bán, mạng xã hội, … Về cơ bản, bạn có thể áp dụng ngay kỹ thuật này vào hệ thống của bạn thông qua các hướng tiếp cận như: Popularity – liệt kê top các sản phẩm được nhiều người quan tâm nhất, Classification – dựa vào các chủ đề mà bạn cung cấp để lọc ra danh sách sản phẩm tương ứng. Tuy nhiên, các hướng tiếp cận này đều mang tính đại chúng, không nhắm vào một cá nhân cụ thể nào. Hơn nữa, không ai dễ dàng cung cấp thông tin cá nhân cho ứng dụng của bạn để có thể lọc thông tin phù hợp.

Do đó, trong bài viết này, tôi sẽ đi theo hướng tiếp cận Collaborative Filtering với hai phương pháp gồm Memory-Based Collaborative Filtering và Model-Based Collaborative filtering giúp trả lời hai câu hỏi “user nghe bài nhạc này thì sẽ có xu hướng nghe các bài như…” và “user có gu âm nhạc như bạn thì sẽ có xu hướng nghe các bài nhạc như…”. Trong đó, Model-Based sẽ sử dụng singular value decomposition (SVD) và Memory-Based sử dụng khoảng cách cosine để mô hình hóa hệ thống. Bạn có thể download dữ liệu từ đây Million Song Dataset Challenge.

Notebooks: song_recommender.ipynb
Source code:
Github.

Command line thường dùng

Linux is sexy.jpg

Trong quá trình phân tích dữ liệu, tôi thường làm việc trực tiếp trên môi trường UNIX. Nơi mà bạn chỉ có màn hình nền đen chữ trắng (terminal, command line) để tương tác với hệ thống (thu thập, quan sát, chỉnh sửa, chia sẻ dữ liệu). Lý do là vì bạn thường phải thuê server bên ngoài như Amazon và họ chỉ cung cấp cho bạn môi trường tương tác chính là từ dòng lệnh. Bài viết này xin tổng hợp lại những command line mà tôi thường dùng nhất để tiện cho các bạn mới nhập môn tham khảo và áp dụng.

Hy vọng sự linh hoạt của các dòng lệnh này có thể giúp bạn trở thành một nhà khoa học dữ liệu hiệu quả và năng suất hơn. Bạn sẽ học được cách kết hợp các công cụ dòng lệnh nhỏ nhưng mạnh mẽ này với nhau để nhanh chóng thu thập, khám phá và xây dựng mô hình dữ liệu của bạn.

Continue reading “Command line thường dùng”

Featured

Machine Learning cho người bắt đầu

Bắt đầu học Machine Learning

Những bạn yêu thích Machine Learning và không biết mình nên bắt đầu từ đâu có thể tham khảo bài viết này. Mọi câu hỏi, các bạn có thể comment bên dưới, mình luôn sẵn sàng ở đây để hỗ trợ.

Khởi động

Bạn cần làm quen với một vài điểm cơ bản để bắt đầu cuộc hành trình của mình.

Machine learning là gì

Tại sao cần Machine learning

AI, Machine Learning, Deep Learning phân biệt như thế nào cho đúng

Kĩ năng phân tích dữ liệu

Bạn cần học và thực hành tiến trình áp dụng machine learning vào bài toán cụ thể. Chuẩn bị dữ liệu > Huấn luyện > Đánh giá và lựa chọn mô hình.

Cách xác định bài toán trong Machine Learning

Tiền xử lý dữ liệu (Horse Colic dataset)

Lấy và làm sạch dữ liệu: Xử lý dữ liệu ngoại lai (Outliers)

Đánh giá mô hình (Model evaluation)

Big data

Một vài kiến thức và kĩ năng giúp bạn bắt đầu làm việc với Big Data.

Bắt đầu Big Data từ đâu và như thế nào?

FAQ: Big data cho người mới bắt đầu

Làm việc với Spark DataFrames – Truy vấn cơ bản

Kỹ năng hệ thống

Bạn cũng nên chuẩn bị cho mình phương pháp quản lý dự án và thao tác nhanh với hệ thống.

Git notes

Command line thường dùng

Soạn slides bằng Beamer

Viết luận văn bằng LaTeX

Continue reading “Machine Learning cho người bắt đầu”

Machine Learning và Real-Time Bidding

Real-Time Bidding
Real-Time Bidding

Real-Time Bidding (RTB) tạm dịch là “Đấu gía thời gian thực”. RTB là việc mua bán lượt hiển thị quảng cáo online thông qua cơ chế thời gian thực xảy ra vào lúc trang web đang tải. Những cuộc đấu giá diễn ra dễ dàng hơn bởi ad exchange, demand-side platforms và supply-side platforms (SSP).

RTB khác với các mô hình quảng cáo truyền thống như thế nào? Tại sao chúng ta cần RTB? RTB mang lại lợi ích gì cho các trang mạng (publishers) và các nhà quảng cáo (advertisers)? Machine learning áp dụng vào các hệ thống RTB như thế nào? Qua bài viết này, tôi sẽ trả lời các câu hỏi trên cũng như trình bày những thách thức về Big Data trong RTB và tình hình nghiên cứu hiện nay của Machine Learning vào RTB. Continue reading “Machine Learning và Real-Time Bidding”

Soạn slides bằng Beamer

latex beamer
latex beamer

Ngoài chức năng soạn thảo văn bản, LaTex còn có Beamer là một định dạng dùng để soạn slide trình chiếu. Do đặc thù của báo cáo khoa học là chú trọng nội dung và kết quả nghiên cứu hơn là trình chiếu animation sinh động như thường được thấy tại các buổi triễn lãm bán hàng. Beamer hướng đến sự đơn giản trong cách dàn trang cũng như tập trung nhiều vào việc hiển thị các công thức toán và bảng biểu. Trong bài viết này, tôi xin chia sẻ cấu trúc một slide trình chiếu đơn giản sử dụng định dạng Beamer của LaTeX.

Github: https://github.com/ongxuanhong/latex-thesis-template

Continue reading “Soạn slides bằng Beamer”

Nguồn tham khảo về Deep Learning

Deep learning
Deep learning

Deep Learning là một kĩ thuật rất “hot” của Machine Learning. Kĩ thuật này đã gặt hái được nhiều thành công trong các kết qủa nghiên cứu cũng như những ứng dụng thông minh ngoài thực tế đòi hỏi phải có độ chính xác cao. Dưới đây tôi xin liệt kê một số nguồn tham khảo miễn phí về Deep learning cho người mới bắt đầu cũng như những người muốn theo dõi xu hướng của kĩ thuật này.

Feature engineering là gì

Feature engineering
Feature engineering

Trong bài viết này, ta sẽ tìm hiểu về kĩ thuật feature engineering. Đây là chủ đề mà hầu như không có bài báo hay cuốn sách nào đề cập đến nhưng kĩ thuật này là yếu tố quan trọng trong việc xây dựng thành công mô hình dự đoán có độ chính xác cao. Bài viết này nhằm trả lời câu hỏi feature engineering là gì, tại sao nó quan trọng, và các bài toán con trong kĩ thuật feature engineering.

Continue reading “Feature engineering là gì”

Điểm qua các thuật toán Machine Learning hiện đại

Trong bài viết này, ta sẽ điểm qua một số thuật toán Machine learning thường được sử dụng trong các hệ thống hiện đại chuyên để xử lý Big Data. Các thuật toán này nhắm đến độ chính xác dự đoán và tối ưu hoá khả năng tính toán của hệ thống hiện tại.

Deep Learning

Deep learning là phương pháp nâng cao của mạng nơ-ron nhân tạo (Artificial Neural Networks) khai thác khả năng tính toán ngày càng rẻ từ các chip xử lý hiện đại.

Phương pháp này nhắm tới việc xây dựng nhiều hơn các mạng nơ-ron phức tạp cũng như giải quyết bài toán semi-supervised do tập dữ liệu khổng lồ thường được gán nhãn không đầy đủ.

Các thuật toán deep learning phổ biến:

  • Deep Boltzmann Machine (DBM)
  • Deep Belief Networks (DBN)
  • Convolutional Neural Network (CNN)
  • Stacked Auto-Encoders

Dimensionality Reduction

Tương tự như phương pháp clustering, cơ chế của phương pháp giảm số chiều thuộc tính (dimensionality reduction) cũng dựa trên tính chất vốn có của dữ liệu để rút gọn, tổng hợp lại thành tập dữ liệu mới có thông tin ít hơn rất nhiều nhưng vẫn đảm bảo mô tả toàn vẹn tập dữ liệu ban đầu.

Phương pháp này thường được sử dụng vào Big Data, do số lượng dữ liệu quá lớn và giới hạn tính toán của hệ thống hiện tại, ta có thể rút gọn tập dữ liệu ban đầu để có thể đáp ứng được khả năng tính toán nhưng vẫn giữ được độ chính xác dự đoán có thể chấp nhận được. Một số thuật toán dimensionality reduction:

  • Principal Component Analysis (PCA)
  • Principal Component Regression (PCR)
  • Partial Least Squares Regression (PLSR)
  • Sammon Mapping
  • Multidimensional Scaling (MDS)
  • Projection Pursuit
  • Linear Discriminant Analysis (LDA)
  • Mixture Discriminant Analysis (MDA)
  • Quadratic Discriminant Analysis (QDA)
  • Flexible Discriminant Analysis (FDA)

Ensemble

Phương pháp ensemble là mô hình được tổng hợp từ nhiều mô hình con (weaker model) được huấn luyện độc lập. Kết quả dự đoán cuối cùng dựa trên kết quả “bỏ phiếu” của từng mô hình con đó cho kết quả đầu ra.

Các thuật toán cải tiến cho phương pháp này thường nhắm tới cách làm thế nào để lấy mẫu huấn luyện hiệu quả cho từng mô hình con và làm thế nào để lựa chọn các mô hình con sao cho chúng kết hợp lại có thể tạo ra kết quả dự đoán tốt nhất. Một số kĩ thuật esemble:

  • Boosting
  • Bootstrapped Aggregation (Bagging)
  • AdaBoost
  • Stacked Generalization (blending)
  • Gradient Boosting Machines (GBM)
  • Gradient Boosted Regression Trees (GBRT)
  • Random Forest

The 40 data science techniques

big data algorithms
big data algorithms
  1. Linear Regression
  2. Logistic Regression
  3. Jackknife Regression *
  4. Density Estimation
  5. Confidence Interval
  6. Test of Hypotheses
  7. Pattern Recognition
  8. Clustering – (aka Unsupervised Learning)
  9. Supervised Learning
  10. Time Series
  11. Decision Trees
  12. Random Numbers
  13. Monte-Carlo Simulation
  14. Bayesian Statistics
  15. Naive Bayes
  16. Principal Component Analysis – (PCA)
  17. Ensembles
  18. Neural Networks
  19. Support Vector Machine – (SVM)
  20. Nearest Neighbors – (k-NN)
  21. Feature Selection – (aka Variable Reduction)
  22. Indexation / Cataloguing *
  23. (Geo-) Spatial Modeling
  24. Recommendation Engine *
  25. Search Engine *
  26. Attribution Modeling *
  27. Collaborative Filtering *
  28. Rule System
  29. Linkage Analysis
  30. Association Rules
  31. Scoring Engine
  32. Segmentation
  33. Predictive Modeling
  34. Graphs
  35. Deep Learning
  36. Game Theory
  37. Imputation
  38. Survival Analysis
  39. Arbitrage
  40. Lift Modeling
  41. Yield Optimization
  42. Cross-Validation
  43. Model Fitting
  44. Relevancy Algorithm *
  45. Experimental Design

Nguồn tham khảo:

Góp nhặt kinh nghiệm làm nghề Data scientist

A good data scientist knows how to do something really well, but a great data scientist can do “something of everything.” From raw data all the way to shining in front of C-level executives, a great data scientist has the skills to architect data systems, build applications, perform modeling and machine learning and wrap up the results in a clear (and quickly iterable) manner. From data models to ETL to databases to distributed algorithms and learning, this book has you covered.

Data Science with Java

Qua thời gian làm việc cũng như tìm tòi tài liệu, sách báo về machine learning, nếu vai trò của bạn là Data Scientist/Data Engieer/Data Analyst thì phần lớn bạn sẽ nhận được những chia sẻ kinh nghiệm bên dưới. Trong bài viết này, mình sẽ tổng hợp lại những kinh nghiệm trong ngành Data Science để dễ dàng tham khảo sau này.

Modern data scientist
Modern data scientist

Continue reading “Góp nhặt kinh nghiệm làm nghề Data scientist”

Cách xác định bài toán trong Machine Learning

machine-learning-cheet-sheet
machine-learning-cheet-sheet

Nếu tôi hỏi khách hàng xem họ muốn gì, có lẽ họ sẽ nói rằng họ muốn có một con ngựa biết chạy nhanh hơn
– Henry Ford

Trong thực tế, trước khi giải bất kỳ bài toán nào, việc đầu tiên chúng ta cần làm đó là xác định vấn đề. Đặc biệt khi làm trong lĩnh vực Machine Learning (ML), nhiều khi bài toán do các doanh nghiệp đặt ra khá mơ hồ và không cụ thể khiến cho quá trình xây dựng mô hình dự đoán đi đến ngõ cụt hoặc không đáp ứng được yêu cầu của khách hàng. Vậy làm thế nào để có thể xác định được bài toán hiện tại thuộc loại bài toán nào để giải quyết bằng ML? Bài viết này sẽ liệt kê các câu hỏi nghiên cứu và đưa ra bài toán cụ thể để giải bằng ML.

Continue reading “Cách xác định bài toán trong Machine Learning”

Kỹ năng làm việc với Machine Learning

Machine learning workflow
Machine learning workflow

Thông thường khi bắt tay làm việc với Machine Learning, đa số chúng ta đều mong muốn áp dụng ngay các thuật toán đã học vào bài toán của mình. Tuy nhiên, trong thực tế, mọi thứ đều không đơn giản như vậy. Ngoài kĩ năng thu thập và tiền xử lý dữ liệu, trong bài viết này, tôi sẽ đề cập đến những kĩ năng cần thiết khác để góp phần cải tiến độ chính xác của mô hình dự đoán của mình.

Continue reading “Kỹ năng làm việc với Machine Learning”

Đánh giá mô hình (Model evaluation)

Đánh giá mô hình

Trong thực tế, ta cần áp dụng nhiều thuật toán Machine learning để chọn ra được mô hình phù hợp nhất cho bài toán của mình. Vấn đề đặt ra, làm thế nào để đánh giá và chọn ra các mô hình. Ngoài thuật toán học máy, sự thực thi của mô hình có thể phụ thuộc vào các yếu tố khác như sự phân bố của các lớp, chi phí phân loại sai, kích thước của tập huấn luyện và tập thử nghiệm, độ đo thực thi. Trong bài viết này, ta sẽ đánh giá thực thi: tập trung vào khả năng dự đoán của mô hình hơn là tốc độ phân loại hay xây dựng mô hình, khả năng co giãn.

Continue reading “Đánh giá mô hình (Model evaluation)”

Những ứng dụng thương mại của Deep learning

Deep learning có mặt ở mọi nơi. Trên Amazon và Netflix: cung cấp những thông tin được cá nhân hóa (personalized recommendations). Trên smartphone: giúp kích hoạt trợ lý bằng giọng nói. Trên các website và ứng dụng di động: giúp cho nội dung quảng cáo nhắm đến khách hàng tiềm năng chính xác hơn. Deep learning giúp cho doanh nghiệp thu được những thông tin hữu ích từ dữ liệu phi cấu trúc (unstructured data).

8 Types of data
8 Types of data

Các doanh nghiệp ngày nay đang cố gắng tận dụng những dữ liệu phi cấu trúc (photographs, videos, chat logs, các văn bản) để đưa ra các quyết định kinh doanh hiệu quả hơn. Họ đang tận dụng khả năng thông minh của deep learning trong việc tự động hoá các tiến trình kinh doanh này.

Trong bài viết này, ta sẽ nói về deep learning, những thách thức về dữ liệu lớn, và các ứng dụng thương mại trong thực tế của deep learning.

Continue reading “Những ứng dụng thương mại của Deep learning”

Tại sao cần Machine learning

Baymax
Baymax

Nếu trả lời được câu hỏi trên, bạn đã thật sự hiểu được động lực nghiên cứu trong lĩnh vực này và tại sao bạn cần kiến thức về Machine learning. Trong bài viết này, tôi sẽ trình bày một số lý do chỉ có Machine learning mới có thể giải quyết được mà việc lập trình thủ công không thể nào đạt được. Continue reading “Tại sao cần Machine learning”

Machine learning là gì

Supervised classification
Supervised classification

Khi làm việc trong lĩnh vực Machine learning, ắt hẳn một ngày đẹp trời, bạn sẽ được đồng nghiệp hay những đứa bạn của mình hỏi rằng “Machine learning là gì?”. Để trả lời ngay câu hỏi trên không phải là điều đơn giản vì trên thực tế ta có nhiều hơn một định nghĩa về Machine learning. Do đó, hãy thủ sẵn cho mình câu trả lời ngắn gọn và dễ hiểu nhất để thể hiện bạn không phải là tay mơ trong lĩnh vực này.

Continue reading “Machine learning là gì”