Khoa học dữ liệu đã thực sự trở thành một vấn đề nóng bỏng hiện nay. Trong thời đại công nghệ phát triển như vũ bão, con người có xu hướng tạo ra rất nhiều dữ liệu, nhưng nổi bật hơn đó là chúng ta biết cách phân tích, xử lý và sử dụng dữ liệu đó để có những hiểu biết sâu sắc hơn về kinh doanh.

Bài viết này sẽ nói rõ về 09 ngôn ngữ lập trình dành cho Khoa học dữ liệu mà bạn có thể học ngay. Các ngôn ngữ được đưa vào danh sách này dựa theo mức độ phổ biến của chúng, số lượng đề cập trên Github, ưu / nhược điểm và mối liên hệ giữa chúng với Khoa học dữ liệu.

 

1. Python

Image for post

Do tính linh hoạt của Python, các nhà khoa học dữ liệu có thể sử dụng Python cho hầu hết mọi vấn đề liên quan đến các quy trình khoa học dữ liệu. Vậy nên, Python là một ngôn ngữ lập trình tối quan trọng trong Khoa học dữ liệu.

Ưu điểm của Python?

Bản chất hướng đối tượng (object-oriented) của Python tạo điều kiện cho các nhà khoa học dữ liệu thực hiện các tác vụ với tính ổn định, mô đun hóa (modularity) và khả năng đọc mã (code readability) tốt hơn. Mặc dù Khoa học dữ liệu chỉ là một phần nhỏ trong hệ sinh thái Python đa dạng, Python có nhiều thư viện chuyên sâu của Deep Learning và Machine Learning, bên cạnh đó cũng có các công cụ phổ biến như Scikit-learn, Keras và TensorFlow. Không còn nghi ngờ gì nữa, Python cho phép các nhà khoa học dữ liệu phát triển những mô hình dữ liệu phức tạp mà có thể được kết nối trực tiếp vào hệ thống sản xuất.

Theo kết quả khảo sát của các lập trình viên Python (Python developers), 84% số người được hỏi đã sử dụng Python làm ngôn ngữ chính của họ, trong khi 16% còn lại sử dụng Python như ngôn ngữ thứ chính.

Dữ liệu trong Python

Để thu thập dữ liệu (data collection), Python hỗ trợ tuyệt vời các bảng (table) CSV, JSON, SQL và khai thác dữ liệu web (web scraping).

Thư viện phân tích dữ liệu (data analysis) cho Python - Pandas - dĩ nhiên là thứ tốt nhất cho việc khám phá dữ liệu (data exploration). Được tổ chức thành các khung dữ liệu (data frames), Pandas có thể lọc, sắp xếp và hiển thị dữ liệu một cách dễ dàng.

Đối với mô hình hóa dữ liệu (data modeling):

1. NumPy - phân tích mô hình số (numerical modeling analysis)

2. SciPy - tính toán và tính toán khoa học (scientific computing)

3. scikit-learn - truy cập nhiều thuật toán machine learning mạnh mẽ. Nó cũng cung cấp một giao diện trực quan (intuitive interface) cho phép các nhà khoa học dữ liệu khai thác tất cả sức mạnh của machine learning mà không gặp nhiều khó khăn.

Để trực quan hóa dữ liệu (data visualization), matplotlib, plot.ly, nbconvert được dùng để chuyển đổi các tệp Python thành các tài liệu HTML nhằm làm rõ các biểu đồ và bảng điều khiển (dashboards), như thế vừa làm nổi bật tầm ảnh hưởng của các kết quả nghiên cứu vừa đảm bảo tính thẩm mỹ trong trình bày.

 

2. R

Image for post

R là một công cụ nguồn mở cho phép các nhà khoa học dữ liệu làm việc đa nền tảng cùng nhiều hệ điều hành. Thống kê là thế mạnh cốt lõi của công nghệ này. R không chỉ đơn thuần là một ngôn ngữ mà còn là toàn bộ hệ sinh thái để thực hiện các tính toán thống kê (statistical calculations). Nó giúp thực hiện các hoạt động về xử lý dữ liệu, mô hình toán học, trực quan hóa dữ liệu với các chức năng tích hợp.

