【kaggle老賽】Google Brain呼吸機壓力預(yù)測
來源:投稿 作者:摸獎成功
編輯:學(xué)姐
也不是很老
Google Brain - Ventilator Pressuren Prediction

01 背景信息與數(shù)據(jù)初探
呼吸機的氣壓作用?
????????呼吸機將氣壓打入患者佩戴的口鼻罩中,有助于防止呼吸道塌陷
呼吸機氣壓過低會怎樣?
????????氧氣沒辦法壓入患者的身體,吸氣困難
呼吸機氣壓過高會怎樣?
????????患者沒辦法吐氣,呼氣困難
賽題解讀:
根據(jù)背景信息,因為呼吸機氣壓過高過低都不行,所以要用機器預(yù)測氣壓變化曲線,然后人為預(yù)先調(diào)整,不然人都涼了。
評價指標是平均絕對誤差|x-y|
賽題數(shù)據(jù):
時長為3s;有兩個控制信號;產(chǎn)生的氣道壓力和肺的相關(guān)屬性。
Discussion:
https://www.kaggle.com/dmitryuarov/ventilator-pressure-eda-lstm-0-189
數(shù)據(jù)介紹:


02 賽題解析
本次比賽中使用的呼吸機數(shù)據(jù)是通過一個呼吸回路連接到一個人工風箱測試肺的改良開源呼吸機產(chǎn)生的。
下圖展示了設(shè)置,兩個控制輸入用綠色突出顯示,要預(yù)測的狀態(tài)變量(氣道壓力)用藍色顯示。
第一個控制輸入是一個從0到100的連續(xù)變量,代表吸氣電磁閥打開以讓空氣進入肺的百分比(即,0完全關(guān)閉,沒有空氣進入,100完全打開)。
第二個控制輸入是一個二進制變量,表示探索性閥門是開啟(1)還是關(guān)閉(0)以排出空氣。
在這個比賽中,參與者將被給予無數(shù)次時間序列的呼吸,并將學(xué)習在給定控制輸入的時間序列的情況下,預(yù)測呼吸過程中呼吸回路中的氣道壓力。每個時間序列代表大約3秒的呼吸。
這些文件被組織起來,每一行都是呼吸中的一個時間步驟,并給出兩個控制信號,由此產(chǎn)生的氣道壓力和肺的相關(guān)屬性,如下所述。
文件

03 數(shù)據(jù)介紹

Id -在整個文件中全局唯一的時間步驟標識符
Breath_id -全局唯一的呼吸時間步長
R -指示氣道受限程度的肺屬性(cmH2O/L/S)。
????????物理上,這是每流量變化的壓力變化(每時間的空氣體積)。憑直覺,我們可以想象用一根吸管吹氣球。我們可以通過改變吸管的直徑來改變R, R越大吹起來越難。
????????R越大,肺吸氣的難度越大,需要呼吸機的壓力越大,所以這個指標特征融合后依舊需要
C -肺屬性,指示肺順應(yīng)性(以mL/cmH2O表示)。物理上,這是體積變化除以壓強變化。我們可以直觀地想象同樣的氣球例子。我們可以通過改變氣球乳膠的厚度來改變C, C越高,乳膠越薄,越容易吹氣。
????C越大,類比為乳膠越薄,肺吸氣的難度越小,需要呼吸機的壓力越小。
所以這個指標特征融合后依舊需要。
Time_step—實際的時間戳。
U_in吸氣電磁閥的控制輸入。取值范圍為0 ~ 100。
U_out -探索性電磁閥的控制輸入。0或者1。
Pressure-在呼吸回路中測量的氣道壓力,以cmH2O計。
藍線是所有的u_in時間序列。注意它們是如何相似的。紅線是所有時間序列的壓力C=10。橙色線是帶有 的壓力C=20。黃線是壓力與C=50。

