전체 글 118

MAP(Maximum A Posterior) 에 대한 이해

MAP(Maximum A Posterior) 📌 사후확률(Posterior) 를 최대화 하는 가설함수(확률 분포)를 찾는 것이 MAP의 목적이다. MAP에 대한 이론을 통해 MLE 를 다시한 번 되돌아 보자 MAP와 MLE 둘 다 주어진 데이터 Y를 모사하는 분포를 알고 싶은 것은 동일하다. 하지만 MLE는 그 분포를 찾을 때, 인풋(X)을 넣어 Y 근사값을 출력하게 하는 $\theta$값을 셋팅하는 것에 초점을 두고 있다. 즉 어떻게 보면 Y 분포를 찾는 것이 아니라 Y 분포를 만드는 과정에 해당한다. MAP는 베이지안 관점에 근거하여 $\theta$값은 셋팅해야할 대상이 아니라 $\theta$ 또한 확률 분포를 가지고 있음을 주장하며 MLE 방식의 한계를 지적한다. MLE 방식은 주어진 데이터 Y에 ..

GitHub 실전 예시를 통해 실무 활용법을 파악해두자

📌 Github Flow 회사에서 새 프로젝트를 진행할 경우 개발 과정을 github에 기록한다는 사실은 누구나 알고 있을 것입니다. 그러므로 IT기업에서 github 활용법을 모른 채 협업을 진행한다는 것은 있을 수 없는 일입니다. 모든 기업이 아래와 같은 형태로 프로젝트를 진행하지는 않겠지만 큰 틀을 파악하고자 아래와 같이 작성했습니다. 👀 새 프로젝트가 생성되었습니다. 팀장님 팀장이 본인 깃헙계정(또는 회사계정)에 신규 레포를 생성한다. 신규 프로젝트(github projects)를 생성해서 해당 레포에 배정한다. 해당 프로젝트 주소를 링크로 팀원에게 전달한다. 팀원 팀 프로젝트(팀장 깃헙 링크)에 접속한다. 프로젝트의 취지에 맞춰 Issues 란에 투두리스트를 작성한다. 프로젝트 특성에 따라 본인..

피처 정규화 (Feature Normalization)

Feature에 대해서 정규화(Normalization)을 진행하는 이유는? 📌 머신러닝 모델의 학습 과정에서 특정 feature에 편향되는 것을 방지하기 위함이 있다. 어떤 사람의 건강지수를 예측하는 모델을 만든다고 가정했을 때 신체와 관련된 다양한 Feature 선정이 이루어질 것이다. 그 중 키와 몸무게만을 학습 Feature로 사용했다고 가정해보자 만일 주어진 데이터에서 키는 미터(m) 단위를 사용하고, 몸무게는 킬로그램(kg) 단위를 사용한다면 데이터가 대략 아래와 같이 주어질 것이다. 키(m) 몸무게(kg) 1.5 42 1.7 86 1.6 55 여기서 키와 몸무게의 범위에 주목해야 한다. 키는 대략적으로 1.5~1.8의 범위를 갖는다면 몸무게는 40~80의 범위를 가질 것으로 예상할 수 있다...

머신러닝의 모델 평가 방법

머신러닝 모델 생성과정에서는 주어진 데이터를 모델에 학습시키고, 학습이 잘 되었는지 평가하는 단계를 거친다. 여기서 학습은 “데이터의 분포를 모델에게 주입하는 과정"을 말하고, 평가는 모델이 학습한 분포(함수)에 데이터(x)를 넣었을 때 얼마나 정답(y)을 맞췄는가에 대한 비교를 말한다. 그러므로 모델 생성을 위한 데이터가 갖추어야할 필수요소는 관련 자료와 정답이다. 가령 일일 방문객수 예측 모델을 생성한다고 하면 고객의 방문에 영향을 미치는 날짜, 날씨, 계절, 프로모션 등의 정보와 그에 따른 실제 방문객수에 대한 데이터가 필요할 것이다. 위 데이터가 일정량 이상 준비가 된다면 모델 학습과 평가에 활용할 수 있게 된다. 그 날의 날짜, 날씨, 계절 등 방문자수에 영향을 끼치는 요소들을 “조건"이라고 부..

