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

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

Các công ty Startup về Deep learning

Machine Learning và Real-Time Bidding

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

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

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

Getting and cleaning data: Các phương pháp lấy mẫu (Sampling)

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

Feature engineering là gì

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

Statistical hypothesis testing cho dân lập trình

Exploratory Data Analysis: Các nguyên tắc trình bày biểu đồ

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

Hướng dẫn deploy Spark

Soạn slides bằng Beamer

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

Tiếp tục đọc

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.

SMA 2017 – Lý thuyết ra quyết định

bayesian_mindset

bayesian_mindset

Khi làm việc với các bài toán ra quyết định, xác suất thống kê được sử dụng rất nhiều trong việc đưa ra những dự báo mang hàm nghĩa không chắc chắn. Ta chỉ có thể cung cấp kết quả dự đoán đại loại như 86%, 91%, hay 99% nhưng không bao giờ bạn chắc chắn được 100%. Bù lại kết quả này cho bạn biết, khi ra quyết định 100 lần thì ít ra bạn cũng đạt được chừng ấy mục tiêu của mình, đồng thời bạn cũng sẵn sàng chấp nhận trả giá cho những phần trăm còn lại.

Tham dự khoá học SMA-2017 cũng là cơ hội cho tôi ôn lại kiến thức lý thuyết xác suất thống kê đã từng bỏ bê thời còn đi học. Đặc biệt là hướng tiếp cận của Bayesian đang được cộng đồng nghiên cứu và áp dụng rất nhiều trong việc dự báo tương lai. Buổi học bắt đầu bằng những kiến thức căn bản để học viên có thể bắt nhịp lại các khái niệm, các thuật ngữ, lý do tại sao ngành thống kê ra đời. Sau đó là những so sánh chi tiết hơn giữa hướng tiếp cận truyền thống và hướng tiếp cận của Bayesian. Thống kê truyền thống (classical statistics) thường tin vào xác suất tính được sẽ luôn lặp lại đúng như vậy và dùng nó để dự đoán trong tương lai, nghĩa là nếu tung đồng xu 1000 lần ta có tỉ lệ head/tail đều là 70/30 thì các lượt tung tiếp theo tỉ lệ head xuất hiện sẽ cao hơn tail. Ngược lại, Bayesian sử dụng dữ liệu thu thập được theo thời gian để điều chỉnh lại niềm tin ban đầu (prior knowledge) này sao cho ít bị chủ quan hơn, nhờ vậy mà dự đoán trong tương lai sẽ thận trọng hơn nhiều.

Ở đây là ghi chú cũng khá ngắn gọn của tôi, mặc dù đã cố gắng hoàn chỉnh lại nội dung để bạn đọc dễ theo dõi và tìm hiểu nhưng sẽ còn nhiều chỗ khó hiểu cần tham khảo các nguồn tài liệu bên ngoài, nên tôi cũng cung cấp thêm các đường link liên quan, các bạn có thể từ đó bù đắp lại các kiến thức mơ hồ. Hoặc bạn cũng có thể sử dụng bài viết này để làm cheat sheet tham khảo nhanh cho công việc hiện tại của mình.

Tiếp tục đọc

SMA 2017 – Lý thuyết tập thô (P4) – Rút trích luật quyết định

rules_extraction

rules_extraction

Trong thực tế, mặc dù đã có trong tay nhiều thông tin nhưng sự nhập nhằng và mơ hồ luôn tồn tại trong quá trình đưa ra quyết định. Trong quyết định, có quyết định an toàn và chắc chắn như bỏ vốn tiết kiệm vào ngân hàng và biết trước lãi suất hằng năm là bao nhiêu. Cũng có quyết định mang tính rủi ro như đầu tư chứng khoán, ta chỉ biết một vài thông tin về công ty hay lịch sử giao dịch quá khứ, cũng có thể đây là công ty mới lên sàn và không hề có bất kỳ thông tin gì. Ngoài ra, còn có những quyết định mang tính đánh đổi như quyết định giữa việc tiếp tục đi làm hay tự startup công ty để tăng nguồn thu nhập cho bản thân, …

Các thuật toán Machine learning bạn từng biết như Decision tree, Association rules, … cũng hỗ trợ ra quyết định. Trong bài viết này, ta hãy thử tìm hiểu lý thuyết tập thô có giúp cho chúng ta tìm ra quyết định chính xác và phù hợp hay không.

Tiếp tục đọc

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

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

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

Xác định gam màu trong MV Nơi này có anh – Sơn Tùng M-TP

color-palettes-noi-nay-co-anh

Lấy cảm hứng từ bài viết NHỮNG GAM MÀU TÌNH YÊU ĐẦY CẢM HỨNG TRONG MV NƠI NÀY CÓ ANH – SƠN TÙNG M-TP. Trong bài viết này, tôi sẽ hướng dẫn nhanh mọi người cách áp dụng kĩ thuật color clustering (image segmentation) để rút ra gam màu chính trong từng cảnh quay của MV. Cụ thể, ta sẽ sử dụng thuật toán k-means clustering. Đây là thuật toán đơn giản đủ để ta thực hiện tác vụ này.

Source code: Github.

Tiếp tục đọc