수업정리
- 특성은 딥러닝으로 뽑고 학습은머신러닝으로 한다
- 머신러닝은 데이터가 적어도 가능하다.
- 최적의 모델 최적의 데이터
- 돌릴 수 있는 환경에 맞춰 훈련을 돌린다.
- 추천시스템이 안맞는것은 평균내서 골라주기 때문이다.
- 고객의 니즈를 한개도 못맞추는게 평균이다.
- 앞으로는 개인맞춤 상품을 만들어야 한다.
- 내가 가지고 있는 정보가 중요하다.
- 데이터에 대한 지식이 중요하다.
- 코드는 이제 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
- 훈련데이터와 테스트데이터의 값의 범위가 다를 수 있기 때문에 훈련데이터에만 적용을 해야한다
- 테스트 데이터를 훈련데이터의 스케일링 값을 적용
'수업 > 머신러닝' 카테고리의 다른 글
[머신러닝] 10일차 - 텍스트 마이닝 (0) | 2023.04.28 |
---|---|
[머신러닝] 9일차 - 선형 분류 모델 사용 (0) | 2023.04.27 |
[머신러닝] 7일차 (0) | 2023.04.24 |
[머신러닝] 6일차 - (ㅎㅎㄷ쌤) 선형모델 (0) | 2023.04.21 |
[머신러닝] 5일차 (0) | 2023.04.20 |