인공 지능은 1943년의 튜링 테스트를 기점으로 인공지능의 태동기가 시작되었다고 생각한다.
그렇게 황금기 2번의 겨울을 거치고 난뒤 우리가 현재 생각하는 형태의 ai가 모습을 갖추고 등장하게 되었다.
인공지능이란?
인공지능(artificial intellgence) 은 사람처럼 삭습하고 추론할 수 있는 지능을 가진 컴퓨터 시스템을 만드는 기술이다. 인공지능의 역사는 80년 정도 되었지만 인류는 훨씬 더 오래전부터 지능적인 시스템을 생각했다. 이는 소설이나 그림등을 통해서 지금 우리가 생각하고 정의 하는 사람과 유사하게 추론하고 이에대한 답을 스스로 판단하는 시스템 즉 뉴런 시스템의 모습이 등장했다고 볼 수 있다. 하지만, 영화나 소설 우리의 상상속에 있는 인공지능과 다른점은 강인공지능 strong ai 이다. 사람을 대하면서 다양한 모습으로 변모하고 악이 되기도 선이 되기도 하는 모습을 종종 보인다. 하지만 현재 현실에서 다루는 인공지능은 약인공지능 weak ai 이다.
아직 까지 우리가 연구하고 적용하는 인공지능 분야는 특정 분야에서 사람의 일을 도와주는 보조 역할만 가능하기 때문이다. 예를 들면 번역, 스팸메일 분류, 음성 비서 등이 이에 대한 대표적인 사례라고 볼 수 있다.
머신러닝이란?
머신러닝(machine learning) 은 규칙을 일일이 프로그래밍하지 않아도 자동으로 데이터에서 규칙을 학습하는 알고리즘을 연구하는 분야라고 볼 수 있다. 인공지능의 하위 분야 중에서 지능을 구현하기 위한 소프트웨어를 담당하는 핵심 분야이다.
머신 러닝은 통계학과 깊은 관련이 있다고 볼 수 있다. 통계학에서 유래된 머신러닝 알고리즘이 많으며 통계학과 컴퓨터 과학 분야가 서로 상호 작용을 하면서 발전하고 있는것이 대표적인 증거라고 볼 수 있다. 대표적으로는 오픈소스 통계 소프트웨어인 R에는 다양한 머신러닝 알고리즘이 많다는것을 알 수 있다.
실제로
유명하고 많이 사용하는 R 패키지 정리
가장 유명하고, 많이 다운로드 되는 R 패키지들을 그 목적에 따라서 정리하였습니다. 본 포스트는 이 포스트를 참고하였습니다.
데이터 로드
RMySQL, RPostgresSQL, RSQLite - 데이터 베이스로부터 직접 데이터를 읽을 때 사용하는 패키지들이다. R[데이터베이스명] RMySQL은 MySQL의 데이터들을 직접 R로 불러올 수 있다.
XLConnect, xlsx - 이 패키지들은 Microsoft사의 엑셀을 R로부터 직접 읽어올 수 있게 한다. 물론, write도 가능하다.
foreign - SAS, SPSS 데이터셋을 읽어올 때 사용한다. 예를 들어, SAS의 경우 sas7bdat 확장자로 되어있는 파일인데, 이를 읽어올 때 foreign 패키지를 활용할 수 있다.
일반적인 텍스트 파일을 로드할 때, R에서는 별다른 패키지가 필요하지 않다. read.csv, read.table, read.fwf를 이용하면 된다. 이외의 독특한 자신만의 데이터셋을 불러오고 싶다면 CRAN guide에 데이터 import, export에 관하여 문의할 수도 있다.
데이터 핸들링
dplyr - 데이터 subsetting, summarizing, rearranging, joining에 대한 더 쉬운 길을 제공한다. dplyr는 빠른 데이터 핸들링을 위하여 반드시 사용하는 패키지이다.(go to package)
tidyr - 데이터셋의 레이아웃을 바꿀 때 유용한 툴이다. 데이터를 tidy format으로 바꾸기 위해 gather이나 spread 함수를 사용할 수 있다.
stringr - 문자열 다루는 것과 정규 표현식 관련 패키지이다.
lubridate - date와 time을 더욱 다루기 쉽게 만드는 툴이다.
데이터 시각화
ggplot2 - R의 매우 유명한 시각화 패키지이다. grammar of graphics 를 활용하여 layered, customizable plot을 만들 수 있다는 장점이 있다.
ggvis - grammar of graphics을 기반으로 동작하는, 대화형, 웹베이스의 그래픽 라이브러리이다.
rgl - Interactive 3D 시각화를 위한 라이브러리이다.
htmlwidgets - 자바스크립트 기반의 interactive 시각화를 위한 툴이다. 이 패키지는 아래와 같은 htmlwidget들을 구현하고 있다.
- leaflet (maps)
- dygraphs (time series)
- DT (tables)
- diagrammeR (diagrams)
- network3D (network graphs)
- threeJS (3D scatterplots and globes)
googleVis - R에서 데이터 시각화를 위해 구글 차트를 이용할 수 있게한다. 구글 차트 툴은 Gapminder라고 불리기도 한다. 이는 시각화 소프트웨어로, Hans Rosling의 TED 출연으로 유명해졌다.
데이터 모델링
car - car 패키지의 Anova 함수는 type2, type3 아노바 테이블을 만드는데 유명하다.
mgcv - Generalized Additive Models
lme4/nlme - Linear, Non-linear 혼합효과모형
randomForest - 머신러닝의 랜덤 포레스트
multcomp - 다중비교를 위한 툴
vcd - 범주형 변수의 시각화와 분석을 위한 툴이다.
glmnet - Lasso, elastic-net 회귀분석을 cross validation과 함께 해준다.
survival - 생존분석
caret - 회귀분석 및 분류 모델의 트레이닝을 위한 툴이다.
데이터 리포트
shiny - 인터랙티브한 웹앱을 쉽게 만들어준다. 프로그래머가 아닌 일반 사람들에게 데이터 exploring과 sharing을 쉽게 만들어준다.
R Markdown - Reproducible reporting을 위한 툴이다. R 코드를 markdown 에 쓰고, render을 하면 R Markdown은 코드를 코드 실행 결과와 함께 HTML, pdf, word 형식으로 export를 해준다. 결과를 정리하는 다른 과정 없이 자동화된 리포팅을 알 수 있게 된다. R Markdown은 RStudio와 통합된다.
xtable - xtable 함수는 R Object(예를 들어, dataframe)를 통해 latex이나 HTML 코드로 리턴해준다. 이를 통해 문서에 붙여넣기를 쉽게할 수 있다.
공간 데이터
sp, maptools - shapefile을 비롯한 공간 데이터를 로딩할 수 있는 툴이다.
maps - 맵에 다각형을 쉽게 그려주는 툴이다.
ggmap - Google map으로 부터 street map을 다운로드 받고, ggplot의 background로 쓸 수 있다.
시계열, 금융 데이터
zoo - 시계열 데이터를 저장하기 위한 가장 유명한 포맷을 다룰 수 있다.
xts - 시계열 데이터를 다루기 위한 툴
quantmod - 금융 데이터를 다운로드하고, 그래프를 그리고, 분석할 수 있는 툴이다.
높은 성능을 내기 위한 R 코드 작성
Rcpp - C++을 call하는 R function을 사용한다.
data.table - 데이터셋을 빠르게 조작하기 위한 다른 방법을 사용한다. "빅 데이터"에 유용하다.
parallel - 큰 데이터 셋을 다루기 위한 병렬 프로세싱을 사용한다.
웹으로 작업하기
XML - R을 통해 XML 문서를 읽고 만드는 패키지
jsonlite - R을 통해 JSON 데이터를 읽고 만드는 패키지
httr - HTTP Connection을 통한 작업을 위한 라이브러리
R 패키지 만들기
devtools - 코드를 R 패키지로 만들기
testthat - 프로젝트의 유닛 테스트를 위한 쉬운 방법을 제공한다.
roxygen2 - R 패키지의 도큐먼트를 만들기 위한 빠른 방법. roxygen2는 코드의 코멘트를 도큐먼트로 만들고, 패키지의 네임스페이스를 만든다.
출처: https://3months.tistory.com/291 [Deep Play]
R 유명한 패키지 정리
유명하고 많이 사용하는 R 패키지 정리 가장 유명하고, 많이 다운로드 되는 R 패키지들을 그 목적에 따라서 정리하였습니다. 본 포스트는 이 포스트를 참고하였습니다. 데이터 로드 RMySQL, RPostg
3months.tistory.com
위와 같이 다양한 패키지들이 존재하는 것을 확인 할 수 있다. (유용한것을 제외하고 본다면 매우 많고 다양한 용도의 패키지가 존재한다는 것을 생각 해 볼 수 있다.)
물론, 최근 머신러닝의 발전은 통계나 수학 이론 보다 경험을 바탕으로 발전하는 경우도 많기 때문에 컴퓨터 과학 분야가 이런 발전을 주도하기도 한다. 컴퓨터 과학 분양의 대표적인 머신러닝 라이브러리는 사이킷런scikit-learn이다.
사이킷런 라이브러리는 파이썬 API를 사용하는데 파이썬 언어는 배우기 쉽고 컴파일 하지 않아도 되는 이점이 있어서 많은 연구 및 상용화에서 사랑받고 있다.(나 또한 파이썬을 기반으로 이번 주제를 이어가보려고 한다.)
딥러닝이란?
많은 머신러닝 알고리즘 중에 인공 신경망artificial neural network을 기반으로 한 방법들을 통진하여 딥러닝deep learning이라고 부른다. 종종 사람들은 인공 신경망과 딥러닝을 크게 구분하지 않고 부르는듯 하다.
과거에는 딥러닝은 많은양의 데이터와 높은 연산 처리 능력을 요구하는 방식이기 때문에 많은 관심을 가지지 못했지만 현대에 접어들면서 높은 사양의 컴퓨터가 출시되고, 다양한 최적화 알고리즘등이 등장하고 최근 들어 알파고의 등장으로 많은 이들에게 많은 관심을 받고 다양한 도전 과제의 적용 여부를 긍정적으로 기대 받는 분야이다. 심지어 구글과 페이스북에서 손쉽게 딥러닝 개발과 연구에 사용할 수 있도록 tensorflow 와 pytorch의 등장또한 다양한 이들이 다양한 분야에서 이를 적용해볼 수 있는 기회를 열어주게 되었다고 볼 수 있다.
여기서 나는 파이토치나 텐서플로우를 공부해보면서 각자의 특징을 구분하거나 좀더 보기가 간편하고 이해하기 쉬운 것들을 위주로 올려보면서 기록해보고자 한다.
'UBUNTU > 머신러닝' 카테고리의 다른 글
머신러닝 VS 딥러닝 (1) | 2022.08.30 |
---|---|
Colab jupyter notebook 사용법 정리 (0) | 2021.08.28 |