SMA 2017 – Lý thuyết tập thô (P3) – Rút gọn thuộc tính

rough_set_attribute_reduction

rough_set_attribute_reduction

Rút gọn thuộc tính hay lựa chọn thuộc tính là bước quan trọng trong xây dựng mô hình dự đoán. Khi thu thập dữ liệu, ta sẽ tiến hành lấy tất cả thông tin liên quan đến đối tượng cần xét càng nhiều càng tốt. Điều này dẫn đến dữ liệu sẽ bị dư thừa và không phải thuộc tính thông tin nào cũng cần thiết trong mô hình dự đoán. Do đó, việc xác định và loại bỏ được các thuộc tính dư thừa trong tập dữ liệu là điều cần thiết trước khi xây dựng mô hình ML cho hệ thống.

Việc rút gọn hay loại bỏ được các thuộc tính dư thừa giúp cải thiện độ chính xác của mô hình, giảm bớt overfitting, đẩy nhanh quá trình tính toán giúp tiết kiệm tài nguyên và chi phí. Tiếp theo phần 2, bài viết này tập trung vào đánh giá và rút gọn thuộc tính để trích chọn ra những đặc trưng mang mức độ ý nghĩa cao cho hệ thông tin của chúng ta.

Tiếp tục đọc

Advertisements

SMA 2017 – Lý thuyết tập thô (P2) – Rời rạc hoá thuộc tính

discretization

discretization

Tiếp theo phần 1, ở phần này, tôi sẽ đi tiếp làm thế nào để rời rạc hoá dữ liệu. Trong thực tế, các kiểu dữ liệu trong hệ thông tin của chúng ta không chỉ có kiểu dữ liệu số nguyên mà còn nhiều loại dữ liệu phức tạp khác như kiểu dữ liệu số thực, kiểu dữ liệu phạm trù, … Lý thuyết tập thô muốn làm việc được trên tập dữ liệu này, ta cần rời rạc hoá tập dữ liệu thành các khoảng đoạn. Ở đây, ta có hai hướng tiếp cận là kĩ thuật chia giỏ và rút gọn bảng nhị phân.

Tiếp tục đọc

SMA 2017 – Lý thuyết tập thô (P1) – Các khái niệm cơ bản

rough_set

rough_set

Đây là những ghi chú của tôi sau khoá học SMA 2017. Tôi xin chia sẻ những gì đã học được qua buổi dạy “Lý thuyết tập thô” của thầy Đặng Phước Huy từ Đại học Đà Lạt. Hơn 40 năm trong nghề và trong mười mấy năm gần đây, thầy đã tìm hiểu về lý thuyết tập thô của Pawlak rất hay, có thể áp dụng vào thống kê rất tốt nên muốn chia sẻ cho chúng ta những ứng dụng của lý thuyết này vào khai thác dữ liệu. Hy vọng những bạn quan tâm có thể áp dụng ngay vào thực tiễn.

Mới đầu thì nghe topic có vẻ hơi “thô” nhưng thật ra không hề thô tý nào. Về ứng dụng thì nó có thể dùng trong rút trích đặc trưng, tối giản hoá tập dữ liệu, rút trích hình mẫu trong dữ liệu, phát sinh luật hỗ trợ ra quyết định, … Thêm vào đó, cách diễn đạt của thầy rất có hồn và dễ hiểu không khô khan như các ký tự toán học trên giấy. Thầy sẽ đi từ ví dụ trước khi quay lại các lập luận toán học nên bạn sẽ cảm thấy dễ hiểu hơn. Các thuật ngữ tiếng Anh, tiếng Việt đều được giải nghĩa và làm rõ để có thể tiếp cận lý thuyết này nhanh nhất. Qua khoá học này, đảm bảo các bạn có thể cài đặt và áp dụng được ngay. Tôi cũng dự định sẽ cài đặt để áp dụng thử vào project hiện tại của mình.

Tiếp tục đọc

Con đường học tập Machine Learning của tôi

Học Machine Learning

Chặng đường trở thành một Data Scientist khá dài, 2-3 năm thậm chí là 5 năm tuỳ năng lực của mỗi người. Có bạn chọn cho mình con đường học thuật từ cử nhân, master cho đến PhD. Có bạn học xong cử nhân thì tìm kiếm ngay cho mình cơ hội nghiên cứu ở các công ty. Có bạn lại chọn cho mình phát triển ở vị trí Data Engineer/Data Analyst chuyên phân tích dữ liệu Big Data. Dù bạn ở vị trí nào đi nữa thì điều quan trọng nhất là bạn đã đóng góp được gì cho dự án mà mình tham gia.

Trong bài viết này, tôi sẽ tản mạn một chút về quá trình học tập Machine Learning của tôi trong thời gian qua. Từ lúc tôi còn ngồi ghế nhà trường cho đến lúc đi làm. Bạn đọc ở đây có lẽ cũng có nhiều điểm chung như tôi, cũng đã từng thử qua nhiều phương pháp học Machine Learning khác nhau, cũng đã từng trải nghiệm và chọn lọc ra cách học phù hợp nhất đối với bản thân. Cách tiếp cận của tôi có lẽ không phải là cách tốt nhất nên ta chỉ tham khảo để giao lưu thêm thôi nhé.

