Nổi bật

Data Science mini course

ds_mini_course

Mini course này được thiết kế dành cho những bạn còn “chân ướt chân ráo” bước vào lĩnh vực Data Science (DS). Các chủ đề sẽ xoay quanh tập dữ liệu từ cuộc thi Kaggle Home Credit Default Risk, việc này giúp cho người học tập trung kiến thức của mình vào trong ngữ cảnh là một cuộc thi. Từ đó, ta sẽ có động lực cũng như ghi nhớ tốt hơn các syntax và tình huống xử lý cụ thể trong ngôn ngữ lập trình Python.

Mỗi chương được trình bày bằng nhiều notebooks. Trong mỗi notebooks, có những đoạn code và phần ghi chú bằng Tiếng Việt cho người mới dễ theo dõi. Bên cạnh là Tiếng Anh được dùng trong những comment đơn giản. Ta có thể học bằng cách nhập lại đoạn code trên máy của mình và quan sát phản hồi. Những cú pháp khó hiểu, ta có thể tra Google để tìm hiểu thêm thông tin. Mỗi tuần, tôi sẽ cố gắng hoàn tất một chương cho đến lúc hoàn thành mini course này.

Kết thúc series, tôi hy vọng mọi người sẽ phát triển được các kỹ năng thực tế vào trong công việc, cải thiện khả năng quan sát và phân tích dữ liệu, hoặc có thể dùng course này làm tài nguyên training cho team DS của mình.

Tiếp tục đọc “Data Science mini course”

Nổi bật

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

Tiếp tục đọc “Machine Learning cho người bắt đầu”

DS-mini: Feature evaluation and model tuning

Feature vs Label
Feature vs Label

Trong thực tế, nếu tài nguyên của máy tính không là vấn đề thì ta nên sử dụng hết tất cả feature set dùng vào quá trình training và prediction. Ngược lại, việc giảm bớt được một lượng lớn feature sao cho performance của mô hình không bị ảnh hưởng nhiều nhờ vậy mà tính toán nhanh hơn sẽ là lựa chọn mà ta luôn nhắm tới.

Tiếp tục mini course, sau khi đã có predictive model cơ bản, ta sẽ tiến hành phân tích sâu hơn về việc lựa chọn feature và model tuning. Làm sao ta có thể biết trước feature mà mình tạo ra có độ tin cậy cao mà không cần phải đưa vào training? Làm sao để giảm gánh cho quá trình tính toán bằng cách loại bỏ những feature “vô dụng”? Làm sao tìm được các thông số phù hợp để mô hình cho ra kết quả dự đoán tối ưu? Tất cả sẽ được đề cập trong mục này.

Tiếp tục đọc “DS-mini: Feature evaluation and model tuning”

DS-mini: Modeling với XGBoost

ds_mini_modeling
ds_mini_modeling

Trong phần này, tôi sẽ thực hiện training trên tập dữ liệu feature đã được combine ở các phần trước. Để tiến hành thực nghiệm, ta cần phân chia tập dữ liệu thành 3 tập (train, validation, test). Ở đây, tôi lấy tương ứng tỉ lệ 70/15/15. Mục đích của việc này giúp cho model tránh bị overfitting. Đồng thời, ta có thể dùng validation set để tuning model.

Sau khi phân chia tập dữ liệu, ta sẽ dùng XGBoost để training model. Model này được đánh giá dựa trên AUC metric. Do đó, AUC càng cao, model của ta càng nắm bắt được nhiều pattern trong tập dữ liệu đồng nghĩa với việc khả năng dự đoán của mô hình cũng chính xác hơn.

Cuối cùng, ta dùng model build được để predict output cho tập test và upload submission file lên Kaggle. Tôi có thử upload 2 lần. Lần 1 chỉ gồm các feature binary trong bảng application. Lần 2 gồm các feature ở lần 1 cộng thêm các feature đã tinh chỉnh khác. Kết quả lần 2 vượt trội hơn hẳn lần 1 (0.74 vs 0.63).

Khi đã hoàn chỉnh toàn bộ các bước này, về sau khi thêm feature mới, ta chỉ việc combine features và bỏ vào model để xem kết quả có cải thiện hơn không cũng như phân tích và tuning lại các tham số cho model.
Tiếp tục đọc “DS-mini: Modeling với XGBoost”

DS-mini: Feature engineering (application)

Feature engineering là gì

“Coming up with features is difficult, time-consuming, requires expert knowledge. “Applied machine learning” is basically feature engineering.”
—  Andrew Ng, Machine Learning and AI via Brain simulations

