Hướng dẫn wavelet transform time series python code - mã python chuỗi thời gian biến đổi wavelet

Ảnh của Shifaaz Shamoon trên undplash

Mục đích của bài đăng này là để chỉ ra lý do tại sao chuyển đổi sóng con liên tục rất mạnh mẽ và cách sử dụng nó để phân loại nhiều tín hiệu và chuỗi thời gian không cố định.

1 Giới thiệu: Tầm quan trọng của chuyển đổi sóng con liên tục

Trong thời đại số hóa và cuộc cách mạng công nghiệp thứ tư, các công ty ngày càng tập trung vào việc phát triển các ứng dụng dựa trên dữ liệu để tạo ra các mô hình kinh doanh mới. Thông thường, điều kiện tiên quyết cho các dịch vụ mới kết quả là ghi lại dữ liệu hoặc tín hiệu không cố định (dữ liệu thay đổi động theo thời gian) và chuỗi thời gian như xu hướng tài chính hoặc âm thanh, rung động, điện, gia tốc kế hoặc các loại tín hiệu cảm biến khác. Để tạo ra giá trị kinh doanh mong muốn, các sự kiện phải được phát hiện và hiểu bởi dữ liệu này thường.

Đây là nơi máy và học sâu xuất hiện. Các mô hình toán học này cho phép phân loại và dự đoán trạng thái từ một thiết bị IoT theo cách rất hiệu quả. Thật không may, thường nhiều tín hiệu không cố định (chuỗi thời gian) theo yêu cầu, rất phức tạp và dễ bị nhiễu và các giá trị sai lệch. Để cải thiện độ chính xác dự đoán của một mô hình, thường hữu ích khi sử dụng các kỹ thuật xử lý tín hiệu số. Một kỹ thuật rất mạnh mẽ cho phạm vi này là chuyển đổi sóng con liên tục.

Biến đổi sóng con liên tục (CWT) rất hiệu quả trong việc xác định tỷ lệ giảm xóc của các tín hiệu dao động (ví dụ: xác định giảm xóc trong các hệ thống động). CWT cũng rất chống lại tiếng ồn trong tín hiệu

Carmen Hurley & Jaden McLean: Wavelet, Phân tích và Phương pháp (2018). Trang 73

PS. Ngoài CWT, còn có sự biến đổi wavelet rời rạc (DWT), mà tôi sẽ không giải thích chi tiết hơn trong bài đăng này.

Không thể hiểu được, CWT không phổ biến lắm trong khoa học dữ liệu. Vì lý do này, trong bài viết sau, tôi muốn cho thấy CWT có thể được sử dụng dễ dàng như thế nào cho máy và học sâu (Phần 3). Đầu tiên, tôi muốn phác thảo một số lý thuyết cơ bản liên quan đến CWT (Phần 2).

2 Xử lý tín hiệu bằng cách sử dụng chuyển đổi sóng con liên tục

Trong phần này, tôi muốn cung cấp một cái nhìn tổng quan ngắn gọn về lý do tại sao chuyển đổi wavelet rất hữu ích để phân tích các tín hiệu không cố định (Phần 2.1), chẳng hạn như khái niệm đằng sau nó (Phần 2.2).

2.1 Giới hạn của chuyển đổi Fourier

Biến đổi Fourier (FT) phân hủy tín hiệu thành tần số bằng cách sử dụng một loạt sóng xoang. Nó giúp chuyển đổi giữa miền thời gian và tần số. Để hiểu rõ hơn về FT, tôi khuyên bạn nên sử dụng video hữu ích này.

Để minh họa cho giới hạn của FT, chúng ta cần một tín hiệu cố định và không cố định rất đơn giản. Tín hiệu đứng yên không thay đổi giá trị trung bình, phương sai và hiệp phương sai của nó theo thời gian, thay vì tín hiệu không cố định động. Trong ft, chúng ta phải xem xét miền thời gian và tần số. Miền thời gian cho thấy biên độ/cường độ của tín hiệu là hàm của thời gian, có thể được biểu diễn dưới dạng tần số riêng lẻ trong miền tần số sau FT (Hình 1).

