inflearn logo

[Làm gì sau giờ làm] Chứng chỉ Phân tích Dữ liệu lớn - Kỳ thi thực hành (Dạng bài tập 1, 2, 3)

Chúng tôi sẽ hướng dẫn cách để những người không chuyên hoặc người mới bắt đầu có thể nhanh chóng lấy được chứng chỉ thực hành Phân tích Dữ liệu lớn (Big Data Analysis)! Lý thuyết nhẹ nhàng, thực hành chắc chắn – không cần kiến thức nền tảng phức tạp, chúng ta sẽ tập trung học những điểm mấu chốt chắc chắn xuất hiện trong kỳ thi thông qua các câu hỏi đã từng ra.

(4.9) 893 đánh giá

5,685 học viên

Độ khó Nhập môn

Thời gian 12 tháng

Engineer Big Data Analysis
Engineer Big Data Analysis
Big Data
Big Data
Python
Python
Pandas
Pandas
Machine Learning(ML)
Machine Learning(ML)
Engineer Big Data Analysis
Engineer Big Data Analysis
Big Data
Big Data
Python
Python
Pandas
Pandas
Machine Learning(ML)
Machine Learning(ML)

Tin tức

91 bài viết

  • roadmap님의 프로필 이미지

    Có rất nhiều bạn đã thắc mắc về việc xử lý
    0 điểm cho bài thi thực hành loại 2, nên tôi đã
    tổng hợp nội dung lại thành một video.

    https://youtu.be/nBu2GW84Yns


    Kết luận: (Vì không thể biết chắc về việc xử lý các giá trị dự đoán âm nên) hãy cùng chờ đợi kết quả công bố nhé!!

    0
  • roadmap님의 프로필 이미지

    Đã chỉnh sửa

    Kiểm tra cuối cùng dành cho bạn, người đã nỗ lực hết mình nhưng vẫn cảm thấy bất an

    [Chung]

    • help(), dir(), __all__ không thể giải quyết được mọi thứ đâu.
      Khi thực sự sử dụng lần đầu tại phòng thi sẽ cảm thấy bỡ ngỡ hơn bạn nghĩ, vì vậy hãy thử kiểm tra trước trong môi trường thi nhé.

    • Nếu bàn phím, chuột hoặc máy tính tại chỗ ngồi có vấn đề, hãy yêu cầu đổi chỗ ngay sau thời gian kiểm tra và trước khi bắt đầu bài thi. Nếu cố thay đổi giữa chừng, tâm lý của bạn sẽ bị dao động. Tốt nhất là nên giải quyết triệt để các vấn đề ngay từ đầu.

    • Bạn có thể nộp bài nhiều lần, nhưng sau khi nộp một lần, hệ thống sẽ hiển thị chữ "Đã nộp". Khi trạng thái hiển thị là "Đã nộp", bạn có thể định nộp lại nhưng rồi lại quên mất, vì vậy hãy lưu ý nhé. Hệ thống sẽ chấm điểm dựa trên bản nộp cuối cùng.


    [Loại thực hành 1]

    • Nhấp vào tab Dữ liệu ở phía trên → 'Chế độ xem cơ bản', sau đó hãy kiểm tra bằng cách sử dụng Ctrl + F để tìm kiếm. Bạn có thể tiếp cận với tâm thế "ít nhất mình sẽ giải quyết nó bằng mắt".

    • Chỉ cần đáp án đúng là được. Mã nguồn quá trình như thế nào không quan trọng. Đáp án chính xác được ưu tiên hơn mã nguồn gọn gàng.

    • Hãy chắc chắn nắm vững groupby trước khi đi thi. Ngay cả khi không dùng đến pivot table, việc tổng hợp dữ liệu theo nhóm cũng rất khó để giải quyết bằng mắt thường. Điều này nhất định phải được xử lý bằng mã code.

    • Hãy nhớ kiểm tra kỹ các chỉ dẫn về làm tròn, số chữ số thập phân và chuyển đổi số nguyên trong kết quả. Có rất nhiều trường hợp bỏ lỡ đáp án đúng ngay trước mắt do quên round() hoặc nhầm số chữ số thập phân.


    • Đối với các bài toán sắp xếp, hãy chú ý kỹ đến thứ tự tăng dần/giảm dần và cách xử lý khi có cùng giá trị. Sẽ rất tốt nếu bạn lưu ý cả tùy chọn ascending của sort_values() và việc có sử dụng reset_index hay không.

    • Khi lọc điều kiện, hãy sử dụng chính xác &, | và dấu ngoặc đơn. Trong df[(điều kiện 1) & (điều kiện 2)], nếu thiếu dấu ngoặc đơn sẽ xảy ra lỗi.
      Nếu đưa điều kiện vào biến cond thì không cần dấu ngoặc đơn.

    • Dữ liệu ngày tháng nên được chuyển đổi bằng pd.to_datetime() để có thể sử dụng các thuộc tính như .dt.year, .dt.month, .dt.dayofweek, v.v. Các bài toán thống kê theo thứ hoặc theo tháng thường xuyên xuất hiện.

    • Làm quen với các hàm thường dùng: value_counts(), nlargest() / nsmallest(), quantile() (vấn đề ngoại lệ IQR), fillna(), drop_duplicates(), astype().

    • Đối với vấn đề giá trị ngoại lệ và giá trị thiếu, hãy tuân thủ đúng tiêu chuẩn mà đề bài đưa ra (IQR, độ lệch chuẩn, điều kiện cụ thể). Tuyệt đối không tự ý áp dụng theo cách riêng của bản thân.

    [Dạng bài tập thực hành 2]

    • Nếu bạn chỉ định sử dụng một mô hình duy nhất, chỉ cần huấn luyện toàn bộ bằng lightgbm là xong.

    • Nếu bạn định sử dụng từ 2~3 mô hình trở lên, hãy kiểm tra rồi so sánh chúng. Nếu cảm thấy lúng túng về chỉ số đánh giá, bạn có thể so sánh bằng những chỉ số mà bản thân biết chắc chắn.

      • Hãy tập trung vào rf, lgb, xgb. Rất hiếm khi các mô hình khác ngoài những loại này cho hiệu suất tốt hơn.

      • Sau khi so sánh xong, tôi cũng khuyên bạn nên huấn luyện lại với toàn bộ dữ liệu. Tùy vào từng loại dữ liệu mà hiệu quả sẽ khác nhau nên không thể đảm bảo chắc chắn việc cải thiện hiệu suất, nhưng nếu dữ liệu mất cân bằng nghiêm trọng như kỳ thứ 11, tôi sẽ chọn huấn luyện với toàn bộ dữ liệu.

    • Đối với dữ liệu mất cân bằng, việc điều chỉnh tham số hay siêu tham số không nhất thiết sẽ làm tăng hiệu suất. Ngược lại, đôi khi hiệu suất tốt nhất lại đạt được ở các giá trị mặc định. Nếu bạn cảm thấy không yên tâm, hãy sử dụng thiết lập mặc định + huấn luyện trên toàn bộ dữ liệu.

    • Đừng quá tốn sức vào việc điều chỉnh tỷ lệ (scaling). Vì rf, lgb, xgb đều là các mô hình thuộc hệ cây nên sự thay đổi hiệu suất theo việc scaling là rất nhỏ.

    • Hãy đảm bảo các cột của tập train/test khớp nhau. Việc mã hóa và tiền xử lý phải được áp dụng đồng nhất cho cả train và test. Có những lỗi thường gặp như số lượng cột bị thay đổi sau khi thực hiện One-hot Encoding. Mặc dù điều này chưa từng xuất hiện trong các đề thi trước đây nhưng nó có trong các câu hỏi ví dụ, vì vậy bạn cũng cần biết cách xử lý bằng cách gộp tập train và test lại với nhau.

    • Hãy xác định rõ đối tượng dự đoán (target). Hãy đọc kỹ đề bài xem yêu cầu xác suất (predict_proba) hay yêu cầu lớp (predict). Nếu là roc_auc thì thường là xác suất, còn f1·accuracy thì thường là lớp.

    • Hãy tuân thủ đúng định dạng nộp bài như đề bài yêu cầu. Từ tên tệp, tên cột cho đến việc có bao gồm chỉ mục hay không (index=False). Nếu sai số lượng hàng, bạn sẽ nhận 0 điểm.


    • Nếu thiếu thời gian, đừng quá tham vọng cải thiện hiệu suất mà hãy dùng lightgbm chạy cho xong để hoàn thành file nộp bài trước. Hoàn thành là ưu tiên hàng đầu, tối ưu hóa tính sau.

    [Phần thi thực hành 3]

    • Bài thi thực hành loại 3 không phải là dạng câu hỏi tự luận hay phân tích tự do kiểu "hãy phân tích đi". Bạn chỉ cần thực hiện chính xác các phân tích mà đề bài yêu cầu. Không cần thiết phải tự ý thêm thắt hay mở rộng phân tích. Chỉ tìm và xuất ra đúng giá trị được hỏi. Đừng thực hiện những phân tích mà đề bài không hỏi, ví dụ như kiểm tra xem phương sai có đồng nhất hay không.

    • Việc sử dụng C() tùy thuộc vào loại phân tích. Có rất nhiều người bị nhầm lẫn ở phần này.

      • Phân tích biến lượng (ANOVA): Sử dụng C() cho tất cả các biến độc lập (biến phân loại).

        • Ví dụ: ols('y ~ C(집단)', data=df), nếu là ANOVA hai chiều thì ols('y ~ C(A) + C(B) + C(A):C(B)', data=df)

        • Bởi vì đây là phân tích xem xét sự khác biệt giữa các nhóm, nên biến độc lập phải được xử lý dưới dạng biến phân loại.

      • Hồi quy / Hồi quy Logistic: Đừng tùy tiện sử dụng C().

        • Các biến liên tục (số) thì để nguyên như vậy.

        • Chỉ khi trong đề bài có đề cập rõ ràng rằng "biến này trông giống như số nhưng hãy xử lý nó như một biến phân loại" thì mới sử dụng C().

        • Không được tự ý phán đoán!


    • Hãy nhất định học cách đọc summary(). Trong hồi quy và hồi quy logistic, bạn phải có khả năng tìm và trả lời ngay các giá trị như hệ số (coef), p-value, R-squared, tỉ số chênh (odds ratio) từ bảng kết quả. Đừng bỏ cuộc, ít nhất hãy xem kỹ phần này trước khi đi thi.

    • Kiểm định giả thuyết có mấu chốt là so sánh giá trị p-value với mức ý nghĩa (thường là 0.05). Nếu p < 0.05 thì bác bỏ giả thuyết không (H0). Hãy xác định rõ trong đề bài đâu là giả thuyết không và đâu là giả thuyết đối.

    • Hãy chọn chính xác loại kiểm định (kiểm định t một mẫu/mẫu cặp/mẫu độc lập, Chi-square (tính độc lập/độ phù hợp), phân tích tương quan, ANOVA, v.v.) dựa trên đề bài để đưa ra quyết định.


    • Hãy chú ý kỹ đến số chữ số thập phân và hướng dẫn làm tròn tương tự như trong Bài thi thực hành 3. Đừng quên xuất kết quả bằng lệnh print() nữa nhé.



      Mỗi dạng bài thực hành có thể xuất hiện 1-2 câu hỏi khó. Đừng chỉ tập trung vào mỗi câu đó mà lãng phí hết thời gian. Hãy tạm gác những câu khó sang một bên, tập trung kiểm tra kỹ và ghi điểm ở những câu khác mà bạn có thể làm được. Mục tiêu không phải là điểm tuyệt đối. Mục tiêu là 70 điểm, là vượt qua kỳ thi!

      Chỉ với những gì bạn đã chuẩn bị cho đến nay là đã đủ để nằm trong nhóm đỗ rồi. Cố lên!! Chúc bạn làm bài thi thật tốt! 💪
      Tôi luôn ủng hộ việc thi đỗ của các bạn. - Toigeunhu-ttanjit -

    0
  • roadmap님의 프로필 이미지

    Bạn đã giải hết tất cả các câu hỏi chưa?
    Nếu rồi, hãy thử thách bản thân với việc tạo biến phái sinh từ dữ liệu ngày tháng trong phần thi thực hành số 2 (câu hỏi số 3) nhé!

    Nếu bạn vẫn chưa học đến phần đó, thay vì tham lam nạp thêm nội dung mới, tôi khuyên bạn nên bình tĩnh hệ thống lại những nội dung đã học cho đến nay.

    https://code.sideonai.com/


    image.png
    Biến phái sinh từ ngày tháng (Thứ/Tháng/Cuối tuần) — thực hiện giống nhau cho cả train và test!
      train['date'] = pd.to_datetime(train['date'])
      train['dayofweek'] = train['date'].dt.dayofweek          # Thứ (Thứ Hai=0~Chủ Nhật=6)
      train['month'] = train['date'].dt.month                  # Tháng (1~12)
      train['is_weekend'] = (train['date'].dt.dayofweek >= 5).astype(int)
    
      test['date'] = pd.to_datetime(test['date'])
      test['dayofweek'] = test['date'].dt.dayofweek
      test['month'] = test['date'].dt.month
      test['is_weekend'] = (test['date'].dt.dayofweek >= 5).astype(int)

    Cố lên nhé!


    0
  • roadmap님의 프로필 이미지

    Đã chỉnh sửa

    Phần bạn cần chú ý kỹ trong dữ liệu lần này là

    1. Đây là phần huấn luyện trên toàn bộ dữ liệu (chú thích số 5). Tôi đã thêm mã huấn luyện toàn bộ sau khi so sánh. Hãy cùng so sánh kết quả nhé!

    2. Các tham số (class_weight, siêu tham số, v.v.) không phải cứ thêm vào hoặc thay đổi là sẽ tốt lên. Bạn phải trực tiếp dùng tập kiểm chứng (validation set) để

      Bạn phải so sánh để quyết định có áp dụng hay không.
      Trong tình huống đi thi, nếu cảm thấy mơ hồ khi quyết định các tham số thì hãy cứ để giá trị mặc định (trạng thái không thiết lập). Sự ổn định có vẻ sẽ quan trọng hơn!
      Việc nhất thiết phải huấn luyện toàn bộ dữ liệu cũng rất tốt!



    1. Tôi đã cập nhật các câu hỏi thực hành loại 2 trên Coding Pang (https://code.sideonai.com/).

    2. Tôi đã thêm lightgbm vào tất cả mã nguồn trong phần bài giảng Big Data Analysis Engineer. (

    image.png




    Tôi xin hướng dẫn dòng cơ sở (baseline) cho bài tập thực hành loại 2 trên Coding Pang. Phần EDA đã được lược bỏ.


    Câu số 1

    import pandas as pd
    
    # 1) Tải dữ liệu
    train = pd.read_csv('data/car_train.csv')
    test = pd.read_csv('data/car_test.csv')
    
    
    # 2) One-hot encoding cho các biến phân loại 
    target = train.pop('target')
    
    print(train.shape, test.shape)
    train = pd.get_dummies(train)
    test = pd.get_dummies(test)
    print(train.shape, test.shape)
    
    # 3) Chia dữ liệu kiểm chứng (So sánh hiệu suất trước khi nộp)
    from sklearn.model_selection import train_test_split
    X_tr, X_val, y_tr, y_val = train_test_split(train, target, test_size=0.2, random_state=0, stratify=target)
    
    
    # 4) Huấn luyện ba mô hình 
    from sklearn.ensemble import RandomForestClassifier
    rf = RandomForestClassifier(random_state=0)
    rf.fit(X_tr, y_tr)
    pred = rf.predict(X_val)
    
    from sklearn.metrics import f1_score
    print(f1_score(y_val, pred, average='macro'))
    
    from lightgbm import LGBMClassifier
    lgb = LGBMClassifier(random_state=0, verbose=-1)
    lgb.fit(X_tr, y_tr)
    pred = lgb.predict(X_val)
    print(f1_score(y_val, pred, average='macro'))
    
    from xgboost import XGBClassifier
    xgb = XGBClassifier(random_state=0, verbosity=0)
    xgb.fit(X_tr, y_tr)
    pred = xgb.predict(X_val)
    print(f1_score(y_val, pred, average='macro'))
    
    # 5) Huấn luyện lại mô hình đã chọn trên toàn bộ train và dự đoán test (Tùy chọn)
    # lgb.fit(train, target)
    # pred = lgb.predict(test)
    
    # 6) Lưu tệp nộp bài (Chỉ 1 cột pred, loại bỏ index)
    result = pd.DataFrame({'pred': pred})
    result.to_csv('result.csv', index=False)
    
    
    # Kiểm tra tệp nộp bài
    print("\n ===== Tệp nộp bài (Mẫu) =====")
    print(pd.read_csv("result.csv").head())
    
    print("\n ===== Tệp nộp bài (Kiểm tra kích thước) =====")
    print(pd.read_csv("result.csv").shape)


    Câu số 2

    
    import pandas as pd
    
    # 1) Tải dữ liệu
    train = pd.read_csv('data/bike_train.csv')
    test = pd.read_csv('data/bike_test.csv')
    
    # 2) One-hot encoding cho các biến phân loại 
    target = train.pop('count')
    
    print(train.shape, test.shape)
    train = pd.get_dummies(train)
    test = pd.get_dummies(test)
    print(train.shape, test.shape)
    
    # 3) Chia dữ liệu kiểm chứng (so sánh hiệu suất trước khi nộp)
    from sklearn.model_selection import train_test_split
    X_tr, X_val, y_tr, y_val = train_test_split(train, target, test_size=0.2, random_state=0)
    
    # 4) Huấn luyện ba mô hình
    from sklearn.ensemble import RandomForestRegressor
    rf = RandomForestRegressor(random_state=0)
    rf.fit(X_tr, y_tr)
    pred = rf.predict(X_val)
    
    from sklearn.metrics import root_mean_squared_error
    print(root_mean_squared_error(y_val, pred))
    
    from lightgbm import LGBMRegressor
    lgb = LGBMRegressor(random_state=0, verbose=-1)
    lgb.fit(X_tr, y_tr)
    pred = lgb.predict(X_val)
    print(root_mean_squared_error(y_val, pred))
    
    from xgboost import XGBRegressor
    xgb = XGBRegressor(random_state=0, verbosity=0)
    xgb.fit(X_tr, y_tr)
    pred = xgb.predict(X_val)
    print(root_mean_squared_error(y_val, pred))
    
    # 5) Huấn luyện lại mô hình đã chọn trên toàn bộ train và dự đoán test (tùy chọn)
    # lgb.fit(train, target) 
    # pred = lgb.predict(test)
    
    # 6) Lưu tệp nộp bài (chỉ 1 cột pred, loại bỏ index)
    result = pd.DataFrame({'pred': pred})
    result.to_csv('result.csv', index=False)
    
    # Kiểm tra tệp nộp bài
    print("\n ===== Tệp nộp bài (mẫu) =====")
    print(pd.read_csv("result.csv").head())
    
    print("\n ===== Tệp nộp bài (kiểm tra kích thước) =====")
    print(pd.read_csv("result.csv").shape)
    0
  • roadmap님의 프로필 이미지

    Đã chỉnh sửa

    Tôi đã cập nhật các câu hỏi mô phỏng cho Dạng bài tập 1 và Dạng bài tập 3! 🎉

    Tôi đã tạo trang web Coding Pang để các bạn có thể giải bài tập trong môi trường giống với kỳ thi thật nhất có thể, và tôi đã đăng các câu hỏi mới lên đó.

    Bạn có thể trực tiếp viết mã và giải đề như trong kỳ thi thật, vì vậy hãy nhất định ghé qua và luyện tập nhé 😊 Chúc bạn chắc chắn sẽ thi đỗ!


    👉 Link Coding Pang: code.sideonai.com

    image.png


    Vì vẫn đang là bản beta nên nếu có lỗi gì, hãy cho mình biết nhé!

    0
  • roadmap님의 프로필 이미지

    Kỳ thi chỉ còn một tuần nữa thôi.

    Chia sẻ bản ghi hình buổi họp chuẩn bị cho kỳ thi Big Data Analysis (6.13) diễn ra một tuần trước đó.

    Vì video dài khoảng một tiếng nên hãy thử xem lướt qua một lần với tốc độ nhanh nhé!

    Chúc mọi người may mắn và cố gắng lên nhé :)

    image.png

    (Dự kiến xóa sau kỳ thi lần thứ 12 theo tổng thời gian bài giảng)


    1
  • roadmap님의 프로필 이미지

    Đã chỉnh sửa

    Kỳ thi chỉ còn 2 tuần nữa là đến rồi!

    Hãy xem qua môi trường thi một lần nhé.
    (Chỉ nên xem qua để xác nhận, còn việc học thực tế hãy tiếp tục thực hiện trên Colab hiện tại để đảm bảo tốc độ!)

    👉 Trải nghiệm môi trường thi

    Tuy nhiên, trong môi trường thi thực tế, việc tải dữ liệu thông qua liên kết bên ngoài hoặc tải tệp lên là không thể.

     

    Để khắc phục điểm này, chúng tôi đã cho phép cả phương thức sử dụng liên kết hiện tại và tải tệp lên

    Tôi đã tạo ra một môi trường phiên bản beta mới cho "Coding Pang"

    Liên kết: code.sideonai.com

    Vì vẫn đang trong giai đoạn beta nên có thể còn một số thiếu sót. Rất mong bạn dùng thử và nếu có điều gì bất tiện, hãy gửi phản hồi cho chúng tôi bất cứ lúc nào. Chúng tôi sẽ tích cực tiếp thu và cải thiện. 🙏

     

    Khuyên dùng trình duyệt Chrome, và tốc độ thực thi có thể thay đổi tùy theo hiệu suất máy tính xách tay (PC) của người dùng!

     

     

    0
  • roadmap님의 프로필 이미지

    Thông báo về kỳ thi lần thứ 12 đã được hướng dẫn.

    Nội dung giống với kỳ thi trước đó và những thay đổi chỉ ở mức độ cải thiện cách diễn đạt và cách trình bày.

     

    Mặc dù trước đây cũng đã có những lời tương tự, nhưng trong bài thi thực hành loại 2 (작업형2)

    "Để đạt được các chỉ số đánh giá xuất sắc, cần phải tìm kiếm mô hình tối ưu" vì có nội dung này nên

    Ít nhất bạn cần chuẩn bị 2 mô hình (Random Forest, LightGBM)

    https://www.dataq.or.kr/www/board/view.do?boardKind=notice&bbsKey=eyJiYnNhdHRyU2VxIjoxLCJiYnNTZXEiOjU3OTAxM30=

    Chúc bạn may mắn trong thời gian còn lại nhé!!

    image.png

     

     

    0

Ưu đãi có thời hạn, kết thúc sau 2 ngày ngày

1.787.194 ₫

29%

2.531.858 ₫