Internship Week 2 : Recap & Plan

Yelim Kim·2023년 8월 18일
0

Internship

목록 보기
2/22

Recap of Accomplishments

2023-08-14

  1. 교수님과 면담
  • 서버 1순위로 배정 받을텐데, 언제 줄지는 모른다.
  • 그 전까지 태양광&이미 학습된 FCN모델로 태풍 연구하는 거 좋다고 하셨음.
  1. 시각화+해석
  2. test, valid, train 나누고 분배 잘 됐는지 시각화
  3. 간단한 머신러닝만 돌려보고 비교해보기
    • 그런데 RMSE값이 너...무 이상하게 나옴
      전처리 다시 해야겠다고 판단, 중간에 이상값 있나 다시 확인
      모델마다 써야하는 전처리가 달라서 나중에 앙상블때 사용하게 코드 잘 짤 것 !!!
methodRMSE
컬럼 추가x Linear regression1,007,295
Temp_Humidity_Interaction + Visibility_Cloud_Interaction799,374
  1. AI server에 library 다운로드했다.
    • tensor로 하면 gpu연결이 안되고... 토치로 하면 되고..... 문제 해결 못함
  2. 에어팟을 안가져왔다.... 일할 맛이 안난다....

계획
1) 수요일까지 : 어떤 모델 쓸 건지 정하고, 어떻게 사용되는지 정리
2) 목요일부터 : 전처리부터 다시 시작

2023-08-15

  • 광복절 휴식!

2023-08-16

  1. 이미지나 지연어 처리가 아니라서 머신러닝 모델에서 더 좋은 결과를 낼 수도 있음.
    하지만 또 데이터 양이 적은편이 아니라 딥러닝도 고려해볼만 함!
    => 둘다 같은 전처리로 어떤 결과가 나오는지 실험해보기로 함!
  2. 사용 가능한 전처리 & 머신러닝 모델 :
    • SparseNormalizer + LightGBM
    • MinMaxScaler + DecisionTree
    • StandardScaler + LightGBM
  3. 성능 제일 좋다고 발표난 딥러닝 모델 : GRU
  4. 데이터 전처리
    • power 데이터에 2016년 3월 1일과 2020년 3월 1일의 모든 시간 데이터가 2개씩 있음...
      임의로 앞에 있는 값을 사용하기로 함.
    • 다시 데이터 merge함

2023-08-17

  1. 오전 팀미팅

  2. merge한 데이터에 대해서 조언 들었다.

    • 적설량이나 구름/강수량 -> 그래프 그려봐서 power에 어느정도 되야 영향을 주는지 확인
    • 그래서 간단하게 0 or 1로 표시하거나 원-핫 인코딩으로 표기하기
    • 밤시간 빼기 -> 어차피 power 0임
  3. 할 것

    • 비가 얼마나 와야 power에 영향을 많이 주는지
    • 눈이 얼마나 와야 power에 영향을 많이 주는지
  4. 회귀 vs 시계열 문제?
    1) 회귀 : 날씨 관련 변수들(온도, 습도, 강수량 등)을 사용하여 'power'를 예측하는 모델
    "온도가 1도 올라갈 때 전력 사용량은 얼마나 증가하는가?"와 같은 관계 찾기
    2) 시계열 : 과거의 'power' 데이터와 날씨 관련 변수들을 사용하여 미래의 'power' 값을 예측
    "내일의 전력 사용량은 얼마일까?"와 같은 예측 수행

    'power'의 시간에 따른 변화를 살펴보면, 일정한 패턴이나 계절성이 있는 것처럼 보인다.
    이러한 패턴을 포착하기 위해서
    +또한 1년 후 혹은 내년 5월 발전량 사용량을 예측하고 싶다는 목적을 생각하면
    => 시계열을 이용해야 한다고 판단!

  • 시계열 예측은 회귀 문제의 한 형태로 볼 수도 있음. 하지만 다른 점 :
    • 시간의 순서: 시계열 데이터는 시간 순서대로 정렬되어 있고, 예측에 기여함
    • 자기 상관성: 특정 시점의 값은 이전 시점의 값들에 영향을 받을 수 있음
    • 계절성: 많은 시계열 데이터에는 반복되는 패턴이나 계절적 변동이 있음
    • 추세: 데이터에는 증가나 감소하는 장기적인 추세가 있음
  1. 전처리 안하고 머신러닝 모델 앙상블 돌려봄
    아래는 정규화 방법 + 모델 + RMSE
    1) MinMaxScaler+RandomForest 0.03482
    2) MinMaxScaler, LightGBM 0.03933
    3) MinMaxScaler, DecisionTree 0.04106
    4) StandardScalerWrapper, LightGBM 0.02960
    5) 앙상블 (LightGBM+DecisionTree+StandardScalerWrapper, LightGBM) 0.02728
    역시 앙상블이.. 잘나옴...