Hình 1. Phân tích các tín hiệu không cố định sử dụng FT cho phép không có hình ảnh hoàn chỉnh về miền thời gian và tần số của nó

Như bạn có thể thấy (Hình 1), FT hoạt động rất tốt cho sóng xoang, được tạo ra bởi một quá trình đứng yên vì tín hiệu chứa tất cả các tần số của nó mọi lúc (trong ví dụ này, chỉ có một tần số). Bây giờ, hãy để tập trung vào sự bùng nổ trong tín hiệu không cố định, có thể là một loại mô hình dị thường hoặc đặc trưng. Giống như với quy trình hoe, bạn cũng có thể xác định tần số bằng cách sử dụng FT, mặc dù bạn không thể xác định tần số nào biểu thị chính xác sự bùng nổ trong tín hiệu. Điều về FT là nó chỉ phân tách một tín hiệu trong miền tần số của nó mà không có bất kỳ thông tin nào về miền thời gian của nó. Điều này giải thích tại sao không thể xác định tần số nào là một phần của tín hiệu tại một thời điểm cụ thể hoặc ngược lại. Tóm lại, với các tín hiệu không cố định kết hợp với FT, bạn bị giới hạn trong miền thời gian hoặc miền tần số, nhưng bạn không bao giờ có được hình ảnh hoàn chỉnh của tín hiệu. Để xử lý vấn đề này một cách thông minh, hãy để xem xét kỹ hơn về chuyển đổi sóng con liên tục trong phần tiếp theo.

2.2 Chức năng của chuyển đổi sóng con liên tục (CWT)

Các wavelet là các hàm toán học thường được gọi là sóng con mini. Trái ngược với các hàm xoang vô cực (-Infinity to +Infinity) được sử dụng cho FT, WT chứa:

  1. Các gia đình và loại sóng khác nhau với sự nén chặt và mịn màng khác nhau
  2. Có nghĩa là không và giới hạn (hữu hạn) theo thời gian

Các hình dạng sóng con khác nhau cho phép chúng tôi chọn hình phù hợp nhất với các tính năng mà chúng tôi đang tìm kiếm trong tín hiệu của mình. Hầu hết các sóng con phổ biến cho CWT là sóng con của Mexico Mexico, Morlet và Gaussian (Hình 2). Họ cũng được gọi là mẹ của mẹ con sóng con.

Hình 2: Hình dạng của chiếc mũ Mexico, Morlet và Gaussian Mother Wavelets.

Tái bút: Gói Python, Py Pyavelets được sử dụng cung cấp thêm các sóng con mẹ tương thích với CWT. Do đó, xin vui lòng đọc các tài liệu tham khảo API PyWavelets.

Hình 2 cũng cho thấy giá trị trung bình bằng không và giới hạn thời gian của các sóng con. Cả hai điều kiện này cho phép bản địa hóa từ thời gian và tần suất cùng một lúc. Ngoài ra, chúng cho phép chuyển đổi sóng con tích hợp và nghịch đảo cần thiết. CWT có thể được mô tả bằng phương trình sau:

Do đó, chuyển đổi wavelet sử dụng các sóng con mẹ để chia chuỗi thời gian 1D thành thứ hai hoặc hình ảnh thành các thành phần được chia tỷ lệ. Trong kết nối này, việc chuyển đổi dựa trên các khái niệm về tỷ lệ và dịch chuyển.

  • Tỷ lệ: Kéo dài hoặc thu hẹp tín hiệu theo thời gian theo hệ số tỷ lệ.
  • Chuyển dịch: Di chuyển các sóng con có tỷ lệ khác nhau từ đầu đến cuối tín hiệu.

