Khóa học
Khoa học Dữ liệu và Thống kê
Theo infographic “Học Khoa học Dữ liệu trong 8 (Bước) Dễ dàng” của chúng tôi, một trong những bước đầu tiên để học khoa học dữ liệu là nắm vững thống kê, toán học và machine learning.
Nếu bạn còn nhớ, bước tiếp theo là học cách viết mã.
Nhưng khi bạn đã biết đủ Python để làm khoa học dữ liệu, đã đến lúc củng cố kiến thức bạn đã thu nhận.
Các chủ đề thống kê cho khoa học dữ liệu mà blog này tham chiếu và cung cấp tài nguyên gồm:
Danh sách này không bao quát hết các nội dung thống kê dùng trong khoa học dữ liệu, nhưng đủ để bạn bắt đầu. :)
Nhân tiện, nếu bạn vẫn đang tìm cách bắt đầu học Python cho khoa học dữ liệu, bạn nên cân nhắc tham gia khóa Intro to Python For Data Science của chúng tôi. Khóa học sẽ giúp bạn áp dụng thống kê với Python.
Học thống kê cho khoa học dữ liệu mang tính thực hành cao, vì vậy bạn đừng quên (tiếp tục) tập trung luyện tập các khái niệm lý thuyết mà bạn có thể đã học ở giai đoạn đầu hành trình khoa học dữ liệu.
Nhưng chính xác thì sự khác nhau giữa thống kê và khoa học dữ liệu là gì?
Chúng thường bị nhầm lẫn, và có người cho rằng không có khác biệt và nhà khoa học dữ liệu thực chất là nhà thống kê.
Nhưng cuối cùng, nếu tạm gác những ý kiến đó sang một bên, hầu hết đều đồng ý rằng thống kê là một trong những thành phần cốt lõi được sử dụng trong khoa học dữ liệu và là một thành phần cốt lõi.
Thống kê với Python
Bài viết hôm nay sẽ tập trung vào cách bạn có thể học thống kê với Python. Bao gồm các chủ đề phân tích thống kê bạn cần khám phá trên hành trình khoa học dữ liệu bằng Python.
Tại sao lại là Python?
R là điểm khởi đầu tốt cho thống kê. Nó được phát triển cho tính toán và đồ họa thống kê, nên mang đến rất nhiều gói thống kê cho người dùng. Mặt khác, Python là ngôn ngữ đa dụng với nhiều ứng dụng.
Tuy vậy, bạn cũng có thể dùng Python cho thống kê.
Một số người nói họ dùng Python vì hiệu năng hoặc vì nó cũng làm được nhiều thứ mà R làm được.
Nhưng về bản chất, ngôn ngữ lập trình này ngày càng phổ biến và số lượng gói có thể dùng cho khoa học dữ liệu đã tăng đáng kể trong những năm gần đây.
Tóm lại, chắc chắn có lý do để dùng Python cho phân tích thống kê.
Công cụ bạn chọn cuối cùng sẽ phụ thuộc vào loại phân tích bạn muốn thực hiện.
Vậy, bạn đã sẵn sàng bắt đầu với thống kê trong Python chưa?
PS. Nếu bạn cũng đang tìm tài nguyên học thống kê cho R hoặc về R, hãy xem các khóa học mở của DataCamp hoặc Intro to Statistics With R.

