♠논리회귀 ((logistic regression)

  • 전처리 - 데이터를 러닝에 사용할 수 있게끔 사용하는 손질 과정, 정확도에 많은 영향을 끼치니 꼼꼼하게 잘 하기

♠논리함수 (logistic / sigmoid function)

※이진 논리회귀
ㄴ 선형회귀로 그려내기 어려운 그래프(ex. 학습 시간대비 패논패 시험)를 S곡선으로 그려냄
ㄴ f(n) = 1/(1+e⁻ⁿ) (x=n / 제곱수 기호에 x가 없어서 n으로 대체)
ㄴ 출력값이 0~1 사이
ㄴ x ▶ 선형회귀 ▶ 시그모이드 ▶ H(x)
ㄴ 선형회귀에서 확률분포의 차이를 줄여주도록 하는 CrossEntropy(논리회귀 손실함수)

※다항 논리회귀
ㄴ여러가지 항으로 분류를 해우저야 하기 때문에 '원핫 인코딩'방법을 사용

  • One-hot encord
    ㄴ클래스 라벨의 갯수만큼 배열을 0으로 채우기
    ex) 라벨이 3개라면, [1,0,0], [0,1,0], [0,0,1]

  • Softmax 함수
    ㄴ 결과값이 확률이다보니, 기존 이진 논리회귀에서 0,1로만(패스/논패스) 나오던
    결과값을 여러항에 적용할 수 없음(확률은 모두 합해서 100%니까 초과할 수 없음)
    그래서 다항의 결과의 총 합이 1이 되도록 함

X ▶ 로직 ▶ S•M ▶ 1hot

□ (2.0) (0.7) (1.0)

□ (1.0) (0.2) (0.0)

□ (0.1) (0.1) (0.0)

$$ KERAS 에서는 다항논리회귀에서 'categorical_crossentropy' 손실 함수를 사용


다양한 머신러닝의 모델들

  1. SVM(Support Vector Machine)
    A와B를 구분하도록 학습시키는 경우 구분시키는 문제는 '분류문제'라고 함
    ㄴ 이처럼 분류 문제를 푸는 모델을 '분류기(Classifier)'라고 칭함
    선(가설 혹은 학습결과)과 가장 가까운 A,B 사이를 '마진'이라고 하는데 마진이 클수록
    잘 그어진 선임
    이렇게 구분할때 쓰는 게 SVM

현실에서는 A그룹과 B그룹을 딱 나눌 수 있도록 하는 게 쉽지 않음
B에 가까운 A나 규격 외가 발생하는 경우, 특징(feature)를 추가하여 3차원으로 만듬

  1. KNN(k-Nearest Neighbors)
    요소 a를 기준으로 그래프상 특정 거리에 있는 것들로 안팍을 나누는 분류법
    ㄴ 직관석, 쉬움, 성능좋음
    ㄴ 의사결정나무(Decision Tree) : 조건에 맞춰 True, False로 나누어(조건유형검사, 스무고개 같은..) 분류
    ex) 아키네이터 지니
    ㄴ 랜덤포레스트 : 의사결정나무가 여러개 합친 모델
    ㄴMajority-Voting : 각 나무들에서 도출된 결과를 가지고 입력값이 무엇인지 투표(?)하는 과정

전처리(Preprocessing)
ㄴ 돌연변이, 특이사항, 규격 외 값들이 데이터 셋에 남아있는 경우들이 있어, 이를 사전에 정제해주는 과정
ㄴ 이 외에도, 특성마다 단위나 값의 범위 차이가 커서 비교가 어려울 때, 차이를 '표준화'해주는 과정
(보편적으로 0~1사이 값을 갖도록 '정규화')

  • 정규화(Normalization)
    단위나 값을 조정해서 전체 값이 0~1사이로 만들어 주는 것

  • 표준화(Standardization)
    데이터 평균을 0이 되도록 하고, 표준편차가 1이 되도록 하는 과정


    기타)
    Q. 데이터 수가 적어서 학습, 검증, 테스트시 사용했던 데이터를 그대로 사용해서
    진행하는 것은 안되는지?
    A. 시험 볼 때 답지를 주고 풀게 하는 것과 동일하다. 부정행위로 간주하고 데이터 값의 정확도가 떨어진다.

profile
갓 코딩 시작한 코린이

0개의 댓글