본문 바로가기

ICT 학습

머신러닝 기본부터 다시 배우기 - 1주차

[머신 러닝을 익히고 배우기 위한 주요 링크]

- SOTA 사이트 :

인공지능과 관련한 다양한 논문, 소스코드 및 사례 학습이 가능한곳

 https://paperswithcode.com/sota

 

Papers with Code - Browse the State-of-the-Art in Machine Learning

7216 leaderboards • 3011 tasks • 5871 datasets • 68649 papers with code.

paperswithcode.com

 

 

- Kaggle 사이트 : 

캐글은 2010년 설립된 예측모델 및 분석 대회 플랫폼이다. 기업 및 단체에서 데이터와 해결과제를 등록하면, 데이터 과학자들이 이를 해결하는 모델을 개발하고 경쟁한다. 2017년 3월 구글에 인수되었다.

https://www.kaggle.com/

 

Kaggle: Your Machine Learning and Data Science Community

Kaggle is the world’s largest data science community with powerful tools and resources to help you achieve your data science goals.

www.kaggle.com

 

 

- Colab 사이트 : 

Colab은 구글에서 만든 연구용 서비스 PaaS 서비스이며, Jupyter를 기반으로 만들어진 웹용 서비스이다.

당연히 Web기반의 인터페이스 제공과 PaaS 서비스의 특징으로 별도의 사용자 배포과정 없이 대부분의 서비스를 그대로 사용할 수 있다.

Colab은 Colaboratory를 줄인 말로 일반적으로 Colab이라고 부르며, 한글로는 코랩이라고 한다.

Jupyter도 웹 기반 서비스이지만 Colab과 Jupyter의 큰 차이점은 Local인지의 여부이다.

Colab은 Google Drive 서비스와의 연동으로 Google 제공하는 server에서 작동이 이루어진다.

구글 server에서 작동이 될 뿐만 아니라 GPU도 서버를 통해서 현시점 기준 15시간을 무료 제공해준다.

(테스트 환경으로 테스트하는데 큰 문제 없음.)

 

기본적인 ML, DL 등에서 자주사용하는 라이브러리들이 기본적으로 설치되어 함께 제공되며, pip 시스템 명령으로 추가적으로 설치하여 사용할 수 있다.


한마디로 왠만한 교육과정 및 테스트 용도로는 그냥 사용하는데 지장없는 무료 서비스이다.

단, Google 계정은 만들어야 한다. ^^

 

구글드라이브 서비스에서 신규로 생성해서 사용할 수 있다.

 

 

 

 

[머신 러닝 이란?]

기계 학습 또는 머신 러닝은 경험을 통해 자동으로 개선하는 컴퓨터 알고리즘의 연구이다. 인공지능의 한 분야로 간주된다. 컴퓨터가 학습할 수 있도록 하는 알고리즘과 기술을 개발하는 분야이다. 가령, 기계 학습을 통해서 수신한 이메일이 스팸인지 아닌지를 구분할 수 있도록 훈련할 수 있다. 위키백과 

 

 

 

[알고리즘 이란?]

수학과 컴퓨터 과학, 언어학 또는 관련 분야에서 어떠한 문제를 해결하기 위해 정해진 일련의 절차나 방법을 공식화한 형태로 표현한 것, 계산을 실행하기 위한 단계적 절차 - 위키피디아

 

 

 

[머신러닝의 회귀와 분류]

머신러닝에서 문제를 풀 때, 해답을 내는 방법을 크게 회귀 또는 분류로 나눌 수 있으며, 입력 값과 도출값의 종류와 형태에 따라 적합한 방식을 택해서 진행하면 된다.

 

또한, 머신 러닝은 지도학습, 비지도학습, 강화학습으로 나뉘며 그 각각의 특징에 맞춰서 사용하면 되며,

지도학습은 정답을 알려주면서 학습시키는 방법을 뜻하며(A는 B이다를 반복),

비지도학습은 정답을 알려주지 않고(A가 B인지 C인지는 모르겠지만 네가 판단해서 비슷한 것을 묶어봐라 식) 군집화 하는 방법이며,

강화학습은 주어진 데이터 없이 실행과 오류를 반복하면서 학습하는 방법(알파고 엔진이 만들어진 머신러닝 방법)

 

 

 

