paint-brush
Kết nối dữ liệu dựa trên sự kiện với AI dự đoán trong thời gian thựctừ tác giả@datastax
605 lượt đọc
605 lượt đọc

Kết nối dữ liệu dựa trên sự kiện với AI dự đoán trong thời gian thực

từ tác giả DataStax8m2023/06/12
Read on Terminal Reader

dài quá đọc không nổi

Tìm hiểu về một khái niệm trừu tượng mới cho dữ liệu dựa trên sự kiện được gọi là mốc thời gian - một cách tự nhiên để trích xuất dữ liệu từ loại dữ liệu này.
featured image - Kết nối dữ liệu dựa trên sự kiện với AI dự đoán trong thời gian thực
DataStax HackerNoon profile picture
0-item
1-item

Trong thập kỷ qua, sự phát triển và thành công của học máy là một hiện tượng, chủ yếu được thúc đẩy bởi lượng dữ liệu khổng lồ sẵn có và sức mạnh tính toán tiên tiến. Sự gia tăng đột biến này được tạo ra bởi quá trình số hóa các lĩnh vực khác nhau, dẫn đến sự bùng nổ dữ liệu kỹ thuật số—mọi thứ từ các bài đăng trên mạng xã hội đến các giao dịch trực tuyến và dữ liệu cảm biến.


Những tiến bộ trong kỹ thuật học máy, đặc biệt là học sâu, đã tạo điều kiện cho sự phát triển của các mô hình phức tạp và linh hoạt hơn. Do đó, các ứng dụng học máy đã trở nên phổ biến, góp phần nâng cao hiệu quả và khả năng trong nhiều lĩnh vực, bao gồm chăm sóc sức khỏe, tài chính và vận tải.


Làm việc với lượng dữ liệu dựa trên sự kiện khổng lồ này và thu được giá trị từ bản thân các sự kiện và bối cảnh của chúng theo thời gian – các sự kiện khác xảy ra gần đó – vẫn còn khó khăn. Làm như vậy theo cách thời gian thực hoặc phát trực tuyến vẫn khó hơn. Bạn thường phải sử dụng các API cấp thấp, phức tạp hoặc giải quyết các hạn chế của ngôn ngữ truy vấn cấp cao hơn được thiết kế để giải quyết các vấn đề rất khác nhau, chẳng hạn như SQL.


Để giải quyết những thách thức này, chúng tôi giới thiệu một khái niệm trừu tượng mới cho dữ liệu dựa trên thời gian, được gọi là mốc thời gian. Các mốc thời gian sắp xếp dữ liệu theo thời gian và thực thể, cung cấp một cấu trúc lý tưởng cho dữ liệu dựa trên sự kiện với một mô hình tinh thần đồ họa, trực quan. Các mốc thời gian đơn giản hóa lý luận về thời gian bằng cách sắp xếp mô hình tinh thần của bạn phù hợp với miền vấn đề, cho phép bạn tập trung vào những gì cần tính toán, thay vì cách thể hiện nó.


Trong bài đăng này, chúng tôi trình bày các mốc thời gian như một cách tự nhiên để tổ chức dữ liệu dựa trên sự kiện và trích xuất giá trị – trực tiếp và làm đầu vào cho máy học và kỹ thuật nhanh chóng. Chúng tôi đi sâu vào khái niệm dòng thời gian, sự tương tác của nó với các kho lưu trữ dữ liệu bên ngoài (đầu vào và đầu ra) và vòng đời của các truy vấn sử dụng dòng thời gian.


Bài đăng này là bài đầu tiên trong loạt bài về Kaskada , một công cụ xử lý sự kiện nguồn mở được thiết kế dựa trên sự trừu tượng hóa dòng thời gian. Chúng ta sẽ theo dõi phần giải thích về cách Kaskada xây dựng ngôn ngữ truy vấn thời gian biểu cảm trên trừu tượng dòng thời gian, cách mô hình dữ liệu dòng thời gian cho phép Kaskada thực hiện hiệu quả các truy vấn thời gian và cuối cùng là cách các dòng thời gian cho phép Kaskada thực hiện tăng dần qua các luồng sự kiện.

Ý nghĩa của thời gian

Việc xử lý nhiều sự kiện khác nhau rất khó khăn khi coi mỗi loại sự kiện là một bảng dữ liệu riêng biệt, không có thứ tự – theo cách mà SQL nhìn nhận thế giới. Thật khó hiểu điều gì đã thúc đẩy Carla mua hàng hoặc điều gì đã khiến Aaron tương tác với những người dùng khác qua tin nhắn.


