728x90
반응형
Keywords를 살펴보기 전에 머신러닝의 프로젝트 순서를 알아보자
- 큰 그림을 보고
- 데이터를 구하고
- 데이터로 부터 통찰을 얻기 위해 탐색하고 시각화한다.
- 머신러닝 알고리즘을 위해 데이터를 준비
- 모델을 선택하고 훈련시킴
- 모델을 상세하게 조정한다
- 솔루션을 제시
- 시스템을 론칭하고 모니터링하고 유지 보수
- Keywords
평균 제곱근 오차(RMSE : Root Mean Square Error) : 오차가 커질수록 이 값은 커짐, 예측에 얼마나 많은 오류가 있는지 가늠하게 해줌, 제곱항을 합한 것의 제곱근(RMSE)는 “유클리디안 노름”에 해당, L2 / 노름의 지수가 클수록 큰 값의 원소에 치우치며 작은 값은 무시되는데 이 때문에, MAE보다 조금 더 이상치에 민감함. (이상치가 드물경우 RMSE가 good)
평균 절대 오차(MAE = MAD : Mean Absolute Deviation) : 이상치(Outlier)로 보이는 구역이 많을 때 사용,
유클리디안 노름 ( L2 ) : 제곱항을 합한 것의 제곱근 계산, n차원 좌표평면에서 벡터의 크기 계산
맨해튼 노름 ( L1 ) : 절댓값의 합을 계산하는 것
Norm은 distance를 수학용어로 표현한 것. norm(v) = sqrt(<v,v>) , 이 때 norm의 기하학적인 의미가 distance
데이터 스누핑 ( data snooping ) : 미리 테스트 세트를 보고 예측하여 낙관적 추정을 하여 기대한 성능이 도출되지 않는 현상
계층적 샘플링 : 테스트 세트가 전체 모수를 대표하도록 각 계층에서 올바른 수의 샘플을 추출하는 방법
원-핫 인코딩 ( One-Hot Encoding ) : 카테고리를 하나만 1로 표현하고 나머지에 해당하는 것들은 다 0을 표시하는 것
Min-Max 스케일링( = normalization ) : 정규화라고 부른다. 0~1 범위에 들도록 값을 이동하고 스케일을 조정하면 된다.
표준화 ( standardization ) : 평균을 뺀 후 표준 편차로 나누어 결과 분포의 분산이 1이 되도록 함. Min-max와는 달리 표준화는 범위의 상한과 하한이 없어 특정 알고리즘에는 문제가 될 수 있다. 하지만 표준화는 “이상치"에 영향을 덜 받는다.
Overfitting을 막는 법 : 더 강력한 모델! 더 좋은 특성 주입! 모델의 규제 감소!
교차 검증 ( Cross-Validation ) : 훈련셋을 더 작은 훈련셋과 검증 세트로 나누어 훈련시키고 검증 세트로 모델을 평가하는 방법이다. K-fold를 수행하는데, fold라고 불리는 ex) 10개일 때 9개 fold는 훈련세트의 훈련에 사용하고 1개는 평가에 사용하는 것이다.
사이킷런의 교차 검증은 클수록 좋은 효용 함수를 기대한다. 그래서 -MSE를 사용한다.
그리드 탐색( GridSearchCV ) : 탐색하고자 하는 하이퍼파라미터와 시도해볼 값을 지정하면, 가능한 모든 하이퍼파라미터 조합에 대해 교차 검증을 사용해 평가하게 된다. 비슷하게 이상치나 값이 빈 특성을 다루거나 특성 선택 등을 자동으로 처리하는 데 그리드 탐색을 사용한다.
랜덤 탐색 ( RandomizedSearchCV ) : 비교적 적은 수의 조합을 탐구할 때 괜찮다. 하지만 하이퍼파라미터 탐색 공간이 커질 때도 좋다.
앙상블 방법 ( Ensemble ) : 모델 그룹이 최상의 단일 모델보다 더 나은 성능을 발휘할 때가 많다.
중요한 것은 검증에 맞추고 -> 테스트로 평가한다는 것이다!
- Coding
np.random.permutation( ) : 랜덤으로 순서를 바꿔줌
iloc( ) : 순서를 나타내는 정수 기반의 2차원 인덱싱
loc( ) : 라벨 값 기반의 2차원 인덱싱
* Indexing 할 때 행,열이 label인지 정수인지 모르면 0,1,2 시작 / 알면 1,2,3 시작
reset_index( ) : 기존의 행 인덱스를 제거하고 인덱스를 마지막 데이터 열로 추가!
where( condition[ , x, y] ) : 조건에 따라 x or y에서 요소를 변환함
drop( labels, axis, Inplace=T or F) : inplace = True 일 경우 안에 것을 실행하고 None을 반환
Axis = 0 : index / Axis = 1 : columns
dropna( ) : axis = 0 : 결측값 있는 행 삭제 / axis = 1 : 결측값 있는 열 삭제
fillna(A) : A로 기존 NA 채우기
factorize( ) : 각 카테고리를 다른 정숫값으로 매핑해주는 메소드
fit( ) : 메서드와 트레이닝 데이터를 사용하여 변환 계수 추정
transform( ) : 그룹별 대표값을 만드는 게 아니라, 그룹별 계산을 통해 데이터 값 자체를 변화시킴
fit_transform( ) : 메서드를 이용하여 “계수 추정”과 “자료 변환”을 동시에 실행
*arg : 여러개의 인자를 함수로 받고자 할 때
**kargs : 키워드를 제공함
np.c_ : 열에 대하여 분리된 것을 연결 시켜줌 ( 행은 np.r_ )
- 연습문제
1. 서포트 벡터 머신 회귀를 kernel을 바꿔가며 다양한 하이퍼파라미터 설정으로 시도하기. 하이퍼파라미터가 의미하는 것은? 최상의 SVR 모델은?
2. GridSearchCV를 RandomizedSearchCV로 바꾸기
reciprocal( ) : 하이퍼파라미터의 스케일에 대한 감이 없을 때 사용
expon( ) : 하이퍼파라미터의 스케일에 대한 감이 있을 때 사용
3. 가장 중요한 특성을 선택하는 변환기를 준비 파이프라인에 추가
4. 전체 데이터 준비 과정과 최종 예측을 하나의 파이프라인으로 만들기
5. GridSearchCV를 사용해 준비 단계의 옵션을 자동으로 탐색해보기
계속적인 Error로 보류...
728x90
반응형