728x90

가설 hypothesis

- 추정량에 대한 검정을 위한 명제

- 추정량이 올바른지 검정하는 과정을 가설 검정이라고 함.

- 귀무 가설 null hypothesis H0 : 발생할 확률이 희박하다고 생각되는 가설로, 일어날지 검증하고자 하는 가설

- 대립 가설 alternative hypothesis H1 : 귀무 가설에 반대되는 가설.

 

 

가설 검정의 오류

- 제 1종 오류(유의 수준) : 귀무 가설이 참이지만, 기각할 확률

- 제 2종 오류 : 귀무 가설이 거짓이지만, 채택할 확률

 

 

검정 통계량과 기각역

- 귀무가설의 채택 여부를 결정할때 사용하는 통계량

- 기각역 rejection(critical) area  : 가설의 기각 여부를 판단하기 위한 영역. 검정통계량이 기각역에 속하면 귀무가설기각

- 귀무 가설에 따른 검정 통계량과 기각역의 범위(표본이 클떄, 평균 검정 시)

 

 

 

유의확률 p  value

- 귀무 가설을 기각할수 있는 최소의 유의 수준으로 한계 유의 수준이라고도 함.

- 유의 확률 p value가 유의 수준 alpha(일반적으로 0.05)보다 작은 경우 귀무가설을 기각

 

 

 

 

카테고리형 데이터 분석하기(카이 제곱 검정)

- 카테고리마다 도수가 주어질때, 카테고리 간의 유의미한 차이가 존재하는지 검정을 통해 분석

- 적합도 검정, 동질성 검정, 독립성 검정 등 존재

- 카이제곱 통계량을 이용하므로 카이 제곱 검정이라고도 함.

- 적합도 검정 : 개별 카테고리가 유의미한 수치를 가지고 있는지에 대한 가설 검정

- 동질성 검정 : 카테고리 간에 유의미한 차이가 존재하지 않은지(동질적인지)를 다루는 가설에 대한 검정 

- 독립성 검정 : 카테고리 사이 독립, 의존 여부에 대한 검정

300x250
728x90

 

표본 분포 sample distribution

- 통계량에 대한 확률 분포

- 모집단을 알기 위해 모집단으로부터 샘플, 표본을 추출하여 모집단의 모수를 추정한다.

- 통계량은 표본에 대한 함수로 표본 평균과 표본 분산 등

- 표본 평균과 모집단이 정규분포를 따를때 표본 평균의 통계량

- 표본 분산과 표본 분산의 통계량

 

중심극한정리

- 표본 평균 bar x의 분포는 표본이 많을떄, 모집단의 분포와 상관없이 정규 분포를 따름.

 

 

 

점추정

- 표본으로부터 모수를 추정하는 과정

- 추정자/추정량 estimator : 표본으로부터 모수 추정을 위한 함수 -> 표본 평균, 표본 부난 등 

- 추정치 estiamte : 추정자로 구한 통계량 값

- 점 추정 방법으로 적률 추정법과 가능도 함수를 이용한 방법 등이 존재.

 

 

 

구간 추정

- 점추정과 표본으로부터 모수를 추정하는 방법이나 추정한 모수에 대해 신뢰할수 있는 구간도 같이 구하는 방법

- 일반적으로 유의 기준 alpha = 0.05로 설정하여 95% 확률로 신뢰구간이 모수를 포함하도록 구간을 구함.

 

모평균 구간 추정

- 표본으로 추정한 모평균이 신뢰 구간에 100(1-alpha)%에 들어갈 확률은 다음과 같이 얻는다.

-> 아래는 표본이 충분히 크고, 모분산을 아는경우,

* 표본이 작은 경우는 t분포를 이용하여, 모분산을 모르는 경우 표본 분산을 이용하여 구한다.

 

 

모평균 구간 추정

- 학생 30명을 뽑아 성정 평균이 80, 분산이 8인경우 성적 평균의 95% 신뢰 수준의 신뢰 구간을 구해보자

 

 

 

 

모분산 구간추정

- 모분산 sigma2에 대한 구간 추정을 위해, 자유도가 n - 1인 카이제곱 분포를 이용

 

 

 

 

 

 

두 모집단의 평균차이에 대한 신뢰 구간 구하기

- 표본이 크고 모집단 표준편차를 아는 경우/표본이 작고 모집단 표준편차를 모르는경우/표본이 같고 모집단 표준편차가같은경우

- 위 세가지 경우로 나누어서 구할 수 있다.

 

