본문 바로가기

전체 글

(45)
파이썬 데이터인코딩(레이블 인코딩, 원-핫 인코딩) 파이썬으로 머신러닝을 하기 전 데이터를 인코딩해주는 것은 중요하다. 사이킷런의 머신러닝 알고리즘은 문자열 값을 입력 값으로 허용하지 않기 때문에 문자형은 숫자형으로 인코딩해야한다. 인코딩 방식에는 레이블 인코딩과 원-핫 인코딩이 있다. 레이블인코딩 판매목록 가격 꼬북칩 1500 꼬깔콘 1000 빼빼로 1300 판매목록 가격 0 1500 1 1000 2 1300 레이블인코딩의 단점은 꼬북칩, 꼬깔콘, 빼빼로가 각각 0, 1, 2 가 되었는데 각각 상관성이 없다는 것이다. 그리고 머신러닝 알고리즘에서 0을 작게, 2를 크게 인식하다 보니 중요성이 꼬북칩보다 빼빼로가 더 크게 나올 수 있다. 원-핫인코딩은 레이블 인코딩의 단점을 보완하려고 나왔다. 원-핫 인코딩 원-핫 인코딩은 feature 값의 유형에 따라..
머신러닝 - 과적합을 막기위한 교차검증(stratified K fold) 파이썬으로 구현 Stratified K 폴드는 불규현향 분포도를 가진 target 데이터 집합을 위한 k-fold 방식 이다. 만약 공장의 오작동 데이터를 예측한다고 가정해 본다. 공장의 작동 데이터 중 오작동, 작동을 구분을 1(오작동), 0(작동)로 하여 피쳐를 준다고 가정하자. 이 공장은 잘 돌아가고 있는 공장이므로 오작동 데이터는 작동 데이터보다 훨씬 작을 것이다. 만약 작동 데이터가 만건이 있다고 하면 오작동 데이터는 10건정도 있다고 가정해본다. 이렇게 작동 데이터에 비해 적은 비율로 오작동 데이터가 있다면 k-fold로 랜덤하게 데이터를 뽑을 때 0, 1의 비율이 제대로 반영되지 못한다. 이 때 예측을 하기 위해 중요한 것은 작동 데이터가 아니라 오작동 데이터이다. 그러므로 원본데이터와 유사한 오작동 레이블..
머신러닝 - 과적합을 막기위한 교차검증(k-fold) 파이썬으로 구현 train_test_split()로 테스트데이터와 학습데이터를 분리하여서 학습하고 예측하면 '과적합(Overiftting)'에 취약해 질 수 있다. 과적합이란 학습 데이터에만 최적화 되어서 학습이 되어 있어서 실제 예측을 할 때에 성능이 떨어지는 것을 말한다. 만약 모의고사 문제집 1개만으로 공부를 한다면 해당 모의고사 문제집에만 최적화 되어 실제 시험을 볼 때 문제유형이 다르다면 모의고사에서는 좋은 성적을 거뒀을지라도 실제 시험은 망할 수 있다. 교차 검증은 과적합을 예방하기 위해서 여러 개의 학습 데이터 세트, 검증 데이터 세트에서 학습하고 검증한다. 기존에 train_test_split()로 한번의 학습 데이터를 분석 한 후 테스트 데이터로 테스트를 했다면 교차 검증에서는 학습 데이터 안에서 학습 ..