Thống kê số lần sử dụng giải thuật

Một phần của tài liệu Nghiên cứu phát triển công cụ phân tích dữ liệu nông nghiệp dùng cho làng thông minh (Trang 26)

5 Áp dụng Fuzzy Logic vào vấn đề tưới tiêu trong nông nghiệp

2.3Thống kê số lần sử dụng giải thuật

Tên giải thuật Số lượng giải thuật đã sử dụng

Artificial Neuron Network 41

Support Vector Machine 38

Image Processing 24

Naive Bayes 11

Fuzzy Logic 10

Decision Tree 9

Random Forest 9

deep convolutional neural network 9

K-means 6

Genetic Algorithm 5

Chương 2. Khảo sát về giải thuật khai phá dữ liệu sử dụng trong nông nghiệp 12

k-nearest neighbors 5

Logistic Regression 3

Association Rule Apriori 3

Ensemble neuron network 3

Rapid Association Rule Mining 2

Multivariate Regression Mining 2

Hyperspectral data mining 2

Gradient Boosted Regression Trees 1

Boosted Trees 1 ANFIS 1 Expectation –maximization 1 BPN 1 Tổng số nghiên cứu 192 ANN 21.85% SVM 19.79% IP 12.5% NB 5.72% FL 5.20% DT 4.68% RF 4.68% DCNN 4.68% K-means 3.12% GA 2.60% LinearR 2.60% KNN 2.60% LogisticR 1.56% Apriori 1.56% ENN 1.56%1.04% RARMMRM 1.04%1.04%0.52% HDMGBRTBT 0.52%0.52%0.52%0.52% ANFISEMBPN

Chương 2. Khảo sát về giải thuật khai phá dữ liệu sử dụng trong nông nghiệp 13

2.3 Kết luận chung

Thông qua các khảo sát vừa được thống kê, chúng ta nhìn nhận rằng, các vấn đề và giải pháp dành cho nông nghiệp là rất đa dạng và phong phú. Dựa trên các khảo sát trên, có thể nắm được những loại ứng dụng nông nghiệp nào hiện đang được quan tâm phân tích. Theo thống kê, các giải thuật phổ biến nhất hiện nay gồm: Support Vector Machine, Neuron Network, Image Processing, Naive Bayes, Fuzzly Logic,v.v. Thống kê này sẽ có ý nghĩa cực kì quan trọng trong việc xác định các lớp giải thuật, các bài toán thường gặp trong thực tế để xây dựng một bộ công cụ phân tích dữ liệu hoàn chỉnh. Ở chương tiếp theo, chúng ta sẽ tìm hiểu một số framework xử lý dữ liệu nổi bật hiện nay, và tìm hiểu phương pháp tích hợp các giải thuật trên vào framework.

14

Chương 3

Khảo sát và lựa chọn framework xử lý dữ liệu

3.1 Đặc điểm dữ liệu nông nghiệp

Dữ liệu lớn trong nông nghiệp là rất không đồng nhất (Wolfert et al.,2017). Ví dụ

về tính không đồng nhất của các dữ liệu: chủ đề của dữ liệu được thu thập, các cách mà dữ liệu được tạo ra, dữ liệu được thu thập từ hiện trường hoặc trang trại bao gồm thông tin về trồng trọt, phun thuốc, vật liệu, sản lượng, hình ảnh trong mùa, loại đất, thời tiết, v.v. Nhìn chung có ba dạng dữ liệu được tạo ra (Devlin,2012):

• Process-mediated (PM): là kết quả từ các quy trình nông nghiệp được ghi lại (adsbygoogle = window.adsbygoogle || []).push({});

và theo dõi, chẳng hạn như mua nguyên liệu đầu vào, cho ăn, gieo hạt, bón phân, đặt hàng, v.v. Dữ liệu PM thường có cấu trúc cao và bao gồm các giao dịch, bảng tham chiếu và các mối quan hệ, cũng như siêu dữ liệu xác định ngữ cảnh của chúng.

• Machine-generated (MG): là số liệu được lấy từ cảm biến và máy móc thông