Hệ số tỷ lệ tương ứng với mức độ tín hiệu được chia tỷ lệ theo thời gian và nó tỷ lệ nghịch với tần số. Điều này có nghĩa là thang đo càng cao, tùy ý quy mô càng tốt (Hình 3).

Hình 3: Trình diễn một tiếng thu nhỏ và sóng con morlet kéo dài theo thời gian. Yếu tố tỷ lệ có liên quan nghịch với tần số.

Theo đó, điều này giúp:

  • sóng con kéo dài để nắm bắt những thay đổi chậm; và
  • thu nhỏ sóng con để nắm bắt những thay đổi đột ngột trong tín hiệu.

Các bước sóng khác nhau về quy mô và thời gian được thay đổi dọc theo toàn bộ tín hiệu và nhân với khoảng thời gian lấy mẫu của nó để có được ý nghĩa vật lý, dẫn đến các hệ số là một hàm của thang đo sóng con và các tham số dịch chuyển. Ví dụ, một tín hiệu có 100 dấu thời gian nhân với 32 (trong phạm vi từ 1 đến 33) tỷ lệ dẫn đến 3.200 hệ số. Điều này cho phép đặc trưng tốt hơn hành vi dao động trong tín hiệu với CWT.

Nếu chúng tôi áp dụng CWT vào ví dụ tín hiệu không cố định của chúng tôi và trực quan hóa các hệ số kết quả trong một biểu đồ, chúng tôi sẽ thu được kết quả sau đây.

Hình 4: So sánh giữa tín hiệu không cố định với vỡ (miền thời gian) và CWT của nó (miền thời gian và tần số)

Salogram trong Hình 4 chỉ ra trong đó phần lớn năng lượng (xem thanh màu bên phải của scalogram) của tín hiệu gốc được chứa trong thời gian và tần số. Hơn nữa, chúng ta có thể thấy rằng các đặc điểm của tín hiệu hiện được hiển thị chi tiết được giải quyết cao. Do đó, bạn có thể thấy những thay đổi đột ngột của vụ nổ được phát hiện bởi sóng con co lại với thang đo 1 và 2 và sự thay đổi chậm của sóng xoang bằng cách kéo dài với thang đo 15 đến 25.

PS: Những thay đổi đột ngột thường là phần quan trọng nhất của dữ liệu cả về nhận thức và về mặt thông tin mà họ cung cấp.

Việc hình dung các hệ số CWT như Scalogram 2D ​​có thể được sử dụng để cải thiện sự khác biệt giữa các loại tín hiệu khác nhau. Trong bối cảnh công nghiệp, điều này cho phép phân biệt giữa các quy trình sản xuất khác nhau trong máy (giám sát quy trình), xác định các thành phần như ổ trục cũng như lỗi máy hoặc công cụ (giám sát điều kiện) chỉ đơn giản là các vấn đề chất lượng (giám sát chất lượng) dựa trên - ví dụ - không Tín hiệu cảm biến rung động. Tôi hy vọng rằng điều này cung cấp cho bạn sự hiểu biết tốt hơn về CWT có thể mạnh mẽ như thế nào để phân tích dữ liệu. Bây giờ nó có liên quan để xem làm thế nào bạn có thể sử dụng kỹ thuật này trong máy và học sâu.

3 Phân loại thông qua CWT

Trong Phần 2.2, chúng ta đã thấy rằng CWT biến một chuỗi thời gian 1D thành các hệ số 2D. Do đó, các hệ số biểu thị thời gian, tần số và đặc điểm của tín hiệu và do đó nhiều thông tin hơn chỉ là chuỗi thời gian hoặc FT (Hình 4). Mục tiêu của phần này là sử dụng thông tin được tạo này làm cơ sở để phân loại bằng cách sử dụng nhận dạng mẫu (Phần 3.3) hoặc trích xuất tính năng (Phần 3.4). Trước đây, tôi đã cung cấp một cái nhìn tổng quan ngắn gọn về bộ dữ liệu ví dụ đã chọn (Phần 3.1) và cách áp dụng CWT trên dữ liệu này (Phần 3.2).

