2021. 9. 4. 03:03ㆍai/Machine Learning
1. Loss Function
Overshooting : Learning rate의 값이 필요이상으로 크게 설정 즉 W의 값이 너무 크게 변하는걸 지칭
원래 w이 갱신이 되려면 w - w편미분 * learning rate 를 update 여기서 a를 너무 크게 주면 찾아야 할 값을 찾을수가 없다
local minima : Learning rate의 값이 필요이상으로 작게 설정 위와 반대로 a를 너무 작게 설정하면 많이 반복하여도
찾아야 할 값에 도달하지 못한다
2. Normalization(정규화)
MinMax Normalization : (최대, 최소로 이용) 쉽고 간편하게 사용할 수 있어요. [ SKlearn 이용 ]
장점 : 0 ~ 1 사이로 고정:
단점 : 이상치에 상당히 민감한 방식
Standardization / Z-score Normalization : 평균과 표준편차를 이용 "고정된 범위로 scaling이 안되요"
상대적으로 이상치에 덜 민감한 방식
3. 과적합[ 과적 ] - 간혹 과대적합을 과적합 [과적]이라고도 부른다
이를 알수 있는 방법은 밑에 validation(모델평가)를 이용
- 과소적합 ( under fitting ) : 모델이 완성되지 않은경우 , 그렇게 자주 발생되지는 않아요
- 과대적합 ( Over fitting ) : 지나치게 모델이 (적절하게) 잘 만들어진 경우
v 자주발생 , Trainning Data Set에 잘 맞춰진경우
Overfitting을 피하려면?
- Trainning Data Set의 양이 많아야 해요 !! (현실적으로는 이런 많은 [충분한]양의 data를 얻기 쉽지 않아요)
- Feature(독립변수)의 개수를 줄여야 해요! 다른거나 필요없는건 뺄수있다 ( ex)월 , 일 ) →Feature Engineering
- Feature Engineering : machine learning algorithm을 돌려서 신뢰할만한 결과를 얻기 위해서는 적절한 feature들을 선정해야 합니다. 이 작업을 feature engineering이라고 합니다.
machine learning algorithm을 돌려서 신뢰할만한 결과를 얻기 위해서는 적절한 feature들을 선정해야 합니다. 이 작업을 feature engineering이라고 합니다.
필요한 feature이지만 없는 경우, 추가해야 합니다. 별로 도움이 안 될 feature는 없애 버려야 합니다. 많은 feature 중에서 결과에 좋은 영향을 줄 feature만 선정해야 합니다.
예로, height와 weight feature를 사용하여 gender를 예측하는 문제에서, “취미 (hobby)” feature를 추가하면 예측에 도움이 될 수 있을 것 같습니다. 남성과 여성의 취미가 다른 경우가 많기 때문이지요. 그러나 “나이 (age)” feature는 추가해 보았자 도움이 안 될 것 같습니다.
- Weight의 값이 크면 클수록 좋지 않아요 → Regularization [규제]
과적합은 현재 배운걸로는 어렵고 deep learning가서 배운다 , 그래프로 간단히 알수 있다
4. Over sampling
inbalanced data problem : trainning data안에 data불균형 (ex)암환자)
inbalanced data problem 의 해결법
Over sampling - 적은 data를 늘리는 방식 / 대부분의 이 경우를 사용하며 많은 기법이 있지만
SMOTE알고리즘 이용하면 된다 . 아직 안배웠고 필요할때 찾아 쓰면 된다
under sampling - 적은data 기준으로 많은 data 에서 뽑아서 맞춘다 하지만 Training data크기가 줄어드는 문제점이 있다. 즉 다시 overfitting의 문제가 발생해 거의 사용하지 않는다
5. Evalvation (모델평가)
Evalvation (모델평가) - 내가 만든 모델의 정확도를 평가하는 것이며 model구현후 필수단계이다 .
97%정도 이상이여야 한며 그 도구로 " Metric [지표] "을 이용
Accuracy - Metric [지표]중 하나로 data의 편차가 없다면 가장 공평한 성능평가 기법
v Training Data Set으로 학습한 후 (model을 생성한 후)
이 Training Data Set으로 다시 이용해서 성능평가를 진행하면 안되요 !!!
Testing data - 최종Model이 완성된 후 우리 Model을 평가하기 위해서 단 1번 사용
- Testing data를 이용한 결과(prediction data)를 이용해서 model을 변경시키지 않아요
Validation[확인] Data - model 개선을 위해 확인용 , 평가용 data
공모전, 회사 제출용
1. Training Data Set 100% = Data80% + Testing Data20% →
2. 위 Data80% = Traing Data80% + Validation Data20% 을 이용해서 model 개선반복
3. 개선한 model로 1번의 Testing Data20%를 입혀 결과값 제출
공부용 (data낭비 및 제출할게 아니기때문에 )
그러나 우리는 공모전이 아니기에 Testing data를 날리고 Validation Data만 사용
Training Data Set 100% = Training Data80% + Validation Data20% (간혹 사람들이 testing data라고 부른다)
위와 같이 test를 위해 나눈 방식을 Hold-out Cross validation
하지만 2가지 문제가 있다
1. Training(학습)에 사용하는 data자체가 줄어든다 → Over fitting발생위험
2. data의 bias(편향)문제가 발생할 수 있다
Hold-out cross validation을 수행할때
Training data의 수가 validation data를 분할 할 수 없을 정도로 작다면?
K (n숫자) -Fold Cross validation이용
-우리가 validation(모델평가)을 수행하는 이유는 좋은 Model을 개발하기 위해서!
Training data 와 Validation data을 각각 이용 해서 Model을 평가
== Overfitting (training data에 너무적합 즉 과대적합)을 알수있는 방법
Training data 는 높은결과 / Validation은 낮은결과 = overfitting
(당연히 Training data 에 맞췄기 때문에 다른결과(Validation)는 낮게나온다)
Training data 과 Validation data의 결과가 비슷하면 = overfitting이 없다
K (n숫자) -Fold Cross validation
장점 : Hold-out Cross validation처럼 안나누고 data모두사용가능
data를 모두 사용하기에 bias(편향)문제 해결
단점 : 시간이 k배
ex) 5-Fold Cross validation
1. Training Data Set →
2. Fold 5개를 5등분해서 각자다른위치에 Validation data를 넣는다 (위사진 참고)
( 20% Validation data + 80% Training data ) →
5개 accuracy의 평균이 결과
'ai > Machine Learning' 카테고리의 다른 글
1차 정리 (0) | 2021.09.05 |
---|---|
Cancer 코드 sklearn ver(k-fold) (0) | 2021.09.04 |
분류 성능 평가 지표(Metric) (0) | 2021.09.03 |
Logistic[논리] Regression 코드 (0) | 2021.09.03 |
Logistic[논리] Regression (0) | 2021.09.02 |