About

JAIST - Japan Advanced Institute of Science And Technology
JAIST – Japan Advanced Institute of Science And Technology

Xin chào, tôi là Hồng, tốt nghiệp master tại JAIST – School of Information Science (Dec 2015). Tôi lập ra blog về Machine learning này với mục đích đóng góp một chút sức lực vào cộng đồng Khoa học máy tính Việt Nam cũng như giúp mọi người tiếp cận lĩnh vực này một cách nhanh chóng và dễ dàng nhất để giải quyết những bài toán phức tạp mà chúng ta đang đối mặt hiện nay.

Ắt hẳn khi chúng ta tìm kiếm từ khóa “Machine learning”, có rất nhiều kết quả gồm các tài liệu, các khóa học, các trang blog và các phần mềm để cho chúng ta tìm hiểu. Thông thường, ta sẽ đọc hết các nguồn tài liệu này với hy vọng nắm bắt các khái niệm nhanh nhất có thể. Tuy nhiên, việc làm này đòi hỏi rất nhiều thời gian và công sức, đồng thời phải có người hướng dẫn để chúng ta bắt đầu. Thay vì vậy, blog này hướng mọi người đến sự hiểu biết thấu đáo về lĩnh vực Machine learning cả về kĩ năng làm việc lẫn kiến thức để cảm thấy đỡ “ngộp” trước vô vàn thông tin trên Internet.

Thông qua các ví dụ thực tế và ngôn ngữ lập trình cụ thể, ta sẽ đóng vai như một nhà khoa học dữ liệu. Ta tập trung nhiều vào các bài toán cần giải quyết thay vì giành nhiều thời giờ để ngấu nghiến lý thuyết về các thuật toán (nói như vậy nhưng bạn sẽ cần lật lại tài liệu để làm hyperparameter cho mô hình nhé). Vì các thuật toán này thường đã có các thư viện cài đặt sẵn cũng như đã được tối ưu cho từng mô hình xác định. Ta không nên mất nhiều thời gian “re-invent the wheel”, để rồi trở nên chán nản và từ bỏ mục tiêu ban đầu của mình.

Thêm vào đó, tôi cũng chia sẻ những kinh nghiệm của mình trong học tập, làm việc và nghiên cứu để các bạn trẻ mới bắt đầu trong lĩnh vực này tham khảo cũng như định hướng sự nghiệp sau này của mình được tốt hơn.

Hy vọng những gì tôi mang lại trong blog giúp ích được nhiều cho mọi người trong học tập, công việc và ngày càng đam mê hơn với Machine learning. Mọi thắc mắc, các bạn có thể liên hệ riêng qua form đặt ở sidebar bên phải hoặc comment bên dưới để các bạn quan tâm cùng tham khảo.

Một vài thông tin khác

Paper: Ong, H. X., Minh, N. Le, & Tojo, S. (2016). Reranking CCG Parser for Jazz Chord Sequences. In The Eighth International Conference on Knowledge and Systems Engineering.