“Feature engineering is the process of transforming raw data into features that better represent the underlying problem to the predictive models, resulting in improved model accuracy on unseen data.”
— Dr. Jason Brownlee from machinelearningmastery.com

Như vậy, feature engineering là tác vụ cần thiết trong quá trình xây dựng predictive model, rất tốn thời gian và công sức đòi hỏi phải có kiến thức ngành. Lý do, ta không thể đưa dữ liệu thô (raw data) trực tiếp vào bất kỳ mô hình Machine Learning nào. Nên mục tiêu của chúng ta cần làm là rút trích các đặc trưng (features) từ dữ liệu thô ban đầu này.

Vậy thế nào là một feature? Ví dụ, để nhận diện người bạn gặp là người quen hay người lạ, ta sẽ dựa vào các feature như dáng đi, màu tóc, quần áo, mắt, mũi, miệng của người đó. Trong bài toán home credit, feature có thể là các thông tin profile của người đi vay như độ tuổi, giới tính, lương hằng tháng, có bao nhiêu con, có sở hữu bất động sản không, etc.

Không nói nhiều lý thuyết nữa, ta hãy bắt tay vào feature engineering cho bảng application. Ta bắt đầu với bảng này vì nó chứa đầy đủ ID của user cả tập train và tập test, thuận tiện cho quá trình join features cũng như phân chia train/validation/test set.

Tiếp tục đọc “DS-mini: Feature engineering (application)”

DS-mini EDA: Explore Data Analysis

home_credit
home_credit

Mục tiêu của cuộc thi Home credit của Kaggle là xây dựng được mô hình dự đoán (predictive model) có điểm đánh giá (evaluation metric) AUC cao. Một mô hình Machine Learning chỉ có thể xây dựng được khi dữ liệu đầu vào đã được chuẩn bị và xử lý tốt. Kaggle cho trước tập các bảng (table), nhiệm vụ của chúng ta là biến đổi và kết hợp chúng lại thành các đặc trưng (feature) có ý nghĩa để model có thể dự đoán tốt trên tập dữ liệu chưa nhìn thấy (test set, unseen data), kết quả thực tế (label) này được giữ bí mật trên Kaggle và dùng để đánh giá các đội trong cuộc thi.

Để có thể làm feature engineering tốt, bước đầu tiên ta cần quan sát và hiểu được dữ liệu. Ta sẽ sử dụng các kỹ thuật bên thống kê gồm các số liệu thống kê và biểu đồ (visualization). Explore Data Analysis (EDA) sẽ giúp ta đánh giá, lựa chọn và biến đổi dữ liệu thành feature phù hợp cho model.

Khi đã có các phân tích từ EDA, ta sẽ có những hướng giải quyết tốt hơn khi đối mặt với các vấn đề bên dưới:

  • Dữ liệu bị NaN (Not a Number), Null (missing data), nguyên nhân từ đâu?
  • Kiểu dữ liệu không khớp (e.g. 1990.0 là kiểu số thực nhưng load lên lại là kiểu string), nên ép kiểu như thế nào?
  • Dữ liệu bị lặp (duplicate) nên chọn và bỏ bớt cái nào?
  • Dữ liệu không liên quan, có phải do nhập sai?
  • Dữ liệu bất thường (e.g. tuổi bị âm, huyết áp bằng không, ngày tháng không đúng format) nên biến đổi thế nào?
  • Dữ liệu ở dạng categorical thì nên biến đổi bằng one-hot encoding hay mapping number?
  • etc.

Tiếp tục đọc “DS-mini EDA: Explore Data Analysis”

Rèn giũa mindset của một Data Scientist

analytics_diary

Trong bài viết này, tôi xin chia sẻ một vài kinh nghiệm của mình trong quá trình làm việc với Data Science (DS). Về cơ bản, tôi nghĩ các bạn cũng đã hiểu khái quát thế nào là DS, những phương pháp và ứng dụng thực tiễn của ngành này. Nên ở đây, tôi sẽ đề cập đến mindset nhiều hơn. Lý do, mindset khi làm DS sẽ khác Software engineer rất nhiều.

Ở đây, tôi sẽ tổng hợp những sai lầm mà những bạn junior hay các bạn chuyển ngành thường mắc phải. Tôi may mắn hơn mọi người là được các anh chị đi trước nhẫn nại hướng dẫn tận tình để chỉ ra những điểm chưa tốt, cho tôi nhiều cơ hội để tôi ngày càng tiến bộ hơn trên con đường mà mình đã chọn. Tôi cũng từng là một junior trong lĩnh vực này, cũng từng mắc sai lầm nên tôi muốn đúc kết lại một vài kinh nghiệm để các bạn đi sau hạn chế mắc phải.

