基於信號處理技術的機器學習

2021-01-11 智能航空發動機
本文講解一篇關於基於信號處理技術的機器學習的博客:《Machine Learning with Signal Processing Techniques》,極力推薦!!

連結:http://ataspinar.com/2018/04/04/machine-learning-with-signal-processing-techniques/

隨機信號分析是一個與隨機信號的處理、修正和分析相關的學科。

任何有物理或工程背景的人都一定程度上了解信號分析技術,這些技術是什麼,以及如何使用它們來分析、建模和分類信號。但是,來自不同領域的數據科學家,比如計算機科學或統計學,可能沒有意識到這些技術可以帶來的分析能力。

在這篇博客文章中,我們將介紹如何使用隨機信號分析技術,結合傳統的機器學習分類器,來對時間序列和信號進行精確地建模和分類。


你可能經常遇到描述數據集的術語,例如時間序列和信號,但是並不清楚它們之間究竟有什麼區別。

在時間序列數據集中,待預測值 y 是時間 t 的函數 y=y(t),但是信號是一個更一般的概念:因變量 y 未必是時間的函數,也可以是空間坐標的函數 y=y(x, y),或者距原點距離的函數 y=y(r)。信號具有多種多樣的形式,像聲音信號、圖片、雷達數據等。從本質上說,任何東西都可以叫做信號,只要它本身攜帶信息。

連續信號與離散信號的主要區別在於:連續信號有一個連續的自變量(例如,時間或者空間坐標)。如果你將信號放大後觀察,你會發現在每一個可以取到實數值的地方都存在連續信號的值。而離散信號只會在某些特定的時刻存在值,比如t=0.1s、t=0.2s、t=0.3s...,在t=0.13s就沒有值。

為了能在電腦上分析和可視化一個信號,通常需要將一個模擬連續信號進行數位化(以一定頻率進行採樣),將其變為離散信號。


選擇一個好的採樣率很重要:如果採樣率太低,離散信號會丟失很多原始信號的信息。採樣率需要滿足奈奎斯特採樣定律,即採樣率要大於原始信號中最大頻率的兩倍。


2、時域和頻域之間的變換(FFT、PSD、Wavelet)

傅立葉分析是一個分析信號周期性的研究領域。如果一個信號含有周期性成分,傅立葉分析可以用來將這個信號分解成周期性成分,並且能夠告訴我們每個周期性分量的頻率是多少。

傅立葉變換可以將複合信號分解成一系列的周期性成分(三角函數)。

在Python中,一個信號的快速傅立葉變換可以用Scipy庫計算。

