[핸즈온 머신러닝] 제 2장 정리
📗강의노트/핸즈온 머신러닝

[핸즈온 머신러닝] 제 2장 정리

728x90
반응형
Keywords를 살펴보기 전에 머신러닝의 프로젝트 순서를 알아보자

  1. 큰 그림을 보고
  2. 데이터를 구하고
  3. 데이터로 부터 통찰을 얻기 위해 탐색하고 시각화한다.
  4. 머신러닝 알고리즘을 위해 데이터를 준비
  5. 모델을 선택하고 훈련시킴
  6. 모델을 상세하게 조정한다
  7. 솔루션을 제시
  8. 시스템을 론칭하고 모니터링하고 유지 보수


  • 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[ xy] ) : 조건에 따라 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
반응형