일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 컴퓨터 조립
- Bayes Theorem
- Bayes Rule
- 인공지능
- 분산분석
- 조건부 확률
- 딥러닝
- LeetCode
- 인공지능 겨울
- 베이즈 정리
- 확률
- Neural Network
- Stack
- ANOVA
- 퍼셉트론
- AI Winter
- p 값
- knn
- 인공신경망
- p-value
- 컴퓨터
- 심층학습
- AI
- 통계
- 30 Day Challenge
- 편향
- Today
- Total
목록Machine Learning (17)
군더더기 없는 기계학습 백과사전

전편에서 주어진 코드를 간략화하기 위해서 Numpy 패키지에서 행렬 연산 기능을 가져왔다. 이제 슬슬 여러 개의 뉴런층을 다루는 수준으로 나아가도록 하자. 우선의 배치(batch)의 개념부터 다뤄보도록 하겠다. 우선 배치 학습을 통한 모델 학습은 데이터를 몇 개로 나눠서 단순한 작업을 여러 코어에 나눠 효율적인 병렬 연산(parallel computing)을 수행하고자 하는 목적도 존재한다. 그러나 배치를 사용하는 또 다른 목적은 우리가 훈련시키고 있는 모델이 (그러니까 지금 우리가 만들고 있는 인공신경망이) 아직 관측한 적이 없는 데이터에 대한 올바른 예측을 수행하도록 도와주는 일반화(generalization) 작업이기도 하다. 여기서 모델을 일반화하는데 도움을 준다는 것은 무슨 뜻일까? 우리의 코드..

이번 편에서는 유클리드 거리부터 시작해서 최근접 이웃 알고리즘을 밑바닥부터 파이썬으로 구현하도록 하겠다. 간단한 준비 운동으로 2차원의 두 점의 좌표를 이용해 유클리드 거리를 구해보도록 하자. 루트는 math 패키지에서 불러오도록 한다. 또한 두 좌표가 리스트(list)라는 점을 이용해 인덱스 이용해 리스트의 원소들을 불러서 사용하도록 한다. from math import sqrt 점1 = [1, 3] 점2 = [3, 4] 유클리드_거리 = sqrt((점1[0] - 점2[0])**2 + (점1[1] -점2[1])**2) print(유클리드_거리) 본격적인 코드에서는 해당 작업을 Numpy 패키지의 행렬 연산 함수들을 이용해 좀 더 단순하게 만들도록 하겠다. 일단 다음 코드 블록에 나열되어 있는 패키지들을..

필자는 여러분이 조건부 확률 관련 수학 문제는 굉장히 많이 풀어봤을 것이라고 생각한다. 그러나 실생활에서 당장 사용하는 예는 많이 접해보지 못했을 것이다. 해당 글에서는 단순한 가짜 데이터를 만들어 온라인 웹사이트에서 연령층 별로 구매한 수 데이터에서 조건부 확률을 도출해내는 예를 다뤄보도록 하겠다. 일단 10,000명의 데이터를 생성하도록 하겠다. 이를 연령층 별로 저장하기 위해서 딕셔너리(dictionary)를 이용한다. 랜덤 기능을 사용하기 위해서 Numpy 패키지에서 random을 가져온 뒤 고정된 결과를 보기 위해 seed를 0으로 설정하겠다. from numpy import random random.seed(0) 연령층인구수 = {20:0, 30:0, 40:0, 50:0, 60:0, 70:0}..

소개 K 근접 이웃 분류 알고리즘은 그 단순함에도 불구하고 회귀 분석에 밀려나 기계학습 교과서 중간쯤으로 물러나 있는 것을 확인할 수 있을 것이다. 사실 컴퓨터 비전의 관점에서는 굉장히 단순 무식한 방법이고, 더 단순한 데이터를 상대로는 서포트 벡터 머신(SVM) 같이 평균적으로 더 관측 개체들을 분류 잘하는 알고리즘도 있지만 단순하다고 무시하기에는 굉장히 유용하고 비교적 이해하기 쉬운 알고리즘이다. 맨날 지겹도록 다루는 회귀 분석 말고 좀 더 색다른 알고리즘부터 먼저 보고 싶어 하는 여러분을 위해 일단 해당 알고리즘부터 다뤄보도록 하겠다. 일단 동기 부여부터 시작해보자. 여러분에게 다음과 같은 관측 개체들이 들어간 그림이 주어졌다고 하자. 해당 그림에는 '+' 그룹과 '-' 그룹이 들어가 있다. Sci..