1. 표본이 크고, 모집단의 표준편차를 아는 경우 평균 차이에 대한 신뢰구간 구하기

2. 표본이 작고, 모집단의 표준 편차를 모르는 경우 평균 차이에 대한 신뢰구간 구하기

3. 표본이 작고, 표준 편차가 같아 공통 분산 pooled variance S_sigma_p를 갖는 경우

 

 

 

 

 

표본의 최소 크기

- 유의 수준 alpha에서 정확도 d를 보장하는 표본의 최소 크기는 아래의 공식으로 구할 수 있다.

 

 

추정량 결정하기

- 추정량 : 추정자 estimator를 통해 얻은 모수의 추정값

- 좋은 추정량 estimates를 구하기 위해 다음의 세가지 기준들이 있음.

- 불편성(불편향성) : 추정량의 기대치가 모수에 가까워야 한다.

- 효율성 : 추정량의 분산이 작아야 한다.

- 일치성 : 표본이 커질수록 추정량이 모수에 가까워져야 한다.

 

 

 

 

 

300x250
728x90

통계학

- 주어진 데이터로부터 의미있는 정보를 추론하고 의사결정에 활용하기 위한 학문

- 추론 이론 : 빈도론자와 베이지안으로 구분

- 데이터의 불확실/불안정/변동성을 고려하여 지식을 일반화함.

 

 

 

 

용어

- 시행 trial : 실험을 수행하는 행위

- 원소 element : 실험의 시행 결과

- 모집단 population : 알고자 하는 전체 집단으로 관심 대상

- 표본 공간 sample space : 모든 원소들의 집합

- 사건 event : 표본 공간의 부분집합.

- 확률 변수 Random Variable : 표본 공간에 발생한 원소들(사건)을 하나의 정수나 실수로 맵핑한 변수.

- 확률 : 확률 변수가 주어질때, 발생할 가능성

- 확률 분포 probability distribution : 확률 변수의 특성을 함수로 나타낸 분포.

- 이산 확률 분포 descrete pd : 확률 변수가 이산적인 확률 분포

- 확률 질량 함수 pmf : 이산 확률 변수의 확률을 나타내는 함수

- 통계량 : 표본을 이용하여 구한 함수

 

 

통계적 추론의 분야

- 확률 이론 : 확률 분포, 표본 분포

- 추론 이론 : 추정법 estimation, 검정법 test

 

 

 

베르누이 분포 bernoulli distribution

- 베르누이 시행을 따르는 이산 확률 분포

- 베르누이 시행 : 상호 배반인 사건인 시행

 

 

이항 분포 binomial distribution

- 베르누이 시행을 독립적으로 여러번 했을때 성공 횟수를 확률 변수 X로 하는 이산확률분포

 

 

 

 

포아송 분포 poison distribution

- 단위 시간 당 일어나기 힘든 사건이 발생한 횟수를 확률 변수 X로 할때의 확률 분포

- 이항 분포가 n이 매우 크고, p가 매우 작은 경우 포아송 분포를 따르게 된다. (lambda = np로 정의)

- 한 시간동안 평균 2명이 대기줄에서 나가는데, 한시간 동안 한명도 나가지 못할 확률

 

 

 

 

기하 분포 geometric distribution

- 첫번째 성공이 일어날떄까지 시행 횟수를 확률 변수 X라 할떄의 확률분포

 

 

 

 

 

 

 

 

 

정규분포 normal distribution

- 평균 mu를 중심으로 분산 sigma2를 갖는 종모양 형태의 확률 분포

- 정규분포를 따르는 모집단에서 추출한 표본들의 분포로 t분포, 카이제곱분포, F분포 등 존재

 

 

 

 

t 분포

- 모집단이 정규분포를 따르나 모표준편차를 모를때, 표본 분산으로 정규화된 확률 표본 X_i는 t분포를 따름.

 * 표본의 크기가 30개 보다 작은경우 사용.

- t검정(평균 검정)에서 사용.

- 모표준편차로 표준화 한 경우

- 표본분산 S2로 표준화 한경우의 확률 분포 -> 자유도 (n-1)인 t분포

 

 

 

 

 

 

지수 분포 exponential distribution

- 사건이 처음 발생할때까지 소요되는 대기시간을 확률변수 X라 할떄의 확률분포

 

감마분포 gamma distribution

- r번째 사건이 발생할떄까지 대기시간 X를 확률 변수로할때의 확률 분포

 

 

카이제곱 분포