minh được sử dụng để đo lường và ghi lại các quy trình canh tác. Các thiết bị trên còn được gọi là các thiết bị Internet of Things (IoT). Dữ liệu MG có phạm vi từ các bản ghi cảm biến đơn giản đến các bản ghi máy tính phức tạp và thường có cấu trúc tốt. Khi số lượng các cảm biến nhiều hơn, khối lượng dữ liệu ngày càng tăng, nó ngày càng trở thành một thành phần quan trọng của thông tin canh tác được lưu trữ và xử lý. Bản chất có cấu trúc tốt phù hợp với máy tính xử lý, nhưng kích thước và tốc độ của nó vượt xa các cách tiếp cận truyền thống. Đối với nông nghiệp thông minh, tiềm năng của các máy bay không người lái (UAV) đã được công nhận. Máy bay không người lái có camera hồng ngoại, công nghệ GPS, đang chuyển đổi nền nông nghiệp với sự hỗ trợ của họ để ra quyết định tốt hơn, quản lý rủi ro (Faulkner, Cebul, and

Chương 3. Khảo sát và lựa chọn framework xử lý dữ liệu 15

McHenry, 2014). Trong chăn nuôi gia súc, các trang trại bò sữa thông minh

đang thay thế lao động bằng robot trong các hoạt động như cho bò ăn, dọn dẹp chuồng trại và vắt sữa bò (Wolfert et al.,2017). Trong các trang trại canh tác, công nghệ chính xác ngày càng được sử dụng nhiều hơn để quản lý thông

tin về từng nhà máy trên đồng ruộng (Vogt,2013). Với những công nghệ mới

này, dữ liệu không chỉ có trong các bảng truyền thống mà còn có thể xuất hiện

ở các định dạng khác như âm thanh hoặc hình ảnh (Soka,2015). Trong khi đó,

một số kỹ thuật phân tích dữ liệu nâng cao đã được phát triển để kích hoạt việc sử dụng dữ liệu dưới dạng hình ảnh hoặc các định dạng khác (Lesser,

2014)).

• Human-sourced (HS): là bản ghi kinh nghiệm của con người, trước đây thường

được ghi lại trong sách và tác phẩm nghệ thuật, và sau đó là ảnh, âm thanh và video. Thông tin do con người cung cấp hiện nay hầu như đã được số hóa và lưu trữ ở khắp mọi nơi từ máy tính cá nhân đến mạng xã hội. Dữ liệu HM thường có cấu trúc lỏng lẻo và thường không được quản lý. Trong bối cảnh Dữ liệu lớn và nông nghiệp thông minh, dữ liệu có nguồn gốc từ con người hiếm khi được thảo luận ngoại trừ liên quan đến các khía cạnh tiếp thị

(Verhoosel, Bekkum, and Verwaart, 2016). Năng lực hạn chế về việc thu thập

dữ liệu truyền thông xã hội có liên quan và tích hợp ngữ nghĩa của những dữ liệu này từ nhiều nguồn khác nhau được coi là một thách thức lớn (Bennett,

2015).

3.2 Khảo sát và lựa chọn framework xử lý dữ liệu

Qua các khảo sát trên, tôi nhận định rằng, dạng dữ liệu MG mang lại nhiều thách thức công nghệ nhất về cả hai khía cạnh: lưu trữ và phân tích. Cảm biến là một thành phần không thể thiếu dùng để cảm nhận sự thay đổi từ môi trường. Theo truyền thống, các dữ liệu đo này được thu thập và lưu trữ trong một số loại kho dữ liệu và sau đó được xử lý cho một ứng dụng cụ thể nào đó. Tuy nhiên, trong những trường hợp như hệ thống làng thông minh, nơi có số lượng lớn các cảm biến được cài đặt, lượng dữ liệu được lưu trữ và xử lý sẽ trở thành một vấn đề lớn. Bởi vì khi khối lượng dữ liệu vượt quá vài gigabyte, cơ sở dữ liệu quan hệ truyền thống hoặc không hỗ trợ khối lượng như vậy hoặc gặp phải các vấn đề về hiệu suất (Aydin,

Hallac, and Karakus,2015). Lưu trữ và truy vấn khối lượng rất lớn dữ liệu đòi hỏi

