[1]. 문제 해결 시작하기


[2] 알고리즘 분석


[3] 알고리즘 설계 패러다임
6. 무식하게 풀기
6.2. 중첩 반복문 대체하기(Recursive)

7. 분할 정복
주어진 문제를 둘 이상의 문제로 나눈 뒤 각 문제에 대한 답을 재귀 호출을 이용해 계산하고, 각 부분 문제의 답으로부터 전체 문제의 답을 계산

8. 동적 계획법 - Memoization (캐쉬에 저장)
처음 주어진 무제를 더 작은 문제들로 나눈뒤 각 조각의 답을 계산하고, 이 답들로부터 원래 문제에 대한 답을 계산해 냄
답을 여러 번 계산하는 대신 한 번만 계산하고 계산 결과를 재활용함으로서 속도 향상을 꾀할 수 있음
*Memoization 함수의 결과를 저장하는 장소를 마련해 두고, 한 번 계산한 값을 저장해 뒀다 재활용하는 최적화 기법

10. Greedy method
재귀 호출과 똑같이 여러 개의 조각으로 쪼개고, 각 단계마다 답의 한 부분을 만들어 간다는 점에서 완전 탐색이나 동적 계획법 알고리즘과 같음
하지만, 탐욕법은 각 단계마다 지금 당장 가장 좋은 방법만들 선택
1. 탐욕법을 사용해도 항상 최적해를 구할 수 있는 문제를 만난 경우
2. 시간이나 공간적 제약으로 인해 다른 방법으로 최적해를 찾기 너무 어려울 때 근사해를 찾는 것으로 타협함

11. 조합 탐색( combinatorial search)
- 유한한 크기의 탐색 공간을 뒤지면서 답을 찾아내는 알고리즘
(1) 가지치기(pruning) - 탐색 과정에서 최적해로 연결될 가능성이 없는 부분들을 잘라냄

12. 최적화 문제 결정 문제로 바꿔 풀기
최적화 문제를 결정 문제(decision problem)로 바꾼 뒤, 이것을 이분법을 이용해 해결
결정 문제란 예 혹은 아니오 형태의 답만이 나오는 문제

[4] 유명한 알고리즘들
13. 수치 해석
직접 풀기 힘든 수학 문제를 근사적으로 푸는 알고리즘과 이들의 수치적 안정성, 오차의 범위등을 연구하는 전산학의 한 분야

13.2 이분법(bisection method)
주어진 범위 내에서 어떤 함수의 값이 0이 되는 지점을 수치적으로 찾아내는 기법

14 정수론
14.2 소수
주어진 수가 소수인지 확인하는 것

14.2 소인수 분해
- 한 합성수를 소수들의 곱으로 표현하는 방법
- 에라토스테네스의 체

15. 계산 기하(computational geometry) ( 하는 일과 관련이 있으니 꼭 다시 볼 것!!!!)
점, 선, 다각형과 원 등 각종 기하학적 도형을 다루는 알고리즘을 계산
- 대회에서는 대부분 2차원 기하학
(1) 벡터의 구현
(2) 점과 직선, 선분의 표현
(3) 벡터의 내적과 외적
15.3. 교차와 거리, 면적



Posted by 공놀이나하여보세
,
1. 개요
2. 탐색
2.1 맹목적 탐색
2.1.2 너비 우선 탐색
2.1.5 깊이 우선 탐색
2.2 경험적 탐색
2.2.1 최상 우선 탐색과 등산법
(1) 최상 우선 탐색 : 좋아 보이는 방향무터 탐색을 진행하는 최상 우선 탐색
휴리스틱 함수 : 최상 우선 탐색에서 탐색의 단서가 되는 값
2.2.2 최적 경로 탐색
전개된 노드 중 오픈 리스트의 노드와 중복이 있을 대 평가가 좋은 쪽을 남김
2.2.3 A알고리즘, A*알고리즘
2.3 상대가 있는 탐색
게임 트리의 탐색에 대해 사고하는 방식

