본문 바로가기

스파르타 내일배움캠프

TIL 15 머신러닝 기초 2주차

 

논리 회귀로 푸는방법

 

논리회귀(Logistic regression) 

 

분류 classification 

 

전처리기 pre-processing 머신러닝 70~80% 차지

 

먹는것은 학습 과일을 깎는것은 전처리라고 생각하면됌

 

정확도에 많은 영향을 준다 꼼꼼하고 잘하는게 굉장히 중요

 

수많은 실험을 통해서 어떤 전처리 방법을 쓰는지가 중요

 

입력값 공부한시간 출력값 이수여부 이수여부 0,1 이진 클래스(Binary class)

 

logistic function = sigmoid function

 

fail 여부 pass 여부 선형회귀보다 훨씬더 쉽게 발견할수있다

 

과목을 이수할수있는건 0과 1 이수냐 미이수냐

 

15시간 공부 pass 확률 0.8

 

80% 확률 자신감으로 패스

 

50%정도 넘으면 통과

 

임계치 Threshold 못넘으면 fail

 

Threshold를 넘길수있다 시험에 이수한 숫자 예측하는게 중요 Threshold 

 

logistic function 0~1 최소 0 최대 1 사이로 나온다

 

sigmoid 함수를 쓰는 경우가 많다 단항 논리회귀를 할떄 씀

 

logistic function

논리 회귀 선형 회귀 => 연속적인 값 선형회귀

선형회귀인데 0~1사이의 값을 나올수있게 만들었다

 

선형회귀 가설 Wx+b 입력값 x 선형 회귀를 통해서 아웃풋 출력값 cigmoid 출력값을 예측값이다.

0~1 사이 0과 1을 확률로 나타내주는 구조다

 

선형 회귀를 넣어서 hyphotesis 

손실함수 cross entrophy

 

logistic regression에서는 cross entrophy라는 함수 => 확률분포의 차이를 줄여주는 그래프

 

keras 이진 논리 회귀 binary cross entrophy라는 loss function을 사용 

이진논리회귀 이수 미이수

 

다항 논리 회귀 (Multinomail logisitic regression)  A,B,C,D,F

 

One-hot encoding 예쁘게 출력 컴퓨터친화적인 방향 확률분포 그래프를 이쁘게 만들어준다

 

다항 분류 classification 속하기때문에 one hot encoding 사용 여러개의 항을 0과 1로 구분하여 표현

 

0이라는 클래스를 one-hot encoding하면 0에해당해주는것만 1로 바꿔준다 하나씩 1로 넣고 나머지를 0으로 채워줌

 

 

단항 논리회귀를 할떄는 sigmoid함수를 쓰고 binary logist regression

다항 논리회귀를 할떄는 softmax함수를 사용한다.

softmax-> linear

 

 

softmax에 해당하는 값을 모두 더했을때 확률이 1이 되도록 만들어주는 함수이다.

 

 

그니까 결국 그래프가 one hot encoding을해서 가장 큰값을 1로 나타낸다. y축은 확률 x축은 label 항이 3개

실제값인 노란색그래프를 예측한 빨간색그래프처럼 작게만들어줘 이것이 손실함수 CrossEntrophy를 사용해서 확률분포의 차이를 구해서 줄여준다.

 

단항 다항 논리회귀 차이점 sigmoid함수를 쓰냐 softmax 함수를 쓰냐? 이거랑 라벨의 개수가 몇개냐 클래스의 개수가 몇개냐만 다르다.

 

SVM Support vector? 분류문제 강아지면0 고양이 1 클래스를 분류 classification classifier <= 머신러닝모델

 

강아지랑 고양이 특징 분류 충성심을 지표화 

 

모델의 정확도 선을 잘 긋는 방법 Support Vector Machine  선간의 거리 파란색과 빨간색사이의 거리 거리가 최대가되는 거리로 빨간색선을 그어라 최대가되는점이 가장 분류를 잘하게됨

파란색 선이 최대가 되는점 support vector라고 부르고 노란색 선 가장 가까운 고양이로부터 선하고 가장 가까운 강아지로부터의 선하고의 길이를 Margin이라고 부른다. Margin이 클수록 classifier의 성능이 좋다. Support vector machine이라고 부른다.

feature가 늘어날수록 성능이 좋아진다

 

