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

2021-02-21 智能航空發動機
本文講解一篇關於基於信號處理技術的機器學習的博客:《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和自相關係數)。

相關焦點

  • 【推薦】基於MATLAB編程、機器學習、深度學習在圖像處理中的實踐技術應用
    尤其是在計算機視覺和圖像處理領域,各種顛覆性的成果應運而生。因此,為了幫助廣大科研人員更加系統地學習圖像處理、機器學習和深度學習的基礎理論知識及對應的代碼實現方法,Ai尚研修特舉辦「MATLAB圖像處理與機器學習技術應用培訓班」 培訓班,旨在幫助學員掌握圖像處理的基礎知識,以及經典機器學習算法和最新的深度神經網絡、遷移學習、對抗生成網絡等算法的基本原理及其MATLAB編程實現方法。
  • 機器學習和信號處理 | Feel 你的情緒、想法和感受
    機器學習和信號處理 | Feel 你的情緒、想法和感受 MathWorks 發表於 2020-08-07 16:38:00 作者 MathWorks
  • 語音信號處理:基本方法與前沿技術
    語音信號處理是一門學習門檻較高的學科,包含語音增強、回聲消除、麥克風陣列信號處理等多個研究方向,涉及聲學、語言學、數學、信號處理、機器學習等多個學科的專業知識。很多夥伴在入門之初會遇到如何學、學什麼的困惑,並且,隨著深度學習的廣泛應用,以及研究深度學習的學術熱潮,夥伴們很容易被學術氛圍所「迷惑」,跟隨「熱潮」學習。
  • ACM會議信息:2021年第四屆國際信號處理與機器學習國際會議(SPML...
    會議官網:www.spml.net會議日期:2021年8月18-20日會議地點:中國北京本次會議的目的是為涉及機器學習方法/算法、信號處理理論和方法、數據挖掘、人工智慧等領域全球學術界、產業界和研究開發組織的研究人員提供一個交流平臺。
  • 基於Python的數位訊號處理初步
    xhsir520Python 是目前的熱門語言,一直覺得掌握一門程式語言對作為搞技術的來說還是很有必要的,結合工作中能用到的一些數據處理和分析的內容,覺得從數據分析入手,爭取能夠掌握Python在數據處理領域的一些應用。
  • 邊緣處理基本的技術能力是什麼
    機器學習開發環境提供全套即用型方案,用戶可以在ARM Cortex內核到高性能GPU/DSP(圖形處理單元/數位訊號處理器)複合體等中選擇最佳執行引擎,還提供在這些引擎上部署機器學習模型(包括神經網絡)的工具。
  • 基於CPCI總線的通用FPGA信號處理板的設計
    隨著雷達信號處理技術的不斷發展以及現代國防對雷達技術的需求,系統對雷達信號處理的要求也越來越高,需要實時處理更加龐大的數據。先進的雷達信號處理設備不僅要求性能高、功能多樣化,而且要求信號處理設備的研製、裝備周期短,能保持與國際先進水平同步發展。因此有必要發展一種可重構、可擴展的通用信號處理系統,能將雷達信號處理模塊化、標準化、通用化。這樣,一方面可以通過硬體擴展來適應信號處理規模的變化,另一方面可以通過靈活的軟體編程來實現各種信號方式和各種複雜算法。
  • IEEE follow機器學習遙感圖像處理課程講義及Matlab代碼分享
    課程的詳細介紹如下(包含:詳細的PPT講義和Matlab代碼):Gustau Camps-Valls(IEEE Fellow,IEEE傑出講師,物理學博士學位)目前是電氣工程專業的教授,並且是圖像和信號處理(ISP)組的負責人,網址為https://isp.uv.es。他對開發用於地球科學和遙感數據分析的機器學習算法感興趣。
  • 基於FPGA的振動信號採集處理系統設計
    本文設計了一種基於FPGA的振動信號採集處理系統,該系統通過振動信號採集電路、抗混疊濾波電路、AD採樣電路將電荷信號轉化為數位訊號送入FPGA,在FPGA處理設計中利用數據流控制方法並行實現了信號的採樣和處理,並在數據存儲和訪問過程中採用時鐘時標方法判斷信號採樣過程中的數據丟失情況
  • 基於DSP和FPGA技術的低信噪比雷達信號檢測
    摘要:提出一種基於DSP和FPGA技術的低信噪比情況下雷達信號檢測技術的工作原理與硬體實現方法,採用數位化的處理方法處理信息,取代傳統使用的模擬檢測技術
  • 基於FPGA的信號小波實時處理方法
    目前常用於高速實時信號處理的硬體晶片分為兩大類:基於大規模可編程集成電路FPGA的純硬體實現方案和基於高速通用DSP的軟體實現方案。採用FPGA的硬體實現方案硬體接口設計靈活,可以和任意數字外圍電路直接使用,且其具有高度的集成度和高速的處理速度;而基於高速通用DSP的軟體實現方案代碼設計靈活,可以快速修改和調試程序[6]。
  • 基於ARM和DSP的地震加速度信號處理系統
    引言  ARM和DSP作為嵌入式技術應用在地震信號處理系統中,能很好地滿足地震加速度計對實時性、高精度以及網絡化的要求,因此,利用光線傳感基於ARM 和DSP雙核微處理器的嵌入式系統設計方案,一方面發揮DSP的快速信號處理能力,且能進行小數運算,提高運算精度,完成地震加速度已調信號的解調和頻譜分析;另一方面充分利用ARM豐富的片上系統資源,能實現解調信號及其頻譜信息的網絡傳輸和顯示,該方案僅通過改變軟體無需重構電路就能方便快捷地實現系統升級。
  • 精算改革:基於編程實踐、機器學習的思考
    機器學習可以通過模型的改造升級,跳出到費歇爾推斷統計體系之外來研究精算問題,以犧牲可解釋性獲得顯著的預測精度提升。本文作者對外經貿大學保險學院副院長謝遠濤教授,由淺入深,從北美精算師協會、英國精算師協會實施以編程實踐、機器學習為內容的新一輪改革談起,引出如何在統計精算與機器學習中取捨,如何在代碼編程與輕代碼、無代碼編程中取捨,如何實施基於編程實踐、機器學習的精算教學等方面的思考和探討。
  • 機器學習:處理不平衡數據的5個重要技術
    【IT168 技術】數據分布不平衡是機器學習工作流中的一個重要問題。所謂不平衡的數據集,意思就是兩個類中一個類的實例比另一個要高,換句話說,在一個分類數據集之中,所有類的觀察值的數量是不一樣的。這個問題不僅存在於二進位類數據中,也存在於多類數據中。  本文中將列出一些重要的技術,幫助您處理不平衡的數據。
  • 機器學習技術在地震領域的應用設想
    近期,關於「阿爾法元」擊敗「阿爾法狗」的新聞震動了整個人工智慧行業,人們不禁開始探討,一年內居然被AlphaGo刷屏兩次,機器學習技術真是越來越高了!然而,更讓人震驚的是,阿爾法元其實並沒有錄入人類棋譜數據,而是單純通過自我對弈,依靠強化學習取得了現在的能力。機器學習技術現在已經如此進步了?——沒錯,機器學習技術在這些年,確實取得了不錯的成績。
  • 技術專欄丨基於Core ML的通用性機器學習開發框架探索
    歡迎將TalkingData設為星標每日精彩文章等著你~機器學習不僅是目前最火的技術,同時也是人工智慧最核心的內容。機器學習是一種能讓計算機無需不斷被顯示編程,而自我學習的人工智慧技術。自 iOS 11 開始,蘋果在 iOS 系統中引入了一種全新的,直接依附於硬體平臺的機器學習框架——Core ML,該框架使機器學習模型在 iOS 系統平臺下預測推理可以快速並易於實現。藉助 Core ML,可以將已訓練好的機器學習模型,集成到自己的應用當中,以實現智能化的應用程式,提升用戶體驗等。
  • python玩轉信號處理與機器學習入門
    經過上面的簡單介紹相信你已經了解並掌握了信號在頻域上的變換。接下來讓我們運用剛學的知識結合機器學習知識來分析一個實例 Human Activity Recognition Using Smartphones Data Set。
  • 用AI技術超越傳感器融合,機器學習如何讓雷達更智能
    AI技術可以處理來自攝像頭、麥克風、生物傳感器甚至雷達的實時數據,實現人的情緒和活動感測,為安全駕駛提供幫助。像Affectiva、Guardian Optical等一些之前名不見經傳的公司都在研發這類技術。 情緒和活動感測可以改變甚至推翻人的危險選擇以拯救生命。
  • 基於DSP和USB技術的數據採集與處理系統
    1 引言  採用dsp(數位訊號處理器)作為控制器,而採用usb(通用串行總線)和上位機相連接將是數據採集處理系統的一種可能的發展趨勢。  1.1 數位訊號處理器dsp  dsp晶片,又稱為數位訊號處理器,是一種特別適用於進行實時數位訊號處理的微處理器,採用它能滿足系統計算量大的要求。
  • 在物聯網系統和應用中使用音頻和圖像信號處理技術的好處是什麼
    在物聯網系統和應用中使用音頻和圖像信號處理技術的好處是什麼 Frank Zinghini 發表於 2019-09-10 17:07:12 許多企業開始在物聯網系統和應用中使用音頻和圖像信號處理技術,以改變他們運營公司和開展業務的方式