저번 포스팅에 이어서 XGBoost의 원리와 왜 확장성이 높은 알고리즘인가에 대해서 포스팅 하려고 합니다! 공식의 유도와 원리에 대한 이야기이기 때문에 전 포스팅을 보고 와주세요. XGBoost: A Scalable Tree Boosting System(Carlos & Tianqi. 2016) 리뷰 이번엔 XGBoost를 다루려고 합니다. 해당 논문을 읽고 정리한 내용이니 좀더 자세하고 이해하기 쉬운 설명은 다음 포스팅을 참고해주세요! 1️⃣ 서론 기계 학습과 데이터 기반 접근법이 많은 분 datanovice.tistory.com 📌 XGBoost 우선 XGBoost란 부스팅의 한 종류로 gradient boosting의 upgrade 버전으로 보시면 되겠습니다. Gradient Boosting과 같이 ..
전체 글
공부한 걸 정리하고 공유하며 틀린 부분을 함께 고쳐나가는 블로그입니다.이번엔 XGBoost를 다루려고 합니다. 해당 논문을 읽고 정리한 내용이니 좀더 자세하고 이해하기 쉬운 설명은 다음 포스팅을 참고해주세요! 1️⃣ 서론 기계 학습과 데이터 기반 접근법이 많은 분야에서 중요해지고 있다.(스팸 분류, 적절한 광고 노출, 사기 감지 등등) 이러한 성공적인 응용 프로그램을 이끄는 두가지 요소는 복잡한 데이터 종속성(상관)을 포착하는 효과적인 모델의 사용 대규모 데이터셋으로부터 관심있는 모델을 학습하는 확장가능한 학습 시스템 2015년 Kaglle의 29개 과제중 17개의 우승 솔루션이 XGBoost일 정도로 ML 및 데이터 마이닝 경쟁에서 큰 영향력을 발휘. 무엇보다도 오픈소스! XGBoost의 성공의 가장 중요한 요인은 모든 시나리오에서의 확장성(scalability)라고 하..
📌 Gradient Boosting Gradient Boosting은 Gradient descent와 boosting을 합친 것으로, 경사하강법과 부스팅 기법을 사용합니다. 경사하강법에서 loss인 $L(\theta)$를 최소화하기 위해 아래와 같은 방법으로 $\theta$를 업데이트 합니다. $$ \theta^{s+1} = \theta^s - \rho \dfrac{\partial}{\partial \theta} L(\theta) \big\lvert_{\theta^s} $$ 이 업데이트는 gradient인 $\nabla L(\theta^{s})$에 기반을 둡니다. 직관적이고 쉽게 봅시다. 📌 Why Gradient? 손실 함수(loss function)을 아래처럼 MSE(mean squre error)라..
오늘은 부스팅 중에 Adaboost에 대해서 알아볼까 합나디. 📌 Adaboost 특징 각 단계에서 새로운 모델을 학습하여 이전 단계의 모델의 단점을 보완 학습 오차(Training error)가 큰 관측치의 선택 확률(Weight, 가중치)을 높이고, 학습오차가 작은 관측치의 선택 확률을 낮춤. 즉, 오분류한 관측치에 보다 집중 앞 단계에서 조정된 확률(Weight, 가중치)를 기반으로 다음 단계에서 사용될 학습 데이터(training dataset)를 구성 다시 첫 단계로 돌아감 최종 결과물은 각 모델의 성능지표를 가중치로하여 결합(ensemble) 💻 Algorithm 이번엔 Adaboost의 알고리즘을 알아봅시다. 1. set $W_i = \frac1n, i =1,2,..., n$ (impose ..
오늘은 파이썬의 리스트 타입에 대해서 알아보려 합니다. 별거없어요! 📌 List type 리스트 타입이 좋은게 어떤 타입이든 들어갈 수 있습니다. 선언해봅시다. 선언하는 법은 간단합니다. list name = [element1, element2, element3, ...] 이런식으로 괄호로 묶어 주면 됩니다. list1 = [1, 2.4, 'pizza', True] for i in list1: print(i) >> 1 >> 2.4 >> pizza >> True 위와 같이 정수, 실수, 글자, 참과 거짓 같이 어떤 타입이든 넣어줄 수 있습니다. ◾ 인덱싱과 수정 리스트 타입의 인덱싱입니다. 파이썬의 경우 시작이 1이 아니라 0입니다. 아래와 같이 첫 요소를 불러오기 위해서는 1이 아닌 0을 사용합니다. #..
이번엔 break, continue입니다. 이것도 파이썬의 반복문하면 빼놓을 수 없는 구문입니다! break는 무한히 반복되는 무한루프에서 나올 수 있게 해줍니다. continue는 반복하지 않고 건너뛰게 해줍니다. 📌 break i = 2 while True: print(i,'*',i,'=', i*i) i = i + 1 >> 2 * 2 = 4 >> 3 * 3 = 9 ... >> 2494 * 2494 = 6220036 ... 위 코드를 보면 무한히 실행되는 것을 볼 수 있습니다. while문을 이용하여 참일경우 반복 진행하는 것이니까요. 여기서 break를 이용하여 원하는 부분에서 멈추게 할수도 있습니다. 이를 반복문에서 빠져나온다고 해봅시다. i = 2 while True: print(i,'*',i,'..
📌 python while문 for문 전에 간단하게 쓸 수 있는 반복문이 바로 while 입니다. while 조건식 : 조건식이 True일 경우 반복적으로 실행되는 명령문 입니다. 이게 왜? 반복문이냐? 이유는 *해당 조건이 False가 될 경우 반복문을 종류하기 때문입니다. * 바로 코드로 보시죠. i = 0 while i > i는 0 입니다. >> i는 1 입니다. >> i는 2 입니다. >> i는 3 입니다. >> i는 4 입니다. while i < 5: : i가 5 미만인 것이 True일 경우 반복한다. print('i는', i, '입니다,') : i에 할당된 숫자를 out하여 print하도록 한다. i = i +1 : i에 1일..
📌 python if문(조건문) 이번엔 조건문을 알아보겠습니다. 크게 if, elif, else문이 있습니다. if는 조건식의 결과가 True일 경우 실행될 명령문입니다. 조건식의 첫 문장을 이룹니다. elif는 if의 다음 문장부터 사용하며, 조건식의 결과가 True일 경우 실행될 명령문입니다. else는 if와 elif 모두 포함이 되지 않는 False일 때 실행될 명령문 입니다. 아래 코드를 보시면 이해가 쉬울 것입니다. money = 50 if money 100원 이하 입니다. money를 50원으로 지정해주었기 때문에 if문에 걸려 100원 이하라고 알려줍니다. money = 250 if money 100원 초과, 500원 이하 입니다. money를 250원으로 지정해주었기 때문에 elif문에 ..
📌 python 비교 연산자 아래 코드를 확인해주세요. a = 5 b = 20 print(a > b) # 크다 >> False print(a >= b) # 크거나 같다 >> False print(a > True print(a > True print(a == b) # 같다 >> False print(a != b) #다르다 >> True 이상 python 기초 연산자였습니다! ☠️
파이썬을 배운지는 참 오래됐네요. 그런데 학과 특성상 R을 써왔습니다. 그런데 현업 분들 말을 들어보니 파이썬을 많이 사용한다해서! 안그래도 파이썬을 다시 공부하고 싶었거든요 ㅎㅎ 그래서 기초적인 부분부터 복습해가면서 포스팅 하려고 합니다!! 📌 python 변수 종류 ◾ 숫자형(numeric types) 이번에 볼 숫자형은 두가지 입니다. integer 타입으로 정수형 그리고 floating-point 타입으로 실수형이 있습니다. a = 14 print(a, type(a)) >>> 14 print 함수로 a에 할당한 내용과 내용의 타입을 반환하였습니다. 위 처럼 일반 정수가 나오는게 int b = 14.0 print(b, type(b)) >>> 14.0 위처럼 소수점이 있는 것이 float ◾ 문자형(..