Trong quá khứ, khi bắt đầu nghiên cứu một vấn đề nào đó, ta thường phải tìm kiếm hay thu thập dữ liệu tương ứng với bài toán mà ta đề ra. Nhờ có tiến bộ của internet mà ngày nay ta được tiếp cận với nhiều thông tin hơn, đến nỗi quá nhiều, quá Big khiến cho vấn đề không còn nằm ở chỗ thiếu thông tin nữa mà là làm sao rút trích được những thông tin hữu ích và súc tích nhất cho câu hỏi ban đầu.
Khi đó ta thường đối mặt với những thách thức về dữ liệu như:
- Làm sao tìm được dữ liệu cho bài toán của mình?
- Phân tích dữ liệu thu thập được như thế nào?
- Sau khi phân tích, ta có thể đưa ra được kết luận thú vị nào không cho bài toán đề ra?
Mặc dù mỗi lĩnh vực nghiên cứu khác nhau sẽ có những đòi hỏi và mục tiêu khác nhau, nhưng nhìn chung, ta có thể áp dụng cùng một phương pháp hữu ích như tôi sắp trình bày bên dưới để có thể tiến hành một quy trình phân tích dữ liệu thành công.
Đặt vấn đề

Giống như đi thi Đại học, bước quan trọng trước khi giải bất kỳ một bài toán nào đó là đọc hiểu đề bài. Nếu không hiểu đề bài, bạn sẽ bị lạc đề và tốn rất nhiều thời gian vô ích. Điểm khác biệt khi đi làm thực tế đó là vấn đề đặt ra thường rất mơ hồ. Ví dụ như, tôi muốn áp dụng machine learning vào ứng dụng của mình để khiến cho người dùng luôn “happy”. Trong nghiên cứu, ngoài những chân lý bất biến thì mọi sự việc không thể nào “luôn luôn” xảy ra được, ta cần định lượng rõ một mức độ chấp nhận được để ta có thể nhắm đến. Và “happy” ở đây phải tuỳ theo ngữ cảnh, ví dụ như “happy” đối với game thủ thì như thế nào, “happy” đối với những người nội trợ thì ra sao, “happy” đối với dân công sở thường gồm những gì, …
Người thành công là người biết đặt vấn đề và giải quyết vấn đề. Ví dụ ngày xưa ta đi xe ngựa và không đặt vấn đề có cách nào đi nhanh hơn không thì ta sẽ mãi mãi không có xe hơi.
Do vậy, để có thể đưa ra những câu trả lời đúng, bạn cần đặt ra những câu hỏi đúng. Bạn có thể vận dụng phương pháp 5W1H để đặt câu hỏi (ai, ở đâu, khi nào, tại sao, cái gì, như thế nào).
Thu thập dữ liệu

Nếu bạn đã có sẵn dữ liệu thì việc bạn cần làm là hiểu được dữ liệu đang có. Dữ liệu thường đến từ quá trình ghi chép thử nghiệm, công tác kinh doanh, hay từ các ứng dụng người dùng. Vì vậy, bạn có thể tìm hiểu xem dữ liệu được thu thập từ đâu, bằng phương pháp nào, mức độ tin cậy bao nhiêu. Thêm vào đó, không phải dữ liệu nào cũng dùng được, đây là mấu chốt quan trọng. Bạn thường tự hào khi có Big Data, nhưng không có nghĩa mọi thứ bạn đều có thể sử dụng được. Bạn cần chọn lọc ra những mẫu dữ liệu có ý nghĩa cho bài toán của mình. Ví dụ như, tôi cần những cột dữ liệu nào trong bảng tính 100 cột như vậy, tập dữ liệu này so với tập dữ liệu còn lại có thừa hay thiếu thông tin gì không, những mẫu dữ liệu này có điểm chung là gì, có thể giới hạn mẫu dữ liệu lại không?
Ngược lại, nếu dữ liệu chưa có, bạn phải đi thu thập. Đầu tiên, bạn cần chọn cho mình một phương pháp thu thập dữ liệu như lấy ý kiến người dùng (survey), gọi điện hỏi trực tiếp, trắc nghiệm online, đánh nhãn dữ liệu, đánh nhãn tự động hay tìm kiếm dữ liệu những người đi trước có cùng nghiên cứu với mình. Tiếp theo, bạn cần nghĩ và thiết kế giải thuật tương ứng với dữ liệu thu thập được để có thể đưa ra các câu trả lời thích hợp. Điều quan trọng cuối cùng, bạn cần theo sát các nguyên tắc thống kê trong nghiên cứu để có thể thu thập dữ liệu có độ tin cậy cao.
Phân tích dữ liệu

