반응형

전체 147

[Python] str.split() 메서드

이번 포스팅에서는 str class에 있는 split()이라는 문자열 분리 메서드에 대해 알아보겠습니다. str.split() split() 메서드는 str class에서 사용할 수 있는 함수입니다. 호출 시 str.split() 혹은 str class로 생성된 instance.split()로 사용할 수 있습니다. 사용하게 되면 split() 메서드는 대상 문자열을 분리하여 list 형태로 반환합니다. 예를 들어 x = str.split('Hello python') print(x) 의 실행 결과는 아래와 같습니다. 'Hello python'이라는 str을 띄어쓰기를 기준으로 분리하여 item 2개짜리 list로 반환하였습니다. 위와 같이 class로 호출하는 방법 외에 instance로도 호출할 수 있는..

[Python] print() 함수

이번 포스팅에서는 화면에 문자열 혹은 숫자를 출력하는 print 함수에 대해 알아보겠습니다. print()에 대하여 먼저 print 함수가 어떻게 정의되는지 python docs에 나와있는 내용을 살펴봅시다. 주어진 객체(object)를 출력하며, sep, end, file, flush 등이 있다면 무조건 키워드로 입력하여야한다고 설명되어 있네요. sep는 구분자를 말하며, 입력하지 않을 시 기본값은 ' '으로 스페이스바와 같습니다. end는 주어진 객체를 print한 후 입력되는 문자이며, 기본값은 \n으로 enter와 같습니다. print() 를 활용하여 문자열 & 숫자 출력하기 파이썬에서 화면에 문자열 혹은 숫자를 출력하기 위해서는 print() 함수를 사용하면 됩니다. 예를 들어, print("안..

[머신러닝] 얀센의 부등식(Jansen's inequality)

이번 포스팅에서는 얀센의 부등식에 대해 알아보겠습니다. (출처: 선형대수와 통계학으로 배우는 머신러닝 with 파이썬, 장철원 지음) 얀센의 부등식(Jansen's inequality) 얀센의 부등식은 기댓값의 convex 함수와 convex 함수의 기댓값 사이에 성립하는 부등식입니다. 얀센의 부등식은 아래와 같이 나타냅니다. $$f(wx_1+(1-w)x_2) \leq wf(x_1)+(1-w)f(x_2)$$ 앞서 언급했던 함수 $f$가 컨벡스(convex)할 조건과 같습니다. 이를 좀 더 일반화한다면 아래와 같이 나타낼 수 있습니다. $$f(w_1x_1+...+w_kx_k) \leq w_1f(x_1)+...+w_kf(x_k)$$ 여기서 $x_1, ... x_k$는 함수 $f$의 정의역이며, $w_1, ...

[머신러닝] 컨벡스 함수(convex function)

이번 포스팅에서는 컨벡스 함수(convex function)에 대해 알아보겠습니다. (출처: 선형대수와 통계학으로 배우는 머신러닝 with 파이썬, 장철원 지음) 컨벡스 함수란? 컨벡스 함수란 만약 함수 $f$의 정의역이 컨벡스 셋(convex set)이고, 모든 데이터 포인트 $x_1, x_2, 0\le w \le 1$에 대하여 $$f(wx_1 + (1-w)x_2) \le wf(x_1)+(1-w)f(x_2) \tag{1}$$ 를 만족하는 함수 $f$를 컨벡스 함수라고 합니다. 해석하면 두 점 $(x_1,f(x_1))$, $(x_2,f(x_2))$ 사이의 선분이 함수 $f$의 그래프보다 위에 있어야 한다는 의미입니다. 위 부등식을 그림으로 표현하면 아래와 같습니다. 만약 식 (1)에서 등호가 없다면 st..

[머신러닝] 손실함수(loss function) (2) - 엔트로피(Entropy)

이번 포스팅에서는 entropy에 대해 알아보겠습니다. (출처: 선형대수와 통계학으로 배우는 머신러닝 with 파이썬, 장철원 지음) 엔트로피(Entropy) entropy는 정보이론에서 불확실성의 척도로 사용합니다. (저는 사실 entropy는 열역학할 때만 쓰는 개념인 줄 알았습니다.) 확률변수 $x$의 entropy는 아래와 같이 정의합니다. Entropy $$H(x) = -\sum_{i=1}^n P(x_i)\log P(x_i)$$ entropy가 높다는 것은 정보가 많고 확률이 낮다는 것을 의미합니다. entropy는 하나의 분포를 대상으로 하는 반면, cross entropy는 두 분포를 대상으로 합니다. Cross Entropy $$H_{p,q}(x) = -\sum_{i=1}^n P(x_i)\..

[머신러닝] 손실함수(loss function) (1) - L1, L2 손실함수

이번 포스팅에서는 손실함수에 대해 알아보겠습니다. (출처: 선형대수와 통계학으로 배우는 머신러닝 with 파이썬, 장철원 지음) 손실함수(loss function) 손실함수는 머신러닝을 통해 생성한 모형이 실제값과 얼마나 차이가 나는지 손실 정도를 수치로 나타낸 함수입니다. 손실함수에는 $L1$ 손실함수와 $L2$ 손실함수가 존재합니다. 그리고 손실함수와 비슷하게 비용함수라는 개념도 존재합니다만 엄밀하게 말하면 서로 다르지만 실제로는 구분없이 사용하기도 한답니다. $L1$ 손실함수 $L1$ 손실은 실제값과 예측값의 차이를 말하며 수식으로 아래와 같이 표현할 수 있습니다. $$\sum_{i=1}^n \left\vert y_{i,true} - y_{i,predict} \right\vert $$ $L1$ 손실..

[머신러닝] 그리드 서치(grid search)

이번 포스팅에서는 그리드 서치(grid search)에 대해 알아보겠습니다. (출처: 선형대수와 통계학으로 배우는 머신러닝 with 파이썬, 장철원 지음) 그리드 서치(grid search) 그리드 서치는 관심있는 매개변수들을 순차적으로 입력한 후에 가장 높은 성능을 보이는 하이퍼파라미터를 탐색하는 방법입니다. 쉽게 말해 가능한 모든 경우의 수를 따져서 맘에 드는 하이퍼파라미터를 고르는거죠. 예를 들어 k-최근접 이웃 알고리즘에 사용할 수 있는 k 값에는 여러 후보가 존재하고, 어떤 하이퍼파라미터 k가 높은 성능을 보일지는 직접 해보기 전엔 알 수가 없습니다. 모두 해보고 모형의 성능을 비교한 후 최적의 k를 선정해야하죠. k-최근접 이웃 알고리즘 (Python) 파이썬 예제를 통해 k-최근접 이웃 알고..

[머신러닝] 파이프라인(Pipeline)

이번 포스팅에서는 파이프라인(Pipeline)에 대해 알아보겠습니다. (출처: 선형대수와 통계학으로 배우는 머신러닝 with 파이썬, 장철원 지음) 파이프라인(Pipeline) 일반적으로 파이프라인은 생산라인에서 동시에 여러 공정 프로세스를 효율적으로 가능하게 하도록 하는 것을 말합니다. 머신러닝에서도 비슷하게 파이프라인은 모델을 가속, 재사용, 관리 및 배포하는 프로세스를 구현하고 표준화합니다. 파이프라인을 사용하면 데이터 전처리와 모델 학습, 예측까지 한번에 가능하여 코드도 간결해지는 장점이 있습니다. 파이프라인 적용 예제 (Python) 파이프라인 적용 전/후의 코드가 어떻게 바뀌는지 예제를 통해 알아보겠습니다. import pandas as pd import numpy as np from skle..

[머신러닝] 교차 검증(cross validation)

이번 포스팅에서는 교차 검증에 대해 알아보겠습니다. (출처: 선형대수와 통계학으로 배우는 머신러닝 with 파이썬, 장철원 지음) 교차 검증(cross validation)이란? 오버피팅과 언더피팅을 방지하고 적합한 모형을 추정하기 위해 모형의 성능을 검증하는 것을 교차검증(cross validation)이라고 합니다. 위 그림과 같이 최초에 Data가 주어져 이 데이터를 이용해 모형을 만든다고 해 봅시다. 그런데 전체 data set을 사용하여 모형을 생성하면 실제 data에 적용해보고 성능을 평가할 새로운 data가 없기 때문에 문제가 됩니다. 이 문제를 해결하기 위해 전체 data를 training data와 test data로 분할합니다. 이 경우 training data는 모형 생성을 위한 학습..

[머신러닝] 오버피팅과 언더피팅

이번 포스팅에서는 오버피팅(Overfitting)과 언더피팅(underfitting)에 대해 알아보겠습니다. (출처: 선형대수와 통계학으로 배우는 머신러닝 with 파이썬, 장철원 지음) 오버피팅(Overfitting)과 언더피팅(underfitting) 머신러닝 모형이 실제 모형에 얼마나 가깝게 모델링되었는지와 관계된 용어인 오버피팅과 언더피팅은 각각 특정 data set에 과도하게/과소하게 적합된 것을 말합니다. 실제 데이터 모형이 $n$ 차원식이라고 했을 때 수식으로 나타내면 아래와 같습니다. $$ y_i = w_nx^n+w_{n-1}x^{n-1}+...+w_1x+w_0$$ 오버피팅은 특정 데이터셋에 과도하게 적합된 것을 말하며, 식으로 나타내면 아래와 같습니다. $$y_i = w_{n+m}x^{n..

반응형