'평균값'에 해당되는 글 2건

  1. 2015.10.12 R 함수에서 캐시 활용하기~
  2. 2012.12.18 평균에 대한 정리 (mean, median, mode)

R 함수에서 캐시 활용하기~

|



R은 대용량을 처리하기 위해 사용하고 메모리 기반으로 동작하기 때문에 캐시를 활용하는 경우가 종종 필요하다. 

특정하게 계산된 데이터를 캐시하는 예제를 살펴보기로 한다. 

캐시를 사용하기 위해서 현재의 environment가 아닌 다른 environment에서도 접근할 수 있도록 값을 할당할 필요가 있다. 

R에서 "<-" 대신  "<<-" 을 사용함으로써 이와 같이 처리할 수 있다. 


평균값을 캐시하는 함수

먼저 벡터를 저장하는 makeVector 함수를 생성하고 

여기에서 벡터값을 설정하고 가져오는 메소드와, 벡터의 평균을 저장하고 가져오는 메소드를 만들면 다음과 같다. 


숫자 벡터를 makeVector로 생성하면, 리스트로 리턴되는 set, get, setmean, getmean을 접근할 수 있다. 

"<<-" 연산자를 사용하여 x와 m값을 외부에서도 접근할 수 있도록 설정하였다. 


이제 makeVector를 통해 생성된 숫자 벡터를 통해 평균값을 캐시에서 읽어오는 함수를 구성하면 다음과 같다. 


먼저 x$getmean()으로 캐시된 평균값이 존재하는지 확인한다. 

캐시가 있을 경우, "getting cached data"를 출력하고 그 값을 리턴한다. 

없는 경우에는 mean()을 활용해 평균을 구한 다음 x$setmean(m)으로 평균을 캐시하고 리턴한다. 


실제 활용한 예제를 살펴보면 다음과 같다. 


cachemean(x)를 두번째 호출했을 때, "getting cached data" 텍스트로 캐시에서 값을 불러왔음을 확인할 수 있다. 


역행렬을 캐시하는 함수 만들어보기

위 예제는 coursera에서 Roger Peng 교수의 R Programming 수업의 과제 예제 중 하나이다. 

이것을 참고해서 행렬의 역행렬을 구하는 것을 캐시하는 함수를 직접 만들어 보기 바란다. 


1. makeCacheMatrix: 역행렬을 캐시할 수 있는 행렬을 생성하는 함수 

2. cacheSolve: makeCacheMatrix를 통해 생성된 행렬에 대해 역행렬을 계산하는 함수로서 먼저 캐시에 저장된 역행렬이 있는지 확인한다. 


이 함수는 makeVector, cachemean과 유사하게 만들면 되고, 

R에서 역행렬을 구하는 것은 solve() 함수를 활용하면 된다. 


이것은 직접 한번 만들어 보기 바란다. 


미니의 R 주요 강좌...

데이터 통계 분석을 위한 R 설치와 활용

R 실행을 위한 기본적인 내용들~

R 데이터 구조에 대한 정리

R 패키지 설치하기

R 데이터셋 처리 함수들에 대한 간단한 정리~

R 데이터셋 정렬하기~

R 데이터셋의 일부 데이터 가져오기

R의 lapply, sapply, vapply를 이해하자~

R의 apply, tapply의 활용법을 알아보자~

R의 split 활용

R의 함수 작성 및 활용~

R 시뮬레이션 - 랜덤 변수 샘플링

R 함수에서 캐시 활용하기~

R 디버깅 툴 활용하기~


신고

'Cloud&BigData > R' 카테고리의 다른 글

R 디버깅 툴 활용하기~  (0) 2015.10.14
R 함수에서 캐시 활용하기~  (0) 2015.10.12
R 시뮬레이션 - 랜덤 변수 샘플링  (0) 2015.10.08
R의 함수 작성 및 활용~  (0) 2015.10.07
R의 split 활용  (0) 2015.10.05
R의 apply, tapply의 활용법을 알아보자~  (0) 2015.10.01