전편에서 기본적인 단위의 인공신경망을 단순한 파이썬 코드로 구현해봤다. 이제 좀 더 많은 양의 연산을 편리하게 처리하기 위해 행렬 연산 중 하나에 해당하는 점곱(dot product)을 코드에서 사용하는 방법을 보여주고자 한다. 이를 위해선 Numpy 패키지가 필요하다. 전편에서 구현한 인공신경망이다. 입력값 = [2.3, 5.6, 1.2, 2.4] 가중치1 = [3.1, -2.1, 8.7, -9.1] 가중치2 = [4.5, 2.1, -1.7, 3.4] 가중치3 = [2.3, -6.4, 2.1, -6.3] 편향1 = 2 편향2 = 3 편향3 = 1 출력값1 = 입력값[0]*가중치1[0] + 입력값[1]*가중치1[1] + 입력값[2]*가중치1[2] + 입력값[3]*가중치1[3]\ + 편향1 출력값2 = 입..

확률 이론 혹은 수리통계학을 접하는 분들은 반드시 베이즈 정리를 접하게 된다. 영어로는 Bayes Rule 혹은 Bayes' Theorem이라고 부르기도 한다. 그러나 인터뷰 문제에서 만약 해당 이론을 간접적으로 접하게 된다면 단순히 수식을 풀어서 증명하는 것을 이해하는 정도로는 그쳐서는 안 될 것이다. 여러분의 이해를 돕기 위해 한 가지 사용 예시를 써본다. 온라인에서 많이 접하게 되는 베이즈 정리에 대한 이해가 요구되는 기출 문제다. 데이터 과학자 전화 인터뷰에서 자주 나오는 문제였다는데 아직도 비슷한 문제는 나오고 있을 것이라고 믿는다. 살짝 문장이 애매모호해 다양한 진지한 분석들을 봤다. 가장 단순한 풀이부터 제일 복잡한 풀이까지 천천히 접해보자. 당신은 지금 시애틀행 비행기를 기다리고 있다. 시..

ANN(Artificial Neural Network) 많은 분들이 교과서에서 인공신경망에 대해서 많이 읽어보고 Keras 같은 프로그램으로 손쉽게 데이터를 집어넣고 직접 돌려보는 경험도 해봤을 것이라고 생각한다. 그러나 이에 만족하지 못하고 아예 처음부터 인공신경망을 완전히 짜서 프로그램이 수면 밑에서 어떻게 돌아가는지 '심층학습'을 하고자 하는 분들도 있을 것이라고 생각한다. 특히나 불안하게 별 이해 없이 자동으로 짜이는 코드를 돌리는 대신 직접 밑바닥부터 만들어 배우기 좋아하는 분들이 이런 부류에 속할 것이라고 생각한다. 일단 웹사이트들을 돌아봤지만 초보자에게 친절한 블로그는 없는 듯했다. 그냥 처음부터 Numpy나 클래스부터 꺼내 들고 코드 블록만 쭉 늘어놓은 경우가 대다수였다. 정말 미안하지만,..

분산분석을 처음 접해보는 사람들에게 떠오르는 의문점일 것이다. 여러분은 관측 개체(Observation)들이 평균에서 떨어진 정도를 분산으로 측정하는 것으로 대략 이해하고 있을 것이다. 그런데 두 개 이상의 집단 평균을 비교할 때 왜 집단 내 및 집단 간 분산(Variance)을 비교해야 하는지 의문이 들것이다. 이를 직관적으로 이해할 수 있도록 접근하겠다. 해당 예시는 이해를 돕기 위한 극단적인 예시다. 당신이 여러 명의 무작위로 모집된 남성들을 대상으로 몸무게를 연구하고 있다고 해보자. 이 모임에는 3가지 집단이 포함되어 있다. 근육질의 운동선수들 평범한 직장인들 몸무게가 얼마 안 나가는 승마 선수들 남성들을 이름순으로 3개 집단으로 나눴다고 해보자. 그러면 3개 집단에선 몸무게는 다음과 같을 것이다..