본문 바로가기

전체 글

(12)
[Machine Learning] 나이브 베이즈 분류(Naive Bayesian Classification) 이번 포스팅에서는 나이브 베이즈 분류(Naive Bayesian Classification)에 대해서 알아보도록 하겠습니다. 나이브 베이즈 분류는 스팸 필터나 문서 분류등에서도 많이 사용되는 분류 방법으로써, 분류 문제에 있어서 현재도 많이 이용되는 방법입니다. ​ 1. 확률 이론 - 조건부 확률 ​ 나이브 베이즈 분류에 대해서 알아보기 전에 확률 이론중 조건부 확률에 대해 알아야 합니다. 크게 어려운 내용은 아니니 간단하게 짚고 넘어가보도록 하겠습니다. ​ 먼저 간단하게, 확률은 다음과 같이 나타냅니다. 위의 그림과 같이, 파란색 구슬3개, 빨간색 구슬 2개로 총 5개의 구슬이 있을때, P(파란색 구슬) = 3/5 P(빨간색 구슬) = 2/5 입니다. ​ 즉, P( A ) = A 의 경우의 수 / 전체..
[주성분분석]PCA: Principal component analysis with R 주성분분석(PCA: Principal component analysis) with R ​ Chapter 1. 주성분 분석이란 ​ (1) 차원분석의 개념 ​ 주성분 분석은 머신러닝(ML)에서 “차원 축소”의 형태로 많이 사용이 됨 차원축소란, 고차원의 데이터를 저차원의 데이터로 변환하는데 사용됨 ​ 차원축소로 기대할 수 있는 효과는 머신러닝에서는 모델의 성능을 강화시켜주는 것이고, 통계적으로는 적은 수의 특징만으로 특정 현상을 설명하려고 할 때 쓰임 ​ 차원 축소의 방법으로는 크게 두가지임, (1) Feature Selection (2) Feature Extraction ​ PCA는 Feature Extraction임 차원 축소의 방법에 관한 쉽고 좋은 강의가 있어서 공유함 https://youtu.be/..
[NLP] 자연어 이해 NLU(natural language understanding)와 자연어 생성 NLG(natural language generation) NLG(natural language generation) ※ NLP의 컴포넌트 이해 NLP에는 2개의 주요 컴포넌트가 있는데 2개를 모두 알아보자. NLU (natural language understanding) NLG(natural language generation) 이 컴포넌트는 텍스트, 또는 음성 형식에 관계없이 NL의 의미를 설명하는데 도움이 된다. 우리는 영어, 프랑스어, 스페인어, 힌디어, 또는 다른 인간 언어를 분석할 수 있다. 이 컴포넌트는 머신을 사용해 NL을 생성하는데 도움이 된다. NLU는 NLP 어플리케이션을 개발하기 위해 POS 태거, 파서 등 다양한 도구와 기술을 사용해 NL로부터 팩트를 생성한다. NLG는 POS 태그 같은 팩트에서 시작해 결과를 파싱하는 등의 작업을 거쳐..
[분류성능평가지표] Precision(정밀도), Recall(재현율) and Accuracy(정확도) 기계학습에서 모델이나 패턴의 분류 성능 평가에 사용되는 지표들을 다루겠습니다. 어느 모델이든 간에 발전을 위한 feedback은 현재 모델의 performance를 올바르게 평가하는 것에서부터 시작합니다. 모델이 평가해야하는 요소와 그 것을 수치화한 지표들, 그리고 관련 개념들에 대해서 다루도록 하겠습니다. ​ 모델의 분류와 정답 모델을 평가하는 요소는 결국, 모델이 내놓은 답과 실제 정답의 관계로써 정의를 내릴 수 있습니다. 정답이 True와 False로 나누어져있고, 분류 모델 또한 True False의 답을 내놓습니다. 그렇게 하면, 아래와 같이 2x2 matrix로 case를 나누어볼 수 있겠네요. ​ ​ 이제 각 case별로 살펴보겠습니다. True Positive(TP) : 실제 True인 정..
[DACON] R을 사용한 일원배치 분산분석 (ANOVA in R) – 집단 별 차이가 통계적으로 의미가 있는지 검증해 보자 10대, 20대, 30대의 평균 소비액, 정말로 유의미한 차이인지 확인하려면? ​ 오늘은 매우 간단하면서도 유용한 분석 방법을 소개해 보려고 합니다. 일원배치 분산분석(One-way ANOVA)이 바로 그것인데요, 이 분석은 독립된 세 집단 이상의 평균을 비교하고자 할 때 사용하는 분석 방법입니다. ​ (좀 더 자세히는 평균의 차이가 의미가 있는지를 알아보고자 할 때 사용합니다.) ​ 예를 들어서 설명해 볼까요? 연령대 별로 월 평균 게임에 사용하는 금액을 조사했더니, 10대는 18,200원, 20대는 20,500원 30대는 19,300원을 사용한다는 결과가 나왔다고 가정해 봅시다. ​ 이러한 구매 금액이 정말로 유의미 한 차이인지는 어떻게 확인할 수 있을까요? 1,000원 정도씩 차이가 나는데, 이걸 ..
[NLP] TF-IDF 유사도 측정을 통한 문서 요약 프로그램 문서 요약 필요한가? ​ 하루에 몇 백장의 사건 서류를 읽어야하는 판사님들, 밤새가며 공부하는 학생들 뿐 아니라 항상 글을 읽으며 살아가는 사람들이 있습니다. 하지만 만약 서류나 글을 조금이라도 줄일 수 있다면 어떨까요. 만약 1000 줄 중 가장 중요한 1,2 줄만 바로 볼 수 있다면? 업무시간을 줄이는 데 보다 도움을 줄 수 있지 않을까요? ​ 문서 요약 프로그램 자연어 처리 기술과 유사도 측정, 구글의 Page-Rank 검색 알고리즘을 사용하여 만든 문서 요약 프로그램 입니다. 수능 2018 년도 과학 지문을 예로 들어 한 단계씩 볼까요? ​ 가장 먼저 문서에서 필요한 부분만 추출해내는 전처리 과정을 진행합니다. 일단 문서를 문장 단위로 끊어 볼까요. ​ 일반적으로 문장의 핵심은 어미나 조사가 아닌..
[R shiny] 난수 발생 : set.seed와 sample()함수 1) 시드 설정하기 컴퓨터 프로그램에서 무작위와 관련된 모든 알고리즘은 사실 무작위가 아니라 시작 숫자를 정해 주면 그 다음에는 정해진 알고리즘에 의해 마치 난수처럼 보이는 수열을 생성한다. 다만 출력되는 숫자들 간의 상관관계가 없어 보일 뿐이다. 또한 같은 알고리즘을 여러번 실행하더라도 다른 숫자가 나오도록 시작 숫자는 현재 시간 등을 사용해서 매번 바꿔준다. 이런 시작 숫자를 시드(seed)라고 한다. 따라서 시드를 사람이 수동으로 설정한다면 그 다음에 만들어지는 난수들은 예측할 수 있다. R에서 시드를 설정하는 명령은 set.seed이다. 인수로는 0과 같거나 큰 정수를 넣어준다. set.seed(0) 이렇게 시드를 설정한 후 sample(replace=TRUE) 명령으로 5개의 난수를 생성해 보자..
[Machine Learning] 분산 분석, ANOVA 분산분석은 그룹간의 (평균)비교를 할때 사용하는 통계적 방법론입니다. 익히 알려진 T-test와는 다른 분포를 사용해서 집단을 비교합니다. 이론적 전개와 그에 대한 깊은 이해는 다른 리서치를 통해서도 찾을 수 있기 때문에, 이론적 전개나 anova table해석 등은 생략합니다. 대신에 저는 그 중에서 알아두면 유용할 내용만 적어볼까 합니다. ​ ​ 1. 분산분석은 왜 이름이 '분산' 분석일까? ​ 티테스트(t-test)는 두 집단간의 비교를 할때, t 분포를 이용합니다. t 통계량이 애초부터 분산과 하나도 관계없는 꼴의 형태를 띄고 있지요. ex) t−X^s/n√ t−X^s/n 하지만 분산분석(ANOVA test)는 F분포를 이용합니다. F 검정량은 두 집단의 샘플 분산의 비율입니다. 즉, s21s22..