Tiếp tục đọc “Rèn giũa mindset của một Data Scientist”

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.

Tiếp tục đọc “Vọc thử Orange: phần mềm data mining”

XGBoost: thuật toán giành chiến thắng tại nhiều cuộc thi Kaggle

xgboost_illustrate

XGBoost là viết tắt của Extreme Gradient Boosting. Đây là thuật toán state-of-the-art nhằm giải quyết bài toán supervised learning cho độ chính xác khá cao bên cạnh mô hình Deep learning như chúng ta từng tìm hiểu.

Nếu Deep learning chỉ nhận đầu vào là raw data dạng numerical (ta thường phải chuyển đổi sang n-vector trong không gian số thực) thì XGBoost nhận đầu vào là tabular datasets với mọi kích thước và dạng dữ liệu bao gồm cả categorical mà dạng dữ liệu này thường được tìm thấy nhiều hơn trong business model, đây là lý do đầu tiên tại sao các cá nhân tham gia Kaggle thường sử dụng.

Bên cạnh đó, XGboost có tốc độ huấn luyện nhanh, có khả năng scale để tính toán song song trên nhiều server, có thể tăng tốc bằng cách sử dụng GPU, nhờ vậy mà Big Data không phải là vấn đề của mô hình này. Vì thế, XGBoost thường được sử dụng và đã giành được nhiều chiến thắng trong các cuộc thi tại Kaggle.
Tiếp tục đọc “XGBoost: thuật toán giành chiến thắng tại nhiều cuộc thi Kaggle”

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

Cảm ơn TopDev và các bạn trẻ đã tổ chức và hỗ trợ tôi hoàn thành tốt buổi chia sẻ hôm thứ bảy 30/09/2017 vừa qua. Mặc dù trời mưa to, nhưng các bạn khán giả vẫn tham gia khá đầy đủ. Tuy có nhiều phần chưa đáp ứng được mong đợi của mọi người nhưng phần hỏi đáp luôn là phần sôi động nhất đã lắp được phần nào khoảng trống này. Hy vọng, mỗi bạn đều đem về được những kinh nghiệm thiết thực khi đụng đến công nghệ xử lý Big Data, cụ thể là Apache Spark. Bên dưới, tôi xin tổng hợp lại các câu hỏi thường gặp trong buổi chia sẻ này cùng với Slide chứa notebook về Spark bên trên. Nếu bạn nào có thêm câu hỏi, mình sẽ cập nhật vào bài viết này để thêm phần phong phú cho các bạn khác tìm hiểu và tham khảo.

Notebooks:

Các event trước:

Thế nào thì được gọi là Big Data?

Big Data thoả tính chất 5V thì được gọi là Big. Cá nhân mình thấy 3 điểm sau thì đã gọi là Big rồi.

  1. Dữ liệu phức tạp (unstructured data).
  2. Tốc độ phình to nhanh, tính theo giây.
  3. Không thể xử lý với các công nghệ trước đó.

Có cần phải học thêm bằng cấp nào không?

Các nhà tuyển dụng hiện tại xem kinh nghiệm quan trọng hơn bằng cấp. Một số công nghệ nên biết: Docker, PostgreSQL, MongoDB, Apache Spark, Bash shell, AWS, Kafka, Jenkins.

Nếu bạn có thêm các Certificate cloud computing sau thì cũng có thể tạo nên lợi thế riêng:

Tiếp tục đọc “FAQ: Big data cho người mới bắt đầu”

Làm việc với Spark DataFrames – Truy vấn nâng cao (Subqueries, Cube, Rollup)

spark_dataframe_cube

Tiếp theo bài Truy vấn cơ bản với Spark Dataframe, bài viết này tập trung sử dụng Spark-SQL để thực hiện các truy vấn SQL nâng cao hơn như truy vấn lồng và tổng hợp dữ liệu với Cube, Rollup. Lý do sử dụng SQL thay vì các hàm dựng sẵn của Dataframe là do tính dễ dùng. Ta đã quá quen thuộc với cú pháp và cách truy vấn sử dụng ngôn ngữ này.

