반응형

안녕하세요!


오늘은 R로 머신러닝을 하기에 앞서


그 기본! Basic Part!


머신러닝에 대해 알아보겠습니다.


머신러닝이란,


컴퓨터에 명시적으로 프로그래밍하지 않고 학습할 수 있는 능력을 부여하는 컴퓨터 과학의 하위분야입니다.



먼저

AI(인공지능) 과 ML(머신러닝), Deep Learning(딥러닝)의 차이와 그 범주에 대해 알아볼까요?


AI vs Machine Learning vs Deep Learning출처: https://blogs.nvidia.com



AI란, Artificial Intelligence의 약자로, 사고나 학습 등 인간이 가진 지적 능력을 컴퓨터를 통해 구현하는 기술을 의미합니다.


머신러닝이란, 컴퓨터가 스스로 학습하여 인공지능의 성능을 향상시키는 기술을 의미합니다.


딥러닝이란, 인간의 뉴런과 비슷한 인공신경망 방식으로 정보를 처리하는 기술을 의미합니다.




머신러닝의 원리를 알아보겠습니다.


출처: https://www.networkworld.com


먼저, 그림과 같이 컴퓨터에게 문제와 답을 알려줍니다.


이후, 관련 문제를 내면 컴퓨터가 정답을 알아 맞추게 됩니다.


이것이 가능한 이유는

컴퓨터가 데이터(문제) 답(label)으로 학습하며 직접 프로그램(알고리즘)을 작성하기 때문입니다.




머신러닝의 종류는 크게 3가지로 나눌 수 있습니다.


 

1. 지도학습


2. 비지도 학습


3. 강화학습




1. 지도학습 (Supervised Learning)


훈련데이터와 정답을 가지며, 데이터를 분류/예측하는 함수를 만들어내는 기계학습 방법


종류1. 분류

KNN(K-Nearest Neighbors), 나이브 베이즈, 결정트리, 서포트 벡터머신, 아프리오 알고리즘


종류2. 회귀

선형회귀(Linear Regression), 신경망



2. 비지도학습 (Unsupervised/Predictive Learning)


정답없이 훈련데이터만 가지고 데이터로부터 숨겨진 패턴을 탐색하는 기계학습의 방법


종류: 클러스터링

연관규칙(apriori), k-means



3. 강화학습 (Reinforcement Learning)


어떤 환경에서 정의된 에이전트가 현재 상태를 인식하여 선택 가능한 행동들 중 보상을 최대화하는 행동 혹은 행동 순서를 선택하는 방법





오늘은 여기까지!


다음은 R을 이용한 머신러닝으로 돌아오겠습니다! 

반응형
반응형

안녕하세요 오랜만에 돌아왔습니다~


SQL에 이어


데이터 분석, 머신러닝을 위한 R에 대해 포스팅하겠습니다~




우선 R에 대해 알아야겠죠?



BASIC그림 출처: https://vimeo.com/basicagency




가장 먼저

R로 데이터를 로드하고 패키지를 사용하는 방법에 대해 알아보겠습니다.



Tip 1. csv파일을 R에서 로드하는 방법


 

read.csv( "파일위치", header = T)



Tip 2. 변수에 넣기


 

변수이름 <- read.csv( "파일위치", header = T)




Tip 3. 패키지 설치하는 방법


 

install.packages("패키지이름")



Tip 4. 라이브러리 사용하는 방법


 

library("라이브러리이름")






이제 기본적인 R의 자료구조와 연산자 그리고 함수에 대해 알아보겠습니다!



1. R의 자료구조




 

Vector: 같은 데이터 타입을 갖는 1차원 배열구조


Matrix: 같은 데이터 타입을 갖는 2차원 배열구조


Array: 같은 데이터 타입을 갖는 다차원 배열구조


Data Frame: 각각의 데이터 타입을 갖는 컬럼으로 이루어진 2차연 배열구조 (데이터베이스의 table과 유사함)


List: 서로 다른 데이터 구조의 데이터 타입(vector, matrix, array, data frame)이 중첩된 구조





2. R의 연산자



 

산술 연산자: + , - , / , * , ^, %% 등..


비교 연산자: > , < , >= , <= , == , != 


논리 연산자: & , && (and) , | , || (or) , ! (not)




* 참고1: R에서 같음을 비교하는 연산자는 == 이다.

 = (equal) 을 두개 사용해야한다.



* 참고2: &과 &&, | 과 || 의 차이


& 과 | 는 벡터화된 연산에 사용된다.


&& 과 || 는 벡터화 되지 않은 연산에서 사용한다.




3. R 의 기본 함수



 

문자함수: toupper, tolower, substr, gsub, paste , ...


숫자함수: round, tunc, ..


날짜함수: Sys.Date(), defftime, ...


변환함수: as.character, integer, as.Date, as.factor, format, ... 


일반함수: is.na, ifelse, ...


그룹함수: max, min, sum, length, table, ...





이 중 format, ifelse, length 함수에 대해 더 자세히 알아볼까요?



1. format 함수


 

format(as.Date('2018/05/15'), '%A')


결과: "화요일"



* 참고: as.Date는 날짜로 변환시켜주는 변환 함수



format 함수에서 '%A'자리에 쓸 수 있는 것과 의미


'%A' : 요일을 출력 / '%Y' or '%y' : 연도 / '%m' : 달 / '%d' : 일 / '%H' : 시간 / '%M' : 분 / '%S': 초



2. ifelse 함수


 

ifelse( 등급 == 1 , 'A' , 'B' )



ifelse ( 조건 , 조건 True , 조건 False)


* 참고: ifelse는 중첩하여 사용할 수 있다. 



3. length 함수


 

x <- c( 1, 2, 3)


length(x)


결과: 3



