반응형

소스코드.py
0.00MB

01. 자율 학습

자율 학습

unsupervised learning: 정답 정보가 없는 상태에서 학습을 통해 모델을 만드는 것입니다.

 

클러스터 분석과 k-평균 알고리즘

01. 자율 학습

 

자율 학습

 

unsupervised learning: 정답 정보가 없는 상태에서 학습을 통해 모델을 만드는 것입니다.

 

클러스터 분석과 k-평균 알고리즘

클러스터 분석 cluster analysis: 자율학습의 대표적인 접근 방법

평면상에 그려져 있는 점들을 그룹으로 만듭니다.그룹으로 만들 때는 점들 사이가 어느 정도 떨어져 있는지를 지표로 삼습니다.

 

k-평균 알고리즘 과정

우선 전체를 k개의 그룹으로 나눕니다.

각 점에 무작위로 그룹을 할당한 다음 그룹 각각의 중심(보통은 무게 중심)과의 거리(유클리드 거리 등)를 계산합니다.

어떤 그룹에 속해 있는 점이 다른 그룹과 거리가 더 가깝다면 해당 점을 거리가 가까운 그룹으로 변경합니다.

이러한 작업을 반복해서 가까운 점끼리 묶어 k개의 그룹으로 나눕니다.

 

그룹의 중심점만 기준으로 삼다가 잘못된 그룹으로 할당할 수 있는 문제나 계산 시간이 길어지는 등의 문제가 있습니다.

최초에 정하는 k값은 감으로 결정할 때가 많지만 계산으로 구해서 결정할 수 도 있습니다.

k를 결정할 때는 혼합 디리클레 모델을 사용합니다.

혼합 디리클레 모델은 베이즈 모델 기반의 접근 방식으로 디리클레 분포가 다항분포의 결합 사전 분포라는 점을 이용합니다.

 

주성분 분석 principal component analysis

데이터 처리 방식

고차원의 데이터를 저차원으로 정리해 차원 압축(차원 감소)을 실행합니다.

주성분 분석 외에 고차원 데이터를 차원 압축하는 방법으로 t-SNE가 있습니다. t-SNE는 정규분포를 따르는 확률로 고차원 거리를 계산해 고차원으로 옮깁니다.

 

특잇값 분해: SVD

주성분을 분석할 때는 행렬로 데이터를 나타낸 후 공분산 행렬을 계산해 고윳갑솨 고유 벡터를 구합니다.

 

독립 성분 분석 Independent compositin analysis ICA : 통계 독립성을 극대화하는 예측 성분을 찾는 것

자기조직화지도 Self organization Map ,som : 자율학습의 출력 결과를 이용해 클러스터 분석한 것은 자기조직화의 연관이 커서 자기조직화지도라고 합니다.

 

 

02. 지도학습

정답 정보가 들어 있는 데이터를 기준으로 모델을 만드는 지도학습이라고 합니다. supervised Learning

 

서포트 백터 머신: support vector machine svm은 데이터 분포를 나누는 기준을 결정하는 지도학습모델중 하나입니다.

베이즈 필터와 단순 베이즈 분류 : 베이즈 정리는 학습과의 친화성이 높아 지도 학습 알고리즘에 이용합니다. 특히 베이즈 필터중에서 단순(나이브) 베이즈 분류 Naive Bayes Classification가 유명합니다.

베이즈 필터를 이용하는 대표적인 예는 스팸 메일 판정이나 문서의 카테고리 분류입니다.

 

ID3: 

정답 데이터를 이용해 결정 트리를 만드는 알고리즘의 하나가 ID3가 있습니다. ID3는 의사 결정 트리를 기반으로 모든 데이터를 제대로 분류할 때까지 노드를 추가합니다.

 

랜덤포레스트

서포트 백터 머신과 함께 데이터의 분포를 분류하는 유명한 방법은 랜덤포레스트입니다.

랜덤 프레스트는 무작위로 뽑은 데이터를 이용해 학습하면서 많은 결정 트리를 구축하며 의사 결정 트리를 만들 때 마다 결정 트리 구성을 약간씩 변화시킵니다.

 

타당성 검증 validation:

모델을 만들 때는 모델이 얼마나 정확한 결고를 계산하는지를 객관적으로 측정해야 합니다.

 

식별 모델의 평가와 ROC곡선

roc곡선 Receiver operating characteristic은 식별 모델의 성능을 평가하는 방법입니다.

 

홀드 아웃 검증과 교차 검증

홀드 아웃 검증 holdout method: 데이터를 훈련 데이터와 테스트 데이터를 사용하지 않는 검증 방법입니다.

k겹 교차 검증 k-fold croos-validation : 데이터를 K개의 그룹으로 나눈 후 그룹 하나를 제외한 나머지 데이터를 훈련 데이터로 설정합니다.

LOOCV(LEAVE-ONT-OUT CROSS -VALIDATION) :K켭 교차 검증에서 K가 데이터 개수와 같을 때를 뜻합니다. 데이터 수가 적을 때 사용합니다.

 

