데이터사이언스 이론 공부 31

SVM의 가우시안 RBF 커널 간략 정리

sci-kit learn에서 제공하는 SVM 모델 중 SVC 알고리즘은 다양한 커널을 제공한다. 주로 ‘linear’, ‘poly’, ‘rbf’ 이렇게 세 가지가 주로 쓰이는데 SVC 알고리즘을 가져왔다면 주로 ‘rbf’를 쓰기 위함일 경우가 많다. (default값도 rbf이다.) from sklearn.svm import SVC from sklearn.pipeline import Pipeline from sklearn.preprocessing import StandardScaler rbf_kernel_svm_clf = Pipeline([ ("scaler", StandardScaler()), ("svm_clf", SVC(kernel="rbf", gamma=1, C=0.001) ]) RBF는 가우시안 방..

엔트로피(Entropy)와 크로스 엔트로피(Cross Entropy)

엔트로피 이전에 정보량에 대해서 이해할 필요가 있다. 어떠한 사건의 확률값에 -log를 취하면 확률이 높아질수록 0에 가까워지고 확률이 낮아질수록 무한대에 가까워진다. 즉 확률이 높을수록 낮은값을 지니도록 설정하기 위한 도구로 -log를 취했다. 그리고 -log p(x) 를 정보량 I(x) 으로 정한다. 정보의 크기(정보량)란? 어떤 정보가 참이라고 가정했을 때 어떠한 사건이 일어날 확률이 매우 낮을수록 큰 정보라고 부른다. 왜냐하면 확률이 낮은 사건은 누구나 알고 있다고 보기 어렵기 때문에 만일 사실일 경우 유익한 정보이기 때문이다. 개인적으로는 정보량을 정보의 가지수로 이해하면 어떨까 싶다. 가령 정보량이 0에 근사하다는 말은 즉 사건 발생 확률이 높다는 것이므로 A라는 사건이 발생할 경우 어떤 결과..

NDCG로 랭킹 추천모델 평가하기

NDCG는 추천 모델 중에서도 추천 받는 대상인 유저에게 있어 추천의 순서가 중요한 요소로 작용하는 랭킹 추천 모델에 대한 평가에 활용한다. 그래서 유저와 특정 상품 간의 연관성 또는 각 상품의 선호도 등을 점수로 환산한 뒤 1등부터 K등까지 나열한 결과가 가장 이상적인 추천이라는 가정하에 모델 평가를 진행한다. 쉽게 말해 유저 마음 속 1위에서 K위까지의 상품을 등수 순서에 맞춰 추천해주는 것이 중요하다는 의미이다. 여기서 점수 역할을 해야하는 연관성 또는 선호도를 어떻게 측정할 수 있을까? 웹사이트의 경우 특정 상품에 대한 각 유저의 클릭률, 체류시간 등을 지표로 삼을 수도 있고, 장바구니에 담았는지, 결제 단계까지 이르렀는지 등 유저 행동에 기반한 스코어링을 할 수도 있고, 각 상품에 매긴 평점이나..

딥러닝에는 왜 활성함수를 적용할까?

딥러닝하면 가장 먼저 접하는 저 신경망 그림은 뭔가 복잡해 보이지만 찬찬히 뜯어보면 비교적 단순하다. 위 그림을 직관적으로 받아들여보면 input layer는 우리가 예측 또는 분류할 때 쓸만할 것으로 예상되는 데이터에 해당한다. 즉 집값 예측이라고 한다면 평수, 방 개수 등등이 되겠다. 위 동그라미들을 이어주는 선들은 모두 가중치 $w$에 해당하며 1~8번 input 데이터에 각각 다른 가중치를 곱한 뒤 모두 더하는 내적을 수행한 결과가 hidden layer 1 이 된다. 식으로 표현하기 위해 input 데이터를 $x$라고 한다면 $w_1x_1 + w_2x_2....+b$ 로 표현이 된다. 이 식은 input이 8개 hidden layer 1이 9개 이므로 총 72개의 $w$가 필요할 것이지만 아무리..

하이퍼 파라미터 튜닝에 관하여

하이퍼 파라미터는 머신러닝 과정에서 직접 선택해줘야 하는 값을 의미한다. 여기서 그냥 파라미터와 헷깔릴 여지가 있기 때문에 미리 짚고 넘어가자. 머신러닝에서의 파라미터는 목적함수 $h_{\theta}(x)$의 해($\theta$)를 의미하며, 하이퍼 파라미터는 모델링에서 우리가 직접 선택해야 하는 옵션값들을 의미한다. 어떤 모델을 선택하느냐에 차이가 발생하지만 LGBM 모델의 경우 max_depth, num_leaves, n_estimators 등이 해당하고, SVM의 경우 cost, gamma가 해당하며, DNN의 경우 epoch, batch_size, dropout 등이 해당할 것이다. 각 모델을 깊게 살펴본다면 우리가 손수 설정해야할 하이퍼 파라미터값들이 생각보다 훨씬 많다는 것을 알 수 있을 것이..

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