[선형 회귀 (Linear Regression)]

가설 기반(Hypothesis)의 단일 선형회귀(Single-variable linear regression)와 다중 선형회귀(Multi-variable linear regression)로 나뉘어 볼 수 있으며, 기본적으로는 단일 선형회귀의 이론이 그대로 적용 된다.

이때, 모델 설계자가 정해줘야 할 주요 값으로는 가설(또는 가설식)과 비용 함수(Cost function 또는 Loss function) 값을 지정해 주면 됨.

 

ex) 1차 함수(Single-variable linear regression) 식 예제

H(x)(가설,Hypothesis) = W(기울기값,weight)x + b(y절편이되며,편향, bias)

 

가설이 지나가는 가상의 선과 실제 정답과의 거리가 최소화 되도록 설계되는 것이 최적의 모델이라고 볼 수 있다.

 

다중선형회귀 또한 기본적으로 동일한 식에 x 값이 추가된다고 보면 된다.

 

ex) 다중함수

선형 회귀와 똑같지만 입력 변수가 여러개라고 생각하고 접근하는 방법.

만약 입력값이 2개 이상이 되는 문제를 선형 회귀로 풀고 싶을 때 다중 선형 회귀를 사용.

가설 $H(x_1, x_2, ..., x_n) = w_1x_1 + w_2x_2 + ... + w_nx_n + b$

손실 함수 $Cost = {{1\over N}\sum{(H(x_1, x_2, x_3, ..., x_n) - y) ^ 2}}$

 

 

 

[손실함수의 최소화(Cost Optimize)]

가설과 실제 정답의 차이를 좁히는게 머신러닝의 본질이라고 볼 수 있는데 그러한 방법중 경사 하강법(Gradient descent method)라고 함.

출처: https://towardsdatascience.com/using-machine-learning-to-predict-fitbit-sleep-scores-496a7d9ec48
출처: https://medium.com/hackernoon/life-is-gradient-descent-880c60ac1be8
출처: https://medium.com/hackernoon/life-is-gradient-descent-880c60ac1be8
출처: https://regenerativetoday.com/logistic-regression-with-python-and-scikit-learn/

손실 함수 값을 최소화(optimize)하는 것이 목표이며 실제 프로그램상에서 식 값으로 learning rate 값을 조절하여 최적화된 모델을 찾아내는게 노가다(?)가 됨. ㅠㅠ

 

실제 위 네번째 표 예시와 같이 local cost minimum이 많은 데이터 모델에서는 Global cost minimum을 찾는 과정에서 다양한 어려움이 발생 할 수 있다.

 

 

 

[데이터 셋 분할]

모델 학습시에 사용할 데이터는 Training set(학습용 데이터셋)과 Validation set(검증 데이터 셋), Test set(평가 데이터셋, 테스트셋)으로 구분하여 실제 실무에서 적용하여 사용함.

출처: https://3months.tistory.com/118

다만, 자가 학습시에는 트레이닝셋과 Test set으로 구분하여 사용하였음.

 

 

 

[실습 진행 내용]

- 간단한 선형회귀 실습 : 

https://colab.research.google.com/drive/14tAcGz2dFplNnjwGq2PEInrTEbHkk7N1?usp=sharing 

 

1주차 실습 - 01. 간단한 선형회귀 실습

Colaboratory notebook

colab.research.google.com

 

 

- 캐글 데이터를 활용한 선형회귀 실습 : https://colab.research.google.com/drive/1q72dGb0V5vemzKVb6dDL3K3iF2izyfYK?usp=sharing 

 

1주차 실습 - 02. 캐글 선형회귀 실습

Colaboratory notebook

colab.research.google.com

 

 

- 과제 제공용 실습 :

https://colab.research.google.com/drive/1pePVqexNEx1QarenWwfbJi0nmW95DxYH?usp=sharing 

 

1주차 실습 숙제.ipynb

Colaboratory notebook

colab.research.google.com

 

 

 

[1주차 느낀점]

해볼만한것 같다. 재미있다. kaggle의 다른 데이터셋으로 다양한 선형회귀 모델을 평가해 보고 싶다.

업무에서 필요한 상황을 상상해보고 custom data set을 만들어서 업무에 적용 가능한 범위와 상황을 시뮬레이션 해보고 싶다.