티스토리 뷰



약 4개월 정도 공동연구를 진행했었던 토픽이 잘 마무리 되었다. 공학 문제를 해결하기 위하여 인공지능을 적용했었는데, 결과가 잘 나왔고 논문 작성도 마무리가 되어서 곧 투고 예정이다.

Machine-learning을 활용한 surrogate modeling이 주제이고, 내가 가지고 있는 도메인 지식과 현상학적인 발견을 머신러닝을 통해서 잘 구현했고, 이를 통해 새롭게 결과를 도출하였었다.

결과를 정리하는 과정하고, 파이썬 코드를 복귀하면서 이를 기록해두려고 한다. 파이썬을 다룬지 아직 반년도 되지 않아, 굉장히 기초적인 것 밖에 모른다.

내가 사용하였던 패키지 위주 및 유용했던 명령어를 정리해본다.

 

[1] 패키지 불러오기 & 엑셀 불러오기

 [1.1] import pandas as pd

 - pandas: Python Data Analysis Library 이다.

 - https://pandas.pydata.org/docs/pandas.pdf

 [1.2] raw_df = pd.read_csv("엑셀파일이름.csv", encoding='cp949')

 - encoding = 'cp949'는 인코딩 방식 중 하나이다. 참고: https://ebbnflow.tistory.com/285
 - 데이터를 변환할 때 문자가 깨질 때 처리할 수 있다.
 - Tip: 모든 파일이름과 파일 경로를 영어로하고 띄어쓰기 대신에 언더바를 활용하는 것을 추천한다.

 [1.3] import xxx import *

 - *표시는 모든 것을 가져오라는 뜻이다.

 - https://docs.python.org/2/tutorial/modules.html

 

[2] Pycaret 패키지

 - 머신러닝 패키지이다. 굉장히 쉽게 쓸 수 있도록 구성되어있다.

 - https://www.youtube.com/channel/UCxA1YTYJ9BEeo50lxyI_B3g/videos

 - https://pycaret.org/

 [2.1] 기본적인 명령어와 관련된 메뉴얼

 - https://pycaret.readthedocs.io/en/latest/api/classification.html

 

 [2.2] Setup

 - 한 마디로; 파이캐럿을 통해서 모델을 학습시키는 명령어라고 보면 된다.

 - Setup안에 들어가있는 여러가지 function들은 여기에 잘 정리 되어있음 (https://pycaret.org/setup/)

 - Session ID_123: A random number is created and used for later reproducibility. If you don’t initialize the variable the function automatically assigns 123 as the session id. (여담: 세션에 관해서 123이 무슨 의미인지 한참 찾아보았는데, 큰 의미 없다는 것을 알았다.)

 

 [2.3] Compare

 - Setup을 돌리고 나면; 머신러닝 기법을 모두 적용해서 결과를 도출해낸다.

 - compare 명령어를 활용해서 모델별 성능을 확인할 수 있다.

 - https://pycaret.org/compare-models/

 - 분류문제의 경우: accuracy, AUC, Recall, Precision, F1, Kappa, MCC value가 제공된다.

 - 회귀문제의 경우: MAE, MSE, RSME, R2, RMSEL, MAPE value가 제공된다.

 - 매뉴얼에 따르면 성능이 좋은 순서대로 나열하는 기준으로써 default 옵션은 accuracy (분류문제), R2 (회귀문제)라고 한다.

 - 예측 성능이 좋은 모델을 몇개 고를 것인지, 어떤 지표로써 랭킹을 매길 것인지 고를 수 있다.

 

[2.4] Create Model

 - 모델 성능을 학인 한 뒤, 내가 만들고 싶은 모델을 선택해서 만들면 된다.

 - https://pycaret.org/create-model/

 - 큰 카테고리로써 네 가지: Regression / Clustering / Anomaly Detection / Natual Language Processing 안에서 이용가능한 모델의 패키지를 고를 수 있다.

 - 약어에 대한 명령어는 위 링크 참조

 

[2.5] Tune

 - 모델을 하이퍼파라미터로 자동으로 튜닝시켜준다.

 - 하이퍼파라미터란? 기계를 학습시켜주는 데에 필요한 파라미터를 의미한다.

 - 하이퍼파라미터의 예시: 학습률, 손실함수, 미니배치 크기, 에포크 수 가중치 초기화, 히든 레이어 수, k-NN의 k 값 등

 - 즉, 사용자가 직접 세팅해야 하는 값들이 전부 다 하이퍼 파라미터라고 보면되고, 하이퍼파라미터는 문제마다 다르기 때문에 휴리스틱한 방법 (= 사용자의 감)에 의해서 많이 결정된다.

 - 참고) 파라미터 vs 하이퍼파라미터 => 파라미터는 기계를 학습시키는데 필요한 변수이다. 즉, 데이터의 특성과 본질적으로 연결되어있는 것들이 파라미터이다. 사용자가 조정할 수 있는 값이 아니다.

 - Mchine learning mastery에서 기술하고 있는 Parameter와 Hyper parameter에 대한 정의 및 특성을 인용했다. (참고 블로그: https://bkshin.tistory.com/entry/%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-13-%ED%8C%8C%EB%9D%BC%EB%AF%B8%ED%84%B0Parameter%EC%99%80-%ED%95%98%EC%9D%B4%ED%8D%BC-%ED%8C%8C%EB%9D%BC%EB%AF%B8%ED%84%B0Hyper-parameter)

 

A model parameter is a configuration variable that is internal to the model and whose value can be estimated from data.

- They are required by the model when making predictions.
- They values define the skill of the model on your problem.
- They are estimated or learned from data.
- They are often not set manually by the practitioner.
- They are often saved as part of the learned model.

 

A model hyperparameter is a configuration that is external to the model and whose value cannot be estimated from data.

- They are often used in processes to help estimate model parameters.
- They are often specified by the practitioner.
- They can often be set using heuristics.
- They are often tuned for a given predictive modeling problem.

 

 - Pycaret은 이것을 자동으로 튜닝시켜 주는 패키지라고 보면된다.

 - https://pycaret.org/tune-model/

 - 미세 조정 과정이기 때문에, 당연히 수행하게 되면 정합도가 개선될 것이다.

 

2탄에서 계속.