cơ sở dữ liệu phải được cài đặt trên các hệ thống phân tán. Tuy nhiên lưu trữ và truy xuất không phải là vấn đề duy nhất, điểm nghẽn thực sự là khả năng phân tích khối

Chương 3. Khảo sát và lựa chọn framework xử lý dữ liệu 16 lượng dữ liệu lớn. Các phương pháp tiếp cận phân tích và lưu trữ dữ liệu truyền thống không đáp ứng được kỳ vọng của các loại lĩnh vực ứng dụng cảm biến mới, nơi khối lượng và tốc độ của dữ liệu phát triển với tốc độ chưa từng có. Với những đặc điểm đặc thù của một hệ thống dữ liệu lớn như trên, giải pháp của tôi đề xuất đó là tìm kiếm một công cụ phân tích dữ liệu mã nguồn mở hiện có, kế thừa và mở rộng công cụ trên để phù hợp với ngữ cảnh nông nghiệp. Giải pháp trên tiết kiệm được chi phí nghiên cứu, và kế thừa được rất nhiều những thế mạnh ưu việt của công cụ mà cộng đồng sử dụng đã chứng minh.

Ngày nay, số lượng framework được phát triển để phục vụ cho việc xử lý dữ liệu lớn ngày một nhiều. Tôi đã chọn ra các framework sẽ được cân nhắc lựa chọn để phát triển, bao gồm: Spark, Flink, Storm, MapReduce.

• MapReduce/Hadoop1: là một kỹ thuật xử lý, một mô hình tính toán phân tán

dựa trên java và được hỗ trợ trong hệ sinh thái Hadoop.

• Spark2: là một framework tích hợp đa năng để xử lý dữ liệu lớn, với các module tích hợp gồm Streaming, SQL, học máy và xử lý đồ thị.

• Flink3: là một framework xử lý phân tán dữ liệu Streaming.Flink được thiết kế để chạy trong tất cả các môi trường cụm chung, thực hiện tính toán ở tốc độ trong bộ nhớ và ở bất kỳ quy mô nào.

• Storm4: Apache Storm là một framework tính toán xử lý dữ liệu Streaming

được viết chủ yếu bằng ngôn ngữ lập trình Clojure và Java BẢNG 3.1: Thông tin so sánh cơ bản về các framework bigdata

Thông tin so sánh cơ bản về các framework bigdata

Thông tin MapReduce Spark Flink Storm (adsbygoogle = window.adsbygoogle || []).push({});

Năm phát hành 2006 2014 2011 2011

Dạng xử lý dữ liệu Batch Batch,Stream Batch, Stream Stream

Ngôn ngữ lõi Java Scala Java Clojure, Java

Độ trễ cao thấp thấp thấp

Chi phí tính toán thấp cao cao cao

Các yếu tố cần xem xét để lựa chọn công cụ phát triển, bao gồm: 1tutorialspoint.com/hadoop/hadoopMapReduce

2Spark.apache.org

3flink.apache.org/flink-architecture.html 4https://storm.apache.org/

Chương 3. Khảo sát và lựa chọn framework xử lý dữ liệu 17

3.2.1 Khả năng tính toán phân tán

Đây là đặc điểm quan trọng hàng đầu cho việc lựa chọn framework. Những cái tên kể trên đều phụ hợp với tiêu chí này. Xét về mức độ phổ biến của các công cụ phân tích dữ liệu nói chung, có thể kể đến một số framework nổi bật trong cộng đồng, đó là pandas, numpy. Tuy nhiên những công cụ này chỉ mạnh trên tập dữ liệu vừa phải, tính toán tập trung ở một máy chủ, và không có khả năng mở rộng sang nhiều máy. Như đã mô tả về quy mô dữ liệu, việc tính toán sử dụng các framework tập trung là không phù hợp.

