6 Dec, 2021

wannabedatazzang·2021년 12월 6일

[Sol] Today I Learned

목록 보기
12/15

[코세라 Machine Learning]

9주차 Anomaly detection
  • Supervised Learning vs Anomaly Detection : 수집한 training data가 정상데이터는 많은데 비정상데이터가 그에 비해 월등히 적을때 Anomaly Detection 모델 사용. Supervised learning 모델도 비정상 데이터를 정형화 할 수 있으나 비정상 값을 전혀 예측할 수 없을 때는 anomaly detection 모델 사용.
  • Error analysis for anomaly detection : 이상적인 Anomaly detection 에서는 정상적인 example에 대해서는 p(x)가 크고 비정상 example에 대해서는 p(x)가 작아야한다. 하지만 실제 대부분의 문제는 정상 example과 비정상 example의 p(x)가 비슷해서 발생한다. 이런 경우에는 비정상 p(x)도 꽤나 큰 확률을 가지기 때문에 새로운 feature을 추가하는 방법을 시도해야 한다.

[핸즈온 머신러닝]

2장
  • 계층적 샘플링 : 전체 인구는 계층이라는 동질의 그룹으로 나뉘고, 테스트 세트가 전체 인구를 대표하도록 각 계층에서 올바른 수의 샘플을 추출하는 것.

  • 전문가가 중간 소득이 중간 주택 가격을 예측하는 데 매우 중요하다고 했다고 가정했을 떄, 중간 소득이 연속적인 숫자형 특성이므로 소득에 대한 카테고리 특성을 만들어야 한다.
    카테고리 5개를 가진 소득 카테고리 특성을 만든다.

  • 소득 카테고리를 기반으로 계층 샘플링

  • StratifiedShuffleSplit : StratifiedKFold의 계층 샘플링과 ShuffleSplit의 랜덤 샘플링을 합친 것으로 test_size 와 train_size 매개 변수의 합을 1 이하로 지정할 수 있다.

    housing["income_cat"] = pd.cut(housing["median_income"],
                                  bins=[0., 1.5, 3.0, 4.5, 6., np.inf],
                                  labels=[1, 2, 3, 4, 5]) 
                                  
    from sklearn.model_selection import StratifiedShuffleSplit
    
    split = StratifiedShuffleSplit(n_splits=1, test_size=0.2, random_state=42)
    for train_index, test_index in split.split(housing, housing["income_cat"]):
      strat_train_set = housing.loc[train_index]
      strat_test_set = housing.loc[test_index]

0개의 댓글