Your SlideShare is downloading. ×
  • Like
대규모서비스를지탱하는기술 7
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

대규모서비스를지탱하는기술 7

  • 216 views
Published

 

Published in Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
216
On SlideShare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
3
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. 대규모 서비스를 지탱하는 기술Ch.7 알고리즘 실용화chois7913년 6월 25일 화요일
  • 2. Ch.7 에서 다루는 내용1. 대규모 데이터를 앞둔 알고리즘 선택의 중요성2. 알고리즘을 제품에 적용하기까지 어떤 과정이필요한가?13년 6월 25일 화요일
  • 3. 대상이 되는 데이터가 크면 클수록알고리즘이나 데이터 구조 선택이 속도에영향을 미친다13년 6월 25일 화요일
  • 4. 그럼 알고리즘이 무엇인가?어떤 값 또는 값의 집합을 입력으로하고어떤 값 또는 값의 집합을 출력으로 하는명확하게 정의된 계산 절차-Introduction to Algorithms13년 6월 25일 화요일
  • 5. 알고리즘은 왜 배워야 하는가?1. 컴퓨터 자원은 유한하다2. 엔지니어의 ‘공통 언어’3. 알고리즘을 알아둠으로써 새로운문제에도 대처할 수 있다13년 6월 25일 화요일
  • 6. 알고리즘의 평가 방법Order표기법어떤 함수의 증가 양상을 다른 함수와의비교로 표현하는 방법13년 6월 25일 화요일
  • 7. 자주 사용되는 Order 표기O(1) < O(log n) < O(n log n) < O (n2) < O (n3) ...O(nk) < O(2n)대규모 데이터를 대상으로 한 경우n이 클 경우 실용성을 띄는 것은O(n log n)까지13년 6월 25일 화요일
  • 8. 데이터 구조알고리즘과 뗄레야 뗄 수 없는 관계상수항알고리즘을 구현하는 중에 입력의 크기에의존하지 않지만 실행하지 않으면 안되는 처리함수 호출, if문.. 등.구현을 포함해서 생각할때는 상수항에 대한고려도 필요그밖에 고려사항13년 6월 25일 화요일
  • 9. 알고리즘의 실제 활용13년 6월 25일 화요일
  • 10. 하테나 다이어리의키워드 링크13년 6월 25일 화요일
  • 11. 키워드 링크란?글을 작성하면 일부 키워드에 링크가 자동으로걸려 클릭시 이 키워드를설명하는 페이지로 이동하는 서비스13년 6월 25일 화요일
  • 12. 최초 구현 방법정규 표현으로 구현하는 단순한 방법을 채택모든 단어를 OR 조건으로 잇는 정규 표현을 사용(foo|bar|baz ...)$text =~ s/(foo|bar|baz)/&replace_keyword($1)/ge;13년 6월 25일 화요일
  • 13. 문제 발생키워드 갯수가 많이 늘어남!!13년 6월 25일 화요일
  • 14. 특히 시간이 많이 걸리는 부분1. 정규 표현을 컴파일 하는 처리- 미리 정규 표현식을 만들어 저장해 둠으로써 해결2. 정규표현에서 패턴 매칭하는 처리- 키워드 링크가 완료된 본문을 캐싱처리> 근본적인 해결책에 이르지 못함13년 6월 25일 화요일
  • 15. 패턴매칭에 의한 키워드 링크의 문제점정규표현식 알고리즘패턴 매칭에 오토마톤을 사용패턴 매칭에 실패하면 다음 단어를 시도(foo|bar|baz ... )13년 6월 25일 화요일
  • 16. 정규표현을 Trie 방법으로탐색대상 데이터의 공통 접두사를 모아 놓은 트리 구조엣지를 순회하면서 종단이 발견될 경우 단어가 포함된 것으로 간주키워드의 양에 상관 없이 대상의 단어 길이 만큼만 계산13년 6월 25일 화요일
  • 17. Trie를 더 빠르게 AC법 도입패턴 매칭으로 진행되다가 도중에 실패했을 경우,되돌아 오는 길의 엣지를 다시 Trie에 추가한 데이터 구조를 사용되돌아 오는 길의 추가는 Trie의 루트부터너비 우선 탐색으로 구성 가능13년 6월 25일 화요일
  • 18. CPAN 라이브러리의 Regexp::List로 치환Trie에 의해 최적화한 방법을 지원하며,정규 표현식 사용이 가능13년 6월 25일 화요일
  • 19. 직접 구현한 AC법VS. RegexpListAC법을 직접 구현하여 도입함으로 계산량이 줄어들었지만정규 표현식의 각종 옵션을 쓰지 못하게 되어 유연성이 결여됨Regex::List를 채택함으로써 계산량 및 유연성을 모두 확보13년 6월 25일 화요일
  • 20. 키워드 링크 결론정규 표현 => AC법 => Regexp:List처음부터 최적의 구현을 사용하는 것이 옳다고 할 수 없음.데이터가 작은 동안에는 오히려 단순한 것이 결과도 좋음.하지만, 대규모가 될 시기를 대비해서 본질적인 문제의해결방법을 염두에 두는 것이 필요13년 6월 25일 화요일
  • 21. 하테나 북마크의기사 분류13년 6월 25일 화요일
  • 22. 기사 분류란?새로 도착한 기사를 내용 기반으로 자동으로 분류하여사용자에게 카테고리로 분류해서 보여주는 기능하테나 기사 분류는 베이지안 필터라는 원리를 사용13년 6월 25일 화요일
  • 23. 베이지안 필터의 원리‘나이브 베이즈의 정리’를 기반으로 하는 알고리즘P(C|D) 를 구하는 문제D가 주어졌을때 C가 발생할 확률즉, D 문서가 주어졌을때 C 카테고리일 확률을 계산13년 6월 25일 화요일
  • 24. 베이즈 정리P(A|B) 를 계산 가능한 식으로 변경P(A|B) * P(B) = P(A^B)P(A^B) = P(A) * P(B|A)즉, P(A|B) = P(B|A) * P(A) / P(B)13년 6월 25일 화요일
  • 25. 베이즈 정리를 적용원하는 것은 확률 값이 아니라 카테고리 분류 즉, 모든 카테고리에 대한 확률의 우선 순위P(C|D) = P(D|C) * P(C) / P(D)모든 카테고리에 대해 P(D)는 같으므로 생략P(C), P(D|C)가 중요13년 6월 25일 화요일
  • 26. P(D|C), P(C) 구하기P(C)특정 카테고리가 출현할 확률학습 데이터를 통해 C가 나타날 확률을 구함P(D|C)문서는 단어의 집합즉, P(D|C) => P(W1|C) * P(W2|C) .. P(Wn|C)학습 데이터에서 단어마다 어느 카테고리로 분류되었는지횟수를 보존한 후 P(D|C)의 근사값을 구함13년 6월 25일 화요일
  • 27. 알고리즘이 실용화되기까지베이지안 필터는 구조상으로 심플주요 부분은 스크립트 언어로 100 ~ 200 정도But, 적용까지는...13년 6월 25일 화요일
  • 28. 1. C++ 로 개발한 분류 엔진을 서버화2. 서버와 통신해서 결과를 얻는 Perl 클라이언트 작성,웹 애플리케이션에서호출3. 학습 데이터를 정기적으로 백업할 수 있는 기능 추가4. 학습 데이터 1,000 건을 수작업으로 준비5. 바람직한 정밀도가 나오는지 추적하기 위한 통계 구조 작성정밀도 튜닝6. 다중화를 고려해서 스탠바이 시스템 구성7. 웹 애플리케이션 사용자 인터페이스 마련실무 면에서는 고려해야 할 점은 꽤 많다실제 베이지안 필터 적용 과정13년 6월 25일 화요일