Hàm tuyến tính và linear regression

Các bài toán có thể giải bằng linear regression là các bài toán có thể biểu diễn bằng một hàm tuyến tính.

Vậy hàm số tuyến tính là hàm số như thế nào? Hàm số tuyến tính là hàm số có dạng là một đường thẳng y=ax+b. Mở rộng ra ta có hệ phương trình tuyến tính là hệ phương trình có các phương trình là phương trình tuyến tính, hay nói cách khác là phương trình tuyến tính có nhiều hơn 1 biến.

Bởi vì nếu chỉ có 1 phương trình tuyến tính nhiều hơn 1 biến thì có vô số nghiệm, cần phần có các điều kiện hoặc nhiều hơn 1 phương trình tuyến tính thì mới có thể giải được.

Quay lại việc giải bài toán bằng LINEAR REGRESSION thì chỉ cần nó là hàm tuyến tính theo trọng số (w).

PyTorch vs TensorFlow on Machine Learning frameworks

Mình biết đến TensorFlow khi tìm hiểu về Deep Learning. TensorFlow được phát triển bởi Google(trước đây là DeepMind được Google mua lại năm 2014).
TensorFlow trở nên nổi tiếng cùng với những ứng dụng Trí tuệ nhân tạo mới nổi cùng Deep Learning. Nhưng tới năm nay thì PyTorch đang được công đồng những nhà khoa học về Machine Learning quan tâm. Bằng chứng là các bài báo được nghiên cứu nhắc đến và sử dụng PyTorch khá nhiều. Nó có vẻ dễ sử dụng, chạy nhanh hơn so với TensorFlow nhưng ứng dụng cho các sản phẩm thực tế còn hạn chế.

Cần tìm hiểu thêm về PyTorch xem như thế nào.
Kiến thức này mình xem ở: https://thegradient.pub/state-of-ml-frameworks-2019-pytorch-dominates-research-tensorflow-dominates-industry/

Convert csv sang excel với pandas trên Anaconda

Trong quá trình làm việc, mình rất hay phải thao tác với các file csv, excel, html… vì liên quan đến nhiều các phòng ban và làm việc nhiều với dữ liệu, báo cáo.
Đặc thù hệ thống bên mình sử dụng Oracle, họ đã viết sẵn các thủ tục chỉ có thể xuất ra các file có định dạng là csv và html. Nhưng đối với mọi người thì dùng excel thuận tiện hơn, không chỉ IT mà các phòng khác như kế toán… Thế nên mọi người, trong đó cả mình thường xuyên phải chuyển file csv sang định dạng excel để xử lý.
Để chuyển csv sang excel có nhiều cách:

  • Sử dụng tính năng Load data từ file csv có sẽ trong Excel. Cách này đòi hỏi vài bước để xử lý, nhất là đối với dữ liệu text toàn chữ số dài và Tiếng Việt có dấu.
  • Sử dụng tính năng convert trên mạng, có thể google.

Đa phần mọi người đều phải dùng tính năng của excel vì không thể tùy tiện dùng các tool linh tinh nhất là trên mạng vì tính nhạy cảm của dữ liệu. Thế là mình nghĩ ra việc tự làm tool hoặc script xử lý vấn đề trên cho bản thân. Đơn giản là convert từ csv sang excel.
Ban đầu định dùng .NET vì mình đã triển khai nhiều tool cho công việc. Nhưng hiện mình đang mày mò Machine Learning với Anaconda nên mình nghĩ viết bằng Python xem sao.
Với Python có thư viện pandas xử lý rất tốt về mặt dữ liệu, đặc biệt là dữ liệu với excel và csv. Đối với Anaconda thì pandas là một trong những thư viện mặc định trong đó nên không cần cài đặt gì cả.
Đoạn code rất đơn giản như sau:

import pandas as pd 

data = pd.read_csv("C:/Users/SVPK/Desktop/Extract_warranty_201909.csv",delimiter = ';',prefix = 'T',header = 0)  

# print(data) 

 data.to_excel("C:/Users/SVPK/Desktop/Extract_warranty_201909.xlsx") 

Mình giải thích qua đoạn code trên như sau:
Mục đích sẽ load dữ liệu từ csv lên một biến, sau đó tiến hành ghi nó ra file excel.(Đơn giản vậy thôi)
Các tham số chủ yếu mình đã thử là:

  • delimiter: Mặc định csv nó là dấu ‘,’ nhưng hệ thống mình toàn sử dụng dấu ‘;’ để ngăn cách trong file csv
  • prefix: Đối với file mà không chứ tên cột mà muốn đặt tên cột thì mình để tiền tố này để nó đặt mặc định
  • header: Vì có tên cột với không có tên cột nên thực chất data của mình sẽ bắt đầu từ đâu sẽ do tham số này quyết định.

Từ đây dùng cho mình ok, nhưng nhược điểm khó chuyển cho người khác dùng vì phải cài Anaconda hoặc ít nhất là python và pandas. Nên mình đang nghĩ các cách để dùng như:

  • Tạo 1 thư mục cho mọi người ftp để đẩy file vào. Mình có 1 job quét và xử lý sau đó đưa file kết quả sang 1 thư mục khác để mọi người dùng.
  • Tạo một tính năng trên Tool để mọi người upload lên và tải file kết quả xuống (hoặc nhập email để gửi về)
  • Gửi email đến email của mình. Mình sẽ dùng job trên Pentaho tiến hành tự load email, bóc tách file đính kèm, xử lý và gửi trả lại.

Thôi, tạm thời thế đã, dùng Anaconda để chạy cho riêng mình vậy.