3. 지식 표현
3.1 지식 네트워크
3.2 논리적 표현

4. 진화적 기법, 집단 지능
4.1.2 진화 연산 기법의 유전 알고리즘
진화 연산, 진화 연산 기법
유전 알고리즘 : 진화 연산의 대표적인 예
4.2 집단 지능 알고리즘
각각 독립적으로 동작하는 개체가 여러 개 모여, 어떤 일정한 규칙을 바탕으로 행동
입자 군집 최적화법

5. 텍스트 처리 알고리즘
5.1.1 자연어 처리 기술

참고 문헌
1. 패턴 인식과 기계 학습- C.M. 비숍 저, 슈프링거 재팬
2. 에이전트 어프로치 인공지능 제2판 - S.J.Russel
3. Artificial Intelligence, Third Edition - Patrick Henry Winston
4. 사단법인 인공지능학회 ai-gakkai.or.jp
5. 컴퓨터 바둑 - 몬테카를로 법의 이론과 구현 - 마츠바라 진 편처, 공립출판


후기 : 머신 러닝 공부 초반이어서일 지 모르겠지만 내용이 좀 아쉬웠다


Posted by 공놀이나하여보세
,
1_1 Support Vector Machine Tutorial
유황조교수 - Postech

Classification

Regression

Ranking


공통점 : 트레이닝된 데이터넷을 기초하여 모델을 만들고 새로운 데이터를 예측함

Learning Process
1. 데이터 준비
2. 트레이닝(모델을 만듬)
3. 검증
4. deploy(알맞게 사용)

Learning의 이슈
1. 정확도
2. 속도
3. 가독성 interpretability (해석할 수 있는?)
4. 노이즈나 없는 데이터 handling

Overfitting되지 않게 주의 (데이터 개수를 성능이 좋을 때까지로 트레이닝 시킴)

Metrics for performance Evaluation
1. TP : Positive로 선택하고 맞음
2. FN: Negative로 선택하고 틀림
3. FP : Positive로 선택하고 틀림
4. TN : Negative로 선택하고 맞음

Precision = TP / (TP+FP) - Positive로 선택한 것 중에 맞을 확률
Recall = TP / (TP + FN) : - Positive중에 제대로 선택될 확률
F-measure = 2TP / 2TP + FP + FN


AUC - Area Under the ROC Curve : ROC커브의 아래쪽 영역을 사용(?)

Estimate Generalization Performance
1. Holdout method : 두개의 독립적인 세트로 랜덤하게 분류
2. k-fold : k개 만큼 랜덤하게 분류
3. Leave-one-out : 100개 중 99개를 트레이닝 1개 테스트(테스트할 1개를 돌려가며 100번 반복)

Linear Classification
F(X) = b + 시그마(i)WiXi

Linear vs Quadratic vs Polynomial

Perceptron and Winnow
Perceptron : Linear function을 배우는 알고리즘

5. ANN(Artificial Neural Network) : input -> blackbox -> output
Training ANN means learning the weights of the neurons
weight값을 초기화 함
training 데이터를 이용해 에러값을 최소로 하는 weight값을 찾는다.

*특징
Nonelinear 모델 : Perceptron의 layer들을 이용해 만듬
Nondeterministic : w값이 정해져 있지 않음
튜닝을 많이 해야함
복잡한 함수를 쓰기 위해서는 복잡한 함수를 배워야 함

6. SVM : Support Vector Machine
*특징
Deterministic 알고리즘
적은 parameter로 정형화할 수 있음
kernel trick을 이용해 쉽게 사용 가능
SVM은 임의의 degree의 polynomial function을 linear time에 배울 수 있음
(1) Linear SVM : 직선 한개로 두 부류를 나눔
(2) Nonlinear SVM : dimension을 바꾸어 boundary를 직선으로 바꿈
- kernel trick 사용
- RBF kernel을 사용하여 여러 모양의 boundary를 만듬
- SVM 구현 : LIBSVM(python 사용 가능), SVM-light

