Dự án của chúng em tập trung vào việc sử dụng dữ liệu thời tiết được cập nhập hàng giờ để dự đoán mức độ ô nhiễm không khí của từng vị trí cụ thể dựa trên toạ độ bản đồ.. Để giải quyết b
Introduction
Cùng với sự phát triển không ngừng về sản xuất và chất lượng đời sống con người ngày càng nâng cao, các vấn đề về môi trường đã dần được người dân quan tâm Một trong số đó, vấn đề về chất lượng không khí đáng được chú ý vì nó ảnh hưởng tới sức khoẻ và môi trường sống của chúng ta Đặc biệt đối với các thành phố lớn, hiểu xu hướng thay đổi không khí, nhận thông tin chất lượng không khí kịp thời, chính xác và toàn diện cũng như đưa ra dự đoán chính xác về chất lượng không khí là cần thiết để giúp chúng ta phát hiện, hiểu rõ hơn về mức độ ô nhiễm không khí tại các vị trí cụ thể và đưa ra các biện pháp cần thiết để cải thiện chất lượng không khí, bảo vệ sức khỏe của bản thân Bài toán này cũng có thể áp dụng trong nhiều lĩnh vực khác nhau như y tế, quản lý môi trường, và quy hoạch đô thị.
Dự án của chúng em tập trung vào việc sử dụng dữ liệu thời tiết được cập nhập hàng giờ để dự đoán mức độ ô nhiễm không khí của từng vị trí cụ thể dựa trên toạ độ bản đồ Để giải quyết bài toán, chúng em đã thu thập dữ liệu về chất lượng không khí bao gồm chỉ số ô nhiễm không khí “AQI” cùng với dữ liệu về thời tiết cung cấp thông tin về các yếu tố như “nhiệt độ”, “độ ẩm”, “tốc độ gió” và “áp suất không khí”, Tiếp theo, chúng em tiến hành xử lý dữ liệu bằng cách loại bỏ nhiễu, điền giá trị thiếu và chuẩn hóa dữ liệu để có thể sử dụng cho việc dự đoán Sau đó, phát triển các mô hình dự đoán chất lượng không khí dựa trên dữ liệu đã thu thập được Với mỗi toạ độ, sẽ có các bộ dữ liệu tương ứng khác nhau dùng để huấn luyện mô hình Kết quả dự đoán được hiển thị trực quan trên bản đồ để người dùng dễ dàng nhìn thấy và hiểu với 2 thông tin: chỉ số ô nhiễm không khí “AQI” và các mức độ ô nhiễm bao gồm “Good”, “Moderate”,
“Unhealthy for SG”, “Unhealthy”, “Very unhealthy”, “Hazardous” Để kiểm chứng độ chính xác của mô hình mà chúng em đã lựa chọn, chúng em sử dụng dữ liệu tại điểm Na Pha, Bách Sắc, Quảng Tây, Trung Quốc với tọa độ: 23.0245 độ kinh tuyến và 105.8412 độ vĩ tuyến Kết quả cho thấy mô hình có độ chính xác là 0.37 nếu so sánh về chỉ số AQI và độ chính xác là 0.7 nếu so sánh về mức độ ô nhiễm
Related Work
Phương pháp sử dụng Apache Spark, MongoDB và AWS
https://github.com/liyinging/AQI-prediction-spark-ml
Bài báo này là nghiên cứu về việc dự đoán chất lượng không khí ở California, tuy nhiên, tác giả không tập trung vào kết quả dự đoán chất lượng không khí, mà chỉ tập trung vào so sánh hiệu suất Tác giả đã sử dụng các công nghệ sau:
- Hai mô hình học máy gồm: hồi quy logistic và phân lớp random forest
- Hệ thống tính toán phân tán gồm:
+ Apache Spark để tính toán và xử lý dữ liệu
+ MongoDB để lưu trữ dữ liệu
+ Triển khai hệ thống trên AWS hay Amazon Web Service, một nền tảng điện toán đám mây cung cấp giải pháp cho tính toán, lưu trữ và mạng
Lý do được tác giả đưa ra là do Apache spark có tốc độ xử lý nhanh, dễ sử dụng, có nhiều tiện ích (như spark SQL hay MLlib) và có thể chạy ở bất cứ đâu MongoDB cho phép lưu trữ dữ liệu dưới bất kỳ cấu trúc nào, dễ mở rộng, phù hợp với dữ liệu lớn và có hiệu suất tốt Và AWS có tính khả dụng và tính mở rộng cao, phù hợp với xử lý dữ liệu lớn
Dữ liệu được tác giả sử dụng gồm khoảng 600 nghìn bản ghi, được lấy trong khoảng thời gian từ năm 2008 đến năm 2017 tại California, với kích thước khoảng 1GB
Ta có thể mô tả hệ thống của tác giả như sau: đầu tiên, dữ liệu được lấy từ các API rồi xử lý sao cho không còn thuộc tính thừa hay bị lỗi Dữ liệu này
5 sau đó được lưu trữ trong MongoDB Khi thực thi chương trình, dữ liệu được lấy ra bằng cách sử dụng Spark SQL, được gộp lại và tạo ra dataframe tương ứng Tiếp đến, sử dụng Spark ML để huấn luyện các mô hình học máy, rồi cuối cùng áp dụng mô hình này để dự đoán kết quả Tất cả quá trình này đều được thực hiện trên nền tảng AWS, sử dụng các tiện ích như AWS Simple Storage Service (S3), AWS Elastic Compute Cloud (EC2) và AWS Elastic MapReduce (EMR)
Có thể thấy, lượng dữ liệu được tác giả sử dụng là rất lớn, và cần được truy xuất mỗi lần thực hiện tính toán, do vậy việc sử dụng Apache Spark và MongoDB là sự lựa chọn tuyệt vời Và nền tảng AWS cũng giải quyết được vấn đề tài nguyên khi mà mọi tính toán và lưu trữ đều được xử lý trên đám mây, không tốn đến tài nguyên của máy local Hình dưới đây là minh chứng của tác giả về việc hiệu suất của hệ thống này tốt đến nhường nào:
Tuy nhiên, AWS không phải sự lựa chọn tốt cho sinh viên khi đòi hỏi một khoản phí nhất định cho các dịch vụ mà chúng em cần sử dụng, mặc dù điều này là hoàn toàn hợp lý với một nền tảng toàn diện như vậy.
Phương pháp song song
https://ijeecs.iaescore.com/index.php/IJEECS/article/view/6575/6603?fbc lid=IwAR2plUr08mNSBp6fo6Ib9IAgFpCV1-If8aeied9AVVnS4FanjYC- Rxf0P5g
Trong bài báo này tác giả đã xây dựng một hệ thống theo dõi và dự báo thời tiết trong lĩnh vực nông nghiệp
- Tập dữ liệu: dữ liệu thời tiết từ tháng 1 đến tháng 3 năm 2017 tại khu vực Bogor
- Với các dữ liệu được lấy là: thời gian (time of observation), ngày (date), hướng gió (wind direction), tốc độ gió (wind speed), lượng mưa (rain volume), nhiệt độ (temperature), độ ẩm (humidity), áp suất không khí (air pressure)
Công nghệ được sử dụng trong bài báo này bao gồm:
- Thu thập dữ liệu bằng bộ cảm biến WSN (Wireless sensor networks)
- Xử lý song song và phân tích hiệu suất tính toán bằng mô hình ARIMA
Hệ thống theo dõi và dự báo thời tiết bao gồm các bước sau:
- Bước 1: Thu thập dữ liệu cần thiết cho hệ thống
- Bước 2: Xử lý dữ liệu bằng phương pháp tính toán song song
Bước 1: Thu thập dữ liệu cần thiết cho hệ thống Đầu tiên tác giả đã sử dụng bộ cảm biến WSN (Wireless sensor networks) để thu thập các dữ liệu cần thiết Bộ cảm biến WSN này hoạt động như sau:
Các dữ liệu cần thiết sẽ được các sensors thu thập và lưu dưới dạng file (CSV) với các thuộc tính là: thời gian (time of observation), ngày (date), hướng gió (wind direction), tốc độ gió (wind speed), lượng mưa (rain volume), nhiệt độ (temperature), độ ẩm (humidity), áp suất không khí (air pressure)
File CSV này sẽ được gửi đến WSN node tại đây dữ liệu sẽ được kiểm tra và làm sạch Bằng cách dựa trên chuỗi thời gian thì những dữ liệu trùng lặp sẽ được loại bỏ
Tiếp đến dữ liệu này được đến Data Services để lưu trữ vào cơ sở dữ liệu phục vụ cho quá trình tính toán sau này Dưới đây là các thông số về kích thước bộ nhớ để lưu trữ WSN node theo giây, phút, giờ, ngày và tháng:
Như vậy, thuật toán trong bước này được mô tả như sau:
Bước 2: Xử lý dữ liệu bằng quá trình tính toán song song
Trong phần quá trình xử lý song song thì khối lượng công việc sẽ được chia thành nhiều bộ xử lý bằng mô hình ARIMA như hình dưới đây:
Quá trình xử lý song song này sẽ được thực hiện trên máy tính với 8 bộ xử lý và 5500 bản ghi dữ liệu Sau đó tác giả thực hiện phân vùng các dữ liệu này dựa trên loại dữ liệu: nhiệt độ tối thiểu (minimum temperature), nhiệt độ tối đa (maximum temperature), áp suất không khí (air pressure), độ ẩm (humidity), lượng mưa (daily rainfall) và năng lượng mặt trời (solar)
Tiếp đến hệ thống sẽ phân phối dữ liệu vào các process thích hợp để thực hiện tính toán như vậy tốc độ xử lý dữ liệu sẽ nhanh hơn Kết quả cho thấy khi áp dụng quá trình tính toán song song trong việc xử lý dữ liệu thời tiết thì tốc độ nhanh hơn gấp 2-3 lần so với bình thường
Phương pháp sử dụng Hadoop Distributed File System (HDFS) và
https://www.sciencedirect.com/science/article/pii/S2352186422002619?r ef=pdf_download&fr=RR-2&rrf204e93d9810a8
Bài báo này giải quyết vấn đề dự đoán chất lượng không khí sử dụng một tập dữ liệu không thời gian lớn và bất cân bằng Hệ thống của họ dựa trên
3 công nghệ chính: tính toán song song trên hệ thống Hadoop và Spark phân tán, phương pháp phân vùng kép và thuật toán Random Forest Chúng em quan tâm nhiều hơn về cách họ sử dụng Hadoop và Spark, nên sẽ không đề cập đến phương pháp phân vùng kép và thuật toán Random Forest ở phần này
- Hadoop: sử dụng hai công nghệ chính là Hadoop Distributed File System (HDFS) và Yet Another Resource Negotiator (YARN)
HDFS được sử dụng để lưu trữ và truy vấn dữ liệu từ nhiều máy tính (node), sử dụng các node gồm master node và slave node Master node cài đặt HDFS được gọi là name node, có nhiệm vụ chia dữ liệu thành các phần vào các slave node, điều khiển các node này và đồng thời lưu trữ các thông tin cần thiết cho việc truy vấn dữ liệu Slave node cài đặt HDFS được gọi là data node, có nhiệm vụ lưu trữ một phần dữ liệu và đọc, ghi dữ liệu dưới sự chỉ đạo của name node
YARN gồm hai node gọi là quản lý tài nguyên và quản lý nhân sự (các node), có nhiệm vụ điều chỉnh tài nguyên hiện có như bộ nhớ, CPU, trên các máy tính, lên lịch cho những công việc cần làm, làm khi nào, ở đâu, giao tiếp giữa các node và giao việc cho các node
- Spark Core được tác giả sử dụng để thực hiện những công việc đọc, ghi dữ liệu và tính toán trong bộ nhớ, sử dụng Resilient Distributed Dataset (RDD) để tăng tốc độ tính toán Tuy nhiên RDD không hỗ trợ làm việc với kiểu dữ liệu không gian, nên tác giả đã sử dụng thư viện GeoSpark để hỗ trợ làm việc với kiểu dữ liệu này
Có thể mô tả lại cấu trúc hệ thống mà tác giả đã xây dựng như sau.
Method
Mô tả dataset
Dữ liệu được sử dụng trong dự án này lấy từ https://open-meteo.com/, là dữ liệu được phép sử dụng cho các hoạt động phi thương mại
Tập dữ liệu được sử dụng bao gồm 2 phần chính: tập dữ liệu dùng để huấn luyện mô hình học máy và tập dữ liệu dùng để dự đoán Trong đó, tập dữ liệu huấn luyện gồm dữ liệu về thời tiết và dữ liệu về chất lượng không khí, còn tập dữ liệu dự đoán thì chỉ có dữ liệu về thời tiết mà chưa có dữ liệu về chất lượng không khí Chúng em sẽ sử dụng dữ liệu thời tiết được dự báo trước này để dự đoán chất lượng không khí vào những ngày đó
12 Địa điểm sẽ được lựa chọn trên bản đồ, vậy nên không có thông tin về vị trí trong các tập dữ liệu Mỗi địa điểm mới được chọn sẽ lấy ra một tập dữ liệu khác nhau Dữ liệu được lấy trực tiếp từ API, chuyển đổi thành dataframe và xử lý, không cần thông qua công cụ lưu trữ nào a Tập dữ liệu huấn luyện: gồm 5016 bản ghi, mỗi bản ghi ứng với 1 giờ, được lấy trong khoảng thời gian từ 210 ngày trước đến 2 ngày trước so với hiện tại (khoảng 7 tháng) Lý do nhóm em không lấy dữ liệu đến sát ngày hiện tại là do trên trang web chỉ cập nhật đến 2 ngày trước hiện tại
Nhóm em lựa chọn 5016 bản ghi là do con số này đủ để xây dựng một mô hình đủ chính xác cho bài toán dự đoán chất lượng không khí Không nên lấy khoảng thời gian quá xa do đặc thù chất lượng không khí bị ảnh hưởng bởi nhiều yếu tố, trong đó có những yếu tố chỉ xuất hiện trong một khoảng thời gian, ít khi lặp lại Ví dụ như đại dịch COVID-19, nếu chúng ta đưa cả khoảng thời gian xảy ra đại dịch vào trong tập dữ liệu này để dự đoán cho khoảng thời gian không có dịch thì kết quả sẽ không còn đúng nữa
Tập dữ liệu này được ghép từ 2 phần: thời tiết và chất lượng không khí
Dữ liệu về thời tiết có dạng như sau:
Dữ liệu về chất lượng không khí có dạng như sau:
Sau khi xử lý gộp hai dữ liệu này lại, tập dữ liệu sẽ có các thuộc tính như sau:
+ date: ngày và giờ ghi số liệu
+ temperature_2m: nhiệt độ tại khoảng cách 2m so với mặt đất
+ relative_humidity_2m: độ ẩm tại khoảng cách 2m so với mặt đất + dew_point_2m: sương mù tại khoảng cách 2m so với mặt đất
+ apparent_temperature: nhiệt độ biểu kiến
+ precipitation: tổng lượng mưa của giờ trước
+ snow_depth: độ dày tuyết trên mặt đất
+ cloud_cover: tổng độ che phủ mây
+ cloud_cover_low: độ che phủ mây ở tầng thấp (2km)
+ surface_pressure: áp suất không khí trên bề mặt
+ et0_fao_evapotranspiration: lượng thoát hơi nước
+ wind_speed_10m: tốc độ gió tại khoảng cách 10m so với mặt đất + wind_direction_10m: hướng gió tại khoảng cách 10m so với mặt đất
+ wind_gusts_10m: gió giật tại khoảng cách 10m so với mặt đất + us_aqi: chỉ số chất lượng không khí (air quality index), là đặc trưng cho chất lượng không khí, được tính theo chuẩn Hoa Kỳ
Giá trị AQI theo chuẩn Hoa Kỳ được phân thành các mức như sau:
● 101 - 150: có hại cho nhóm người nhạy cảm
15 b Tập dữ liệu dự đoán: gồm 168 bản ghi, mỗi bản ghi ứng với 1 giờ, dự báo thời tiết trong vòng 7 ngày tới Tập dữ liệu này chỉ bao gồm dữ liệu về thời tiết, tức là có các thuộc tính giống hệt như mô tả ở trên ngoại trừ thuộc tính
Các thuộc tính được chúng em lựa chọn kỹ lưỡng từ hàng chục các thuộc tính thời tiết sao cho chúng có ý nghĩa nhất với mô hình
+ Ngày và giờ là thuộc tính quan trọng, dùng để kết nối các tập dữ liệu với nhau và lựa chọn số ngày mong muốn sử dụng
+ Các thuộc tính nhiệt độ, độ ẩm, sương mù, lượng mưa, tuyết, độ che phủ mây, áp suất không khí đều có ảnh hưởng lớn đến chất lượng không khí ở thời điểm hiện tại
+ Các thuộc tính như lượng thoát hơi nước, tốc độ gió, hướng gió và gió giật không chỉ ảnh hưởng đến chất lượng không khí của hiện tại mà còn liên quan đến chất lượng không khí của khoảng thời gian sau đó
Mô tả về công nghệ quản lý dữ liệu được sử dụng trong dự án
❖ Khác với các công nghệ như Apache Spark, Hadoop hay Kafka rất thích hợp để xử lý dữ liệu lớn với quy mô phân tán Pandas thường được sử dụng để xử lý dữ liệu trung bình đến lớn trên một máy đơn (single machine) Nó là một thư viện xử lý dữ liệu rất mạnh trên Python, cung cấp các cấu trúc dữ liệu nhanh, mạnh mẽ, linh hoạt Pandas được thiết kế để làm việc dễ dàng và trực quan với dữ liệu có cấu trúc (dạng bảng, đa chiều, không đồng nhất) và dữ liệu chuỗi thời gian.
❖ Chúng em sử dụng Pandas để tổ chức và biểu diễn dữ liệu đầu vào.
- Cụ thể, Pandas đóng vai trò quan trọng trong việc chuyển đổi dữ liệu từ định dạng JSON được trả về từ OpenMeteo API thành một cấu trúc dữ liệu là DataFrame để dễ quản lý và xử lý Sau đây là mô tả chi tiết về vai trò của Pandas trong từng hàm cụ thể:
● Sử dụng Pandas để tạo DataFrame “hourly_dataframe” từ dữ liệu thời tiết cập nhập hàng giờ được trả về từ OpenMeteo Air Quality API
● Dữ liệu bao gồm thời gian “date” và chỉ số chất lượng không khí “us_aqi”
● Pandas giúp xử lý thông tin thời gian, chuyển đổi đơn vị thời gian và tạo một chuỗi thời gian có tần suất giữa các giờ + Hàm “getWeatherHistory” và “getWeatherForecast ”:
● Sử dụng Pandas để tạo DataFrame “hourly_dataframe” từ dữ liệu thời tiết hàng giờ được trả về từ OpenMeteo Weather Archive API
● Dữ liệu bao gồm thời gian “date” và các biến thời tiết như
“nhiệt độ”, “độ ẩm”, “điểm sương”, “áp suất không khí”, v.v.
● Pandas giúp xử lý thông tin thời gian và tạo một cấu trúc dữ liệu dễ quản lý cho việc phân tích dữ liệu thời tiết
- Tiếp đó, Pandas được sử dụng trong quá trình chuẩn bị và xử lý dữ liệu trước khi đưa vào mô hình học máy trong Apache Spark Cụ thể với hàm
● Sử dụng Pandas để thực hiện việc kết hợp (merge) dữ liệu từ
“air_history_pd” và “weather_history_pd” dựa trên cột “date” Kết
19 quả sau cùng là “data_weather_pd”, một DataFrame Pandas chứa dữ liệu thời tiết và chất lượng không khí đã được kết hợp
● Tạo DataFrame Spark “data” từ “data_weather_pd” để chuẩn bị cho quá trình huấn luyện mô hình trong Apache Spark
● Điền giá trị thiếu trong “data” bằng 0
- Tóm lại, trong tất cả các hàm này, Pandas đóng vai trò quan trọng trong việc chuẩn hoá dữ liệu từ API và biểu diễn dữ liệu thời tiết dưới dạng DataFrame để thực hiện các thao tác xử lý và phân tích dữ liệu Pandas cũng hỗ trợ quá trình xử lý thông tin thời gian, giúp tạo ra chuỗi thời gian có tần suất cố định cho mỗi giờ Và được sử dụng trong quá trình chuẩn bị và xử lý dữ liệu trước khi đưa vào mô hình học máy trong Apache Spark
❖ Chúng em lựa chọn sử dụng thư viện Pandas cho công việc chuẩn hoá và xử lý dữ liệu đầu vào trước khi đưa vào mô hình học máy vì những lý do sau đây:
1) Độ Hiệu Quả và Linh Hoạt: a) Pandas được tối ưu hóa để xử lý dữ liệu có cấu trúc, chẳng hạn như các bảng dữ liệu, chuỗi thời gian và dữ liệu chuỗi b) Có khả năng xử lý các tập dữ liệu lớn trên một máy tính và cũng có thể tích hợp với các công nghệ xử lý dữ liệu lớn như Apache Spark
2) Tích Hợp Dữ Liệu Từ Nhiều Nguồn: a) Hỗ trợ đọc và ghi dữ liệu từ và đến nhiều định dạng khác nhau như CSV, Excel, SQL, JSON, và nhiều định dạng khác b) Có thể tích hợp dữ liệu từ nhiều nguồn khác nhau thành một cấu trúc dữ liệu duy nhất
3) Xử Lý Dữ Liệu Thiếu Hụt: a) Pandas có nhiều công cụ để xử lý và điền giá trị cho dữ liệu thiếu hụt một cách linh hoạt b) Hỗ trợ các phương pháp như xóa dữ liệu thiếu, điền giá trị trung bình, median, hoặc sử dụng các chiến lược điền giá trị phức tạp hơn
❖ Dự án của chúng em sử dụng đến các module sau đây của Apache Spark:
- Spark được sử dụng để xử lý dữ liệu phân tán từ nhiều nguồn khác nhau Dữ liệu thời tiết và chất lượng không khí được lấy từ các API khác nhau, và sau đó được kết hợp và chuyển đổi thành Spark DataFrame để sử dụng cho việc huấn luyện mô hình.
- Spark MLlib là thư viện học máy tích hợp trong Spark, cung cấp các thuật toán học máy phổ biến Trong dự án này, chúng em sử dụng thuật toán Random Forest Regressor để xây dựng mô hình học máy.
- Spark ML Pipeline được sử dụng để tự động hóa quá trình chuẩn bị dữ liệu và huấn luyện mô hình Các bước tiền xử lý dữ liệu và xây dựng mô hình được đặt trong một đối tượng Pipeline để thực hiện chúng theo thứ tự
❖ Chúng em lựa chọn sử dụng các module của Apache Spark để xây dựng mô hình vì những tính năng sau :
- Xử Lý Dữ Liệu Lớn:
Spark là một framework phân tán được thiết kế đặc biệt để xử lý dữ liệu lớn trên cụm máy tính Trong trường hợp này, khi làm việc với dữ liệu thời tiết từ nhiều nguồn khác nhau, việc sử dụng Spark giúp tận dụng sức mạnh tính toán phân tán để xử lý dữ liệu có kích thước lớn
- Song Song và Đồng Thời:
Spark cung cấp khả năng thực hiện các phép tính đồng thời (concurrent) trên nhiều node máy tính, tận dụng sức mạnh của cụm tính toán Điều này là quan trọng khi xử lý và huấn luyện trên dữ liệu lớn
Spark DataFrame là một API mạnh mẽ cho xử lý dữ liệu phân tán Nó giống với DataFrame trong Pandas, nhưng có khả năng xử lý dữ liệu trên nhiều máy tính Sự tương đồng giữa Pandas và Spark DataFrame giúp dễ dàng chuyển đổi và làm việc với dữ liệu
Workflow
Demo
Thiết kế hệ thống
Khi người dùng chọn 1 điểm trên bản đồ, tọa độ của điểm đó được đóng gói vào một đối tượng JSON gồm 2 trường là lat (vĩ độ) và lon (kinh độ) và gửi đi dưới dạng payload trong yêu cầu HTTP tới backend server
Trên phía server, ta sử dụng FastAPI để trích xuất dữ liệu từ yêu cầu HTTP được gửi từ phía client dưới dạng các số thực, đưa vào làm input cho thuật toán
Khi xử lý hoàn tất, máy chủ trả về kết quả dưới dạng một danh sách cho trình duyệt và hiển thị dữ liệu trên giao diện người dùng.
Thiết kế giao diện
Giao diện được thiết kế gồm 2 phần chính:
Bên phải là phần bản đồ để người dùng chọn địa điểm cần xem chất lượng không khí
[1] Nhập tên để tìm địa điểm ở thanh tìm kiếm
[4] Định vị vị trí hiện tại của người dùng Bên trái là bảng hiển thị dự báo chất lượng không khí tại điểm đó trong vòng 7 ngày kế tiếp Kết quả hiển thị theo từng giờ