Thống kê & Lý thuyết Xác suất với Python
Chủ đề đầu tiên bạn nên xử lý là thống kê và lý thuyết xác suất. Không chỉ có khá nhiều video và khóa học có thể giúp bạn, mà còn có rất nhiều sách (bản in) sẽ giúp bạn bắt đầu với thống kê trong Python.
Giới thiệu Thống kê với Python
Cho phần mở đầu về thống kê, hướng dẫn này với các ví dụ thực tế là lựa chọn phù hợp. Các notebook của hướng dẫn này sẽ giới thiệu bạn với các khái niệm như trung bình, trung vị, độ lệch chuẩn và những điều cơ bản của các chủ đề như kiểm định giả thuyết và phân phối xác suất.
Một cách khởi đầu tuyệt vời cho việc học thống kê, bởi nó lấy cảm hứng từ hai cuốn sách "Think Bayes" và "Think Stats", là hai đề xuất hàng đầu sẽ được nhắc lại bên dưới!
Nếu bạn tìm sách, bạn có thể thử cuốn sách miễn phí này về thống kê tính toán trong Python, không chỉ có phần giới thiệu lập trình với Python, mà còn đề cập đến các chủ đề như Markov Chain Monte Carlo, thuật toán Kỳ vọng-Tối đa hóa (EM), các phương pháp lấy mẫu lại, và nhiều hơn nữa.
Hoặc bạn có thể mua cuốn sách này của Thomas Haslwanter cho phần giới thiệu tổng quát về các phép kiểm định thống kê thông dụng, phân tích hồi quy tuyến tính và các chủ đề về phân tích sống sót và thống kê Bayesian. Lưu ý cuốn sách này lấy khoa học sự sống và y học làm lĩnh vực ứng dụng.
Cả hai cuốn trên, như bạn thấy, cũng đã giới thiệu bạn với các chủ đề thống kê nâng cao bằng Python.
Nếu bạn thích video, bạn nên xem hướng dẫn này về phân tích dữ liệu thống kê với SciPy do Christopher Fonnesbeck, Trợ lý Giáo sư tại Khoa Thống kê Sinh học, Trường Y Vanderbilt, trình bày. Cũng có video này về thống kê suy luận và thăm dò với Python của Gaël Varoquaux. Video sau sử dụng các gói Python là Pandas và StatsModels.
Bạn sẽ thấy các tài nguyên này khá tổng quát để giúp bạn bắt đầu với thống kê trong Python.
Nếu bạn đang tìm tài nguyên giúp bạn nhanh chóng nắm vững những điều cơ bản của thống kê, bạn nên xem khóa Statistical Thinking in Python của DataCamp, do Justin Bois giảng dạy. Bạn sẽ được giới thiệu các khái niệm như Phân tích Dữ liệu Thăm dò (EDA), phương sai và hiệp phương sai, trung bình và trung vị, phân phối xác suất, và còn nhiều nữa.
Lý thuyết Xác suất với Python
Lý thuyết xác suất cũng là điều rất đáng để xem xét khi bạn học thống kê với Python. Đó là phân tích các hiện tượng ngẫu nhiên. Nghĩa là kết quả của bất kỳ sự kiện ngẫu nhiên nào đều không tất định: nó có thể là một trong nhiều kết quả có thể xảy ra, và kết quả cuối cùng được quyết định bởi cơ may.
Lý thuyết xác suất là nguồn gốc khái niệm của thống kê.
Các tài nguyên đã đề cập ở trên cung cấp phần giới thiệu chung về thống kê và trong một số trường hợp cũng bao quát lý thuyết xác suất (điều này hợp lý với những gì vừa nói), nhưng cũng có những tài nguyên chỉ tập trung vào chủ đề này.
Bạn cũng có thể xem các tài nguyên sau:
Một trong những đề xuất hàng đầu là khóa Computational Probability and Inference từ EdX. Khóa học thực hành này, do các giảng viên MIT dạy, sẽ giúp bạn thoải mái với các nguyên lý về xác suất và suy luận.
Bạn cũng nên đọc cuốn sách miễn phí này của Giáo sư Brian Blais, là giáo trình nhập môn suy luận thống kê, đặt nền tảng bằng lý thuyết xác suất như một lô-gic.
Phân phối Xác suất trong Python
Để thực sự học thống kê với Python cho khoa học dữ liệu, bạn cũng cần hình thành trực giác tốt về thời điểm dùng phân phối nào. Phân phối là một liệt kê hoặc hàm thể hiện toàn bộ các giá trị hoặc khoảng giá trị có thể có của dữ liệu và tần suất xuất hiện của chúng.
Và nếu bạn xem danh sách này, bạn sẽ thấy có khá nhiều phân phối cần cân nhắc.
Để giới thiệu về các phân phối xác suất đều, chuẩn, nhị thức và Poisson với SciPy, bạn có thể xem bài viết blog này.
Một đề xuất hàng đầu là chương 4 trong cuốn “Think Stats: Probability and Statistics for Programmers”, sẽ giới thiệu bạn với các phân phối liên tục. Tuy nhiên, chương 5 cũng sẽ cho bạn phần mở đầu vững chắc về phân phối xác suất.
Để trực quan hóa phân phối, bạn có thể dùng biểu đồ tần suất, trong số các cách khác. Nếu muốn có cái nhìn nhanh, bạn có thể xem notebook IPython này, cung cấp phần giới thiệu ngắn về thống kê mô tả với giá trị trung bình, phân vị và biểu đồ tần suất cùng mối liên hệ của chúng. Để học thêm về cách trực quan hóa phân phối, bạn có thể xem hướng dẫn Seaborn này.
Cũng có hướng dẫn plotly này về thống kê cơ bản trong Python.
Lưu ý rằng nếu bạn muốn theo một khóa học bao quát một số phân phối như nhị thức và Poisson, và các hàm phân phối như hàm phân phối tích lũy thực nghiệm, hoặc một khóa sẽ dạy bạn cách trực quan hóa các phân phối này, bạn có thể xem khóa Statistical Thinking in Python của DataCamp.