Bằng cách tổ chức dữ liệu – theo thời gian và người dùng – việc phát hiện các mẫu trở nên dễ dàng hơn nhiều. Aaron gửi tin nhắn sau khi chiến thắng. Carla mua hàng khi thất vọng vì thua lỗ hàng loạt. Chúng tôi cũng thấy rằng Brad có thể đã ngừng chơi.

Bằng cách tổ chức dữ liệu – theo thời gian và người dùng – việc phát hiện các mẫu trở nên dễ dàng hơn nhiều. Aaron gửi tin nhắn sau khi chiến thắng. Carla mua hàng khi thất vọng vì thua lỗ hàng loạt. Chúng tôi cũng thấy rằng Brad có thể đã ngừng chơi.


Bằng cách tổ chức các sự kiện theo cách tự nhiên – theo thời gian và người dùng – chúng tôi có thể xác định các mẫu. Cách tổ chức tương tự này cho phép chúng tôi thể hiện các giá trị tính năng được tính toán từ các sự kiện và sử dụng các giá trị đó để đào tạo cũng như áp dụng các mô hình máy học hoặc các giá trị tính toán để sử dụng trong lời nhắc.

Trừu tượng dòng thời gian

Suy luận về thời gian – ví dụ, nguyên nhân và kết quả giữa các sự kiện – đòi hỏi nhiều hơn là một tập hợp dữ liệu sự kiện không có thứ tự. Đối với các truy vấn thời gian, chúng ta cần đưa thời gian vào như một phần hạng nhất của sự trừu tượng hóa. Điều này cho phép lập luận về thời điểm một sự kiện xảy ra và thứ tự – và thời gian – giữa các sự kiện.


Kaskada được xây dựng dựa trên sự trừu tượng hóa dòng thời gian: nhiều tập hợp được sắp xếp theo thời gian và được nhóm theo thực thể. Các mốc thời gian có hình ảnh tự nhiên, được hiển thị bên dưới. Thời gian được hiển thị trên trục x và các giá trị tương ứng trên trục y. Xem xét các sự kiện mua hàng từ hai người: Ben và Davor. Chúng được hiển thị dưới dạng các điểm rời rạc phản ánh thời gian và số lượng mua hàng. Chúng tôi gọi đây là các mốc thời gian rời rạc vì chúng đại diện cho các điểm rời rạc.


Trục thời gian của dòng thời gian phản ánh thời gian của kết quả tính toán. Ví dụ: tại bất kỳ thời điểm nào, chúng tôi có thể hỏi "tổng của tất cả các giao dịch mua là bao nhiêu?" Các tập hợp trên các mốc thời gian được tích lũy – khi các sự kiện được quan sát, câu trả lời cho câu hỏi sẽ thay đổi. Chúng tôi gọi đây là các mốc thời gian liên tục vì mỗi giá trị tiếp tục cho đến lần thay đổi tiếp theo.

So với SQL, các mốc thời gian đưa ra hai yêu cầu: sắp xếp theo thời gian và nhóm theo thực thể. Trong khi quan hệ SQL – một tập hợp nhiều tập hoặc túi không có thứ tự – rất hữu ích cho dữ liệu không có thứ tự, thì các yêu cầu bổ sung về các mốc thời gian làm cho chúng trở nên lý tưởng để lập luận về nguyên nhân và kết quả. Các mốc thời gian là dữ liệu tạm thời, mối quan hệ nào là dữ liệu tĩnh.


Việc thêm các yêu cầu này có nghĩa là các mốc thời gian không phù hợp với mọi tác vụ xử lý dữ liệu. Thay vào đó, chúng cho phép các mốc thời gian phù hợp hơn cho các tác vụ xử lý dữ liệu hoạt động với các sự kiện và thời gian. Trên thực tế, hầu hết các luồng sự kiện (ví dụ: Apache Kafka, Apache Pulsar, AWS Kinesis, v.v.) đều cung cấp thứ tự và phân vùng theo khóa.


Khi nghĩ về các sự kiện và thời gian, bạn có thể đã hình dung ra một thứ gì đó giống như dòng thời gian. Bằng cách khớp với cách bạn đã nghĩ về thời gian, các mốc thời gian đơn giản hóa lý luận về các sự kiện và thời gian. Bằng cách xây dựng các yêu cầu về thời gian và thứ tự, trừu tượng hóa dòng thời gian cho phép các truy vấn thời gian thể hiện nguyên nhân và kết quả một cách trực quan.