K-Nearest Neighbors (KNN) 몇개의 이웃이 나랑 가깝냐? 새로운 고양이가 등장하면 배치 그 고양이랑 가까운 개체가 2마리가있다면 k=2가 되고 k가 2일때 이상한 개체가 나타나면 가장가까운 두마리의 개체가 잡히면 강아지구나라고 예측을하는 그런 모델 직관적이고 쉬우면서 성능도 좋은 편

 

Decision Tree ex1

Decision Tree : 동물이있을떄 날개가있나요? 없나요 이런식으로 그냥 직관적으로 보는것 (스무고개랑 비슷한 방식)

 

Decision Tree ex2

 

Random Forest

Random Forest : Decision Tree 여러개가 있다 여러개가모여 하나로 합쳐지게되는데 Majority-Voting 투표를 해서 내는거도 가능 regression 문제를 풀경우는 평균을 내는경우도있다 Random Forest 성능좋다

 

 

Preprocessing 전처리 굉장히 중요한 작업 데이터를 정제시키는 작업 데이터값이 너무 벗어난걸 지워주는것

 

전처리가 왜 필요한건가 전처리를 안하게되면 성능이 낮아지거나 학습이 낮아지는 경우가 있다 

 

정규화(Normalization), 표준화(Standardization)

 

전처리가 왜 필요한지 조건을 어느정도 맞춰놔야 형평성에 어긋나지않는다 그래서 비교하기 더 수월해진다.

 

정규화 0~1 값을 가지게끔 정규화한다 이게 일반적인 경우

 

표준화

 

이렇게 표준화를 시키게 되면 일반적으로 학습 속도(최저점 수렴 속도)가 빠르고, Local minima에 빠질 가능성이 적다.

 

 

오늘 그래두 오늘 하루 잘 보낸거같아 기분이좋다 팀원들간의 분위기도 너무좋구 잘 못따라오시는 팀원분 한분계셔서 마지막까지 남으셔서 고민상담해주는데 많이 힘들고 못따라간다고하셨다. 그래서 뭐 내가 아는게 더 많지도않고 많이 하지는 못하지만 적어도 내가 찾아보고 그 팀원이 고민하는 문제를 같이 고민해서 풀어줄순있기에 오늘 배웠던내용들또한 내가 이해하는선에서 많이 알려주었다 ㅋㅋㅋ 그래도 팀장 짬밥이있고 그런지 팀장님 말고 팀원 두분께서 날 부팀장이라고 부르면서 많이 의지하시는거같다 ㅋㅋㅋ 그래두 나도 이번 팀에 있어서 나의 비중이 그래도 부팀장급으로 생각을하고 어느정도 내 역할을 맡아서 받쳐주는역할을 해줘야 팀도 돌아갈거라고생각하기에 내가 그역할을 하기위해 더 열심히 노력하는거같다. 전에 있을땐 내가 팀장으로써 그 역할을하기에는 따라가기에도 급급한정도였지만 지금은 그래도 한회전 돌고나니까 내가 어떻게 노력을해야되겠고 어떤시야로 보고 접근해야되는지 정도는 이해하게된거같다. 즉 주제파악은 할정도는 된거같아서 앞으로 팀원 이끌고 주말에 추가공부하면서 한달을 의미있게보낼려고한다. 내가 아는게 많지도않고 대단한것도아니다. 상대방의 고민이있고 문제가있으면 해결해줄려는 그런 마음가짐이 나를 더 성장시키는 발걸음이지 않나싶다 ㅋㅋㅋ 오늘 팀원이 막 자존감도 낮고 되게 못따라고 힘들어하길래 마구마구 칭찬해줬더니 나한테 칭찬봇이라면서 너무 고마워했다. 성격이 워낙 소심하시다보니까 마이크도 잘 안키시고 이야기도 선뜻안하시고 채팅으로 치신다. 그리고 이해 다 못해도 이해한척하구 네네 했던부분들이있다고하시길래 나도 복습할겸 그분께도 도움이되기위해 (팀을 위해) 같이 공부를 할려고한다. 난 한번파면 거기 끝까지 파는성격이있기때문에 (완벽주의자성향이 좀 있어서) 그런게 지금까지 ㄷ진도를 못뺴는이유중하나이다.. 이글을 쓰면서도 난 아직 강의가 남아있고 오늘 듣고자야한다..레전드...그래도 내 팀원이 행복해하고 힘들어했던부분 도와줘서 기분이좋다 언젠가는 나도 팀장님처럼 모두를 도울수있는 그런 위치가 되보고싶다.. 화이팅!!^^