- 모분산 추정, 적합도 검정, 교차표 검정에 사용되는 확률 분포

- 왼쪽으로 기울어진 형태이며, 자유도가 커질수록 정규분포와 유사해짐.

- 감마 분포의 특수한 형태 : r= n/2, lambda = 1/2인 경우. -> X ~ chi2(n)을 따름.

- 정규 분포를 따르는 확률 변수를 표준화한 것을 제곱하면 chi2(1)을 따른다.

 

 

F 분포

- 두 모집단의 분산의 비를 확률 변수로 하는 확률 분포

- F 검정과 분산 분석에서 사용됨.

 

 

300x250
728x90

판별 분석 discriminant analysis

- 측정 변수들로 각 행, 개체들이 어느 그룹에 속하는지 판별하는 방법

- 주어진 데이터로 가장 잘 판별할수 있는 판별식을 만들어, 새로운 데이터를 분류함

 

 

 

판별 분석의 예시

- 은행이 기업에 대출 시, 대출 전 기업의 도산 가능 여부를 판별하는 경우

- 과거 도산 기업과 도산하지 않은 기업에 대한 데이터(자산, 부채, 이익 등)을 관측

- 도산 여부 판별할수 있는 판별식, 판별함수를 만들어 대출 받으려는 기업의 도산 가능 여부를 판별

 

 

 

선형 판별 함수 Linear Discriminant Function

- 판별 오류가 최소가 되는 선형 함수

- 람다 = 그룹 간 분산/그룹 내 분산, 람다가 최대가 되는 계수벡터 b를 구해야 함

 => 그룹 내부는 잘 뭉치고, 그룹 간에는 잘 떨어지는 판별식 계수를 구하라는 말.

- 선형 판별함수 식 Y = b' X

 

 

 

정준판별분석 canonial discriminant analysis

- 여러개 집단으로 분류하는 경우 판별분석.

 -> 분류하고자 하는 집단이 3개 이상인 경우도 판별 분석이 가능하며, 판별식이 여러개가 됨.

- 정준 판별 함수는 정준 상관 분석으로 구할 수 있다.

 

참고 : 정준 상관분석 수행 과정

 - X의 선형 결합 변수 W와 Y의 선형결합 변수 V 준비 -> Corr(W,V)

 - Corr(W, V)가 최대로 하는 계수 벡터 b를 추정

 

정준 상관 분석의 판별 분석

- X의 선형 결합 변수 W와 라벨 Y에 대한 정준 상관분석 수행

 -> 제1 정준 변수 = b1은 Y를 가장 잘 이진분류하는 판별함수의 계수벡터가 됨.

- 모든 그룹으로 나눌수 있도록 여러개의 정준 변수들은 생성

 

300x250
728x90

상관계수 Correlation

- 두 변수 간의 선형적 상관 관계를 나타내는 통계량

- 피어슨의 상관계수 = Corr(x,y) = Cov(x, y)/(std(x)*std(y))

- -1 ~ 1사이 값을 가짐

- |corr(x,y)|가 1에 가까울수록 선형적 관계를 가짐

 

 

정준상관분석Canonical Correlation Analysis

- 상관 계수가 두 변수의 관계를 다루었다면

- 정준상관분석은 독립 변수들과 한개 이상의 종속변수의 연관성을 다루는 분석

 => 상관분석과 회귀분석의 결합

- 독립변수들과 종속변수들의 상관계수가 최대가 되는 선형 결합을 유도하여 분석하는 방법

 

 

 

정준상관분석의 예시

- 독립 변수 : 신체조건에 대한 변수 -> x1 : 키, x2, : 앉은키, x3: 가슴 둘레

- 종속 변수 : 운동능력에 대한 변수 -> y1 : 50m 달리기, y2 : 공던지기 

 => 신체조건과 운동 능력 간의 연관성을 구해보자

- 방법 1. 각 독립변수와 종속변수의 상관계수 구하기 -> 종합적인 독립변수와 종속변수간 연관성을 구하기 힘듬

- 방법 2. 독립 변수의 선형 결합으로 변수 W 만들고 Y 변수의 선형결합으로 변수 V 만들어, 두 변수간 상관계수로 파악

 => 정준 상관 분석

 

 

정준상관분석 정리

- 독립 변수들과 종속 변수들간 상관관계를 분석

- 독립변수들의 선형 결합 변수 W = a1x1 + ... + bpxp

- 종속 변수들의 선형 결합 변수 V = b1y1 + ... + bqyq

