Notice
Recent Posts
Recent Comments
Link
«   2025/03   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
Archives
Today
Total
관리 메뉴

Ubermensch

Using Machine Learning to Predict the Weather 1 본문

ML&DL

Using Machine Learning to Predict the Weather 1

now.ubermensch 2018. 11. 20. 22:50



1. Python

Python은 아래와 같은 이유로 머신러닝 기술을 배울 수 있는 최고의 언어 중 하나이다.

    • 간단하다 : Python은 간단한 문장과 방대한 커뮤니티가 존재해, 프로그래머가 접근하기에 좋은 언어이다.
    • 강력하다 : Python은 데이터 사이언티스트 및 웹 프로그래머에게 가장 인기있는 언어 중 하나이다. 그들이 이루는 커뮤니티는 머신러닝을 포함해, 당신이 필요로 하는 모든 라이브러리를 만들어내고 있다.
    • 많은 머신러닝 라이브러리 : 이미 Python으로 쓰여진 머신러닝 관련 라이브러리가 어마어마하다.

☞ 머신러닝을 위한 알고리즘은 너무 복잡하고 수학적 능력을 요구한다. 따라서, 우리가 올바르게 작용하는 알고리즘을 직접 짜는 것은 정말 어려운 일이다. 다행스럽게도, 엄청나게 똑똑한 사람들이 이미 그러한 어려운 일들을 선행해놓았으니, 우리는 잘 가져다가 쓰면 된다.

2. TensorFlow


TensorFlow는 기계학습과 딥러닝을 위해 구글에서 만든 오픈소스 라이브러리이다.

API에 대한 러닝커브가 낮아, API랑 씨름하기 보다 네트워크 디자인에 좀 더 신경을 쓸 수 있도록 도와주는 착한놈이다.

<데이터 플로우 그래프>

TensorFlow의 계산은 데이터 플로우 그래프(Data Flow Graph) 방식을 사용한다.

데이터 플로우 그래프는 수학 계산과 데이터의 흐름을 노드(Node)와 엣지(Edge)를 사용한 방향그래프로 표현한다.

      • Tensor :  기본 자료구조이며, 딥러닝에서 텐서는 다차원 배열로 나타내는 데이터이다. (array , list)
      • Flow : 데이터의 흐름을 의미한다.
      • Node : 수식(Operation)을 의미
      • Edge : 시스템을 따라 흘러가는 Tensor(Data)를 나타낸다.

☞Python은 절차적으로 처리가 되지만, TensorFlow는 작성과 실행 영역이 분리되어있다.

<TensorFlow의 장점>

    • 데이터 플로우 그래프를 통한 풍부한 표현력
    • 코드 수정 없이 CPU/GPU모드로 동작
    • 아이디어 테스트에서 서비스 단계까지 이용 가능
    • 계산 구조와 목표 함수만 정의하면 자동으로 미분계산을 처리
    • Python/C++ 을 지원하며, SWIG를 통해 다양한 언어지원 가능
    • 윈도우,맥,리눅스 뿐 아니라 안드로이드, iOS,라즈베리 파이 등 다양한 시스템에서 쉽게 사용 가능

<TensorFlow 소스구조 분석>

☞ http://airpage.org/meta/go/927 

3. Neural Networks(인공신경망) 이론


 선형회귀분석 등, 종속변수와 독립변수 간의 선형관계로만 계산 할 수 없는 문제들이 있다.

이러한 선형성을 해결하기 위한 알고리즘은 엄청나게 많지만, 최근 몇 년간 가장 인기있는 분야 중 하나인 인공신경망 이론은 다양한 기계학습 문제에 적용할 수 있다.

인공신경망은 선형 및 비선형 동작을 기반으로 하는 강력한 학습기술방법을 제공한다.


 인공신경망은 복잡한 상호작용을 하며 정보를 전송, 수집 및 학습하는 뇌의 뉴런에서 영감을 받았다.  

네트워크를 통과하는 수치처리는 선형관계에 국한되지 않는다는 매우 강력한 특징을 갖는다.


지도학습


데이터에 대한 레이블(Label)-명시적인 정답-이 주어진 상태에서 컴퓨터를 학습시키는 방법이다.

즉, (데이터(data), 레이블(label)) 형태로 학습을 진행하는 방법이다. 


아래와 같은 28×28 크기의 이미지인 MNIST 데이터셋이 있으면, 이를 이용해 학습을 진행할때, 트레이닝 데이터셋(training set)은 아래와 같이 구성된다.

(0을 나타내는 28×28 이미지, 0), (7을 나타내는 28×28 이미지, 7), (6을 나타내는 28×28 이미지, 6), (0을 나타내는 28×28 이미지, 0), …


이렇게 구성된 트레이닝 데이터셋으로 학습이 끝나면, 레이블(label)이 지정되지 않은 테스트 데이터셋(test set)을 이용해서, 학습된 알고리즘이 얼마나 정확히 예측(Prediction)하는지를 측정할 수 있다.

예를 들어서,

(4을 나타내는 28×28 이미지) 를 학습된 분류기에 집어 넣으면, 올바르게 4를 예측 하는지(True Prediction) 아니면 3이나 5와 같은 잘못된 레이블을 예측하는지 (False Prediction) 측정할 수 있다.

이때, 예측하는 결과값이 discrete value(이산값)면 classification(분류) 문제-이 이미지에 해당하는 숫자는 1인가 2인가?-,

예측하는 결과값이 continuous value(연속값)면 regression(회귀) 문제-3개월뒤 이 아파트 가격은 2억1천만원 일 것인가? 2억2천만원 일 것인가?-라고 한다.

딥러닝에서 Supervised Learning 방법론으로 주로 사용되는 구조는 Convolutional Neural Network(CNNs), Recurrent Neural Networks(RNNs)이다.





https://stackabuse.com/the-best-machine-learning-libraries-in-python/#scikitlearn

https://stackabuse.com/using-machine-learning-to-predict-the-weather-part-2/

http://solarisailab.com/archives/1785 

http://infosec.pusan.ac.kr/wp-content/uploads/2017/09/2-tensorflow-%E1%84%80%E1%85%B5%E1%84%8E%E1%85%A9.pdf

을 참고하여 의역/보충하여 작성.


'ML&DL' 카테고리의 다른 글

Web API로 데이터 추출하기 - OpenWeatherMap  (0) 2018.11.20