Documents Taxonomy - LASSO regression을 중심으로

Similar documents
Data Mining 1 regularized model을 이용한 이미지 분류 1 Introduction 이미지 데이터는 매트릭스 형태이다. 이미지 분류를 하기 위해서 이미지 형식을 매트릭스 에서 벡터로 변환하는 작업이 필요하다. 그러면 하나의 이미지는 p차원인 벡터형

NLTK 6: 텍스트 분류 학습 (` `%%%`#`&12_`__~~~ౡ氀猀攀)

DIY 챗봇 - LangCon

슬라이드 1

15 홍보담당관 (언론홍보담당) 김병호 ( 金 秉 鎬 ) 16 (행정담당) 박찬해 ( 朴 鑽 海 ) 예산담당관 17 (복지행정담당) 이혁재 ( 李 赫 在 ) 18 (보육담당) 주사 이영임 ( 李 泳 任 ) 기동근무해제. 19 (장애인담당) 박노혁 ( 朴 魯 爀 ) 기동

조사연구 권 호 연구논문 한국노동패널조사자료의분석을위한패널가중치산출및사용방안사례연구 A Case Study on Construction and Use of Longitudinal Weights for Korea Labor Income Panel Survey 2)3) a

thesis-shk

에너지경제연구 Korean Energy Economic Review Volume 17, Number 2, September 2018 : pp. 1~29 정책 용도별특성을고려한도시가스수요함수의 추정 :, ARDL,,, C4, Q4-1 -

서론 1.1 연구배경및목적 Table 1. Cancer mortality Stomach cancer no. of deaths 11,701 11,190 10,935 10,716 10,563 10,312 m

An Effective Sentence-Extraction Technique Using Contextual Information and Statistical Approaches for Text Summarization

(, sta*s*cal disclosure control) - (Risk) and (U*lity) (Synthe*c Data) 4. 5.

Journal of Educational Innovation Research 2019, Vol. 29, No. 1, pp DOI: : * Research Subject

텀블러514

15인플레이션01-목차1~9

ISO17025.PDF

04김호걸(39~50)ok

R을 이용한 텍스트 감정분석

전립선암발생률추정과관련요인분석 : The Korean Cancer Prevention Study-II (KCPS-II)

정보기술응용학회 발표

Orcad Capture 9.x


비선형으로의 확장

10김묘선

i

슬라이드 1

<352EC7E3C5C2BFB55FB1B3C5EBB5A5C0CCC5CD5FC0DABFACB0FAC7D0B4EBC7D02E687770>

Probability Overview Naive Bayes Classifier Director of TEAMLAB Sungchul Choi

THE JOURNAL OF KOREAN INSTITUTE OF ELECTROMAGNETIC ENGINEERING AND SCIENCE Jul.; 29(7),

노무관리업무 담당자 워크숍 속표지

untitled

Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할

<313120C0AFC0FCC0DA5FBECBB0EDB8AEC1F2C0BB5FC0CCBFEBC7D15FB1E8C0BAC5C25FBCF6C1A42E687770>

¾DÁ ÖÖ„�Àº¨Ö´ä

2부 데이터 수집

예제 1.1 ( 관계연산자 ) >> A=1:9, B=9-A A = B = >> tf = A>4 % 4 보다큰 A 의원소들을찾을경우 tf = >> tf = (A==B) % A

서론 34 2

THE JOURNAL OF KOREAN INSTITUTE OF ELECTROMAGNETIC ENGINEERING AND SCIENCE. vol. 29, no. 10, Oct ,,. 0.5 %.., cm mm FR4 (ε r =4.4)

MySQL-.. 1

쉽게배우는알고리즘 6장. 해시테이블 테이블 Hash Table

4 CD Construct Special Model VI 2 nd Order Model VI 2 Note: Hands-on 1, 2 RC 1 RLC mass-spring-damper 2 2 ζ ω n (rad/sec) 2 ( ζ < 1), 1 (ζ = 1), ( ) 1

Journal of Educational Innovation Research 2018, Vol. 28, No. 1, pp DOI: * A Study on the Pe

사회통계포럼

빅데이터 분산 컴퓨팅 -6

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할

Reinforcement Learning & AlphaGo


DBPIA-NURIMEDIA

歯제7권1호(최종편집).PDF

에너지경제연구 Korean Energy Economic Review Volume 9, Number 2, September 2010 : pp. 1~18 가격비대칭성검정모형민감도분석 1

동아시아국가들의실질환율, 순수출및 경제성장간의상호관계비교연구 : 시계열및패널자료인과관계분석

김기남_ATDC2016_160620_[키노트].key

Microsoft Word - [2017SMA][T8]OOPT_Stage_2040 ver2.docx

adfasdfasfdasfasfadf

1

DBPIA-NURIMEDIA

2017 년 6 월한국소프트웨어감정평가학회논문지제 13 권제 1 호 Abstract

슬라이드 1

BSC Discussion 1

<31372DB9DABAB4C8A32E687770>


Multi-pass Sieve를 이용한 한국어 상호참조해결 반-자동 태깅 도구

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할

PowerPoint 프레젠테이션

λx.x (λz.λx.x z) (λx.x)(λz.(λx.x)z) (λz.(λx.x) z) Call-by Name. Normal Order. (λz.z)

유해중금속안정동위원소의 분석정밀 / 정확도향상연구 (I) 환경기반연구부환경측정분석센터,,,,,,,, 2012

PowerPoint 프레젠테이션

한국정책학회학회보

untitled

Tree 기반의 방법

#한국사문제7회4급

C# Programming Guide - Types

에너지경제연구 Korean Energy Economic Review Volume 11, Number 2, September 2012 : pp. 1~26 실물옵션을이용한해상풍력실증단지 사업의경제성평가 1

60


목차 BUG 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG ROLLUP/CUBE 절을포함하는질의는 SUBQUE


특허청구의 범위 청구항 1 회선 아이디 접속 시스템에 있어서, 온라인을 통해 실제 사용자 고유정보의 발급이 가능한 아이디 발급 사이트를 제공하기 위한 아이디 발급 수단; 오프라인을 통한 사용자의 회선 아이디 청약에 따라 가상의 사용자 고유정보 및 가인증 정보를 생성하고

산선생의 집입니다. 환영해요

T100MD+

PJTROHMPCJPS.hwp

untitled

<C0D3C7F6BCFA2E687770>

untitled

Intra_DW_Ch4.PDF

Something that can be seen, touched or otherwise sensed

partprime_intro.key

90

조사연구 using odds ratio. The result of analysis for 58 election polls registered in National Election Survey Deliberation Commission revealed that progr

2 / 27 목차 1. M-plus 소개 2. 중다회귀 3. 경로모형 4. 확인적요인분석 5. 구조방정식모형 6. 잠재성장모형 7. 교차지연자기회귀모형

2002년 2학기 자료구조

歯스왑노트1

1217 WebTrafMon II

e hwp

<3332C8A32DC6EDC1FDC1DF2E687770>


<B9CCB5F0BEEEB0E6C1A6BFCDB9AEC8AD5F31322D32C8A35FBABBB9AE5FC3CAC6C731BCE25F6F6B5F E687770>

PowerPoint Presentation

Transcription:

Documents Taxonomy LASSO regression 을중심으로 유충현 Updated: 2017/12/17

Overview 1. 들어가기 2. 데이터전처리 3. 모델생성 4. 모델성능비교 1

들어가기

서론 Taxonomy는 사전적으로 "사물이나 생명체 등을 분류하기 위해서 사용되는 분류체계"로 해석되며, 분류체계는 트리형의 위계적 (Hirerachy) 구조로 표현한다. Documents Taxonomy는 문서(텍스트)들을 분류체계 기준으로 분류하는 것으로, 대표적인 것에 콜센터의 상담 내용을 상담 분류 체계로 분류하는 것이 있다. 엄밀하게 구분하면 Taxonomy와 Classification은 다른 개념이지만, 여기서는 Classification Model로 Documents Taxonomy의 가능성을 진단해 본다. 3

문제 제기 STT(Speech to Text) 기술로 생성한 상담내역 Documents를 Patterns과 Rules 기반이 아닌 Machine Learning 기법으로 분류할 수는 없을까? Patterns과 Rules 기반의 분류의 한계점 # 성능의 편차: 작업자의 숙련도에 의한 분류 성능의 편차가 심함. # 노동 집약적 기술: Patterns을 찾아내는 업무는 지루하고, 끊임없는 탐색과 단순 반복 업무임. # 복잡도 증가의 회피: Patterns과 Rules이 복잡도가 증가하면 Rule의 상호 충돌을 회피하기 위한 비용 증가를 동반함. 4

학습목표 다음을네가지섹션의이해를목표로학습을수행한다. 데이터구조의이해 : Vectorization DTM(Document Term Matrix) 데이터처리의이해 : TF-IDF n-gram Feature hashing 모델의이해 : LASSO regression 패키지의이해 : text2vec glmnet 5

학습 방법 사람들의 대화를 들어보면 개인별로 즐겨 사용하는 언어적 특징이 있는 것처럼, 대통령의 연설문에도 개인적 특징이 담겨있지 않을까? 연설문만으로 어떤 대통령이 연설했는가를 분류 # 데이터: 대통령 연설문 전문 # 분류 방법: 연설문 내용으로 어느 대통령 이름 분류 김대중, 노무현, 이명박 # 성능의 비교: 몇 가지 방법에 대해서 분류의 성능 비교 6

데이터 준비하기 # 대통령기록연구실 홈페이지 http: //www.pa.go.kr/research/contents/speech/index.jsp 수집한 데이터를 speech.rda 파일로 제공 그림: 연설기록 제공 화면 7

데이터전처리

데이터로딩 load("./data/speech.rda") dim(speech) [1] 2408 7 names(speech) [1] "id" "president" "category" "type" "title" "date" [7] "doc" 9

데이터구조 table(speech$president) 김대중노무현이명박 822 780 806 table(speech$category) 과학기술-정보 교육 국방 국정전반 기타 75 80 139 308 72 문화-체육-관광 산업-경제 외교-통상 정치-사회 환경 387 300 678 344 25 10

데이터구조 table(speech$type) 국회연설 기념사 기타 기타 ( 연설 ) 라디오연설 만찬사 34 490 296 44 100 246 성명-담화문 신년사 취임사 치사 환영사 223 50 4 907 14 speech$title[1:2] [1] "2005 한일우정의해개막식축사 " [2] "2007 한중교류의해를맞아중국국가주석에게보내는축하메시지 " 11

데이터 Split Train:Test = 7:3 로데이터 Split library(data.table) setdt(speech) setkey(speech, id) ids <- speech$id n <- NROW(speech) * 0.7 set.seed(1234l) train_ids <- sample(ids, n) test_ids <- setdiff(ids, train_ids) train <- speech[j(train_ids)] test <- speech[j(test_ids)] 12

Vectorization : Document Term Matrix 생성 Document Term Matrix 생성개념 13

Vectorization : Document Term Matrix 생성 Document Term Matrix 생성예시 14

Vectorization tokenize 반복기정의 library(text2vec) token_fun <- tokenizers::tokenize_words it_train <- itoken_parallel(train$doc, + tokenizer = token_fun, + ids = train$id, + progressbar = FALSE) it_test <- itoken_parallel(test$doc, + tokenizer = token_fun, + ids = test$id, + progressbar = FALSE) 15

Vectorization Vocabulary 생성 library(doparallel) nc <- parallel::detectcores() registerdoparallel(nc) vocab <- create_vocabulary(it_train) tail(vocab, n = 3) %% + knitr::kable(., row.names = FALSE, format.args = list(big.mark = ",")) term term_count doc_count 수 8,868 1,390 것입니다 9,604 1,448 있습니다 12,409 1,533 16

Vectorization Document Term Matrix 생성 : Frequency 기반 vectorizer <- vocab_vectorizer(vocab) dtm_train <- create_dtm(it_train, vectorizer) dim(dtm_train) [1] 1685 130282 dtm_test <- create_dtm(it_test, vectorizer) dim(dtm_test) [1] 723 130282 17

N-Grams 기반 DTM 생성 N-Grams 기반 DTM 생성예시 18

N-Grams 기반 DTM 생성 Vocabulary 생성 vocab_bigram <- create_vocabulary(it_train, ngram = c(1l, 2L)) dim(vocab_bigram) [1] 795447 3 head(vocab_bigram, n = 3) %% + knitr::kable(., row.names = FALSE, format.args = list(big.mark = ",")) term term_count doc_count 새로운 _ 원천기술을 1 1 민주주의재단 _national 1 1 다차원적으로 1 1 19

N-Grams 기반 DTM 생성 Document Term Matrix 생성 prune_vocabulary() : vocabulary 가지치기 ( 처리속도개선 ) vocab_bigram <- vocab_bigram %% + prune_vocabulary(term_count_min = 10, doc_proportion_max = 0.5) vectorizer_bigram <- vocab_vectorizer(vocab_bigram) dtm_train_bigram <- create_dtm(it_train, vectorizer_bigram) dim(dtm_train_bigram) [1] 1685 19558 dtm_test_bigram <- create_dtm(it_test, vectorizer_bigram) dim(dtm_test_bigram) [1] 723 19558 20

Feature hashing 기반 DTM 생성 Document Term Matrix 생성 vectorizer_hash <- hash_vectorizer(hash_size = 2 ^ 14, ngram = c(1l, 2L)) dtm_train_hash <- create_dtm(it_train, vectorizer_hash) dim(dtm_train_hash) [1] 1685 16384 dtm_test_hash <- create_dtm(it_test, vectorizer_hash) dim(dtm_test_hash) [1] 723 16384 21

TF-IDF 기반 DTM 생성 Document Term Matrix 생성 * TF-IDF : Term Frequency - Inverse Document Frequency "전체 문서들에서 출현빈도는 낮지만, 특정 문서에서 출현빈도가 높은 Term은 특정 문서들을 구별해주는 유용한 Term이다." tfidf <- TfIdf$new() dtm_train_tfidf <- fit_transform(dtm_train, tfidf) dim(dtm_train_tfidf) [1] 1685 130282 dtm_test_tfidf <- create_dtm(it_test, vectorizer) %% + transform(tfidf) dim(dtm_test_tfidf) [1] 723 130282 22

모델생성

LASSO LASSO(Least Absolute Shrinkage Selector Operator) 정규화 선형회귀모형 (Regularized Regression) # 관측치의 수 < 독립변수의 수 overfiting 회귀계수가 과도하게 증가하는 경향. # 정규화 선형회귀모형: 추가 제약조건으로 계수의 크기를 제한하는 방법 cost 함수를 최소화하는 조건으로 회귀계수 도출 # 정규화 선형회귀모형 종류: Ridge regression LASSO regression Elastic Net regression 24

LASSO cost 함수 정규화선형회귀모형의 cost 함수와특징 Ridge regression cost e 2 i + λ w 2 i 회귀계수를줄여주는효과 robust LASSO refression cost e 2 i + λ w i 회귀계수를줄여주는효과 robust 유의미하지않는변수의회귀계수 0 변수선택효과 Elastic Net regression cost e 2 i + λ 1 wi + λ 2 w 2 i Ridge 와 LASSO 의 hybrid 25

LASSO regression : Frequency 모델생성 library(glmnet) NFOLDS <- 10 classifier <- cv.glmnet(x = dtm_train, y = train[['president']], + family = 'multinomial', + # L1 penalty + alpha = 1, + # interested in the area under ROC curve + type.measure = "auc", + # n-fold cross-validation + nfolds = NFOLDS, + # high value is less accurate, but has faster training + thresh = 1e-3, + # again lower number of iterations for faster training + maxit = 1e3, + parallel = TRUE) 26

LASSO regression : Frequency 모델평가 LASSO regression - Frequency 모델평가 library(caret) pred_voca <- predict(classifier, dtm_test, type = 'response')[,, 1] president_voca <- apply(pred_voca, 1, + function(x) colnames(pred_voca)[which(max(x) == x)]) cm_voca <- confusionmatrix(test$president, president_voca) 27

LASSO regression : Frequency 모델평가 cm_voca$table Reference Prediction 김대중노무현이명박 김대중 214 17 7 노무현 2 233 8 이명박 0 12 230 cm_voca$overall Accuracy Kappa AccuracyLower AccuracyUpper AccuracyNull 9.363762e-01 9.045312e-01 9.160437e-01 9.530465e-01 3.623790e-01 AccuracyPValue McnemarPValue 5.307683e-235 2.013406e-04 28

LASSO regression : Frequency 모델평가 cm_voca$byclass Sensitivity Specificity Pos Pred Value Neg Pred Value Class: 김대중 0.9907407 0.9526627 0.8991597 0.9958763 Class: 노무현 0.8893130 0.9783080 0.9588477 0.9395833 Class: 이명박 0.9387755 0.9748954 0.9504132 0.9688150 Precision Recall F1 Prevalence Detection Rate Class: 김대중 0.8991597 0.9907407 0.9427313 0.2987552 0.2959889 Class: 노무현 0.9588477 0.8893130 0.9227723 0.3623790 0.3222683 Class: 이명박 0.9504132 0.9387755 0.9445585 0.3388658 0.3181189 Detection Prevalence Balanced Accuracy Class: 김대중 0.3291840 0.9717017 Class: 노무현 0.3360996 0.9338105 Class: 이명박 0.3347165 0.9568355 29

LASSO regression : N-Grams classifier <- cv.glmnet(x = dtm_train_bigram, y = train[['president']], + family = 'multinomial', + alpha = 1, + type.measure = "auc", + nfolds = NFOLDS, + thresh = 1e-3, + maxit = 1e3) 30

LASSO regression : N-Grams 모델평가 LASSO regression : N-Grams 모델평가 pred_bigram <- predict(classifier, dtm_test_bigram, + type = 'response')[,, 1] president_bigram <- apply(pred_bigram, 1, + function(x) + colnames(pred_bigram)[which(max(x) == x)]) cm_bigram <- confusionmatrix(test$president, president_bigram) 31

LASSO regression : N-Grams 모델평가 cm_bigram$table Reference Prediction 김대중노무현이명박 김대중 223 10 5 노무현 3 231 9 이명박 2 15 225 cm_bigram$overall Accuracy Kappa AccuracyLower AccuracyUpper AccuracyNull 9.391425e-01 9.086961e-01 9.191596e-01 9.554363e-01 3.540802e-01 AccuracyPValue McnemarPValue 2.000079e-244 8.752061e-02 32

LASSO regression : N-Grams 모델평가 cm_bigram$byclass Sensitivity Specificity Pos Pred Value Neg Pred Value Class: 김대중 0.9780702 0.9696970 0.9369748 0.9896907 Class: 노무현 0.9023438 0.9743041 0.9506173 0.9479167 Class: 이명박 0.9414226 0.9648760 0.9297521 0.9708940 Precision Recall F1 Prevalence Detection Rate Class: 김대중 0.9369748 0.9780702 0.9570815 0.3153527 0.3084371 Class: 노무현 0.9506173 0.9023438 0.9258517 0.3540802 0.3195021 Class: 이명박 0.9297521 0.9414226 0.9355509 0.3305671 0.3112033 Detection Prevalence Balanced Accuracy Class: 김대중 0.3291840 0.9738836 Class: 노무현 0.3360996 0.9383239 Class: 이명박 0.3347165 0.9531493 33

LASSO regression : Feature hashing classifier <- cv.glmnet(x = dtm_train_hash, y = train[['president']], + family = 'multinomial', + alpha = 1, + type.measure = "auc", + nfolds = NFOLDS, + thresh = 1e-3, + maxit = 1e3, + parallel = TRUE) 34

LASSO regression : Feature hashing 모델평가 LASSO regression : Feature hashing 모델평가 pred_hash <- predict(classifier, + dtm_test_hash, type = 'response')[,, 1] president_hash <- apply(pred_hash, 1, + function(x) + colnames(pred_hash)[which(max(x) == x)]) cm_hash <- confusionmatrix(test$president, president_hash) 35

LASSO regression : Feature hashing 모델평가 cm_hash$table Reference Prediction 김대중노무현이명박 김대중 215 18 5 노무현 6 227 10 이명박 5 13 224 cm_hash$overall Accuracy Kappa AccuracyLower AccuracyUpper AccuracyNull 9.211618e-01 8.817166e-01 8.990602e-01 9.397445e-01 3.568465e-01 AccuracyPValue McnemarPValue 2.667352e-224 9.404918e-02 36

LASSO regression : Feature hashing 모델평가 cm_hash$byclass Sensitivity Specificity Pos Pred Value Neg Pred Value Class: 김대중 0.9513274 0.9537223 0.9033613 0.9773196 Class: 노무현 0.8798450 0.9655914 0.9341564 0.9354167 Class: 이명박 0.9372385 0.9628099 0.9256198 0.9688150 Precision Recall F1 Prevalence Detection Rate Class: 김대중 0.9033613 0.9513274 0.9267241 0.3125864 0.2973721 Class: 노무현 0.9341564 0.8798450 0.9061876 0.3568465 0.3139696 Class: 이명박 0.9256198 0.9372385 0.9313929 0.3305671 0.3098202 Detection Prevalence Balanced Accuracy Class: 김대중 0.3291840 0.9525249 Class: 노무현 0.3360996 0.9227182 Class: 이명박 0.3347165 0.9500242 37

LASSO regression : TF-IDF classifier <- cv.glmnet(x = dtm_train_tfidf, y = train[['president']], + family = 'multinomial', + alpha = 1, + type.measure = "auc", + nfolds = NFOLDS, + thresh = 1e-3, + maxit = 1e3, + parallel = TRUE) 38

LASSO regression : TF-IDF 모델평가 LASSO regression : Feature hashing 모델평가 pred_tfidf <- predict(classifier, + dtm_test_tfidf, type = 'response')[,, 1] president_tfidf <- apply(pred_tfidf, 1, + function(x) + colnames(pred_tfidf)[which(max(x) == x)]) cm_tfidf <- confusionmatrix(test$president, president_tfidf) 39

LASSO regression : TF-IDF 모델평가 cm_tfidf$table Reference Prediction 김대중노무현이명박 김대중 230 5 3 노무현 7 226 10 이명박 4 6 232 cm_tfidf$overall Accuracy Kappa AccuracyLower AccuracyUpper AccuracyNull 9.515906e-01 9.273867e-01 9.333144e-01 9.660528e-01 3.388658e-01 AccuracyPValue McnemarPValue 1.183254e-270 6.877764e-01 40

LASSO regression : TF-IDF 모델평가 cm_tfidf$byclass Sensitivity Specificity Pos Pred Value Neg Pred Value Class: 김대중 0.9543568 0.9834025 0.9663866 0.9773196 Class: 노무현 0.9535865 0.9650206 0.9300412 0.9770833 Class: 이명박 0.9469388 0.9790795 0.9586777 0.9729730 Precision Recall F1 Prevalence Detection Rate Class: 김대중 0.9663866 0.9543568 0.9603340 0.3333333 0.3181189 Class: 노무현 0.9300412 0.9535865 0.9416667 0.3278008 0.3125864 Class: 이명박 0.9586777 0.9469388 0.9527721 0.3388658 0.3208852 Detection Prevalence Balanced Accuracy Class: 김대중 0.3291840 0.9688797 Class: 노무현 0.3360996 0.9593035 Class: 이명박 0.3347165 0.9630091 41

모델성능비교

모델성능비교 result <- rbind(cm_voca$overall, cm_bigram$overall, + cm_hash$overall, cm_tfidf$overall) data.frame(method=c("frequency", "Bigram", "Hash", "TF-ID"), + round(result, 4)) %% + dplyr::select(method, Accuracy, AccuracyLower, AccuracyUpper) %% + dplyr::arrange(desc(accuracy)) %% + knitr::kable() method Accuracy AccuracyLower AccuracyUpper TF-ID 0.9516 0.9333 0.9661 Bigram 0.9391 0.9192 0.9554 Frequency 0.9364 0.9160 0.9530 Hash 0.9212 0.8991 0.9397 43

어떻게 튜닝할 것인가? 예전에는 성능 튜닝을 모델 튜닝의 협의적인 방법만 생각했었다! Text Analytics는 모델과의 싸움이 아니야 Text Analytics에서 예측의 성능을 높히기 위해서는 Natural Language Processing과 Documents를 Vectorization하는 방법을 고민해야 함. 데이터 전처리의 노고는 결과를 배신하지 않는다. 44

Document Taxonomy를 위한 제언 # tokenizer 형태소 단위의 tokenizer가 words 단위의 tokenizer보다 성능이 낮았다 형태소 단위의 분석만 고집하지 말자. # trade off DTM은 많은 컬럼을 포함한 대용량 데이터로 연산 속도의 저하 유발 성능 감소를 감내하고, 차원을 축소해 보자. 형태소 단위, pruned matrix, Feature hashing # hybrid 접근 N-Gram DTM을 TF-IDF로 변환하면 어떨까? Accuracy = 0.9627로 TF-IDF보다 높게 나옴 # 전처리 본 예제에서 Text 전처리를 수행하지 않았음 45

hybrid 접근코드 tfidf <- TfIdf$new() dtm_train_tfidf2 <- fit_transform(dtm_train_bigram, tfidf) dtm_test_tfidf2 <- fit_transform(dtm_test_bigram, tfidf) classifier <- cv.glmnet(x = dtm_train_tfidf2, y = train[['president']], + family = 'multinomial', alpha = 1, + type.measure = "auc", nfolds = NFOLDS, + thresh = 1e-3, maxit = 1e3, parallel = TRUE) pred_tfidf2 <- predict(classifier, dtm_test_tfidf2, + type = 'response')[,, 1] president_tfidf2 <- apply(pred_tfidf2, 1, + function(x) + colnames(pred_tfidf2)[which(max(x) == x)]) cm_tfidf2 <- confusionmatrix(test$president, president_tfidf2) 46

References Vectorization http://text2vec.org/vectorization.html Dmitriy Selivanov, 2017 Lasso and Elastic-Net Regularized Generalized Linear Models https://cran.r-project.org/web/packages/glmnet/ vignettes/glmnet_beta.pdf Trevor Hastie and Junyang Qian, 2016 47

THE END