Multiclass classification
* 특징 비교
One to all
-k개 모델 생성
- training set의 크기가 크가

Pairwise coupling
-k^2개 모델 생성
- training set의 크기가 작다
- 좀 더 정확하다
- LIBSVM 사용 가능

RANKING SVM(RANK SVM)
연관된 데이터를 ordering을 하고 전체 data order 예측

1_2. Gaussian Process Regression - 서울대 오성회 교수
(Gaussian Processes for Machine Learning, C.E.Rasmussen and C.K.I. Williams, 2006 MIT Press- 사람 따라 다니는데 사용 가능)
1960년대부터 사용
2차원 가우시안
wifi signal을 가우시안을 ㅣㅇ용하여 그림
interpolation smoothing
몇시간 후 예측
Central limit theorem - 모든 걸 가우시안으로 변경

Matrix Inversion Lemma
- Kalman filter나 smoothing에서 사용 가능

Kriging - 금찾기 위해 나온 개념

*흥미있는 주제
Mixture of Gaussian process
GP Latent Variable Model ( GP-LVM)

1_3 Supervised Learning(지도학습) : 서울대학교 노영균 교수
잉??

2_1 Semi Supervised Learning : 아주대학교 신현정 교수
Supervised Learning : input에 대한 y부여/real space
(Regression = 결과값과 예측값의 차이를 줄임)
Unsupervised learning : clustering 군집화

Semi Supervised Learning : supervised와 unsupervised의 중간 점

2_2 Representation Learning in deep learning : 삼성종기원 최희열
Manifold Learning : data representation

Neural networks history
1949 Hebbian learning : Donald Hebb
1958 Perceptron : Frank Rosenblatt <- Marvin Minsky,1969
1986 Multilayer Perceptron (Backpropagation) : David Rumlhart, Geoffrey Hinton, Ronald Williams <- Vladimir Vapnik and Corinna Cortes, 1995 SVM
2006 : Deep neural networks : Geoffrey Hinton and Ruslan Salakhutdinov

Neocognitron : K.Fukushima, 1980 Vilogical Cybernetics
Convolutional Neural Networks : Y. LeCun et al., 1989 Neural Computation
Reducing the Dimensionality of Data with Neural Networks : G. Hinton and R.Salakhutdinov, 2006 Science

Manifold vs Deep Learning
Manifold : 데이터가 많으면 안됨
Deep Learning : idea가 있으면 구현을 하면 된다. 그 후 해석을 진행

Error Backpropagation
Vanishing Gradient : back을 하면서 점점 사라진다.


3_3. Deep Learning for Visual Recognition : 네이버 김지원 책임 연구원


후기 : 개인적으로 머신러닝에 대해 무지할 때였는데 학계나 업계에서 어떤 알고리즘을 많이사용하는 지에 대한 흐름을 알 수 있었고 자주 나오는 용어들은 따로 공부를 통해 전반적인 지식을 얻을 수 있었다
지식이 있는 학생들에게도 많은 도움이 되지 않았을까 싶다


Posted by 공놀이나하여보세
,
Beatsbucket github
Jquary
유투브 사용
Ranking : melon

cloud service : pc browser +
java script + jquary
아마존 서버 : minimum server processing
Addyosmani.com spa : 한번 서버에 연결 후 추가 접속을 하지 않는 방법
Backbone.js Model View Controller
underscore.js : helper
labjs : library load를 보장해줌

Google app engine
melon app engine : 결과가 json으로 넘어옴
YouTube api : data api, analytics, live streaming, player api
oath key를 받아야함 쿼터가 매우 크다

Developers.google.com YouTube api

영상에 대한 대기열
목록에 대한 대기열
Css html5 사용

Bigquary : 구글에서 빅데이터를 실시간으로 분석할 수 있는 플랫폼
Volume velocity variety