Dữ liệu trong R

R hỗ trợ Excel, CSV, tệp văn bản, Minitab hoặc định dạng tệp SPSS, khai thác dữ liệu web với Rvest và những định dạng tệp tương tự để thu thập Dữ liệu.

R được xây dựng nhằm thực hiện phân tích về thống kê và số cho các tập dữ liệu lớn, do đó, có rất nhiều hoạt động có thể được thực hiện cho việc khám phá dữ liệu (data exploration) như là lọc data (sort data), bảng hoán vị (transpose), tạo sơ đồ (plot), tạo bảng tần số (frequency tables), mẫu hóa dữ liệu (sampling data), phân phối xác suất (probability distribution), hợp nhất dữ liệu (merge data), chuyển đổi biến (variable conversion)… Hãy tìm hiểu dplyr, tidyr để thấy rõ hơn các chức năng này.

R là một môi trường mạnh mẽ, phù hợp với trực quan hóa khoa học (scientific visualization) cùng nhiều gói (packages) chuyên để biểu thị đồ họa (graphical display) các kết quả về trực quan hóa dữ liệu (data visualization). Thêm vào đó là có đồ họa cơ sở (base graphics), biểu đồ và sơ đồ với mô-đun đồ họa (graphics module). Trực quan hóa cũng có thể được lưu ở các định dạng hình ảnh như jpg., các tệp PDF riêng biệt. Gói ggplot2 là một cái tên tiêu biểu trong các công cụ trực quan hóa dữ liệu của R, nó có thể cho ra các sơ đồ tiên tiến như sơ đồ phân tán (scatter plots) phức tạp với các đường hồi quy (regression lines).

R vs Python

Sẽ luôn là một cuộc tranh luận không hồi kết về sự đối đầu giữa R và Python trong Khoa học dữ liệu, nhưng chúng ta cần hiểu rằng cả hai đều có những ưu điểm và những nhược điểm riêng.

Hầu hết các lập trình viên đều nhận ra ngôn ngữ này là cứu cánh của ngôn ngữ kia. Người dùng R thì đôi khi khao khát các tính năng hướng đối tượng được tích hợp vào Python. Tương tự, một số người dùng Python mơ ước có một loạt các bản phân phối thống kê có sẵn trong R. Điều này ngụ ý rằng hoàn toàn có thể kết hợp hai công nghệ hàng đầu này trong một dự án để có được một bộ chức năng bổ sung độc nhất.

 

3. Scala

Image for post

Scala là sự kết hợp giữa lập trình hướng đối tượng và lập trình chức năng (functional programming) trong một ngôn ngữ cấp cao, súc tích. Ngôn ngữ này ban đầu được xây dựng cho Máy ảo Java (Java Virtual Machine) và nó có một điểm mạnh là có thể giúp cho việc tương tác với mã Java (Java code) trở nên dễ dàng.

Ưu điểm của Scala?

Điều khiến Scala trở nên vô giá đối với các nhà khoa học dữ liệu chính là vì Scala có thể được sử dụng cùng với Apache Spark để xử lý khối lượng dữ liệu lớn (Big Data).

Nhiều khung (framework) khoa học dữ liệu hiệu suất cao được xây dựng bên cạnh Hadoop thường được viết và sử dụng bằng Scala/Java. Lý do Scala được sử dụng trong các môi trường này là vì sự hỗ trợ đồng thời (concurrency support) nhanh chóng của nó. Vì Scala chạy trên JVM (Java Virtual Machine), nên khi sử dụng chung với Hadoop thì hoàn toàn không gặp vấn đề gì.

Nhược điểm của Scala?

Nhược điểm duy nhất cho Scala là đường cong học tập (learning curve) của nó. Hơn nữa, vì cộng đồng sử dụng Scala không mấy đông đúc, do đó, việc tìm kiếm câu trả lời cho các câu hỏi về các lỗi trở nên tẻ nhạt vô cùng.