03. 텐서플로를 이용한 K-평균 예제

필요한 모델 불러오기

import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns

데이터 정의하기

num_dots = 1000
num_clusters = 3
num_epochs = 100

데이터 정의

dots = []
for i in range(num_dots):
    if np.random.random() > 0.66:
        dots.append([np.random.normal(0.0, 1.0) , np.random.normal(2.0, 0.5)])
    elif np.random.random() > 0.33:
        dots.append([np.random.normal(2.0, 1.3) , np.random.normal(-1.0, 0.6)])
    else:
        dots.append([np.random.normal(-1.0, 0.8) , np.random.normal(-2.0, 1.2)])

pandas 라이브러리를 이용해 좌표를 데이터 프레임 형태로 저장합니다.

df = pd.DataFrame({"x":[v[0] for v in dots] , "y":[v[1] for v in dots]})
df.head(10)

마지막으로 seaborn라이브러리를 이용해 데이터를 시각화 해봅니다.

sns.lmplot("x","y", data = df, fit_reg = False, size = 7)
plt.show()

시각화 결과

k-평균 그래프 생성하기

vectors = tf.constant(dots)
vectors.get_shape()

TensorShape([Dimension(1000), Dimension(2)])

 

tf.Variable 사용하여 무작위로 섞기

centroids = tf.Variable(tf.slice(tf.random_shuffle(vectors), [0,0] , [num_clusters, -1]))
centroids.get_shape()

TensorShape([Dimension(3), Dimension(2)])

 

차원

expanded_vectors = tf.expand_dims(vectors, 0)
expanded_centroids = tf.expand_dims(centroids, 1)

print(expanded_vectors.get_shape())
print(expanded_centroids.get_shape())

(1, 1000, 2)

(3, 1, 2)

distance = tf.reduce_sum(tf.square(tf.subtract(expanded_vectors, expanded_centroids)) , 2)
assignments = tf.argmin(distance, 0)
assignments.get_shape()

TensorShape([Dimension(1000)])

 

means = tf.concat([tf.reduce_mean(tf.gather(vectors, tf.reshape(tf.where(tf.equal(assignments,c)), [1,-1])),reduction_indices = [1])
    for c in range(num_clusters)],0)
centroids_updated = tf.assign(centroids, means)
with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    for step in range(num_epochs):
        _, centroid_values, assignment_values = sess.run([centroids_updated, centroids, assignments])
print("중심점")
print(centroid_values)

시각화해 보여주기

data = {"x":[],"y":[],"cluster":[]}
for i in range(len(assignment_values)):
    data["x"].append(dots[i][0])
    data["y"].append(dots[i][1])
    data["cluster"].append(assignment_values[i])
df = pd.DataFrame(data)
sns.lmplot("x","y", data = df, fit_reg = False, size = 7, hue = "cluster", legend= False)
plt.show()

출처 : 처음 배우는 인공지능

반응형
반응형

01. 통계 모델과 확률 붙포

확률기반

설명 변수와 목적 변수가 갖는 어떤 확률에 근거한 관계를 '확률분포 모델'이라고 합니다.

 

머신러닝

입력 데이터의 특성과 분포 경향 등에서 자동으로 데이터를 나누거나 재구성을 합니다. 

통계 기반 머신러닝에서는 여기에 확률 개념이 크게 관여합니다.

 

지도 학습 Supervised Learning: 머신러닝 안에서는 데이터에 정답 정보가 결합된 학습 데이터(또는 훈련 데이터)로 데이터의 특징을 모델링하는 것 

자율 학습 Unsupervised Learning: 입력 데이터의 정답을 모르는 상태에서 사용하는 것으로 클러스터 분석 , 차원 압축, 밀도 추정 등이 해당됩니다.

식별 , 예측, 클러스터 분석 등을 실행해 데이터의 새로운 특징을 찾아내는 작업을 데이터 마이닝이라고 합니다.

 

기저 함수 basis function

정규 직교 기저 orthonormal basis: 설명 변수와 목적 변수가 1대1로 대응할 때를 그래프로 나타낸 것

이는 좌표축 각각이 직교하는 '선형 독립 linaearly independent'상태에서 백터로 나타내는 좌표축이라도 설명할 수 있습니다.

정규분포 이외의 분포를 다루는 일반화 선형 모델 generalized linear model과 혼합 정규분포 mixture normal distribution등의 혼합 모델은 기저 함수와 기저 함수의 선형 결합으로 모델을 나타내므로 중요한 개념입니다.

 

주요 기저 함수

연산 확률 분포

이산 확률 분포

 

정규분포 가우스분포 Gaussian distribution라고도 합니다.

감마분포 특정 수의 사건이 일어날 때 까지 걸리는 시간에 관한 연속확률분포입니다.

지수분포 : 감마분포의 특별한 형태로 사건이 일어나는 시간 간격의 확률분포인 지수분포가 있습니다. 푸아송 분포와도 깊은 연관이 있습니다.