Lezhin entertainment
서버개발자
Dremel :
Columnar storage
tree architecture

bigquery vs mapreduce(Hadoop)
- bigquery
interactive data
Sql을 사용해서 실시간으로 다룰 수 있음
등록된 데이터를 수정할 수 없다ㄷ
응답시간 빠름
사용한 만큼 비용 지불
월 기가당 0.12달러
최소 1mb
35.7기가
Select ID from
transaction db 구축

3. material design spec
구글이 제공해줌



Posted by 공놀이나하여보세
,
http://www.materialpalette.com/blue/teal
매터리얼 디자인 색깔 지정 가능
Posted by 공놀이나하여보세
,
1. 집단 지성 프로그래밍
2. build machine learning system with python
3. Doing Data Science(데이터과학 입문)
4. Think Bayes(파이썬을 활용한 베이지안 통계)
5. Python for Data Analysis(파이썬 라이브러리를 활용한 데이터 분석)
6. 선형대수학 정리 : https://sites.google.com/site/acelab21/lecture/-2012-spring-linear-algebra/material


Posted by 공놀이나하여보세
,

1. Deep learning
신경망 이용
*Perceptron : 신경망을 분류기로 활용함. 선형 분류기임
선형 분류기는 직선으로 분류함
다층 퍼셉트론 : 비선형 분류기

2. 가우시안
평균값과 분산값을 구한 후 정규분포식에 넣음
(Gaussian Processes for Machine Learning - 사람 따라 다니는데 사용 가능)
1960년대부터 사용
2차원 가우시안
wifi signal을 가우시안을 ㅣㅇ용하여 그림
interpolation smoothing
몇시간 후 예측
Central limit theorem - 모든 걸 가우시안으로 변경

Matrix Inversion Lemma
- Kalman filter나 smoothing에서 사용 가능

Kriging - 금찾기 위해 나온 개념

*흥미있는 주제
Mixture of Gaussian process
GP Latent Variable Model ( GP-LVM)

Gaussian Mixture - n개의 가우시안 함수를 혼합함
EM알고리즘 :

3. k means
K-평균 알고리즘 (K-means algorithm)은 주어진 데이터를 k개의 클러스터로 묶는 알고리즘

4. knn(k nearest neighbors) - 가우시안보다 성능이 좋음. 집단 지성책 3장
훈련 샘플 중에 주어진 x에 가장 가까운 k개를 구하고 그들이 가장 많은 빈도를 보인 부류로 분류
수치형 값 : k개 데이터의 평균(또는 가중 평균)
명복형 값 : k개 데이터 중 많이 나온 분류 항목 선택(또는 가중 값 이용 분류 선택)

5. ANN(Artificial Neural Network) : input -> blackbox -> output
Training ANN means learning the weights of the neurons
weight값을 초기화 함
training 데이터를 이용해 에러값을 최소로 하는 weight값을 찾는다.

*특징
Nonelinear 모델 : Perceptron의 layer들을 이용해 만듬
Nondeterministic : w값이 정해져 있지 않음
튜닝을 많이 해야함
복잡한 함수를 쓰기 위해서는 복잡한 함수를 배워야 함

6. SVM : Support Vector Machine
여백이라는 개념을 분류기 설계에 도입하고 여백을 극대화하는 결정 초평면을 찾아내는 것
(1) 사용자가 설정해야하는 매개 변수가 적다.
(2) 주어진 문제에 대해 최적의 커널을 자동으로 선택해주는 것이 없다. 휴리스틱하게 선택
(3) 일반화 능력이 뛰어나다.
(4) 비선형 SVM에서는 인식 시간이 서포트 벡터의 개수에 비례한다.
(5) 학습 알고리즘 구현이 까다롭다.