Khi có đủ lượng dữ liệu, Scala sẽ phát huy tối đa tiềm năng của mình trong các dự án. 

 

4. SAS - Hệ thống phân tích thống kê (Statistical Analytical System)

Image for post

Giống như R, SAS là một công cụ được phát triển để phân tích dữ liệu cấp cao và các hoạt động thống kê phức tạp. Nó là một công cụ nguồn đóng (closed-source) độc quyền, cung cấp nhiều khả năng thống kê để thực hiện sự mô hình hóa phức tạp. SAS chủ yếu được sử dụng bởi các tổ chức quy mô lớn và chuyên gia nhờ độ tin cậy cao.

Ưu điểm của SAS?

Xin lưu ý, SAS không phải là một công cụ phù hợp nhất cho người mới bắt đầu và những người say mê khoa học dữ liệu độc lập, bởi vì SAS được thiết kế riêng để đáp ứng nhu cầu kinh doanh cao cấp. Tuy nhiên, nếu bạn đang hướng sự nghiệp của mình về khoa học dữ liệu, thì đó là cách tốt để có kiến ​​thức vận hành về SAS nhằm trang bị cho mình một hồ sơ xán lạn.

Sử dụng SAS là rất tốt trong việc thực hiện mô hình thống kê (statistical modeling) thông qua SAS Base - ngôn ngữ lập trình chính chạy môi trường SAS.

Nhược điểm của SAS?

Mặc dù có một sự thật là SAS đang dẫn đầu thị trường trong lĩnh vực phân tích doanh nghiệp, nhưng khi so sánh khả năng của nó với Python hoặc R, thì SAS có vẻ khó mô hình hóa và trực quan hóa dữ liệu. Đường cong học tập rắc rối và chủ yếu được sử dụng bởi các tập đoàn lớn với ngân sách khổng lồ.

 

5. Julia

Image for post

Ngôn ngữ Julia hoạt động với dữ liệu nhanh hơn Python, JavaScript, Matlab, R và kém hơn một chút về hiệu suất so với Go, Lua, Fortran và C. Thế mạnh của Julia là Phân tích số (numerical analysis), nhưng nó cũng đảm nhiệm tốt lập trình đa năng (general-purpose programming).

Ưu điểm của Julia?

Julia nhanh hơn các ngôn ngữ kịch bản (scripting languages) khác, điều này cho phép các nhà khoa học dữ liệu phát triển nhanh Python / MATLAB / R trong khi tạo ra các mã nhanh.

Với hệ sinh thái dữ liệu của Julia, việc tải dữ liệu đa chiều được diễn ra nhanh chóng. Nó thực hiện các phép gộp (aggregations), nối (joins) và các hoạt động tiền xử lý (preprocessing) song song. Julia bao gồm các thư viện toán học (mathematical libraries) khác nhau, các công cụ thao tác dữ liệu (data manipulation tools) và các gói cho điện toán đa năng (general-purpose computing). Ngoài ra, việc tích hợp với các thư viện từ Python, R, C / Fortran, C ++ và Java là vô cùng dễ dàng.

Nhược điểm của Julia?

Thật ra, Julia không phải là một công cụ hoàn toàn trưởng thành, cộng đồng của nó vẫn còn hạn hẹp. Trong khi rà tìm các lỗi hoặc trục trặc, bộ những tùy chọn hoặc giải pháp có hạn chế này sẽ là một trở ngại. Các chuyên gia trong ngành luôn vững tin rằng Julia sẽ có thể cạnh tranh hoàn toàn với Python và R khi nó trưởng thành hơn.

 

6.a. MATLAB

Image for post

MATLAB là công cụ đầu tiên được sử dụng cho Khoa học dữ liệu.

MATLAB là ngôn ngữ lập trình tốt nhất khi thực hiện các phép tính toán học chuyên sâu (profound mathematical operations). Công nghệ này trở thành một công cụ mạnh mẽ để thực hiện mô hình hóa toán học, xử lý hình ảnh và phân tích dữ liệu trong khoa học dữ liệu, bởi vì khoa học dữ liệu cũng chứa nhiều vấn đề về toán học.