벡터이든 행렬이든 전체 원소의 갯수를 출력




추가적으로!


만약 원하는 함수가 패키지에도 존재하지 않을 때!

혹은

나만의 함수를 만들고 싶을 때!




함수를 생성하는 방법에 대해 알아보도록 하겠습니다.



 

함수이름 <- function(parameter, ...) {


(if / for .. 등 연산)


}



*참고: R에서 사용자 정의 함수에서 return문은 필수가 아니다.




예제: 앞으로 다가올 요일의 날짜를 출력하는 함수







오늘은 여기까지~


다음은 시각화로 찾아오겠습니다!



반응형
반응형

안녕하세요!



오늘은


신경망에서 오차 역전파에서 사용되는


지수함수와 로그함수에 대해 알아보겠습니다.





고등학교 수학시간때 들었지만


저는 기억이 가물가물... 열심히 하지 않았나봐요..



그래서 딥러닝을 위해 다시 공부해보도록 하겠습니다!




우선,


지수란?


2 x

 

이러한 거듭제곱의 형태를 말합니다.



그렇다면,


지수함수란?


y = 2 x


위와 같이 y= 을 붙여서 짝을 지어주는 것을 말합니다.


이것을 밑이 2인 지수함수라고 합니다.



이러한 지수함수는 밑이 1보다 큰 경우와


밑이 0보다 크고 1보다 작은 경우로 나눌 수 있습니다.



그래프로 비교해 볼까요?




(1 < 밑)  y =  x  함수의 그래프





(0 < 밑 < 1) y =  (1/2) x 함수의 그래프




따라서


 y =  x 그래프와 y = (1/2) x 그래프는 Y축 대칭입니다.


 y =  x 는 증가함수 그래프의 형태를


y = (1/2) x 는 감소함수 그래프의 형태를 띄게됩니다.


(위의 그래프는 구글에서 직접 그려보실 수 있습니다.)




로그 함수란?


y = loga x (a > 0, a != 1, x > 0)


이것을 a를 밑으로 하는 로그함수라고 말합니다.


여기서 x는 진수입니다.


로그함수는 지수함수의 역함수입니다.



이러한 로그함수도 밑이 1보다 큰 경우와


밑이 0보다 크고 1보다 작은 경우로 나눌 수 있습니다.




그래프로 확인해 볼까요?



(1 < 밑) 일 때, 아래의 그래프 형태를 띕니다.




(0 < 밑 < 1) 일 때, 아래의 그래프 형태를 띕니다.





따라서 


y = logx  그래프와  y =  a x 그래프는 Y = X축 대칭입니다.


y = x 라는 것은 x 대신 y, y 대신 x 의 값을 갖는 다는 것입니다.





오늘은 여기까지!


이 원리를 이용하는 신경망 오차 역전파 방법은 파이썬에서 활용해보도록 해보겠습니다.

반응형
반응형

안녕하세요


빅데이터에 관심이 있으신 분들은 머신러닝과 딥러닝에 수학, 통계가 필요하다는 것을 아실 겁니다.


하지만 어떤 개념이 필요한지 알려주는 사이트가 없었습니다.


그래서 머신러닝 & 딥러닝 & 빅데이터 분석가를 꿈꾸는 학생으로서


이렇게 찾아뵙게 되었습니다!!


그 첫 번째 포스팅!


오늘은

머신러닝의 결정트리와 딥러닝의 신경망 활성화 함수, 오차함수에 사용되는

로그상용로그에 대해 알아보도록 하겠습니다.




우선, 로그란 무엇이며 왜 사용할까요?


로그의 기원은

중세시대 천문학이 자연과학으로 발전될 때,

매우 큰 수로 이루어지는 천체의 관측 자료를

정리하거나 계산을 간단히 하기위해 사용되었습니다.


즉, 로그의 발명은

큰 숫자를 작은 숫자로 표현하기 위해,

덧셈과 뺄셈만큼이나 곱셈과 나눗셈을 간단히 하려는 생각에서 비롯된 것이죠.



<지수와 로그 관계>


위의 logarithm form을 해석해보면,


a를 밑으로 하는 N의 로그라고 합니다.


또, N을 log a N의 진수라고 합니다.



오라클에서도 LOG함수를 지원합니다.



SQL> SELECT log(a, N) FROM dual;

 


위의 dual이란, 결과를 보기위한 가상의(더미) 테이블입니다. 



그럼 로그의 성질을 알아볼까요?



위의 성질이 성립함을 알고 싶으시다면 쉽게 찾아보실 수 있습니다.


여기서는 중요한 부분이 아니므로 pass!



문제1. 2log 3 6 - log 3 (4/9) 의 값을 구하여라.




상용로그란 무엇일까요?


우선 상용의 뜻은 항상 사용한다는 의미입니다.


우리가 가장 많이 사용하는 진법은 2진법도, 8진법도, 16진법도 아닌 10진법이죠?


따라서 상용로그는 로그에서 밑을 10으로 하는 로그라고 합니다!


따라서 다음과 같이 표기합니다.



log10 N = log N

 


즉 밑수가 없는 경우 상용로그라고 합니다!


상용로그도 오라클 로그함수로 사용할 수 있답니다.



문제2. 오라클 SQL문으로 다음의 값을 구하라



(1) log 123


(2) log 0.0345

 



상용로그 표를 보면 풀 수 있는 문제지만


ORACLE, R, PYTHON 등의 응용 프로그래밍 언어를 이용하면

보다 쉽게 풀 수 있답니다.



R과 PYTHON 등의 문법과 딥러닝에 사용하는 방법은


다음에 각 카테고리별로 가 포스팅하겠습니다~




오늘은 여기까지!


다음 포스팅은 2주뒤에 봐요~

반응형

+ Recent posts