*특징
Deterministic 알고리즘
적은 parameter로 정형화할 수 있음
kernel trick을 이용해 쉽게 사용 가능
SVM은 임의의 degree의 polynomial function을 linear time에 배울 수 있음
(1) Linear SVM : 직선 한개로 두 부류를 나눔
(2) Nonlinear SVM : dimension을 바꾸어 boundary를 직선으로 바꿈
- kernel trick 사용
- RBF kernel을 사용하여 여러 모양의 boundary를 만듬
- SVM 구현 : LIBSVM(python 사용 가능), SVM-light

RANKING SVM(RANK SVM)
연관된 데이터를 ordering을 하고 전체 data order 예측

7. clustering(군집화) : unsupervised learning


8. DTW(dynamic time warping)
캡터치 방식의 제스쳐 인식 방법 사용
(1) 시간 순서상에 여러개의 연속적인 데이터를 각각 비교하여 그 두 종료의 데이터가 얼마나 유사한가를 판별해 내는 알고리즘
(2) 유클리드 거리 공식을 이용해 거리를 측정 값이 작을 수록 비슷함

9. Semi Supervised Learning
supervised와 unsupervised의 중간 점
의료 분야에서 많이 사용 됨

10. hidden markov model : HMM
음석, 제스쳐 인식 알고리즘 사용 가능
(1) 상태 전이 확률
- 오늘 비가 올 확률, 날씨가 맑을 확률
(2) 관측 확률
- 비가 올 때 집에 있을 확률, 비가 올 때 외출할 확률
(3) 초기 상태 확률 벡터
- HMM을 기동시킬 때 어느 상태에서 시작할 지를 결정하는데 쓰임
HTK(HMM Toolkit)

11. 최적화 알고리즘
11.2 미분을 이용한 방법
미분이 0이 되는 값으로 최소값, 최대값을 찾음
11.2.2 내리막 경사법
미분이 모두 가능한 것이 아니므로 사용하는 방법
경사가 가장 급하게 변하는 방향을 차아 그 방향으로 이동
전형적인 Greedy 알고리즘
지역 최적 점으로 수렴하고 끝날 가능성이 높음

11.2.3 라그랑제 승수
-Beysian 분류기
사전확률 p(A)  과 우도확률 p(B|A)를 안다면 사후확률 p(A|B)를 알 수있다는 것

12 유클리드 거리 공식

13. 스트링 인식기
Levenshtein 거리 계산
테스트 x와 원본y를 비교
x를 삽입, 삭제, 대치, 앞뒤 단어 비교 를 통해 y로 만드는 데 비용을 계산

Dynamic Programming의 일종
최장 공통 부분 스트링(Lonest common substring) 문제가 됨

14. HMM(Hidden Markov model)

15. 결정 트리
스무 고개 방식으로 구현
Posted by 공놀이나하여보세
,

'Python' 카테고리의 다른 글

실시간 그래프 그리기 matplotlib  (0) 2015.03.17
웹서버 만들기  (0) 2015.02.27
(펌)파이썬을 배우는 최고의 방법  (0) 2015.02.10
Posted by 공놀이나하여보세
,
Posted by 공놀이나하여보세
,
(1) 양적 특징 벡터
신경망, SVM, 트리 분류기

(2) 질적 특징 벡터
트리 분류기

StatLog프로젝트 : 20여 개의 분류 알고리즘을 20여 개의 데이터베이스에 대해 성능 비교 실험을 수행하고 패턴 인식 시스템 개발에 유익한 가이드 라인을 제공 책으로 출판

12.1

12.2 재 샘플링에 의한 성능 평가
k-fold cross validation : 샘플을 k개의 부분 집합으로 등분한다. 분류기를 k-1개의 부분 집합으로 학습시키고 나머지 한 개의 부분 집합으로 학습된 분류기의 성능을 측정한다. 이 과정을 서로 다른 부분 집합으로 k번 수행하여 얻은 성능을 평균하여 그것을 분류기의 성능으로 취한다. k= N으로 하면 매번 한 개의 샘플로 테스트를 하는 셈이 된다.
Posted by 공놀이나하여보세
,