- 정준상관분석 -> Corr(W, V)

 

 

 

300x250
728x90

다차원 척도법

- 개채들의 특징, 변수들을 측정 후, 개채들 간의 거리(유사성), 비유사성을 측정하여 다차원 공간에서 점으로 표현.

- 일반적으로 2/3차원 공간상의 점으로 표현하여 개체들간 관계표현.

- 클러스터링에 많이 사용.

 

 

다차원 척도법의 예시

- 국내 도시들의 인구수, 면적, 학교 수 등 통계들을 조사 후 다차원 척도법을 사용하는 경우

 -> 도시들간 유사한 정도, 가까운 정도를 2차원 공간 상에서 표현할수 있음.

 -> 위 통계로 어느 도시와 어느 도시가 가까운지 알수 있다.

 

MDS 분석 과정

1. 변수 측정

2. 거리, 비유사성 측정

3. 2/3차원 공간상에서 시각화

4. 최적 표현 결정 : 개체들 간 거리를 가장 잘 나타내는 위치 구함. 스트레스를 이용.

 * 스트레스 : 개체 간 비유사성이 얼마나 부적합한가 측정 척도

 

 

거리 측정 방법

- 비유사성, 유사성은 거리를 이용하여 판단

- 유클리디안 거리, 채비셰프거리, 맨해튼거리 등이 있음.

- 측정 단위의 영향을 제거하기위해 변수들을 표준화한 뒤 거리측정

 

 

 

  

300x250
728x90

적응 평균 임계치 이진화에 대한 내용은

 

opencv document와 다음 링크를 참고했다.

homepages.inf.ed.ac.uk/rbf/HIPR2/adpthrsh.htm

opencv-python.readthedocs.io/en/latest/doc/09.imageThresholding/imageThresholding.html

 

 

 

 

이전에 단순 이진화의 경우 본인이 지정한 밝기 값을 기준으로 이진화를 수행하였다.

 

평균 기반 적응적 임계치 이진화 같은 경우 본인이 임계치를 지정하는 것이 아니라

 

해당 픽셀을 중심으로 블록 사이즈 만큼의 커널(마스크) 영역의 밝기 평균을 지역 임계치로 사용한다.

 

해당 픽셀 밝기와 지역 임계치를 비교하여 255를 줄지 0을 줄지 판단한다.

 

다음 함수는 구현내용

def adaptiveThresholdMean(img,  block_size=5, C=4):

    if type(img) is not np.ndarray:
        raise AssertionError("img is not ndarray")
    row, col = img.shape


    res = np.zeros((row, col))
    if (block_size % 2 == 0):
        block_size += 1
    
    for i in range(0, row):
        for j in range(0, col):
            x_min = j-block_size//2
            x_max = j+block_size//2
            y_min = i-block_size//2
            y_max = i+block_size//2
            
            if x_min <= 0:
                x_min = 0
            
            if x_max >= col:
                x_max = col
            
            if y_min <= 0:
                y_min = 0
            
            if y_max >= row:
                y_max = row

            
            val = img[y_min:y_max, x_min:x_max].mean()
            local_th = val-C
            if img[i,j] >= local_th:
                res[i, j] = 255
            else:
                res[i, j] = 0
    return res

 

 

 

다음 예시는 아래의 링크에서 소개하는 설정대로 해보았다.

 

homepages.inf.ed.ac.uk/rbf/HIPR2/adpthrsh.htm

 

 

 

 

dave.jpg는 opencv 다큐먼트꺼

 

 

 

 

 

300x250
728x90

이번에는 임계치를 주었을때, 그 임계치 기준으로 영상을 이진화하는 함수를 구현하였다.

 

관련 내용은 본 블로그나 타인 내용 참고

ref : throwexception.tistory.com/607?category=873104

 

 

 

함수 구현 내용은 아래와 같다.

 

그냥 th를 넘으면 1, 아니면 0을 주는게 끝

 

def Threshold(img=None, th=125):

    if type(img) is not np.ndarray:
        raise AssertionError("img is not ndarray")
    
    row, col = img.shape
    res = np.zeros((row, col))
    for i in range(0,row):
        for j in range(0,col):
            if img[i, j] >= th:
                res[i, j] = 1
            else:
                res[i, j] = 0
    
    return res

 

 

 

 

 

 

 

맨 마지막 셀은 임계치 별 결과를 플로팅 시켰다.

300x250
728x90

영상 히스토그램에 대해서

 

나나 다른사람들이 올린 글이 많으므로 생략하고

 

