☀️ [TIL]_22.05.13_금_머신러닝 기초 2일차

김태인·2022년 5월 13일
0

📗[TO LEARN]

  • 논리 회귀(Logistic regression)
  • 전처리 (Pre processing)

💡[배운것]

전처리란? (Preprocessing)

넓은 범위의 데이터 정제 작업

ex) 과일을 먹기 위해서 과일 껍질을 깎아 예쁘게 잘라 놓는 것

먹는 것 = 학습
과일을 깎는 것 = 전처리

  • 정규화 (Normalization) = 데이터를 0과 1사이의 범위로 만듬
    99% 정규화를 사용함

  • 표준화 (Stadardization) = 데이터의 분포를 정규분포로 바꿔줌
    데이터의 평균이 0이되도록 하고 표준편차는 1이 되도록

전처리를 하게되면 학습하는 속도 빨라지고 Local minimum에 빠질 확률을 줄여줌


논리회귀 (Logistic regression)

문제 : 대학교 시험 전 날 공부한 시간을 가지고 해당 과목의 이수 여부를 예측

이수 여부를 0, 1이라는 이진클래스(Binary Class)로 나누는데
선형 회귀를 사용하면 그래프가 이상하고, 정확도도 높지 않음

이러한 선형으로 풀 수 없었던 문제를 Logistic function 을 사용하여
Logistic regression을 사용해서 풀 수 있다

  • 로지스틱 함수(Logistic function) = 특정 변수를 S커브 함수로 표현한 것
  • 딥러닝에선 시그모이드 함수(Sigmoid function)이라고 함

❗ 한줄개념 : "논리 회귀"는 "선형 회귀"에서 0에서 1사이에 출력이 나오도록 Sigmoid funtion을 붙여 만든 것

논리회귀 Hypothesis = x -> 선형회귀 -> Sigmoid -> H(x) [0이냐 1이냐로 확인]

Logistic regression 에서는 Cross Entropy라는 손실 함수를 사용함

Keras 에서 이진 논리의 회귀 경우엔 binary_crossentropy 손실함수를 씀

Cross Entropy = 그래프의 확률 분포의 차이를 줄여주는 함수

❗ 결론 : 단항 논리 회귀에서는 Sigmoid 써서 0과 1을 나누고 이후 CrossEntropy를 써서 확률 분포 그래프의 차이를 계산해서 최소화함


다항 논리 회귀 (Multinomial logistic regression)

One-hot encoding = Multi-label classfication
문제의 출력값을 가장 예쁘게 표현할 수 있는 방법

성적클래스One-hot encoded
A0[1,0,0,0,0]
B1[0,1,0,0,0]
C2[0,0,1,0,0]
D3[0,0,0,1,0]
E4[0,0,0,0,1]

다항 논리 회귀에서도 Cross Entropy를 사용하고 sigmoid 대신 Softmax 라는 손실 함수를 사용함

Keras 에서 이진 논리의 회귀 경우엔 categorical_crossentropy 손실함수를 씀

❗ 결론 : 다항 논리 회귀에서는 Softmax를 쓰고 이후 CrossEntropy를 써서 확률 분포 그래프의 차이를 계산해서 최소화함


Support vector machine (SVM)

ex) 강아지와 고양이를 푸는 문제 = (Classfication problem)
분류문제를 푸는 모델 = 분류기(Classifier)

Margin이 넓어지도록 학습시키는것이 훌륭한 Support vector machine을 만드는 것

예외 사항이 발생한다면?
Feature(특성)의 개수를 늘려서 학습을 시키면 보편적으로 모델이 더 좋아짐

k-Nearest neighbors (KNN)

비슷한 특성을 가진 개체끼리 군집화하는 알고리즘

Decision tree (의사결정나무)

예, 아니오를 반복하며 추론하는 방식

Random forest

의사결정나무를 여러개 합친 모델

각각의 의사결정나무들이 결정을 하고 마지막 투표(Majority voting)을 통해 답을 냄


👏 [느낀점]

선형회귀와 논리회귀를 사용해야하는 문제를 잘 분류하는게 첫번째인것 같다

또한 데이터의 전처리를 반드시 해주는것이 모델의 학습속도를 높이고 더 좋은 결과를 가져온다는건 머리에 심어야겠다

머신러닝은 정말 어렵다... 수포자로써 수식은 고사하고, 반복학습으로 개념을 꼭 머리에 잘 새기자

그리고 쫄지말자!!

비전공자에 코딩을 접한지 한달밖에 안됫는데 머신러닝을 보고있다는것만으로도... 스스로에게 쓰담쓰담

가자!!!!!!!!!

profile
코딩이 취미가 되는 그날까지

0개의 댓글