from scipy.fftpack import fft
def get_fft_values(y_values, T, N, f_s): f_values = np.linspace(0.0, 1.0/(2.0*T), N//2) fft_values_ = fft(y_values) fft_values = 2.0/N * np.abs(fft_values_[0:N//2]) return f_values, fft_values
t_n = 10N = 1000T = t_n / Nf_s = 1/T
x_value = np.linspace(0,t_n,N)amplitudes = [4, 6, 8, 10, 14]frequencies = [6.5, 5, 3, 1.5, 1]y_values = [amplitudes[ii]*np.sin(2*np.pi*frequencies[ii]*x_value) for ii in range(0,len(amplitudes))]composite_y_value = np.sum(y_values, axis=0)f_values, fft_values = get_fft_values(composite_y_value, T, N, f_s)
plt.plot(f_values, fft_values, linestyle='-', color='blue')plt.xlabel('Frequency [Hz]', fontsize=16)plt.ylabel('Amplitude', fontsize=16)plt.title("Frequency domain of the signal", fontsize=16)plt.show()

該複合信號是由頻率分別為6.5、5、3、1.5和1Hz以及相應振幅為4、6、8、10和14的sin函數組成的。

與傅立葉變換密切相關的一個概念是功率譜密度分析。和傅立葉變換類似,它也是描述一個信號頻譜的方法,並且考慮了每個頻率的功率分布。一般來說,PSD圖中峰值對應的頻率和FFT圖中峰值對應的頻率一樣,但是峰值的高度和寬度不一樣。PSD圖中峰值下面的面積對應著那個頻率的功率分布。

from scipy.signal import welch
def get_psd_values(y_values, T, N, f_s): f_values, psd_values = welch(y_values, fs=f_s) return f_values, psd_values

t_n = 10N = 1000T = t_n / Nf_s = 1/T
x_value = np.linspace(0,t_n,N)amplitudes = [4, 6, 8, 10, 14]frequencies = [6.5, 5, 3, 1.5, 1]y_values = [amplitudes[ii]*np.sin(2*np.pi*frequencies[ii]*x_value) for ii in range(0,len(amplitudes))]composite_y_value = np.sum(y_values, axis=0)f_values, psd_values = get_psd_values(composite_y_value, T, N, f_s)
plt.plot(f_values, psd_values, linestyle='-', color='blue')plt.xlabel('Frequency [Hz]')plt.ylabel('PSD [V**2 / Hz]')plt.show()

2.3 在Python中計算自相關係數

自相關函數計算信號與自身延時版本的相關性:如果一個信號的周期為t,那麼該信號和其自身延遲t秒的版本之間就會有很高的相關性。

Scipy庫中沒有現成的計算自相關係數的函數,但是我們可以藉助numpy庫中的correlate()函數實現。自相關係數是與時延t有關的函數值,因此t的取值不能超過原始信號的長度。

def autocorr(x):    result = np.correlate(x, x, mode='full')    return result[len(result)//2:]
def get_autocorr_values(y_values, T, N, f_s): autocorr_values = autocorr(y_values) x_values = np.array([T * jj for jj in range(0, N)]) return x_values, autocorr_values
t_n = 10N = 1000T = t_n / Nf_s = 1/T
x_value = np.linspace(0,t_n,N)amplitudes = [4, 6, 8, 10, 14]frequencies = [6.5, 5, 3, 1.5, 1]y_values = [amplitudes[ii]*np.sin(2*np.pi*frequencies[ii]*x_value) for ii in range(0,len(amplitudes))]composite_y_value = np.sum(y_values, axis=0)t_values, autocorr_values = get_autocorr_values(composite_y_value, T, N, f_s)
plt.plot(t_values, autocorr_values, linestyle='-', color='blue')plt.xlabel('time delay [s]')plt.ylabel('Autocorrelation amplitude')plt.show()

通過對自相關係數進行傅立葉變換,可以得到與FFT一樣的頻率成分。自相關係數與PSD也是一對傅立葉變換,也就是說通過對自相關係數進行傅立葉變換,可以得到PSD;對PSD做傅立葉反變換,可以得到自相關係數。

小波變換適用於動態頻譜的信號(信號的頻率隨著時間不斷變換)。

https://www.mathworks.com/help/wavelet/examples.html這個連結裡提供了matlab小波工具箱裡的一些實用範例,包含了如下內容:


3、統計參數估計和特徵提取

前文已經講述了利用FFT、PSD和自相關函數三種方法來計算信號的頻域特性。這三種方法將時域信號轉換到頻域上,並給出了頻譜圖。
將信號轉換到頻域上後,我們可以從轉換後的信號中提取特徵,並將其作為分類器的輸入。那麼,可以提取哪些特徵呢?一個比較好的想法是將這三種方法得到的圖中峰值的坐標作為特徵,如下圖所示。

關於數據集的描述:This dataset contains measurements done by 30 people between the ages of 19 to 48. The measurements are done with a smartphone placed on the waist while doing one of the following six activities:    walking,    walking upstairs,    walking downstairs,    sitting,    standing or    laying.    The measurements are done at a constant rate of 50 Hz. After filtering out the noise, the signals are cut in fixed-width windows of 2.56 sec with an overlap of 1.28 sec.Each signal will therefore have 50 x 2.56 = 128 samples in total.
The smartphone measures three-axial linear body acceleration, three-axial linear total acceleration and three-axial angular velocity. So per measurement, the total signal consists of nine components


劃分好訓練集和測試集後,訓練集的大小為(7352,128,9),測試集的大小為(2497,128,9)。也就是說,訓練集中有7352個信號,每個信號的9個分量均含有128個樣本點。選擇其中的一個信號,對其分別做FFT、PSD和自相關係數變換後的結果如下圖所示。

特徵提取流程:    transform a signal by means of the FFT, PSD or autocorrelation function.    locate the peaks in the transformation with the peak-finding function.
所提取的特徵個數決定於下面幾個因素:· The number of columns in each matrix depend on depends on your choice of features. · Each signal has nine components, and for each component you can calculate either just the FFT or all three of the transformations. · For each transformation you can decide to look at the first n peaks in the signal. · And for each peak you can decide to take only the x value, or both the x and y values. In the example above, we have taken the x and y values of the first 5 peaks of each transform, so we have 270 columns (9*3*5*2) in total.


4、利用傳統的scikit-learn庫中的分類器進行分類

使用scikit-learn庫中的隨機森林分類器的結果如下。

from sklearn.ensemble import RandomForestClassifierfrom sklearn.metrics import classification_report
clf = RandomForestClassifier(n_estimators=1000)clf.fit(X_train, Y_train)print("Accuracy on training set is : {}".format(clf.score(X_train, Y_train)))print("Accuracy on test set is : {}".format(clf.score(X_test, Y_test)))Y_test_pred = clf.predict(X_test)print(classification_report(Y_test, Y_test_pred))
---Accuracy on training set is : 1.0---Accuracy on test set is : 0.9097387173396675--- 1 0.96 0.98 0.97 496--- 2 0.94 0.95 0.95 471--- 3 0.94 0.90 0.92 420--- 4 0.84 0.82 0.83 491--- 5 0.86 0.96 0.90 532--- 6 0.94 0.85 0.89 537- avg / total 0.91 0.91 0.91 2947


但是,存在特徵選擇的問題:如果可以進一步地進行有效的特徵選擇,那麼精度應該會有所提升。

It is understandable that some of the 270 features will be more informative than other ones. It could be that some transformations of some components do not have five peaks, or that the frequency value of the peaks is more informative than the amplitude value, or that the FFT is always more informative than the auto-correlation.
The accuracy will increase even more if we actively select the features, transformations and components which are important for classification. Maybe we can even choose a different classifier or play around with its parameter values (hyperparameter optimization) to achieve a higher accuracy.


5、結語

隨機信號分析為我們提供了一套對時間序列和信號進行分析、建模和分類的有力工具(FFT、PSD和自相關係數)。

相關焦點

  • 基於多徑分量簇的信號處理技術研究
    一般認為,移動通信領域中的陣列信號處理技術從其技術複雜度出發至少可以分為3個實現層面:  其一,是在基站臺採用陣列天線的形式而實現上行鏈路信號的空間分集處理,這在當前移動通信系統中已經得到普遍應用。
  • 機器學習和信號處理 | Feel 你的情緒、想法和感受
    機器學習和信號處理 | Feel 你的情緒、想法和感受 MathWorks 發表於 2020-08-07 16:38:00 作者 MathWorks
  • 基於單片機的調幅信號處理
    前級輸入為10 μV-1 mV的小信號,通過低噪聲放大器進行調幅處理,處理後的信號與鎖相環產生的本徵信號進行兩次混頻,輸出10.7 MHz的中頻信號。再經晶體濾波器和放大器進行濾波和放大,濾波後的信號通過峰值檢測電路進行AM解調和基帶放大器放大,最終經過5 KHz的有源低通濾波優化輸出波形。實現輸出1V±0.1V範圍可調的解調信號。整個系統穩定性強,解調信號無明顯失真。
  • ...語音識別,生物醫學信號處理和基於語音和生物電的人機互動技術
    職稱: 教授       招生專業: 計算機應用技術 研究領域: 研究方向: 主要從事智能信息處理和人機互動技術研究。
  • 機器學習:處理不平衡數據的5個重要技術
    【IT168 技術】數據分布不平衡是機器學習工作流中的一個重要問題。所謂不平衡的數據集,意思就是兩個類中一個類的實例比另一個要高,換句話說,在一個分類數據集之中,所有類的觀察值的數量是不一樣的。這個問題不僅存在於二進位類數據中,也存在於多類數據中。  本文中將列出一些重要的技術,幫助您處理不平衡的數據。
  • python玩轉信號處理與機器學習入門
    經過上面的簡單介紹相信你已經了解並掌握了信號在頻域上的變換。接下來讓我們運用剛學的知識結合機器學習知識來分析一個實例 Human Activity Recognition Using Smartphones Data Set。
  • 基於ARM和DSP的地震加速度信號處理系統
    引言  ARM和DSP作為嵌入式技術應用在地震信號處理系統中,能很好地滿足地震加速度計對實時性、高精度以及網絡化的要求,因此,利用光線傳感基於ARM 和DSP雙核微處理器的嵌入式系統設計方案,一方面發揮DSP的快速信號處理能力,且能進行小數運算,提高運算精度,完成地震加速度已調信號的解調和頻譜分析;另一方面充分利用ARM豐富的片上系統資源,能實現解調信號及其頻譜信息的網絡傳輸和顯示,該方案僅通過改變軟體無需重構電路就能方便快捷地實現系統升級。
  • 阿里達摩院提出基於頻域信息的機器學習方法
    近年來,基於深度神經網絡的機器學習方法在計算機視覺上獲得的巨大的成功。我們現在應用的主流的深度神經網絡都於對空間域信號的處理和分析,即圖像或視頻的RGB信號。我們知道,現有的圖像視頻分析系統由多個模塊組成。例如,實時圖像分析系統由圖像獲取(capture),圖像壓縮(compression),圖像傳輸(transmission),圖像解壓縮(decompression),圖像推理(inference)組成。
  • 基於MATLAB GUI的數位訊號處理仿真平臺的設計
    1.引言本文引用地址:http://www.eepw.com.cn/article/227566.htm數位訊號處理,是現今應用成效最顯著、應用領域最廣的新科學之一,國內外各高校均開設了數位訊號處理課程。
  • 從基礎知識到實際應用,一文了解「機器學習非凸優化技術」
    選自arXiv機器之心編譯優化技術在科技領域應用廣泛,小到航班表,大到醫療、物理、人工智慧的發展,皆可看到其身影,機器學習當然也不例外,且在實踐中經歷了一個從凸優化到非凸優化的轉變,這是因為後者能更好地捕捉問題結構。本文梳理了這種轉變的過程和歷史,以及從機器學習和信號處理應用中習得的經驗。
  • 五大維度揭秘機器學習技術「附下載...
    機器學習流程步驟:收集數據、清洗數據、訓練模型、基於驗證或測試錯誤或其他評價指標選擇最好的模型。第一步,選擇比較小的錯誤率和比較高的準確率的高精度的模型。第二步,面臨準確率和模型複雜度之間的權衡,但一個模型越複雜就越難以解釋。
  • 基於功能磁共振和機器學習的疼痛神經標誌研究進展
    本文總結了在研究對象處於不同疼痛狀態下(如傷害性刺激誘發的急性疼痛、臨床慢性疼痛等),基於fMRI和機器學習檢測到的fMRI-NPS,及不同ML模型在疼痛預測實驗的性能研究進展,並指出了fMRI-NPS在臨床研究如疼痛的神經病理學機制研究、藥物療效評估等方面的意義。
  • 谷歌今日上線基於TensorFlow的機器學習速成課程
    隨著機器學習越來越受到公眾的關注,很多初學者希望能快速了解機器學習及前沿技術。而今天谷歌上線了基於 TensorFlow 的機器學習速成課程,它包含 40 多項練習、25 節課程以及 15 個小時的緊湊學習內容。
  • 一種基於實用AGC算法的音頻信號處理方法與FPGA實現的分析研究
    一種基於實用AGC算法的音頻信號處理方法與FPGA實現的分析研究 工程師青青 發表於 2018-09-30 16:29:14 隨著現代通信技術的廣泛使用,通信企業問的競爭不斷加劇
  • 基於DSP的MEMS陀螺儀信號處理平臺設計
    近年來隨著MEMS(微機電系統)技術的發展,MEMS陀螺儀的研究與發展受到了廣泛的重視。MEMS陀螺儀具有體積少、重量輕、可靠性好、易於系統集成等優點,應用範圍廣闊。但是目前MEMS陀螺儀的精度還不是很高,要想大範圍應用必須對MEMS陀螺儀的信號進行處理。
  • 機器學習:Python中的四種機器學習技巧
    機器學習技術與算法眾所周知,機器學習是技術和算法的結合。但在開始關注技術和算法之前,讓我們看看它們是否是同一個東西。技術是解決問題的一種方法,這是一個非常通用的術語。 但是,當我們說我們有一個算法時,意思是我們有一個輸入,並希望從中得到一定的輸出,明確規定了實現目標的步驟。
  • 超高速雷達數位訊號處理技術簡介
    綜述了超高速雷達數位訊號處理技術的應用背景、研究內容、關鍵技術及解決方法.採用超高速數位訊號處理技術實現了超高速數據採集、高速數字Key words:radar;ultra-high-speed;digital signal processing;data acquisition;pulse compression;signal generator;signal simulator一、引  言本文所討論的超高速數位訊號處理,是指數百兆帶寬信號的數字採集、處理技術超高速數位訊號處理技術具有很多獨特的問題
  • 2018年國際信號處理和機器學習會議
    會議官網:http://www.spml.net/會議時間:2018年11月28日至30日會議地點:上海ACM新加坡分會舉辦的2018年國際信號處理與機器學習國際會議本次會議的目的是為涉及機器學習方法/算法,信號處理理論和方法,數據挖掘,人工智慧等領域全球學術界,產業界和研究開發組織的研究人員提供一個交流平臺。
  • 基於虛擬儀器的弱信號處理模塊測試系統設計
    0 引 言  隨著測控技術的發展,要求測試的項目和測試參數日益增多,對自動化測試速度和測試準確度也提出了較高的要求。虛擬儀器是基於計算機和標準總線技術的模塊化系統,通常由控制模塊、儀器模塊和軟體組成。
  • 北京大學查紅彬:基於數據流處理的SLAM技術
    北京大學查紅彬教授為大家帶來報告《基於數據流處理的SLAM技術》。查紅彬,北京大學信息科學技術學院智能科學系教授,機器感知與智能教育部重點實驗室主任。主要從事計算機視覺與智能人機互動的研究,在三維視覺幾何計算、三維重建與環境幾何建模、三維物體識別等方面取得了一系列成果。