Cảnh báo rủi ro: Đề phòng huy động vốn bất hợp pháp dưới danh nghĩa 'tiền điện tử' và 'blockchain'. — Năm cơ quan bao gồm Ủy ban Giám sát Ngân hàng và Bảo hiểm
Tìm kiếm
Đăng nhập
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt
BTC
ETH
HTX
SOL
BNB
Xem thị trường
LUCIDA: Cách sử dụng chiến lược đa yếu tố để xây dựng danh mục tài sản tiền điện tử mạnh mẽ (xử lý trước dữ liệu)
LUCIDA
特邀专栏作者
2023-11-28 07:51
Bài viết này có khoảng 1774 từ, đọc toàn bộ bài viết mất khoảng 3 phút
Quá trình tiền xử lý dữ liệu cụ thể liên quan đến việc xử lý các giá trị trùng lặp, giá trị ngoại lệ/giá trị bị thiếu/giá trị cực trị, tiêu chuẩn hóa và tần suất dữ liệu.

Lời nói đầu

Tiếp tục từ chương trước, chúng tôi đã xuất bảnBài viết đầu tiên trong loạt bài “Xây dựng danh mục tài sản tiền điện tử mạnh mẽ bằng chiến lược đa yếu tố” - Cơ sở lý thuyết, bài viết này là bài viết thứ hai - tiền xử lý dữ liệu.

Trước/sau khi tính toán dữ liệu hệ số và trước khi kiểm tra tính hợp lệ của một hệ số duy nhất, dữ liệu liên quan cần được xử lý. Quá trình tiền xử lý dữ liệu cụ thể liên quan đến việc xử lý các giá trị trùng lặp, giá trị ngoại lệ/giá trị bị thiếu/giá trị cực trị, tiêu chuẩn hóa và tần suất dữ liệu.

1. Giá trị trùng lặp

Các định nghĩa liên quan đến dữ liệu:

  • Khóa: Đại diện cho một chỉ mục duy nhất. ví dụ: Đối với một phần dữ liệu có tất cả mã thông báo và tất cả ngày, khóa là token_id/contract_address - date

  • Giá trị: Đối tượng được lập chỉ mục bởi khóa được gọi là giá trị.

Việc chẩn đoán các giá trị trùng lặp trước tiên đòi hỏi phải hiểu dữ liệu nên trông như thế nào. Thông thường dữ liệu có dạng:

  1. Dữ liệu chuỗi thời gian. Điều quan trọng là thời gian. ví dụ: Dữ liệu về giá trong 5 năm cho một mã thông báo

  2. Dữ liệu mặt cắt ngang (Cross Cut). Điều quan trọng là cá nhân. eg.2023.11.01 Dữ liệu giá của tất cả các token trên thị trường tiền điện tử vào ngày đó

  3. Dữ liệu bảng (Panel). Điều quan trọng là sự kết hợp của “thời gian cá nhân”. Ví dụ: Dữ liệu giá của tất cả các token trong bốn năm từ 2019.01.01 đến 2023.11.01.

Nguyên tắc: Khi chỉ mục (khóa) của dữ liệu được xác định, bạn có thể biết dữ liệu sẽ không có giá trị trùng lặp ở cấp độ nào.

Phương pháp kiểm tra:

pd.DataFrame.duplicated(subset=[key 1, key 2, ...])

  • Kiểm tra số lượng giá trị trùng lặp: pd.DataFrame.duplicate(subset=[key 1, key 2, ...]).sum()

  • Lấy mẫu để xem các mẫu trùng lặp: df[df.duplicate(subset=[...])].sample() Sau khi tìm thấy mẫu, hãy sử dụng df.loc để chọn tất cả các mẫu trùng lặp tương ứng với chỉ mục

pd.merge(df 1, df 2, on=[key 1, key 2, ...], indicator=True, validate='1: 1')

  • Trong chức năng hợp nhất theo chiều ngang, việc thêm tham số chỉ báo sẽ tạo ra trường _merge. Sử dụng dfm[_merge].value_counts() để kiểm tra số lượng mẫu từ các nguồn khác nhau sau khi hợp nhất.

  • Bằng cách thêm tham số xác thực, bạn có thể xác minh xem chỉ mục trong tập dữ liệu đã hợp nhất có như mong đợi hay không (1 đến 1, 1 đến nhiều hoặc nhiều đối với nhiều, trường hợp cuối cùng thực sự có nghĩa là không cần xác minh). Nếu không như mong đợi, quá trình hợp nhất sẽ báo lỗi và hủy bỏ quá trình thực thi.

