클라이언트/ 서버/ 엔지니어 " 게임 개발자"를 향한 매일의 공부일지

머신러닝의 이해 1 - 머신러닝의 개념과 파이썬 머신러닝 생태계를 구성하는 주요 패키지 본문

인공지능/머신러닝

머신러닝의 이해 1 - 머신러닝의 개념과 파이썬 머신러닝 생태계를 구성하는 주요 패키지

huenuri 2024. 9. 9. 17:30

머신러닝 그동안 지루하고 재미없다는 이유로 피했는데 인공지능 사관학교에서 공부하는 이상 머신러닝은 피할 수 없는 것 같다. 이제 오늘 오후에 공부할 시간도 1시간 20분 정도 남아있다. 집에 갈 시간이 가까워질수록 빨리 끝났으면 하는 마음이 커진다.

그래도 남은 시간 끝까지 열심히 공부해보자. 책의 첫 장을 펼치며 읽어보았는데 생각했던 것보다 별로 어렵지 않았다. 4만원이나 되는 책값을 아끼지 말고 잘 활용해야지!


 

 

 

1. 머신러닝의 개념

머신러닝(Machine Learnig)의 개념은 일반적으로 애플리케이션을 수정하지 않고도 데이터를 기반으로 패턴을 학습하고 결과를 예측하는 알고리즘 기법을 통칭한다. 현실 세계의 매우 복잡한 조건으로 인해 기존의 소프트웨어 코드만으로는 해결하기 어려웠던 많은 문제점들을 머신러닝을 이횽해 해결해 나가고 있다.

업무적으로 박잡한 조건/규칙들이 다양한 형태로 결합하고 시시각각 변하면서 도저히 소프트웨어 코드로 로직을 구성하여 이들을 관통하는 일정한 패턴을 찾기 어려운 경우에 머신러닝은 훌륭한 솔루션을 제공한다.

 

머신러닝은 데이터를 기반으로 숨겨진 패턴을 인지해 해결한다. 머신러닝 알고리즘은 데이터를 기반으로 통계적인 신뢰도를 강화하고 예측 오류를 최소화하기 위해 다양한 수학적 기법을 적용해 데이터 내의 패턴을 스스로 인지하고 신뢰도 있는 예측 결과를 도출해낸다.

머신러닝은 데이터를 관통하는 패턴을 학습하고, 이에 기반한 예측을 수행하면서 데이터 분석 여역에 새로운 혁신을 가져왔다. 데이터 분석 영역은 재빠르게 머신러닝 기반의 예측 분석으로 재편되고 있다.

 

머신러닝은 데이터마이닝, 영상 인식, 음성 인식, 자연어 처리에서 개발자가 데이터나 업무 로직의 특성을 직접 감안한 프로그램을 만들 경우 난이도와 개발 복잡도가 너무 높아질 수밖에 없는 분야에서 급속한 발전을 이루고 있다.


 

 

머신러닝의 분류

머신러닝은 지도학습과 비지도학습, 강화학습으로 나뉜다. 지도학습의 대표적인 머신러닝은 분류와 회귀로 나눌 수 있다.

 

지도학습

- 분류
- 회귀
- 추천 시스템
- 시각/ 음성 감지/ 인지
- 텍스트 분석, NLP

 

비지도학습

- 클러스터링
- 차원 축소
- 강화학습

 


 

 

 

데이터 전쟁

데이터와 머신러닝 알고리즘 모두 머신러닝에서 중요한 요소이다. 머신러닝의 가장 큰 단점은 데이터에 매우 의존적이라는 것이다. 좋은 품질의 데이터를 갖추지 못한다면 머신러닝의 수행 결과도 좋을 수 없다. 특정 경우에는 개발자가 직접 만든 코드보다 정확도가 더 떨어질 수 있다.

다양하고 광대한 데이터를 기반으로 만들어진 머신러닝 모델은 더 좋은 품질을 약속할 수 있다. 앞으로 많은 회사의 경쟁력은 어떠한 품질의 데이터로 만든 머신러닝 모델이냐에 따라 결정될 수 있다.


 

 

 

파이썬과 R 기반의 머신러닝 비교

R은 통계 전용 프로그램 언어이다. 반면 파이썬은 다양한 영역에서 사용되는 개발 전문 프로그램 언어이다. 파이썬은 소리없이 프로그래밍 세계를 점령하고 있는 언어이다.

 

  • 쉽고 뛰어난 개발 생산성으로 전 세계 개발자들이 파이썬을 선호한다.
  • 오픈 소스 계열의 전폭적인 지원을 받고 있으며 많은 라이브러리로 인해 개발 시 높은 생산성을 보장해준다.
  • 인터프리터의 특성상 속도는 느리지만 대신에 뛰어난 확장성, 유연성, 호완성으로 인해 서버, 네트워크, 시스템, IOT, 심지어 데스크톱까지 다양한 영역에서 사용되고 있다.
  • 머신러닝 애플리케이션과 결합한 다양한 애플리케이션 개발이 가능하다.


 

 

 