ref : throwexception.tistory.com/606?category=873104

 

 

 

이미지를 입력으로 줄떄, 영상 밝기 빈도수 대한 히스토그램을 반환하는 함수

 

def Histogram(img):
    row, col = img.shape
    hist = np.zeros(256)
    for i in range(0, row):
        for j in range(0, col):
            hist[img[i, j]] += 1
    
    return hist

 

 

 

대강 실습, 구현 과정은 

 

라이브러리 읽고

 

이미지 읽고, 그레이스케일로 바꾸고, 넘파이 배열로 변환후

 

시각화를 해본다음에 함수를 구현했다

 

바플롯으로 띄웟더니 잘 나온다.

 

300x250
728x90

예전에 학교에 다닐때

 

알고리즘을 구현 하려면

 

 

슈도코드를 보고 그흐름을 직접 구현할수 있어야 한다고 생각하고

 

시도해보려고 한적은 있었다.

 

 

하지만 당시에는

 

내가 알고 있는 내용으로는

 

간단한 히스토그램이랑 단순 이진화 밖에 구현하지 못하고 포기해버리고 말았었다.

 

 

 

어쩔수 없는게

 

당시에는 제곱 오차니, 최적화 이론이든 공업 수학이든 지금 처럼 

 

수학, 통계적 지식이 부족한데다가

 

타인의 코드를 참고하지 않고 억지로 시행착오를 격으려고 하다보니 재뿔에 지쳤었던것 같다.

 

 

 

 

하지만 알고리즘 구현 연습을 할수 밖에 없는게

 

아무리 OpenCv에서 쉽게 쓸수 있도록 다양한 함수들을 제공해주고 있다고 하지만

 

그 API들을 사용해서 응용 어플리케이션을 만드는 것과는 별개로

 

알고리즘들을 분석하고 활용하려면, 슈도 코드에 대한 이해만으로는 부족하고

 

어느정도 구현은 할줄 알아야 된다고 생각하곤 있었다.

 

 

 

 

 

 

 

 

그래프나 트리 기반 알고리즘에 대해 분석을 하려면

 

자료구조에 대해 얼마나 이해해야하는가

 

개념만 알면 될까, 구현까지 해야될까

 

이런 자료구조 기반 알고리즘을 바로 다루기에는 나한태는 너무 어려운 일이고

 

 

 

 

얼마전에는 C++에서 자료구조로 연습할까했지만

 

기존의 알고리즘들은 C++로 eigen 같은 수학 처리 라이브러리로 구현해 놓은게 있지만

 

numpy로도 빠르게 할수 있어서인지 파이썬에서 구현해놓은것도 많다보니

 

아직 자료구조 다룰것도 아니고, 인덱싱이든 선형대수 연산이든 파이썬에서 할수 있으니까

 

 

 

단순 2차원 배열인

 

이미지 프로새싱 하는것에서 부터

 

수학적 지식을 코드로 구현하는 과정들을 다시 연습해보려고 한다.

 

 

 

 

내가 할수 있을지는 몰랐는데

 

다행이 오늘

 

히스토그램, 단순 이진화, 평균을 이용한 적응적 이진화 이 세가지를 구현할 수 있었다.

 

 

 

꾸준히 할지는 모르지만

 

꼭 넘어야 할 산이다.

 

 

 

 

 

이런거 공부하면서 매번 느끼는거지만

 

기업에서 채용할때 알고리즘 테스트가 정말 소용이 있는건가 싶다.

 

나는 한번도 본적없어서 자세히는 모르지만

 

자료구조, 탐색 알고리즘에 대해서 설명하고 구현하는 방법을 위주로 보는거 같아보여서

 

이걸로 뭘 할수 있는지 잘 모르겠다.

 

내가 모르는게 있겠지 싶지만서도

 

 

 

 

 

 

면접용 알고리즘 공부를 장려하기보다는

 

개인적으로 수학적 기반들을 직관적으로 가르쳐주고

 

실생활에서 사용가능한 알고리즘들을 구현하거나 개선해 나갈수 있도록 도와주는게  필요하다고 생각한다.

 

 

 

 

300x250

'그외 > 로그' 카테고리의 다른 글

2021.01.07 daily english study log  (0) 2021.01.07
캐글 대회 참여와 시험 준비  (0) 2020.12.03
논문 읽기와 구현  (0) 2020.11.23
과제 마무리  (0) 2020.11.19
시험 과제를 하면서  (0) 2020.11.17

+ Recent posts