Sau khi đã có đầy đủ dữ liệu cần thiết, trước khi sử dụng, bạn cần nghĩ đến làm sạch dữ liệu. Làm sạch dữ liệu là một bước quan trọng để cải thiện chất lượng dữ liệu đầu vào “garbage in, garbage out”.
Đồng thời bạn cũng cần thiết kế mô hình dữ liệu liên quan đến dữ liệu mà doanh nghiệp bạn cần đầu ra. Ví dụ, nếu quyết định của doanh nghiệp dựa vào các độ đo về hiệu xuất, bạn cần chọn đúng các số đo (metrics) để định lượng, định tính nhờ vậy có thể dễ dàng giải thích hơn.
Sử dụng công cụ phân tích

Việc lựa chọn và sử dụng công cụ phù hợp cho phân tích dữ liệu giúp bạn giảm tải được các bước xử lý phức tạp cũng như tiết kiệm thời gian trong quá trình phân tích. Ví dụ, bạn có thể sử dụng excel, hay libre calc để xử lý những mẫu dữ liệu nhỏ, những phần mềm này đã tích hợp sẵn nhiều công cụ phân tích giúp bạn kiểm chứng nhanh mô hình hay brainstorming idea cho các bước phân tích tiếp theo. Hay bạn nên sử dụng database với ngôn ngữ SQL để truy vấn và phân tích dữ liệu lớn hơn, hay sử dụng các công cụ phân tích thống kê phức tạp hơn để trả lời các câu hỏi phức tạp như mô hình dự đoán xu hướng phát triển.
Show kết quả

Trước khi trình bày kết quả phân tích của mình, bạn cần hiểu thông điệp mình muốn truyền tải cho người nghe là gì. Ví dụ như các mối quan hệ giữa các lược đồ, so sánh, kết hợp hay phân bố như thế nào?
Các bước show hình minh hoạ cần hướng đến thông điệp ban đầu bạn muốn chứng minh. Ví dụ, scatter plot hay maps dùng để show phân bố của dữ liệu, line charts thì tốt cho biểu diễn quan hệ, pie chart thích hợp khi bạn muốn truyền tải sự kết hợp, và column charts, bar charts hay line charts có thể được dùng để so sánh.
Dưới đây là một số lời khuyên nhỏ
Chúng ta đều biết rằng làm việc với dữ liệu không phải là một việc đơn giản. Nó đòi hỏi thời gian, sự nhẫn nại, sự chính xác, tài năng, óc phân tích cũng như năng lực vốn có trong quá trình rèn luyện của mỗi người. Tuy nhiên, dần dần theo năm tháng bạn sẽ dần rút ra cho mình được nhiều kinh nghiệm hơn và tự tin hơn trong sự nghiệp của mình. Hãy kiên trì bạn nhé, bước đi đầu tiên lúc nào cũng khó khăn nhất.
Đừng cố phân tích tất cả mọi thứ. Lợi ích lớn nhất mà Big Data mang lại cho chúng ta không phải là kích thước dữ liệu khổng lồ của nó mà là sự đa dạng. Bạn không nhất thiết phải phân tích mọi thứ bên trong nó, lời khuyên là bạn chỉ cần đảm bảo dữ liệu bạn rút trích ra liên quan đến bài toán của bạn mà thôi và tập dữ liệu này thường nhỏ hơn tập dữ liệu bạn muốn phân tích ban đầu.

