수업정리

 

  • 특성은 딥러닝으로 뽑고 학습은머신러닝으로 한다
  • 머신러닝은 데이터가 적어도 가능하다.
  • 최적의 모델 최적의 데이터
  • 돌릴 수 있는 환경에 맞춰 훈련을 돌린다.
  • 추천시스템이 안맞는것은 평균내서 골라주기 때문이다.
  • 고객의 니즈를 한개도 못맞추는게 평균이다.
  • 앞으로는 개인맞춤 상품을 만들어야 한다.
  • 내가 가지고 있는 정보가 중요하다.
  • 데이터에 대한 지식이 중요하다.
  • 코드는 이제 gpt가 짜주는 세상이 오고, 사람이 이제 알아야 할 것은 해당 분야의 지식이다.

선형회귀가 과대적합이 되는 이유

  • 너무나도 훈련데이터에 맞출 때
  • 대충 슬슬 넓게 훈련 시킨다.
    • 규제 - 모델 정규화
      • X가 y에 미치는 영향인 w를 규제한다.
      • L1 (Lasso) : 우월한 특성만 남겨놓는 것, 작은 것 버린다
        • 데이터가 너무 많을 때 없애버리기 위해
        • 특성간 상관관계가 별로 없을 때
        • 동일한 비율로 줄여버리기 때문에 상관관계가 큰 것들만 남는다.
      • L2 (Ridge) : 차이값을 줄인다.
        • 스케일링한다. - 정규화
        • 0에 가까운 수로 만든다.
        • 큰값은 큰 비율로 줄이고, 작은 값은 작은 비율로 줄어든다.
        • 데이터가 없을 때, 버리기는 아깝고,

 

 

수업시작

 

 

  • 그리드서치
  • 랜덤서치
  • 머신러닝은 데이터를 잘 넣어줘야한다.

 

Lasso

train_error = []
test_error = []

alpha_list = ["0.0001", "0.001","0.01","0.1","1","10","1000"]
# Ridge 의 최적의 alpha 값 찾기
for i in alpha_list :
    lasso_model = Lasso(alpha=float(i)).fit(extended_X_train, y_train)
    train_error.append(lasso_model.score(extended_X_train, y_train))
    test_error.append(lasso_model.score(extended_X_test, y_test))
    
plt.figure(figsize=(6,4))
plt.plot(alpha_list, train_error, label="train")
plt.plot(alpha_list, test_error, label="test")
plt.legend()

 

 

Ridge

train_error = []
test_error = []

alpha_list = ["0.0001", "0.001","0.01","0.1","1","10","1000"]
# Ridge 의 최적의 alpha 값 찾기
for i in alpha_list :
    ridge_model = Ridge(alpha=float(i)).fit(extended_X_train, y_train)
    train_error.append(ridge_model.score(extended_X_train, y_train))
    test_error.append(ridge_model.score(extended_X_test, y_test))
    
plt.figure(figsize=(6,4))
plt.plot(alpha_list, train_error, label="train")
plt.plot(alpha_list, test_error, label="test")
plt.legend()

 

 

 

 

  • 데이터가 많은데 경사하강법을 사용하면 속도가 느리다.

 

데이터 스케일링 정의

  • 특성들의 범위를 정규화 해주는 작업
  • 특성마다 다른 범위를 가지는 경우 머신러닝 모델들이 제대로 학습되지 않을 가능성이 있음 
    • 거리기반 모델 KNN 모델, SVM 모델 에 필요하지만  Decision Tree 모델은 상관이 없다.
  • 장점

StandardScaler

  • 영점에 가깝게 만들어 준다.

MinMaxScaler

  • 최대값을 1로, 최소값을 0으로 변환
  • 이상치가 있는경우 사용 못함
  • 데이터가 일정한 범위에 분포하지 않은 경우 사용
  • 데이터의 스케일이 다를 때, 모델의 성능을 향상시키기 위해 자주 사용되는 전처리 도구 중 하나

 

RobustScaler

  • 변수의 1/4 지점을 0으로 3/4지점을 1로 하여 변환
  • 이상치가 있는경우 사용
  • 차라리 이상치를 제거하고 다른걸 사용하는 게 낫다.

 

Scaling

  • 훈련데이터와 테스트데이터의 값의 범위가 다를 수 있기 때문에 훈련데이터에만 적용을 해야한다
  • 테스트 데이터를 훈련데이터의 스케일링 값을 적용

 

 

 

 

 

 

 

 

 

 

+ Recent posts