Sử dụng các mốc thời gian cho các truy vấn tạm thời

Các mốc thời gian là khái niệm trừu tượng được sử dụng trong Kaskada để xây dựng các truy vấn tạm thời, nhưng dữ liệu bắt đầu và kết thúc bên ngoài Kaskada. Điều quan trọng là phải hiểu luồng dữ liệu từ đầu vào, đến các mốc thời gian và cuối cùng là đầu ra.

Mọi truy vấn đều bắt đầu từ một hoặc nhiều nguồn dữ liệu đầu vào. Mỗi đầu vào – cho dù đó là các sự kiện đến trong một luồng hay được lưu trữ trong một bảng hay các sự kiện được lưu trữ trong một bảng – đều có thể được chuyển đổi thành một dòng thời gian mà không làm mất ngữ cảnh quan trọng chẳng hạn như thời gian của mỗi sự kiện.


Bản thân truy vấn được thể hiện dưới dạng một chuỗi các thao tác. Mỗi thao tác tạo ra một dòng thời gian từ các dòng thời gian. Kết quả của thao tác cuối cùng được sử dụng làm kết quả của truy vấn. Do đó, truy vấn tạo ra một dòng thời gian có thể rời rạc hoặc liên tục.


Kết quả của một truy vấn là một dòng thời gian, có thể được xuất ra phần chìm. Các hàng được ghi vào phần chìm có thể là lịch sử phản ánh các thay đổi trong dòng thời gian hoặc ảnh chụp nhanh phản ánh các giá trị tại một thời điểm cụ thể.

Nhập các mốc thời gian

Trước khi một truy vấn được thực hiện, mỗi đầu vào được ánh xạ tới một dòng thời gian. Mọi thông tin đầu vào – dù là sự kiện từ luồng hay bảng hay dữ kiện trong bảng – đều có thể được ánh xạ tới dòng thời gian mà không làm mất thông tin thời gian quan trọng, chẳng hạn như thời điểm xảy ra sự kiện. Các sự kiện trở thành các mốc thời gian riêng biệt, với (các) giá trị từ mỗi sự kiện xảy ra tại thời điểm xảy ra sự kiện. Các sự kiện trở thành các mốc thời gian liên tục, phản ánh thời gian mà mỗi sự kiện được áp dụng. Bằng cách đại diện không mất dữ liệu cho tất cả các loại đầu vào tạm thời, các mốc thời gian cho phép các truy vấn tập trung vào tính toán hơn là loại đầu vào.

Xuất các mốc thời gian

Sau khi thực hiện một truy vấn, dòng thời gian kết quả phải được xuất ra một hệ thống bên ngoài để sử dụng. Phần chìm cho mỗi đích cho phép cấu hình ghi dữ liệu, với các chi tiết cụ thể tùy thuộc vào phần chìm và đích (xem tài liệu kết nối này để biết thêm).


Có một số tùy chọn để chuyển đổi dòng thời gian thành các hàng dữ liệu, ảnh hưởng đến số lượng hàng được tạo:

  1. Bao gồm toàn bộ lịch sử thay đổi trong một phạm vi hoặc chỉ ảnh chụp nhanh giá trị tại một thời điểm nào đó.
  2. Chỉ bao gồm các sự kiện (thay đổi) xảy ra sau một thời gian nhất định trong đầu ra.
  3. Chỉ bao gồm các sự kiện (thay đổi) cho đến một thời điểm cụ thể trong đầu ra.


Toàn bộ lịch sử thay đổi giúp trực quan hóa hoặc xác định các mẫu giá trị của người dùng theo thời gian. Ngược lại, ảnh chụp nhanh tại một thời điểm cụ thể rất hữu ích cho trang tổng quan trực tuyến hoặc phân loại người dùng tương tự.


Bao gồm các sự kiện sau một thời gian nhất định sẽ giảm kích thước đầu ra khi đích đã có dữ liệu cho đến thời điểm đó hoặc khi các điểm trước đó không liên quan. Điều này đặc biệt hữu ích khi chạy lại truy vấn để cụ thể hóa thành kho lưu trữ dữ liệu.