Thông qua notebook, ta sẽ biết cách đặt truy vấn lồng tại các mệnh đề SELECT, FROM, WHERE như thế nào thông qua các ví dụ minh hoạ đơn giản. Sau đó, ta tiếp tục bước tổng hợp dữ liệu cho OLAP ra sao. Dữ liệu được phát sinh từ trang https://www.mockaroo.com/.

Snippet thường dùng

  • để xem tổng thời gian thực thi lệnh.
    %% time:
  • Truyền tham số trường hợp muốn tạo module và import vào notebook khác.
    sqlContext
  • Xử lý giá trị bị thiếu tại thuộc tính cụ thể.
    fillna({"attr": "val"})
  • Bỏ chọn thuộc tính liên tiếp.
    drop("attr_a", "attr_b)
  • Testing trong quá trình viết hàm.
    assert(val1 == val2)

Download:

Thống kê ứng dụng 3: Các vấn đề trong thống kê

ANOVA

Trong phần 1, ta đã biết về các khái niệm: means, median, standard deviations. Phần 2, ta cũng đã biết cách tính confidence interval và thực hiện hypothesis testing như thế nào. Trong phần cuối series học thống kê thông qua lập trình Jupyter notebook, ta giải quyết các vấn đề trong thống kê gồm:

  • Tính khoảng tin cậy như thế nào nếu mẫu dữ liệu thu thập nhỏ hơn 30?
  • So sánh hai quần thể xem chúng có khác biệt nhau hay không (thường ứng dụng trong A/B testing)?
  • Làm sao để kiểm tra 2 bản báo cáo lượt view giữa Facebook và Google bằng Chi-square?
  • ANOVA trong việc phân tích mức độ yêu thích của người dùng giữa các bộ phim?

Download: Jupyter notebook

Thống kê ứng dụng 2: Suy luận thống kê

Statistics for Hackers

Ở phần trước, ta đã tìm hiểu các khái niệm cơ bản của thống kê như means, median, standard deviations, probability, normal distribution, central limit theorem. Những độ đo này giúp ta hiểu biết tổng quan về dữ liệu đang phân tích. Trong phần tiếp theo, ta sẽ tìm hiểu về suy luận thống kê từ các độ đo này. Ta sẽ biết thế nào là độ lỗi chuẩn (standard error), làm sao để tính khoảng tin cậy (confidence interval) cho một mẫu bất kỳ vừa thu thập được, và thực hiện kiểm định giải thuyết như thế nào cho những câu hỏi được đặt ra.

Tất cả những thao tác này được gọi là suy luận thống kê (inferential statistics). Ví dụ, một lớp học gồm 50 học sinh. Trong đó, các bạn nữ cho rằng mỗi lần khảo bài thì họ bị gọi lên nhiều hơn các bạn nam. Họ cho rằng như vậy giáo viên đã thiên vị. Còn giáo viên thì cho rằng họ thực hiện điều này một cách ngẫu nhiên. Vậy ai đúng trong trường hợp này. Thông qua suy luận thống kê, ta sẽ tiến hành lấy mẫu thực nghiệm, đặt giả thuyết thống kê, xác định ngưỡng bác bỏ \alpha, tính toán z-score và p-value, cuối cùng là so sánh \alpha và p-value để xem kết luận cuối cùng là gì.

Download: Jupyter notebook

Xem thêm:

Thống kê ứng dụng 1: Quan sát dữ liệu

rating_histogram

Học thống kê thông qua lập trình sẽ giúp ta không chỉ kiểm chứng lại lý thuyết đã học mà còn hỗ trợ nắm bắt các khái niệm phức tạp một cách dễ dàng hơn. Thêm vào đó, ta sẽ biết cách ứng dụng những kiến thức này vào trong công việc khi cần thiết.

Ta sử dụng Jupyter notebook để điểm qua các khái niệm, thao tác cơ bản giúp quan sát và mô tả dữ liệu. Ta sẽ phân biệt được các loại dữ liệu (nomial, numbers, odinal, ratio) trong dataset như thế nào, tìm trọng tâm của tập dữ liệu, quan sát sự biến đổi của dữ liệu thông qua các chỉ số cơ bản (range, variance, standard deviation, z-score, percentile), cùng với một vài nguyên lý tính xác suất Bayes và cách mô phỏng central limit theorem.

z_score_distribution

central_limit_on_rating

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

AI là một thuật ngữ cao siêu mà có lẽ ai cũng từng nghe qua. Lấy cảm hứng từ bộ phim hoạt hình Baymax (Big hero 6), một chú robot thông minh phục vụ và chăm sóc sức khoẻ con người, cũng như có bạn đọc yêu cầu giải đáp thuật ngữ này nên tôi quyết định dành ra một góc để nói về AI.

Bài viết nhằm mục đích làm sáng tỏ cho những bạn chưa phân biệt được các khái niệm AI, Machine Learning – ML và Deep Learning – DL. Dĩ nhiên, người trong ngành phân biệt điều này khá dễ nhưng để có thêm thông tin bổ ích tôi sẽ tổ chức lại kiến thức liên quan để bạn đọc quan tâm tìm hiểu và tiện tra cứu tài liệu hơn.

Tiếp tục đọc “AI, Machine Learning, Deep Learning phân biệt như thế nào cho đúng”

Information extraction – Bài toán rút trích thông tin trong văn bản

brat_annotation_tools

Trong bài viết này, ta sẽ khảo sát bài toán Rút trích thông tin (Information extraction – IE), một nhánh nghiên cứu nâng cao thiên về rút trích thông tin ngữ nghĩa trong văn bản. Từ đây, ta sẽ có nhiều ứng dụng cho nhiều domain như Web mining (rút trích tên người nổi tiếng, sản phẩm đang hot, so sánh giá sản phẩm, nghiên cứu đối thủ cạnh tranh, phân tích tâm lý khách hàng), Biomedical, Business intelligent, Financial professional (đánh giá thị trường từ các nguồn khác nhau: giá xăng dầu tăng giảm, thông tin chiến tranh, chính trị giữa các nước, điều luật mới trong thị trường kinh doanh), Terrism event (sử dụng vũ khí gì, đối tượng tấn công là ai).

Sau các bước tiền xử lý thiên về từ vựng và cú pháp như tách câu, tách từ, phân tích cú pháp, gán nhãn từ loại. Từ IE ta sẽ đơn giản hóa thành các bài toán con gồm: Rút trích tên thực thể (Named entity recognition – NER: people, organization, location), phân giải đồng tham chiếu (Coreference resolution) và Rút trích quan hệ giữa hai thực thể (Relation extraction – RE: founderOf, headQuarteredIn). Các mô hình khi thực nghiệm sẽ được đánh giá thông qua các chỉ số Precision, Recall, F1-score. Dưới đây là một ví dụ về rút trích quan hệ trong câu.

Tiếp tục đọc “Information extraction – Bài toán rút trích thông tin trong văn bản”

Bắt đầu nghiên cứu big data từ đâu và như thế nào

Đây là tâm nguyện đầu tiên của mình khi trở về Việt Nam sau 1 năm học tập và nghiên cứu tại JAIST. Nhằm mong dấn thân vào trải nghiệm, thử thách bản thân mình với những công nghệ state-of-the-art trong Big Data.

Sau hơn 1 năm làm việc và nghiên cứu, trày mình tróc vảy, rốt cuộc cũng gom góp được chút ít chia sẻ cho anh chị bạn bè gần xa quan tâm và muốn ứng dụng Big Data vào tổ chức của mình.

Slide sẽ dẫn dắt mọi người đi vào cuộc hành trình của Data từ lúc còn trên giấy bút cho đến các hệ thống Business Intelligent và tại sao công nghệ Big Data là cấp thiết trong thời đại hiện nay khi muốn nâng cao khả năng sản xuất và cạnh tranh với đối thủ của mình. Các anh chị muốn lập team làm về Big Data cũng sẽ hiểu được những khó khăn và thử thách của anh em dev đang đối mặt, nhờ vậy mà có những chính sách và phúc lợi tốt hơn để bồi dưỡng đội ngũ của mình.

Data Science – Mỏ vàng của Kỉ nguyên số

Đây là lần đầu mình talk trong một sự kiện lớn do TopDev kết hợp VNG tổ chức nên mình rất làm vinh dự và háo hức được chia sẻ những kiến thức cũng như kinh nghiệm học tập làm việc trong hơn 1 năm qua. Sự kiện này nhằm mục đích chính giống lên hồi chuông để mọi người ở các lĩnh vực khác nhau chú ý và quan tâm hơn đến “mỏ vàng” này.

Slide trình bày trên tóm tắt những khái niệm cơ bản về Data Science. Sau đó, các bạn sẽ biết chức danh Data scientist ra đời như thế nào. Từ đây, bạn nào quan tâm hơn về vai trò này có thể tham khảo các con đường sự nghiệp mà thị trường hiện nay đang đòi hỏi.

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 “Con đường học tập Machine Learning của tôi”

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.