반응형

전체 글 150

[머신러닝] Gradient Descent (with Python)

이번 포스팅에서는 최적화 문제에서 널리 쓰이는 방법 중 하나인 Gradient Descent에 대해 알아봅시다.  Gradient Descent?Gradient Descent는 머신러닝과 최적화 문제에서 널리 사용되는 방법 중 하나로, 주어진 함수의 최소값을 찾기 위해 사용됩니다.  이 방법은 이름 그대로 cost function의 기울기가 낮은 방향으로 반복적으로 이동하며 최소값을 찾아가는 방법입니다. 기본적으로 최소화하고자 하는 목적 함수(cost function) $J(\theta)$와 입력변수 $\theta$, 그리고 목적함수의 기울기인 $\triangledown J(\theta)$를 필요로 합니다.   동작 알고리즘Gradient Descent의 동작 알고리즘은 아래와 같이 이루어집니다. 1. ..

[동역학] 오일러 각(Euler Angle)을 Python으로 구현해보기

이번 포스팅에서는 오일러 각(Euler Angle)을 Python으로 구현해보겠습니다.  오일러 각(Euler Angle) 기본기본적인 내용은 아래 글에서 다룬 바 있습니다. 2020.11.19 - [공학/동역학] - [동역학] 오일러 각(Euler angle) [동역학] 오일러 각(Euler angle)이번 포스팅에서는 오일러 각에 대해 알아보도록 합시다. 오일러 각(Euler angle) 오일러 각은 흔히 오일러 앵글이라고들 많이 부르는데, 3차원 공간에서 강체가 놓인 자세를 표현하기 위해 나타내study2give.tistory.com 다시 한번 간단하게 설명하자면, 3차원 공간에서 강체가 놓인 자세를 표현하기 위해 나타내는 3개의 각도를 말하며, 3차원 공간에서는 각 축방향으로 회전하는 순서에 따라..

공학/동역학 2024.07.23

[공학일반] Resampling

이번 포스팅에서는 Resampling의 개념과 예시에 대해 알아보겠습니다.  Resampling이란?Resampling은 원본 dataset의 sample을 다시 생성하는 것을 말하며, 주로 시계열 데이터에서 시간 간격을 재조정하기 위해 사용됩니다.   Resampling의 유형Resampling은 크게 두가지로 나눌 수 있는데요. 1. DownSampling   데이터의 빈도를 낮추는 방법을 말합니다.   예를 들어 초단위 데이터를 분단위로 변환한다거나,   0.01초 간격의 데이터를 0.1초 간격으로 변환하는 등의 방법이 있습니다. 2. UpSampling   이름에서 알 수 있듯이 위 방법과는 반대로 데이터의 빈도를 높이는 방법입니다.  위 두 방법에 대해 예시로 알아보겠습니다.   DownSamp..

공학/일반 2024.06.20

[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-최근접 이웃 알고..

반응형