3.1 Bộ dữ liệu nhận dạng hoạt động của con người (HAR) được sử dụng

Bộ dữ liệu HAR mở chứa một cảm biến điện thoại thông minh (gia tốc kế và con quay hồi chuyển) đo lường những người khác nhau trong khi họ đang thực hiện các hoạt động sau:

Có 7.532 mẫu tàu và 2.947 mẫu thử nghiệm (đo lường) với sự chồng chéo 50% giữa mỗi mẫu. Mỗi mẫu bao gồm chín tín hiệu có kích thước cố định, với 128 bài đọc và các bước thời gian.

You can download and read more about the dataset at the this link.

We are loading the almost raw inertial signals where only the gravity effect has been filtered out.

useful information: shapes (n_samples, n_steps, n_signals) of X_train: (7352, 128, 9) and X_test: (2947, 128, 9) all X’s have a mean of: 0.10 and a standard derivation of: 0.40

As you can see, the signals are almost normalized.

If you plot the body accelerometer and body gyroscope signals of two different activities, you will see dynamically changing (non-stationary) signals for each sample (Figure 5). For better clarity, we will not plot the total accelerometer values.

Figure 5: Example visualization of the activity walking and laying through the body accelerometer and body gyroscope smart phone signals from the HAR dataset

According to the dynamical behavior of the signals (Figure 5), this dataset seems ideal to apply wavelet transformation.

3.2 Application of the CWT in Python

As already mentioned (section 2.2), we can distinguish between different events through the visualization of the CWT coefficient manually. Is this also possible for the HAR dataset?

To find this out, we must first install the Python package PyWavelets with “pip install PyWavelets” or “conda install pywavelets”, which we can use to apply the wavelet transformation on our dataset.

Second, we must define a convenient mother wavelet and scale size for the continuous wavelet function pywt.cwt. Regarding this kind of signal (Figure 5), we choose the Morlet Mother Wavelet (Figure 2) based on its most suitable shape. To select an appropriate range of scales, let’s consider the CWT coefficients of three different ranges 32, 64 and 128, represented as a scalogram (Figure 6).

Figure 6: Representation of the increasing information about the behaviors of a signal to the expanding range of scales.

In general, a smaller size of scales (in our example 32) enables more focus of abrupt changes. As already mentioned, these suddenly changes are often the most important characteristics. Otherwise a wide range of scales (in our example, 64 or 128) provides more information (about slowly changes), which can provide a better classification accuracy. However, you will need a deeper CNN for the second option.

For the next illustration, a scale of 64 seems like a useful compromise to reach a good prediction accuracy.

Figure 7: Distinguishing the different HAR activities based on the visualization of the continuous wavelet transformed sensor data via a scalogram

As you can see (Figure 7), it is manually feasible to differ between the different activities through the visualization of the CWT coefficients via a scalogram. Please feel free to choose other signals or samples, then you will see that each signal is more or less convenient to distinguish between the six activities. For example, you will not reach a good classification accuracy for the non-moving activities like sitting, standing and laying using only the total accelerate sensor data in x, y and z.

I am certain that you would not like to consider and compare thousands of scalograms manually to determine the activity of each sample. For this reason, we first use a conventional neuronal network (section 3.3) and second a feature extraction technique plus a classifier (section 3.4) to classify the differ activities of the HAR dataset automatically.

3.3 Pattern Detection using Conventional Neuronal Networks (CNN)

A CNN is highly efficiency to learn characteristic patterns of labels in images. This kind of neuronal network can also handle the 2D CWT coefficients like pixels of an image to predict the corresponding activity. Let’s see how this combination works.

