*일단 이 글을 시작함에 앞서 저는 Matlab 신봉자나 무용론자가 아님을 미리 밝힙니다.
Matlab의 용도
보통 공대에서만 사용하는 것으로 알고 있습니다. 과거에 Python과 R이 성장하기 전, 통계는 SPSS나 SAS 등이 정석이었고, 공학 분야에서는 Matlab이 정석처럼 사용됐습니다. 요새에는 Python이 워낙 잘 발달했지만, 예전에는 Python에 없는 Matlab의 기능들이 꽤 많았습니다. 지금은 어느순간 반대가 되어버린 것 같지만요. 하지만 Matlab은 Hardware In the Loop Simulation 등 다양한 기능을 제공하고 파이썬보다 좀더 공학에 초점이 맞춰져있는 기능들이 많습니다. 그래서 아직도 많은 공학 분야에서는 Matlab을 사용합니다.
굳이 Matlab으로 머신러닝을..?
저도 굳이 Matlab으로 머신러닝은 잘 하지 않습니다..ㅎㅎㅎ Python이 훨씬 참고할 코드도 많고 다양한 방식을 시도해볼 수 있으니까요. (새로운 것들을 배우고 싶지 않은 공학자들의 관성이라고도 생각하고, 공학자들이 자신의 시스템을 크게 고치지 않고 머신러닝을 쓰게 해주는 방법이라고도 생각합니다.) 최신 머신러닝 기법들은 파이썬이 훨씬 많은 예제를 제공하고 속도도 압도적으로 빠르기 때문에 머신러닝 개발자가 목표인 사람들에게 Matlab은 권하지 않습니다. 하지만 엔지니어들과 함께 프로그램을 만들어 제한적인 용도로 필요하거나, 머신러닝을 깊게 알고 싶지 않고 구현만 목적인 경우 Matlab이 훨씬 직관적이고 빠를 수 있습니다. 저 또한 기계공학도였기 때문에 처음에는 익숙한 언어를 따라 Matlab으로 머신러닝에 입문했습니다.
Matlab App
개념적으로 보자면, Matlab에서 어떤 기능을 구현하고 싶을 때, 1. Matlab이 제공하는 함수, 2. 사용자들이 만들어 공유한 함수(Matlab Exchange), 3. App 의 세 가지 방식으로 탐색해볼 수 있습니다. 정 원하는 기능이 없으면 자신이 만드는 방법도 있겠지만 그러기엔 Matlab을 돈주고 산 의미가 너무 없는 듯한 느낌이 듭니다.
기본적으로 Matlab이 제공하는 함수는 검색해보면 나옵니다. 공학 교과서에 나올법한 거의 모든 것은 Matlab이 구현해놓았거나, 더 좋은 방식으로 구현이 되어있기 때문에 굳이 손으로 코딩할 필요가 없습니다. 그리고 간혹 새로운 알고리즘이 Matlab에 추가되는 속도가 느릴 때, Matlab 사용자들이 스스로 함수를 만들어서 공유하는 경우가 있습니다. 그런 경우 Matlab 홈페이지에서 검색했을 때 Matlab Exchange 페이지로 넘어가면서 사용자들이 많들어놓은 코드를 확인해볼 수 있습니다.
1.과 2.의 방식은 기본적으로 programatic한 방법입니다. 코드를 타이핑하고 타이핑한 코드를 실행하는 방식입니다. 그런데 3.의 app을 사용하면 코딩을 전혀 하지 않고도 머신러닝 모델을 구현할 수 있습니다.
Matlab App의 장점
: 1. 코딩이 필요 없다, 머신러닝에 대한 지식이 거의 없어도 쉽게 구현할 수 있다.
Matlab 앱도 한두푼 하는 것이 아니기 때문에 이정도 편의성이라도 없으면 쓰는 이유가 없..
2. 한글로 되어있다. Document를 영어로 읽지 않아도 된다.
Matlab App의 단점
: Python에 비해서도, Matlab 자체 함수에 비해서도 사용할 수 있는 모델과 기능이 제한적이다.
머신러닝에 필요한 Matlab app
다음과 같이 요약할 수 있습니다.
아마 Matlab을 만든 Mathworks 사에서도 의도했겠지만, 이름이 한글화가 되어있는 app이 제가 주로 사용했던 앱이고, 여러분들이 사용할 확률이 높습니다. 단순 신경망을 통해서 구현해놓은 파란색 앱들은 성능이 구립니다. 쌓을 수 있는 신경망 계층의 수가 매우 작거나 자주 안쓰이는 알고리즘이어서 그렇습니다.
만약 데이터를 보았을 때 한 개의 독립 변수(x)와 한 개의 종속변수(y)이고 어떤 곡선을 띌 지 대략적으로 예상이 된다면 곡선피팅기를 쓰시면 됩니다. 예를 들어 다음과 같은 상황입니다.
데이터가 왠지 exponenetial이나 이차함수 정도로 피팅될 것 같습니다. 이런 경우 곡선피팅기를 씁니다. 보통 이런 경우를 머신러닝이라고 부르지는 않지만, 머신러닝과의 구분을 위해서 포함하였습니다.
이외에 대부분 머신러닝이 필요한 상황이면 목적에 맞게 선택할 수 있습니다. 다음 글에서는 예시데이터들을 활용하여 Matlab app 사용방법들을 소개해보려고 합니다.
'공학자를 위한 머신러닝 > Matlab을 사용한 머신러닝' 카테고리의 다른 글
MML-06 Classification Learner (분류 학습기) - 2 (0) | 2024.11.12 |
---|---|
MML-05 Classification Learner (분류학습기) (4) | 2024.11.11 |
MML-04 Regression Learner (회귀학습기) -2 (0) | 2024.11.10 |
MML-03 Regression Learner (회귀학습기) (1) | 2024.11.09 |
MML-02 Matlab Curve fitting (곡선피팅기) (1) | 2024.11.05 |