사람의 지능을 필요로 하는 작업을 수행할 수 있는 컴퓨터 시스템을 지칭하는 말이다. 4차 산업의 핵심 기술로 대두되며, 사물인터넷이나, 센서 및 네트워크에서 제공되는 빅데이터를 효율적으로 관리 분석하는 소프트웨어와 비슷한 개념.
의사결정을 자동화 하는데 중점을 두는 면에서 머신러닝과 공통점을 가지나, 머신러닝은 인간의 행동과 관련이 없을 수 있다는 점에서 차이가 있다.
인공지능을 구현하는 구체적인 방식으로 규칙 기반 프로그램의 구현하는 데 너무 큰 노력이 들고, 새로운 변화에 적응하기도 어려우며, 미묘한 차이를 규칙을 만드는 것에 대한 한계점 들로 인하여 개선책으로 나온 방법이다. 최근에는 주로 분류나 예측을 주요 목적으로 사용하고 있는 추세이다.
ex) 추천시스템 알고리즘, 이메일의 스팸여부 판별
기존 머신러닝 알고리즘은 특징들을 매핑시켜 분류, 예측을 하는 반면, 딥러닝의 경우 추상적인 자료에서 특징을 추출하여 분류 및 예측을 한다. 모델의 성능은 좋으나 어떤 이유로 그렇게 분류 예측 모형인지 설명할 수 없는 블랙박스모형이라는 단점과 학습을 위해 많은 자료를 요구한다는 단점 등이 있다.
ex) 사진을 통한 분류, 사진을 생성, 음성인식 등의 방법
Mining은 채굴, 채광하다라는 뜻으로 즉, 데이터마이닝은 거대한 양의 데이터 속에 쉽게 드러나지 않는 통계적 규칙이나 패턴과 같은 유용한 정보를 찾아내는 과정이라 말할 수 있다. 데이터 내에 정보를 찾는 것이 주 목적이라 할 수 있으며, 데이터에 기반 하여 지식 패턴을 추출하기 때문에 전문가가 간과해 버릴 수도 있는 지식 패턴들까지 찾아 낼 수 있는 기술이라 할 수 있다.
학습인란? 데이터를 잘 반영하는 모형을 찾는 것으로 이상적인 모수를 찾는 것을 의미
R은 기본적으로 vector, matrix, data.frame, list의 객체구조를 가질 수 있으며, 자료의 유형은 numeric, character, Factor, Logical로 구분됩니다.
c() : 연결하다는 뜻의 concatenate의 줄임말로 벡터를 생성할 때 사용 된다. <- : c()와 같은 기능을 한다. <<- : 할당되는 객체가 전역변수가 될 수 있게 한다. data.frame() : 데이터 프레임의 객체구조를 생성 할 수 있다. list() : list의 객체구조를 생성할 수 있다.
자동 객체 변환
아래와 같이 자료의형태가 서로 다를 경우 자동변환을 해준다. 자동변환의 우선순위는 문자, 숫자, 논리 순으로 진행된다.
# 1, 2, 5를 a에 할당
a<-c(1,2,5)
a
[1] 1 2 5
# 1부터 5까지 1의 간격으로 a에 할당
a<-1:5
a
[1] 1 2 3 4 5
# 'a','b','c'를 b에 할당
b<-c('a','b','c')
b
[1] "a" "b" "c"
# TRUE,FALSE를 c에 할당
c=c(TRUE,FALSE)
c
[1] TRUE FALSE
# 'a','TRUE','1'로 자동 객체변환
d=c('a',T,1)
d
[1] "a" "TRUE" "1"
# TRUE가 1로 자동 객체변환
e=c(T,2)
e
[1] 1 2
# b, d 벡터를 데이터프레임으로 생성
data.frame(b,d)
b <fctr> | d <fctr> |
---|---|
a | a |
b | TRUE |
c | 1 |
# a,b,c,d,e 객체를 리스트로 생성
list(a,b,c,d,e)
[[1]]
[1] 1 2 3 4 5
[[2]]
[1] "a" "b" "c"
[[3]]
[1] TRUE FALSE
[[4]]
[1] "a" "TRUE" "1"
[[5]]
[1] 1 2
seq(from=,to=,by=) : by의 간격으로 from부터 to 까지의 수열을 생성
seq(from=,to=,length.out=) : length.out의 갯수에 맞게 from 부터 to 까지 수열을 생성
rep(x=,times=) : x를 times만큼 반복
rep(x=,each=) : x에 대해 각각 each만큼 반복
#1,10까지 2의 간격으로 정수 생성
seq(1,10,by=2)
[1] 1 3 5 7 9
#1,10까지 5개 실수 생성(1)
seq(1,10,length.out = 5)
[1] 1.00 3.25 5.50 7.75 10.00
#1,10까지 5개 실수 생성(2)
seq(1,10,len = 5)
[1] 1.00 3.25 5.50 7.75 10.00
#1,2,3을 2번 반복
rep(1:3,times=2)
[1] 1 2 3 1 2 3
#1,2,3을 각각 2번씩 반복
rep(1:3,each=2)
[1] 1 1 2 2 3 3
#1을1번 2를2번 3을 3번 반복
rep(1:3,times=1:3)
[1] 1 2 2 3 3 3
help(찾으려는함수) 나 ?찾으려는함수를 통해 help를 볼 수 있다.
찾으려는 함수의 이름을 모르는 경우 help.search를 사용하면 좀더 편리하다.
help(seq)
?help
?`<`
help.search("multivariate normal")
산술연산자 : +(덧셈),-(뺄셈), *(곱셈),/(나눗셈),^(거듭제곱),sqrt(제곱근)
%/% : 몫
%% : 나머지
?Syntax : 연산자의 우선순위를 확인가능
#산술연산
1+2
[1] 3
#2의 제곱근
sqrt(2)
[1] 1.414214
#2의 거듭제곱
2^2
[1] 4
#4/3의 실수값
4/3
[1] 1.333333
#3으로 4를 나누었을 때 몫
7%/%3
[1] 2
#3으로 4를 나누었을 때 나머지
7%%3
[1] 1
subset() : 해당 조건을 만족하는 원소만을 출력. 결측값은 무시
which() : 해당 조건을 만족하는 원소들의 위치를 출력. 결측값은 무시
# x 생성
x<-c(6, 1:3, NA, 12)
x
[1] 6 1 2 3 NA 12
#5보다 큰 x 추출(인덱싱이라 표현)
x[x>5]
[1] 6 NA 12
#5보다 큰 x 추출
subset(x,x>5)
[1] 6 12
#5보다 큰 x의 위치 반환
which(x>5)
[1] 1 6
install.packages(‘패키지명’) : 로컬 컴퓨터에 패키지를 설치하는 함수.
.libPaths() : 패키지가 저장되는 경로를 설정 및 확인하는 함수.
library(‘패키지명’) : 패키지를 불러오는 함수. 패키지가 로컬컴퓨터에 설치되어 있지 않으면 Error를 반환
require(‘패키지명’) : 패키지를 불러오는 함수. 패키지가 로컬컴퓨터에 설치되어 있지 않으면 warning을 반환
[plyr]http://rpubs.com/qkdrk777777/459300
[reshape]http://rpubs.com/qkdrk777777/459495