# overview, data, submission을 꼭 챙겨보자
1. 참고자료
- EDA + lightGBM : https://www.kaggle.com/artgor/ventilator-pressure-prediction-eda-fe-and-models
- LSTM : https://www.kaggle.com/theoviel/deep-learning-starter-simple-lstm
2. 내 colab note
https://colab.research.google.com/drive/1LTb1wiyeiH6wLEXui2uUR1ny9t-JMCmv?usp=sharing
https://colab.research.google.com/drive/1ZxbT9v3ZY7IdSu_RHYHY3PQUFSLwK2hj?usp=sharing ( 오타가 많을 수도 있다. 필사 자료이며 오탈자 확인은 안했다. 참고용으로만 보면 좋을 듯)
1. 대회 설명
- Overview
Current simulators are trained as an ensemble, where each model simulates a single lung setting. However, lungs and their attributes form a continuous space, so a parametric approach must be explored that would consider the differences in patient lungs.
Partnering with Princeton University, the team at Google Brain aims to grow the community around machine learning for mechanical ventilation control. They believe that neural networks and deep learning can better generalize across lungs with varying characteristics than the current industry standard of PID controllers.
In this competition, you’ll simulate a ventilator connected to a sedated patient's lung. The best submissions will take lung attributes compliance and resistance into account.
- airway pressure를 예측하는 문제
- Data
The ventilator data used in this competition was produced using a modified open-source ventilator connected to an artificial bellows test lung via a respiratory circuit. The diagram below illustrates the setup, with the two control inputs highlighted in green and the state variable (airway pressure) to predict in blue.
The first control input is a continuous variable from 0 to 100 representing the percentage the inspiratory solenoid valve is open to let air into the lung (i.e., 0 is completely closed and no air is let in and 100 is completely open).
- 첫번째 input은 inspiratory solenoid valve가 열린 정도를 나타냄
The second control input is a binary variable representing whether the exploratory valve is open (1) or closed (0) to let air out.
- 두번째 input은 exploratory value가 열렸는지(1) 닫혔는지(0)에 대해서 나타냄
In this competition, participants are give
numerous time series of breaths
- 시간 순서에 따른 호흡 데이터를 받는데
and will learn to predict the airway pressure in the respiratory circuit during the breath, given the time series of control inputs.
- 호흡 circuit에서 airway pressure를 예측하도록 학습을 시켜야함
- files
train.csv - the training set
test.csv - the test set
sample_submission.csv - a sample submission file in the correct format
- columns
id - globally-unique time step identifier across an entire file
breath_id - globally-unique time step for breaths
R - lung attribute indicating how restricted the airway is (in cmH2O/L/S). Physically, this is the change in pressure per change in flow (air volume per time). Intuitively, one can imagine blowing up a balloon through a straw. We can change R by changing the diameter of the straw, with higher R being harder to blow.
C - lung attribute indicating how compliant the lung is (in mL/cmH2O). Physically, this is the change in volume per change in pressure. Intuitively, one can imagine the same balloon example. We can change C by changing the thickness of the balloon’s latex, with higher C having thinner latex and easier to blow.
time_step - the actual time stamp.u_in - the control input for the inspiratory solenoid valve. Ranges from 0 to 100.
u_out - the control input for the exploratory solenoid valve. Either 0 or 1.
pressure - the airway pressure measured in the respiratory circuit, measured in cmH2O.
- id - 전체 파일에 걸쳐 전역으로 표시되는 시간 단계 식별자입니다. ( 기록 ID 라고 예상 )
- breath_id - 호흡에 대한 전역 시간 단계입니다.
- R - 기도 제한 정도를 나타내는 lung attribute입니다(cmH2O/L/S). ( 5 / 20 / 50 )물리적으로, 이것은 흐름 변화당 압력의 변화입니다(시간당 공기량). 직감적으로 빨대를 통해 풍선을 불어 올리는 상상을 할 수 있습니다. 우리는 빨대 직경을 변경하여 R을 변경할 수 있는데, R이 높을 경우 불기가 더 어렵습니다.
- C - 폐의 준수 정도를 나타내는 lung attribute입니다(mL/cmH2O 단위). (10 / 20 / 50 )물리적으로, 이것은 압력의 변화당 부피의 변화입니다. 직관적으로 같은 풍선의 예를 상상할 수 있습니다. 우리는 풍선의 라텍스 두께를 변경하여 C를 변경할 수 있는데, C가 높을수록 라텍스가 얇고 불기 쉽습니다.
- time_step - 실제 타임스탬프입니다.
- u_in - 흡기 솔레노이드 밸브의 제어 입력입니다. 범위는 0 ~ 100입니다.
- u_out - 탐색 솔레노이드 밸브의 제어 입력입니다. 0 또는 1입니다.
- pressure - 호흡 회로에서 측정된 기도압(cmH2O)입니다.
- Evaluation
(처음에 여길 안봤다가 모델링 할 때 이해가 안돼서 시간 낭비를 많이 했다..)
The competition will be scored as the mean absolute error between the predicted and actual pressures during the inspiratory phase of each breath. The expiratory phase is not scored.
: inspiratory phase에서 실제 pressure와 predicted pressure와의 MAE를 본다. expiratory phase는 보지 않는다.
2. Load Data & analysis
df_train = pd.read_csv(PATH + 'train.csv')
df_test = pd.read_csv(PATH + 'test.csv')
sub = pd.read_csv(PATH + 'sample_submission.csv')
df = df_train[df_train['breath_id'] < 5].reset_index(drop=True)
그냥 데이터를 함 봐본다.
train
train.describe()
train.isna().sum()
train set과 test set에서 같은 breath_id를 찾을 수가 없다.
breath_id로 group해서 데이터를 분석해야 한다. --> GroupKFold Validation을 진행하자.
앞서 R과 C는 lung attribute라고 설명이 되어있다. 그래서 numerical feature로 구성 되어 있을 줄 알았는데, 딱 저 세 개 밖에 없다.
따라서 categorical feature로서 활용해도 좋을 것 같다.
(정확히 무슨 의미인지는 나도 잘 모르겠다.)
- 공통점이라면, u_out이 1이 되는 순간(여기서는 u_out 변화량이 눈에 띄게 보이지는 않지만) pressure와 u_in이 급격하게 떨어진다는 것. 이 부분이 expiratory 단계라고 생각하면, 이 부분은 대회에서는 신경쓰지 않는 부분이기 때문에 패스한다.
- R과 C의 조합에 따라 그래프들이 각각 다른 양상을 보인다.
- 따라서, R, C, u_in에 따라서 pressure를 예측할 수 있을 것 같아 보인다.
- 추가로 시간에 따른 u_in 누적합도 도움이 될 것 같다.
'정리 > Machine Learning' 카테고리의 다른 글
[kaggle - Google Brain - Ventilator Pressure Prediction] 3. compiling model ~ fit model (0) | 2021.11.08 |
---|---|
[kaggle - Google Brain - Ventilator Pressure Prediction] 2. data preprocess ~ define architecture ( LSTM ) (0) | 2021.11.08 |
[Deep Learning] Deep Learning 주요 순서 정리 (0) | 2021.11.05 |
[DL 기본] 210914 수업 내용 정리 (0) | 2021.09.14 |
[머신러닝 모델] Decision Tree (0) | 2021.08.31 |