Technology/AI

[혼공머신]Ch 1. 나의 첫 머신러닝

문베디드 2022. 10. 31. 22:56

1-1 인공지능과 머신러닝 딥러닝

머신러닝이란

머신러닝은 규칙을 일일이 프로그래밍하지 않아도 자동으로 데이터에서 규칙을 학습하는 알고리즘을 연구하는 분야 사이킷 럿 Scikit-learn은 컴퓨터 과학분야의 대표적인 머신러닝 라이브러리로 검증되고 안정된 머신러닝 알고리즘을 포함하고 있습니다. 머신러닝 알고리즘을 활용하여 어떤 서비스를 만들고 싶다면 사용하기 용이합니다.

딥러닝이란

딥러닝은 머신러닝 알고리즘 중에 인공 신경망(artificial neural network)을 기반으로 한 방법들을 통칭합니다. 텐서플로TensorFlow는 구글이 2015년 공개 파이토치PyTorch는 페이스북이 2018년에 공개한 오픈소스 딥러닝 라이브러리입니다. 두 라이브러리는 인공 신경망을 전문으로 다루며 사용하기 쉬운 파이썬 API를 제공합니다.

1-2 코랩Colab과 주피터 노트북 Jupyter Notebook

코랩 Colaboratory은 구글에서 제공하는 클라우드 기반 파이썬 실행환경입니다. 주요한 특징으로는 셀 Cell 구조 편집 환경으로 내가 진행 중인 프로젝트의 설명, 코드, 실행결과를 한 문서에서 모두 볼 수 있는 사용자 인터페이스를 제공합니다. 코랩에서는 문서를 파일 단위로 관리하고 코랩 노트북, 짧게 노트북이라고 부릅니다. 노트북 내에서 설명을 작성하는 셀은 텍스트 셀, 코드를 작성하는 부분을 코드 셀이라고 부르며 실행결과는 코드 셀을 실행시키면 코드 셀 바로 밑에 자동으로 생성됩니다. 코랩과 비슷한 프로그래밍 환경으로 주피터 노트북이 있으며 코랩과 달리 PC에 설치하여 인터넷 연결 없이 사용 가능합니다.

1-3 마켓과 머신러닝

생선 분류 프로그램을 만든다고 생각했을 때 머신러닝 알고리즘을 활용할 수 있습니다. 여기서는 k-최근접 이웃 k-Nearest Neighbors  알고리즘을 사용해보겠습니다.

데이터셋 원본: http://www.kaggle.com/aungpyaeap/fish-market 생선 길이&무게 데이터셋

예제: 도미 http://bit.ly/bream_list, 빙어 http://bit.ly/smelt_list

생선 분류를 위해 생선의 길이와 무게를 데이터셋으로 사용합니다. 이러한 데이터 특징을 특성 feature라고 한다. 이러한 데이터셋을 숫자로 그냥 놓고 보는 것보다 x, y축으로 표현된 산점도 scatter plot을 이용해 직관적으로 볼 수 있습니다. 그림 1을 보겠습니다. 

그림1. 도미와 빙어 산점도 그래프

그래프에서 파란 점은 도미 주황점은 빙어입니다. 도미를 보면 길이가 길어질수록 무게도 함께 증가하여  선형적linear이라고 할 수 있습니다. 빙어도 빙어만 점을 따로 찍으면 길이와 무게가 비례함을 더 직관적으로 볼 수 있습니다. 그럼 이런 데이터가 있을 때 머신러닝 알고리즘을 어떻게 쓰는지 알아보겠습니다.

 

사이킷런 scikit-learn에서 제공하는 KNeighborsClassifier 클래스를 사용하여 k-최근접 이웃 k-Nearest Neighbor 알고리즘으로 도미와 빙어 데이터를 구분해볼 수 있습니다. 사이킷런을 사용하려면 2차원 리스트를 만들어야 합니다. 그리고 생성한 데이터로 머신러닝 알고리즘을 학습시키는데 이를 훈련 training이라고 합니다. 그림 2를 한번 볼까요?

그림2. 샘플데이터 예측결과

자세히 보시면 초록색 삼각형이 하나 추가된 것이 보이나요? 길이 30에 무게 600짜리 물고기 샘플 데이터를 추가한 것입니다. k-최근접 이웃 k-Nearest Neighbor 알고리즘은 주변 데이터를 기준으로 입력 데이터를 판단하는 알고리즘입니다.  그림 2에서 추가된 샘플데이터는 주변에 도미가 많기 때문에 도미로 판단될 것입니다. 사이킷런에서 제공하는  KNeighborsClassifier 클래스는 기본적으로  5개의 이웃을 참고합니다. KNeighborsClassifier(n_neighbors=49)와 같이 n_nighbors매개변수로 참고하는 이웃의 수를 바꿀 수 있습니다. 하지만 너무 많은 근접 데이터를 참고할 경우 정확도가 낮아질 수 있습니다.

 

참고

유튜브 강의

 

예제 코드: http://bit.ly/hg-01-3 

 

1-3. 마켓과 머신러닝

Run, share, and edit Python notebooks

colab.research.google.com

특성 feature

데이터를 표현하는 하나의 성질. 생선 예제에서는 무게와 길이가 특성이다.

k-최근접 이웃 k-Nearest Neighbor

입력된 데이터에 대한 답을 구할 때 기존에 있는 데이터를 보고 입력된 데이터 주변에서 다수를 차지하는 것을 정답으로 사용한다. 규칙을 찾아내는 것이 아니라 입력된 데이터를 모두 갖고 있으면서 새로운 데이터를 판단기 때문에 데이터가 많은 경우 메모리 및 컴퓨팅 성능을 많이 필요로 하는 단점이 있다.

훈련 training

머신러닝 알고리즘을 데이터로 학습시키는 행위. 사이킷런에서는 fit() 메서드로 수행한다.

모델 model

머신러닝 알고리즘을 프로그램으로 구현했거나 구체화하여 표현한 것

정확도 accuracy

머신러닝 알고리즘을 평가했을 때 얼마나 정확하게 정답을 맞혔는지 정도

matplotlib scatter() 함수

산점도를 그리는 함수로 x, y축 값과 색 지정 값을 매개변수로 받는다. 색상 코드는 b(파랑), g(초록), r(빨강), c(시안), m(마젠타), y(노랑), k(검정), w(흰색)이 있으며 이 외에도 #1f77b4와 같은 RGB 16진수로 입력 가능하다. 참고: https://bit.ly/matplotlib_prop_cycle, https://bit.ly/matplotlib_marker 

 

https://matplotlib.org/api/markers_api.html

 

matplotlib.org

 

'Technology > AI' 카테고리의 다른 글

왜 AI, 8년차 임베디드 개발자의 앞날 고민  (2) 2022.10.23
심교훈 1편  (3) 2020.11.18