Kaggle lung cancer detection – Phác thảo hệ thống (Prototype)

compressed-images
compressed-images

Một Data scientist cần có khả năng prototype nhanh mô hình dự đoán của mình bằng cách sử dụng mẫu dữ liệu nhỏ có thể lưu trữ ngay trên laptop. Khi mô hình đã được kiểm chứng và hoạt động, ta có thể tiến hành làm việc với các thành viên khác trong nhóm để tích hợp các tác vụ rút trích đặc trưng (feature extraction), quản lý và mở rộng prototype được viết bởi nhiều thành viên khác trong nhóm. Sau khi hoàn tất phần prototype, ta có thể làm việc với engineers/developers để hiện thực hóa sản phẩm thông qua mô hình đã huấn luyện.

Khi prototype, ta hoàn toàn có quyền viết scripts không trật tự và rõ ràng để hoàn tất công việc, nhưng cần đảm bảo code được viết càng đơn giản càng tốt để sau này có thể đọc hiểu và phát triển bởi các thành viên khác.

Tiếp tục với cuộc thi Kaggle lung cancer detection, trong bài viết này, ta sẽ cùng nhau prototype hệ thống chẩn đoán ung thư phổi đơn giản. Đầu vào là ma trận đặc trưng (sử dụng ngay ảnh raw, chưa áp dụng các kỹ thuật rút trích đặc trưng). Đầu ra là kết quả đánh giá và so sánh giữa các mô hình dự đoán.

Github sources:

Kaggle lung cancer detection: Tiền xử lý ảnh (Preprocessing)

kaggle-image-preprocessing
kaggle-image-preprocessing

Tiền xử lý ảnh (image preprocessing) là tiến trình cải thiện chất lượng ảnh sao cho ảnh đầu ra giữ lại được những đặc trưng (feature) quan trọng trong ảnh. Sau đó, làm đầu vào cho các quá trình xử lý tiếp theo. Ta có thể thay đổi độ sáng của ảnh (pixel brightness transformation), biến đổi hình học ảnh (geometric transformation), rút trích đặc trưng ảnh (feature extraction), nội suy ảnh (image interpolation), lọc ảnh (image filtering: blur, sharpen, noise removal), …

Trong bài viết này, ta sẽ học cách làm việc với tập dữ liệu ảnh số. Ta sẽ tìm hiểu về cách ảnh số được định dạng trong không gian như thế nào. Bắt đầu bằng việc đọc và hiển thị ảnh cho đến áp dụng tích chập (convolution) và lọc ảnh bằng Tensorflow. Ở đây, tôi sẽ sử dụng tập dữ liệu download từ Kaggle Data Science Bowl 2017. Do tập dữ liệu khá lớn, các bạn có thể download sample_images về làm việc.

Git source: basics.py

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

Sentiment Analysis cơ bản

amazon-reviews.jpg
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

Xem tiếp

Lập trình MapReduce với Python

Trong bài viết này, ta sẽ thiết kế và cài đặt các thuật toán MapReduce cho các tác vụ xử lý dữ liệu thông thường. Mô hình lập trình MapReduce được đề xuất trong một bài báo năm 2004 từ một nhóm nghiên cứu tại Google. MapReduce là một mô hình đơn giản để xử lý song song các tập dữ liệu lớn (Big Data).

MapReduce
MapReduce

Bài viết này giúp bạn làm quen với tư duy lập trình MapReduce. Ta sẽ sử dụng tập dữ liệu nhỏ để dễ kiểm tra kết quả thực thi cũng như để quan sát hoạt động bên trong MapReduce như thế nào. Mọi tập tin và dữ liệu liên quan đến bài viết được lưu tại Github: https://github.com/ongxuanhong/MapReduce-with-Python.

Xem tiếp

Ứng dụng SQL trong tìm kiếm văn bản dựa trên từ khóa

SQL Big Data
SQL Big Data

Trong bài viết này, ta sẽ ứng dụng ngôn ngữ truy vấn SQL vào phép tính nhân hai ma trận rời rạc (có nhiều giá trị bằng 0). Từ phép tính này, ta tiến hành xây dựng bộ máy tìm kiếm văn bản dựa trên từ khóa.

Bài viết sử dụng sqlite3, độc giả có thể tìm hiểu cách cài đặt ở trang web sau: http://www.tutorialspoint.com/sqlite/sqlite_installation.htm

Mọi tập tin liên quan đến bài viết có thể truy xuất tại Github: https://github.com/ongxuanhong/database-analysis

Xem tiếp

Phân tích tâm lý (Sentiment Analysis) Twitter (P2) – Tính chỉ số tâm lý (sentiment score)

Sentiment Analysis
Sentiment Analysis

Ở phần hai, ta sẽ tính chỉ số tâm lý (sentiment score) cho từng tweet dựa vào nội dung của người dùng. Chỉ số cho từng tweet được tính bằng cách lấy tổng điểm sentiment của từng từ trong tweet đó. Ta tạo file tweet_sentiment.py nhận hai đối số đầu vào là AFINN-111.txt và tweets.json. Sau đó, lưu chỉ số tâm lý cho từng tweet vào file tweet_scores.txt.

Xem tiếp

Phân tích tâm lý (Sentiment Analysis) Twitter (P1) – Thu thập dữ liệu

Sentiment Analysis
Sentiment Analysis

Ngày nay, Twitter trở thành một công cụ mới để thực hiện các phép đo tâm lý xã hội. Có hàng triệu người bày tỏ ý kiến của mình trên mọi lĩnh vực đời sống. Nguồn dữ liệu này vô cùng quý giá cho cả nghiên cứu lẫn kinh doanh.

Ví dụ, các nhà nghiên cứu đã chỉ ra rằng “tâm trạng” truyền thông trên twitter phản ánh nhịp điệu sinh học và thậm chí được sử dụng để dự đoán thị trường chứng khoán. Một sinh viên tại UW sử dụng tweets geocoded để vẽ bản đồ các địa điểm nơi có “sấm sét” vào mùa hè năm 2012.

Trong phần một, ta sẽ thu thập dữ liệu từ Twitter bằng ngôn ngữ lập trình python qua API mà twitter cung cấp.

Xem tiếp

Gom nhóm (Clustering analysis) tập dữ liệu Labor

Trong bài viết này, ta sẽ áp dụng các phương pháp gom nhóm (clustering) trên tập dữ liệu Labor. Đây là tập dữ liệu chứa các thông tin (số ngày nghỉ, số giờ làm việc, lương tăng hàng năm, …) để phân biệt nhân viên tốt (good) và nhân viên không tốt (bad). Hai thuật toán được sử dụng là K-meanHierarchical Clustering (AGNES). Để dễ tiếp cận, các phương pháp được thực hiện với Weka.

Labor
Labor

Tập dữ liệu: labor
Địa chỉ: https://archive.ics.uci.edu/ml/machine-learning-databases/labor-negotiations/labor-negotiations.data
Mô tả: https://archive.ics.uci.edu/ml/machine-learning-databases/labor-negotiations/labor-negotiations.names
Github: https://github.com/ongxuanhong/Clustering-analysis-with-Labor-dataset

Xem tiếp