tak's data blog

푸리에 변환(fourier transform) 본문

이것저것

푸리에 변환(fourier transform)

hyuntaek 2023. 2. 25. 17:36
반응형
SMALL

 

신호 데이터는 공대 학생들만 공부하고 활용하는 것으로 알고 있었습니다. 하지만 유저들의 행동 데이터에 푸리에 변환으로 주기성을 가지는 함수들의 합으로 분해하 특징을 지을 수 있다면 어뷰징을 쉽게 탐지할 수 있을 것이다. 라는 글을 보고 푸리에 변환에 관심을 가지게 되었습니다. 그래서 이를 공부해 직접 수집한 데이터로 변환을 해보는 과정을 가지도록 하겠습니다. 

 

출처: https://www.youtube.com/watch?v=60cgbKX0fmE&list=PLEGnaIwMq6ozCqLEM_rEGxvZqqDi63omB&index=3 

 

순서는 푸리에 변환에 대한 설명과 다음 게시물에는 관련 분석 결과를 제시하도록 하겠습니다.

 

 

푸리에 변환

푸리에 변환이란 임의의 입력 신호를 다양한 주파수를 갖는 주기함수들의 합으로 분해하여 표현하는 것.

(여러가지 sin, cos 함수들의 합으로 표현하는 것)

 

푸리에 변환 주기성 데이터, 함수의 강력한 도구(시간 영역이 아닌 주파수 영역으로 바라봄)

-> 주기성 데이터가 보이게 됨.

만약 비주기성 데이터라면 노이즈가 많거나 유용한 정보를 많이 얻지 못할 수 있음.

 

Time/Cycle = period(주기)  |  Cycle/ 1s = Hz

어떤 주기는 얼마나 빨리 일어나는지 시간을 물어보는 것, 주파수 영역에서는 시간을 놓고 1초동안 Cycle이 몇 번씩 일어나는가?

ex) 생과일 주스에서 푸리에 변환을 활용하면 어떤 과일이 얼마만큼 포함되어 있는지를 알려주는 것

 

 

 

나아가 푸리에 변환을 이해하기 위해서는 다음 4가지의 정의를 이해해야 합니다.

 

1) 푸리에 급수

cos, sin을 무한대로 많이 섞어서 쓰면 어떤 함수를 표현할 수 있다. 그것이 바로 주기성 함수이다.

 

앞의 상수는 직류(일자임) / 뒤에 식들은 교류(주기성을 가짐) 

 

앞의 상수는 진동이 시작되는 시점, a0/2(직류)는 단지 주기성 함수를 위아래로 움직이는 역할

직선적인 그래프가 있을 때 sin의 n값을 증가시키면 점차 원본 그래프에 접근하게 된다. 

 

noise로 보이는 그래프도 푸리에 급수로는 가능하다. 대신 위상을 쓸 때 랜덤하게 써야 한다.

 

결론: 푸리에 급수가 표현하려는 것은 모든 주기성 함수를 sin과 cos의 급수로 표현할수 있다.

++ 어떤 함수를 푸리에로 표현하고 싶다고 할 때, sin, cos을 많이 쓰면 쓸수록 좋은데 문제는 계수를 찾아야 함. 이 때 계수를 찾는 방법이 푸리에 변환이다.

 

 

2) 오일러 공식

푸리에 변환의 공식에는 오일러 공식이 들어가 있음. cos, sin을 하나로 나타내준 것임(지수함수를 통해)

- sin이나 cos함수에서 위상을 더해주거나 빼줘야 그래프를 좌우로 이동해 표현할 수 있음.

- 또한 위상이 필요하지 않는 경우는 sin + cos으로 표현이 가능함.

- 오일러 함수를 써주면 된다. 

 

위의 방법 중 오일러 함수가 가장 심플하다. 

진폭 + 주파수 + 위상으로 어떤 주기성함수도 표현할 수 있다.

그리고 지수함 슈의 특성으로 미, 적분 시 식이 간단해지므로 복잡한 수식에서 이용하기 좋음.

 

ex) 2차원 평면에서 x,y축 벡터 2개를 가지고 모든 점을 설명이 가능하듯이, 복소수 평면에서 설명한다면 sin,cos 2개로 모든 점을 표현할 수 있다.(오일러 함수는 이 2가지 sin,cos을 합쳐서 1개로 표현해 줌)

 

결론: sin, cos 함수가 섞여있는 복잡한 수식을 오일러 공식(지수함수)으로  간단화 할 수 있다.

 

 

3) 적분

적분은 함수가 있다면 함수의 면적을 구하는 것.

(적분의 장점은 굴곡이 있는 것을 쉽게 구할 수 있음)

보통 그래프의 면적을 구할 때 작은 막대그래프를 여러개 합쳐서 그 막대들의 합을 면적으로 나타낸다. 즉 이를, 리만 합이라고 한다. 위의 식과 같이 dx(막대 사이즈)가 작아지면 작아질수록 결과값이 정확해진다. 즉, dx -> 0으로 가면 갈수록 그 넓이가 같아진다. (리만 적분)

 

푸리에 변환에서 보면 데이터가 복잡하고 굴곡이 심해도 리만 적분을 통해 어느정도 정확하게 적분을 해낼 수 있다.

 

결론: 잡음과 굴곡이 심한 신호 데이터래도 리만 합을 통해 어느정도 정확하게 적분해낼 수 있다.

 

 

4) 내적과 직교성

내적을 구한다는 것은 연관성을 찾는 것.

두 벡터의 내적을 구할 때, 수학적 수식을 사용. (90도를 이루는 두 벡터의 내적은 0이다.(연관성이 없음))

 

두 벡터의 내적이 0이라는 것은 좌표평면 상에서 어떠한 벡터도 설명할 수 있다.

 

벡터의 내적과 마찬가지로 두 함수의 내적을 활용한 식을 보면 위와 같다. 즉 적분의 결과값이 0이라는 것은 cos, sin 두 함수의 연관성은 0이다.

 

두 함수의 내적이 0이라는 것의 중요성은 다음과 같다. 앞에서 기저벡터가 연관성이 없기 때문에 모든 좌표평면의 벡터를 설명할 수 있다 했음. 마찬가지로 주기성 함수를 설명할 때 sin과 cos의 내적이 0, 서로 연관성이 없기 때문에 어떠한 주기성 함수도 설명할 수 있다는 것.

 

결론: cos, sin은 서로 연관성이 없기 때문(내적이 0이므로) 어떤 주기성 함수도 설명할 수 있다. 즉, 앞선 푸리에 급수가 설명한 sin,cos함수로 어떤 주기성 함수도 설명할 수 있다.를 의미

 

 

 

푸리에 변환 - 원리 & 예시

위의 그림 처럼 F1이라는 함수가 푸리에 변환이 되었고, 1Hz일 때 sin함수와 곱해졌을 때의 적분 값이 0이므로 연관성이 없다고 해석할 수 있다.

 

마찬가지로 Hz의 값을 계속 늘려서 값을 도출하는 것.

 

여기까지 푸리에 변환이었습니다.

 

다음 시간에는 이를 활용한 분석 결과를 제시하도록 하겠습니다.

반응형
LIST

'이것저것' 카테고리의 다른 글

RFM 분석  (0) 2023.07.03
효율적인 코드 작성(고객별 누적 주문횟수 계산)  (0) 2022.08.02
데이터프레임 행간의 계산  (0) 2022.07.16