1. 머신러닝의 정의
최근에는 AI라고 하면 딥러닝을 떠올리거나 머신러닝과 동일시하는 개념으로 많이 사용하지만, 실제적으로 정의를 먼저 따지고 보면, 인공지능 AI라는 말은 인간을 모사해 구현해 내는 모든 행위들을 모두 AI라고 말을 할 수가 있다.
단순히 여러 데이터를 처리 및 분류 등을 행위부터 시작해 학습을 하여 예측하는 행위 까지 아우르는 말로 가장 광범위한 말이다.
따라서 머신러닝이라는 말을 포괄하는 말이다.
딥러닝은 이러한 머신러닝의 layer가 중첩이 되어 학습 효과를 극대화한 경우를 말하고 있다.
최근 들어 이러한 딥러닝이 각광받기 시작한 것은 하드웨어GPU가 이를 처리할 수 있는 병렬연산 능력이 반도체 미세공정을 통한 성능 향상 및 설계 능력 향상으로 인해 딥러닝으로 많은 일을 할 수 있었기 때문이다.
예를 들어 알파고의 성능을 이전의 하드웨어 컴퓨팅으로 구현해내려고 한다면, 그 학습기간은 몇 개월이 걸릴 수 있다.
이러한 시간을 들여 학습을 시켜도 그 결과를 장담할 수 없다보니 수 개월을 들여 학습을 시켜보고 다시 디버깅하여 학습을 시켜볼 수 도 없어, 아무도 이를 해보지 않았다.
하지만 이제는 GPU 병렬처리 연산을 통해서 며칠만에 그 결과를 확인할 수 있고, 컴퓨팅 처리 속도는 지금도 계속해서 발전해 나가고 있다.
다시 본론으로 돌아와서, 머신러닝은 이러한 딥러닝의 더 넓은 범위로 많은 데이터를 학습을 시켜 예측을 하는 부분이다.
이러한 머신러닝의 종류에는 3가지가 있다.
학습을 위한 데이터가 정답(라벨)이 있는 경우도 있고, 없는 경우도 있을 것이며, 있는 경우를 지도학습 (Supervised Learning) 없는 경우를 비지도 학습 (Unsupervised Learning), 결과에 보상을 주어 학습을 시키는 강화 학습 (Reinforcement Learning) 이 있다.
궁극적으로 정답이 없는 데이터셋에서 예측을 해나가는 부분이 실제로 많은 문제 해결 사례에 존재하는 케이스 이기도 하며, 강화학습의 경우 게임전략에 가장 많이 쓰이는 종류이기도 하다.
이러한 부분은 정확하게 구분을 하기 어려운 경우도 많이 있다. 그래서 반지도 학습 (Semi-supervised Learning)이라는 이야기를 하는 사람도 있고, 강화 학습은 지도 학습의 하나의 알고리즘으로 분류하는 사람도 있다.
이에 대한 자세한 내용은 다양한 머신러닝 알고리즘을 소개하면서 다루도록 하자.
파이썬을 통하여 먼저 머신러닝을 하기 위해서는 학습을 위한 데이터를 다루는 데이터 처리를 해야한다.
2. 데이터 전처리
머신러닝을 위한 데이터 전처리과정은 간단하다.
Data load => Data preprocessing => spilit train set and test set => normalization => training
흔히들 데이터를 받기 위해서 파이썬에서 어떻게 할까
바로 csv 파일을 읽거나 excel 파일을 읽는다.
이러한 데이터를 잘 처리할 수 있게 numpy 및 pandas를 사용하게 된다.
numpy는 numerical python으로 수치 해석을 위해 array 형태로 배열을 다루어 계산하는데 유용하며,
pandas의 경우 dataframe을 다루어 데이터 처리에 유용하다.
numpy와 pandas에 대한 자세한 내용은 아래를 참고하자.
https://vlsi-coding.tistory.com/163
머신러닝을 위한 학습 train set 및 test set으로 분류를 해야한다.
test set은 철저히 나중에 평가를 위해서 train set과는 분리하여 학습에 이용을 하면 안된다.
그렇기 때문에 초기 dataset에서 8:2정도로 train set 과 test set를 구분해주고(defualt는 7.5:2.5),. 전략에 따라서 validation set을 train set에서 2 정도 비율로 분리해서 학습중간 중간 평가해보기 위한 set으로 나누어 주기도 한다.
이러한 데이터는 범위가 다양하다.
성인 사람의 키는 100~200cm 정도가 보편적이고, 나이는 1~110살까지 다양할테고, 범위도 다르고 단위도 다르다.
이를 normalize하는 방식이 2가지가 있는데
첫번째는 평균이 0인 표준정규분포로 만드는 것이고, 두번째는 최대 최소값을 0~1 로 맞추어 모든 데이터가 0~1안에 들어오도록 하는 방법이다.
이러한 객체 함수를 통해서 normalization을 해주기 위해서 fit()함수를 호출하여, 평균 및 표준편차 ,최대-최소 와 같은 속성값을 뽑아 모델을 만들고, 이를 transform함수를 통해서 값들을 뽑아낼 수 있다.
'PYTHON > 기본 문법' 카테고리의 다른 글
파이썬을 이용한 파일 자동화 - (2) glob (7) | 2023.05.31 |
---|---|
파이썬을 이용한 파일 자동화 - (1) os 라이브러리 (1991) | 2023.05.31 |
numpy 기초 (0) | 2022.07.31 |
[PYTHON - 기본 문법] 1. 변수 (0) | 2020.10.11 |
[PYTHON - 기본 문법] 파이썬 ++ (0) | 2020.05.20 |
댓글