2. 파이썬 머신러닝 생태계를 구성하는 주요 패키지

파이썬 기반의 머신러닝을 익히기 위해 필요한 패키지는 일반적으로 다음과 같다.

 

  • 머신러닝 패키지 : 영상, 음성, 언어 등의 비정형 데이터 분석에서 딥러닝의 뛰어난 활약으로 텐서플로, 케라스 등의 전문 딥러닝 라이브러리가 각광받고 있지만, 사이킷런의 경우 여전히 데이터 마이닝 기반의 머신러닝에서 독보적인 위치를 차지하고 있다.
  • 행렬/선형대수/ 통계 패키지 : 머신러닝의 이론적 백그라운드는 선형대수와 통계로 이루어져 있다. 파이썬의 대표적인 행렬과 선형대수를 다루는 패키지는 넘파이이다. 많은 머신러닝 패키지가 넘파이 기반으로 돼 있다. 넘파이와 더불어 사이파이는 자연과학과 통계를 위한 다양한 패키지를 가지고 있다.
  • 데이터 핸들링 : 판다스는 파이썬 세계의 대표적인 데이터 처리 패키지이다. 넘파이는 행렬 기반의 데이터 처리에 특화되어 있어 일반적인 데이터 처리에는 부족한 부분이 많다. 판다스는 2차원 데이터 처리에 특화되어 있으며 남파이보다 훨씬 편리하게 데이터 처리를 할 수 있는 많은 기능을 제공한다.
  • 시각화 : 파이썬의 대표적인 시각화 패키지는 맷플롯립이다. 맷플롯립은 파이썬 기반의 다른 시각화 패키지에도 많은 영향을 끼치고 있다. 하지만 맷플롯립은 너무 세분화된 API로 익히기가 번거롭다. 이를 보완하기 위한 여러 시각화 패키지가 출시되고 있는데, 대표적으로는 시본이 있다.
  • 아이파이썬 툴인 주피터 노트북이 있다. 아이파이썬은 대화형 파이썬 툴을 지칭한다. 데화형 툴이라는 말은 마치 학교에서 선생님이 학생들에게 설명하듯이 프로그래밍과 이에 대한 설명적인 요소를 결합했다는 뜻이다. 주피터 노트북은 필기하듯이 중요 코드 단위로 설명을 저고 코드를 수행해 그 결과를 볼 수 있게 만든다. 직관적으로 어떤 코드가 어떤 역할을 하는지 매우 쉽게 이해할 수 있도록 지원한다.

 

 

 

파이썬 머신러닝을 위한 S/W 설치

Anaconda를 설치하는 건데 이건 이미 설치했으므로 생략한다. Anaconda는 파이썬 기반의 머신러닝에 필요한 패키지들을 일괄적으로 설치할 수 있으며 일반적으로 윈도우 환경에 설치가 어려운 패키지도 간편하게 설치할 수 있다.

아나콘다를 설치하면 기본적으로 파이써뿐만 아니라 머신러닝을 위한 패키지인 넘파이, 판다스, 맷플롯립, 시본, 그리고 주피터 노트북까지 함께 설치된다.

Anaconda Prompt는 아나콘다를 이용해 패키지를 설치할 때 사용한다. 이때 주의할 점은 관리자 권한으로 이 Prompt를 실행해야 제대로 파키지가 설치된다는 것이다.

 

(base) C:\Windows\system32>python -V
Python 3.11.7

(base) C:\Windows\system32>

 

이렇게 파이썬 버전을 확인할 수 있었다. 캡처는 되지 않아서 이렇게 써본다.

 

다음으로 넘파이, 판다스, 맷플롯립 등이 설치되었는지 확인해보겠다. 주피터 노트북에서 다음과 같이 모듈을 임포트하는 코드를 입력해 오류가 발생하지 않으면 정상적으로 설치가 완료된 것이다.

 


 

두번째는 Microsoft Visual Studio Build Tools 2015 이상 버전이 필요하다. 4장 분류에서 사용되는 LightGBM과 9장 추천 시스템의 Surprise 패키지를 설치하려면 이 프로그램이 먼저 설치되어 있어야 한다. 이 프로그램은 지금 필요한 건 아니니 나중에 설치해보려고 한다.

 

이렇게 머신러닝 책 첫 장을 열고 공부를 시작해보았다. 뭐든 첫 장을 펼치고 공부할 때가 가장 어려운 것 같다. 하기 싫은 마음과 싸우면서 정말 힘든 시간을 보냈다. 그래도 끝까지 포기하지 않고 학습을 마칠 수 있어서 정말 다행이었다. 이제 집에 갈 시간이 20분 정도 남았으니 그동안 조금만 더 공부해야겠다.