Tiếp tục đọc

Hướng dẫn deploy Spark

spark-mesos

Việc deploy Spark là cần thiết đối với các tác vụ mang tính chu kỳ. Ví dụ, ta có thể tạo một CRON job để chương trình Spark có thể tự động tổng hợp dữ liệu cho chúng ta sau chu kỳ mỗi giờ, mỗi ngày hay mỗi tuần. spark-submit là một shell command được dùng để deploy ứng dụng Spark lên cluster. Nhờ vào cơ chế quản lý phân tán của Spark, ta không cần phải chỉnh sửa source code quá nhiều để có thể chuyển đổi từ standalone mode sang distributed mode.

Để hoàn tutorial này, bạn cần các phần mềm sau:

Tiếp tục đọc

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.

Tiếp tục đọc

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.

Source code: Github.

Tiếp tục đọc

TensorFlow – thư viện code Deep Learning

tensorboard

Bài viết này không nhằm vào hướng dẫn lập trình TensorFlow. Lý do, các bạn có thể tìm thấy nhiều source code hướng dẫn khác nhau trên internet, tự cài đặt và lập trình dễ dàng. Nếu các bạn đã có kiến thức cơ bản về Neural Network thì việc nắm bắt công nghệ này cũng sẽ đơn giản hơn rất nhiều.

Thông thường, ta sẽ đi theo flow nghiên cứu sau: vào trang https://www.tensorflow.org/ để xem qua bài giới thiệu chung chung, sau đó tiến hành cài đặt, cài đặt thất bại do conflict thư viện, cài đặt thành công, đọc source code, cài đặt thuật toán từ các tutorial, hiểu sơ sơ, bắt đầu hoang mang do có quá nhiều bài viết cần đọc và cài đặt -> mất hết cảm hứng.

Do đó, mình sẽ hướng các bạn đi theo một tiếp cận khác. Đầu tiên, ta sẽ lấy cảm hứng nghiên cứu thông qua các ứng dụng ngoài thực tế, người thật việc thật của TensorFlow. Tiếp đến, ta sẽ xem mọi người đánh giá như thế nào về mã nguồn này, có đáng để ta tiếp tục nghiên cứu không. Sau cùng, ta sẽ bắt tay vào tiến hành cài đặt và ứng dụng công nghệ cùng với các tài liệu tham khảo chất lượng đã thu thập được.

Tiếp tục đọc

Sentiment Analysis cơ bản

Amazon customer reviews
Sentiment analysis – hay phân tích tâm lý của đối tượng – là một chủ đề thách thức trong Machine Learning. Mọi người thể hiện cảm nhận của mình thông qua ngôn ngữ tự nhiên có bản chất nhập nhằng, mơ hồ đã gây không ít khó khăn cho việc xử lý cho máy tính hiểu. Chưa kể, họ sử dụng các cách chơi chữ, ẩn ý hay các kí hiệu như

:), :(, =)))

để giải bày cảm xúc của họ.

Trong bài viết này, tôi sẽ sử dụng tập dữ liệu Web data: Amazon Fine Foods reviews cho việc áp dụng kĩ thuật Sentiment analysis. Đây là tutorial cơ bản dành cho các bạn mới bắt đầu nghiên cứu vấn đề này. Ở đây, ta sẽ sử dụng hướng tiếp cận Bag of Words để chuyển đổi dữ liệu văn bản thành ma trận vector từ đó có thể đưa vào các mô hình phân lớp để học.

Source code: classification_algorithms.py
Tiếp tục đọc

Python snippet: Linear regression

features_vs_target.png

Linear regression (Hồi quy tuyến tính) thường được ứng dụng vào dự đoán giá trị số thực khi cho trước dữ liệu đầu vào. Ví dụ một số ứng dụng của Linear regression:

  • Dự đoán mức lương sau khi ra trường của một người dựa vào các thông số như điểm trung bình khoá học, số lượng các hoạt động ngoại khoá đã tham gia, giới tính, …
  • Dự đoán giá chứng khoán ngày mai dựa vào lịch sử giá trước đó, các sự kiện xã hội, số lượng vốn đầu kỳ, …
  • Bao nhiêu người sẽ share bài viết của bạn trên facebook dựa trên số lượng bạn bè, số lượng bạn của bạn bè, độ phổ biến của hashtag, những bài viết trước đó, …
  • Điều chỉnh nhiệt độ phòng dựa trên thời gian trong ngày, nhiệt độ ngoài trời, ánh sáng trong phòng, …

Tiếp tục series Python snippet (Python snippet: Visualizing, Python snippet: Thu thập dữ liệu), tuần này tôi sẽ đưa vào một vài snippet liên quan đến linear regression áp dụng trên tập dữ liệu home_data để dự đoán giá nhà dựa trên một vài thuộc tính cơ bản như số lượng phòng ngủ, số lượng phòng tắm, điểm đánh giá, …

Lý thuyết: linear regression
Source code: data-science-works
Thư viện: matplotlib, pandas, scikit-learn

Tiếp tục đọc