Kiểm định Giả thuyết trong Python
Các kiểm định giả thuyết là những kiểm định thống kê dùng để xác định liệu có đủ bằng chứng trong một mẫu dữ liệu để suy ra rằng một điều kiện cụ thể là đúng với toàn bộ tổng thể hay không.
Hai khái niệm trung tâm của các kiểm định này là giả thuyết không và giả thuyết đối, nhưng giá trị p cũng là nền tảng cho kiểm định giả thuyết. Những điều này rất khó hiểu khi bạn mới vào lĩnh vực, và sẽ cần nỗ lực để nắm được giá trị alpha hay mức ý nghĩa cho p-value của bạn và điều gì tạo nên khác biệt giữa bác bỏ hoặc không bác bỏ giả thuyết không.
Bạn sẽ tìm thấy một hướng dẫn trên trang của thư viện SciPy có đề cập ngắn gọn đến p-value và ước lượng.
Các bài giảng SciPy này sẽ giới thiệu bạn với kiểm định t, dùng để kiểm định giả thuyết bằng cách phân tích trung bình của hai tổng thể. Bạn cũng có thể tham khảo bài blog này nếu muốn khám phá kiểm định t.
Nếu bạn muốn đọc sách, đề xuất hàng đầu “Think Stats: Probability and Statistics for Programmers” vẫn phù hợp cho kiểm định giả thuyết. Chương 7 sẽ dạy bạn mọi thứ về kiểm định giả thuyết nếu bạn chưa đi qua các chương khác để học về phân phối.
Với những ai tìm khóa học, Statistical Thinking in Python (Phần 2) của DataCamp cung cấp phần giới thiệu và các ví dụ kiểm định để bạn có được kiến thức và thực hành cần thiết về kiểm định giả thuyết và còn nhiều hơn thế.
Mô hình hóa và Khớp Thống kê trong Python
Giờ bạn đã nắm được kiểm định giả thuyết và phân phối, bạn có thể xem lại hoặc đi sâu hơn vào cách xây dựng mô hình thống kê và khớp các phân phối với dữ liệu.
Các mô hình thống kê xấp xỉ cái tạo ra dữ liệu của bạn và có thể được dùng trong phân tích dữ liệu để tóm tắt, dự đoán và mô phỏng. Nói cách khác, đó là biểu diễn các hiện tượng phức tạp đã tạo ra dữ liệu, và có thể dùng để tóm tắt, dự đoán hoặc mô phỏng.
Tuy nhiên, điều này kéo theo việc bạn cũng cần có khả năng xác định liệu dữ liệu của mình có phù hợp với mô hình đó hay không.
Để tạo độ khớp tốt nhất giữa mô hình và dữ liệu, có thể dùng ước lượng. Ước lượng liên quan đến suy luận về một tổng thể dựa trên thông tin thu được từ một mẫu. Bên cạnh kiểm định giả thuyết, đây là cách học được điều gì đó về tổng thể từ mẫu.
Hướng dẫn này giới thiệu bạn với chủ đề khớp mô hình bằng thư viện SciPy của Python.
Mô hình hóa dữ liệu thống kê và khớp cũng là một chương trong hướng dẫn phân tích thống kê này, được biên soạn trong các notebook bởi Christopher Fonnesbeck. Cái tên này giờ đã quen với bạn rồi!
Với những ai thích video, hướng dẫn này cũng có trên Youtube thành bốn đoạn và bàn về các chủ đề như ước lượng (Cực đại Hợp lý và Phương pháp Moment).
Bạn có thể xem các video của hướng dẫn này tại đây.
Nhân tiện, nếu bạn muốn biết thêm về Ước lượng Cực đại Hợp lý cho phân loại mẫu thống kê, đừng bỏ lỡ notebook IPython này hoặc notebook này giải thích cách tính ước lượng này cho các phân phối khác nhau. Các notebook này thuộc kho lưu trữ phân loại mẫu do Sebastian Raschka thực hiện, người cũng có một kho lưu trữ khác cho cuốn Python Machine Learning.
Machine Learning với Python
Với gợi ý cuối cùng về cuốn sách Machine Learning, bạn có thể tự hỏi: bài viết này nói về thống kê mà?
Đúng vậy.
Và không phải machine learning và thống kê là một, nhưng chúng đặt cùng một câu hỏi: làm thế nào chúng ta học từ dữ liệu?
Hơn nữa, cả kỹ thuật machine learning và thống kê đều được dùng thường xuyên trong, ví dụ, nhận dạng mẫu hay khai phá dữ liệu.
Machine learning là một công cụ khá hữu ích trong hộp đồ nghề khoa học dữ liệu của bạn. Nó là chủ đề khá rộng, và bạn có thể dành rất nhiều thời gian để tìm hiểu các khái niệm và thuật toán của nó.
Vì vậy, tốt nhất là bắt đầu ngay bây giờ!
Nhưng không hề đơn giản để biết nên bắt đầu từ đâu vì nó quá rộng và có rất nhiều tài nguyên để trở nên thành thạo machine learning trong Python.
Khóa học machine learning tổng quát do Andrew Ng giảng dạy khá thiên về lý thuyết, nhưng vẫn được khuyến nghị nếu bạn muốn tiếp cận các khái niệm và thuật toán chính trước từ góc nhìn lý thuyết.
Tuy nhiên, cũng có rất nhiều tài nguyên thực hành giúp bạn bắt đầu.
Các tài nguyên sau chỉ là một phần trong số đó:
Phần giới thiệu nhẹ nhàng về machine learning với SciPy này sẽ giúp bạn đi đúng hướng. Hướng dẫn này lý tưởng cho những ai muốn ôn lại kiến thức thống kê cơ bản và xây dựng thêm trên đó. Kyle Kastner dẫn bạn qua ước lượng tham số, hồi quy, ước lượng mô hình và phân loại cơ bản.
Nếu bạn muốn một cuốn sách để tiếp cận chủ đề này, bạn có thể xem IPython Interactive Computing and Visualization Cookbook. Chương 8 giới thiệu các khái niệm nền tảng của machine learning và minh họa các thuật toán như hồi quy logistic, Naive Bayes, K-láng giềng gần nhất, Máy Vector Hỗ trợ, rừng ngẫu nhiên và những thuật toán khác. Cuốn cookbook dùng gói Scikit-learn cho các ví dụ.
Nếu bạn muốn một hướng dẫn nhập môn Scikit-learn cho machine learning, hãy vào đây.
Ngoài ra, đừng bỏ lỡ hướng dẫn này về bộ phân loại Naive Bayes.
Phân tích Hồi quy với Python
Hồi quy chắc chắn là điều bạn không thể bỏ qua khi nói đến thống kê cho khoa học dữ liệu. Đây là quy trình thống kê để ước lượng mối quan hệ giữa các biến.
Để hiểu cách thực hiện hồi quy với Python, trước tiên bạn nên bắt đầu với một số tài liệu về hồi quy tuyến tính.
Nhưng hãy xem hướng dẫn này trước: nó bao quát phân tích hồi quy bằng gói StatsModels với Quandl. Bài viết giải thích trước các loại hồi quy hiện có rồi cung cấp một ví dụ thực tế.
Sau đó, hãy đọc hướng dẫn hồi quy tuyến tính này để thực hành thêm.
Kế đến, bạn có thể chuyển sang hồi quy phi tuyến. Với hướng dẫn về hồi quy ridge và lasso trong Python, bạn có thể xem hướng dẫn của Analytics Vidhya này. Bài viết sử dụng các thư viện Python NumPy, Pandas, Matplotlib và Scikit-learn để giải thích rõ cách tiếp cận chủ đề này.
Cũng có một notebook hướng dẫn rất hay về hồi quy logistic mà bạn có thể tìm tại đây.
Ngoài ra, đừng bỏ lỡ bài blog của Yhat này về hồi quy logistic với Rodeo.