Ưu điểm của MATLAB?

Nó chứa một thư viện lớn các hàm toán học cho đại số tuyến tính (linear algebra), thống kê, phân tích Fourier, lọc, tối ưu hóa, tích hợp số và giải các phương trình vi phân (differential equations) thông thường. MATLAB cung cấp đồ họa tích hợp để trực quan hóa dữ liệu và công cụ để tạo các sơ đồ tùy chỉnh.

Nhược điểm của MATLAB?

Hiện nay, các nhà khoa học dữ liệu hiếm khi sử dụng MATLAB, nhưng họ công nhận rằng nó rất tốt cho giải các vấn đề toán học và mô hình hóa. Bởi vì sự ra đời của R và Python trong miền Khoa học dữ liệu (data science domain), mà MATLAB đã chìm xuống. Nó cũng phổ biến hơn trong giới học thuật do có chi phí cấp phép cao.

Ngôn ngữ bạn sử dụng cho Khoa học dữ liệu phần lớn phụ thuộc vào vấn đề mà bạn đang giải quyết. Nếu vấn đề của bạn yêu cầu các phép tính toán phức tạp, sẽ không có điểm khởi đầu nào tốt hơn MATLAB, ít nhất là khi cần kết quả khám phá dữ liệu ban đầu (initial data) và kết quả sơ bộ.

 

6.b. OCTAVE

 Image for post

OCTAVE là sự thay thế luân phiên chính của MATLAB. Nhìn chung, cả hai công nghệ này không có những khác biệt cơ bản, chỉ có một số ngoại lệ nhỏ. Giống như MATLAB, Octave có thể được sử dụng trong các dự án có lượng dữ liệu tương đối nhỏ nếu cần có tính toán số học mạnh.

 

7. Java

Image for post

Java có lẽ là một trong những ngôn ngữ hướng đối tượng lâu đời nhất được sử dụng để lập trình và phát triển kinh doanh. Phần lớn các công cụ Dữ liệu lớn (big data) nổi tiếng tương tự Hive, Spark và Hadoop đều được viết bằng Java. Java có một số lượng lớn các thư viện và công cụ dành cho Khoa học dữ liệu mà chúng ta có thể không biết như Weka, Java-ML, MLlib và Deeplearning4j.

Ưu điểm của Java

Java chắc chắn không phải là ngôn ngữ rõ ràng cho khoa học dữ liệu, nhưng nó là một trong những ngôn ngữ lập trình hàng đầu cho khoa học dữ liệu nhờ các framework khoa học dữ liệu như Hadoop chạy trên Máy ảo Java (JVM).

Hadoop là một framework khoa học dữ liệu phổ biến để quản lý xử lý và lưu trữ dữ liệu cho các ứng dụng dữ liệu lớn bởi khả năng giải quyết các nhiệm vụ vô hạn cùng một lúc.

Để kết luận, Java là một trong những ngôn ngữ lập trình khoa học dữ liệu tốt nhất để học nếu bạn muốn tận hưởng các khả năng của framework Hadoop.

 

8. Perl

Image for post

Perl là một tổ hợp gồm ba ngôn ngữ lập trình cấp cao, ngôn ngữ lập trình đa năng (general-purpose programming language), ngôn ngữ thông dịch (interpreted programming language), ngôn ngữ lập trình động (dynamic programming language). Perl có khả năng giải quyết các truy vấn (queries) dữ liệu hiệu quả hơn nhiều vì ngôn ngữ dựa trên các mảng (array) hạng nhẹ, điều mà không đòi hỏi nhiều sự chú ý từ lập trình viên.

Ưu điểm của Perl?

Là một ngôn ngữ kịch bản đa năng (general-purpose scripting language), tính linh hoạt của Perl khiến nó trở thành một ngôn ngữ kịch bản (scripting language) được gõ động (dynamically typed) giống như Python. Perl được sử dụng trong các lĩnh vực định lượng như tin sinh học (bioinformatics), tài chính và phân tích thống kê.

