본문 바로가기

분류 전체보기

(297)
[Python] 기초 문법 (6) Iteration (for, while) 파이썬에는 대표적으로 2개의 Iteration (반복문)이 있습니다. ​ 첫 번째는 For문으로 정해진 횟수 만큼 반복문이 계속 수행됩니다. for 문에 들어가는 범위는 list가 될 수도 있습니다. for문을 사용해서, 1부터 100까지 더하는 코드를 만들어보겠습니다. range함수는 0부터 안에 들어가는 숫자 전까지 포함되므로 101을 넣어주었습니다. ​ 두 번째 반복문은 while로 조건을 걸어두고, 그 조건이 만족되지 않으면 반복을 중단합니다. 위 반복문은 x가 10보다 작은경우 반복문을 수행합니다. 즉, x = 10이 되었을 때, 해당 반복문은 끝나게 됩니다.
[Python] 기초 문법 (5) List List는 Python의 가장 근본이 되는 데이터 구조입니다. 만약 R을 공부해보신 분에게는 R에서의 vector와 같은 역할을 한다고 말할 수 있습니다. List는 데이터를 순차적으로 보관합니다. 그런데 위에서 R의 vector와는 차이점을 보여줍니다. R의 vector는 같은 타입의 데이터를 원소로 받았습니다. 하지만 Python list 내에는 문자 타입, 정수 타입, 실수 타입 모두 저장 가능합니다. ​ 그리고 Python list의 indexing은 0부터 시작합니다. 따라서 y 리스트는 0~6 index밖에 정의가 안되어, y[7]은 오류를 반환합니다. ​ 이번에는 list의 덧셈에 대해서 배워보겠습니다. 일반적으로 list를 더해주면 어떻게 될까요? +를 이용한 List의 덧셈은 merge ..
[Python] 기초 문법 (4) User-defined function Python은 함수를 직접 만들어 사용할 수 있습니다. User-defined function이 Python의 기초중에 기초라고 할 수 있습니다. 그러면 간단한 함수를 만들어 보겠습니다. add라는 함수로 두 수를 입력 해주면 더한 값을 출력하는 역할을 합니다. 이 때, a = 3, b = 4라는 명칭으로 해주면 입력 인자에 어떠한 값이 들어가는지 명확하게 알 수 있습니다. 물론 어떤 인자인지 명칭을 안해주고, 4,5 이렇게 순서대로 입력해주어도 함수는 작동합니다. 하지만, 함수의 인자가 많아질수록, 명칭을 표기해주는 것이 좋습니다. ​ 그리고 User-defined function 내부에서 정의된 변수는 Local variable로써 함수 밖에서 불러오면 오류가 납니다. ​ 반면에 위의 함수 같이 t의..
[Python] 기초 문법 (3) 조건문: if if문은 우리가 가장 많이 사용하는 조건 함수입니다. 예를 들어서, 만약 A라면 ~를 수행하고, 만약 B라면 ~을 수행하고~, ... , 앞서 말한 것이 모두 아니라면 ~을 수행한다. ​ 위의 예시의 경우, x를 2로 나눈 나머지가 0인 경우 짝수라는 표현을 출력하고, 그렇지 않다면 홀수라는 표현을 출력하도록 하는 조건문입니다. x가 17인 경우, 2로 나눈 나머지가 1이므로, 홀수라는 표현을 출력하게 되었습니다. ​ if문을 사용할때는 보시다시피, : 라는 표현을 조건 뒤에 추가하여야 합니다. 또한 조건문 아래의 실행 코드문은 앞에 Blocks를 추가하여, 들여쓰기로 표현되야 합니다. ​ 좀더 복잡한 조건문을 만들어보도록 하겠습니다. if문 안에 if문이, 2번이나 더 들어가 있는 조건문입니다. 60은..
[Python] 기초 문법 (2) Boolean Boolean 데이터 타입은 Python에서 굉장히 중요합니다. 이 후, Indexing이나 조건문에서 Boolean을 이용해서 다양한 것을 할 수 있습니다. ​ 1. Boolean True vs False 2. Boolean Expression Boolean은 다양한 조건에 의해서 표현될 수 있습니다. 3. Comparison Operators 비교 연산자로는 자주 사용되는 것으로 6개가 있습니다. == 같다 >= 크거나 같다 크다 < 작다 != 같지 않다 ​ 4. Logical Operators 논리 연산자로는 총 3개가 있습니다. AND, OR, NOT 위의 경우, 두 조건을 모두 만족하므로, True 값을 출력합니다. 위의 경우, 30은 7으로 나누었을 때, 0의 값을 가지지 않지만, 6으로 나누..
[Python] 기초 문법 (1) 1. Print: 문자열을 출력합니다. 2. Input: Input값을 실제로 입력해서 부여합니다. 빈칸에 Jake라는 이름을 넣어 보았습니다. 보시다 시피 name 변수에 Jake라는 문자열이 입력되었습니다. ​ 3. 숫자의 연산 이 처럼, Python은 계산기의 역할을 할 수 있습니다. ​ 4. 문자열의 연산 문자열의 덧셈의 경우, 이렇게 merge되는 것이 특징입니다. 반면에 문자열에 숫자를 자연수를 곱해줄 경우, 반복되서 merge가 됩니다. ​ 5. 데이터 타입 Numeric type - int: 정수 (5, -10, 222) - float: 실수 (4.2, 18.77, -222.22) ​ String type - str: 문자열 ('abc', 'Jake') ​ 일반적으로 Numeric type..
[Machine Learning] XGBoost (3) Optimization technique 본 포스팅은 STATQUEST 유튜브 채널을 Reference하여 만들었습니다. A. Approximate Greedy Algorithm Gradient boosting은 Tree의 규칙을 만들 때, Gain을 최대화 하는 방향으로 학습한다. 이 때, Greedy algorithm을 활용하는데, 이는 계산적으로 매우 복잡하다. 예를 들어서, 관측치가 1억개에, 변수가 100개라고 가정한다면, Greedy algorithm을 통해 약 1억의 100제곱 개의 규칙을 만들어 테스트해야 하는 것이다. 이러한 계산적 비용을 줄이기 위한 방법으로 XGBoost는 Approximate Greedy Algorithm을 채택하였음. Approximate Greedy Algorithm은 Tree 규칙을 Quantile로 ..
[Machine Learning] XGBoost (2) Methematical details 이번 포스팅은 이전 포스팅에서 공부했던, Similarity Score와 Output value의 식을 유도하겠다. ​ Gradient boosting에서 Output value를 찾기 위해 다음 식을 최소화하는 Gamma를 미분으로 찾았다. XGBoost는 Regularization term이 추가되어, 식이 약간 변형된다. Gradient boosting에서는 위를 Optimization 하기 위해서 에 대해서 미분을 하였다. 이 때, Classification에 대해서만, Second order Taylor Polynomial을 활용하였다. 하지만 XGBoost는 Regression 또한 Second order Taylor Polynomial를 활용한다.​ 표기의 용의성을 위해 다음과 같이 정의해보..