본문 바로가기

Study doc.

(35)
[Python] 알고 써라!! 넘파이(Numpy) * 해당 포스팅은 파이썬 머신러닝 완벽가이드(권철민, 2019) 교재를 참고하여 공부하며 작성한 글 입니다. 안녕하세요!! 오늘은 파이썬 머신러닝에서 정말 많이 사용되는 패키지 중 하나인 "넘파이(Numpy) 패키지" 에 대해서 정리해보겠습니다. 보통 머신러닝 책의 도입부에서 많이 설명되는 개념이기 때문에 머신러닝 입문자 분들이라면 이미 많이 보셨을테지만, 정확한 개념을 몰라도 코드를 짜는데 아무 문제가 없기 때문에 대충 훑어보고 넘어가는 경우가 많은것 같습니다. 하지만 이쪽 분야를 공부하면 공부할수록 기본기의 중요성에 대해 깨닫게 되고, 이런 기본기가 없으면 난잡하고 불필요한 코드를 짜는데에 많은 시간을 소비하던 저의 경험을 바탕으로 기본기 공부를 시작하게 되었습니다. 처음부터 천천히 읽어보시면서 왜 ..
[ML] Logistic Regression Linear Regression 은 데이터를 가장 잘 표현하는 직선을 찾는 것이라고 했습니다. 그럼 Logistic Regresion 은 뭘까요? 데이터를 가장 잘 분류하는 직선을 찾는 것이라고 할 수 있습니다. 어떻게 그 직선을 찾을까요? 선형회귀와 같은 방법으로 cost function (손실함수, 실제 값과 예측 값과의 차이)을 정의하고, 이를 최소화하는 지점을 gradient descent 기법을 통해 찾으면 됩니다. 잠깐 복습해봅시다. 선형 회귀 (Linear Regression) 가설 함수(H(x)) = w*x + b 손실 함수(cost function) w 값에 따른 cost 값 변화 로지스틱 회귀 (Logistic Regression) 로지스틱 회귀는 시그모이드(sigmoid) 함수를 기반..
[ML] Linear Regression Linear regression : 데이터를 가장 잘 대변하는 직선을 구하는 것 Q : '데이터를 잘 대변한다' 는게 뭔데? A : 예측값과 실제값의 차이가 크지 않은 것!! Q : 그런 직선을 어떻게 구하는데? A : 일단 지금 말한 것들을 식으로 만들어보자!! 파란 점선 : Hypothesis (H(x)) = w*x + b 빨간 직선 : Cost (loss, error) = H(x) - y = 예측값 - 실제값 Q : 데이터를 잘 대변하는 직선을 만들기 위해서는 cost가 가장 작아야 하는구나!! 그럼 cost가 가장 작은 직선을 어떻게 찾아? A : 고등학교때 2차함수의 최솟값을 구할때 f(x)를 미분하고 어쩌구 했던거 기억나? 마찬가지로 f(x)를 정의하고 그걸 미분한걸로 cost가 가장 작은 직..
머신러닝 입문자를 위한 모델 구조 * 해당 포스팅은 파이썬 머신러닝 완벽 가이드(권철민, 2019) 교재를 참고하여 공부하며 작성한 글입니다. "내일 강수량을 예측해봐!" "우리 고객이 언제 이탈할지 예측해봐!" 다음과 같은 업무를 부여받았다면 여러분은 어떻게 하시겠습니까? 날씨의 경우에는 작년 이맘때의 강수량과 지난 한 주간의 강수량 등을 고려해서 미래의 강수량을 예측해볼 수 있을 것 같습니다. 고객 이탈의 경우에는 이탈했던 사례들의 특성들을 분석하고 기존 고객의 특성과 비교하며 이탈 여부를 예측할 수 있을 것입니다. 즉 과거 데이터들을 기반으로 미래를 예측한다는 말과 같은데요, 머신러닝/ 딥러닝이 있기 전까지는 수학적, 통계적 능력이 뛰어나신 분들만이 할 수 있는 영역이었습니다. 하지만 요즘에는 모든 프로세스를 컴퓨터가 연산하기 때문..
[Python] logloss가 뭐야? 바로 예시로 시작하겠습니다. A와 B가 약 1km 거리에 있는 사람의 성별을 맞추는 내기를 한다고 가정하겠습니다. 눈이 좋은 A는 99%의 확신을 가지고 남자라고 했습니다. 눈이 좋지 않은 B는 50%의 확률로 남자라고 말했습니다. 그럼 결과는 무승부인가요? A는 99%의 확률을 가지고 맞췄기 때문에 본인이 이겼다고 주장합니다. 이런 논리로 나온게 logloss 입니다. 다른 예시를 들어보겠습니다. 분류 예측 모델 경진대회에서 남성과 여성을 분류하는 문제가 있을 때, 대회 주최자는 '운이 좋아서 맞춘 사람'과 '실력이 좋아서 맞춘 사람'을 구분하고 싶을 겁니다. 그렇기 때문에 예측한 결과값과 더불어서 모델이 그 값에 얼마나 확신하는지도 확인할 것입니다. 이 사람이 0.2의 확률로 1을 예측했는지 0.9의..
[ML] XGBoost 이해하고 사용하자 순서 개념 기본 구조 파라미터 GridSearchCV 1. 개념 'XGBoost (Extreme Gradient Boosting)' 는 앙상블의 부스팅 기법의 한 종류입니다. 이전 모델의 오류를 순차적으로 보완해나가는 방식으로 모델을 형성하는데, 더 자세히 알아보자면, 이전 모델에서의 실제값과 예측값의 오차(loss)를 훈련데이터 투입하고 gradient를 이용하여 오류를 보완하는 방식을 사용합니다. 수식으로 설명하자면, 1번 모델 : Y = w1 * H(x) + error1 1번 모델 오차(loss)의 보완 : error1 = w2 * G(x) + error2 2번 모델 : Y = w1 * H(x) + w2 * G(x) + error2 2번 모델 오차의 보완 : error2 = w3 * M(x) + e..
[ML] 앙상블(Ensemble)이 뭐야? 머신러닝을 공부하다보면 '앙상블' 이라는 단어가 종종 나옵니다. 처음 앙상블을 접한 곳은 캐글이었는데, 무슨 뜻인지 짐작할 수도 없어서 거부감이 들었습니다. 개념도 복잡하고 어려울 것 같아서 최대한 그 단어를 피해다니다가 '파이썬 라이브러리를 활용한 머신러닝' 도서를 정독하면서 개념을 정리할 수 있었습니다. 그리고 이해한 내용을 이렇게 글로 정리하면서 한번 더 공부하고자 합니다! 그럼 앙상블이 뭔지 한번 볼까요? 순서 앙상블이란? 앙상블의 종류 1. 앙상블이란? 앙상블을 검색해보면 물리학, 통계학, 뮤지컬, 연주 등 다양한 영역의 연관검색을 확인할 수 있습니다. 아하! 앙상블이라는 단어가 코딩의 전문용어가 아니였습니다. '앙상블(Ensemble)'은 프랑스어로써 '전체적인 어울림이나 통일' 이라고 위키백..
모델 평가하기 - 정확도만 높으면 좋은 모델? * 카테고리 별로 읽기보다, 글 순서대로 읽는걸 추천드려요. 순서 정확도의 문제 재현율, 정밀도 F score 임계값 조절 PR curve vs ROC curve Confusion Matrix 1. 정확도의 문제 모델 성능을 비교할 때 그리고 그리드 서치를 이용하여 최적은 매개변수를 구할 때, 어떤 값을 기준으로 모델을 선택하고 매개변수를 선택하시나요? 이 주제에 대한 고민을 안해보셨다면 대부분 정확도를 기준으로 선택하셨을텐데, 정확도만을 가지고 성능을 비교하면 어떤 문제점이 있는지 알려드릴게요! 가장 유명하게 알려진 예시로 암 환자의 진단을 들어보겠습니다. 어떤 회사에서 두 종류의 암 진단 키트를 발명했다고 가정해봅시다 !! A 키트의 정확도는 99% B 키트의 정확도는 95% 라고 발표했을 때, 우리..