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.

Học một ngôn ngữ lập trình mới như thế nào

Học lập trình

Có quá nhiều thứ để học mà thời gian thì quá ít

Ta nên học gì trong vô vàn thứ trong thế giới lập trình? Câu trả lời đó là học những thứ ít thay đổi: các khái niệm và những nguyên lý.

  • Lập trình là tư duy Input – Process – Output.
  • Lập trình là mô hình hoá (trừu tượng hoá) bài toán trong thế giới thật thành bài toán mà máy tính có thể xử lý được.
  • Mô hình hoá từ cấp độ thấp (data types: numerical, text, boolean) đến cấp độ cao (object: list, tuple, dictionary).
  • Mỗi cấp độ sẽ có các phép toán tương ứng (data types: +,-,*,/,%. object: properties, methods).
  • Cấu trúc dữ liệu Queue hoạt động theo nguyên lý FIFO (First In First Out).
  • Cấu trúc dữ liệu Stack hoạt động theo nguyên lý LIFO (Last In First Out).
  • etc

Từ những phát biểu trên, ta sẽ thấy các thành phần mà ngôn ngữ lập trình nào cũng có:

  • Kiểu dữ liệu và các phép toán cơ bản (numerical, text, boolean).
  • Điều kiện rẽ nhánh (if, elif, else).
  • Vòng lặp (for, while).
  • Hàm.
  • Cấu trúc dữ liệu (list, tuple, dictionary).
  • Giải thuật (tìm kiếm, sắp xếp)

Khi làm việc với những project lớn, ta cần áp dụng những nguyên tắc sau để phần mềm dễ phát triển, bảo trì và mở rộng:

  • Đặt tên biến (UpperCamelCase, lowercase_separated_by_underscores, datatype_*) dễ hiểu và dễ debug.
  • DRY (Don’t Repeat Yourself): những thao tác lặp đi lặp lại nên viết hàm hoặc đóng gói lại để sử dụng ở nhiều nơi.
  • KISS (Keep It Simple, Stupid): mỗi thao tác nên cô lập với các thành phần khác trong project, các hàm xử lý nên ngắn gọn không quá dài dòng.
  • Lập trình hướng đối tượng (OOP: Object-oriented programming) thì có nguyên lý APIE (Abstraction, Polymorphism, Inheritance, Encapsulation).

Kết, những thứ phức tạp luôn được phát triển dựa trên những điều cơ bản. Khi đợt sóng của công nghệ ập đến, có trong tay những nguyên lý, thay vì bị cuốn đi, ta sẽ lướt trên những ngọn sóng và làm chủ xu hướng đang là.

Syllabus

Syllabus này sẽ được cập nhật mỗi khi có bài học mới. Ngoài các notebook hướng dẫn, ta có thể tham khảo các cheatsheet dùng để code nhanh khi cần.

Chapter Description Notebooks
Python Học ngôn ngữ lập trình mà Data Scientist nào cũng dùng
Pandas and SQL Biến đổi và rút trích thông tin quan trọng từ dữ liệu
Data Visualization Biểu diễn biểu đồ, đồ thị, giúp quan sát dữ liệu trực quan hơn
Feature engineering (FE) Những kỹ thuật cơ bản để tạo feature cho predictive model
Modeling Cách phân chia tập dữ liệu để train và test. Sau đó, submit kết quả lên Kaggle.
Advanced analysis Các bước xử lý nâng cao để tăng độ chính xác của mô hình
Xử lý Big data với Spark Công cụ giúp việc khai thác Big data được hiệu quả hơn

14 thoughts on “Data Science mini course

  1. Dear Hồng, lâu quá mới thấy post của em. Hy vọng em khoẻ. Đầu tháng 7 này chị về Vietnam vài ngày. Nếu em có time thì chị mời em cà phê? Nếu được báo sớm để chị sắp xếp nhé. Thân mến Liên

    Sent from my iPhone

    >

    Số lượt thích

  2. Em chào anh Hồng,

    Thực sự rất cảm ơn những chia sẻ của anh. Anh cho em hỏi:

    Data Sience và Data Mining có khác gì nhau không anh nhỉ?

    Làm về Data Sience thì cần trau dồi những gì và Data Mining thì cần những gì hả anh?

    Em cảm ơn anh nhiều!

    Số lượt thích

  3. Dear anh, em mới chân ướt chân ráo bước vào ngành này chỉ với mong muốn nhỏ nhoi được học hỏi thôi. Mà em thực sự là chả hiểu anh viết gì cả T_T. Em biết là anh đã cố gắng hết sức viết dễ hiểu cho bọn em rồi. Nhưng mà em vẫn không hiểu anh viết gì cả. Không hiểu 1 đoạn code nào. Em buồn và tuyệt vọng quá. Anh có cách nào để cho những cấp thấp hơn nữa đọc hiểu được những bài này của anh không ạ?

    Số lượt thích

    1. hi em,
      cứ từ từ em, ko có gì phải vội. e hãy tự mình code một thời gian rồi quay lại đọc code a chắc sẽ hiểu thôi. cách truyền đạt tốt nhất là giao tiếp face-to-face, văn bản nhiều lúc cũng ko truyền tải đủ ý tưởng cho người đọc nên e có thể nhờ bạn có kinh nghiệm hơn giúp hoặc bản thân mình đủ trải nghiệm thì mới hiểu được.
      chúc e luôn cố gắng để thành công nhé

      Số lượt thích

      1. Anh ơi. Anh cho em hỏi ở File code: “Baseline features application: application” có đoạn code tại ô số 13 như sau:” eval_agg01 = feature_evaluate(pdf_train_filtered, pdf01_baseline)
        display(eval_agg01)” trong đó feature_evaluate đã được anh define ở file code nào ạ? Em không tìm thấy ạ :(. Em cảm ơn anh

        Số lượt thích

Trả lời

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Đăng xuất /  Thay đổi )

Google photo

Bạn đang bình luận bằng tài khoản Google Đăng xuất /  Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Đăng xuất /  Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Đăng xuất /  Thay đổi )

Connecting to %s