Đón năm mới 2017 với cuộc thi Kaggle

Can you improve lung cancer detection
Can you improve lung cancer detection

Hằng năm Kaggle có đưa ra nhiều cuộc thi liên quan đến các vấn đề xã hội như là một thách thức để các bạn trẻ tài năng tham gia giúp sức cho cộng đồng.

Lần này, nhân dịp đầu năm mới, tôi và một vài người bạn quyết định tham gia khởi động với cuộc thi Kaggle với chủ đề liên quan đến chẩn đoán bệnh ung thư phổi thông qua ảnh DICOM.

Mục đích của bài viết này là tổng hợp lại các thông tin đủ để các bạn hoặc đồng đội của bạn bắt tay vào xây dựng mô hình dự đoán cũng như truyền chút động lực cho các bạn đang tham vọng dấn thân vào ngành Data Science.

Xem tiếp

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

book_search
book_search

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.

Xem tiếp

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

song-recommendations
song-recommendations

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.

Xem tiếp

TensorFlow – thư viện code Deep Learning

tensorboard
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.

Xem tiếp

Python snippet: Linear regression

cartoon_guide_regression.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

Xem tiếp

Python snippet: Thu thập dữ liệu

multiple-data-sources

Trước khi có thể làm việc với dữ liệu, việc đầu tiên bạn cần làm là thu thập chúng. Có rất nhiều nguồn dữ liệu khác nhau như web, APIs, databases, những định dạng file plain text (.csv, .tsv). Sau khi thu thập, ta có thể thực hiện vài động tác chuẩn hoá dữ liệu sao cho phù hợp với nhu cầu làm việc của mình nhất.

Tiếp tục series Python snippet (Python snippet: Visualizing), tuần này tôi sẽ đưa vào một vài snippet thường gặp trong quá trình thu thập dữ liệu.
Source code: data-science-works
Thư viện: csv, json, re, collections, requests, bs4, twython

Xem tiếp

Python snippet: Visualizing

matplotlib

Python snippet là series các bài viết tổng hợp lại những đoạn code hữu ích trong quá trình làm việc và nghiên cứu của tôi. Mục đích chủ yếu làm nơi tham khảo nhanh để tiết kiệm thời gian cài đặt và triển khai. Tôi sẽ bắt đầu với visualizing gồm các chart (biểu đồ) cơ bản thường hay dùng để phân tích dữ liệu.

Source code: data-science-works
Thư viện: matplotlib, numpy

Xem tiếp

Word embedding

word2vectors.gif
NLP là một trong những bài toán khó và phức tạp trong ngành Khoa học máy tính và Trí tuệ nhân tạo. Do đòi hỏi phải dạy cho máy tính không chỉ hiểu được cú pháp của một ngôn ngữ mà còn ngữ nghĩa của các câu sử dụng trong từng ngữ cảnh đặc biệt mà không mắc phải nhập nhằng (ambiguity).

Để đi đến đích, đó là xây dựng được một hệ thống AI hoàn thiện, ta còn cách tương lai quá xa. Trong khi đó, word vector (hay còn gọi là distributed representations) là một công cụ khá thú vị có thể xoá bỏ một vài khoảng cách tri thức về ngôn ngữ giữa máy tính và con người. Trong bài viết này, tôi sẽ tóm tắt lại khái niệm và ý nghĩa của việc sử dụng word vector trong NLP.

Ví dụ kinh điển khi nói đến word vector là “king – man + woman =?”, bạn có nghĩ rằng máy tính sẽ trả lời là “queen” không? Thật vậy, Google đã làm được điều này trong dự án nghiên cứu word2vec của mình (biến đổi một từ thành một vector). Bạn có thể tham khảo thêmword2vec implementation Google Code.

Xem tiếp

Topic Modeling là gì

Latent Dirichlet Allocation
Latent Dirichlet Allocation

Topic Modeling là gì? Tại sao chúng ta cần nó?

Trong thế giới Big Data, dữ liệu luôn luôn tăng dần mỗi ngày khiến cho việc tìm kiếm những thông tin cần thiết đối với từng cá nhân ngày càng khó khăn. Để giải quyết vấn đề này, ta cần có các công cụ và kĩ thuật để tổ chức, tìm kiếm và hiểu được ý nghĩa của thông tin lộn xộn đó. Topic modeling là một trong các công cụ giúp ta thực hiện được việc này:

  • Khám phá các pattern topics xuất hiện trong tập văn bản.
  • Phân loại và gán nhãn các văn bản dựa vào các topic đã được định nghĩa.
  • Sử dụng các nhãn này để tổ chức, tìm kiếm và tổng hợp văn bản.

Có nhiều kĩ thuật được sử dụng để thu được topic models như LDA và TextRank. Bài viết này tập trung giải thích Latent Dirichlet Allocation (LDA), một phương pháp thông dụng trong topic modeling.

Xem tiếp

Long short-term memory (LSTM)

Short term vs Long term memory
Short term vs Long term memory
Deep learning là một kĩ thuật Machine Learning mạnh mẽ đang được nhiều người trong ngành biết đến và nghiên cứu. Kĩ thuật này nổi trội là do chúng thực hiện được hai việc cùng lúc: biểu diễn thông tin (represent problem/feature engineering) và học (learning). Do đó, kĩ thuật này còn được gọi là representation learning.

Bên cạnh các lĩnh vực đã gặt hái được nhiều thành công như Xử lý ảnh số và video số, hay Xử lý tiếng nói, Deep Learning cũng được áp dụng vào Xử lý ngôn ngữ tự nhiên. Cụ thể trong bài viết này, Long short-term memory (LSTM) là mô hình cải tiến từ RNN cũng thuộc họ Deep Learning mà ta cần quan tâm.

Xem tiếp