[Week 6- Day 2] 회고
# House Prices 에서 평가한 Model 분석
Model 이름 | 특징 | 평가지표 값 (RMSE) |
Lasso Regression | 차원 축소를 사용한 선형회귀. 평균과 같이 데이터의 중심점을 향해 축소되며, 이상치가 있는 데이터에 적합. |
0.1115 |
Elastic Net Regression | Lasso와 Ridge를 선형적으로 결합한 정규화된 회귀 방법. sum_of_squared_residuals + Lamb_1*variables + Lamb_2*variables |
0.1116 |
Kernel Ridge Regression | Kernel Trick을 활용한 회귀 방법. 입력 값을 Kernel 함수를 활용하여 Mapping한 값으로 예측하는 방법. Why to use Kernel Trick? 2차원 데이터를 3차원으로 mapping 할 경우명확한 구분을 발견할 수 있음. 이 때 차원이 많아질수록 계산 복잡도가 증가하는데, 고차원공간에서 계산하지 않고도 계산가능하도록 함. |
0.1153 |
Gradient Boosting Regression | 연속적인 값을 예측할 때 유용. Gradient Descent + Boosting 뜻으로, 오차를 이용하여 이전에 못맞추고 있는 만큼을 더 맞추도록 함. 하지만 그만큼 noise도 학습하여 여러 규제와 함께 학습. XGBoost, LightGBM, CatBoost가 파생됨. |
0.1177 |
XGBoost | 일반화된 Gradient Boosting 모델. | 0.0079 |
LightGBM | Tree 기반 학습 알고리즘을 사용하는 Gradient Boosting 모델. | 0.0067 |
# 이미지 분류 대회하면서 알게 된 것
os.walk()로 recursive하게 파일 및 폴더를 탐색할 수 있고, os.listdir()로 폴더 내의 파일 이름들을 가져올 수 있다.
pd.DataFrame은 insert, pop 등의 연산이 column에 대해 적용되고, 행으로 추가하고 싶다면 dict형태로 pd.DataFrame을 만든 후에 기존_DataFrame.append(새로만든_DataFrame, ignore_index = True)로 추가할 수 있다. 여기서 ignore_index를 False로 하면 새로만든 index 그대로 추가된다.
## 피어 세션
오늘은 코딩 스터디 휴식권을 사용했다. 어떤 코딩 문제를 풀어야할 지 고민했기도 하고, 조금 더 자고 싶기도 해서 ㅎ
아침에 데일리 스크럼으로 베이스라인 짠 거 올릴까 하는 말을 했었는데, 막상 올리려는데 이미지 출력 부분이 미완이라 빡 집중해서 보완하고 커밋했다. 확실히 사람이 말을 해놓으니까 그에 맞춰서 움직이는 것 같다.
내일 베이스라인 코드가 올라오기 때문에, 오늘까지 짜보고 커밋하기로 했다. 그래서 아침까지는 한 id에 대해 7장의 사진을 item으로 반환하고, git 명령어를 찾아보았다. 오후에는 데이터 EDA를 진행하고, 엑셀에 7장 모두를 path에 이미지 경로로 하여 저장하였다. 또 Dataset이나 Loader는 구현을 해두었다.
하지만 베이스라인 대로 .py 파일로 따로 하지는 않았고 .ipynb에서 모두 해두었고, 아직 model.train을 시키지 않았다.
캐글 스터디로 HousePrices 데이터를 학습시키기 위한 모델을 조사하였다. 왜 이런 모델을 사용하였는지, 특징은 무엇인지 .ppt에 정리해두었다. 유튜브나 medium 블로그에 유용한 소스들이 많았다.
피어세션 때는 3개의 변수로 나눠서 예측을 하는 것보다 18개의 클래스를 가진 하나의 변수로 예측하는 것이 더 성능이 좋다는 말을 들었다.
듣고보니 3개의 변수로 예측을 하면 모든 변수들의 중요도는 같지만, 하나의 변수로 예측하면 가장 예측값이 크게 벌어지는 게 중요도가 높아지니 더욱 효과적인가 하는 생각이 들었다.
또 요새는 Tranformer가 여러 군데에 쓰여서, Visual Transformer도 성능이 좋다고 한다.
아침에 데이터 EDA를 하다가 각 분류 별 예측값의 비율이 다르다는 것을 공유하였다. Data Augmentation이 필요하다는 것과 관련 자료들이 어디있는지 얘기를 나누었다.
추가로 코딩 문제 얘기도 나누었는데, 구현 문제가 좀 약한데 출제자 의도를 파악해서 하라는 대로 하면 된다는 것을 깨달았다.
black으로 체크한 후에 커밋하기로 하였는데, 다음에는 꼭 체크하고 올려야지!