MLE 에 대한 정리

MLE가 무엇인가요? Maximum Likelihood Estimation의 줄임말 입니다. 주어진 샘플을 토대로 모수의 확률 분포를 추정하는데 사용하는 방법을 말합니다. 즉 샘플을 가장 잘 모사하는 확률 분포를 찾는 것에 목적이 있습니다. 그렇게 찾은 확률 분포는 (샘플이 모집단을 대변할 만큼 충분하다는 전제 하에) 모집단의 확률 분포를 모사한다고 설명할 수 있게 됩니다. 어떤 방식으로 확률 분포를 찾는 것인가요? 임의의 확률 분포함수에 샘플을 입력하면 각 샘플에 해당하는 확률 밀도값을 출력하게 되고, 그렇게 모든 샘플에 대응하는 확률밀도값을 모두 곱한 값이 최대가 되게 하는 확률 분포가 해당 샘플을 가장 잘 설명하는 확률 분포라고 볼 수 있다고 합니다. 좀 더 이해하기 쉽게 주사위 예시로 설명해 보겠..

분류 모델에서 Accuracy의 한계

이진분류 모델의 평가지표로 정확도(accuracy)를 채택할 경우 정확도의 한계점을 인지해 둘 필요가 있다. 정확도는 분류 모델이 전체 데이터 중에서 몇 개나 실제값과 동일하게 예측했는가? 에 대한 비율에 해당한다. 어떤 게임에서 핵 사용자인지 아닌지 분류를 하는 모델을 만들었다고 했을 때 정확도 95%가 나왔다고 하자. 얼핏 생각하기에 이번 모델이 상당히 핵쟁이를 잘 구분해 낸다고 생각할 수 있겠지만 추가적인 확인이 필요하다. 만약 100명의 유저 중 실제 핵 유저가 단 5명만 존재할 경우 모델이 100명 모두 핵유저가 아니다라고 판별해도 정확도는 95%가 나온다. 핵 유저가 아닌 일반유저 95명에 대해서 핵 유저가 아니다 라고 잘 판별한 샘이 되기 때문이다. 결론적으로는 핵 유저를 하나도 찾지 못한 ..

파이썬 print와 return의 차이가 헷깔리는 이유는?

print와 return의 차이가 헷깔리신다면! 인터넷에 print와 return 차이를 검색하면 초보자 입장에서 뭐라는지 모를 설명이 참 많은데요. 제가 쉽게 정리해 드릴게요. 저희가 이론적으로 어떤지 궁금한게 아니잖아요?? print는 결과값을 출력창으로 보고 싶을 때 씁니다. return은 함수(def)의 결과값을 지정할 때 씁니다. 제 생각에 print와 return을 헷깔리게 하는 포인트는 아래 두가지 이유가 아닐까 생각합니다. 1. print가 코드 연산(계산)의 결과라고 생각하기 때문 2. def 함수의 활용 방법이 다양하기 때문 1. print는 "보여주세요" 라는 뜻이에요. "함수에서 print를 쓰면 되지 왜 굳이 return을 쓰나요?" 라는 질문을 하신다면 print 함수가 어떤 식..

주피터노트북에서 그래프 사용 시 문제 해결 Tip

matplotlib 사용 시 주요 불편 사항을 정리했습니다. 1. 그래프가 잘 안보일 때 jupyterthemes 을 설치해서 주피터 노트북 테마를 다크 계열로 사용하시는 분들이 계실텐데요. 다 좋은데 그래프의 x축과 y축 단위가 안보여서 짜증나셨던 분들이 계실 것 같아요. %matplotlib inline import pandas as pd df = pd.read_csv('/Users/leitmotiv/csvdata/broadcast.csv', index_col=0) df.plot() 이렇게 방송국 시청률 데이터를 선 그래프로 불러왔더니 x축 y축 내용이 잘 안보이게 되죠. 이럴 경우 여러가지 해결 방법이 있겠지만, 저는 주로 아래처럼 코드를 사용합니다. import matplotlib.pyplot ..