However, before we can start to feed a CNN, we must:

  1. transform the signals of the HAR dataset using the pywt.cwt function; and
  2. bring the resulting coefficients into a suitable format.

In this case, we will also choose the Morlet Mother Wavelet and a scale size of 64 for the pywt.cwt function, like in section 3.2. Additionally, we resize all coefficient matrices (64x128) to a square shape (64x64). This step is not absolutely necessary but saves many parameters and computation resources and at the same time we should not lose too many details of the images (Figure 8).

Figure 8: Depiction of the impact of down sampling the continuous wavelet transformed 2D coefficients by using scalograms

As second point, we must still clarify how to feed the resulting CWT coefficient matrices into the CNN. Here, the best approach is to place the 2D coefficients (images) of the nine signals on each other like the three channels red, green, blue (RGB) of a color image. Accordingly, all dependencies between the different sensor data can be taken into account simultaneously, which is very important. Please note here: If you concatenate the CWT coefficients of the nine different signals into one Numpy array (image), you will have abrupt changes between them. These may lead to the effect that the CNN focuses on the boundaries due to the abrupt changes instead of the significant characteristics patterns of each signal. Accordingly, you will need a much deeper CNN to ignore this kind of noise.

Để minh họa, chúng tôi xây dựng một CNN đơn giản với kiến ​​trúc Lenet-5 (Hình 9) và thực hiện hai cải tiến:

Hình 9: Kiến trúc LENET-5 của Mạng tế bào thần kinh thông thường (CNN) với gộp tối đa và kích hoạt Relu
  • Hợp đồng tối đa thay vì gộp trung bình, bởi vì gộp tối đa có thể đạt được hiệu suất tốt hơn khi bạn muốn trích xuất các tính năng cực đoan (thay đổi đột ngột) và khi hình ảnh có mật độ pixel cao (do chín kênh).
  • Chức năng kích hoạt đơn vị tuyến tính được chỉnh lưu (Relu) thay vì tiếp tuyến hyperbol (TAMH) để khắc phục vấn đề độ dốc biến mất, tăng tốc đào tạo và đạt được hiệu suất tốt hơn.

Hãy để đào tạo và đánh giá mô hình!

tập huấn…

sự đánh giá…

Accuracy: 94.91%

Không tệ! Độ chính xác gần 95% là rất tốt cho bộ dữ liệu này bởi vì sự khác biệt giữa các hoạt động không di chuyển tương tự (ở, đặt và ngồi) và các hoạt động di chuyển tương tự (đi bộ, đi bộ lên cầu thang) được thực hiện bởi những người khác nhau không dễ dàng người mẫu. Kết quả này nên được coi là bằng chứng cho thấy sự kết hợp giữa CWT và CNN là một lựa chọn hữu ích để phân loại chuỗi/tín hiệu nhiều thời gian không cố định. Tôi chắc chắn rằng thông qua các cải tiến của CNN (thêm chính quy hóa, nhiều tế bào thần kinh hơn và do đó), các kiến ​​trúc CNN khác, điều chỉnh siêu đồng tính hoặc kích thước tỷ lệ khác (có hoặc không có lấy mẫu xuống) có thể đạt được với kết quả tốt hơn. Vì vậy, hãy để thử một cách tiếp cận khác.

3.4 Trích xuất tính năng Sử dụng phân tích thành phần chính (PCA)

Mặc dù chúng tôi đã sử dụng tất cả các hệ số CWT 2D như hình ảnh cho CNN trong phần trước, chúng tôi sẽ chọn các hệ số quan trọng nhất trên mỗi thang đo để cung cấp cho bộ phân loại lần này. Do đó, chúng tôi áp dụng PCA để trích xuất các tính năng với biến thể cao nhất. Nếu bạn không quen thuộc với logic đằng sau PCA, tôi khuyên bạn nên cho bạn nguồn này.