Trackback 0 And Comment 0

평균에 대한 정리 (mean, median, mode)

|



평균(average)이란 것은 워낙 많이 사용해서 잘 알고 있다고 생각하기 쉽습니다. 

학교 성적의 평균, 제품의 평균 가격 등 실생활에서도 많이 사용하기 때문이죠. 

그런데 평균(average)에도 우리가 알고 있는 평균값(mean)이외에도 다른 종류의 평균이 존재합니다. 

이에 대해서 간략하게 정리해 보도록 하죠. 


평균값(mean)

가장 일반적인 평균값(mean) 계산 공식은 다음과 같습니다. 

즉, 모든 수를 더한 다음에 총 개수로 나누면 평균값(mean)이 완성됩니다. 


만약 도수가 있다면 다음과 같이 계산하면 됩니다. 

각 수에 도수를 곱한 다음에 그 결과를 모두 더하고 도수의 합으로 나누는 것이죠. 


그런데, 만약 값이 극단적으로 한쪽으로 치우쳐 있는 경우에 평균값(mean)은 왜곡될 경우가 있습니다. 

예를 들어 특정 프로그램의 실행횟수를 계산해서 평균값을 제공한다고 생각해 보면.. 

개발자 한명이 테스트를 위해 하루에 1,000번씩 실행하고, 실제 사용자인 10명이 10번씩만 실행한다고 하면 

평균값(mean)은 100번이 됩니다. 


중앙값(median)

이런 평균값(mean)은 의미가 없겠죠.. 

그래서 편향된 데이터와 이상치 때문에 그룻된 정보를 제공하는 경우를 위해 다른 평균이 존재합니다. 

바로 중앙에 있는 값을 가져오는 것인데요. 이를 중앙값(median)이라고 합니다. 


중앙값(median)은 가운데 있는 값을 계산하면 되는데요. 

처리 방법은 다음과 같습니다. 


  1. 작은 수에서 큰 수로 정렬
  2. 홀수인 경우, 한 가운데 값 (n+1)/2의 위치에 있는 값을 중앙값(median)으로 계산
  3. 짝수인 경우, 가운데 두 수를 더한 다음 2로 나누어서 중앙값(median)을 계산


실제로 평균값(mean)을 계산하는 것보다 중앙값(median)을 계산하는게 프로그래밍 적으로는 좀 더 복잡하기는 합니다. 


최빈값(mode)

다음 그림과 같은 특이한 경우에 최빈값(mode)을 평균으로 사용하기도 합니다. 



위 그림을 보면 그래프의 특성상 평균값(mean)이나 중앙값(median)이 실제 존재하지 않는 값을 나타내게 되므로 의미가 없어집니다.

이런 경우, 최빈값(mode)은 도수가 가장 높은 값을 나타내는데..  여기에서는 2와 32가 최빈값(mode)이 되겠죠.. 


위 그림과 같은 것을 bimodal이라고도 하는데요. 

이런 그래프는 만나지 못해서 아직까지 최빈값(mode)은 사용하지 못해봤네요.. ^^


통계 더 알아보기

통계를 왜 배워야 하는가?

통계의 중요성과 기본 용어들을 설명하고 있으니 꼭 살펴보세요

분산과 표준편차

평균을 알았다면 이제 분산과 표준편차를 이해할 차례입니다.

확률, 일어날 가능성을 측정하는 방법

조건부확률, 베이즈 정리 등 확률의 기본을 살펴볼 수 있습니다. 

이산확률분포 - 기대값과 분산

확률 분포를 알아보고 기대치를 계산해 보세요. 

이산확률분포 - 선형변환과 독립관측

선형변환으로 기대치의 변형을 이해하고 독립관측과 구분해 보세요. 

순열과 조합

배열, 순열, 그리고 조합에 대해서 고등학교 시절 기억을 떠올려 보세요~

기계학습이란?

수학적 지식을 기계학습(Machine Learning)에 활용해 보세요.

신고



Trackback 0 And Comment 0
prev | 1 | next