3.2.2 Khả năng xử lý dữ liệu Batch

Xử lý dữ liệu Batch có lịch sử lâu đời trong thế giới dữ liệu lớn. Xử lý Batch là việc vận hành trên một tập dữ liệu tĩnh, lớn và trả lại kết quả sau đó khi quá trình tính toán hoàn tất. Dữ liệu mới được sinh ra sẽ được gom nhóm thành các Batch và sau đó sẽ được xử lý. Hai cách phổ biến để xác định khi nào các Batch này sẽ được xử lý là:

• Dựa trên một khoảng thời gian nhất định. Ví dụ: cứ 60 phút xử lý một lần

• Dựa trên một số điều kiện nhất định. Ví dụ: cứ thu thập đủ 50 files dữ liệu sẽ xử lý một lần, hay cứ thu thập đủ 100G dữ liệu sẽ xử lý một lần, v.v

HÌNH3.1: Xử lý Batch

Xét về khả năng tính toán dữ liệu Batch: MapReduce và Spark là hai framework lâu đời và được sử dụng nhiều nhất. Hai framework còn lại vẫn hỗ trợ tính toán Batch nhưng còn hạn chế về tính năng và mục đích chính của chúng là xử lý Stream. Điểm khác biệt lớn nhất giữa MapReduce và Spark là ở tốc độ tính toán. Đối với MapReduce/Hadoop, cơ chế tính toán chính là đọc và ghi dữ liệu vào và từ đĩa. Đối

Chương 3. Khảo sát và lựa chọn framework xử lý dữ liệu 18 với mọi giai đoạn trong quá trình xử lý, dữ liệu được đọc từ đĩa và ghi vào đĩa. Việc lưu trữ và tìm kiếm trên đĩa mất thời gian, do đó làm cho toàn bộ quá trình diễn ra rất chậm. Nếu MapReduce xử lý dữ liệu với khối lượng nhỏ, thì tương đối chậm. MapReduce lý tưởng cho các tập dữ liệu lớn. Chính vì thế, Hadoop chậm so với các công nghệ mới hơn như Spark và Flink. Trong khi đó, Spark cho kết quả tính toán ấn tượng hơn rất nhiều lần so với MapReduce. Các nhà phát triển Spark đã chứng minh rằng Spark nhanh hơn tới 20 lần so với Hadoop cho các ứng dụng lặp đi lặp lại, tăng tốc phân tích dữ liệu trong các ứng dụng thực tế lên 40 lần và có thể được sử dụng để đọc tập dữ liệu 1 TB với độ trễ 5–7 giây (Zaharia et al.,2012)

3.2.3 Khả năng xử lý dữ liệu Stream

Xử lý dữ liệu Stream là mô hình xử lý dữ liệu được thực hiện ngay khi dữ liệu đến. Không giống như mô hình xử lý dữ liệu theo Batch, dữ liệu trong mô hình xử lý theo Stream sẽ không phải chờ cho đến khi đủ Batch mới được xử lý, nó sẽ được xử lý ngay khi dữ liệu được phát sinh.

HÌNH3.2: Xử lý Stream

Trong mô hình xử lý dữ liệu theo Stream, dữ liệu được xử lý ngay lập tức hoặc trong khoảng thời gian rất ngắn tính bằng mili giây hoặc vài giây. Có hai kiểu xử lý theo Stream, đó là:

• Native Streaming: mọi bản ghi đến đều được xử lý ngay khi nó đến mà không

cần đợi. Ví dụ: Storm, Flink

• Micro Batching: các bản ghi đến sau mỗi vài giây được gộp lại với nhau và sau

đó được xử lý trong một Batch nhỏ duy nhất với độ trễ vài giây. Ví dụ: Spark Streaming

Vậy ưu nhược điểm của hai phương pháp trên là gì ?

