1 of 25

TextMining과

NaiveBayes분류 알고리즘

2 of 25

오늘 다루는 내용은...

Spark에서 TextMining 할 때 괜찮은 도구들..

  1. Spark에서 쓰는 형태소 분석기
  2. NaiveBayes분류 알고리즘
  3. 시연
  4. 분류 평가 정리

3 of 25

데이터 소개

(상가명 - 업종코드) 450만개 Set

업종코드 : 380여개

꼭지네즉석떡뽂이 - 떡뽁이전문

서현대미용실 - 미용실

바른김밥 김선생 - 라면김밥분식

태광어린이집 - 횟집 (????)

4 of 25

문제점

  1. 새로운 상가명이 들어왔을때 업종코드를 예측 할 수 있을까?

  • 현재 RuleSet기반의 업종코드 매핑의 오분류된 데이터를 찾을수 있을까?

5 of 25

  1. 형태소분석

출처: 박은정(파이썬 한국어 NLP) https://www.slideshare.net/lucypark/py-con-2014-38531830

6 of 25

  • 형태소분석

7 of 25

  1. 형태소분석

형태소분석

Spark NKP

(은전한닢 Scala버전 seunjun을 Spark로 개량)

http://eunjeon.blogspot.kr/

https://github.com/uosdmlab/spark-nkp

8 of 25

2. NaiveBayes 분류

9 of 25

2. NaiveBayes 분류

P(A|B) = P(B|A) * P(A) / P(B)

10 of 25

2. NaiveBayes 분류

P(A|B) = P(A ∩B) / P(B)

P(B|A) = P(A ∩B) / P(A)

=> P(B|A) * P(A) = P(A ∩B)

P(A|B) = P(B|A) * P(A) / P(B)

11 of 25

2. NaiveBayes 분류

P(Spam|Free) = P(Free|Spam) * P(Spam) / P(Free)

P(Ham|Free) = P(Free|Ham) * P(Ham) / P(Free)

12 of 25

2. NaiveBayes 분류

P(Spam|[Free,Visit,....]) = P([Free,Visit,....]|Spam) * P(Spam)

P(Spam|[Free,Visit,....]) = P(Free|Spam) * P(Visit|Spam) * P(....|Spam) * P(Spam)

13 of 25

3.시연

시연 데이터 소개

(상가명 - 업종코드) 240만개 Set

업종코드 : 720여개

data.go.kr

중소상인공단 업로드한

상가데이터 파일

14 of 25

3.시연 - Text Mining Process

맴맴숫불통닭

[맴,맴,숯불,통닭]

[9900,[(0,2),(1,1),(2,1)]]

형태소분석

TF, TF-IDF,word2vec

후라이드/양념치킨

278

StringIndexer

Feature

Label

Naive Bayes

15 of 25

3.시연 - Text Mining Process

Feature

TF / TF-IDF / Word2Vec

TF : org.apache.spark.ml.feature.CountVectorizer

IDF : org.apache.spark.ml.feature.IDF

Word2Vec : org.apache.spark.ml.feature.Word2Vec

Label

업종코드 String => Double

org.apache.spark.ml.feature.StringIndexer

Algorithm

NaiveBayes / SVM

org.apache.spark.ml.classification.NaiveBayes

SVM은 2.2 버전부터 사용가능

16 of 25

3.시연 - Text Mining 결과

TF-NB

TRAIN : 72.6%

TEST : 70.8%

TF-IDF-NB

TRAIN : 75.7%

TEST : 70.2%

품질개선

업종코드를 다르게 예측하였고, 예측확률이 아주 높은 순 정렬

17 of 25

시연

18 of 25

4.분류평가

정확도

(Accuracy)

민감도

(Sensitivity)

특이도

(Specificity)

FScore

정밀도

(Precision)

재현율

(Recall)

ROC

19 of 25

4.분류평가

정확도

(Accuracy)

민감도

(Sensitivity)

특이도

(Specificity)

FScore

정밀도

(Precision)

재현율

(Recall)

ROC

Precision-

Recall Graph

1.분류

2.검출(검색)

Mean IU

Pixel Accuracy

Mean

Accuracy

Frequency

Weighted IU

3.분할

K-S test

Gini

4.금융

20 of 25

4.분류평가 - 혼돈매트릭스(Confusion Matrix)

21 of 25

4.분류평가

분류-민감도

분류-특이도

검출-정밀도

검출-재현율

22 of 25

4.분류평가

분류-정확도

검출-FScore

2 X 정밀도 X 재현율

정밀도 + 재현율

  • 정밀도와 재현율의 조화평균

23 of 25

4.분류평가

출처 : 김태영의 케라스 블로그 https://tykimos.github.io/2017/05/22/Evaluation_Talk/

24 of 25

4.분류평가

분류-ROC curve

(Receiver Operating Characteristic)

검출-Precision-recall curve

AUC (Area Under Curve)

= 커브하단면적

AP(Average Precision)

= MEAN( Precion + Recall)

25 of 25

수고하셨습니다.