Tư duy & Mô hình Bayesian trong Python
Thống kê Bayesian là một lý thuyết diễn đạt bằng chứng về trạng thái thật của thế giới dưới dạng mức độ tin cậy được gọi là xác suất Bayesian. Đôi khi, bạn sẽ muốn tiếp cận các bài toán khoa học dữ liệu theo hướng Bayesian.
Điều này chính xác nghĩa là gì sẽ trở nên rõ ràng trong loạt bài năm phần xuất sắc này giới thiệu bạn với tần suất luận và Bayesian.
Nếu bạn thích sách hơn, bạn có thể xem “Think Bayes: Bayesian Statistics in Python”. "Bayesian Methods For Hackers" cũng là một tài nguyên tuyệt vời để nhập môn suy luận Bayesian. Hai cuốn sách bắt buộc đọc cho bất kỳ ai muốn bắt đầu với tư duy và mô hình Bayesian!
Hoặc, nếu bạn muốn phần giới thiệu trong một notebook, bạn có thể đọc hướng dẫn này, giới thiệu bạn với định lý Bayes.
Cũng đừng bỏ lỡ hướng dẫn này về Phân tích Thống kê Bayesian trong Python và các video Youtube đi kèm sẽ giới thiệu bạn với thống kê Bayesian, Markov chain Monte Carlo, PyMC, Mô hình phân cấp và kiểm tra, thẩm định mô hình.
Với hướng dẫn về khớp mô hình Bayesian trong Python, bạn nên xem các IPython Notebook này và video YouTube đi kèm, là bài giảng của Jake VanderPlas tại Hội thảo Phân tích Dữ liệu và Thống kê ESAC 2014.
Nếu bạn muốn tái sử dụng tài nguyên, bạn có thể xem IPython Interactive Computing and Visualization Cookbook, mà bạn có thể đã dùng khi xem về Machine Learning. Chương 7 của cuốn này nói về phân tích dữ liệu thống kê nhưng tập trung vào các phương pháp tần suất luận và Bayesian cho kiểm định giả thuyết, ước lượng tham số và phi tham số, và suy luận mô hình.
Tại đây là một hướng dẫn về PyMC, mô-đun Python triển khai các mô hình thống kê Bayesian và thuật toán khớp, bao gồm Markov Chain Monte Carlo (MCMC). Ngoài ra, hướng dẫn này, trong đó bạn sẽ học cách triển khai các mô hình hồi quy tuyến tính Bayesian với PyMC3, cũng rất đáng xem.
Chuỗi Markov
Nói ngắn gọn, chuỗi Markov là các hệ thống toán học nhảy từ một “trạng thái” sang trạng thái khác. Các trạng thái này có thể là một tình huống hoặc một tập giá trị. Nghĩa là bạn có một danh sách các trạng thái sẵn có và, bên trên đó, một chuỗi Markov cho bạn xác suất nhảy, hay “chuyển tiếp”, từ một trạng thái sang bất kỳ trạng thái nào khác.
Một số tài nguyên đã đề cập ở trên cũng đã giới thiệu bạn với chủ đề này.
Bên cạnh những tài nguyên đó, bạn cũng có thể xem video này: đó là một hướng dẫn sử dụng mô phỏng Monte Carlo và lấy mẫu lại, trong số các phương pháp khác, để khám phá kiểm định giả thuyết và mô hình hóa thống kê. Đây có thể là cách hay để củng cố kiến thức trước khi bạn đi vào chuỗi Markov.
Ngoài ra, cuốn Computational Statistics in Python sẽ cho bạn một số hiểu biết về Chuỗi Markov. Đây là phần nhập môn tuyệt vời về Markov Chain Monte Carlo.
Bắt đầu với Thống kê trong Python
Danh sách này chỉ để bạn khởi động. Bạn sẽ thấy nhiều tài nguyên chồng lấp hoặc có thể tìm thêm tài nguyên khác. Hãy cho chúng tôi biết trên Twitter!
Dù sao đi nữa, không có lý do gì để trì hoãn việc bắt đầu học thống kê với Python.