Perl 5 - vừa được phát hành - có khả năng xử lý các tập dữ liệu lớn tốt hơn nhiều so với các phiên bản trước. Nó đang thể hiện sở trường của mình ở phiên bản Perl 6 tiếp theo. Boeing, Siemens và các công ty thuộc top Fortune 500 khác đã sẵn sàng thử nghiệm tích cực với Perl cho Khoa học dữ liệu.

Perl tạo hoặc xử lý (mô hình MapReduce) các terabyte dữ liệu với kiến ​​trúc đơn giản, có thể bảo trì bằng cách bố trí chèn dữ liệu và truy vấn trên quy mô lớn. Với Perl 6, dự tính là cung cấp một kiến ​​trúc mang tính mô-đun, có thể kết nối với sự linh hoạt và tùy biến để quản lý Dữ liệu lớn (big data).

Nhược điểm của Perl?

Việc học Perl một cách độc lập sẽ khiến bạn gặp khó khăn trong việc trở thành một nhà khoa học dữ liệu hiệu suất và hiệu quả. Nó không nhanh cho lắm và cú pháp của nó nổi tiếng là không thân thiện. Vì Perl là một ngôn ngữ không mấy phổ biến, nên sự ủng hộ của cộng đồng này cho Khoa học dữ liệu cũng không nhiều. Tuy nhiên, cộng đồng “Những lập trình viên Perl” vẫn đang dần phát triển mạnh mẽ hơn. Nhìn chung, chưa có một cú huých nào khiến Perl trở thành một ngôn ngữ khoa học dữ liệu thực thụ cả.

 

9. Haskell

Image for post

Haskell là một ngôn ngữ đa năng, được gõ tĩnh (statically typed), hoàn toàn là ngôn ngữ lập trình hàm (functional programming language) với suy luận kiểu (type inference).

Ưu điểm của Haskell?

Haskell có một nền tảng vững chắc về mã tài chính (financial code) và có thể dễ dàng tương tác với Excel để tính toán. Nó rất phù hợp cho việc mã hóa các khái niệm toán học. Tổng quát hơn, Haskell vượt trội về tính trừu tượng (abstraction) và do đó, khoa học dữ liệu được hưởng lợi từ sự trừu tượng hóa mạch lạc (coherent abstractions) mà Haskell mang lại nhiều như bất kỳ công cụ toán học hoặc phần mềm nào khác. Haskell cũng có thể hoạt động trực tiếp trên các giá trị từ R với HaskellR.

Haskell có DataHaskell, một nguồn tài nguyên opened-source đáng tin cậy và có thể tái tạo được dùng cho khoa học dữ liệu, bên cạnh đó là cách tận dụng ngôn ngữ lập trình Haskell để phát triển machine learning. Cộng đồng Khoa học dữ liệu dùng Haskell chắc chắn đang lớn mạnh với DataHaskell.

Một nhà khoa học AI kỳ cựu tại Target nói rằng: “Haskell có tính biểu cảm, nhanh hơn, an toàn hơn. Theo truyền thống, Haskell không được sử dụng cho khoa học dữ liệu nên việc lựa chọn thư viện bị hạn chế. Haskell có một mối quan hệ với toán học, nhưng cuối cùng, hệ thống kiểu (type system) và sự áp dụng các mô hình toán lại khiến nó phù hợp với mã doanh nghiệp dành riêng cho tên miền (domain-specific business code) hơn bất kỳ thứ gì khác.”

Nhược điểm của Haskell?

Haskell cũng được ứng dụng như một ngôn ngữ dùng cho Khoa học dữ liệu, tuy nhiên, do các kiến ​​thức về Haskell không đầy đủ như Python hay R, nên Haskell vẫn không thực sự mạnh về các khả năng liên quan đến khoa học dữ liệu. Hơn nữa, các đường cong học tập của Haskell về cơ bản rất khó và tốn thời gian.

 

VietnamWorks InTECH
Theo TowardsDataScience