본문 바로가기
  • 조금 느려도, 꾸준히
Artificial Intelligence/Machine Learning

핸즈온 머신러닝(3) - 사이킷런 설계철학[참고]

by chan 2020. 1. 21.
반응형

#사이킷런 설계 철학

 - 사이킷런의 API 는 잘 설계되어 있으며 몇가지 설계 원칙에 따라 만들어져 있다.

 - 자세한 내용은 API design for machine learning software: experiences from the scikit-learn project 에서 확인 할 수 있다.

 

1. 일관성

 - 추정기(estimator): 데이터셋을 기반으로 일련의 모델 파라미터들을 추정하는 객체를 추정기라고 한다. (imputer 객체도 추정기이다) 추정 자체는 fit() 메서드에 의해 수행되고 하나의 매개변수로 하나의 데이터셋만 전달한다(지도 학습 알고리즘에서는 매개변수가 두 개로, 두 번째 데이터셋은 레이블을 담고 있다). 추정 과정에서 필요한 다른 매개변수들은 모두 하이퍼파라미터로 간주되고( 예를 들어 imputer 객체의 strategy 매개변수), 인스턴수 변수로 저장된다(보통 생성자의 매개변수로 전달된다).

 * 여기서 인스턴스란 객체지향 프로그래밍에서 객체가 각각 독립적으로 가지고 있는 변수를 뜻하며, 생성자의 매개변수는 파이썬 객체를 만들 때 전달하는 매개변수를 뜻한다( 일반적으로 파이썬의 __init__ 이라는 생성자가 있다).

 

- 변환기(transformer): (imputer와 같은) 데이터셋을 변환하는 추정기를 변환기라고 한다. 변환은 데이터셋을 매개변수로 전달받은 transform() 메서드가 수행하며, 변환된 데이터셋을 반환한다. 이런 변환은 일반적으로 imputer의 경우와 같이 학습된 모델 파라미터에 의해 결정된다. 모든 변환기는 fit() 과 transform() 을 연달아 호출하는 것과 동일한 fit_transform() 메서드도 가지고 있다. ( fit_transform() 이 최적화 되어 있어서 더 빠르다)

 

 - 예측기(predictor): 일부 추정기는 주어진 데이터셋에 대한 예측을 만들 수 있다. 예를 들어 이전 포스트에서 다뤘던 LinearRegression 모델이 예측기이다. 예측기의 predict() 메서드는 새로운 데이터셋을 받아 이에 상응하는 예측값을 반환하며, 예측기는 또한 테스트 세트를 사용해 예측의 품질을 측정하는 score() 메서드도 가진다.

 

2. 검사 가능

 - 모든 추정기의 하이퍼파라미터는 public 인스턴스 변수로 직접 접근할 수 있고, 모든 추정기의 학습된 모델 파라미터도 접미서로 밑줄을 붙여 공개 인스턴스 변수로 제공된다 (예를들어 imputer.statistics_ ).

 

3. 클래스 남용 방지

 - 데이터셋을 별도의 클래스가 아니라 넘파이 배열이나, 사이파이 희소(sparse)행렬로 표현한다. 하이퍼파라미터는 보통의 파이썬 문자열이나 숫자이다. 

 

4. 조합성

 - 기존의 구성요소를 최대한 재사용한다. 예를 들어 앞으로의 포스트에서 다룰, 여러 변환기를 연결한 후 마지막에 추정기 하나를 배치한 Pipeline 추정기를 쉽게 만들 수 있다.

 

5. 합리적인 기본값

 - 사이킷런은 일단 돌아가는 기본 시스템을 빠르게 만들 수 있도록 대부분의 매개변수에 합리적인 기본값을 지정해둔다.

반응형

댓글