딥러닝 머신 러닝 회귀분석 질문 있습니다.

23.12.13 18:25 작성 조회수 80

0

머신러닝으로 회귀분석을 하면 훈련데이터에서는 99퍼 테스트데이터 92퍼가 나오는데 딥러닝으로 모델을 만들어서 돌리면 loss가 2천만 이렇게 나오는데 머신러닝과 딥러닝 모델이 이상한지 아니면 데이터가 이상한지 모르겠습니다

머신러닝 모델

xgb_reg = xgb.XGBRegressor(booster="dart",random_state=0)
params = {"subsample" : uniform(0,1),
         "max_depth" : randint(3,10),
         "n_estimators" : randint(100,300),
           'learning_rate':uniform(0.01, 0.1),
                    "gamma": randint(0,5),}
xgb_reg_random = RandomizedSearchCV(xgb_reg,params,n_jobs=-1,n_iter=100,scoring='neg_root_mean_squared_error',random_state=0,cv=kf)

딥러닝 모델

scaled_deep_train.shape,scaled_deep_test.shape
# ((180, 21), (45, 21))

scaled_deep_train = np.reshape(scaled_deep_train,(180,21,1))
scaled_deep_test = np.reshape(scaled_deep_test,(45,21,1))
# ((180, 21,1), (45, 21,1 ))

model.add(keras.layers.Conv1D(16,kernel_size=3, activation="relu",padding="same",input_shape = (21,1)))

model.add(keras.layers.Flatten())
model.add(keras.layers.Dense(100,activation="relu"))


model.add(keras.layers.Dense(1))
adagrad= keras.optimizers.Adagrad(learning_rate=1e-5)
model.compile(optimizer = sgd,loss = "mean_squared_error",metrics=["mse"])
history = model.fit(scaled_deep_train,y_train, epochs=200,batch_size=8
                    ,validation_split=0.2,callbacks=[early_stopping_cb])

이런식으로 구성되어있습니다.

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.12.14

안녕하세요, 인프런 AI 인턴입니다.

정충효님, 회귀분석 관련 문제로 고민이 많으시군요. 머신러닝에서 상당히 준수한 결과를 얻은 것에 비해 딥러닝에서 매우 높은 loss가 나오는 것은 여러 요소 때문일 수 있습니다. 첫째, 딥러닝 모델의 구조나 파라미터 설정이 적절하지 않을 수 있습니다. 예를 들어, 학습률(learning rate)이 너무 낮거나 높아서 모델이 제대로 학습하지 못하는 경우가 있죠. 또한 초기 가중치 설정이나 활성화 함수의 선택 등이 결과에 영향을 줄 수 있습니다. 둘째, 오버피팅이 발생했는지 확인해 보세요. 적은 데이터셋에 대해 모델이 복잡하다면 훈련 데이터에 과적합되어 테스트 데이터에서 좋은 성능을 내지 못할 수 있습니다.

모델 컴파일 부분에 ‘sgd’ 옵티마이저를 사용하신 것으로 보입니다만, 이 부분이 ‘adagrad’로 지정되어 있어야 할 것 같습니다. 이 부분을 한 번 확인해 보세요. 또한 학습률이 매우 낮게 설정되어 있는데, 때로는 너무 작은 학습률로 인해서 학습이 잘 이루어지지 않을 수도 있습니다. 이에 대한 조정도 고려해 보시는 것이 좋겠습니다.

데이터 전처리 과정도 중요합니다. 스케일링이 적절히 이루어졌는지, 이상치 처리는 어떻게 되었는지 등을 다시 확인해보세요. 만약 모델과 데이터 모두에 문제가 없다고 생각되면, 다양한 네트워크 구조를 실험해보거나 하이퍼파라미터 튜닝을 통해 성능을 개선해보시는 것을 추천드립니다.

마지막으로 딥러닝 모델에서는 데이터의 양이 매우 중요한데, 현재 사용 중인 데이터셋이 충분히 큰가도 고려해보셔야 합니다. 데이터양이 충분하지 않다면 데이터 보강(augmentation), 전이 학습(transfer learning) 등을 활용해 볼 수 있습니다.

딥러닝 모델의 성능 향상에는 다양한 방법이 있으니 다양한 시도를 해보시면서 문제를 해결해 나가시길 바랍니다.