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.
Continue reading “XGBoost: thuật toán giành chiến thắng tại nhiều cuộc thi Kaggle”

Advertisements

Vietnam Web Summit 2017

Xin chia sẻ slide VWS2017 của tôi với chủ đề “Bắt đầu Big Data từ đâu và như thế nào?”. Nội dung chủ yếu review lại các thông tin cơ bản về các cách lưu trữ Big Data, thuật toán nổi bật dùng để handle Big Data hiệu quả. Và cuối cùng là vài phút quảng bá cho công ty hiện tại của mình Trusting Social về sản phẩm hiện tại, cơ hội việc làm cũng như các hỗ trợ phúc lợi cho nhân viên công ty cả Hồ Chí Minh, Hà Nội và các nước bạn xung quanh khu vực.

Kết thúc tháng cuối của năm 2017, chúng ta đã cùng nhau hội tụ tại sự kiện VWS2017 để cập nhật những xu hướng mới nhất của năm nay đó là AI, Big Data, E-commerce và Marketing. Xin cám ơn và xin chúc mừng các anh chị ban tổ chức, các speaker và các bạn tình nguyện viên đã hoàn thành xuất sắc sự kiện lớn trong năm này. Hy vọng năm sau chúng ta sẽ được tiếp cận nhiều hơn với các case study cụ thể và chuyên đề chi tiết hơn để giao lưu học hỏi và xúc tiến hợp tác giữa anh em trong cộng đồng.

Bài viết sự kiện:

Distance oracle – Truy vấn nhanh khoảng cách giữa hai điểm bất kỳ trên đồ thị

Đại ý: Sự bùng nổ thông tin mạng xã hội làm nảy sinh nhu cầu khai thác sự tương tác giữa: Subscribers, Groups, People, Objects, etc. Trong đó, tính toán nền tảng để phân tích đồ thị là tìm đường đi ngắn nhất giữa các node bất kỳ. Đối với đồ thị lớn hơn 10 triệu node, khả năng tính toán của hệ thống hiện tại sẽ bị quá tải. Do đó, giới nghiên cứu đề xuất Distance oracle là một cấu trúc dữ liệu giúp cho việc tính toán và truy vấn khoảng cách trên đồ thị được nhanh hơn với 4 điều kiện sau:

  • Tiền xử lý nên bằng O(n) hoặc O(nlogn).
  • Không gian lưu trữ ít hơn O(n^2).
  • Thời gian truy vấn nhanh hơn O(m + nlogn).
  • Độ tin cậy: khoảng cách xấp xỉ được càng gần khoảng cách thực tế càng tốt.

Trong bài báo “A Geometric Distance Oracle for Large Real-World Graphs“. Nhóm tác giả đã cài đặt nhiều nền tảng lý thuyết tính toán xấp xỉ khoảng cách khác nhau trên đồ thị thực tế để so sánh như: GoogleNews, Facebook SB, Call Graph I, … Kết quả xấp xỉ đạt được có độ sai biệt nhỏ so với khoảng cách thực tế. Từ nghiên cứu này, ta có thêm một hướng tiếp cận để xử lý Big Data bằng cách xấp xỉ tính toán thay vì xử lý trực tiếp bằng các phương pháp trước đây (lưu trữ đồ thị bằng ma trận kề O(n^2), tìm đường đi ngắn nhất bằng thuật toán Dijkstra O(m + nlogn)).

benchmark_graphs

Keywords: distance oracle, graph analysis, graph theory, metric space, social network analysis.

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:

Continue reading “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.

Continue reading “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.

Continue reading “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.

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

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.

Continue reading “SMA 2017 – Lý thuyết ra quyết định”

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.

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

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.

Continue reading “SMA 2017 – Lý thuyết tập thô (P3) – Rút gọn thuộc tính”

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.

Continue reading “SMA 2017 – Lý thuyết tập thô (P2) – Rời rạc hoá thuộc tính”

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.

Continue reading “SMA 2017 – Lý thuyết tập thô (P1) – Các khái niệm cơ bản”

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é.

Continue reading “Con đường học tập Machine Learning của tôi”

Hướng dẫn deploy Spark

spark-mesos

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:

Continue reading “Hướng dẫn deploy Spark”

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.

Continue reading “Truy vấn văn bản – Document Retrieval”