2. Giá trị ngoại lệ/giá trị thiếu/giá trị cực trị

Nguyên nhân phổ biến của các ngoại lệ:

  1. trường hợp cực đoan.Ví dụ: nếu giá mã thông báo là 0,000001 đô la hoặc mã thông báo có giá trị thị trường chỉ 500.000 đô la Mỹ, nếu nó thay đổi một chút, sẽ có lợi nhuận gấp hàng chục lần.

  2. Đặc điểm dữ liệu.Ví dụ: nếu dữ liệu giá mã thông báo bắt đầu được tải xuống vào ngày 1 tháng 1 năm 2020 thì đương nhiên không thể tính toán dữ liệu trả về vào ngày 1 tháng 1 năm 2020 vì không có giá đóng cửa của ngày hôm trước.

  3. lỗi dữ liệu.Các nhà cung cấp dữ liệu chắc chắn sẽ mắc sai lầm, chẳng hạn như ghi 12 nhân dân tệ mỗi mã thông báo thành 1,2 nhân dân tệ mỗi mã thông báo.

Nguyên tắc xử lý các giá trị ngoại lệ và giá trị bị thiếu:

  • xóa bỏ. Các ngoại lệ không thể sửa chữa hoặc sửa chữa một cách hợp lý có thể được xem xét xóa.

  • thay thế. Thường được sử dụng để xử lý các giá trị cực trị, chẳng hạn như winorizing hoặc lấy logarit (không được sử dụng phổ biến).

  • đổ đầy. vìGiá trị bị mấtBạn cũng có thể cân nhắc việc điền một cách hợp lý. Các cách phổ biến bao gồmnghĩa là(hoặc đường trung bình động),phép nội suy(Interpolation)、Điền vào số 0df.fillna(0), df.fillna(ffill)/điền lùi df.fillna(bfill), v.v. Cần phải xem xét liệu các giả định mà việc điền dựa vào có nhất quán hay không.

    Hãy thận trọng khi sử dụng tính năng điền ngược trong học máy vì có nguy cơ sai lệch Nhìn về phía trước.

Cách xử lý các giá trị cực trị:

1. Phương pháp phần trăm.

Bằng cách sắp xếp thứ tự từ nhỏ đến lớn, dữ liệu vượt quá tỷ lệ tối thiểu và tối đa sẽ được thay thế bằng dữ liệu quan trọng. Đối với dữ liệu có dữ liệu lịch sử phong phú, phương pháp này tương đối thô và không có tính áp dụng cao, việc buộc xóa một tỷ lệ dữ liệu cố định có thể gây ra một tỷ lệ tổn thất nhất định.

2,3σ / ba phương pháp độ lệch chuẩn

Thực hiện các điều chỉnh sau cho tất cả các yếu tố trong phạm vi dữ liệu:

Nhược điểm của phương pháp này là dữ liệu thường được sử dụng trong lĩnh vực định lượng, chẳng hạn như giá cổ phiếu và giá token, thường thể hiện phân phối đỉnh và đuôi dày, không phù hợp với giả định về phân phối chuẩn. Phương pháp 3 σ sẽ xác định nhầm một lượng lớn dữ liệu là giá trị bất thường.

3. Phương pháp độ lệch tuyệt đối trung vị (MAD)

Phương pháp này dựa trên độ lệch trung bình và độ lệch tuyệt đối, làm cho dữ liệu được xử lý ít nhạy cảm hơn với các giá trị cực trị hoặc các giá trị ngoại lệ. Mạnh mẽ hơn các phương pháp dựa trên giá trị trung bình và độ lệch chuẩn.

# Xử lý các tình huống có giá trị cực trị của dữ liệu hệ số

