Phân tích dữ liệu thời gian thực Fast Data nhằm tận dụng dữ liệu nhanh chóng và công nghệ phân tích dữ liệu để cung cấp thông tin thị trường chứng khoán chính xác và nhanh chóng.. Điều n
Kiến thức nền tảng
Fast Data là gì?
Fast data là thuật ngữ mô tả việc xử lý và truyền tải dữ liệu nhanh chóng, hiệu quả, nhằm đưa ra quyết định tức thì dựa trên phân tích dữ liệu trong thời gian thực hoặc gần thời gian thực Để đạt được điều này, các công nghệ như xử lý dữ liệu song song, hệ thống phân tán, bộ nhớ đệm và công nghệ mạng nhanh được tích hợp nhằm đảm bảo xử lý và truyền dữ liệu hiệu quả trong thời gian ngắn nhất có thể.
- Khái niệm "fast data" bắt nguồn từ sự phát triển nhanh chóng của dữ liệu số và nhu cầu xử lý dữ liệu trong thời gian thực Với sự gia tăng về khối lượng dữ liệu được tạo ra từ các nguồn như cảm biến, thiết bị IoT, mạng xã hội và ứng dụng trực tuyến, việc xử lý và phân tích dữ liệu trở thành một thách thức đối với các hệ thống truyền thống.
- Nhu cầu xử lý dữ liệu nhanh chóng và đáp ứng trong thời gian thực đã tạo ra yêu cầu cho khái niệm fast data Nó tập trung vào việc xử lý dữ liệu ngay lập tức, đưa ra quyết định nhanh chóng và phản ứng kịp thời với thông tin mới nhất Fast data kết hợp giữa khả năng xử lý dữ liệu thời gian thực và công nghệ tính toán nhanh để đảm bảo việc phân tích và sử dụng dữ liệu trong thời gian gần như ngay lập tức.
Mục đích chính của Fast Data là xử lý và khai thác dữ liệu một cách nhanh chóng và hiệu quả để đáp ứng yêu cầu dữ liệu thời gian thực Công nghệ này giúp các tổ chức và cá nhân tận dụng dữ liệu ngay lập tức, từ đó đưa ra các quyết định nhanh chóng, tối ưu hóa hoạt động kinh doanh và tạo ra giá trị lớn hơn từ nguồn dữ liệu phong phú và đa dạng.
Fast data cho phép xử lý và phân tích dữ liệu trong thời gian thực hoặc gần thời gian thực, giúp các tổ chức phản ứng nhanh chóng với thông tin mới nhất Trong lĩnh vực tài chính, fast data được sử dụng để phát hiện gian lận trong giao dịch ngân hàng ngay lập tức, đảm bảo an toàn và bảo mật cao hơn Nhờ khả năng phản ứng nhanh, các doanh nghiệp có thể ra quyết định kịp thời, nâng cao hiệu quả hoạt động và giảm thiểu rủi ro.
Fast data cho phép phân tích dữ liệu nhanh chóng, giúp đưa ra quyết định dựa trên thông tin mới nhất Nhờ đó, doanh nghiệp có thể tăng cường độ chính xác và kịp thời trong quá trình ra quyết định, giảm thiểu thời gian phản hồi và khai thác tối đa các cơ hội cùng giảm thiểu các rủi ro tiềm ẩn.
Tối ưu hóa hiệu suất hệ thống nhờ vào fast data giúp tận dụng dữ liệu trong thời gian ngắn để cải thiện hiệu quả hoạt động Trong lĩnh vực quản lý giao thông, fast data cho phép phân tích thông tin lưu lượng một cách nhanh chóng và đề xuất các biện pháp điều chỉnh ngay lập tức nhằm giảm thiểu ùn tắc giao thông, nâng cao trải nghiệm người dùng và giảm thiểu thời gian di chuyển.
Fast data nâng cao trải nghiệm người dùng bằng cách xử lý dữ liệu nhanh chóng, giúp ứng dụng di động phản hồi nhanh hơn và tải dữ liệu mượt mà hơn Điều này mang lại trải nghiệm người dùng tốt hơn, giúp các ứng dụng trở nên tiện ích và hấp dẫn hơn cho người dùng.
Tận dụng tối đa giá trị của Big Data và IoT là chiến lược quan trọng để nâng cao hiệu quả hoạt động Fast data giúp xử lý dữ liệu thời gian thực một cách nhanh chóng và chính xác, cho phép các doanh nghiệp khai thác dữ liệu lớn và các thiết bị kết nối (IoT) một cách tối ưu Nhờ đó, các tổ chức có thể đưa ra quyết định nhanh chóng, nâng cao trải nghiệm khách hàng và tối ưu hóa quy trình kinh doanh dựa trên dữ liệu thực tế.
Apache Spark
Spark là một framework xử lý dữ liệu phân tán và tính toán phân tán, được thiết kế để xử lý các tác vụ dữ liệu lớn một cách hiệu quả và nhanh chóng Mục đích chính của Spark là cung cấp một môi trường xử lý dữ liệu phân tán mạnh mẽ, linh hoạt và dễ sử dụng cho các ứng dụng xử lý dữ liệu lớn.
Spark cung cấp phương pháp xử lý dữ liệu phân tán, chia nhỏ tác vụ thành các phần nhỏ hơn để xử lý song song trên nhiều máy tính Điều này giúp tăng tốc độ xử lý dữ liệu và mở rộng khả năng xử lý, phù hợp với các tập dữ liệu lớn mà không gặp vấn đề về khả năng tính toán.
- Apache Spark gồm có 5 thành phần chính: Spark Core, Spark Streaming, Spark SQL, MLlib và GraphX, trong đó:
Spark Core là nền tảng cho các thành phần còn lại và các thành phần này muốn khởi chạy được thì đều phải thông qua Spark Core do Spark Core đảm nhận vai trò thực hiện công việc tính toán và xử lý trong bộ nhớ (In- memory computing) đồng thời nó cũng tham chiếu các dữ liệu được lưu trữ tại các hệ thống lưu trữ bên ngoài.
Spark SQL cung cấp kiểu dữ liệu mới gọi là SchemaRDD, giúp xử lý cả dữ liệu có cấu trúc và dữ liệu bán cấu trúc dựa trên nội dung của dữ liệu Nó hỗ trợ DSL (Domain-specific language) để thực hiện các thao tác trên DataFrames bằng các ngôn ngữ phổ biến như Scala, Java và Python Ngoài ra, Spark SQL còn hỗ trợ ngôn ngữ SQL qua giao diện dòng lệnh, tạo điều kiện thuận lợi cho việc truy vấn và phân tích dữ liệu một cách linh hoạt và hiệu quả.
Spark Streaming là công cụ thực hiện phân tích dữ liệu theo kiểu stream bằng cách chia stream thành các mini-batches và áp dụng kỹ thuật RDD transformation cho dữ liệu này, giúp tái sử dụng mã xử lý batch cho xử lý stream và dễ dàng phát triển kiến trúc Lambda Tuy nhiên, việc xử lý dựa trên mini-batches gây ra độ trễ trong phản hồi, chính bằng độ trễ của mini-batch duration, khiến nhiều chuyên gia cho rằng Spark Streaming không phải là công cụ xử lý streaming thực thụ như Storm hoặc Flink.
MLlib là thư viện học máy phân tán tích hợp trên nền tảng Apache Spark, dựa trên kiến trúc phân tán dựa trên bộ nhớ, giúp xử lý dữ liệu lớn một cách hiệu quả Theo các đánh giá so sánh hiệu suất, Spark MLlib nhanh hơn 9 lần so với Apache Mahout chạy trên Hadoop, mang lại tốc độ và khả năng mở rộng vượt trội cho các ứng dụng học máy.
GrapX: Grapx là nền tảng xử lý đồ thị dựa trên Spark Nó cung cấp các
Api để diễn tảcác tính toán trong đồ thị bằng cách sử dụng Pregel Api.
Resilient Distributed Dataset (RDD) là cấu trúc dữ liệu cơ bản trong Apache Spark, giúp xử lý dữ liệu phân tán hiệu quả RDD là một tập hợp không thay đổi, có khả năng chịu lỗi cao, được chia nhỏ và phân tán trên các nút trong cụm Spark Nhờ đó, Spark có thể thực hiện xử lý dữ liệu song song và tối ưu, nâng cao hiệu suất và độ tin cậy của các ứng dụng phân tích dữ liệu lớn.
RDD có khả năng chịu lỗi cao nhờ vào khả năng tự phục hồi khi gặp sự cố Khi một phân vùng bị mất, Spark có thể tự động tái tính toán phân vùng đó dựa trên dữ liệu và phép biến đổi đã lưu trữ trước đó Tính năng này đảm bảo tính toàn vẹn của dữ liệu và duy trì khả năng chịu lỗi trong quá trình xử lý dữ liệu lớn.
Immutability (Không thay đổi): RDD là không thay đổi, tức là một khi tạo RDD, bạn không thể thay đổi nó Thay vào đó, bạn thực hiện các phép biến đổi trên RDD để tạo ra các RDD mới Điều này đảm bảo tính toàn vẹn dữ liệu và đồng thời cho phép Spark tối ưu quá trình xử lý.
Trong Spark, RDD sử dụng phương pháp đánh giá lười biếng (lazy evaluation), giúp tối ưu hiệu suất xử lý dữ liệu bằng cách chỉ thực hiện các phép biến đổi khi cần thiết Thay vì tính toán kết quả ngay lập tức, Spark lưu lại các phép biến đổi đã áp dụng và chỉ tiến hành tính toán khi có yêu cầu thực hiện hành động (action) Điều này giúp giảm thiểu công việc không cần thiết, tối ưu hóa tài nguyên và cải thiện hiệu suất tổng thể của các quá trình xử lý dữ liệu lớn.
Partitioning (Phân vùng) trong RDD giúp chia dữ liệu thành các phần nhỏ hơn, được phân bố trên nhiều nút trong cụm Spark, tối ưu hóa quá trình xử lý phân tán Mỗi phân vùng đại diện cho một phần dữ liệu độc lập, cho phép xử lý song song và tăng hiệu suất tính toán Việc phân vùng dữ liệu không chỉ giúp phân phối tải đều mà còn tận dụng khả năng đa luồng của cụm Spark để giảm thời gian xử lý và nâng cao hiệu quả hệ thống.
Caching (Lưu trữ tạm): RDD cho phép lưu trữ tạm kết quả tính toán trên bộ nhớ để tái sử dụng nhanh chóng Khi RDD được lưu trữ tạm, các phân vùng của nó sẽ được lưu trữ trên bộ nhớ của các nút
Apache Spark cung cấp một loạt các phép biến đổi (transformations) và hành động (actions) để xử lý dữ liệu trên cụm tính toán phân tán, giúp tối ưu hiệu suất và mở rộng quy mô xử lý dữ liệu lớn Các phép biến đổi trong Spark gồm có map, filter, reduceByKey, và flatMap, cho phép biến đổi dữ liệu linh hoạt để phù hợp với các tác vụ phân tích khác nhau Trong khi đó, các hành động như count, collect, reduce, và saveAsTextFile giúp trích xuất kết quả và lưu trữ dữ liệu sau quá trình xử lý Việc hiểu rõ các phép biến đổi và hành động này đóng vai trò quan trọng trong việc xây dựng các ứng dụng phân tích dữ liệu hiệu quả trên nền tảng Spark.
map(func): Áp dụng một hàm func lên mỗi phần tử của RDD và trả về một RDD mới.
filter(func): Lọc các phần tử trong RDD dựa trên một hàm func và trả về một RDD mới chỉ chứa các phần tử thỏa mãn điều kiện.
reduceByKey(func): Kết hợp các giá trị có cùng khóa bằng cách áp dụng hàm func và trả về một RDD mới với các cặp khóa-giá trị kết hợp.
join(otherRDD): Kết hợp hai RDD dựa trên khóa và trả về một RDD mới chứa tất cả các cặp giá trị từ cả hai RDD có cùng khóa.
sortBy(func): Sắp xếp các phần tử trong RDD dựa trên giá trị được trả về từ hàm func
collect(): Trả về tất cả các phần tử trong RDD dưới dạng một mảng.
count(): Đếm số lượng phần tử trong RDD.
first(): Trả về phần tử đầu tiên trong RDD.
reduce(func): Kết hợp các phần tử trong RDD bằng cách áp dụng hàm func.
saveAsTextFile(path): Lưu RDD vào một tệp văn bản trong đường dẫn path
2.2.3 Ngôn ngữ lập trình và giao diện lập trình
- Apache Spark hỗ trợ nhiều ngôn ngữ lập trình, nhưng ngôn ngữ chính được sử dụng trong Spark là Scala, Python và Java.
Scala: Scala là ngôn ngữ lập trình chính trong Spark và cung cấp khả năng tương tác mạnh mẽ với API của Spark Scala có tính năng mạnh mẽ và linh hoạt, và được tối ưu hóa cho việc xử lý dữ liệu phân tán trên Spark.
Stream processing và Batch processing
- Luồng dữ liệu (Stream) là một chuỗi các sự kiện hoặc dữ liệu liên tục được truyền từ nguồn dữ liệu đến hệ thống xử lý Luồng dữ liệu thường được tạo ra bởi các nguồn phát sinh (data sources) như cảm biến, log hệ thống, dữ liệu IoT, dòng dữ liệu từ các ứng dụng khác, v.v.
Stream Processing là phương pháp xử lý dữ liệu theo thời gian thực, cho phép xử lý dữ liệu ngay lập tức khi nó được tạo ra hoặc truyền đến nguồn dữ liệu liên tục Phương pháp này giúp tối ưu hóa hiệu suất và giảm thiểu thời gian phản hồi, khác biệt so với các phương pháp xử lý dữ liệu truyền thống dựa trên lưu trữ và xử lý theo hàng đợi.
Stream Processing đóng vai trò quan trọng trong các ứng dụng như phân tích dữ liệu thời gian thực, phát hiện sự kiện đặc biệt và xử lý log, giúp các hệ thống phản ứng nhanh chóng và chính xác Nó cực kỳ hữu ích trong các lĩnh vực như hệ thống định vị, Internet of Things (IoT) và nhiều ngành công nghiệp yêu cầu xử lý dữ liệu liên tục và theo thời gian thực Các đặc điểm của Stream Processing bao gồm khả năng xử lý dữ liệu liên tục, độ trễ thấp và khả năng mở rộng linh hoạt để đáp ứng nhu cầu của các ứng dụng khắt khe về thời gian.
Stream Processing là khả năng xử lý dữ liệu liên tục ngay khi dữ liệu được tạo ra hoặc nhận về, giúp phân tích và phản hồi dữ liệu theo thời gian thực hoặc gần thời gian thực Dữ liệu trong Stream Processing được xem như một luồng liên tục các sự kiện hoặc dòng dữ liệu, cho phép xử lý nhanh chóng và hiệu quả, phù hợp với các nhu cầu cần phản ứng ngay lập tức trong doanh nghiệp và công nghệ số.
Tính mở rộng và phân tán: Stream Processing thường được triển khai trong môi trường phân tán, trong đó xử lý dữ liệu được phân tán trên nhiều máy tính hoặc nút xử lý Điều này cho phép Stream Processing xử lý dữ liệu lớn và đáp ứng với tải công việc cao bằng cách phân chia công việc xử lý sang nhiều máy tính.
Xử lý dữ liệu trực tiếp: Trong Stream Processing, dữ liệu được xử lý ngay khi nó đến, mà không cần lưu trữ toàn bộ dữ liệu trước khi xử lý. Điều này cho phép Stream Processing giảm độ trễ (latency) và đáp ứng nhanh chóng với sự kiện mới.
Stream Processing có khả năng xử lý đồng thời nhiều sự kiện cùng lúc, giúp xử lý song song và đồng bộ các dữ liệu trong luồng dữ liệu một cách hiệu quả Nhờ đó, hệ thống có thể phản hồi nhanh chóng và chính xác hơn khi xử lý nhiều dòng dữ liệu đồng thời Điều này làm tăng hiệu suất và khả năng mở rộng của các ứng dụng xử lý dữ liệu lớn.
Trong xử lý dữ liệu theo dòng (Stream Processing), cửa sổ thời gian (Time Windowing) đóng vai trò thiết yếu trong việc xem xét các sự kiện hoặc dữ liệu trong một khoảng thời gian cụ thể Cửa sổ thời gian giúp xác định phạm vi thời gian để xử lý và phân tích dữ liệu hiệu quả, đảm bảo các thông tin quan trọng được tập trung trong khoảng thời gian phù hợp Điều này hỗ trợ tối ưu hóa quá trình theo dõi, báo cáo và ra quyết định dựa trên dữ liệu theo thời gian thực.
Tích hợp với Batch Processing: Stream Processing có thể tích hợp với Batch Processing để xử lý cả dữ liệu liên tục và dữ liệu lưu trữ truyền thống Việc kết hợp Stream Processing và Batch Processing cho phép xử lý dữ liệu trong thời gian thực và thực hiện tính toán phức tạp trên dữ liệu lớn.
- Spark Streaming là một thành phần của Apache Spark, cho phép xử lý dữ liệu liên tục và thời gian thực trong môi trường phân tán.
Spark Streaming sử dụng mô hình xử lý dữ liệu liên tục gọi là "micro-batch processing", giúp chia dữ liệu dòng chảy thành các batch nhỏ để xử lý hiệu quả hơn Thay vì xử lý từng sự kiện riêng lẻ, Spark Streaming xử lý các micro-batch như các RDDs (Resilient Distributed Datasets), một dạng cấu trúc dữ liệu phân tán trong Spark Phương pháp này tối ưu hóa khả năng xử lý dữ liệu liên tục và giảm thiểu độ trễ trong phân tích dữ liệu thời gian thực.
Hình Chương II Kiến thức nền tảng.2: Spark Streaming
2.4 Phân tích cảm xúc bằng VADER ( Sentiment analysis using
- Valence Aware Dictionary and Sentiment Reasoner (VADER) là một công cụ phân tích cảm tình được phát triển để đo lường và đánh giá tính chất cảm tình trong văn bản Công cụ này sử dụng một từ điển đánh giá cảm tình để xác định tính chất tích cực, tiêu cực hoặc trung lập của một đoạn văn dựa trên sự xuất hiện và sắp xếp các từ trong từ điển.
2.4.2 Thành phần cấu trúc của VADER
Từ điển đánh giá cảm xúc VADER sử dụng một bộ từ điển chứa các từ đã được gán điểm số dựa trên mức độ cảm xúc tích cực, tiêu cực hoặc trung lập Mỗi từ trong từ điển được đánh giá để phản ánh chính xác tính chất cảm xúc của nó, giúp phân tích cảm xúc một cách hiệu quả Phương pháp này giúp xác định rõ ràng các cảm xúc trong văn bản dựa trên các từ khóa đã được xếp hạng sẵn.
VADER phân tích câu văn thành các thành phần nhỏ hơn, bao gồm từ và cụm từ, nhằm xác định chính xác cảm xúc của từng phần trong câu Quá trình này giúp hiểu rõ hơn về cảm xúc tổng thể của câu văn và hỗ trợ trong việc đánh giá cảm xúc một cách chính xác Phân tích chi tiết các thành phần nhỏ giúp nâng cao hiệu quả trong xử lý ngôn ngữ tự nhiên và phân tích tâm trạng của văn bản.
- Điểm số tích cực, tiêu cực và trung lập: Với mỗi từ hoặc thành phần trong câu, VADER kiểm tra xem từ đó có xuất hiện trong từ điển đánh giá cảm xúc và gán cho nó một điểm số tương ứng về tính chất cảm xúc, bao gồm điểm số tích cực, tiêu cực hoặc trung lập.
VADER tính toán điểm số tổng thể dựa trên các điểm số tích cực, tiêu cực và trung lập của các từ và thành phần trong câu Điểm số này giúp xác định tính chất cảm xúc của câu là tích cực hay tiêu cực, cũng như mức độ cảm xúc đó Đây là công cụ hiệu quả trong phân tích cảm xúc để đánh giá chính xác cảm xúc của văn bản.
Thuật toán XGBoost
XGBoost (Extreme Gradient Boosting) là một thuật toán học máy nổi tiếng và mạnh mẽ, được ứng dụng rộng rãi trong công tác dự đoán và phân loại Nhờ khả năng tối ưu hóa hiệu suất và độ chính xác vượt trội, XGBoost đã trở thành công cụ hàng đầu trong các cuộc thi học máy và các dự án thực tế Thuật toán này cung cấp giải pháp hiệu quả cho việc xử lý dữ liệu lớn và phức tạp, góp phần nâng cao kết quả dự đoán và phân tích dữ liệu một cách đáng kể.
- XGBoost kết hợp giữa hai yếu tố quan trọng trong việc xây dựng các mô hình học máy, đó là cây quyết định và việc tối ưu gradient descent (xuống dốc) Thuật toán tạo ra một loạt cây quyết định theo phương pháp tăng cường gradient, nghĩa là mỗi cây sẽ cố gắng khắc phục các lỗi của các cây trước đó Quá trình này được thực hiện thông qua tối ưu gradient descent để điều chỉnh các trọng số của các cây trong quá trình huấn luyện.
XGBoost nổi bật với hiệu suất cao nhờ áp dụng nhiều kỹ thuật tối ưu hóa, giúp tăng tốc quá trình huấn luyện mô hình Công nghệ sử dụng cây quyết định nhanh và linh hoạt, kết hợp với tính toán song song để xử lý dữ liệu hiệu quả Ngoài ra, XGBoost còn tối ưu hóa quá trình cắt tỉa cây để nâng cao hiệu suất mô hình một cách rõ rệt, phù hợp cho các dự án yêu cầu tốc độ và độ chính xác cao.
XGBoost nổi bật với khả năng xử lý đa dạng dữ liệu như số, văn bản và biểu đồ, giúp tối ưu hóa hiệu suất dự đoán trong các dự án phân tích dữ liệu Công cụ này còn hỗ trợ sử dụng các đặc trưng tùy chỉnh và tính năng đa trạng thái, tạo ra sự linh hoạt và chính xác hơn trong quá trình xây dựng mô hình Nhờ khả năng xử lý linh hoạt này, XGBoost trở thành lựa chọn hàng đầu cho các nhà khoa học dữ liệu trong việc xử lý các loại dữ liệu phức tạp và đa dạng.
- Kiểm soát quá khớp: XGBoost có các tham số kiểm soát quá khớp
(overfitting) như giới hạn độ sâu cây, tỷ lệ học và điều chỉnh trọng số.
- Xử lý dữ liệu bị khuyết: XGBoost có khả năng tự động xử lý các giá trị bị khuyết trong dữ liệu đầu vào.
- Tích hợp: XGBoost có thể tích hợp với nhiều ngôn ngữ lập trình như
Python, R và Java, và có hỗ trợ cho các giao diện ứng dụng như scikit-learn và Apache Spark.
XGBoost đã được sử dụng rộng rãi trong nhiều lĩnh vực như dự đoán giá cổ phiếu, phân loại email rác, nhận dạng ảnh và xếp hạng trang web Nhờ vào hiệu suất vượt trội và tính linh hoạt cao, XGBoost trở thành công cụ mạnh mẽ trong việc xây dựng các mô hình dự đoán và phân loại trong lĩnh vực học máy, giúp tăng độ chính xác và hiệu quả cho các dự án AI.
Triển khai ứng dụng
Thiết kế hệ thống
Chương trình được thiết kế với Apache Spark làm trung tâm, hoạt động như một kho dữ liệu trong bộ nhớ giúp xử lý dữ liệu nhanh chóng và linh hoạt Nhờ khả năng mở rộng của Spark, các phép tính phức tạp có thể được thực hiện một cách hiệu quả, đáp ứng nhu cầu xử lý lượng lớn dữ liệu Sau khi xử lý, dữ liệu được đưa vào mô hình máy học để tiến hành công tác dự đoán chính xác và tối ưu hóa kết quả.
Để khởi động mô hình, bạn cần thu thập dữ liệu trong vài ngày đầu tiên và lưu trữ chúng trong Apache Spark RDD Tiếp theo, thực hiện các phép tính để xây dựng các đặc điểm từ dữ liệu thô nhằm chuẩn bị cho quá trình phân tích Các bước tính toán này được thực hiện trên dữ liệu phân phối rộng rãi trên nhiều cụm Spark nhằm đảm bảo khả năng mở rộng quy mô khi dữ liệu tiếp tục phát triển.
- Khi mô hình học máy đã được khởi động, dữ liệu bắt đầu truyền vào để nhận dữ liệu thời gian thực liên quan đến cả hai mạng xã hội Twitter và thị trường chứng khoán Các phép tính tương tự được thực hiện trên dữ liệu này để tính toán các đặc điểm và sau đó điểm dữ liệu mới này được sử dụng để nhận dự đoán tương lai từ mô hình Điểm dữ liệu được tính toán này sau đó được thêm vào dữ liệu hiện có trong Spark RDD, thu được từ dữ liệu khởi động ban đầu.
Hình Chương III Triển khai ứng dụng.3: Sơ đồ hệ thống
Phân tích cảm tình trên Twitter
VADER phân tích văn bản và cung cấp ba điểm hóa trị cho từng tình cảm: tích cực, tiêu cực và trung lập Một điểm tổng hợp thứ tư được tính dựa trên tổng các điểm hóa trị của từng từ trong từ vựng, sau đó điều chỉnh theo các quy tắc chuẩn hóa để nằm trong khoảng từ -1 (tiêu cực) đến +1 (tích cực) Quá trình này giúp tạo ra một điểm đánh giá tổng hợp, phản ánh chính xác cảm xúc của đoạn văn bản một cách có trọng số và chuẩn hóa phù hợp theo tiêu chuẩn SEO.
To effectively quantify this relationship, the compound score is multiplied by key engagement metrics, including the poster's follower count, the number of likes on the tweet, and the retweet count This combined approach ensures an accurate assessment of social media influence, with the final score calculated using a specific equation that weights both sentiment and engagement metrics.
FinalScore = CompoundScore ∗ UserF ollowerCount ∗ (Likes + 1) ∗
+1 cho cả RetweetCount và Likes đảm bảo rằng điểm cuối cùng không trở thành số 0 nếu không có lượt thích hoặc tweet lại cho tweet trong chủ đề UserFollowerCount không có +1 để lọc ra vô số BOT trong diễn thị trường chứng khoán trên Twitter Điểm số tiếp tục được bình thường hóa bằng cách lấy căn bậc hai của điểm cuối cùng và nhân với -1 nếu điểm là tiêu cực Điểm số cuối cùng này thuộc về một tweet duy nhất và vì phạm vi dự đoán chỉ dành cho một khung thời gian nhất định, tất cả các điểm chuẩn hóa cho các tweet khác nhau nhận được trong khung thời gian đó được tính tổng lại Điểm tổng kết này sau đó được sử dụng như một trong những đặc điểm cho mô hình máy học để dự đoán thị trường chứng khoán cho khung thời gian trong tương lai.
Mô hình máy học
- Một yếu tố quan trọng của kiến trúc này là máy mô hình máy học, được
Mô hình "train" giúp hiểu rõ mối liên hệ giữa cảm xúc trên mạng xã hội và các số liệu cụ thể của thị trường chứng khoán Một đặc điểm nổi bật của mô hình này là khả năng liên tục phát triển và tự điều chỉnh để phù hợp với sự thay đổi không ngừng của cảm xúc truyền thông xã hội và tính biến động của thị trường chứng khoán.
Để khởi động mô hình dự đoán, các điểm dữ liệu lịch sử được xuất ra bên ngoài Spark Framework và dùng để đào tạo mô hình ban đầu, đảm bảo mô hình có nền tảng dữ liệu vững chắc Khi dữ liệu thời gian thực mới đến, hệ thống xử lý để tạo ra điểm dữ liệu mới chứa các đặc trưng cần thiết, sau đó kết quả này cũng được xuất ra bên ngoài Spark và đưa vào mô hình máy học để dự đoán giá trong tương lai một cách chính xác và hiệu quả.
Chúng tôi sử dụng phương pháp “Học hỏi trục tuyến” để liên tục cải thiện mô hình Mô hình được lưu trữ trên ổ đĩa và sau mỗi lần cập nhật giá trị thực tế, nó lại được sử dụng để đào tạo lại, giúp mô hình học hỏi từ lỗi giữa dự đoán ban đầu và giá trị thực tế Phương pháp này giúp mô hình điều chỉnh trọng số liên tục để phù hợp với xu hướng thị trường, nâng cao độ chính xác và hiệu quả dự báo.
Hình 4: Mô hình XGBoost
Kết quả
Dữ liệu đầu vào
Sử dụng Twitter API để thu thập các tweet có hashtag # liên quan đến thị trường chứng khoán giúp khai thác dữ liệu người dùng hiệu quả Mỗi tweet được lưu trữ các thông tin quan trọng như ID, nội dung, tên người dùng, số lượng người theo dõi, số lượng tweet đã đăng, cũng như ngày và giờ đăng Ngoài ra, tất cả các tweet không bằng tiếng Anh đã được lọc ra để tập trung vào dữ liệu phù hợp với nghiên cứu Điều này đảm bảo dữ liệu thu thập chính xác, toàn diện và phù hợp cho phân tích thị trường chứng khoán trên nền tảng mạng xã hội Twitter.
Cryptocompare API là nguồn dữ liệu đáng tin cậy cho thị trường tiền điện tử, cung cấp các thông tin quan trọng như thời gian, giá mở cửa, giá đóng cửa, giá cao nhất và thấp nhất trong khung thời gian nhất định, tất cả đều tính bằng USD Những dữ liệu này giúp nhà đầu tư và nhà phân tích nắm bắt xu hướng thị trường chính xác và nhanh chóng Ngoài ra, API còn hỗ trợ truy xuất dữ liệu lịch sử và theo dõi biến động của các loại tiền điện tử, đảm bảo độ chính xác và đầy đủ thông tin cho các hoạt động phân tích và dự báo.
- Sau khi thu thập tất cả dữ liệu, tất cả các tweet và dữ liệu tiền điện tử được căn chỉnh theo cửa sổ thời gian xác định là một phút và lưu trữ dữ liệu kết quả vào RDD dữ liệu huấn luyện (train data) đào tạo này dữ liệu RDD đã được xử lý thêm như được mô tả trong phần sau các phần phụ và sau đó được đưa vào thuật toán máy học.
Kết quả
Hình 5: Kết quả dự đoán
- Có thể thấy trong hình rằng một số đột biến trong điểm số cảm tình tương ứng trực tiếp hoặc có độ trễ nhất định với giá Bitcoin Lượng phát trực tuyến đến tweet trong thời gian thay đổi căn bản tăng lên, dẫn đến trong số điểm tích lũy cao hơn theo giờ.
- Một thư viện python sử dụng API Twitter để trích xuất các tweet bằng các truy vấn có liên quan Giá thời gian thực của Bitcoin cũng đồng thời được thu thập bằng cách sử dụng cryptocompare API Dữ liệu Twitter là được làm sạch để loại hastags bắt đầu bằng #, các đường liên kết, hình ảnh và video khỏi các tweet Điểm tình cảm của mỗi tweet đã được thu thập để có được điểm số như được mô tả trong phần trước
- Để phân tích dữ liệu, mối tương quan Spearman và Pearson được tính toán giữa điểm tweet và giá Bitcoin
Hình Chương IV Kết quả.4: Đồ thị mối tương quan
Trục y của biểu đồ thể hiện độ trễ tính bằng phút, giúp xác định xem có tồn tại độ trễ nào giữa thời điểm xuất hiện của các tweet và biến động giá Bitcoin Việc phân tích độ trễ này là quan trọng để hiểu mối liên hệ giữa hoạt động trên mạng xã hội và biến động thị trường tiền điện tử Theo đó, dữ liệu cho thấy khoảng thời gian giữa các tweet và thay đổi giá Bitcoin có thể cung cấp thông tin hữu ích cho các nhà đầu tư và nhà phân tích thị trường Điều này giúp tối ưu hóa chiến lược giao dịch dựa trên các tín hiệu truyền thông xã hội để dự đoán xu hướng giá Bitcoin chính xác hơn.