베타 분포 : 2개의 변수를 갖는 특수 함수인 베타 함수를 이용한 분포

디리클레 분포 Dirichlet distribution는 베타 분포를 다변량으로 확장한 것으로 다변량 베타 분포라고도 합니다.

이항 분포 : 동전 던지기처럼 앞 뒤 두가지 종류 중 어느 하나가 나오는 가와 같은 실험을 베르누이 시행 이라고 합니다.

이 베르누이 시행을 여러 번 반복했을 때 확률분포가 이항분포입니다. 

음이항 분포: 이항분포와는 다르게 r번 성공하는 데 필요한 시행 횟수 k의 분포를 음이항분포라고 합니다.

푸아송 분포 : Poisson distribution는 일정 시간 간격에 걸쳐 평균 λ번 일어나는 현상이 k번 발생할 확률분포 (X)를 말합니다. 푸아송 분포가 단위 시간에 사건이 일어날 확률을 나타낸다면 , 지수분포는 사건이 일어난 후 다시 발생할 때까지의 시간 간격에 고나한 확률밀도를 나타냅니다. 이 때문에 "푸아송 분포와 지순분포는 같은 사건의 발생 확률을 다른 측면에서 본다"라고 합니다.

카이제곱 분포 chi-squared distribution는 감마 분포의 특별한 형태입니다. =>통계적 추론 에서 자주 이용

초기하분포 : 반복하지 않는 시동에서 사건이 발생할 확률분포입니다.

코시분포 : 로렌츠 분포 라고도 하며 물리학에서는 브라이트-위그너 분포라고도 합니다.

로지스틱 분포 : 확률분포의 확률 변수가 특정 값보다 작거나 같은 확률을 나타내는 누적분포 함수가 로지스틱 함수인 분포를 로지스틱 분포 Logistic distribution라고 합니다.

베이불 분포 Weibull distribution는 물체의 부피와 강도의 관계를 나타내는 분포입니다. 기기의 수명과 고장 시간 등의 신로성을 나타내는 지표로 이용할 수 있습니다.  베이불 분포의 특별한 형태로는 레일리 분포가 있습니다. 레이더 신호와 산란된 신호 강도의 분포 모델로 사용할 수 있습니다.

 

 

손실함수와 경사 하강법

회귀하려는 모델 함수가 있을 때 회귀분석은 오차를 제곱한 것의 합계인 함수를 목적 함수로 설정하고 목적 함수가 최솟값이 되도록 계산합니다.

목적 함수와 비슷한 함수로 손실 함수 loss function가 있습니다

손실 함수의 최솟값을 구할 때는 경사 하강법 gradient descent method또는 최대 가능도 방법 miximum likelihood method을 사용합니다.

 

 

02. 베이즈 통계학과 베이즈 추론

베이즈 정리는 두 종류의 조건부 확률 사이의 관계를 정의합니다.

 

최대가능도 방법과 EM알고리즘

 

베이즈 추론: 데이터의 모집단분포는 유일하지 않습니다.

베지즈 추정량: 사후분포의 평균 제곱 오차 average squared error를 최소화하는 값을 베이즈 추정량이라고 합니다. 사후분포의 평균값입니다.

사후 메디안 추정량 : 사후분포의 평균 절대  오차 mean absolute error를 최소화하는 값으로 사후분포의 중간값입니다.

 

MAP추정량: 최대 사후 확률이라고 합니다.

 

베이즈 판별 분석: 

판별 분석은 데이터 X가 어떤 모집단분포에서 유래했는지 파악하는 데 사용합니다.

 

03 . 마르코프 연쇄 몬테카를로 방법 MCMC

원쥬율의 근삿값 계산 문제:

 

몬테카를로 방법: 원주율의 근삿값 계산은 몬테카를로 방법 이라고 하는 알고리즘.

 

샘플의 열 생성 과정은 마르코프의 성질이 있는 마르코프 연쇄 Markov chain라고 합니다.

 

베이즈 계층 모델 : 

마르코프 연쇄 몬테카를로  방법을 활용하면 매개변수의 차원이 높은 복잡한 모델을 처리할 수 있습니다.

특히 베이즈 계층 모델 은 지금까지 소개한 모델 중에서 특히 자유도가 높은 통계 모델을 설계할 수있습니다.

 

04. 은닉 마르코프 모델과 베이즈 네트워크

시계열 데이터의 혼합 분포 추정에 사용되는 모델을 은닉 마르코프 모델 이라고 합니다.

 

베이즈 네트워크: 전문가 시스템은 주어진 조건에 적합한 답변을 합니다만 추론 규칙이 정교하지 않다는 약점이 있습니다. 그래서 확률 개념을 도입해 추론 규칙을 개선한 전문가 시스템으로 제안한 것을 베이즈 네트워크 라고 합니다.

 

 

출처 : 처음 배우는 인공지능

반응형

+ Recent posts