Bao gồm các sự kiện cho đến một thời điểm cụ thể cũng giới hạn kích thước đầu ra và cho phép chọn ảnh chụp nhanh tại một thời điểm. Với thực thi gia tăng, việc chọn thời gian sớm hơn một chút so với thời gian hiện tại sẽ giảm việc xử lý dữ liệu trễ.


Cả hai tùy chọn “đã thay đổi kể từ” và “lên đến” đều đặc biệt hữu ích với việc thực thi gia tăng mà chúng tôi sẽ thảo luận trong một bài viết sắp tới.

Lịch sử

Lịch sử – tập hợp tất cả các điểm trong dòng thời gian – rất hữu ích khi bạn quan tâm đến các điểm trong quá khứ. Chẳng hạn, điều này có thể cần thiết để trực quan hóa hoặc xác định các mẫu về cách các giá trị cho mỗi người dùng thay đổi theo thời gian. Lịch sử đặc biệt hữu ích để xuất ra các ví dụ đào tạo để sử dụng cho việc tạo mô hình.

Bất kỳ dòng thời gian nào cũng có thể được xuất dưới dạng lịch sử. Đối với dòng thời gian rời rạc, lịch sử là tập hợp các sự kiện trong dòng thời gian. Đối với dòng thời gian liên tục, lịch sử chứa các điểm mà tại đó một giá trị thay đổi – đó thực sự là một nhật ký thay đổi.

ảnh chụp nhanh

Ảnh chụp nhanh – giá trị cho mỗi thực thể tại một thời điểm cụ thể – rất hữu ích khi bạn chỉ quan tâm đến các giá trị mới nhất. Ví dụ: khi cập nhật trang tổng quan hoặc điền vào kho tính năng để kết nối với việc phân phát mô hình.

Bất kỳ dòng thời gian nào cũng có thể được xuất dưới dạng ảnh chụp nhanh. Đối với dòng thời gian riêng biệt, ảnh chụp nhanh bao gồm các hàng cho từng sự kiện xảy ra tại thời điểm đó. Đối với dòng thời gian liên tục, ảnh chụp nhanh bao gồm một hàng cho mỗi thực thể có giá trị của thực thể đó tại thời điểm đó.

Phần kết luận

Bài đăng trên blog này đã nêu bật tầm quan trọng của các tính năng tạm thời khi tạo mô hình ML từ dữ liệu dựa trên sự kiện. Bối cảnh thời gian và thời gian của các sự kiện là rất quan trọng để xem các mẫu trong hoạt động. Bài đăng này đã giới thiệu sự trừu tượng hóa dòng thời gian, giúp bạn có thể làm việc với các sự kiện và bối cảnh thời gian. Các mốc thời gian tổ chức dữ liệu theo thời gian và thực thể, mang lại cấu trúc phù hợp hơn cho dữ liệu dựa trên sự kiện so với nhiều bộ.

Sự trừu tượng hóa dòng thời gian là một tiến trình tự nhiên trong quá trình xử lý luồng, cho phép bạn suy luận về thời gian và các mối quan hệ nhân quả hiệu quả hơn. Chúng tôi cũng đã khám phá luồng dữ liệu trong một truy vấn tạm thời, từ đầu vào đến đầu ra và thảo luận về các tùy chọn khác nhau để xuất các mốc thời gian cho các hệ thống bên ngoài.


Thay vì áp dụng truy vấn dạng bảng (tĩnh) cho một chuỗi ảnh chụp nhanh, Kaskada hoạt động trên lịch sử (luồng thay đổi). Điều này làm cho nó tự nhiên hoạt động theo thời gian giữa các ảnh chụp nhanh, thay vì chỉ dựa trên dữ liệu có trong ảnh chụp nhanh. Sử dụng các mốc thời gian làm phần trừu tượng hóa chính giúp đơn giản hóa việc làm việc với dữ liệu dựa trên sự kiện và cho phép chuyển tiếp liền mạch giữa các luồng và bảng.


Bạn có thể bắt đầu thử nghiệm với các truy vấn tạm thời của riêng bạn ngày hôm nay. Tham gia cộng đồng Slack và cho chúng tôi biết suy nghĩ của bạn về sự trừu tượng hóa dòng thời gian. Trong bài đăng sắp tới, chúng ta sẽ đi sâu vào ngôn ngữ truy vấn Kaskada và các khả năng của ngôn ngữ này trong các truy vấn biểu cảm theo thời gian.


Bởi Ben Chambers và Therapon Skoteiniotis, DataStax