Thân gửi bạn Hồng,
Cảm ơn bạn vì đã tạo ra một blog rất hữu ích trong lĩnh vực phân tích dữ liệu. có thể nói trong blog này có rất nhiều tài liệu hết sức hữu ích và thú vị!
Mình có một câu hỏi muốn nhờ bạn tư vấn giúp. Câu hỏi của mình là dùng thuật toán gì để trả lời bài toán phân nhóm dữ liệu như sau:
Mình có một tập dữ liệu khách hàng (khoảng 60k observations và 60 trường dữ liệu). Trong đó có một số khách hàng đã rời bỏ công ty, một số khách hàng thì đang sử dụng nhiều hơn một dịch vụ với công ty. Bài toán của mình là xác định được khách hàng nào có khả năng rời bỏ công ty và khách hàng nào có khả năng sử dụng thêm dịch vụ để mình có chiến lược marketing phù hợp.
Rất mong bạn trả lời giúp mình.
Trân trọng cảm ơn!
Kim
ThíchThích
Hi Kim,
Cảm ơn bạn đã ủng hộ blog của mình.
Để phân nhóm (phân lớp) dữ liệu, bạn có thể áp dụng các thuật toán đơn giản sau:
Bạn có thể tham khảo ví dụ bên dưới:
Đối với dữ liệu khách hàng, bạn tiến hành rút trích mẫu dữ liệu (khoảng 20-30%), sau đó gán nhãn cho từng mẫu dữ liệu này (rời bỏ/không rời bỏ). Các thuật toán mình gợi ý đều trả về một giá trị xác suất 0-100%. Bạn có thể dựa vào đây để chọn ngưỡng quyết định của mình. Ví dụ, giá trị trả về có khả năng rời bỏ phải trên 70% mới quyết định cho vào lớp rời bỏ.
ThíchThích
Cảm ơn bạn nhiều! Xin lỗi bạn vì mình ko quen dùng wordpress nên hôm nay mới biết là bạn đã trả lời.
Mình đã dùng các thuật toán này cho classification cases, nhưng ko biết đến tính năng phân loại theo tỉ lệ giống nhau ở một threshold nào đó như bạn hướng dẫn. Trong weka, ngưỡng này đặt được ở đâu bạn nhỉ? Mình sẽ tìm tòi thử xem như thế nào. Mình hiện nay đang dùng SAS là chính.
Sau khi thử nghiệm, mình sẽ phản hồi lại bạn nhé.
Cảm ơn bạn nhiều!
ThíchThích
Hi bạn,
Mình cũng là dân IT, chuyên lập trình Server + mobile. đại khái là phát triển theo theo yêu cầu của nhà start-up dự án. Mình cảm nhận thấy các dự án chạy một cách cô lập vô vị, khả năng tự tương tác không cao.
Sau một thời gian làm việc thì mình thấy cần thiết để nghiên cứu BigData để phát triển nghề nghiệp, đồng thời mính muốn nâng cấp sản phẩm mình làm ra trên nền tảng big data, bởi vì mình biết chỉ có thiết kế hệ thống theo hướng thu thập học hỏi thì hệ thống mới đủ thông minh giải quyết nhiều vấn đề trong cuộc sống. khả năng tối ưu hoá cho hệ thống sẽ cao hơn, đồng thời hạn chế nhiều ruổi ro hơn.
Mình chỉ có vấn đề này cần confirm với bạn để có thông tin xác định bước tiếp theo mình sẽ nên làm gì:
– Mình hiện là lập trình viên, cử nhân đại học khtn(khoa công nghệ phần mêm). Có cần phải học thêm bằng cấp nào không? để sau này nếu có thể apply vào những congty chuyên về big data, nơi mà họ yêu cầu cao về bằng cấp. Dĩ nhiện mình đang đề cập về cơ hội nghề nghiệp.
– Nếu học thêm những thứ đó thì mình sẽ học ở đâu là phù hợp và chuyên nghành mình nên đi theo? để phục vụ cho chuyên môn về big data.
– Còn nếu mình chỉ tự nghiên cứu thôi, thì cơ hội để làm việc sẽ như thế nào cho chuyên môn này với bằng cấp mình có hiện tại.
Thanks bạn về những topic này. Hy vọng bạn sẽ còn nhiều đóng góp hơn và nhiều bài viết hữu ích cho cộng đồng hơn nũa!
Thank Bạn,
ThíchThích
Chào bạn,
– Có cần phải học thêm bằng cấp nào không? Không. Nếu làm Big Data thì bạn cần có kinh nghiệm làm việc với các hệ thống Big Data là OK. Đây là danh sách một số công nghệ mình đang làm https://ongxuanhong.wordpress.com/2017/02/13/thao-tac-voi-cac-cong-nghe-big-data/. Vị trí này thường có tên là System admin/Data engineer.
– Nếu học thêm những thứ đó thì mình sẽ học ở đâu là phù hợp và chuyên nghành mình nên đi theo? để phục vụ cho chuyên môn về big data. Bạn có thể học và lấy chứng chỉ online tại Udacity hoặc Amazon https://aws.amazon.com/certification/our-certifications/. Riêng Amazon thì công ty mình đã có nhiều bạn lấy được chứng chỉ cũng là cách khẳng định bản thân nhưng quan trọng vẫn là kinh nghiệm làm việc.
– Còn nếu mình chỉ tự nghiên cứu thôi, thì cơ hội để làm việc sẽ như thế nào cho chuyên môn này với bằng cấp mình có hiện tại. Vẫn OK bạn, điều quan trọng là bạn có cơ hội làm việc với các công nghệ Big Data hay không thôi. Khi cơ hội đến, bạn có thể bắt đầu ứng dụng những gì mình đã học vào sản phẩm của mình.
Chúc bạn thành công
ThíchThích
Dear Anh,
Hiện tại em đang làm tư vấn cho một dự án Fintech về nghiệp vụ Banking, dự án cụ thể trước mắt là chấm điểm scorecard dựa trên 2 tệp dữ liệu Telcos ( dùng để predict khách hàng có mức độ rủi ro thấp hay cao ) và dữ liệu G/B của Bank ( do em định nghĩa dự trên tổng thu nhập từ khách hàng, giá trị khoản vay, tình trạng nợ quá hạn v…v). Cụ thể:
– Với tệp dữ liệu Telcos: bên công nghệ có đưa ra một số feature mà theo họ có hệ số IV cao ( theo em hiểu là có ý nghĩa khi học máy ) như tuổi đời thuê bao, số dư trung bình, tỷ lệ sử dụng dịch vụ VAS …..
– Với tếp dữ liệu Bank : thì em sẽ cung cấp 2 trường số điện thoại và gắn nhãn G/B để map với dữ liệu Telcos
Theo như cách hiểu của em về AI thì hệ thống này sẽ chạy để tìm ra những KH trong tập dữ liệu Telcos có đặc tính tương ứng với những đặc tính của của cũng những khách hàng được gán nhãn G/B để từ đó có thể đưa ra điểm Scorecard. Nhưng thực sự em thấy hơi mông lung vì dữ liệu sử dụng dịch vụ Telcos của Kh lại có thể có liên quan tới hành vi về tín dụng, thực sự là nó vi diệu đến vậy ???? Ví dụ những khách hàng G thì thường sẽ có thuê bao lâu năm, rồi tỷ lệ sử dụng dịch vụ nhiều v…v còn những KH Bad thì thông thường sử dụng rất nhiều dịch vụ VAS giải trí, rồi thường xuyên gọi điện buổi đêm ( lịch sinh hoạt không bình thường ) v…v.
Nhờ anh có thể làm rõ cho em trong trường hợp này để em có thể hiểu kỹ hơn về cách thức hoạt động của hệ thống AI.
Cảm ơn anh nhiều ./.
ThíchThích
Hi em,
Họ sẽ join 2 thông tin Telco và Bank lại mới biết được KH là G/B dựa trên mobile number. Telco sẽ cho em biết về hành vi, Bank sẽ cho em biết nhãn G/B. Còn pattern như em đề cập có thể dùng Decision tree để rút ra.
ThíchThích
cảm ơn anh,
nhưng ý em là với những đặc trưng của Telco được học lại từ tập mãu G/B của bank mà có thể predict ra phần thuê bao còn lại sẽ có điểm scorecard G/B thế nào ah. Em hỏi vậy vì em cảm giác hai hành vi không liên quan lắm. Một cái là hành vi tín dụng , một cái là hành vi liên quan tới thuê bao điện thoại?
ThíchThích
Đầu tiên, em nên hiểu tại sao ta cần auto scoring? Lý do là nhà bank chỉ cấp credit card cho những trường hợp có rủi ro thấp. Họ sẽ yêu cầu các thông tin mà những người vay nóng không mong muốn cung cấp như: nghề nghiệp, hộ khẩu, số dư tài khoản, sao kê 6 tháng gần đây. Làm như vậy, nhà bank chỉ cover được 20% dân số, để mở rộng dịch vụ credit cho nhiều người hơn họ cần cho những người này vay bằng cách chấp nhận rủi ro cao hơn.
Nhưng nhờ có dữ liệu bên Telco, họ sẽ giảm được rủi ro này xuống thấp nhất có thể. Bằng cách khai thác pattern giữa Banking kết hợp với Telco ta sẽ biết được người như thế nào thì là Good/Bad. Như vậy, khi một người bất kỳ gửi số di động lên yêu cầu lập credit card. Nhà bank không cần hỏi các thông tin trên nhưng vẫn biết chính xác con người này là như thế nào để có thể ra quyết định cho vay hay không và lấy lãi bao nhiêu cho từng trường hợp.
ThíchThích
Em cảm ơn anh 🙂
ThíchThích
E cám ơn blog của anh . Anh cho em xin hỏi e đang làm về đề tài phân tích khí bụi bặm của thành phố bằng big data .. E đã có các số liệu file bằng excel nhưng bây giờ không biết phân tích như nào nếu dùng raspberry pi có được không ạ??
ThíchThích
raspberry pi là thiết bị điện tử mà em? để phân tích dữ liệu đầu tiên em cần có câu hỏi và nhờ dữ liệu để làm rõ phần em đang tìm hiểu như: check data type, bao nhiêu sample, bao nhiều dữ kiện, visualize dữ liệu để quan sát, … Sau đó, mới coding để embed vào các thiết bị điện tử.
ThíchĐã thích bởi 1 người
Thưa anh Hồng,
Em là Thành, em đang làm một đề tài nghiên cứu liên quan về dữ liệu lớn, Anh cho em xin hỏi một 02 câu:
1. Tại sao trước khi phân tích dữ liệu cần hiểu rõ kiểu dữ liệu?
2. Tại sao khi đánh giá phân tích dữ liệu, ta thường chia tập dữ liệu ra thành hai phần gồm “dữ liệu huấn luyện” (training data) và “dữ liệu đánh giá” (testing data), và hai tập này phải không có phần tử chung.
Rất mong được sự hỗ trợ từ anh, Em cảm ơn.
ThíchThích
hi em,
1. Kiểu dữ liệu khác nhau sẽ có những phép tính và biểu diễn khác nhau (số có thể +-*/ được, text thì có thể đếm được, các biểu đồ phân tích tương ứng theo các kiểu này etc)
2. Machine learning (ML) cơ bản: mô hình học cần phải có tính tổng quát (generalization), có thể dự đoán được dữ liệu mới (unseen data), tập train cần tách biệt với tập test để mô phỏng được dữ liệu trong tương lai cần dự đoán.
ThíchThích
hi anh,
Em nhờ anh tư vấn giúp em vấn đề này với ạ. Hiện em đang muốn học các mô hình/thuật toán để áp dụng cho công việc phân tích dữ liệu KH, dự đoán nợ xấu thì em có thể tham khảo những mô hình/hay thuật toán nào ạ (em làm cho công ty tài chính tiêu dùng thì dữ liệu sẵn có của em bao gồm: giới tính, độ tuổi, tình trạng hôn nhân, thu nhập, sản phẩm KH mua, hoặc lịch sử tín dụng của KH).
Tks anh nhiều ạ.
ThíchThích
em có thể bắt đầu với decision tree nhé
ThíchThích
tks anh nhiều ạ ❤
ThíchThích