Để chọn hệ số với biến thể cao nhất trên mỗi thang đo, chúng ta phải:

  1. Áp dụng chức năng pywt.cwt như trước; và
  2. Áp dụng PCA chỉ cho một thành phần duy nhất để có được hệ số quan trọng nhất trên mỗi tỷ lệ.

Theo cách này, chúng tôi làm việc với 64 tính năng thay vì 64*128 cho mỗi tín hiệu. Bộ dữ liệu tính năng mới kết quả có hình dạng 2D là (N_Samples, 576 (= 64 Tính năng * 9 Tín hiệu).

Để phân loại, tôi chọn XGBOOST (tăng độ dốc cực độ), một trong những phân loại cạnh tranh Kaggle chiến thắng nhất hiện nay. XGBOOSTIS Một thuật toán học tập dựa trên cây dựa trên cây quyết định, được thiết kế cho tốc độ và hiệu suất. Để tìm ra lý do tại sao XGBOSST hoạt động rất tốt, bạn có thể đọc bài đăng này.Xtreme Gradient Boosting), which is one of the currently most winning Kaggle competition classifiers. XGBoostis a gradient boosting, decision tree-based ensemble machine learning algorithm designed for speed and performance. To figure out why the XGBosst performs so well, you can read this post.

Trong bối cảnh của bộ dữ liệu HAR, điều quan trọng là chọn mục tiêu của Multi: SoftMax, để cho phép phân loại nhiều hơn các lớp nhị phân. Ngoài ra, chúng tôi áp dụng mẫu phụ - còn được gọi là đóng gói - để giảm phương sai và do đó quá mức. Do đó, phân số mẫu phụ chọn ngẫu nhiên các mẫu đào tạo được sử dụng để phù hợp với từng cây.

Accuracy: 92.67%

Gần 93% độ chính xác cũng là một kết quả tốt. Rõ ràng phương pháp này tách biệt tốt hơn một chút giữa các hoạt động không di chuyển như ngồi và đứng, và do đó rõ ràng tồi tệ hơn giữa các hoạt động đi bộ khác nhau. Như với mọi mô hình học máy, bạn có thể cải thiện hiệu suất thông qua điều chỉnh tham số Hyper và trong trường hợp này bằng cách tăng kích thước tỷ lệ để có được nhiều tính năng đầu vào hơn. Trình phân loại XGBOOST đủ mạnh để xử lý 576 tính năng đầu vào. Hầu hết các phân loại có thể xác định độc lập các tính năng nào hữu ích hay không. Tuy nhiên, bạn nên suy nghĩ về việc chọn các tính năng có tầm quan trọng cao nhất khi bạn sử dụng quy mô cao hơn nhiều.

4. Kết luận

Trong bài đăng này, bạn đã thấy lý do và làm thế nào để sử dụng CWT mạnh mẽ cho các tín hiệu không cố định. Kết quả tốt của CWT kết hợp với CNN, hoặc PCA cộng với một trình phân loại đóng vai trò là bằng chứng cho thấy các phương pháp này là một lựa chọn tuyệt vời để phân loại nhiều chuỗi thời gian cho mỗi sự kiện. Có rất nhiều cấu hình có thể điều chỉnh của thuật toán và mô hình khác nhau ảnh hưởng đến kết quả kết quả mà không có quy trình hợp lệ chung cho mục đích này có thể được đặt tên. Theo kinh nghiệm của tôi, chuyển đổi sóng con liên tục (cũng rời rạc) chủ yếu thực hiện các kỹ thuật xử lý tín hiệu khác cho các tín hiệu không cố định và độ chính xác phân loại của các loại mô hình khác như mạng nơ ron tái phát đơn giản bằng cách sử dụng dữ liệu HAR thô.

Cuối cùng, tôi hy vọng rằng bài đăng này tạo ra sự biến đổi sóng con (liên tục) phổ biến hơn trong khoa học dữ liệu giống như trong máy móc và học tập sâu, và nó thúc đẩy bạn thử.