파이참 빌드환경을 콘다로 설정
https://blog.naver.com/PostView.nhn?blogId=wideeyed&logNo=221559824175&redirect=Dlog&widgetTypeCall=true&directAccess=false
2019년 12월 5일 목요일
2019년 11월 13일 수요일
2019년 10월 31일 목요일
Data Augmentation
부족한 데이터의 양을 보완하기 위해 원본 데이터의 정체성을 해치지 않는 수준의 변형을 가하여, 모델이 학습할 수 있는 데이터를 폭발적으로 증가시키는 방법이다.
- 머신 러닝 탐구생활 -
- 머신 러닝 탐구생활 -
2019년 10월 30일 수요일
2019년 10월 17일 목요일
2019년 9월 10일 화요일
Xcode에서 filament sample 소스 실행
filament 전체 소스를 받으면 platform별 sample 소스가 있음.
iOS의 경우 filament-master/ios/samples아래에 여러 소스가 있음.
## 빌드
Xcode에서 빌드를 하면 Project->Build Phases->Build Materials의 shell 스크립트의 경로 설정 부분이 달라서 오류가 발생. filament 소스 받아서 맨 상위에 있는 build.sh 실행하면 binaries가 생성됨.
> ./build.sh debug release
# 위 명령어는 디버그, 릴리즈 모드 둘다 빌드. 빌드 옵션 보려면 ./build.sh 실행하면 나옴.
빌드 결과는 filament-master/out/ 아래 경로에 생성됨.
## Xcode 프로젝트 설정
빌드된 binaries 경로 찾아서 Xcode의 Build Phases->Build Materials에 있는 스크립트에 경로 입력해야함.(입력보다는 기존 스크립트에 있는 경로를 본인 머신의 빌드 경로에 맞게 수정해야함.)
기본 shell script에 아래와 같은 형식의 경로가 있음.
기존 script
=> matc_path="../../../out/release/filament/bin/"
filament의 build 스크립트가 변경 됐는지 sample소스 script와 실제 빌드 후 path가 다름.
빌드 후 실제 경로
=> /소스위치/filament-master/out/cmake-release/tools/matc/matc
위 경로의 절대경로든 상대경로든 기존 shell script를 수정함.
script에는 위 경로가 파일 위치여야 함.(해당 파일이 있는 디렉토리 경로가 아님을 주의)
그러니까 위 경로는 matc 라는 unix binary 파일이 있는 해당 파일명을 포함한 위치임.
혹시 또 build.sh가 수정 돼서 build path가 변경 될 수 도 있으니 그럴 때는 shell에서 검색하면 됨.
소스 받은 위치로 이동해서 Build Materials의 shell script에 있는 파일명을 검색.
> find ./ -name matc
빌드를 debug, release모드로 했으니 debug/xxx, relese/xxx 이렇게 둘로 나뉜 결과가 나오면 release빌드 path 경로를 shell script에 입력(수정)하도록 한다. filament framework소스 디버깅이 필요하면 당연히 debug 경로가 들어간 path를 설정해야 함.
## Xcode에 headers, libraries 추가
Xcode에 header, library를 추가해야하는데 header 파일은 아래 경로에 분산되어 들어있음.
filament-master/filament 하위
filament-master/libs 하위
복잡하므로 header, library는 그냥 다운로드 받아서 사용함.
iOS에 추가할 라이브러리는 아래 경로에서 받으면 됨.
**Xcode에 header, library 폴더 추가 시 주의사항
- 두 폴더를 프로젝트 폴더 바로 아래에 복사 후 Xcode에 reference로 추가하도록 한다.
그렇지 않으면 헤더 경로를 여전히 찾지 못함.
- library의 경우 project->Build Phases->Link Binary With Libraries에서 '+' 기호 선택 후
나타나는 팝업화면에서 "Add Other..."버튼 선택하여 프로젝트 폴더 아래 복사한 "lib" 폴더 하위의
각 xxxx.a 라이브러리 파일들을 전체 선택해서 추가 한다.
Filament sample source에서 library include코드가 아래에서 처럼 built-in 형태로 되어 있음.
#include "xxxx.h" 형식으로 customized된 코드로 변경할 수 있지만 header 파일에 있는 모든 소스를 변경해야하기 때문에 다른 방법을 찾아야함.
1. 프로젝트에 레퍼런스를 추가한다.(copy if it's needed 체크)
2. 아래 스샷에서 처럼 Build Setting-> "All", "Combined" 선택 -> Search에 "header"입력하여 검색
3. 그러면 "Search Paths" 카테고리가 나타남.
4. Header Search Paths 더블 클릭하여 경로 설정 "$(PROJECT_DIR)/include"
: include 하위 폴더들이 있어도 알아서 빌더가 찾아서 컴파일함.
5. Library Search Paths 더블 클릭하여 경로 설정 "$(PROJECT_DIR)/lib/arm64"
: 실제 라이브러리가 있는 위치 설정
2019년 8월 25일 일요일
텐서플로로 배우는 딥러닝 10 image segmentation 소스 수정
# -*- coding: utf-8 -*- import numpy as npfrom PIL import Image# import scipy.misc as miscfrom matplotlib.pyplot import imread # 데이터를 배치 단위로 묶는 BatchDatset 클래스를 정의합니다.class BatchDatset: files = [] images = [] annotations = [] image_options = {} batch_offset = 0 epochs_completed = 0 def __init__(self, records_list, image_options={}): """ arguments: records_list: 읽어들일 file records의 list (record 예제: {'image': f, 'annotation': annotation_file, 'filename': filename}) image_options: 출력 이미지를 조정할 수 있는 옵션(dictionary 형태) 가능한 옵션들: resize = True/ False (resize를 적용할지 말지를 결정) resize_size = size of output image (resize된 출력이미지의 크기 - bilinear resize를 적용합니다.) """ print("Initializing Batch Dataset Reader...") print(image_options) self.files = records_list self.image_options = image_options self._read_images() # raw 인풋 이미지와 annoation된 타겟 이미지를 읽습니다. def _read_images(self): self.__channels = True self.images = np.array([self._transform(filename['image']) for filename in self.files]) self.__channels = False self.annotations = np.array( [np.expand_dims(self._transform(filename['annotation']), axis=3) for filename in self.files]) print(self.images.shape) print(self.annotations.shape) # 이미지에 변형을 가합니다. def _transform(self, filename): image = imread(filename) if self.__channels and len(image.shape) < 3: image = np.array([image for i in range(3)]) # resize 옵션이 있으면 이미지 resiging을 진행합니다. if self.image_options.get("resize", False) and self.image_options["resize"]: resize_size = int(self.image_options["resize_size"]) #im = Image.fromarray((x * 255).astype(np.uint8)) if int(image.shape[0]) <= 3: resize_image = np.array(Image.fromarray(np.transpose(image, (1, 2, 0))).resize(resample=Image.NEAREST, size=(resize_size, resize_size))) else: resize_image = np.array(Image.fromarray(image).resize(resample=Image.NEAREST, size=(resize_size, resize_size))) # resize_image = misc.imresize(image,[resize_size, resize_size], interp='nearest') else: resize_image = image return np.array(resize_image) # 인풋 이미지와 타겟 이미지를 리턴합니다. def get_records(self): return self.images, self.annotations # batch_offset을 리셋합니다. def reset_batch_offset(self, offset=0): self.batch_offset = offset # batch_size만큼의 다음 배치를 가져옵니다. def next_batch(self, batch_size): start = self.batch_offset self.batch_offset += batch_size # 한 epoch의 배치가 끝난 경우 batch index를 처음으로 다시 설정합니다. if self.batch_offset > self.images.shape[0]: # 한 epoch이 끝났습니다. self.epochs_completed += 1 print("****************** Epochs completed: " + str(self.epochs_completed) + "******************") # 데이터를 섞습니다.(Shuffle) perm = np.arange(self.images.shape[0]) np.random.shuffle(perm) self.images = self.images[perm] self.annotations = self.annotations[perm] # 다음 epoch을 시작합니다. start = 0 self.batch_offset = batch_size end = self.batch_offset return self.images[start:end], self.annotations[start:end] # 전체 데이터 중에서 랜덤하게 batch_size만큼의 배치 데이터를 가져옵니다. def get_random_batch(self, batch_size): indexes = np.random.randint(0, self.images.shape[0], size=[batch_size]).tolist() return self.images[indexes], self.annotations[indexes]
2019년 8월 16일 금요일
텐서플로, 케라스 GPU 사용하는지 확인
https://rfriend.tistory.com/425
import numpy as np
import pandas as pd
import keras
import tensorflow as tf
from IPython.display import display
import PIL #Pillow
# How to check if the code is running on GPU or CPU?
from tensorflow.python.client import device_lib
print(device_lib.list_local_devices())
tf.test.is_gpu_available(
cuda_only=False,
min_cuda_compute_capability=None
)
# Returns:
# True if a GPU device of the requested kind is available.
import numpy as np
import pandas as pd
import keras
import tensorflow as tf
from IPython.display import display
import PIL #Pillow
# How to check if the code is running on GPU or CPU?
from tensorflow.python.client import device_lib
print(device_lib.list_local_devices())
tf.test.is_gpu_available(
cuda_only=False,
min_cuda_compute_capability=None
)
# Returns:
# True if a GPU device of the requested kind is available.
라벨:
#케라스,
#텐서플로,
#GPU,
#keras,
#tensorflow
아나콘다 CUDA 환경 셋팅
https://hoony-gunputer.tistory.com/95
윈도우 환경 설정 무시하고 그래픽 드라이버 설치하고 위 블로그 중간 conda 가상환경 만드는 것 부터 실행하면 됨
윈도우 환경 설정 무시하고 그래픽 드라이버 설치하고 위 블로그 중간 conda 가상환경 만드는 것 부터 실행하면 됨
우분투 CUDA, cuDNN 설치
참고 : https://hwiyong.tistory.com/86
1. 그래픽 드라이버는 별도 설치
2. CUDA 및 CUDA sample은 .run 파일로 설치(링크 블로그에서 처럼 export 필요없음)
3. 환경설정 값 꼭 잡아줘야함.
4. cuDNN은 NVIDIA에서 로그인 후 다운받아서 설치해야함.
https://medium.com/@exesse/cuda-10-1-installation-on-ubuntu-18-04-lts-d04f89287130
10.1 설치하고 apt로 업데이트할 때 옵션에서 최신으로 설치 하면 10.2가 설치 됨. ㅡㅡ;
어쨌던 돌아는 감.
1. 그래픽 드라이버는 별도 설치
2. CUDA 및 CUDA sample은 .run 파일로 설치(링크 블로그에서 처럼 export 필요없음)
3. 환경설정 값 꼭 잡아줘야함.
4. cuDNN은 NVIDIA에서 로그인 후 다운받아서 설치해야함.
https://medium.com/@exesse/cuda-10-1-installation-on-ubuntu-18-04-lts-d04f89287130
10.1 설치하고 apt로 업데이트할 때 옵션에서 최신으로 설치 하면 10.2가 설치 됨. ㅡㅡ;
어쨌던 돌아는 감.
2019년 8월 13일 화요일
2019년 8월 1일 목요일
R 스크립트 한글 깨짐 해결
RStudio 에서 한글이 깨질 때 : (2) Reopen with Encoding 'CP949 (system default)' |
출처: https://rfriend.tistory.com/10 [R, Python 분석과 프로그래밍의 친구 (by R Friend)]
2019년 7월 27일 토요일
R Error in tolower() invalid multibyte string using DocumentTermMatrix
https://stackoverflow.com/questions/13187605/error-in-tolower-invalid-multibyte-string
# to avoid datatables warning: error in tolower(x) invalid multibyte string
# assuming all columns are char
new_data <- as.data.frame(
lapply(old_data, enc2utf8),
stringsAsFactors = FALSE
)
2019년 7월 26일 금요일
P-value
원문 : https://JihongL.github.io/2017/09/12/P-value/
P-value, 유의확률
통계학을 배우면서 많이 들었던 개념 중 하나, P-value.
P-value는 우리말로는 유의확률이라고 표현하며, 귀무가설이 맞는다는 가정하에, 표본에서 관찰된 값이 귀무가설에서 얼마나 관찰될지에 대한 확률값이다.
P-value를 유의수준과 비교하여 귀무와 대립 중 어느것을 채택할지 결정하는데, 보통 유의수준을 0.05로 선정하고 P-value값이 이보다 낮게 측정되면 대립가설을 채택하게 된다.
P-value는 우리말로는 유의확률이라고 표현하며, 귀무가설이 맞는다는 가정하에, 표본에서 관찰된 값이 귀무가설에서 얼마나 관찰될지에 대한 확률값이다.
P-value를 유의수준과 비교하여 귀무와 대립 중 어느것을 채택할지 결정하는데, 보통 유의수준을 0.05로 선정하고 P-value값이 이보다 낮게 측정되면 대립가설을 채택하게 된다.
대립가설을 채택할 기준이 0.05라는 것은, 0.95는 귀무가설을 채택할 것이라는 것이며, 가설채택에 있어 기존의 입장을 유지하려는 경향이 크다는 것을 의미한다. 즉 보수적이라는 것.
이러한 경향을 바탕으로 P-value는 Smoking gun이라는 생각이 들었다. 무죄추정의 원칙을 기반으로 하는 법정에서 증거를 바탕으로 유죄를 선고하듯, P-value도 가설채택에 결정적인 역할을 한다고 봤기 때문.
이러한 경향을 바탕으로 P-value는 Smoking gun이라는 생각이 들었다. 무죄추정의 원칙을 기반으로 하는 법정에서 증거를 바탕으로 유죄를 선고하듯, P-value도 가설채택에 결정적인 역할을 한다고 봤기 때문.
예를들어, 특정 학급의 평균 키가 170cm일 것이라는 귀무가설과 170cm보다 클 것이라는 대립가설을 세우고, 그 유의수준을 0.05로 가정해보자. 이를 나타내면 다음과 같을 것이다.
H0:M=170
H1:M>170
α:0.05
θ:1
H1:M>170
α:0.05
θ:1
이때, 표본에서 관찰된 값이 170이면 귀무가설을 강화하게 된다.
하지만 172가 관찰되었다면? 이때 P-value는 0.0228로, 유의수준인 0.05보다 작으며, 해당 연구는 대립가설을 채택하게 된다.
하지만 172가 관찰되었다면? 이때 P-value는 0.0228로, 유의수준인 0.05보다 작으며, 해당 연구는 대립가설을 채택하게 된다.
이처럼 다양한 연구에 통계적인 유의미를 따지기 위해서 P-value를 가장 많이 사용한다. 하지만 P-value에도 다양한 한계가 존재하기에 사용할 때에도, 다른이의 연구를 볼 때도 주의가 필요하다.
우선, P-value는 귀무가설이 맞는다는 가정하에서 측정되는 값이다. P-value가 0.02라는 것은 해당 사건이 귀무가설 하에서 발생할 확률이 0.02%인 것으로 해석된다. 여기서 반대로 대립가설이 맞을 확률을 나머지 0.98로 해석할 수 있는데, 이는 수치를 곡해하는 것이다. 또한 P-value 자체가 차이의 크기를 나타내지 못한다는 것을 인지하고 있어야 한다. 실험의 설계에 따라 실제로는 아주 미세한 차이임에도 통계적으로 유의한 차이가 있는 것처럼 P-value를 악용할 수도 있다.
다음으로는 연구에 사용되는 데이터가 많아질수록 P-value가 작아진다는 것이다.
이러한 P-value의 한계를 악용하여 본인의 연구를 의미 있게 발표하는 학자들이 간혹 있다고 한다. 따라서 P-value는 해당 실험결과가 귀무가설과 차이가 발생했다는 것으로 인지하고, 결과를 받아들이기 전에 비판적으로 바라볼 필요가 있다.
P-value를 통해 연구결과를 왜곡하는 경우가 발생하면서 사용을 금지한 경우도 발생했다. (링크) 하지만, 이들도 P-value를 대체할 기준을 제시하지는 못했다고. 따라서 P-value를 대체할 기준을 찾기 전까지는 연구의 신뢰성을 위한 다른 수치도 함께 제공해야 한다. 바로 연구의 신뢰구간과 효과크기를 함께 제시하는 것이다. 이를 수치를 함께 참고함으로써 해당 연구가 어떤 기준에서 유의미하다고 판단할 수 있을지 객관적으로 볼 수 있을 것이다.
2019년 7월 25일 목요일
Homebrew 설치
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
install.packages("ggiraphExtra") 설치 오류
When I install ggiraph or rvg I get the following code:
brew update
brew upgrade
brew reinsall cairo
R 한글 인코딩 문제
Sys.setlocale("LC_CTYPE", "ko_KR.UTF-8");
txt <- readLines(file("file.txt", encoding = "EUC-KR"))
RSQLite install.pacakges로 설치 오류 날때
1. 아래 주소에서 바이너리 압축파일을 받는다.
https://cran.r-project.org/web/packages/RSQLite/index.html
2. 다운로드 받은 압축파일이 있는 경로에서 커맨트 창에 아래 명령어를 실행한다.
3. R Studio에서 Load한다.
library(RSQLite)
https://cran.r-project.org/web/packages/RSQLite/index.html
2. 다운로드 받은 압축파일이 있는 경로에서 커맨트 창에 아래 명령어를 실행한다.
R CMD INSTALL RSQLite_2.1.1.tgz
3. R Studio에서 Load한다.
library(RSQLite)
'Error : .onLoad failed in loadNamespace() for 'rJava'
user@userui-MacBook-Pro /usr/bin sudo R CMD javareconf
Password:
Java interpreter : /usr/bin/java
Java version : 12.0.2
Java home path : /Library/Java/JavaVirtualMachines/jdk-12.0.2.jdk/Contents/Home
Java compiler : /usr/bin/javac
Java headers gen.: /usr/bin/javah
Java archive tool: /usr/bin/jar
trying to compile and link a JNI program
detected JNI cpp flags : -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/darwin
detected JNI linker flags : -L$(JAVA_HOME)/lib/server -ljvm
clang -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG -I/Library/Java/JavaVirtualMachines/jdk-12.0.2.jdk/Contents/Home/include -I/Library/Java/JavaVirtualMachines/jdk-12.0.2.jdk/Contents/Home/include/darwin -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -I/usr/local/include -fPIC -Wall -g -O2 -c conftest.c -o conftest.o
clang -dynamiclib -Wl,-headerpad_max_install_names -undefined dynamic_lookup -single_module -multiply_defined suppress -L/Library/Frameworks/R.framework/Resources/lib -L/usr/local/lib -o conftest.so conftest.o -L/Library/Java/JavaVirtualMachines/jdk-12.0.2.jdk/Contents/Home/lib/server -ljvm -F/Library/Frameworks/R.framework/.. -framework R -Wl,-framework -Wl,CoreFoundation
JAVA_HOME : /Library/Java/JavaVirtualMachines/jdk-12.0.2.jdk/Contents/Home
Java library path: $(JAVA_HOME)/lib/server
JNI cpp flags : -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/darwin
JNI linker flags : -L$(JAVA_HOME)/lib/server -ljvm
Updating Java configuration in /Library/Frameworks/R.framework/Resources
Done.
R studio에서
> Sys.setenv(JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk-12.0.2.jdk/Contents/Home/")
라벨:
java,
R,
Sys.setenv
2019년 7월 19일 금요일
2019년 7월 18일 목요일
2019년 7월 7일 일요일
Jypyter notebook Kernel died
The kernel appears to have died. It will restart automatically.
pip install --upgrade numpy
pip install --upgrade numpy
2019년 6월 28일 금요일
2019년 6월 27일 목요일
2019년 5월 29일 수요일
Installing R Studion on Ubuntu 16.04 LTS
"rstudio error configuration failed for package xml2"
When you meet that kind of error message above, you can type the commend in terminal below
sudo apt-get install r-base-dev xml2 libxml2-dev libssl-dev libcurl4-openssl-dev unixodbc-dev
When you meet that kind of error message above, you can type the commend in terminal below
sudo apt-get install r-base-dev xml2 libxml2-dev libssl-dev libcurl4-openssl-dev unixodbc-dev
2019년 5월 28일 화요일
ARCH
출처 : https://blog.naver.com/wujuchoi
1. 배경
- AutoRegressive Conditional Heteroskedasticity(자기회귀 조건부 이분산성)
- 잔차, 백색잡음, 오류, innovation 주1 가 시계열에서 특정시점을 기준으로 이전 시점과 차이로 정의되고, 동일의미이며, 잔차(residual)라고 부르자.
- 백색잡음의 분산으로 변동성을 표현하는 식
- In 1982, Robert Engle에 의하며 발표되었다.
2. 의미
- 특정시점의 값을 Xt라하면,
- Xt = sigma(편차) * Zt로 표현 가능, Zt는 N(0,1)를 따르는 분포이다.
- Xt, Zt는 백색잡음(잔차)이나 동일하지 않다.
- 파악하기) Xt는 N(0,1)을 따르는 분포의 편차 배로 표현해도 된다(가능하다)
- 그러면, 백색잡음(잔차)의 분산을 sigma^2으로 표현하면,
AR의 표기법처럼
- sigma^2 = a0 + sum(ai * (Xt-i)^2), i=0부터 q까지
로 표현가능하다.
3. 이해하는 과정
- 식을 표현하는 과정에서, N(0,1)이라는 분포를 사용하는 점.
- 분산을 AR 선형방정식으로부터 유도하지 않고,
계수를 변경하여 비슷한 선형방정식으로 표현한다.
- 만약 가정 중 Xt = sigma(편차) * Zt에서,
sigma의 의미가 변동폭을 나타냄으로 sigma가 특정시점에
커지면, 어떤 사건이 발생했다고 봐도 된다.
4. GARCH는?
- ARCH 보완으로
- ARCH 선형방식에 분산을 추가하는 선형방정식을 만들어서 일반화하였다.
1. 배경
- AutoRegressive Conditional Heteroskedasticity(자기회귀 조건부 이분산성)
- 잔차, 백색잡음, 오류, innovation 주1 가 시계열에서 특정시점을 기준으로 이전 시점과 차이로 정의되고, 동일의미이며, 잔차(residual)라고 부르자.
- 백색잡음의 분산으로 변동성을 표현하는 식
- In 1982, Robert Engle에 의하며 발표되었다.
2. 의미
- 특정시점의 값을 Xt라하면,
- Xt = sigma(편차) * Zt로 표현 가능, Zt는 N(0,1)를 따르는 분포이다.
- Xt, Zt는 백색잡음(잔차)이나 동일하지 않다.
- 파악하기) Xt는 N(0,1)을 따르는 분포의 편차 배로 표현해도 된다(가능하다)
- 그러면, 백색잡음(잔차)의 분산을 sigma^2으로 표현하면,
AR의 표기법처럼
- sigma^2 = a0 + sum(ai * (Xt-i)^2), i=0부터 q까지
로 표현가능하다.
3. 이해하는 과정
- 식을 표현하는 과정에서, N(0,1)이라는 분포를 사용하는 점.
- 분산을 AR 선형방정식으로부터 유도하지 않고,
계수를 변경하여 비슷한 선형방정식으로 표현한다.
- 만약 가정 중 Xt = sigma(편차) * Zt에서,
sigma의 의미가 변동폭을 나타냄으로 sigma가 특정시점에
커지면, 어떤 사건이 발생했다고 봐도 된다.
4. GARCH는?
- ARCH 보완으로
- ARCH 선형방식에 분산을 추가하는 선형방정식을 만들어서 일반화하였다.
백색잡음
출처 : https://blog.naver.com/wujuchoi
1. 배경
: 시계열분석에서 정상시계열로 분석하는 과정에 필요한 과정 중 필요 요소
: 실 세계의 시계열 정보는 비정상시계열이므로 이를 정상시계열로 변경이 필요
2. 의미
: 시계열 중 기준시점을 지정하고, 기준시점 이전과의 차이를 잡음이라고 한다.
: 예를 들면, 기준시점 값이 100이고, 기준시점 -1의 값이 95일때,
백색 잡음은 100 - 95 = 5가 된다.
: 시계열분석을 위해서 이 잡음을 확률변수가 I.I.D(Independently and Identically Distributed)를
따르면 백색잡음이라고 한다.
: 잡음을 I.I.D를 따르는 확률변수(백색잡음)로 과정을 정상화과정이라고 한다.
: 회귀분석에서 사용되는 잔차(Residual) 의미와 유사하다.
3. lag(시차지연)
: 시계열분석을 위하여 백색잡음을 찾아가는 과정에 사용되는 요소
: 잡음을 정하기 위해서 lag를 1, 2, 3, ...들로 정할 수 있다.
4. AR(AutoRegression) 이란 주1
: 기준일 값은 이전값들의 선형결합으로 구성된다고 가정
: 현재값 = sum(이전값i * 가중치i) + 잡음 (여기서 i=1 부터 p까지, p는 lag수, 기간 )
5. MA(Moving Average) 이란 주1
: 기준일 값은 이전값들과의 차이인 잡음들과의 선형결합으로 구성된다는 가정
: 현재값 = sum(잡음i * 가중치i) + 평균 (여기서 i=1 부터 p까지, p는 lag수, 기간 )
*IID(independent and identically distributed)
동전을 네 번 던지는 실험을 생각해보죠..
동전을 네 번 던지는 실험에서 매 던질 때 마다 관측되는 면을 나타내는 확률변수를 X1, X2, X3, X4 라고 하고, 앞면이 나오면 1, 뒷면이 나오면 0이라고 생각할 수 있습니다.
즉, X1,X2, X3,X4 는 각각 독립적으로 값이 발생할 수 있으며, 각각 1이 나올 (즉, 동전이 앞면이 나올) 확률이 0.5, 0이 나올 (즉, 뒷면이 나올) 확률은 0.5로서 다 같습니다. 이런 의미에서 X1,X2, X3,X4 은 독립적이고 동일한 분포를 따른다고 할 수 있습니다 .
또 다른 실험을 생각하겠습니다.
1번부터 45번까지의공이 들어있는 상자에서 공을 다섯번 복원으로 뽑는다고 생각해보죠.
즉, 한 번 보고 다시 상자안에 넣는 경우입니다.
이럴 때, 각 뽑힌 공의 숫자를 X1, X2,X3, X4, X5 라고 하면,
제일 처음 나온 숫자가 다음 뽑힐 숫자에 영향을 주지 않습니다.
즉, X1,X2,X3,X4, X5 는 서로 독립이라고 할 수 있습니다.
그리고 처음 뽑히는 숫자 X1의 분포는 1부터 45까지 균일하게 1/45의 확률로 뽑힐 수 있습니다. 마찬가지로 두번째 뽑히는 숫자 X2도 X1과 상관없이 1부터 45까지 균일하게 1/45의 확률로 뽑힐 수 있습니다. 세번째,네번째, 다섯번째도 마찬가지입니다.
즉, X1,X2,X3,X4, X5 각각 균일하게 1/45의 확률로 뽑히므로 동일한 분포를 가집니다.
결국 , X1,X2,X3,X4, X5 는 서로 독립이고 동일한 분포를 가지는 확률변수가 됩니다.
1. 배경
: 시계열분석에서 정상시계열로 분석하는 과정에 필요한 과정 중 필요 요소
: 실 세계의 시계열 정보는 비정상시계열이므로 이를 정상시계열로 변경이 필요
2. 의미
: 시계열 중 기준시점을 지정하고, 기준시점 이전과의 차이를 잡음이라고 한다.
: 예를 들면, 기준시점 값이 100이고, 기준시점 -1의 값이 95일때,
백색 잡음은 100 - 95 = 5가 된다.
: 시계열분석을 위해서 이 잡음을 확률변수가 I.I.D(Independently and Identically Distributed)를
따르면 백색잡음이라고 한다.
: 잡음을 I.I.D를 따르는 확률변수(백색잡음)로 과정을 정상화과정이라고 한다.
: 회귀분석에서 사용되는 잔차(Residual) 의미와 유사하다.
3. lag(시차지연)
: 시계열분석을 위하여 백색잡음을 찾아가는 과정에 사용되는 요소
: 잡음을 정하기 위해서 lag를 1, 2, 3, ...들로 정할 수 있다.
4. AR(AutoRegression) 이란 주1
: 기준일 값은 이전값들의 선형결합으로 구성된다고 가정
: 현재값 = sum(이전값i * 가중치i) + 잡음 (여기서 i=1 부터 p까지, p는 lag수, 기간 )
5. MA(Moving Average) 이란 주1
: 기준일 값은 이전값들과의 차이인 잡음들과의 선형결합으로 구성된다는 가정
: 현재값 = sum(잡음i * 가중치i) + 평균 (여기서 i=1 부터 p까지, p는 lag수, 기간 )
*IID(independent and identically distributed)
동전을 네 번 던지는 실험을 생각해보죠..
동전을 네 번 던지는 실험에서 매 던질 때 마다 관측되는 면을 나타내는 확률변수를 X1, X2, X3, X4 라고 하고, 앞면이 나오면 1, 뒷면이 나오면 0이라고 생각할 수 있습니다.
즉, X1,X2, X3,X4 는 각각 독립적으로 값이 발생할 수 있으며, 각각 1이 나올 (즉, 동전이 앞면이 나올) 확률이 0.5, 0이 나올 (즉, 뒷면이 나올) 확률은 0.5로서 다 같습니다. 이런 의미에서 X1,X2, X3,X4 은 독립적이고 동일한 분포를 따른다고 할 수 있습니다 .
또 다른 실험을 생각하겠습니다.
1번부터 45번까지의공이 들어있는 상자에서 공을 다섯번 복원으로 뽑는다고 생각해보죠.
즉, 한 번 보고 다시 상자안에 넣는 경우입니다.
이럴 때, 각 뽑힌 공의 숫자를 X1, X2,X3, X4, X5 라고 하면,
제일 처음 나온 숫자가 다음 뽑힐 숫자에 영향을 주지 않습니다.
즉, X1,X2,X3,X4, X5 는 서로 독립이라고 할 수 있습니다.
그리고 처음 뽑히는 숫자 X1의 분포는 1부터 45까지 균일하게 1/45의 확률로 뽑힐 수 있습니다. 마찬가지로 두번째 뽑히는 숫자 X2도 X1과 상관없이 1부터 45까지 균일하게 1/45의 확률로 뽑힐 수 있습니다. 세번째,네번째, 다섯번째도 마찬가지입니다.
즉, X1,X2,X3,X4, X5 각각 균일하게 1/45의 확률로 뽑히므로 동일한 분포를 가집니다.
결국 , X1,X2,X3,X4, X5 는 서로 독립이고 동일한 분포를 가지는 확률변수가 됩니다.
2019년 3월 6일 수요일
To set mac bash theme
http://www.marinamele.com/2014/05/customize-colors-of-your-terminal-in-mac-os-x.html
#PS1='[\u@\h \W]\$' # Default
PS1='\[\e[1;32m\][\u@\h \W]\$\[\e[0m\]'
export CLICOLOR=1
export LSCOLORS=GxFxCxDxBxegedabagaced
alias ll='ls -l'
alias la='ls -al'
2019년 2월 20일 수요일
Conda python path 설정
1. vi .zshrc (OR vi .bash_profile)
2. export PATH="/Users/jaehoojeon/anaconda3/bin:$PATH" 입력
3. esc
4. wq
5. source .zshrc (OR source .bash_profile)
vscode 한글 설정
1. shift + cmd + x : 확장 프로그램 검색 실행
2. "korean" 입력 후 검색
3. 맨위 언어 확장팩 설치
4. 우측 하단 "restart" 클릭
5. 짜잔~
2. "korean" 입력 후 검색
3. 맨위 언어 확장팩 설치
4. 우측 하단 "restart" 클릭
5. 짜잔~
2019년 2월 11일 월요일
이계도함수(d^2/dx^2) 의 의미.
출처
우리가 흔히 평균변화율을 이를 때 Δx/Δy 로 표현을 합니다.
그리고 "x 의 증가량 분의 y 의 증가량" 이라고 말을 하지요.
그리고 "x 의 증가량 분의 y 의 증가량" 이라고 말을 하지요.
증가량= 거리, = distance..
중학교 때부터 x 의 거리와 y 의 거리값의 비율을 구하여, 이것을 "기울기" 라는 표준화된 숫자로 "기울어진 정도" 를 표현해 왔습니다. 그리고 이것은 물리학적으로 표현하자면, "평균적인 변화율", 또는 "등속 운동으로 보았을때의 속도" 정도가 되겠네요.
그런데, 이것은 사실 EXTRA 에 불과한것이고..
사실상 더 중요한것은, 한 점(또는 순간)에서의 속도/증가율이라는것이죠. 자동차의 속도계를 볼 때 나타나는 속도는 분명히 그 순간의 속도입니다. 자동차의 속도계가 만약 평균적인 속도를 나타낸다면, 대단히 답답할 것입니다..
하여튼.. 이러한 이유로 인하여 미분을 정의하게 되고..
미분이라는것도 결국은 "평균 변화율" 의 극한값이 되는셈인데요..
미분이라는것도 결국은 "평균 변화율" 의 극한값이 되는셈인데요..
Δx/Δy 를 dy/dx 로 표현한것에 불과합니다.
(d 가 아마 distance 가 아닐까 생각되네요..)
(d 가 아마 distance 가 아닐까 생각되네요..)
그런데, 이 dy/dx 는 이중,삼중적인 의미를 가지게 됩니다..
첫번째 의미는,
dy/dx.. 말 그대로 "y의 순간증가율/x 의 순간 증가율" 이라는것이고..
두번째 의미는,
"x 에 관하여 y 를 미분하라" 는 뜻이 됩니다.
"x 에 관하여 y 를 미분하라" 는 뜻이 됩니다.
첫번째 의미에서, dy/dx 는 "사실상 나눗셈" 과 같은 연산을 시행할 수 있게 되구요.. (그러나 극한이기 때문에 함부러 나눌 수는 없지요..)
두번째 의미에서, 아래와 같이 변형이 가능하게 됩니다..
dy d
-- = -- y
dx dx
-- = -- y
dx dx
즉, x 에 관하여 y 를 미분하라는 뜻이 강하게 표현된거죠..
이제, 그럼 이계도 함수를 구해 볼까요.
이계도 함수는, dy/dx 를 다시 미분하는겁니다..
그렇다면, 이번에는 "x 의 증가량분에 dy/dx 의 증가량" 이 되고요..
이것을 기호로 표시하면,
d (dy/dx)
-------
dx
-------
dx
이렇게 되죠.. 이것을 첫번째 의미를 이용하여 좀 변형해 보면,
d (dy)
----
(dx)^2
----
(dx)^2
이렇게 되고,
이것이 우리가 흔히 배우는..
d^2y
----
dx^2
----
dx^2
이런식으로 변형이 된겁니다.
아래 분자는 당연히 (dx)^2 이라고 써야 하지만.. 귀찮으니까
그냥 dx^2 이라고 표현을 하죠..
그러고서는 .. 저건 기호이지, 분수가 절대 아니다..
이런식으로 얘기하게 되죠.. (사실상 분수 계산을 해 놓고선!!!)
만약 저기서 미분해야 될 y 부분이 복잡해지면..
이를테면, y=x^3+1 이다.. 라고 할 때 이계도 함수를 표현하면
d^2 (x^3+1) d^2
---- = ---- (x^3+1)
dx^2 dx^2
위와 같이 표현하게 되죠..
미분의 기호는 참 멋집니다.. 생각하면 할 수록 멋진 기호죠..
그리고 적분 기호도 살펴보면 볼수록 대단한 의미의 함축이 되어 있다고 볼 수 있습니다..
라이프니츠의 이러한 기호학은 미적분학의 발전을 몇백년 앞당겼다고 해도 과언이 아닐것입니다. 우리가 고교에서 미적분학을 쉽게 배울 수 있는것도,알고보면 다 라이프니츠 덕분이 아닐까요...
2019년 2월 3일 일요일
피드 구독하기:
글 (Atom)