class Extreme(object):
   def __init__(s, ini_data):
       s.ini_data = ini_data    

   def three_sigma(s, n= 3):
       mean = s.ini_data.mean()
       std = s.ini_data.std()
       low = mean - n*std
       high = mean + n*std        

       return np.clip(s.ini_data, low, high) 

  def mad(s, n= 3):
       median = s.ini_data.median()
       mad_median = abs(s.ini_data - median).median()
       high = median + n * mad_median
       low = median - n * mad_median                                          

       return np.clip(s.ini_data, low, high)

   def quantile(s, l = 0.025, h = 0.975):
       low = s.ini_data.quantile(l)
       high = s.ini_data.quantile(h)
       return np.clip(s.ini_data, low, high)

3. Tiêu chuẩn hóa

Tiêu chuẩn hóa điểm 1.Z

2. Tiêu chuẩn hóa chênh lệch giá trị tối đa và tối thiểu (Tỷ lệ tối thiểu)

Chuyển đổi từng dữ liệu yếu tố thành dữ liệu trong khoảng (0, 1), cho phép so sánh dữ liệu có kích thước hoặc phạm vi khác nhau, nhưng nó không thay đổi sự phân bố trong dữ liệu và cũng không làm cho tổng trở thành 1.

  • Do xem xét các giá trị tối đa và tối thiểu, nó rất nhạy cảm với các giá trị ngoại lệ

  • Việc thống nhất các kích thước tạo điều kiện thuận lợi cho việc so sánh dữ liệu ở các kích thước khác nhau.

3. Thang xếp hạng

Chuyển đổi các đặc điểm dữ liệu thành thứ hạng của chúng và chuyển đổi các thứ hạng này thành điểm từ 0 đến 1, thường là phần trăm của chúng trong tập dữ liệu. *

  • Phương pháp này không nhạy cảm với các giá trị ngoại lệ vì thứ hạng không bị ảnh hưởng bởi các giá trị ngoại lệ.

  • Khoảng cách tuyệt đối giữa các điểm trong dữ liệu không được duy trì mà được chuyển thành thứ hạng tương đối.

# Lớp dữ liệu nhân tố được chuẩn hóa Thang đo (đối tượng):
   def __init__(s, ini_data, date):
       s.ini_data = ini_data
       s.date = date    
   def zscore(s):
       mean = s.ini_data.mean()
       std = s.ini_data.std()
       return s.ini_data.sub(mean).div(std)
   def maxmin(s):
       min = s.ini_data.min()
       max = s.ini_data.max()
       return s.ini_data.sub(min).div(max - min)
   def normRank(s):
# Xếp hạng cột được chỉ định, phương thức=min nghĩa là cùng một giá trị sẽ có cùng thứ hạng chứ không phải thứ hạng trung bình
       ranks = s.ini_data.rank(method='min')
       return ranks.div(ranks.max())

4. Tần số dữ liệu

Đôi khi dữ liệu thu được không có tần suất cần thiết cho phân tích của chúng tôi. Ví dụ: nếu mức độ phân tích là hàng tháng và tần suất dữ liệu gốc là hàng ngày thì bạn cần sử dụng downsampling, tức là dữ liệu tổng hợp là hàng tháng.

Lấy mẫu xuống

giới thiệuTổng hợp dữ liệu trong một bộ sưu tập thành một hàng dữ liệu, ví dụ: dữ liệu hàng ngày được tổng hợp thành dữ liệu hàng tháng. Lúc này cần xem xét đặc điểm của từng chỉ số tổng hợp, các thao tác phổ biến bao gồm:

  • giá trị đầu tiên/giá trị cuối cùng

  • trung bình/trung vị

  • độ lệch chuẩn

lấy mẫu lại

Nó đề cập đến việc chia một hàng dữ liệu thành nhiều hàng dữ liệu, chẳng hạn như dữ liệu hàng năm được sử dụng để phân tích hàng tháng. Tình huống này thường yêu cầu sự lặp lại đơn giản và đôi khi cần tổng hợp dữ liệu hàng năm vào từng tháng theo tỷ lệ.

Liên kết gốc


DA
đầu tư
Chào mừng tham gia cộng đồng chính thức của Odaily
Nhóm đăng ký
https://t.me/Odaily_News
Tài khoản chính thức
https://twitter.com/OdailyChina