Chương 3. Khảo sát và lựa chọn framework xử lý dữ liệu 19 độ trễ tối thiểu có thể. Nhưng điều đó cũng đồng nghĩa với việc đánh đổi khả năng chịu lỗi của bản ghi. Cần phải có bước theo dõi và kiểm tra sau khi xử lý. Mặt khác, Micro Batching hoàn toàn ngược lại. Khả năng chịu lỗi tốt hơn nhưng sẽ có độ trễ . Trong bốn framework kể trên: Spark, Flink và Storm là có khả năng xử lý Stream. So

sánh các điểm khác biệt giữa ba framework trên (prakash,2018)

• Storm: là Streaming framework lâu đời nhất và là một trong những framework (adsbygoogle = window.adsbygoogle || []).push({});

và đáng tin cậy nhất.

- Ưu điểm: Độ trễ rất thấp, thuộc loại native streaming, lâu đời và thông lượng cao. Rất phù hợp cho các trường hợp sử dụng Streaming không phức tạp - Nhược điểm: Không có quản lý trạng thái, Không có các tính năng nâng cao như Xử lý thời gian sự kiện, tổng hợp, cửa sổ, phiên, v.v.

• Spark Streaming:là một module của framework Spark giúp cho các tính năng

của Spark ngày càng đầy đủ và mạnh mẽ. Spark sử dụng Micro Batching để Streaming. Trước khi phát hành phiên bản 2.0, Spark Streaming có một số hạn chế về hiệu suất nghiêm trọng nhưng với phiên bản 2.0+ mới, Spark Streaming trở thành Stream có cấu trúc và được trang bị nhiều tính năng tốt như quản lý bộ nhớ tùy chỉnh (như flink), hỗ trợ xử lý thời gian sự kiện, v.v.

Ưu điểm: hỗ trợ kiến trúc Lambda, Phù hợp cho nhiều trường hợp sử dụng không yêu cầu độ trễ thấp, Khả năng chịu lỗi tốt do tính chất của Micro Batching, dễ sử dụng các API cấp cao

Nhược điểm: không phù hợp với các yêu cầu về độ trễ thấp

• Flink: cũng xuất thân từ nền tảng học thuật tương tự như Spark. Trong khi

Spark đến từ UC Berkley, Flink đến từ Đại học Berlin TU. Giống như Spark, nó cũng hỗ trợ kiến trúc Lambda. Nhưng cách triển khai hoàn toàn ngược lại với Spark. Khác với Spark, Flink về cơ bản là một công cụ Native Streaming thực sự, và xem Micro Batching là trường hợp đặc biệt của Native Streaming với dữ liệu bị giới hạn.

Ưu điểm: Là framework opensource hàng đầu trong lĩnh vực Streaming, có tất cả các tính năng nâng cao như xử lý thời gian sự kiện, watermarks, v.v. Độ trễ thấp với thông lượng cao, có thể cấu hình theo yêu cầu, được các công ty lớn ở quy mô lớn như Uber, Alibaba chấp nhận.

Nhược điểm: cộng đồng không lớn mạnh như Spark, không hỗ trợ tốt xử lý Batch

Chương 3. Khảo sát và lựa chọn framework xử lý dữ liệu 20

3.2.4 Khả năng tích hợp với các framework big data khác

Hình ảnh dưới đây sẽ cho chúng ta thấy được góc nhìn tổng quan về vị trí của các framework dữ liệu lớn hiện nay

HÌNH3.3: Top Big Data Frameworks

Có hai đường dữ liệu chính được quy ước bằng màu xanh và đỏ: tương ứng với dữ liệu Batch và dữ liệu Stream. Chúng ta sẽ cùng điểm qua một số thành phần chính và các đại diện tiêu của từng nhóm.

• Data Ingestion: là nhóm các framework có khả năng tự động hóa và quản lý

luồng dữ liệu giữa các hệ thống khác nhau, phân phối dữ liệu. Đại diện tiêu biểu: Nifi, Sqoop, Flume.

• Message Queue: các framework cung cấp bộ điệm tạm để lưu trữ các gói tin,

Một phần của tài liệu Nghiên cứu phát triển công cụ phân tích dữ liệu nông nghiệp dùng cho làng thông minh (Trang 26)