Sau khi tạo Dockerfile, người dùng sẽ có 1 Container lưu trữ bộ thư viện và ứng dụng của mình.. Pull, Run: thao tác này áp dụng khi người dùng muốn truy cập container này bằng 1 thiết
MÔ TẢ DỮ LI ỆU VÀ HƯỚ NG TIẾP CẬN
Hướng ti p c ế ậ n
Đối với t p d ậ ữliệu trên đề xuất dùng phương pháp hồi quy tuyến tính để đưa ra mô hình dự đoán cho xu hướng tình hình d ch COVID-19 trong th i gian tị ờ ới Đố ớ ậi v i t p d ữ liệu lớn và được cập nhật hàng ngày d ữliệu sẽ được c p nh t vào hậ ậ ệ thống bigdata và được phân tán trên nhiều ‘node’ khác nhau để hỗ trợ cho vi c x lý d u l n sau này ệ ử ữliệ ớ
CƠ SỞ LÝ THUYẾT
Docker
Docker là m t n n tộ ề ảng mã ngu n mồ ở để xây d ng, tri n khai và qu n lý các ự ể ả ứng dụng được container (trên nền tảng ảo hóa) Docker cung cấp cách để building, deloying và running ng d ng d dàng b ng cách s d ng containers ứ ụ ễ ằ ử ụ
Docker cho phép các nhà phát triển đóng gói ng d ng vào container Các thành ứ ụ phần thực thi được chu n hóa k t h p mã nguẩ ế ợ ồn ứng d ng v i t t cụ ớ ấ ả các thư viện Và nó phụ thuộc c a h ủ ệ điều hành (OS) c n thiầ ết đểchạy mã trong b t kấ ỳ môi trường nào Trong khi các nhà phát tri n có th t o container mà không cể ể ạ ần đến Docker Docker giúp vi c xây d ng, tri n khai, qu n lý container tr nên dệ ự ể ả ở ễ dàng, đơn giản, an toàn hơn
Về cơ bản, đây là một bộ công cụ cho phép các nhà phát tri n xây d ng, tri n khai, ch y, ể ự ể ạ cập nh t và d ng các container b ng cách s d ng các lậ ừ ằ ử ụ ệnh đơn giản và tự động hóa tiết kiệm công việc.
Docker được thiết kế dưới mô hình ki n trúc client-server Docker server (Docker ế daemon) có vai trò tri n khai, ch y và phân b các Docker container Docker client và ể ạ ổDocker server có thể được phân b cùng server ho c khác server Chúng k t n i thông ổ ặ ế ố qua n n t ng REST API d a trên UNIX sockets ho c network interface ề ả ự ặ
Docker daemon đóng vai trò là thành phần core, theo dõi và nghe API request và quản lý các Docker object Docker daemon ở các host khác nhau vẫn có khả năng giao tiếp và kết nối với nhau
Docker client là công cụ chính để người dùng thực hiện các thao tác trên nền tảng
Khi người dùng sử dụng giao diện dòng lệnh (CLI) để gõ lệnh "Docker run imageABC", yêu cầu sẽ được gửi đến dockerd thông qua API Sau đó, Docker daemon sẽ tiếp nhận và xử lý yêu cầu Điều đáng chú ý là Docker client có khả năng kết nối, giao tiếp và truyền tải yêu cầu đến nhiều Docker daemon khác nhau.
Docker registry hiểu theo nghĩa đơn giản là kho lưu trữ các Image Điển hình là Docker Hub, mặt khác người dùng có thể tự thiết lập một Docker registry của riêng mình
Hình 2.2: Cơ chếhoạt động của Docker
Cơ chế hoạt động của Docker không đơn giản như cách sử d ng mà có ph c tụ ứ ạp hơn Docker hoạt động trên s k t h p gi a 1 Docker engine v i 2 y u tự ế ợ ữ ớ ế ố:
+ Giao ti p gi a server và client nh REST API ế ữ ờ
Docker hoạt động thông qua vi c cung c p nhệ ấ ững phương thức tiêu chuẩn để chạy mã của người dùng Theo đó, các container thực hi n thao tác o hóa hệ ả ệ điều hành phía máy chủ Docker được thiết lập trên từng máy chủ và được hỗ trợ các câu lệnh đơn giản có nhi m v tri n khai, khệ ụ ể ởi động ho c t m d ng Container M t s d ch vặ ạ ừ ộ ố ị ụ AWS như AWS Fargate, Amazon ECS, Amazon EKS và AWS Batch hỗ trợ người dùng ch y các ạ container Docker quy mô l n m t cách thu n tiở ớ ộ ậ ện và nhanh chóng hơn
Docker hoạt động d a trên th t ự ứ ự 3 bước: Build - Push Pull, Run –
Hình 2.3: Th t ứ ự các bước hoạt động Docker
Để sử dụng Docker, người dùng cần bắt đầu bằng cách truy cập Docker và tạo một Dockerfile, trong đó chứa code của họ Dockerfile này sau đó sẽ được thiết lập trên một thiết bị đã cài đặt Docker Engine Sau khi tạo Dockerfile, người dùng sẽ có một Container lưu trữ bộ thư viện và ứng dụng của họ.
Push: có được container sẽ được người dùng push lên đám mây và lưu trữ tại đó
Thao tác này được thực hiện qua mạng Internet
Pull, Run: thao tác này áp dụng khi người dùng muốn truy cập container này bằng
1 thiết bị khác (đã được cài đặt Docker Engine) thì yêu cầu phải Pull container này về máy và cho phép quá trình Run Container diễn ra
2.1.4 Sự khác nhau gi a Hypervisors và Dockerữ
Hình 2.4: Sự khác nhau trong ki n trúc Hypervisor và Docker ế
Hypervisor là ảo hỏa nằm ở tầng Hardware (phần cứng), tức là mô phỏng phần cứng và chạy những OS con trên phần cứng đó (Các công cụ Hypervisor như Virtual Box, VMware )
Sự khác nhau giữa Hypervisors và Docker
Docker: Dùng chung kernel, chạy độc lập trên Host Operating System và có thể chạy trên bất kì hệ điều hành nào cũng như cloud Khởi động và làm cho ứng dụng sẵn sàng chạy trong 500ms, mang lại tính khả thi cao cho những dự án cần sự mở rộng nhanh. Virtual Machine(Hypervisors): Cần thêm một Guest OS cho nên sẽ tốn tài nguyên hơn và làm chậm máy thật khi sử dụng Thời gian khởi động trung bình là 20s có thể lên đến hàng phút, thay đổi phụ thuộc vào tốc độ của ổ đĩa
Dễ sử dụng: cách sử dụng Docker khá đơn giản, phù hợp với nhiều đối tượng như lập trình viên, sys admin… Docker khai thác lợi thế của container để triển khai và kiểm tra nhanh chóng Docker hỗ trợ đóng gói ứng dụng trên laptop và chạy chương trình trên public cloud, private cloud… Câu lệnh là “Build once, run anywhere”
Tốc độ: Docker container có ưu điểm là nhẹ và nhanh, cho phép người dùng thiết lập và chạy docker container với tốc độ tính bằng giây
Môi trường chạy và khả năng mở rộng: người dùng có thể phân nhỏ các chức năng trên ứng dụng thành các container riêng lẻ Với Docker đem đến khả năng liên kết các container với nhau tạo lập thành 1 ứng dụng, thuận tiện hơn khi thực hiện thao tác scale, cập nhật các thành phần riêng biệt
2.1.6 Một số công c và thu t ng trong Docker ụ ậ ữ
Mọi container Docker bắt đầu bằng một file văn bản đơn giản chứa hướng dẫn về cách t o image container Docker DockerFile t ạ ự động hóa ti n trình t o image Docker V ế ạ ề cơ bản, đây là danh sách các lệnh mà Docker Engine s ẽchạy để ậ t p h p image ợ
Docker image ch a mã nguứ ồn ứng d ng thụ ực thi cũng như tấ ảt c các công cụ, thư viện Kèm theo dependencies mà ng d ng cứ ụ ần đểchạy dướ ại d ng container Khi ta chạy Docker image, nó s ẽtrở thành m t phiên b n (ho c nhiộ ả ặ ều phiên b n) c a container ả ủ
Hadoop
Hadoop là một framwork giúp lưu trữ và x lý Big Data áp d ng MapReduce Nói ử ụ đơn giản cách khác nó s giúp s p x p d u sao cho user có th d dàng s d ng nhẽ ắ ế ữliệ ể ễ ử ụ ất MapReduce được Google tạo ra ban đầu để ử lý đố x ng dữ liệ ớu l n c a công ty hủ ọ
Ta còn có th gể ọi phương pháp này là Phân tán dữ liệu vì nó tách h t t p h p các dế ậ ợ ữ liệu ban đầu thành các d ữliệu nh và sỏ ắp x p lế ại chúng để d dàng tìm ki m và truy xuễ ế ất hơn, đặc biệt là việc truy xuất các d liệu tương đồng Ví dụ thưữ ờng th y nhấ ất là các đề xuất mà ta hay thấy ở Google tìm ki m ế
Hadoop là một nền tảng phân phối chức năng thông thường được phát triển dựa trên mô hình lập trình MapReduce Hadoop cho phép phát triển các ứng dụng phân tán bằng Java hoặc các ngôn ngữ lập trình khác như C++, Python, Pearl nhờ cơ chế streaming Mặc dù được viết bằng Java, Hadoop vẫn hỗ trợ tính năng này.
Hadoop Common: Đây là các thư viện và ti n ích c n thi t cệ ầ ế ủa Java để các module khác s d ng Nhử ụ ững thư viện này cung cấp h ệthống file và l p OS trớ ừu tượng, đồng thời chứa các mã lệnh Java đểkhởi động Hadoop
Hadoop YARN: Đây là framework để quản lý tiến trình và tài nguyên của các cluster
Hadoop Distributed File System (HDFS): Đây là hệ thống file phân tán cung cấp truy cập thông lượng cao cho ng dứ ụng khai thác d ữliệu
Hadoop MapReduce: Đây là hệ thống dựa trên YARN dùng để x lý song song các ử tập d ữliệu lớn
Hiện nay Hadoop đang ngày càng được mở rộng cũng như được nhiều framwork khác h ỗtrợ như Hive, Hbase, Pig Tùy vào mục đích sử d ng mà ta s áp d ng framework ụ ẽ ụ phù hợp để nâng cao hi u qu x lý d u c a Hadoop ệ ả ử ữliệ ủ
Một user hay một ứng dụng có thể submit m t job lên Hadoop (hadoop job client) ộ với yêu c u x ầ ử lý cùng các thông tin cơ bản:
Truyền dữ liệu lên server(input) để ắt đầ b u phân tán dữliệu và đưa ra kết quả (output)
Các d ữliệu được ch y thông qua 2 hàm chính là map và reduce ạ o Map: s quét qua toàn b d u và phân tán chúng ra thành các d ẽ ộ ữliệ ữliệu con o Reduce: s thu th p các d u con l i và s p x p l i chúng ẽ ậ ữliệ ạ ắ ế ạ
Các thi t l p c ế ậ ụthể liên quan đến job thông qua các thông s truyố ền vào
Hadoop job client submit job (file jar, file th c thi) và bự ắt đầu l p l ch làm ậ ị việc(JobTracker) đưa job vào hàng đợi
Sau khi ti p nh n yêu c u t JobTracker, server cha(master) s phân chia công viế ậ ầ ừ ẽ ệc cho các server con(slave) Các server con sẽ thực hiện các job được giao và tr k t qu ả ế ả cho server cha
TaskTrackers dùng để ểm tra đả ki m bảo các MapReduce hoạt động bình thường và kiểm tra kết qu ảnhận được (quá trình output)
Khi “chạy Hadoop” có nghĩa là chạy một tập các trình nền - daemon, ho c các ặ chương trình thường trú, trên các máy ch khác nhau trên mủ ạng c a b n Nh ng trình nủ ạ ữ ền có vai trò cụ thể, m t s ộ ốchỉ t n t i trên mồ ạ ột máy ch , mủ ột số có th t n t i trên nhi u máy ể ồ ạ ề chủ
2.2.3Ưu điểm c a Hadoop ủ o Hadoop framework cho phép người dùng nhanh chóng vi t và ki m tra các h ế ể ệthống phân tán Đây là cách hiệu quả cho phép phân phối dữ liệu và công việc xuyên suốt các máy tr m nh ạ ờ vào cơ chế ử x lý song song c a các lõi CPU ủ o Hadoop không dựa vào cơ chế chịu l i c a ph n c ng fault-tolerance and high ỗ ủ ầ ứ availability (FTHA), thay vì v y bậ ản thân Hadoop có các thư viện được thi t kế ế để phát hiện và x các lửlý ỗi ở lớp ứng dụng o Hadoop có th phát tri n lên nhi u server v i c u trúc master-ể ể ề ớ ấ slave để đảm b o thả ực hiện các công vi c linh ho t và không b ệ ạ ịngắt quãng do chia nh công vi c cho các server ỏ ệ slave được điều khi n b i server master ể ở o Hadoop có th ể tương thích trên m i n n tọ ề ảng như Window, Linux, MacOs do được tạo ra t Java ừ
2.2.4Cài đặt cụm Hadoop v i Docker ớ Để cài đặt Hadoop trong Docker container, chúng ta c n Hadoop docker images ầ Chúng tôi s d ng ngu n d ử ụ ồ ữliệu dưới đây cho việc tạo image https://github.com/big-data-europe/docker-hadoop
Sau khi git được cài đặt trong hệ thống, chúng ta s ẽ có thư mục docker-hadoop Tiếp theo, chúng tôi hi u ch nh port và node trong file docker-compose.yml cho phù hệ ỉ ợp bài th c hành ự
Triển khai c m Hadoop b ng command: ụ ằ $ docker-compose up d –
Như đã trình bày ở phần giới thi u, mô hình hadoop c a chúng tôi g m 3 node, ệ ủ ồ được thể hiện như sơ đồ dưới đây
Sau khi cài đặt Hadoop thành công, sử dụng lệnh $ docker ps để kiểm tra các container đang chạy Hình 2.6 minh họa kết quả sau khi thực hiện thành công.
Hình 2.7: Kiểm tra sau khi cài đặt thành công Tiếp theo, ta truy cập http://localhost: 9870 để xem trạng thái hiện tại của hệ thống từ namenode:
Hình 2.8: Ki m tra tr ng thái hi n t i c a h ể ạ ệ ạ ủ ệthống
Sqoop
Hầu hết các công ty lưu dữ liệu trong RDBMS và các gi i pháp kho d ả ữliệu khác H ọ cần 1 cách để di chuy n d ể ữliệu vào Hadoop để làm các x lý khác nhau và tr k t qu ử ả ế ảtrở về RDBMS t ừHadoop S di chuy n d u có th x y ra trong th i gian th c (real time) ự ể ữliệ ể ả ờ ự hoặc t i nhi u thạ ề ời điểm (interval) khác nhau Chúng ta c n 1 công c giúp di chuy n d ầ ụ ể ữ liệ ừu t SQL sang Hadoop và t Hadoop sang SQL Sqoop (SQL to Hadoop) là 1 công c ừ ụ như vậy, dùng trích xu t (extract) d ấ ữliệu t non-Hadoop và chuyừ ển đổi (transform) chúng vào định dạng mà Hadoop có th ể dùng và sau đó nạp (load) chúng vào HDFS Cơ bản nó là công c ETL (Extracts, Transform và Load) t ụ ừ SQL vào Hadoop Điểm hay là nó trích xuất (extract) dữ liệ ừu t Hadoop và n p (load) chúng vào Non-SQL (hoạ ặc RDBMS) Cơ bản, Sqoop là 1 công c dòng l nh làm SQL thành Hadoop và Hadoop thành SQL Nó là ụ ệ
1 trình thông d ch dòng l nh Nó tị ệ ạo MapReduce job đằng sau để import d ữliệu t CSDL ừ bên ngoài vào HDF S.
Tất c các Hả ệ thống quản lý cơ sở ữ liệu hiện có đều được thiết kế với tiêu chuẩn d SQL Tuy nhiên, m i DBMS khác nhau v ỗ ề phương ngữ ở một mức độ nào đó Vì vậy, s ự khác biệt này đặt ra nh ng thách th c khi chuy n d ữ ứ ể ữliệu qua các h ệthống K t n i Sqoop ế ố là thành phần giúp vượt qua những thách th c này.ứ
Việc truy n tài li u gi a Sqoop Hadoop và mề ệ ữ ạng lưới hệ thống tàng trữ bên ngoài được triển khai v i sớ ự trợ giúp của những đầu n i cố ủa Sqoop Sqoop có nh ng trình liên ữ kết để thao tác v i mớ ột loạt cơ sở tài li u quan h ệ ệphổ ậ c p, g m có MySQL, PostgreSQL, ồ Oracle, SQL Server và DB2 M i trình liên k t này biỗ ế ết cách tương tác với DBMS tương quan c a nó Ngoài ra còn có m t trình liên kủ ộ ết JDBC chung để liên k t v i b t kế ớ ấ ể cơ sở tài liệu nào tương hỗ giao th c JDBC c a Java Ngoài ra, Sqoop Big data cung ứ ủ ứng những trình liên kết MySQL và PostgreSQL đượ ối ưu hóa sửc t d ng nh ng API dành riêng cho ụ ữ cơ sở tài liệu để triển khai chuy n hàng lo t m t cách hi u su t cao ể ạ ộ ệ ấ
Hình 2.9: C u trúc và cách th c hoấ ứ ạt động c a Sqoop ủ
Ngoài việc hỗ trợ nhiều dạng dữ liệu, Sqoop còn tích hợp nhiều trình kết nối bên thứ ba khác nhau để kết nối tới các kho dữ liệu, từ kho dữ liệu doanh nghiệp (bao gồm Netezza, Teradata và Oracle) đến các cơ sở dữ liệu NoSQL (chẳng hạn như Couchbase) Tuy nhiên, các đầu nối này không đi kèm với gói Sqoop; chúng cần được tải xuống riêng và có thể dễ dàng được thêm vào cài đặt Sqoop hiện có.
Xử lý phân tích s d ng Hadoop yêu c u t i mử ụ ầ ả ột lượng l n d ớ ữliệu t các ngu n khác ừ ồ nhau vào các c m Hadoop Quá trình t i dụ ả ữ ệ li u hàng loạt này vào Hadoop, t các nguừ ồn không đồng nhất và sau đó xử lý nó, đi kèm với một số thách thức nhất định Duy trì và đảm bảo tính nh t quán của d liệu và đảm bảo s d ng hi u quả tài nguyên, là một s ấ ữ ử ụ ệ ố yếu t cố ần xem xét trước khi lựa chọn cách ti p cế ận phù hợp để ả ữ t i d liệu
Tải dữ liệu bằng Scripts
Cách ti p c n truy n th ng c a vi c s d ng t p lế ậ ề ố ủ ệ ử ụ ậ ệnh để ả ữ liệ t i d u không phù hợp với vi c t i dệ ả ữ liệu hàng lo t vào Hadoop; cách ti p c n này không hi u qu và r t tạ ế ậ ệ ả ấ ốn thời gian
Truy c p tr c ti p vào d ậ ự ế ữliệu bên ngoài thông qua ng d ng Map-Reduce ứ ụ Cung c p quy n truy c p tr c ti p vào dấ ề ậ ự ế ữ liệu ở các hệ thống bên ngoài (mà không cần t i vào Hadoop) cho các ng d ng thu nh bả ứ ụ ỏ ản đồ sẽ làm ph c t p các ứ ạ ứng dụng này
Vì v y, cách làm này không kh thi ậ ả
Ngoài kh ả năng làm việc v i d ớ ữliệu kh ng l , Hadoop có th làm vi c v i d ổ ồ ể ệ ớ ữliệu ở nhiều d ng khác nhau Vì vạ ậy, để ải dữ liệu không đồ t ng nhất như vậy vào Hadoop, các công cụ khác nhau đã được phát triển Sqoop và Flume là hai công c t i d ụ ả ữliệu như vậy
Sqoop được sử dụng để nhập dữ liệu từ các nguồn dữ liệu có cấu trúc như
Flume được sử dụng để chuyển dữ liệu phát trực tuyến hàng loạt sang HDFS
HDFS là một hệ thống tệp phân tán được sử dụng bởi hệ sinh thái Hadoop để lưu trữ dữ liệu
Sqoop có kiến trúc dựa trên trình kết nối Trình kết nối biết cách kết nối với nguồn dữ liệu tương ứng và tìm nạp dữ liệu
Flume có kiến trúc dựa trên tác nhân Ở đây, một đoạn mã được viết (được gọi là
‘tác nhân’) đảm nhiệm việc tìm nạp dữ liệu
HDFS có kiến trúc phân tán nơi dữ liệu được phân phối trên nhiều nút dữ liệu
HDFS là điểm đến để nhập dữ liệu bằng Sqoop
Dữ liệu chuyển đến HDFS thông qua không hoặc nhiều kênh
HDFS là điểm đến cuối cùng để lưu trữ dữ liệu
Tải dữ liệu Sqoop không theo hướng sự kiện
Tải dữ liệu Flume có thể được thúc đẩy bởi một sự kiện
HDFS chỉ lưu trữ dữ liệu được cung cấp cho nó bằng bất kỳ phương tiện nào Để nhập dữ liệu từ các nguồn dữ liệu có cấu trúc, người ta chỉ phải sử dụng các lệnh Sqoop, vì các trình kết nối của nó biết cách tương tác với các nguồn dữ liệu có cấu trúc và tìm nạp dữ liệu từ chúng Để tải dữ liệu phát trực tuyến như tweet được tạo trên Twitter hoặc tệp nhật ký của máy chủ web, nên sử dụng Flume Tác nhân Flume được xây dựng để tìm nạp dữ liệu phát trực tuyến
HDFS có các lệnh shell tích hợp riêng để lưu trữ dữ liệu vào đó HDFS không thể nhập dữ liệu phát trực tuyến
Specify JDBC connect string Specify connection manager class to use Manually specify JDBC driver class to use Override $HADOOP_MAPRED_HOME Print usage instructions
Set path for a file containing the authentication password password from console Set authentication password Set authentication username Print more information while working Optional properties file that provides connection parameters
–relaxed-isolation Set connection transaction isolation to read uncommitted for the mappers
Tạo m t t p l nh import d u RDMS (MySql) và h ộ ậ ệ ữliệ ệthống Hadoop
MYSQL_TABLE=covid_daily sqoop import connect jdbc:mysql://$MYSQL_HOST/$MYSQL_DB table $MYSQL_TABLE
username $MYSQL_USER password $MYSQL_PASS -m 1
Dữ liệu COVID đã được xử lý và lưu trữ trong cơ sở dữ liệu MySQL với địa chỉ IP máy chủ là 192.168.88.200 và cổng mặc định là 3306 Để tự động kết nối với hệ thống MySQL, Sqoop cung cấp các lệnh MySQL_USER, MySQL_PASS, tên cơ sở dữ liệu đích và bảng dữ liệu cần nhập vào hệ thống Hadoop Ngoài ra, Sqoop còn cung cấp các trình xử lý để nhập dữ liệu vào hệ thống Hadoop.
Hình 2.10: Sqoop ánh x ạ ra đoạn mã java Sqoop cũng cung cấp một tập lệnh để làm nhiệm v export d ụ ữliệu vào RDMS như sau:
MYSQL_TABLE=covid_daily sqoop export connect jdbc:mysql://$MYSQL_HOST/$MYSQL_DB table $MYSQL_TABLE username
$MYSQL_USER password $MYSQL_PASS
export-dir /emp/emp_data
Cú pháp Export Sqoop được liệt kê lại như sau:
Specify JDBC connect string Specify connection manager class to use Manually specify JDBC driver class to use Override $HADOOP_MAPRED_HOME Print usage instructions
Set path for a file containing the authentication password
Read password from console Set authentication password Set authentication username Print more information while working Optional properties file that provides connection parameters
MÔ HÌNH TOÁN
Giới thi u Linear Regression ệ
Ví dụ đơn giản: Một căn nhà rộng 𝑥 1 𝑚 2 𝑣à 𝑐ó 𝑥 2 phòng ng và cách trung tâm ủ thành ph ố𝑥 3 km có giá tr bao nhiêu Gi s chúng ta có s ị ả ử ốliệu th ng kê t ố ừ 1000 căn nhà trong thành phố đó, liệu r ng khi có mằ ột căn nhà mới với các thông số về diện tích, số phòng ng và kho ng cách t i trung tâm, chúng ta có th dủ ả ớ ể ự đoán được giá của căn nhà đó không? Nếu có thì hàm dự đoán 𝑦=𝑓(𝑥) sẽ có dạng như thế nào? Ở đây 𝑥 [𝑥 1 ,𝑥 2 ,𝑥 3 ] là m t vector hàng ch a giá tr input, y là m t sộ ứ ị ộ ố vô hướng (scalar) bi u diể ễn output (t c giá cứ ủa căn nhà trong giá trị này)
Một cách đơn giản nhất, chúng ta có th ểthấ ằy r ng: i) di n tích nhà càng l n thì giá ệ ớ nhà càng cao; ii) s ố lượng phòng ng càng l n thì giá nhà càng cao; iii) càng xa trung tâm ủ ớ thì giá nhà càng gi m M t hàm sả ộ ố đơn giản nh t có th mô t m i quan hấ ể ả ố ệ giữa giá nhà và 3 đại lượng đầu vào là: y ≈ f(x) = y f(x) = x 1 1 ω + x 2 ω 2 + x 3 ω 3 + ω 0 (1) Trong đó 𝜔 1 ,𝜔 2 ,𝜔 3 ,𝜔 0 là h ng sằ ố, 𝜔 0 còn được gọi là bias M i quan hố ệ 𝑦≈ 𝑓(𝑥) là mối quan h tuy n tính (linear) Bàệ ế i toán chúng ta đang làm là một bài toán thuộc loại regression Bài toán đi tìm các hệ số tối ưu {𝜔 1 ,𝜔 2 ,𝜔 3 ,𝜔 0 } chính vì vậy được g i là ọ bài toán Linear Regression
Lưu ý cần nhớ: y là giá trị thực tế của kết quả (dựa trên dữ liệu thống kê có trong tập dữ liệu huấn luyện), trong khi 𝑦 là giá trị được mô hình hồi quy tuyến tính dự đoán được Nói chung y và 𝑦 là hai giá trị khác nhau do có sai số mô hình Tuy nhiên, chúng ta mong muốn sai số này là rất nhỏ.
Chú ý 2: Linear hay tuy n tính ế hiểu một cách đơn giản là th ng, ph ng Trong không ẳ ẳ gian hai chi u, m t hàm sề ộ ố được g i là tuy n tính nọ ế ếu đồ thị ủ c a nó có d ng mạ ột đường thẳng Trong không gian ba chi u, một hàm số ề được goi là tuy n tính nế ếu đồthị c a nó ủ có d ng m t m t ph ng Trong không gian nhiạ ộ ặ ẳ ều hơn 3 chiều, khái ni m m t ph ng không ệ ặ ẳ còn phù h p nợ ữa, thay vào đó, một khái niệm khác ra đời được g i là siêu m t ph ng ọ ặ ẳ(hyperplane) Các hàm s tuyố ến tính là các hàm đơn giản nh t, vì chúng thu n ti n trong ấ ậ ệ việc hình dung và tính toán Chúng ta sẽ được th y trong các bài vi t sau, tuy n tính rấ ế ế ất quan trọng và h u ích trong các bài toán Machine Learning Kinh nghi m cá nhân tôi cho ữ ệ thấy, trước khi hiểu được các thu t toán phi tuy n (non-linear, không ph ng), chúng ta cậ ế ẳ ần nắm vững các k ỹthuật cho các mô hình tuy n tính ế
Phân tích toán học
Mục này gi i thiớ ệu tóm lược phương pháp tối ưu đàn kiến Trước khi mô tả thu t ậ toán t ng quát, ta c n tìm hi u v ổ ầ ể ề đồthị ấu trúc cho bài toán t c ối ưu tổ ợp h
Trong phương trình (1) ở trên nếu chúng ta đặt 𝑤= [𝜔0,𝜔 1 ,𝜔 2 ,𝜔 3 ] 𝑇 = là vector (cột) h s c n ph i tệ ố ầ ả ối ưu và 𝑥 = [1,𝑥 1 ,𝑥 2 ,𝑥 3 ] là vector (hàng) d ữliệu đầu vào mở rộng
Số 1 được thêm vào ở đầu hàng để phép tính đơn giản hơn và thuận tiện hơn cho việc tính toán Khi đó phương trình (1) có thể được viết dướ ạng: i d
Chúng ta mong mu n r ng s sai khác e gi a giá trố ằ ự ữ ị thực y và giá tr dị ự đoán 𝑦 là nhỏ nhất Nói cách khác, chúng ta mu n giá tr ố ị sau đây càng nhỏ càng t t ố
2 đểthuận ti n cho việc tính toán (khi đạo hàm thì h sệ ệ ố 1 2 s b triẽ ị ệt tiêu Chúng ta cần 𝑒 2 vì 𝑒=𝑦−𝑦 có th là m t s âm, vi c nói e nh ể ộ ố ệ ỏnhất s ẽ không đúng vì khi 𝑒= −∞ là r t nh ấ ỏ nhưng lại sai lệch rất lớn
28 Điều tương tự xảy ra với tất cả các cặp (input, outcome) (𝑥 𝑗 ,𝑦 𝑖 ),𝑖= 1,2, …𝑁, với
N là số lượng dữ liệu quan sát được Điều chúng ta mu n, t ng sai s là nhố ổ ố ỏ nhất, tương đương với việc tìm w để hàm số sau đạt giá trị nhỏ nhất:
Hàm số ℒ(𝑤) được g i là hàm mọ ất mát (loss function) c a bài toán Linear ủ Regression Chúng ta luôn mong mu n r ng s mố ằ ự ất mát (sai s ) là nh ố ỏnhất, điều đó đồng nghĩa với việc tìm vector h s w sao cho giá tr c a hàm m t mát này càng nh càng t t ệ ố ị ủ ấ ỏ ố Giá tr c a w làm cho hàm mị ủ ất mát đạt giá trị nhỏ nhất được gọi là điểm tối ưu (optimal point), ký hiệu:
𝑊 ℒ(𝑤) Trước khi đi tìm lời giải, chúng ta đơn giả hóa phép toán trong phương trình hàm n mất mát (2) Đặt 𝑦= [𝑦 1 ;𝑦 2 ; … ;𝑦 𝑁 ] là m t vector c t ch a tộ ộ ứ ất c các output c a training ả ủ data; 𝑋= [𝑋1;𝑋 2 ; … ;𝑋 𝑁 ] là ma tr n dậ ữ liệu đầu vào (m r ng) mà m i hàng c a nó là ở ộ ỗ ủ một điểm dữ liệu Khi đó hàm số mất mát ℒ(𝑤) được viết dưới d ng ma trạ ận đơn giản hơn:
2ǁ𝑦−𝑋 𝑤ǁ 2 2 (3) Với ǁ𝑧ǁ 2 là Euclidean norm (chu n Euclid, hay kho ng cách Euclid), nói cách khác ẩ ả ǁ𝑧ǁ 2 2 là t ng cổ ủa bình phương mỗi ph n t c a vector z Tầ ử ủ ới đây, ta đã có mộ ạng đơn t d giản của hàm mất mát được viết như phương trình (3).
3.2.4 Nghiệm cho bài toán Liner Regression
Cách phổ biến nhất để tìm nghiệm của bài toán tối ưu là giải phương trình đạo hàm bằng 0 Tất nhiên, đó là khi việc tính đạo hàm và việc giải phương trình đạo hàm bằng 0 không quá phức tạp Thật may mắn, với các mô hình tuyến tính, hai việc này là khả thi.
29 Đạo hàm theo w c a hàm m t mát là: ủ ấ
𝜕𝑤 =𝑋 𝑇 (𝑋𝑤−𝑦) Phương trình đạo hàm bằng 0 tương đương với:
𝑋 𝑇 𝑋𝑤=𝑋 𝑇 𝑦 ≜ 𝑏 (4) (Ký hiệu 𝑋 𝑇 𝑦 ≜ 𝑏 nghĩa là đặt 𝑋 𝑇 𝑦 b ng b) ằ
Nếu ma tr n vuông ậ 𝐴=≜ 𝑋 𝑇 𝑋𝑤 khả ngh ch (non-singular hay invertible) thì ị phương trình (4) có nghiệm duy nhất: 𝑤=𝐴 −1 𝑏
Với khái ni m gi nghệ ả ịch đảo, điểm tối ưu của bài toán Linear Regression có dạng:
MÔ HÌNH THỰC NGHIỆM
Giới thi u h ệ ồi quy đa thức
Hồi quy đa thức là m t d ng h i quy tuyộ ạ ồ ến tính trong đó mối quan h ệgiữa các biến độc l p x và bi n ph thuậ ế ụ ộc y được mô hình hoá dưới dạng đa thức b c n H i quy ậ ồ đa thức phù h p v i m i quan h phi tuy n gi a giá trợ ớ ố ệ ế ữ ị trung bình có điều kiện tương ứng c a y, ủ được ký hi u là E(y|x) ệ
4.1.1Nguyên nhân dùng hồi quy đa thức
Có m t s m i quan h mà nhà nghiên c u sộ ố ố ệ ứ ẽ giả thuyết là đường cong Rõ ràng, loại trường hợp như vậy s bao g m mẽ ồ ột s hố ạng đa thức
Kiểm tra dư lượng, nếu chúng ta cố gắng điều chỉnh một mô hình tuyến tính cho phù h p v i dợ ớ ữ liệu cong, thì m t biộ ểu đồ phân tán c a phủ ần dư (trục Y) trên b dộ ự đoán (trục X) s có các bẽ ản vá s có nhiẽ ều phần dư dương ở giữa Do đó trong tình huống như vậy là không thích hợp.
Một gi ả định trong phân tích h i quy tuy n tính bồ ế ội thông thường là t t c các biấ ả ến độc lập là độc lập Trong mô hình hồi quy đa thức, gi ảthiết này không được thoả mãn
4.1.2Công dụng của hồi quy đa thức
Về cơ bản đượ ử dụng để xác địc s nh ho c mô t ặ ảhiện tượng phi tuyến tính như:
- Tốc độ phát triển c a các mô ủ
- Tiến tri n c a d ch bể ủ ị ệnh
- Phân b ố đòng vị của cacbon trong tr m tích h ầ ồ
Mục đích chính của mô hình hồi quy là mô tả giá trị của một biến phụ thuộc theo các giá trị của các biến độc lập Trong hồi quy đơn giản, một phương trình được sử dụng để thể hiện mối quan hệ này:
Y = a +bx + e Với y là bi n ph ế ụthuộc, a là h s ệ ốchặn c a y, b là h s góc và e là t l l i Trong ủ ệ ố ỉ ệ ỗ nhiều trường hợp, mô hình tuyến tính này sẽ không hoạt động Ví dụ nếu chúng ta phân tích quá trình s n xu t t ng h p hoá h c theo nhiả ấ ổ ợ ọ ệt độ mà quá trình t ng h p di n ra trong ổ ợ ễ những trường hợp như vậy chúng ta x d ng mô hình b c hai ử ụ ậ
Y = a + b 1 x + b 2 2 + e Với y là biến phụ thuộc vào x, a là chặn y và e là t l l i Nói chung chúng ta có ỉ ệ ỗ thể mô hình hoá nó cho giá tr ịthứ n Tổng quát như sau:
Vì hàm h i quy tuy n tính theo các biồ ế ến chưa biết, do đó các mô hình này là tuyến tính từ điểm ước lược Do đó, thông qua kỹ thuật Least Square, hay tính giá trị phản hồi là y
Với phần thực nghiệm này chúng ta có tập dữ liệu covid-19 được cung cấp ở trên Ý tưởng của bài toán v i t p d ớ ậ ữliệu cho trước lấy ra 95% d ữliệu để train mô hình còn lại 5% dữ liệu để test mô hình vừa train được Từ đó hình thành một mô hình train Mong muốn là d ự đoán 30 ngày kế tiếp mô hình s d ẽ ự đoán tình hình dịch bệnh có chiều hướng như thế nào
Sau đây là mộ số kết quả sau khi chạy thực nghiệm đã được ghi nhân lại và được trực quan hoá dưới dạng biểu đồ line
32 Hình 4.1: Mô hình d ự đoán xu hướng dịch b nh Covid hàng ngày ệ
Hình 4.2: D ự đoán số ca mắc bệnh được xác định hàng ngày Ưu điểm của việc s d ng hử ụ ồi quy đa thức:
Phạm vi r ng cộ ủa hàm có th ể được phù hợp v i nó ớ
Đa thức về cơ bản phù hợp với nhiều độ cong
Đa thức cung c p giá tr gấ ị ần đúng nhất của mối quan h ệgiữa các bi n ph vào biế ụ ến đọ ậc l p
Hình 4.3: D ự đoán tình trạng hồi ph c c a bụ ủ ệnh nhân sau khi nhiễm
Với hình 4.3 thì đồ thị là một đường cong phức tạp với hồi quy đa thức hệ thống cũng đưa ra một đường cong gần đúng so với thực tế
Hình 4.4: Mô t tình hình t vong khi b nh nhân nhi m Covid ả ử ệ ễ
Tương tự h i quồ y đa thức cũng đưa ra dự đoán với một đường cong ph c t p so vứ ạ ới dữ liệu th c t ự ế
Nhược điểm của vi c s d ng hệ ử ụ ồi quy đa thức:
Chúng quá nh y c m v i các y u t ngo i lai ạ ả ớ ế ố ạ
Sự hiện diện của một hoặc hai điểm ngo i l trong dạ ệ ữ liệu có thể ảnh hưởng nghiêm trọng đến k t qu c a mế ả ủ ột phân tích hi tuyến
Ngoài ra đáng tiếc là có ít công c xác thụ ực mô hình hơn để phát hi n các ngo i lệ ạ ệ trong h i quy phi tuy n so v i h i quy tuy n tính.ồ ế ớ ồ ế
TRỰC QUAN HÓA DỮ LIỆU
D ữ liệu không gian địa lý
Bản đồ lấy dữ liệu toạ độ trên địa cầu và chiếu lên một mặt ph ng sao cho khoẳ ảng cách và hình dạng trên địa cầu được hi n th gể ị ần đúng bằng hình dạng và khoảng cách trên m t ph ng 2D Ngoài ra có th ặ ẳ ểhiển th các giá tr d ị ị ữliệu ở các vùng khác nhau bằng cách tô màu các vùng đó trong bản đồ theo dữ liệu Trong một số trường hợp có thể hữu ích n u bóp méo các khu v c khác nhau theo m t sế ự ộ ố lượng khác (ví d : sụ ố lượng dân số) hoặc đơn giản hoá m i khu v c thành ph m t hình vuông Nh ng hình ỗ ự ố ộ ữ ảnh như vậy được gọi là bản đồ
Hình 5.1: Biểu đồ mô t các ca nhiả ễm ở các khu v c trên toàn c u ự ầ
Biểu đồ Treemaps
Biểu đồ Treemap là dạng trực quan hóa dữ liệu phân cấp, hiển thị dữ liệu dưới dạng một hình chữ nhật lớn được chia thành các hình chữ nhật nhỏ hơn để biểu thị tỷ lệ Các hình chữ nhật con này có thể được lồng vào nhau theo dạng đệ quy để biểu thị các cấp khác nhau trong phân cấp dữ liệu.
Hình 5.2: Biểu đồ ỉ lệ theo số lượng ca nhiễ t m ở các qu c gia trên thố ế giới
Biểu đồ bong bóng
Biểu đồ bong bóng kết hợp với to ạ đoạ địa lý đểthể hiện được tình hình dịch bệnh ở các nói trên th ếgiới Biểu đồ bong bóng th ểhiện 2 giá tr là v trí và s ị ị ố lượng ca nhiễm tỉ l theo chu vi cệ ủa bong bóng, giúp người nhìn có cái nhìn trực quan hơn về tình hình dịch b nh covid-19 trên toàn cệ ầu.
Hình 5.3: Biểu đồ bong bóng th ểhiện tình tr ng d ch b nh lây lan theo th i gianạ ị ệ ờVới biểu đồ bong bóng (hình 5.3) mô tr chi ti t khả ế ả năng lây lan dịch b nh trên ệ toàn c u theo th i gian thầ ờ ực, người nhìn có th ểthấy được các điểm bong bóng càng ngày càng l n theo th i gian lây lan d ch bớ ờ ị ệnh t khi d ch covid bừ ị ắt đầu có m t trên th ặ ếgiới và được ghi nh n ngày 22- -2020 ậ 01
HƯỚNG PHÁT TRIỂN ĐỀ TÀI
ETL trong Data Warehoue
ETL là vi t t t cế ắ ủa Extract - Transform - Load (tạm d ch: Trích xu - ị ất biến đổi - tải) Trong điện toán, trích xu - ất biến đổi - t i (ETL) là quy trình chung sao chép d ả ữliệu từ m t ho c nhi u ngu n vào h ộ ặ ề ồ ệthống đích đại di n cho d ệ ữliệu khác v i ngu n Quá trình ớ ồ ETL đã trở thành m t khái ni m ph ộ ệ ổbiến trong những năm 1970 và thường được s dử ụng trong kho d ữliệu.
Extract/Trích xuất là quá trình đọc dữ ệ ừ li u t cơ sở d liệu Trong giai đoạn này, ữ dữ liệu được thu thập, thường là từ nhiều loại ngu n khác nhau ồ
Transform/Biến đổi là quá trình chuyển đổ ữ liệu đượi d c trích xu t tấ ừ biểu mẫu trước đó thành biểu mẫu cần có để có thể được đặt vào cơ sở dữ liệu khác Chuyển đổi xảy ra b ng cách s d ng các quy t c ho c b ng tra c u ho c b ng cách k t h p dằ ử ụ ắ ặ ả ứ ặ ằ ế ợ ữ liệu này v i d ớ ữliệu khác
Load/Tải là quá trình ghi chép d ữliệu vào cơ sở ữ d liệu đích
Một h ệthống ETL được thi t k phù h p s trích xu t d ế ế ợ ẽ ấ ữliệu t các h ừ ệthống ngu n, ồ thực thi các tiêu chu n v tính nh t quán và chẩ ề ấ ất lượng dữ liệu, tuân th dủ ữ liệu để các nguồn riêng bi t có thệ ể được s d ng cùng nhau và cu i cùng cung c p dử ụ ố ấ ữ liệu ở định dạng sẵn sàng để các nhà phát triển ứng d ng có th xây d ng ng dụ ể ự ứ ụng và người dùng cuối có th ể đưa ra quyết định
Vì vi c trích xu t d ệ ấ ữliệu c n có thầ ời gian, nên thường th c hi n song song ba giai ự ệ đoạn Trong khi dữ liệu đang được trích xu t (extract), m t quá trình chuyấ ộ ển đổi (Transform) khác sẽ thực thi trong khi x lý dử ữ liệu đã nhận và chu n bẩ ị để ả t i trong khi quá trình t i d ả ữliệu bắt đầu mà không c n ch ầ ờ hoàn thành các giai đoạn trước
Hình 6.3: Cách th c hoứ ạt động c a ETL ủ
6.2.1Giai đoạn trích xu t (Extract) ấ Đây là phần đầu tiên của quy trình ETL, liên quan đến vi c trích xu t d ệ ấ ữliệu t các ừ hệ thống nguồn
Rất ít doanh nghi p ch sệ ỉ ử dụng m t loộ ại dữ liệu ho c hặ ệthống Hầu h t doanh ế nghiệp qu n lý d ả ữliệ ừu t nhi u ngu n khác nhau và s d ng m t s công c phân tích d ề ồ ử ụ ộ ố ụ ữ liệu để tối ưu hóa quá trình quản trị Để d ữliệu được chuyển đến một đích mới, trước tiên nó phải được trích xuất từ các nguồn.
Trong bước đầu tiên c a quy trình ETL, dủ ữ liệu có c u trúc và không cấ ấu trúc được nhập và h p nh t vào mợ ấ ột kho lưu trữ duy nh t D ấ ữliệu thô có th ể được trích xu t t ấ ừnhiều nguồn khác nhau, bao gồm:
- Cơ sở ữ d liệu hi n có ệ
- ng d ng bán hàng và ti p th Ứ ụ ế ị
- ng d ng và thi t b Ứ ụ ế ị di động
- H ệthống qu n lý khách hàng CRM ả
- N n t ng lề ả ưu trữ ữ d liệu
Mặc dù có thể xử lý thủ công dữ liệu, nhưng việc trích xuất dữ liệu được mã hóa theo phương pháp thủ công sẽ mất nhiều thời gian và dễ xảy ra lỗi Các công cụ ETL tự động hóa quy trình trích xuất, tạo ra một quy trình làm việc hiệu quả và đáng tin cậy hơn.
6.2.2 Giai đoạn chuyển đổi (Transform)
Trong giai đoạn này c a quy trình ETL, các quy tủ ắc và quy định có thể được áp dụng để đảm b o chả ất lượng dữ liệu và khả năng truy cập Quá trình chuyển đổ ữ liệu i d bao g m m t s quy trình ph : ồ ộ ố ụ
Data cleansing: nh m mằ ục đích chỉ truyền d ữliệu "đúng" cho mục tiêu
Tiêu chu n hóa - quy tẩ ắc định dạng được áp d ng cho t p d ụ ậ ữliệu.
Loại b d u trùng lỏ ữliệ ặp - d u giữliệ ống nhau được lo i tr ạ ừhoặc lo i b ạ ỏ Xác minh - dữ liệu không th s dể ử ụng được xóa và dữ liệu dị thường được g n c ắ ờ cảnh báo
Sắp xếp - d ữliệu đượ ắc s p x p theo tế ừng lo ại.