전처리 제대로 해서 머신러닝 vs 딥러닝(GRU) 비교해봐야겠음

2023-08-18

  1. 밤시간 뺐음

  2. 'CloudForm(운형)'이라는 칼럼 안에는 'Sc(층적운)', 'Ci(권운)' 등 운형의 종류가 적혀있는데, 층적운과 권운이 동시에 보이는 경우에는 'ScCi'라는 표기법을 사용함.
    여기서 만약 모든 값에 대해 원핫 인코딩을 사용할 경우 Sc와 ScCi에 대해 관련성이 사라지게 되서 ... 어떻게 전처리를 하면 좋을지?

    => 원핫 인코딩을 사용해서 해당하는 구름이 있는 경우 True로 표시 아닐경우 False로 표시!

  3. Power 결측치 : 4년마다 2월 29일 정보가 전혀 없음. 2월 29일은 빼기로 함

  4. 결측치 처리 방법 :
    Temperature(C) 14 #전값으로 채워넣음
    Precipitation(mm) 39790
    Humidity(%) 61 #전값으로 채워넣음
    VaporPressure(hPa) 69 #후값으로 채워넣음
    DewPointTemperature(C) 79 #후값으로 채워넣음
    Sunshine(hr) 16 #전값으로 채워넣음
    SolarRadiation(MJ/m2) 17 #전값으로 채워넣음
    Snowfall(cm) 42937
    SnowfallLast3Hours(cm) 43534
    TotalCloudCoverage(1/10) 1648 #저녁값만 비어서 전값으로 채워넣음
    MidLowCloudCoverage(1/10) 1054 #저녁값만 비어서 전값으로 채워넣음
    CloudForm 11448
    LowCloud(100m) 17998
    Visibility(10m) 572 #전값으로 채워넣음
    GroundState(code) 41293
    PhenomenonNumber 30915
    d2m 0
    t2m 0
    aerosol 0
    power 0

나머지 변수들에 대해 랜덤 포레스트 회귀 모델을 사용하여 변수의 중요도를 평가함 :

Precipitation(mm): 2.58%
Snowfall(cm): 4.03%
SnowfallLast3Hours(cm): 0.31%❌
CloudForm: 78.11%
GroundState(code): 2.71%❌
PhenomenonNumber: 12.27%❌

❌-> 제외하기로 함

  1. Precipitation(mm)
    • NaN이 비가 안온건지, 결측치인지 확인해야함.
    • 안와서 NaN으로 표기한 경우 '-1'값으로 대체
    • Humidity(%), Sunshine(hr), CloudForm, LowCloud(100m)에 대해서 얼마나 영향을 받는지 확인 :
습도 (Humidity(%)):
평균: 약 69.8%
최소값: 13%
최대값: 100%
중앙값: 70%
햇빛 시간 (Sunshine(hr)):
평균: 약 0.57시간
중앙값: 0.7시간
최대값: 1시간
구름 형태 (CloudForm):
Sc (Stratocumulus) 형태의 구름이 9,892회로 가장 많았습니다.
Ci (Cirrus) 형태의 구름이 7,497회로 그 다음으로 많았습니다.
그 외에도 여러 가지 구름 형태들이 있습니다.
구름의 높이 (LowCloud(100m)):
평균: 약 14.4m
중앙값: 10m
최대값: 76m

그리고 NaN값들은 '비가 안온 날'로 그냥 하기로 했고, -1로 대치!

  1. Snowfall(cm)
    NaN값들 중에서 다른 변수들 분포 확인 :
습도 (Humidity(%)):
평균: 약 71.5%
최소값: 13%
최대값: 100%
중앙값: 72%
햇빛 시간 (Sunshine(hr)):
평균: 약 0.52시간
중앙값: 0.6시간
최대값: 1시간
구름 형태 (CloudForm):
Sc (Stratocumulus) 형태의 구름이 10,035회로 가장 많았습니다.
Ci (Cirrus) 형태의 구름이 7,469회로 그 다음으로 많았습니다.
그 외에도 여러 가지 구름 형태들이 있습니다.
구름의 높이 (LowCloud(100m)):
평균: 약 13.9m
중앙값: 10m
최대값: 76m
  • 습도가 전체적으로 높지 않아서 NaN값이 눈이 내리지 않은 값이라고 추측했음
  • 동일하게 -1로 채워넣음
  1. 비가 얼마나 와야 power에 영향을 많이 주는지 시각화

  2. 눈이 얼마나 와야 power에 영향을 많이 주는지 시각화

Next Week's Agenda

  • NaN 처리 된 데이터로 다시 머신러닝 돌려보고 딥러닝(GRU) 돌려보고 비교하기
  • 기상청 데이터 말고 ERA5 데이터 가지고 다시 훈련시켜보기
profile
뜬금없지만 세계여행이 꿈입니다.

1개의 댓글

comment-user-thumbnail
2023년 8월 18일

많은 도움이 되었습니다, 감사합니다.

답글 달기