橫坐標:Breath_id? 0-80 總共為3s
縱坐標:壓力
圖片解釋:
藍色的線:輸入的壓力——相同壓力,C越大(黃線C大,對應(yīng)的壓力越?。?,乳膠越薄,縱坐標是越容易吸氣
變量C是順應(yīng)性,表示拉伸氣球(肺)的難易程度。最大值C=50是最容易拉伸的。
如果我們將空氣輸入一個容易伸展的氣球,壓力不會增加,因為氣球只會變大(因此每個空間的空氣不會增加)。如果我們將空氣輸入到不容易拉伸C=10的氣球( ) 中,氣球會保持相同的大小,但會在里面獲得更多的空氣(因此壓力增加)。
變量R是阻力,表示空氣進入然后“退出”氣球的容易程度。(實際上只是四處走動,因為在吸氣期間出口是關(guān)閉的)。
最大值R=50具有最大的阻力。如果我們將空氣輸入到具有高阻力的氣球中,空氣會“留在里面”并增加壓力。
這可以在下面的圖中看到,它是 300 個時間序列,類似于breath_id = 87按參數(shù) 顏色編碼R。(紅色是R=50,橙色是R=20,黃色是R=5)如果我們輸入一個尖峰(快速輸入)空氣,那么R壓力上升大的氣球(肺)很快,而小氣球(肺)則R很容易觀察到空氣“通過”并且不要迅速升高壓力。




RC在訓(xùn)練集測試集上的分布



特征工程

代碼包??關(guān)注【學(xué)姐帶你玩AI】
公眾號后臺
回復(fù)“呼吸機”領(lǐng)取
04 baseline解讀
https://www.kaggle.com/dlaststark/gb-vpp-whoppity-dub-dub/notebook
制作特征組合

Google Brain - Ventilator Pressure Prediction:https://www.kaggle.com/c/ventilator-pressure-prediction/discussion/276828
可能有些特征貢獻比較小,所以去掉了,但是因為傳感器位于末端,存在滯后性,就應(yīng)該移位。
train需要去掉標簽,去掉呼吸機的id
#讓breath_id向右移動一位
??? df['breath_id_lag']=df['breath_id'].shift(1).fillna(0)
#讓breath_id向右移動兩位
??? df['breath_id_lag2']=df['breath_id'].shift(2).fillna(0)
#篩選移位后和未移位一樣的id
df['breath_id_lagsame']=np.select([df['breath_id_lag']==df['breath_id']],[1],0)
df['breath_id_lag2same']=np.select([df['breath_id_lag2']==df['breath_id']],[1],0)
求這幾個量在干嘛?
Min pressure: -1.8957443237304688
Max pressure: 64.82099151611328
Pressure step: 0.07030248641967773
Unique values:? 950
63
模型定義

2021-10-12 09:11:04.581550: W tensorflow/core/framework/cpu_allocator_impl.cc:80] Allocation of 1324462080 exceeds 10% of free system memory.
Fold-1 | OOF Score: 0.16112606056581755
2021-10-12 09:55:45.931863: W tensorflow/core/framework/cpu_allocator_impl.cc:80] Allocation of 1030144000 exceeds 10% of free system memory.
2021-10-12 09:56:13.009091: W tensorflow/core/framework/cpu_allocator_impl.cc:80] Allocation of 1324462080 exceeds 10% of free system memory.
Fold-2 | OOF Score: 0.16258001095851782
2021-10-12 10:45:27.179649: W tensorflow/core/framework/cpu_allocator_impl.cc:80] Allocation of 1030144000 exceeds 10% of free system memory.
2021-10-12 10:45:49.792617: W tensorflow/core/framework/cpu_allocator_impl.cc:80] Allocation of 1324462080 exceeds 10% of free system memory.
Fold-3 | OOF Score: 0.16502696102577724
Fold-4 | OOF Score: 0.1614873964707711
Fold-5 | OOF Score: 0.16390962046846733
Fold-6 | OOF Score: 0.16005591422945886
Fold-7 | OOF Score: 0.1603692169639012
選擇五個模型取平均值
取中間數(shù)
代碼包??關(guān)注【學(xué)姐帶你玩AI】
公眾號后臺
回復(fù)“呼吸機”領(lǐng)取