Một suy nghĩ 138 thoughts on “About

      1. Anh ơi. Có bài viết nào về GRU(Gated Recurrent Units) không ạ. Em đang làm niên luận ngành về GRU mà em tìm hiểu trên. có code chạy mẫu mà em không hiểu nguyên tắc nó chạy hết. Em lần đầu tiếp xúc về ngôn ngữ tự nhiên. Mong được anh và a/c trong diễn dàn giúp ạ.
        Đây là một phần về GRU em đã đọc https://dominhhai.github.io/vi/2017/10/implement-gru-lstm/
        Em không biết làm thế nào mới có ra kết quả như bài viết nói.
        Em để lại mail a/c có thể trả giúp ở đây hoặc qua mail cũng đc ạ
        lamvuvu43@gmail.com

        Thích

  1. cảm ơn bạn, ở đây có nhiều thông tin hữu ích cho cá nhân tôi cũng như rất nhiều bạn đang nghiên cứu về các vấn đề liên quan.
    Hiện tại mình cũng đang nghiên cứu về vấn đề này, mình muốn Hồng tư vấn cho mình một chút. Hồng có thể cho mình cách liên hệ trực tiếp với Hồng để trao đổi.
    Cảm ơn bạn rất nhiều, chúc bạn thành công!

    Thích

  2. Chaò bạn! mình đang nghiên cứu về big data và linked data, tìm hiểu về hadoop, cách xử lý dữ liệu lớn! những bài viết của bạn thật sự rất thú vị và hữu ích với mình, chân thành cảm ơn bạn!

    Đã thích bởi 2 người

  3. Hi Mr.Hong,
    Mình là Thiên, Mình mới nghiên cứu về big data thôi. Mình có một thắc mắc mà chưa giải đáp được, rất mong Hồng giúp mình với.
    Bài toán của mình, là crawl tin tức từ các website, và lưu xuống database. Sau đó, mình sẽ sử dụng các tin tức này là report. Hiện tại data ngày càng lớn nên mình đang tìm hệ thống lưu trữ phân tán , xử lý song song.
    Mình tính sử dụng Hadoop, nhưng Hadoop là hệ thống file phân tán, nếu dùng chắc mình sẽ phải ghi tin tức xuống file rồi mới cho lưu trữ trên Hadoop. Không biết điều này có tốn thời gian và thêm xử lý cho hệ thống của mình không ?

    Với kinh nghiệm làm việc của Hồng, Hồng có tư vấn nào tốt hơn cho hệ thống bên mình (crawl tin tức => lưu xuống hệ thống database => lấy thông tin lên làm report)

    Cảm ơn Hồng đã đọc comment của mình.

    Đã thích bởi 1 người

    1. Hi Thiên,

      Hadoop là hệ thống chắc chắn bạn sẽ dùng khi muốn lưu trữ và tính toán phân tán vì đây là một hệ sinh thái để cho các công nghệ khác như Spark, Shark, Kafka, Habase, Mhout, Hive kế thừa và phát huy.

      Lúc đầu bạn có thể lưu dưới dạng file, nhưng cần được chuyển sang định dạng khác dễ xử lý hơn. Vì lưu ở dạng file bạn sẽ cần viết các hàm MapReduce để xử lý dữ liệu. Nếu sử dụng định dạng khác ta có thể sử dụng các câu truy vấn tựa SQL (Spark SQL, Pig, Hive) để tổng hợp dữ liệu và đạt hiệu suất cao hơn do đã được hãng khác tối ưu lại. Hiện nay, Spark đã có nhiều cải tiến về kiểu dữ liệu của mình có thể tăng tốc đọc ghi cao hơn so với làm việc trên file, hoặc Parquet cũng có những ưu điểm hỗ trợ cho Spark trong việc truy vấn.

      Craw tin tức: bạn có thể dùng Kafka hoặc đơn giản chỉ cần dùng MongoDB để lưu dữ liệu nhanh.
      Database: bạn có thể dùng Parquet hoặc Spark dataset.
      Lấy thông tin report: bạn có thể dùng Spark SQL.

      Bạn có thể tham khảo các bài viết sau:
      https://ongxuanhong.wordpress.com/2016/04/10/kinh-nghiem-lam-viec-voi-big-data/
      https://ongxuanhong.wordpress.com/2016/01/19/so-sanh-pig-hive-va-sql/
      https://ongxuanhong.wordpress.com/2015/08/17/nen-chon-hadoop-hay-spark-cho-he-thong-big-data/
      https://databricks.com/blog/2016/03/31/introducing-our-new-ebook-apache-spark-analytics-made-simple.html

      Thích

  4. Hi Hồng,
    Cảm ơn bạn nhiều lắm. Bữa giờ mình đọc AUC và ROC rồi cross-validation mình không hiểu. May quá bài viết của bạn rất rõ ràng, đầy đủ và hay. Cảm ơn bạn rất nhiều! Bạn có thể cho mình email để mình liên lạc để hỏi một số vấn đề không? email của mình là caongoctrinh2003@yahoo.com.

    Thích

  5. Cảm ơn Hồng đã giúp mình. Rất mong Hồng viết thêm nhiều bài viết, để giúp thêm nhiều bạn như mình, hiểu biết nhiều hơn về BigData. Thanks Hồng . Mình ở TP Hồ Chí Minh, rất mong ngày nào đó được mời Hồng ly cafe.

    Thích

  6. Hi anh, em mới là học sinh lớp 12. Em dự định sau này sẽ theo Khoa học máy tính. Hiện giờ em đang luyện tập sử dụng python thông thạo. Kĩ năng toán của em cũng khá tốt, tiếng anh cũng tạm ổn. Em thấy rất hứng thú với machine learning, đặc biệt là deep learning. Em mơ ước sau này có thể trở thành Data Scientist. Không biết có thể nhận được lời khuyên hữu ích gì từ anh không.

    Rất cảm ơn anh đã lập ra blog rất hữu ích này. Em thực sự rất hâm mộ anh và mong anh viết thêm thật nhiều bài viết có giá trị hơn nữa.

    Thích

  7. Trong CNN, mình thắc mắc về các giá trị của filter (đọc trong bài CNN for text mining), ví dụ có một filter ma trận làm mờ {0 1 0, 1 4 1, 0 1 0}, vậy tính như thế nào được các số đó mà không phải là các số ví dụ như {3 3 1, 3 2 5, 100 200 3}. Mong được giải đáp, cám ơn bạn nhiều

    Thích

  8. Chào Anh Hồng,
    Em học python được hơn 1 năm rồi mà vẫn không biết trình độ mình tới đâu.
    Khi quên 1 số hàm thì em có thể search. Không biết mình học python như thế nào để được gọi là giỏi để làm được việc ạ ?
    Cảm ơn anh vì các bài viết bổ ích.

    Thích

    1. – Cách làm của em thật sự là khoa học, bởi vì bộ não của con người được dùng để tư duy chứ không phải dùng để nhớ. Nếu chỉ dùng để nhớ thì giá trị của em chỉ bằng một cuốn sách giáo khoa hay chỉ đơn thuần là một trang web ở trên internet.
      – Một người được gọi là làm được việc khi thời gian bỏ ra để giải quyết xong bài toán ít hơn thời gian ước tính ban đầu, nên trình độ như thế nào cũng không quan trọng bằng em làm được việc.
      – Theo anh thì học nhiều ngôn ngữ mới nói chung hay Python nói riêng đều có mục đích giúp em phát triển thêm nhiều tư duy hay ho về cách mà mọi người giải quyết vấn đề. Ví dụ như Python mặc dù có tốc độ xử lý chậm hơn nhiều C/C++ nhưng ưu điểm của ngôn ngữ này mang lại thật sự hữu ích nên thường được các nhà nghiên cứu sử dụng để prototype/phác thảo ý tưởng của mình: dễ hiểu do gần với mã giả, có nhiều thư viện hỗ trợ cho tính toán thống kê thiên về khoa học, không cần phải biên dịch tốn nhiều thời gian, cấu trúc dữ liệu đơn giản dễ sử dụng, …
      – Anh nghĩ nếu em đã nắm chắc cấu trúc dữ liệu và giải thuật (như vậy đã là giỏi rồi) thì không có bài toán nào mà em không giải quyết được. Vì mọi ngôn ngữ sinh ra đều có chung các bước input -> process -> output. Do vậy, em hoàn toàn có thể dùng mã giả như ngôn ngữ thuần thục của mình để lập trình trên giấy hay phác thảo ý tưởng của mình. Khi đó, em sẽ không còn phụ thuộc vào bất kỳ ngôn ngữ nào và tự tin hơn về khả năng lập trình của mình.

      Đã thích bởi 1 người

      1. Hi,
        Em cảm ơn anh vì lời khuyên bổ ích.
        Hiện tại em cũng tìm hiểu và học về data engineer.
        Em tìm hiểu được lộ trình cần học là cấu trúc dữ liệu giải thuât, data warehouse, Big Data (spark) và Machine Learning. Liệu đó có phải là một lộ trình đúng không ạ ?
        Nguồn em học trên coursera.
        Thanks.

        Thích

        1. Data engineer thiên về kỹ thuật xử lý dữ liệu nên các môn em nên follow gồm:

          • Cấu trúc dữ liệu và giải thuật, Lập trình hướng đối tượng (cơ sở để làm việc)
          • Cơ sở dữ liệu (khái niệm cơ bản, các dạng chuẩn, các câu truy vấn cơ bản để lấy dữ liệu từ doanh nghiệp)
          • Hệ điều hành (phân quyền và quản lý tiến trình)
          • Mạng máy tính (triển khai các hệ thống phân tán)
          • Quản trị kinh doanh (một số kiến thức liên ngành để làm việc)
          • Machine Learning (biết sơ về các khái niệm để hỗ trợ cho nhóm Data Scientists)

          Đã thích bởi 1 người

  9. hi anh em có một số câu hỏi về hadoop và sql như sau

    1. hadoop có thể thay thế được hệ thống cơ sở dữ liệu truyền thông như mysql , sql không ?
    2. có thể xây dựng một hệ thống backend dùng 100% bằng hadoop thay thế các hệ cở sở dữ liệu truyền thống được không?

    Thích

    1. 1. không. hadoop chỉ là một format (như fat32, ntfs, ext4, RAID-0 …) hỗ trợ truy xuất phân tán, hiện tại vẫn còn đang nghiên cứu phát triển. CSDL truyền thống vẫn còn nhiều giá trị nhờ những nghiên cứu vững vàng và tính ổn định cao hơn.
      2. được. nhưng sẽ cực hơn nhiều, vì hadoop thuần chỉ làm việc với files, bạn phải viết code lại để truy vấn theo mục đích (SELECT, FROM, WHERE, GROUPBY, …). Tuy nhiên, bạn có thể sử dụng các platform build trên hadoop để hỗ trợ bạn việc này bằng syntax của SQL-like (Pig, Hive, …)

      Thích

  10. Cảm ơn vì những bài blog của bạn, mình cũng đang phải tìm hiểu về thu thập và phân tích dữ liệu. Công nghệ và tool hỗ trợ chỉ là 1 phần như bạn nói. Mình cần tìm ra bài toán mình cần giải mới là cái quan trọng. Vì vậy mà mong muốn bạn chia sẽ thêm những bài về các vấn đề như các phương pháp xử lí dữ liệu, những nguyên tắc xử lí, các vấn đề hay gặp phải, những cái bản chất nhất như này sẽ giúp mình hiểu nhanh hơn những công nghệ cũng như giải quyết được các bài toàn 1 cách chính xác.
    Cảm ơn bạn rất nhiều.

    Thích

    1. Hi, cám ơn bạn đã quan tâm tới blog của mình. Blog sẽ luôn cập nhật những kiến thức liên quan đến Data Science.
      Bạn có thể tham khảo trước một số đề tài này:
      https://ongxuanhong.wordpress.com/category/kien-thuc/statistical-inference/
      https://ongxuanhong.wordpress.com/category/kien-thuc/getting-and-cleaning-data/
      https://ongxuanhong.wordpress.com/category/kien-thuc/exploratory-data-analysis/

      Thích

  11. Cám ơn bạn về những chia sẻ hữu ích về học máy. Nhân tiện mình muốn hỏi bạn một vấn đề. Mình đang nghiên cứu về Tokenizer và POStagger. POStagger mình dùng CRFs train với bộ corpus gán nhãn sẵn, còn Tokenizer mình mới tách từ dựa vào từ điển, độ chính xác còn hạn chế. Giờ mình muốn tách từ kết hợp huấn luyện và dùng từ điển. Bạn có thể gợi ý cách tiếp cận Tokenizer bằng cách dùng mô hình học máy không ? Cám ơn bạn 😀

    Thích

      1. Mình đang làm trên corpus Vietnamese, tập corpus gắn nhãn sẵn tương tự của VLSP. Hiện mình đang làm tokenize với cách tiếp cận gắn nhãn 0 cho từ có 1 tiếng và gắn nhãn 1 cho từ có nhiều tiếng, kết quả chưa đc cao. 90 % cho 1000 sentences

        Thích

        1. Bạn có thể sử dụng language modeling để chọn ra câu có tokenize cao nhất. Ví dụ p(em yêu Bác_Hồ_Chí_Minh) > p(em yêu Bác_Hồ Chí_Minh).
          Hướng khác là áp dụng Graph, mỗi từ sẽ là các cạnh nối với nhau (dùng n-gram để tính), bạn áp dụng Viterbi để tìm đường đi ngắn nhất.
          Hoặc sử dụng automata và regular express kết hợp lại theo các luật bạn đã đề ra.
          Và còn nhiều hướng tiếp cận khác… đòi hỏi bạn phải đọc và áp dụng nhiều nghiên cứu khác nhau.
          Vấn đề của TV là thiếu ngữ liệu nên phân bố các n-gram không đồng đều dẫn đến các trường hợp bị bias cho một số từ so với từ khác. Do đó bạn khó beat lại các phương pháp trên cùng tập ngữ liệu mà thường chuyển hướng sang xây dựng tập ngữ liệu khác để tạo ra công trình riêng của mình.
          Mình thấy một số bạn có xây dựng ngữ liệu từ các trang tin tức như Tuổi trẻ, Foody, VnExpress để nghiên cứu.

          Thích

  12. Hi Hồng, mình sinh năm 1983. Mình đang muốn làm hệ thống chatbot để hỗ trợ bà con nông dân. Ban đầu mình sẽ tập trung vào cây hồ tiêu. Mình có nhiều kinh nghiệm trong việc phát triển phần mềm nhưng kiến thức về AI gần như bằng 0 (chỉ học một số khái niệm cơ bản khi học đại học). Mong bạn tư vấn cho mình hướng tiếp cận, các thư viện/framework có sẵn để mình xây dựng ứng dụng chatbot này. Dự kiến các chức năng như sau:
    – Người dùng chat trực tiếp với chatbot bằng tiếng Việt, trong quá trình chat có thể gửi hình ảnh (nếu khó quá thì có thể làm sau).
    – Chatbot dựa trên câu hỏi sẽ trả lời cho người dùng. Ví dụ: mô tả biểu hiện cây trồng, chatbot sẽ tư vấn đó là bệnh gì, phương pháp chữa trị ra sao. Chatbot có thể đưa thêm các link của diễn đàn, FB có thảo luận liên quan.
    – Mình đang có rất nhiều tài liệu về trồng trọt, phân bón và thuốc bảo vệ thực vật. Chatbot có thể dùng nguồn dữ liệu này hoặc học thêm qua internet hoặc các người dùng chuyên gia (nông dân giỏi hoặc các kỹ sư nông nghiệp).
    Mong nhận hồi âm của bạn. Rất cảm ơn bạn, chúc bạn hạnh phúc và thành công!

    Thích

    1. Chào bạn,

      Cám ơn bạn đã quan tâm đến blog của mình. Về chatbot, bạn có thể tham khảo các link bên dưới
      http://www.wildml.com/2016/04/deep-learning-for-chatbots-part-1-introduction/
      https://www.quora.com/What-is-the-best-way-to-learn-and-write-a-AI-Chat-bot

      Theo như bạn đề cập thì ứng dụng của bạn bước đầu nên phát triển theo hướng truy vấn văn bản dựa vào domain có sẵn là các tài liệu về trồng trọt, phân bón và thuốc bảo vệ thực vật (bước đầu là cây hồ tiêu).

      Khi người dùng nhập đoạn chat vào hệ thống, thì hệ thống sẽ thực hiện phân tích câu thành các từ khóa. Sau đó, hệ thống sẽ truy vấn đến văn bản được tiền xử lý theo TFIDF (term frequency-inverse document frequency) bạn có thể dùng ElasticSearch cho tác vụ này. Văn bản trả về sẽ chứa thông tin liên quan đến từ khóa như bệnh gì, phương pháp chữa trị ra sao, các link của diễn đàn, FB …

      Mình không chuyên về chatbot nên hy vọng những gợi ý trên giúp ích được cho bạn.

      Chúc bạn thành công,

      Đã thích bởi 1 người

  13. Cảm ơn Hồng đã trả lời rất nhanh! Mình đã đọc các bài viết ở trên, mình sẽ chọn hướng tiếp cận dễ nhất: closed domain và Retrieval-based models. Mình đang gặp khó khăn như sau:
    – Tổ chức các tài liệu đã có thành dữ liệu AI (entity, property, action, event…). Mình có tìm hiểu thì thấy ở đây có cách tổ chức khá dễ hiểu: http://yokobot.com/index.php?p=data&s=knowledge. Mình có nên tham khảo cách tổ chức này không? Yêu cầu của mình là làm sao chatbot của mình có thể phát triển tri thức về sau.
    – Xử lý tiếng Việt để biết người dùng đang hướng đến entity nào. Hiện tại, mình đã download một số corpus và từ điển: danh sách địa danh, tên riêng tiếng Việt, từ điển Việt-Anh, banktree và một số API để xử lý tiếng Việt. Mình có nên sử dụng các template (ngữ pháp) giống như ở đây không http://yokobot.com/index.php?p=data&s=language?
    – Việc xử lý ảnh là một thách thức khác. Mình đang tham khảo các Vision API của Google và Microsoft nhưng có lẽ phải để sau. Nếu bạn có lời khuyên nào thì giúp mình nhé.
    Cảm ơn Hồng 1 lần nữa.

    Thích

    1. Cách tổ chức của yokobot cũng khá hay, dễ dàng truy xuất và xử lý. Bạn có thể lưu cách tổ chức này vào database để dễ dàng quản lý hơn.

      Chatbot có nhiều hướng tiếp cận, nhưng nguyên lý chung tương tự như search engine, điểm khác biệt ở chỗ bạn summarize lại các văn bản tìm được theo cấu trúc có thể hiểu được. Bạn có thể tham khảo bài báo sau:
      http://dl.acm.org/citation.cfm?id=1073092
      http://www.kdnuggets.com/2016/07/deep-learning-chatbots-part-2.html

      Về xử lý TV bạn cũng nên tạo corpus liên quan đến domain của mình, vì có một số thuật ngữ mà corpus bạn download không tồn tại dẫn đến độ chính xác không cao. Bạn có thể nhờ 3-5 người bạn gán nhãn và thực hiện kiểm chứng chéo kết quả gán nhãn để đảm bảo corpus chính xác nhất có thể.

      Về xử lý ảnh, bạn có thể tự xây dựng tập dữ liệu cây trồng của mình và gán nhãn các loại bệnh liên quan. Sau đó, thực hiện bài toán multiclass-classification để từ đó rút trích ra từ khóa liên quan để tìm kiếm trong cơ sở tri thức của hệ thống.

      Thích

      1. Chắc mình phải bỏ cuộc giữa chừng việc nghiên cứu về NLP và AI. Mình có kinh nghiệm làm software Engineer, cái mình cần là có 1 bạn Data Scientist đi cùng. Nếu Hồng có thời gian thì giúp anh em Software Engineer như mình cách sử dụng các API có sẵn (Amazon, FB, Microsoft) để tạo ra các ứng dụng thực tế. Mình đã thử liên hệ 1 số bạn nghiên cứu về lĩnh vực này ở VN nhưng không thành công. Cảm ơn Hồng rất nhiều. Lưu ý utcntt và Truong Pham Van là mình cả. Cái API Auto framework của mình: https://github.com/utcntt/APIAutomation

        Thích

  14. Cảm ơn Hồng vì tất cả! Mình đã có một cái nhìn sơ bộ về những gì phải làm. Mình biết đây là dự án khó vì nó liên quan nhiều thứ nên mình đang liên hệ thêm một số bạn để làm cùng. Bây giờ thì mình chỉ đang ở bước tập hợp dữ liệu thôi. Nhân tiện, mình có cái Web API test framework viết bằng .Net Core (sử dụng NUnit), nếu Hồng có dự án nào cần phải test API hoặc crawl data thì có thể dùng.
    Chúc một năm mới hạnh phúc và thành công!

    Đã thích bởi 1 người

  15. Chào anh Hồng,

    Hôm nay là mùng 1 tết Âm Lich 2017, chúc anh thật nhiều sức khỏe và thành công trong công việc.

    Em cũng vừa biết đến blog của anh ngày hôm nay. Đọc qua một số bài viết em thấy anh thật sự có tâm huyết và nhiệt tình đóng góp. Em thật sự cảm kích công sức anh đã bỏ ra.

    Em hiện tại là software engineer có dự định chuyển tiếp qua Data Science. Em đang tìm hiểu về Machine Learning và Big Data qua một số courses trên Coursera. Nhưng xung quanh em có nhiều ý kiến cho rằng chuyển từ Software Engineering qua Data Science là vô cùng khó khăn và gần như không thể. Hiện tại em thấy khá đơn độc trên con đường này.

    Em hy vọng có thể tham gia vào cộng đồng Data Science, tham gia các buổi meetings, events, làm quen và chia sẻ với các bạn đang định hướng theo con đường này. Rất mong nhận được lời khuyên của anh, một người đi trước.

    Thích

    1. Chào em,
      Năm mới chúc em và gia đình được nhiều sức khoẻ, gặp nhiều điều may mắn trong cuộc sống.
      Để chuyển từ SE sang DS đòi hỏi em một số background và kỹ năng cơ bản liên quan đến toán, thống kê và nghiên cứu. Những kỹ năng này chỉ có trong quá trình học tập và làm việc.
      Có nhiều con đường để em lựa chọn, mỗi loại đều có ưu khuyết điểm riêng nên quan trọng vẫn là sở trường của mình có phù hợp không.
      Một, em có thể học lên cao học (tốt nhất là xin được học bổng nước ngoài). Ưu điểm: chính quy, có thời gian nghiền ngẫm kiến thức, làm đề tài nghiên cứu chuyên ngành. Khuyết: tu học khá lâu từ 2-5 năm.
      Hai, đăng ký và hoàn thành các khoá học online, đóng tiền lấy chứng chỉ. Ưu: vừa học vừa làm, ít rủi ro, linh động về thời gian. Khuyết: ưu thế cạnh tranh bằng cấp
      Ba, làm trong đơn vị có nhóm DS, bắt đầu từ vị trí data engineer. Ưu: tiếp cận cụ thể domain, làm việc gần gũi với DS, có thể join team sau này. Khuyết: thông thường sếp sẽ giữ bạn làm vị trí DE lâu dài.
      Về meetups hay event, bạn có thể tham gia bất kỳ nơi nào tại các trang web trường ĐH, các công ty về Big data luôn có hoạt động này như VNG, Zalora, Knorex,… nên em không sợ đơn độc nếu có thể thành lập một team riêng của mình để cùng học tập và tiến bộ.
      Mẹo nhỏ để biết mình nên chuẩn bị gì đó là lên các trang web tuyển dụng như Vietnamworks, Itviec search từ khoá DS. Mỗi cty sẽ đưa ra các yêu cầu và đặc thù công việc riêng, em có thể apply để thử sức mình khi nào cũng được.
      Chúc em thành công.

      Đã thích bởi 1 người

  16. Chào anh Hồng

    Em cũng đang tập tành nghiên cứu về Data Science và Big Data nên cũng hay ghé qua blog để học hỏi thêm. Hôm nay là mùng 1 tết Đinh Dậu em xin chúc anh nhiều sức khoẻ và thành công trong công việc và cuộc sống ạ

    Thích

    1. Hi thành, mình cũng đang nghiên cứu về lĩnh vực này, hiện tại vẫn đang học một mình và chưa có bạn bè để trao đổi. Mình rất vui nếu có thể làm quen với bạn. Mình tên Hiền, sống và làm việc ở TP Hồ Chí Minh.

      Thích

      1. Chào Hiền. Rất vui được làm quen với bạn. Mình cũng học 1 mình và cũng chỉ mới biết 1 ít về Data Science thôi. Email của mình là tnamtran89@gmail.com, hi vọng có thể cùng bạn trao đổi để cùng nhau tiến bộ
        tái bút: hì, mượn blog của a Hồng 1 xíu ạ 🙂

        Đã thích bởi 1 người

  17. Em chào anh, em vừa mới tốt nghiệp đại học Ngoại thương ngành kinh tế, em có biết về python, xác suất thống kê, kinh tế lượng, anh có thể tư vấn em là nên ứng tuyển vào những vị trí như thế nào, ở công ty như thế nào để có thể làm việc phát triển theo hướng data science, data analyst không ạ. Em cảm ơn anh.

    Thích

    1. Hi em,
      Do công việc ở VN không có tiêu chuẩn rõ ràng về Data Analyst nên khó có thể hướng em đi một lộ trình cụ thể.
      Em có thể tham khảo các vị trí liên quan ở Vietnamworks, mỗi công ty họ mô tả vị trí này khác nhau nhiều khi lẫn lộn qua cả Data Science hay DB Admin, …
      https://www.vietnamworks.com/Data-Analyst-kv
      Nhìn chung họ đỏi hỏi phải hiểu về các hệ CSDL như SQL, có kinh nghiệm lập trình 1,2 năm và biết áp dụng các kiến thức thống kê vào dữ liệu để thực nghiệm, phân tích, … Bản chất thì vẫn là lập trình viên nhưng sẽ chuyên sâu vào backend data nhiều hơn. Về tầng ứng dụng thì họ yêu cầu bên backend dữ liệu phải sẵn sàng và dễ quản lý.
      Nếu anh là nhà tuyển dụng thì anh sẽ quan tâm em đã lập trình web lâu năm chưa, có background về học thuật liên quan hay không, có tinh thần học hỏi hay năng lực đặc biệt nào không.
      Nếu đã có bằng về toán thống kê cùng với khả năng lập trình và làm việc với CSDL tạm được, anh nghĩ em có thể apply vào các công ty trên Vietnamworks thử xem sao.
      Còn đòi hỏi cao hơn nữa thì thành ra em phải đi học lại văn bằng hai ngành IT rồi 🙂

      Đã thích bởi 1 người

      1. Em chỉ có bằng về kinh tế như trên thôi anh ạ, em cũng có 1 năm làm lập trình web full stack nhưng không có chứng chỉ hay bằng gì về IT hay toán cả, nên em không biết có apply được không

        Thích

          1. cũng hay ạ, em cũng muốn làm những dự án thực tế, nhưng em không tìm được ví dụ, kiểu em chỉ học lý thuyết về xác suất thống kê, sử dụng excel để visualize data nhưng em khong biết một báo cáo phân tích dữ liệu thực sự hoặc 1 dự án về data analyst thực tế nó sẽ như thế nào, em tìm ví dụ, sample cũng không thấy, anh có thể chỉ em tìm những báo cáo, dự án thực tế kiểu như thế ở đâu được không ạ.

            Thích

  18. em muốn học về bigdata (spark…) bằng java, em ở hà nội, không biết anh, ai hay trung tâm nào dạy online, offline về cái này giới thiệu em với. em cảm ơn ạ!

    Thích

  19. em đang nghiên cứu phân loại văn bản dùng sub Graph kết hợp với SVM. Em chưa hiểu đầu vào của SVM như thế nào. Thầy có thể nói qua cho em được không Thầy?

    Thích

      1. Em Cảm ơn Thầy. Em đã sử dụng frequent subgraphs vào SVM: em làm như sau:
        1. Tìm các frequent subgraphs. Ví dụ em tìm được 5 cái: g1, g2, g3, g4, g5
        2. Với mỗi document: ví dụ document 1 chứa g1 5 lần, chứa g4 3 lần. Vậy ta có 1 vector đại diện cho document 1 là [5, 0, 0, 3, 0]. Đến đây em chưa biết dùng các document vectors cho SVM như thế nào Thầy? Khi huấn luyện làm sao biết được graph nào thuộc lớp nào Thầy? Mong Thầy giải thích qua cho em hiểu với được không Thầy. Dữ liệu cả em là WebKB gồm 2 file: webkb-train, webkb-test với 4 lớp cho trước: course, faculty, project, student.

        Thích

  20. Chào anh. Cho em hỏi một chút. Em muốn trở thành một data scientist. Con đường cụ thể phải đi như thế nào anh chia sẻ giúp em với. Vì tài liệu, khóa học thì nhiều nhừng không có một con đường cụ thể thì mông lung quá.

    Thích

    1. Theo kinh nghiệm của anh thì em có 2 lựa chọn:
      1) Con đường chắc chắn: học tiếp Master, rồi làm PhD, Post Doc vài năm.
      2) Con đường dài hơn: đi làm về kĩ thuật ở công ty có vị trí Data Scientist một vài năm để học hỏi kinh nghiệm, sau đó ứng tuyển vào vị trí này.
      DS ở VN đòi hỏi em cả kỹ thuật lẫn kinh nghiệm nghiên cứu học thuật, anh nghĩ em nên tiếp tục học lên cao để có thêm kinh nghiệm nghiên cứu, về kĩ thuật thì em có thể tự training cho bản thân được. Nếu học thì nên chọn ngành NLP hoặc liên quan đến Big Data thì sẽ có nhiều cơ hội hơn những chuyên ngành khác.

      Thích

  21. Hi anh, trước hết em muốn gửi lời cám ơn anh vì đã lập ra blog này rất bổ ích, mấy hôm nay em học được và hiểu thêm rất nhiều kiến thức từ blog này. Em có một vấn đề muốn nhờ anh tư vấn, hiện em đang học toán ứng dụng Master năm nhất, em mới chỉ biết về Data Science, Machine Learning… cách đây 2 3 tháng, học kì này em có môn học Data mining, học chủ yếu là về Exploratory data analysis, unsupervised models, và trên trường em chỉ được học kiến thức một cách cơ bản nhất, và làm những bài tập với số lượng dữ liệu rất bé tầm khoảng 1O-20 observations. Bây giờ thầy em lại giao một project làm trên R (phải sử dụng các algorithms như kmeans, EM và Hierarchical clustering để phân nhóm) với tầm 164860 dữ liệu cần phải analyse, bao gồm cả qualitative and quantitative. Em đã bắt đầu làm các bước pretreatment với các dữ liệu số như vẽ histogram, boxplot, barplot… Nhưng sau đó với các qualitative attribute em không biết làm gì với chúng. Mà thầy em không cho phép hỏi gì thêm về project. Liệu anh có thể cho e vài ý tưởng, các bước để thực hiện được không? Em thực sự đang không biết hướng đi và bắt đầu từ đâu với project này.
    https://archive.ics.uci.edu/ml/machine-learning-databases/00196/dataSetDescription.names
    Đây là phần description data em phải làm.

    Thích

    1. Hi em, cám ơn em đã ủng hộ blog.
      Để phân tích sâu vào các biểu đồ, em cần hiểu tại sao họ lại tạo ra các biểu đồ đó để phân tích. histogram, boxplot, barplot đều được sử dụng để quan sát phân bố giá trị của tập dữ liệu. Từ đó, ta có thể phát hiện ra những đặc điểm thú vị như max, min, mean, median hay các giá trị ngoại lai. Ngoài ra, em còn có thể áp dụng thêm phương pháp statistical-inference để kết luận về dữ liệu đang xét.
      kmeans, EM và Hierarchical clustering cũng vậy. Tham số đầu vào cũng chỉ có k nhóm được xác định trước. Sau đó, em quan sát giá trị k nào thì cho ý nghĩa phân tích nhiều nhất: có mẫu quan sát bất thường trong nhóm A không thay vì nằm trong nhóm B, …

      Các bài viết dưới đây có thể giúp em:
      https://ongxuanhong.wordpress.com/category/kien-thuc/statistical-inference/
      https://ongxuanhong.wordpress.com/2015/07/22/exploratory-data-analysis-cac-he-thong-plotting/
      https://ongxuanhong.wordpress.com/2015/07/18/exploratory-data-analysis-k-means-clustering/
      https://ongxuanhong.wordpress.com/2015/07/18/exploratory-data-analysis-hierarchical-clustering/
      https://ongxuanhong.wordpress.com/2015/07/18/exploratory-data-analysis-cac-bieu-do-co-ban/

      Đã thích bởi 1 người

      1. E cám ơn a, đây là những dữ liệu được định vị với mục đích xây dựng lại tư thế (cái này e chả hiểu nó dùng trong lĩnh vực gì, theo e đoán là làm game thiết kế nhân vật, hoặc y học gì đó). Bây giờ công việc của e là phải gom những dữ liệu thành nhóm (tạo cluster), có chỗ e không hiểu là e không biết tạo cluster theo hướng nào, mấy algorithms trên thì e hiểu hết rồi.
        Trong tập dữ liệu có những attributes sau:
        – Tên (của 5 ng A, B…,E),
        – Thẻ gắn trên từng bộ phận người (ngực, thắt lưng, mắt cá chân trái,phải)
        – Ngày, Tgian (e nghĩ 2 cái này e sẽ ko cần dùng đến),
        – Toạ độ x, y, z cho mỗi lần định vị trên mỗi bộ phận
        – Hoạt động : đi bộ, nằm, ngồi, …. (tổng cộng 11 activity)
        Theo như e hiểu thì khi tạo cluster e sẽ phải làm trên những dữ liệu số là x, y và z.
        Vấn đề là e phải tách thành những bảng dữ liệu con như tập dữ liệu của người A xong sau đó tạo những cluster trên tất cả toạ độ x, y, z của A. Hay là ở mỗi bộ phận, mỗi activity, e tách dữ liệu của nó riêng? Hay nữa là tách dữ liệu ở mỗi người, mỗi bộ phận, mỗi hoạt động? Nếu như phải dùng cách cuối thì quá trình làm sẽ rất dài :(, vì có tổng cộng 5 ng, 4 bộ phận, 11 hoạt động…(mà cách này thì e thấy logic nhất). Mong a cho e lời khuyên, e đang rất bối rối về cái project này. Em cám ơn a nhiều ạ.

        Thích

        1. Àh, e nghĩ ra ý này, a cho ý kiến giúp e xem đúng không, em tách dữ liệu ở mỗi bộ phận, ngực, thắt lưng…, 1 toạ độ X tương ứng, tương tự với toạ độ Y và Z. Sau đó tạo cluster trên từng nhóm dữ liệu đối với (Ngực và toạ độ X), (Ngực và toạ độ Y), …… Tổng cộng e có 12 lần tạo cluster? A thấy liệu có khả thi hơn không?

          Thích

          1. Bài này khá giống pattern recognition trong các thiết bị smart watch. Mục tiêu khi cho dữ liệu tracking trên sensor (x,y,z) em phải phân nhóm vào đúng hành động được định nghĩa trước (11 activities). Nếu có thêm thông tin về thời gian em phải phân tích theo time series analysis theo x,y,z để nắm bắt pattern của từng chuyển động.
            Như vậy e có thể xét x theo time, y theo time, z theo time, x và y, x và z, y và z hoặc tách riêng từng bộ phận chuyể động trên cơ thể để so sánh, cuối cùng ta lập luận đánh giá kết quả gom nhóm nào chính xác cao nhất mà sử dụng.
            Project nào e tập trung vào data exploratory là ok rồi vì cũng khá nhiều kết hợp để so sánh. Cuối bài nên demo model gom nhóm mà em học được và lập bảng độ chính xác của từng mô hình là hoàn thành.

            Thích

  22. Hi anh Hồng,
    Hiện tại em đang làm việc trong lĩnh vực Data Warehouse, nhưng muốn phát triển thêm về bên Bigdata. Thì em có lợi thế gì và cần thêm những gì?
    Vì thực sự em chưa hình dung ra được các công việc thuộc BigData. Cũng như chưa phân biệt được các khái niệm Bigdata, Machine Learning… Anh có thể giải thích giúp em với.
    Cảm ơn anh.

    Thích

    1. Bigdata thường được mọi người định nghĩa dựa trên 5V (Volume, Velocity, Value, Veracity, Variety). Nếu em đang đối mặt với 5 thuộc tính này thì em đang làm việc với Bigdata.
      Bigdata đòi hỏi bên system administrator nhiều. Cách xây dựng hệ thống, monitor hệ thống ổn định, backup và scaling sao cho hợp lý không gây độ trễ lớn ở phía người dùng.
      Machine learning tuỳ theo dữ liệu và mục đích của em là gì được dùng để khai thác và làm cho hệ thống được thông minh hơn. Từ đó, các nhà lãnh đạo dựa vào để dễ dàng đưa ra quyết định.

      Thích

      1. Cho em hỏi nếu em đang làm ở Data Warehouse thì khi phát triển lên Bigdata sẽ có thuận lợi gì không? Và Data Warehouse có là một phần trong mô hình (quy trình) của Bigdata không?

        Thích

        1. DW là dữ liệu em aggreagted theo giờ, ngày, tháng hoặc các thông tin cần tổng hợp khác để truy vấn nhanh dữ liệu. Bigdata là tập dữ liệu hỗn độn cần được sắp xếp và khai thác, DW là một trong những giải pháp này.
          Thuận lợi thì cũng ko có thuận lợi gì vì nếu hệ thống của em đã ổn định rồi thì việc chuyển đổi công nghệ tốn khá nhiều thời gian. Điển hình là các ngân hàng hay các hãng hàng không đều đang sử dụng công nghệ rất lâu đời mặc dù data của họ đúng nghĩa là Bigdata.

          Thích

          1. Okie, rất cảm ơn anh đã chia sẻ.
            Tất nhiên làm công nghệ sẽ phải theo đuổi công nghệ rồi. Em sẽ nghiên cứu dần dần. Tiện thể anh chia sẻ thêm những công nghệ cần có (nền tảng) cơ bản, đúng nghĩa là một người bắt đầu tìm hiểu Bigdata được không ạ?

            Thích

            1. Hiện nay, các giải pháp công nghệ cho Bigdata khá nhiều và đã được các ông lớn xây dựng cơ sở hạ tầng cho những doanh nghiệp đang tìm kiếm giải pháp như Amazon có Amazon Web Service, Google có Google cloud computing, Microsoft có azure, …
              Hiện tại, anh đang làm với các công nghệ trong bài viết này. Em có thể dùng nó làm chủ đề tìm hiểu lúc rảnh rỗi https://ongxuanhong.wordpress.com/2017/02/13/thao-tac-voi-cac-cong-nghe-big-data/

              Thích

  23. Chào anh. Em cũng vô tình biết được blog này, cho em hỏi khái niệm về psychometrics, kiểu như làm sao để phán đoán tính cách của ai đó qua trang cá nhân facebook của họ. Anh có tài liệu về psychometrics này không anh. Hồi xưa xem phim Snowden bị ám ảnh tới giờ về cái này, nên em tò mò học để tìm hiểu thì mới biết blog của anh. Em mới chỉ tự học về R thôi, chắc còn lâu mới thành DS được. Anh có thể hướng dẫn cho em loại ngôn ngữ lập trình nào nên học cho người mới bắt đầu được không anh , em tự học trong file Help của phần mềm được . Anh chỉ cần hướng dẫn em thôi.

    Thích

    1. Hi em, nếu làm về statistics thì R đã đủ vận dụng rồi. Psychometrics có khá nhiều sách liên quan em có thể tìm mua trên amazon nhé. Chủ yếu họ làm về clustering và Factor analysis để gom nhóm hoặc tìm ra pattern những người dùng có cùng tính cách.
      https://www.amazon.com/s/ref=nb_sb_noss/136-8471098-0864947?url=search-alias%3Daps&field-keywords=psychometrics
      DS chủ yếu làm thực nghiệm và phân tích dữ liệu. Nếu em đang làm những công việc này thì em đã là DS rồi.
      Chúc em thành công,

      Thích

  24. Cho em hỏi chút, em đang xem lại nền tảng toán học: cụ thể là đại số tuyến tính, do em đọc giáo trình tiếng anh nên hiểu cách người ta áp dụng ma trận, vecto, … vào thực tiễn như thế nào, khá là hay, ngày xưa học chỉ giải cho có, như máy mà ko hiểu để ứng dụng như thế nào. Giờ em hiểu rồi. Mà lập trình thì em không biết gì hết, học lại căn bản như anh nói ở dưới, tại em ko phải là dân IT ra, anh thông cảm nếu em hỏi hơi nhiều nhé, anh chỉ cần nói sơ qua thôi, còn tiếng anh em tự học tài liệu được, Cám ơn anh nhiều. Giờ mới thấy hối hận vì ngày xưa ko học IT.

    ” Kiến thức nền tảng gồm toán học (đại số tuyến tính, toán rời rạc, giải tích, lý thuyết đồ thị, xác suất và thống kê), lập trình (C/C++, hướng đối tượng, Java, C#) và các môn cơ sở ngành (hệ điều hành, kiến trúc máy tính và hợp ngữ, mạng máy tính, cơ sở dữ liệu, cấu trúc dữ liệu và giải thuật)”

    Thích

    1. Đúng rồi em, quan trọng người thầy ban đầu có định hướng trước cho em ý nghĩa của từng môn học. Từ đó, em sẽ xây dựng được động lực nghiên cứu và học tập ở các dự án sau này. Nếu không sẽ như em nói học chỉ để qua môn qua kỳ thi.

      Thích

  25. Quên chưa hỏi câu hỏi: Cho em hỏi là ngôn ngữ lập trình nào sẽ giải quyết được các bài toán có liên quan tới “đại số tuyến tính vậy anh” . Cám ơn anh nhé

    Thích

    1. Thông thường em có thể sử dụng matlab. Nhưng hiện nay, hầu hết các ngôn ngữ đều có thư viện hỗ trợ cho tác vụ này. Tuy nhiên, mỗi lib sẽ có cách optimize code khác nhau và họ có thể thu phí bản quyền ở một số chức năng nâng cao này.

      Thích

  26. Em chào anh! Em đang tìm hiểu về: “Ứng dụng phân cụm dữ liệu cho việc phân tích dữ liệu xâm nhập trái phép”. Sau khi tham khảo một số tài liệu và làm theo, em đã sử dụng tập dữ liệu KDD99 và làm thực nghiệm phân cụm trên phần mềm WEKA. Tuy nhiên em có một thắc mắc vô cùng lớn, e rất rất mong a giải đáp và khai sáng giúp với em ạ, đó là:
    Em chỉ thấy cái tài liệu đưa ra kết quả phân cụm tức là tìm ra K bằng bao nhiêu thì cho chất lượng cụm tốt nhất. Tuy nhiên, em vẫn không hiểu các cụm thu được này nó có ý nghĩa gì cho công tác phân tích dữ liệu xâm nhập mạng. Thêm vào đó em thấy, số cụm phân được tốt nhất nó không giống với số nhãn em đã biết (khi phân cụm e đã bỏ những nhãn này)? Nếu câu hỏi của em nó có hơi ngớ ngẩn thì mong a khai sáng giúp em với ạ, em là người mới và tại vì em chưa thấy tài liệu nào giải thích rõ điều này cả. Em cảm ơn a rất nhiều!

    Thích

    1. Hi em, “em vẫn không hiểu các cụm thu được này nó có ý nghĩa gì cho công tác phân tích dữ liệu xâm nhập mạng”
      Số K này thường phục vụ cho việc khai thác dữ liệu, nghĩa là em sẽ làm thực nghiệm nhiều lần để tìm được số K lý tưởng vì bản chất ban đầu em không biết được có bao nhiêu loại tấn công mạng như tập dữ liệu đã đề ra:
      DOS: denial-of-service, e.g. syn flood;
      R2L: unauthorized access from a remote machine, e.g. guessing password;
      U2R: unauthorized access to local superuser (root) privileges, e.g., various “buffer overflow” attacks;
      probing: surveillance and other probing, e.g., port scanning.

      Nếu K bằng 2 thì em có thể hiểu là em đang phân cụm thành IP tốt và IP xấu, nếu K bằng 4 thì sau khi gom cụm em sẽ quan sát dữ liệu gom được và đặt tên cho từng nhóm, không nhất thiết là DOS, R2L, U2R, Probing như họ đề xuất.
      Nhưng trong thực nghiệm, để đánh giá chất lượng của mô hình, em cần so cụm dữ liệu phân được và nhãn ban đầu xem tỷ lệ khớp là bao nhiêu. Nếu tỷ lệ càng cao chứng tỏ mô hình em đang áp dụng càng tốt.

      Thích

      1. Hi, anh đã giúp em hiểu rõ hơn nhiều rồi ạ. Nhưng e vẫn thắc mắc một điều nữa, là kết quả hiển thị trong WEKA, ở cuối cùng có phần “Incorrectly clustered instances” (em hiểu là những trường hợp phân cụm không chính xác). Em thấy trong hầu hết các luận văn bằng tiếng Việt em tham khảo, thì họ thường căn cứ vào giá trị này, để đánh giá và kết luận độ chính xác cụm phân được tốt hay không tốt, thậm chí còn dùng nó làm căn cứ để so sánh 2 thuật toán phân cụm khác nhau. Nhưng em thấy như vậy không hợp lý và thuyết phục lắm, và em chưa thấy tài liệu tiếng Anh nào phân tích như vậy. Anh có thể giải thích giúp em ý nghĩa của phần này được không ạ.
        Và về phần đánh giá chất lượng mô hình như anh đề cập ở trên, thì đối với các thuật toán phân cụm người ta hay dùng phương pháp nào ạ?
        Em cảm ơn anh rất nhiều!

        Thích

        1. Em tham khảo 2 link này:
          https://ongxuanhong.wordpress.com/2015/08/27/gom-nhom-clustering-analysis-tap-du-lieu-labor/
          https://nlp.stanford.edu/IR-book/html/htmledition/evaluation-of-clustering-1.html

          Em có thể liệt kê incorrectly instance không? Vì sao em cho rằng những instance đã được đánh nhãn trước như vậy là không chính xác? Thật ra trong một số trường hợp dataset họ cung cấp chỉ tương đối mà thôi, và trong quá trình đánh nhãn họ cần từ 3-5 người kiểm chứng chéo để đưa ra aggreement cuối cùng là nhãn good/bad.

          Nếu em đang làm nghiên cứu để beat được các bài báo trước đây thì để công bằng buộc yêu cầu ta phải dùng chính dataset và phương pháp đánh giá như nhau với cùng setting cơ bản như nhau để so sánh.

          Hoặc em có thể đi một hướng riêng ngoài cải thiện độ chính xác, em có thể cải thiện độ phức tạp thuật toán hay nêu được lợi thế nào đó về sự đơn giản cài đặt hay chiếm ít tài nguyên hệ thống cũng là một đóng góp cho nghiên cứu rồi.

          Thích

  27. Chào a Hồng,
    Cho e hỏi, theo a thì xu hướng Data Science trong vòng 5 đên 10 năm tới sẽ như thế nào? (về khả năng phổ biến, cơ hội việc làm, yêu cầu tuyển dụng…)

    Thích

    1. Hi em,
      Anh không phải nhà tiên tri hay có thẩm quyền gì về quy hoạch ngành này nên có thể những gì anh đoán 5, 10 năm nữa sẽ không đúng 😀

      Phổ biến: các bạn học ngành Computer Science sẽ gia tăng để đáp ứng nhu cầu lao động. Các doanh nghiệp dần tin tưởng hơn vào Machine Learning để cải tiến mô hình kinh doanh của mình. Nhu cầu giảng viên có trình độ Tiến sĩ trở lên ngày càng tăng. Sẽ có nhiều học viện đáp ứng nhu cầu học tập về Data Science có cộng tác với doanh nghiệp tương tự như mô hình Aptech hay NIIT.

      Cơ hội việc làm: giai đoạn đầu sẽ khá hiếm do nhân sự chưa có và doanh nghiệp còn e dè trong khoảng đầu tư rủi ro này (vì ứng dụng ML chưa chắc thành công). Khi trình độ đào tạo được nâng cao, đã có nhiều doanh nghiệp thành công khi đầu tư lĩnh vực này dần dần các doanh nghiệp khác mạnh dạn hơn về mục đầu tư này. Lúc này nhu cầu tuyển dụng sẽ cao hơn.

      Yêu cầu tuyển dụng: giai đoạn đầu do chưa có nhiều công cụ làm việc với Big Data nên dân DS phải thành thạo lập trình, business model, kinh nghiệm lâu năm và có bằng cấp cao. Khi hình mẫu khai thác dữ liệu đã đi vào ổn định, sẽ có nhiều tổ chức xây dựng công cụ khai thác dữ liệu tổng quát. Lúc này yêu cầu ở dân DS chỉ cần kéo thả các thành phần liên kết khai thác dữ liệu từ khâu pre-processing, xây dựng model đến khâu triển khai thực tế sẽ được rút ngắn. Nhiệm vụ chính của DS dần chuyển sang business model nhiều hơn để trích chọn dữ liệu phù hợp nhất cho bài toán của mình. Big Data lúc này không còn là vấn đề của họ nữa vì có thể sử dụng Cloud service cho công việc của mình, không nhất thiết phải xây dựng lại từ đầu, trừ các điều kiện về bảo mật cao không thể giao cho hãng thứ 3. Đến thời điểm này thì khoa Kinh tế sẽ đào tạo tốt về mặt ứng dụng ML hơn khoa IT do học hiểu business model nhiều hơn. Khoa IT thì sẽ tập trung vào nghiên cứu cải tiến thuật toán và những phát hiện mới trong khai thác dữ liệu. Xu hướng phối hợp liên ngành sẽ được đẩy nhanh, kết hợp giữa IT, Toán, Vật lý, Hoá học, Y học, Giao thông vận tải, Thiên văn, Sinh học, … là những bước đà vững chãi cho ngành công nghiệp 4.0 này.

      Thích

  28. Em chào anh,

    Em follow blog của anh cũng khá lâu rồi ạ. Em học được rất nhiều.

    Hôm nay em muốn hỏi vấn đề này 1 chút: hiện tại em muốn identify người dùng và recommend các services dựa trên history sử dụng dịch vụ và các conversation với người dùng thì em nên tiếp cận thế nào ạ.

    Cảm ơn anh nhiều.

    Thích

    1. Đây là bài toán recommender system. Em cần build tập training theo một trong hai thướng tiếp cận hoặc kết hợp cả hai: Collaborative filtering, Content-based filtering.
      Identify người dùng ở đây sẽ cluster những người có hành vi tương tự và có xu hướng sử dụng dịch vụ nào của bạn.
      History thì vô số, nên ban đầu bạn giới hạn bài toán lại classify 1 dịch vụ mà bạn đang muốn cung cấp sau đó nâng dần lên thành 2…n dịch vụ khác.

      Thích

      1. Em cảm ơn anh nhiều ạ. Tuy nhiên, use case cuả em nhỏ quá, em đang consider về hệ thống này. Anh có thể cho em hỏi, hiện tại có thể speaker verification được chưa anh, ý em là công nghệ hiện tại vì em ít thấy các hệ thống này xuất hiện, trừ các hệ thống security sinh trắc lớn. Em đang nghĩ liệu có thể áp dụng AI vào speaker verification không, khác với cách làm truyền thống. Cảm ơn anh nhiều ạ.

        Thích

  29. Xin chào bạn.
    Mình có 1 câu hỏi muốn hỏi về PLS-DA (partial least square discriminant analysis) model dùng để phân loại 2 nhóm khác nhau. Mình sử dụng R và package “caret”. Sau khi chạy xong, kết quả chạy trả về 3 components (kèm coeficient cho từng component), và scores cho từng observation.
    Mình muốn hỏi làm thế nào có thể tính được scores cho observation đó. Hay nói cách khác, công thức tính scores cho từng observation. Mình không thể tìm được tài liệu nào chỉ ra cách tính đó.
    Ngoài ra, mình cũng không hiểu cách tính evaluation criteria để phân loại các nhóm sau khi đã có scores của từng observation cho mỗi component. Hi vọng bạn có thể giải đáp giúp mình.
    Cảm ơn bạn/

    Thích

      1. Cảm ơn bạn đã trả lời.
        Mình muốn hỏi khi giá trị Y là categorical. Trong trường hợp của mình, có khoảng hơn 100 observations, được phân loại ra 2 nhóm khác nhau, sử dụng 12 variables. Dựa trên data trên, mình muốn xây dựng mô hình PLS-DA để dự đoán những observations mới xem thuộc nhóm nào. Theo như mình hiểu, PLS-DA là mô hình dựa trên latent variables (tức thay bằng dùng 12 variables, sẽ dùng số latent variables thích hợp). Nhưng do giá trị Y là 1 categorical nên mình vẫn chưa hiểu rõ cách tính giá trị Y như thế nào. Ngoài ra, khi có 1 observation mới, dựa vào tiêu chí nào để dự đoán observation đó thuộc nhóm nào. (trường hợp của mình là
        xây dựng mô hình và xác định thuốc giả và thuốc thật có mặt trên thị trường)
        Khi mình chạy R, sẽ cho kết quả trả về luôn observation mới thuộc nhóm nào dựa vào mô hình đã xây dựng. Nhưng mình không hiểu bản chất của thuật toán nên khi làm cảm thấy rất khó chịu.
        Mình không phải dân chuyên về data analysis, chỉ là nghiên cứu khoa học cơ bản nên khi cần xử lí data vẫn hơi mơ hồ. Mong bạn chỉ giáo và giải thích giúp mình.

        Thích

        1. Nếu Y là categorial bạn có thể gán nhãn là 0,1 bình thường như các bài toán classification.
          Để hiểu rõ thuật toán thì bạn cần cài đặt từ đầu (không dùng thư viện) và debug từng dòng.
          Về ý tưởng thì PLS-DA khá giống PCA đó là giảm số chiều dữ liệu bằng cách ánh xạ tập X,Y vào không gian mới có các chiều dữ liệu càng độc lập tuyến tính với nhau càng tốt.
          Bài viết gốc về PLS-DA https://www.researchgate.net/profile/Ml_Barker/publication/227509219_Partial_Least_Squares_For_Discrimination_Journal_of_Chemometrics/links/5564ffe008ae06101abe0040.pdf

          Thích

  30. Em đã đọc khá nhiều bài trong blog của anh. Tuy chưa hấp thu được nhiều nhưng lại đưa lại rất nhiều cảm hứng học tập. Anh có thể góp ý nhanh cho em hoặc viết một blog về sự khác nhau –
    giống nhau giữa AI là ML được không ạ, em cảm ơn.

    Thích

  31. Hi anh,

    Em mới đi làm được khoảng 1 năm, hiện đang làm trong mảng rủi ro CNTT. Em cũng muốn được phát triển thêm trong Data Analysis mà em lại không có nhiều background về IT cũng như coding. Em đang nghiên cứu các khóa học Python online. Anh có kinh nghiệm nào có thể chia sẻ về DA được không ạ? Ví dụ như nên học thế nào, học programming language nào?

    Thanks anh!

    Thích

    1. Hi em,
      Làm DA em nên tập trung vào các kĩ năng sau:
      – Statistics (basic metrics, bayes theory, hypothesis testing, visualization, exploratory analysis)
      – Excel for statistics
      – Python programing: numpy, pandas, pyspark.
      – SQL, NoSQL query language.
      Khoá học thì có thể học trên Lynda.com, Udemy hay Coursera tuỳ sở thích và túi tiền của mình.
      Còn lại thì tuỳ thuộc vào yêu cầu của công ty mà em có thể lập trình xây dựng report từ back-end đến front-end của hệ thống như xuất ra nhiều định dạng CSV, Excel, SQL, … Show các chart, biểu đồ và thống kê cho KPIs mà công ty mong muốn theo dõi hàng ngày.

      Thích

  32. chào bạn. Mình đã đọc qua các bài viết AI trên blog của bạn. Mình có một số câu hỏi, bạn có thể bớt chút thời gian support mình không ? .Mình muốn hỏi là nếu hiện giờ muốn làm 1 con chat bot để tư vấn sản phẩm cho khách hàng thì ngoài việc chuẩn bị các kiến thức về AI, thì hiện tại đang có những solution nào (những framework nào, những tool nào),mức độ chính xác và mức độ support của từng framework/tool đó như thế nào ? và nếu làm một con bot như vậy thì tốn khoảng bao lâu về mặt thời gian đối với một người đã nắm được các kỹ thuật AI + deeplearning như bạn ?

    Thích

    1. Chào bạn, mình không làm về chat bot nhưng cũng xin chia sẻ một vài thông tin để bạn tham khảo nhé.

      Framework VN
      http://hekate.ai
      https://www.ibm.com/watson/
      https://fpt.ai

      Tools
      – JVnTextPro: http://sourceforge.net/projects/jvntextpro/
      – VnToolkit: http://www.loria.fr/~lehong/softwares.php
      – VLSP Tools: http://vlsp.vietlp.org:8080/demo/?page=resources
      – NLTK: http://www.nltk.org/
      – OpenNLP: http://opennlp.apache.org/
      – Conditional random fields (CRF) http://crf.sourceforge.net/

      Độ chính xác tuỳ vào các bước tiền xử lý TV (phân đoạn từ, phân tích cú pháp, NER, relation extraction) và tập dữ liệu bạn huấn luyện cho từng mục đích và từng closed domain (intent identify, information retrieval, dialog management, …).
      Thời gian xây dựng: khoảng 1-10 ngày cho các hướng tiếp cận keyword/response matching, khoảng 1-2 tháng cho việc thu thập dữ liệu và gán nhãn hội thoại. Nếu là closed domain thì bạn có thể theo hướng 1 và update tri thức cho chatbot này.

      Tham khảo thêm:
      https://tech.fpt.com.vn/3-van-de-nlp-co-ban-khi-phat-trien-mot-thong-chatbot-va-mot-phuong-phap-giai-quyet-dien-hinh/
      https://tech.fpt.com.vn/bot-viet-co-hoi-danh-cho-nguoi-viet/
      https://tech.fpt.com.vn/khai-quat-cac-bai-toan-xu-ly-ngon-ngu-tu-nhien-trong-phat-trien-thong-chatbot/

      Thích

  33. Dạ em chào anh ạ, kì này em có làm về ngôn ngữ tự nhiên, là về phân tích cảm xúc trong câu ạ, thầy có gợi ý cho em là dùng thuật toán CNN, anh có thể tư vấn cho em hướng đi kèm tài liệu được không ạ? rất mong hồi âm sớm từ anh.

    Thích

  34. Chào bạn Hồng
    Mình hiện là full stack web developer mình rất yêu thích làm web.
    Bạn cho mình hỏi với skill web như hiện tại mình muốn lấn tới chuyển sang làm 1 Data Engineer thì phải bắt đầu từ đâu.Bạn có thể cho mình 1 cái road map củ thể chút thì quá tốt.Mong bạn hồi âm sớm.

    Thích

  35. Dear anh,
    Đầu tiên rất cảm ơn anh vì đã làm ra blog này và những bài viết rất tuyệt vời. Hiện em đang muốn học tập phát triển theo hướng Data Analyst => Data Scientist thì em cần có những kỹ năng gì? Hiện nay liên quan đến phân tích dữ liệu thì em đã biết 1 số thứ như dưới:
    – Ngôn ngữ: Java, Python (Bắt đầu học)
    – Database: Oracle,MySQL( tốt)
    – Công cụ phân tích,hiển thị và xử lý dữ liệu: Tableau, Birt Report, Pentaho Data Intergration (Có kinh nghiệm, kỹ năng khá).
    Chúc anh mạnh khỏe và mong sớm nhận được anh giúp đỡ. Một lần nữa cảm ơn anh!

    Thích

    1. Hi em, kỹ năng như vậy là rất tốt.
      Anh nghĩ em nên tham gia vào các cuộc thi trên Kaggle để tìm hiểu thêm về Feature engineering, cách quản lý một project cũng như học thêm các thuật toán Machine Learning có độ chính xác cao hiện nay như XGBoost, Deep Learning nhé.

      Thích

  36. Chào anh Hồng,

    Em đang chân ướt chân ráo tìm hiểu về Data Science và Machine Learning, vừa mới biết đến blog này của anh. Không biết anh có còn tiếp tục viết blog này không.
    Cảm ơn anh đã chia sẻ kinh nghiệm và kiến thức!

    Thích

Bình luận về bài viết này