수업 출처) 숙명여자대학교 소프트웨어학부 박동철 교수님 '데이터사이언스개론' 수업

 

1. Dealing with Text

- 데이터가 항상 feature vector 형태로 제공되지는 않는다.

- 우리는 도구에 맞도록 데이터 표현을 설계하거나, 데이터에 맞는 새로운 도구를 만들어야 한다.

- 보통은 도구에 맞도록 데이터를 가공한다.

 

2. Why text is important

- 텍스트는 어디에나 존재한다.

- 많은 애플리케이션들은 여전히 텍스트 데이터를 만들거나 기록한다.

- 의료 기록, 제품 조회, 수리 기록, 소비자 불만 사항 기록 등

- 인터넷은 '뉴미디어'의 본고장이지만, 그것은 대부분 오래된 미디어와 같은 형태이다.

- 멀티미디어 데이터는 많은 양의 교통량을 설명할 수 있다.

- 그것은 여전히 사람들이 인터넷으로 서로 텍스트로 대화하면서 발생하는 대량의 텍스트를 포함하고 있다. 

- 기업에서는 고객의 피드백을 이해하기 위해 텍스트를 이해해야 한다. 

- 많은 경우 고객의 의견을 듣고 싶을 때 제품 리뷰, 피드백 문서, 고객 의견, 이메일 등 그들이 작성한 것을 읽어야 한다.

 

3. Why text is difficult

- 텍스트는 대부분 'unstructured' 데이터이다. 컴퓨터가 이해하기에 조직적이지 않다.

- 미리 정의된 데이터 모델도 없고, 사전에 정의된 방식으로 조직되어 있지도 않다.

- 때에 따라 단어 순서가 중요하기도, 그렇지 않기도 하다.

- 사람들이 문장을 적을 때 문법적이지 않게, 스펠링을 틀리게, 예측할 수 없도록 축약해서, 구두점을 랜덤으로 찍는 등 체계적으로 적지 않기 때문이다.

- 유의어, 동음이의어, 축약어 등도 문제가 된다. 축약어는 domain에 따라 전혀 다른 의미가 되기도 한다.

- 전체 문맥을 고려하지 않고 어떤 특정한 단어나 구를 평가하기는 어렵다.

- 이러한 이유로 텍스트 데이터는 데이터 마이닝 이전에 전처리되어야 한다.

 

4. Text Representation

- 목표: 비교적 단어의 순서가 자유로운 문서(documents) 집합을 우리에게 친숙한 feature vector 형식으로 바꾸는 것이다.

- 각 문장이 하나의 개체 (instance)가 된다.

- 하지만, 전처리 이전에 features가 어떤 것일지 알 수 없다.

- 전체 documents의 집합을 corpus라고 한다.

 

5. Bag of Words

- 모든 문서들을 각 개별 단어들의 집합으로 다루는 것이다.

- 문법, 단어 순서, 문장 구조, 구두법을 무시한다.

- 문서의 모든 단어들을 잠재적으로 중요한 키워드로 간주한다.

- 만약 모든 단어가 feature가 될 경우, 각 문서는 1 또는 0으로 대표될 것이다.

    - 1 : feature 단어가 문장에 존재할 경우

    - 0 : feature 단어가 문장에 없을 경우

- 직설적이고, 저렴하게 만들 수 있다.

- 또한, 많은 경우에서 잘 수행된다.

 

6. Term Frequency (TF) 🌟

- 단순한 1, 0 대신 문장 속의 단어 개수 (빈도 frequency)를 이용하는 것이다.

- 단어의 사용 횟수를 구분한다.

- 텍스트 전처리

    - 각 케이스는 정상화(normalized)되어야 한다.

        - 모든 단어는 소문자가 되어야 한다. (형태를 동일하게 만들기 위해)

    - 단어의 어근만 남아야 한다. (stemming)

        - 단어의 복수형, 동사 시제 등 접미사를 제거한다.

        - ex) directors -> director, announces / announcing / announed -> announc !

    - 접속사, 전치사, 관사 등 stop word를 제거한다.

        - stop word는 자연어 데이터 처리 전후에 걸러지는 단어들이다.

        - ex) the, a, and, of, on, etc.

 

ex)

- 예제 문서에 대한 TF 값들이다. 

- normalization, stemming을 한 후 빈도수에 따라 정렬한 결과이다.

 

6-1. Normalized Term Frequency

- 문서들마다 길이가 다양한데, 길이가 긴 문서가 보통 더 많은 단어들을 가지고 있을 것이다.

- 그래서 긴 문서가 짧은 문서보다 더 중요하다거나 관련이 있다는 오해를 불러일으킬 수 있다.

- 각 TF는 다음과 같은 방식으로 정상화된다.

    - 문서 안의 총 단어의 수 (document length) 로 나눈다.

    - 혹은 corpus 안의 특정 단어의 빈도로 나눈다.

 

7. Inverse Document Frequency (IDF) 🌟

- TF는 하나의 문서에서 그 단어가 얼마나 많이 있는지를 측정한다.

- 우리는 또한 단어의 가중치를 결정할 때 전체 corpus에서 그것이 얼마나 만연한지를 고려할 수 있다. 

 

- corpus에서 단어가 너무 희귀하거나 너무 많으면 클러스터링이나 분류를 할 때 도움이 되지 않는다. 무시하는 것이 낫다.

- 따라서 TF에 lower / upper limit을 둘 수 있다.

 

- 어떤 단어가 포함된 문서가 범위 내에서 적을수록 그 문서는 meaningful하다고 볼 수 있다.

- 이러한 단어 t의 희소성은 IDF에 의해 측정된다.

 

- IDF는 단어가 희귀할수록 크다.

- t를 포함한 문서가 많을수록 IDF는 1에 수렴한다.

 

8. Combining TF and IDF : TF-IDF 🌟

- 아주 대중적인 텍스트 표현이다.

- 문서 d에서 t에 대한 TF값과 전체 corpus에서 t에 대한 IDF값을 곱한 것이다.

- 따라서 TF-IDF는 하나의 문서에 한정되는 값이다.

- 각 문서가 feature vector가 된다.

- corpus는 feature vector의 집합이다.

 

- feature가 굉장히 많아지기 때문에 자주 선택을 해야하는데, 텍스트 표현에는 많은 잠재적 조건들이 있다.

- term count에 최대/최소 한계값을 걸거나 각 단어들을 중요도에 따라 순위를 매겨서 information gain을 측정하는 등의 방법이 있다.

 

9. (ex) Jazz musicians

- 위키피디아에서 15명의 유명한 재즈 음악가, 전문가들의 전기를 가져온 것이다.

- 문서가 15개로 작음에도 불구하고 corpus와 그에 담긴 단어들은 너무 많다.

- 접미사를 제거하고 stop-word까지 제거한 후에도 약 2,000개의 feature(단어)가 존재한다.

 

- 예시로 "Famous jazz saxophonist born in Kansas who palyed bebop and latin" 문장을 살펴보려고 한다.

- 우선 basic stemming 단계를 거친다.

    - stemming 방법은 완벽하진 않다. 예를 들면 kansas와 famous를 명사의 복수형이라고 생각하여 kansa, famou 라고 저장할 수 있다.

    - 하지만 이렇게 단어를 저장했다면 문서 전체에서 일관성있게 저장했을 것이기 때문에 stemming을 완벽하게 하는것은 그닥 중요하지 않다.

 

- stemming

- 샘플 문장의 단어들 (tokens)은 위와 같다.

 

- stop word (in, and)를 제거한 후 정상화된 TF는 위와 같다.

 

- 최종 TFIDF 값은 위와 같다.

- 이는 샘플 문서에 대한 feature vector이다.

- TFIDF가 클수록 (latin) 희귀한 단어이고, 작을수록 (jazz) 많이 나오는 단어이다.

 

- 단순한 검색 엔진을 실행하기 위해 이 TFIDF를 사용해보자.

- 사용자가 검색 쿼리에 "Famous jazz saxophonist born in Kansas who palyed bebop and latin" 이 문장을 입력했다고 하자.

- 그럼 우선 이 TF-IDF 표현으로 쿼리를 번역할 것이다.

- 그 다음, 각 음악가의 전기와 쿼리의 단어의 유사도를 각각 계산한 후 가장 가까운 전기를 고를 것이다.

    - 이 때 텍스트 분류에서 두 문서 사이의 유사도를 측정할 때 가장 많이 사용되는 '코사인 유사도 cosine similarity'를 사용할 것이다.

    - cosine similarity = x · y / ||x||₂ ||y||₂

- 유사도 결과를 보면 실제 예제에 해당하는 음악가인 'Charlie  Parker'와의 유사도가 가장 큰 것을 볼 수 있다.

 

10. Beyond "Bag of Words"

- bag of words는 비교적 간단하지만 다양한 상황에서 놀랍게도 잘 수행된다.

- 보통 데이터 과학자가 새로운 텍스트 마이닝 문제를 볼 때 가장 먼저 선택하는 방법이다.

- 하지만, 더욱 정교한 기술이 필요한 애플리케이션에 사용하기엔 부족하다.

- 예를 들면 bag of words는 단어의 순서를 고려하지 않는다.

 

10-1. N-gram Sequences

- 단어의 순서가 중요하고 그에 대한 정보를 남기고 싶은 경우 사용한다.

- 인접한 단어의 순서를 항으로 포함하기 때문에 복잡도는 높아진다.

 

- ex) "The quick brown fox jumps"

    - 문장을 구성하는 단어들 {quick, brown, fox, jumps} + {quick_brown, brown_fox, fox_jumps}

    - 이 일반적인 표현 방법을 n-grams라고 부른다.

 

- 'Bag of n-grams up to three'

    - 각 단어들, 인접한 단어쌍, 인접한 세 개의 단어쌍을 features로 하여 각 문서를 나타낸다.

    - 장점 : easy to generate (언어학적 지식이나 복잡한 파싱 알고리즘을 알 필요가 없다.)

    - 단점 : greatly increase the size of the feature set (각 단어를 저장할 때보다 더 많은 단어쌍이 포함되기 때문에 feature 집합의 크기가 매우 커진다.)

 

10-2. Named Entity Extraction

- 구절을 추출할 때 일반적으로 알려진 이름을 인식하길 바랄 수 있다.

- 예를 들면 Silicon Valley, Minnesota Twins, The Lord of the Rings 등과 같이 각 단어 별로 보면 아무 의미 없지만, 그 자체로 알려진 의미가 있는 구절들을 인식하고자 한다.

- basic bag of word나 n-grams 표현으로도 쉽지 않다. 왜냐하면 두 방법 모두 공백이나 구두점을 기반으로 텍스트를 분할하기 때문이다.

- 이 방법을 실행하기 위해서는 집약된 지식이 필요하다. 큰 corpus에 의해 학습되거나, 사람이 직접 개입해야 한다.

 

10-3. Topic Models

- 지금까지 살펴본 방법들은 문서에 있는 단어들로부터 직접적으로 모델을 만드는 방법이다.

- 이는 비교적 효율적이지만, 항상 최적의 방법인 것은 아니다.

 

- 단어와 문서가 복잡해지면 문서와 모델 사이에 추가적인 layer (topic layer) 를 만들 수 있다. 

- 각 문장은 단어의 순서를 구성하고, 단어들은 적어도 하나의 토픽에 매핑된다.

- topic layer는 문서의 단어들의 클러스터들이라고 볼 수 있다.

- 장점) 검색엔진에서 입력된 쿼리가 문서의 특정 단어들과 완전히 똑같지 않을 수 있다. 이 때 그 단어를 알맞은 토픽에 매핑하고, 그와 관련된 문서를 보여준다.

 

11. (ex) Mining news stories to predict stock price movement

- 뉴스를 기반으로 주식 시장을 예측하고자 한다.

- 단순하게 하기 위해서 그 날 하루의 변화를 예측할 것이고, 정확한 값이 아닌 변화가 있는지 없는지만 예측할 것이다. 또한, 작은 변화는 예측이 어렵기 때문에 큰 변화가 있을 경우에 변화가 있다고 예측할 것이며, 주가는 그 기업의 이름이 명시되지 않은 뉴스에 의해서도 변화될 수 있지만, 이 예제의 경우 그것까지 고려하기 어렵기 때문에 기업의 이름이 명시된 뉴스에 한해서 마이닝을 할 것이다.

 

- -2.5% ~ 2.5% 의 변동이 있을 경우 '안정된 상태'라고 간주한다.

- -5% 이하, 5% 이상의 경우 변동이 있다고 간주한다. 그 사이는 고려하지 않는다.

 

- 지도학습을 위해 과거 데이터인 1999년 데이터를 사용한다.

- 샘플 뉴스이다.

- 1년 동안 주식회사 BEAM의 주가 그래프이다. 

- 숫자로 표시된 각 지점에 주가가 오르고 내렸는데, 각 지점마다 회사 관련 뉴스가 있었다.

- 각 뉴스의 요약 주석이다.

- 데이터 전처리 : 각 뉴스를 TFIDF 표현으로 줄이기 위해 'bag of words' 단계를 적용한다.

- 각 단어는 소문자화 되었고, stopwords도 제거되었다.

- 'n-grams up to two'를 생성했다.

- 각 뉴스에는 관련 주가 움직임에 기반한 라벨이 붙어있다. (change or no change)

    - 결과적으로 약 16000개의 태그된 뉴스가 나왔다.

 

- 예측 가능성을 보기 위해 ROC curve를 이용했다.

- 이 curves는 10-fold cross validation의 평균을 채택했다.

 

- 결과

    - 뉴스 내용에는 예측가능한 신호가 있다.

    - NB와 LR는 트리보다 더 성능이 좋다.

 

- 아래 그래프는 lift curves이다.

- 뉴스 기사를 점수를 매기고 정렬하기 위해 모델을 사용한다면 우리가 얻을 수 있는 Lift의 양을 정확히 보여준다.

- 결과 

    - x = 0.2인 경우에서 LR과 NB의 lift는 거의 2.0이다.

    - 이는 만약 모든 뉴스 기사의 점수를 매기고 상위 20%만 선택했다면, positive 뉴스는 랜덤으로 예측된 것보다 2배의 정밀도를 보인다.

수업 출처) 숙명여자대학교 소프트웨어학부 박동철 교수님, '데이터사이언스개론' 수업

 

1. how measure a model?

- 데이터 분석을 통해 "얻고싶은 것"이 무엇인지 신중히 고려하는 것이 중요하다.

 

- 모델의 수행 능력을 의미있는 방식으로 측정해야 한다.

    - 각 문제에 대한 올바른 평가 방식은 무엇일까?

    - ex) 이동통신사 고객 이탈 문제 (celluar-churn problem) : 정확한 예측의 비율? 이탈한 고객의 비율?

 

2. Evaluation Classifiers (예측모델 평가)

- 알지 못하는 클래스에 대해 이미 갖고 있는 데이터를 바탕으로 예측하는 모델이다.

- 이진 예측 모델의 클래스: positive / negative

- 이러한 모델이 얼마나 잘 수행되는지 어떻게 평가할 것인가?

 

2-1. Plain Accuracy

- 지금까지 우리는 classifier의 성능을 측정하기 위한 간단한 지표를 가정했다. : accuracy (or error rate)

 

- accuracy = 예측 중 맞은 개수 / 전체 개수 = 1 - error rate

 

- 측정하기 쉽고 이해하기 쉽기 때문에 많이 쓰이는 방법이다.

- 하지만, 너무 간단하고, 몇 개의 문제점들이 있다.

 

2-2. Confusion Matrix

- n개의 클래스를 분류하기 위한 n x n 행렬이다.

    - 행(rows) : 예측값

    - 열(columns) : 실제 값

    - 다른 종류의 오차(error)들을 개별적으로 보여준다. : False positives, False negatives

 

- p, n이 실제 클래스에 속하는 값들이고, y, n이 예측한 값들이다. 

- 따라서 y-p에 속하는 값들은 y로 예측했는데 실제로 positive인 값들이다.

 

2-3. Problems with Unbalanced classes

1) 분류 문제에서 한 클래스가 rare하다고 생각해보자.

- 예를 들어, 사기당한 고객을 찾는 경우나, 결함이 있는 부품을 찾는 경우나, 광고 등에 응하는 고객을 찾는 경우 그런 경우들이 흔치 않기 때문에 클래스 분포가 불균형하거나 비스듬할 것이다.

- 이러한 경우에는 accuracy로 성능을 판단하기 어렵다.

- 예를 들어 클래스 값이 999:1 비율이라면, 항상 999의 개체가 속한 클래스를 선택한다면 정확도는 99.9%가 되기 때문이다. 

- 비율 불균형이 그리 크지 않더라도 정확도는 오해의 소지가 매우 크다. 잘못된 해석이 도출될 수 있다.

 

- ex) cellular-churn problem

- 1000명의 churn 예측 모델을 A와 B가 각각 만들었다고 하자. 

- A모델은 churn 클래스는 100% 예측하고, not churn 클래스는 60% 예측한다.

- B모델은 churn은 60%, not churn은 100% 예측한다.

- 이 경우 두 모델은 매우 다르게 작동하지만 accuracy는 80%로 똑같다.

 

2) 또한, accuracy는 테스트 셋에 따라 달라진다. 

 

3) false positive와 false negative를 구별하지 않는다.

- 둘을 같이 세기 때문에 오차들이 모두 똑같이 중요한 것처럼 여겨진다.

- 하지만, 이는 현실 세계에서는 드문 경우이다.

- 다른 종류의 오차는 다른 무게를 갖는다.

- ex) 의학 진단 경우

    - false positive : 실제로 병에 걸리지 않았지만 걸렸다고 진단한 경우 (기분은 나쁠 수 있지만 실제로 정상이기 때문에 괜찮음)

    - false negative : 실제로 병에 걸렸지만 걸리지 않았다고 진단한 경우 (대처를 못하기 때문에 훨씬 심각한 문제를 초래함)

 

- ex) cellular-churn 

    - false positive : 떠날거라고 생각해서 상품을 제공했지만 떠나지 않음 (어쨌든 고객을 유지했기 때문에 괜찮음)

    - false negative : 떠나지 않을거라고 생각해서 제공하지 않았지만 떠남 (고객을 잃었기 때문에 훨씬 손해임)

 

- 대부분의 경우, 우리는 false positive와 false negative를 다르게 다뤄야 한다.

- classifier에 의한 각 결정들의 cost나 benefit을 추정해야 한다.

- 일단 집계되면, 이러한 것들은 classifier에 대한 기대이익(or 기대비용) 추정치를 산출할 것이다.

 

2-3. Generalizing beyond classification

- 데이터사이언스를 활용할 때 목표가 무엇인지, 주어진 목표에 맞게 데이터마이닝 결과를 적절히 평가하고 있는지 중요하게 생각해야 한다.

 

- ex) Regression

    - 데이터사이언스팀이 영화 추천 모델을 만든다고 생각해보자. 

    - 평점은 1 - 5개의 별을 줄 수 있고, 모델은 사용자가 보지 않은 영화를 얼마나 많이 시작할지 예측한다.

    - 모델을 오차의 평균으로 측정해야 할까, 오차 제곱의 평균으로 측정해야 할까?

    - 더 나은 방법이 있는지 확인해야 한다.

회귀모델을 위한 metrics

 

3. Expected Value (EV) : Key Framework

- EV는 데이터 분석적 사고를 돕는 아주 유용한 개념적 도구이다.

- 데이터 분석 문제에 대한 생각을 정리하는데에 아주 유용한 핵심 프레임워크를 제공한다.

- 다음은 EV의 일반적인 계산식이다.

- o𝑖 : 가능한 결정 결과 (ex: classification -> YES or NO)

- p(o𝑖) : o𝑖의 확률

- v(o𝑖): o𝑖의 가치 (ex: cost, benefit or profit)

 

3-1. Using EV for Classifier Use (ex. 타겟 마케팅)

- 각 소비자의 클래스를 예측하여 더 응답할 가능성이 높은 고객들을 예측하고자 한다.

- 불행히도 타겟 마케팅의 경우 각 소비자가 응답할 확률은 대부분 1-2%로 매우 낮다.

- 그래서 우리가 상식적으로 응답할만한 소비자를 결정하기 위해 임계값을 50%로 정한다면 아마 아무도 겨냥하지 못할 것이다.

- 아마 모든 소비자가 '응답하지 않을 것'이라고 분류될 것이기 때문이다.

- 하지만, EV 프레임워크를 활용하면 문제의 핵심을 찾을 수 있을 것이다.

 

- feature vector가 x인 고객들에게 pᵣ(x)를 부여하는 모델을 갖고 있다고 가정하자.

    - pᵣ(x)는 고객 x가 응답할 확률의 추정치이다.

    - 예를 들면 classification tree, logistic regression model 등이 있다.

 

- 그러면 이제 다음과 같이 타겟 고객 x의 기대 수익 (or 기대 비용)을 계산할 수 있다.

    - vᵣ : 우리가 응답으로부터 얻는 가치 (value from a response -> profit)

    - vₙᵣ : 무응답으로부터 얻는 가치 (value from no response -> cost)

 

- example scenario

    - 상품가격 $200

    - 원가 $100

    - 마케팅비 $1

 

- EV 계산식에서 vᵣ = $99, vₙᵣ = -$1 

- 우리는 EV가 0보다 크기만 해도 이익을 얻는 것이다.

따라서 계산을 해보면 pᵣ(x) · $99 - (1 - pᵣ(x)) · $1 > 0

=> pᵣ(x) > 0.01 

- 고객 x가 응답할 확률이 1%만 돼도 남는 장사라는 것을 알 수 있다.

- 따라서 우리가 예상했던 50% 응답률이 아니라, 1% 보다 큰 확률 추정치를 갖는 고객을 타겟으로 삼아야 한다.

 

3-2. Using EV for Classifier Evaluation

- 지금까지 개개인의 결정에 주목했다면, 지금부터는 '결정의 집합'에 더욱 주목하고자 한다.

- 특히 우리는 모델로부터 만들어진 일련의 결정들을 평가해야 한다.

 

- 이 평가를 할 때 서로 다른 모델들을 비교하는 것이 필요하다.

    - 우리의 데이터 중심 모델은 직접 만든 모델보다 더 성능이 좋은가?

    - 분류 트리 모델이 로지스틱 회귀 모델보다 더 성능이 좋은가?

 

- 총체적으로 우리가 관심을 가지는 것은 각 모델이 얼마나 잘 수행하는지, 즉 그것의 expected value가 무엇인지이다.

- EV의 일반 계산식이다.

- 각 o𝑖는 예측 클래스와 실제 클래스의 가능한 조합 중 하나에 해당한다.

((Y,p),(Y, n), (N, p). (N, n))

 

- 그리고 p(o𝑖)는 이미 confusion matrix에 나와있다.

- 각 o𝑖는 confusion matrix의 각 셀에 해당한다.

 

- ex) 

EV의 v(o𝑖)를 구하는 방법은 아래에서 다룬다.

 

1) step 1 : 각 케이스의 비율을 측정한다. (p(o𝑖))

- 각각의 count를 총 개체 수로 나눈다.

- p(h, a) = count(h, a) / T

    - h : 예측된 클래스 (Y / N)

    - a : 실제 클래스 (p / n)

    - T : 총 개체 수

    - count(h, a) : (h, a)케이스에 해당하는 개체 수

    - p(h, a) : (h, a)케이스의 비율 (or 확률 추정치)

 

2) step 2 : 각 케이스의 value를 명시한다. (v(o𝑖))

 

- 하지만, b(h, a)와 c(h, a)는 데이터로부터 추정할 수 없다.

- 이 둘은 일반적으로 분석으로부터 제공되는 외부 정보에 의해 정해진다.

- 그것들을 지정하는 것은 많은 시간과 노력이 필요하다. (ex: 우리가 고객을 유지하는 것이 정말 어느정도의 가치가 있는가?)

 

- ex) 위의 example scenario 예제

    - v(Y, n) = -1

    - v(N, p) = 0

    - p(Y, p) = 99

    - p(N, n) = 0

 

3) step 3 : total expected value (or profit) 을 계산한다.

- 다음 공식을 통해서 모델의 expected profit을 계산한다.

 

- final value는 각 고객 당 total expected profit을 나타낸다.

- 따라서 우리가 필요한 것은

    - 테스트 데이터셋에 대한 confusion matrix 계산

        - p(Y, p), p(Y, n), p(N, p), p(N, n)

    - cost-benefit matrix 생성

        - v(Y, p), v(Y, n), v(N, p), v(N, n)

 

3-3. Alternative Calculation of EV 

- alternative calculation은 종종 실제로! 사용되는 것이다.

- 왜냐하면 우리가 모델 비교 문제를 어떻게 다뤄야 하는지 정확히 알 수 있기 때문이다.

 

- 조건부확률

    - 사전 class : p(p) and p(n)

        - 각각 positive와 negative 개체일 확률이다.

    - p(x, y) = p(y) · p(x | y)

    - p(x | y) = p(x, y) / p(y)

        - (p(x, y) : x 와 y의 교집합)

 

- 다음과 같이 사전 클래스 p(p)와 p(n)을 찾아낼 수 있다.

 

- ex)

- expected profit = p(p) · [p(Y | p) · b(Y , p) + p(N | p) · b(Y , p)] + p(n) · [p(Y | n) · b(Y, n) + p(N | n) · b(N, n)]

    = 0.55 (0.92 · 99 + 0.08 · 0) + 0.45 (0.14 · -1 + 0.86 · 0) 

    ≈ $50.04

- 이를 통해 각 고객 당 평균적으로 약 $50 의 이익을 얻을 수 있다고 예측할 수 있다.

 

- 이제 경쟁 모델에 대한 정확도를 계산하는 대신에, expected values를 계산할 것이다.

- 나아가, 다양한 분포에 대해 두 모델을 쉽게 비교할 수 있다.

    - 각 분포에 대해 우리는 쉽게 사전확률을 대체할 수 있다.

    - 예를 들어, 불균형한 분포는 p(p) = 0.7, p(n) = 0.3 // 균등한 분포는 p(p) = 0.5, p(n) = 0.5라고 할 수 있다.

 

    - expected profit = p(p) · [p(Y | p) · b(Y , p) + p(N | p) · b(Y , p)] + p(n) · [p(Y | n) · b(Y, n) + p(N | n) · b(N, n)] 에서

       p와 n의 분포가 아무리 바뀌어도 [ ] 속에 있는 비율들은 변하지 않기 때문에 p(p)와 p(n)의 값만 바꾸어서 계산하면 된다.

    - p(p), p(n)을 제외한 다른 비율들이 변하지 않는 이유는 같은 모델이기 때문이다. 

 

4. Overview of the EV Calculation

 

5. Other Evaluation Metrics

- 데이터 사이언스에 사용되는 많은 평가 지표들이 있다.

- 모든 지표들은 근본적으로 confusion matrix의 요약본이다.

- Accuracy = (TP + TN) / (TP + FN + FP + TN) : 전체 개체 중 맞은 예측의 비율

- True positive rate (=Sensitivity) = TP / (TP + FN) = 1 - False negative rate : positive 중 맞춘 예측의 비율

- False negative rate = FN / (TP + FN) : positive 중 틀린 예측의 비율

- True negative rate (=Specificity) = TN / (FP + TN) = 1 - False positive rate : negative 중 맞춘 예측의 비율

- False positive rate = FP / (FP + TN) : negative 중 틀린 예측의 비율

 

- Precision 정밀도 = TP / (TP + FP) : positive 로 예측한 경우에서의 정확도

- Recall 재현율 = TP / (TP + FN) =True positivve rate (Sensitivity)

- F-measure F-값 = 2 x {(Precision x Recall) / (Precision + Recall)} : precision과 recall의 조화평균

- 이 세 가지는 정보 검색과 패턴 인식 (텍스트 분류) 에 널리 사용된다.

 

6. Baseline Performance

- 몇몇 경우, 우리는 모델이 어떤 기준선보다 더 나은 성능을 갖고있다고 증명해야 한다.

- 그렇다면 비교의 대상이 되는 적절한 기준선은 무엇일까?

    - 그것은 실제 용도에 따라 다르다.

    - 하지만 몇몇 일반적인 원칙들이 있다.

 

1) Random model

- 통제하기 쉬울 수 있지만, 그다지 흥미롭거나 유익하진 않을 것이다.

- 매우 어려운 문제나 처음 문제를 탐색할 때 유용할 것이다.

 

2) Simple (but not simplistic) model

- ex) weather forecasting

    - 내일의 날씨는 오늘과 같을 것이다.

    - 내일의 날씨는 과거부터 내일까지의 날씨의 평균일 것이다.

    - 각 모델은 랜덤으로 예측하는 것보다 훨씬 나은 성능을 발휘한다. 어떤 새롭고 더욱 복잡한 모델도 이것들보다는 나은 성능을 가져야 한다.

 

3) The majority classifier 다수결

- 항상 훈련 데이터셋에서 다수의 클래스를 선택하는 방법이다.

 

- 우리는 모집단의 평균 값이라는 직접적으로 유사한 기준선을 가지고 있다. 

- 보통 평균이나 중간값을 사용한다.

 

- ex) 추천 시스템    - 특정 영화가 주어졌을 때 고객이 몇개의 별점을 줄 지 예측해보자.    - random model     - simple models        - model 1 : 고객이 영화들에게 준 별점의 평균 값을 사용할 것이다.        - model 2 : 대중이 그 영화에 준 별점의 평균 값을 사용할 것이다.    - combination of multiple simple models : 이 둘에 기초한 간단한 예측은 둘 중 하나를 따로 사용하는 것보다 훨씬 낫다.

 

- 간단한 모델을 비교하는 것 외에도, 배경 지식을 기반으로 한 간단하고 저렴한 모델을 기본 모델로 사용할 수 있다.

 

- ex) Fraud detection 사기 탐지    - 일반적으로 대부분 사기당한 계정들은 갑자기 사용률이 늘어난다고 알려져 있다.    - 거래량 급상승에 대한 계좌 조회는 많은 사기를 잡기에 충분했다.    - 이 아이디어를 구현하는 것은 간단하며, 유용한 기준선을 제공했다.

수업 출처) 숙명여자대학교 소프트웨어학부 박동철 교수님 '데이터사이언스개론' 수업

 

[Similarity]

1. Similarity (유사도)  -> "거리" 개념

: 많은 데이터 사이언스 방법과 솔루션들의 근본이 된다.

 

- ex) 비슷한 것들 검색, 비슷한 것들 그룹화 (클러스터링), 상품 추천, 비슷한 케이스로부터의 추론

 

- objects 간의 "거리"를 이용해서 유사도 측정

 

- 각각의 object를 feature vector로 표현 -> 두 벡터간의 유클리드 거리 계산

 

* Euclidean Distance 유클리드 거리

- 두 점 사이의 직선 거리를 계산하는 보편적인 방법

- d(A, B) = √ {(a₁-b₁)² + (a₂-b₂)² + ... + (aₙ-bₙ)²}

 

[Neighbors]

2. Nearest-Neighbor Reasoning (NN)

- Nearest-Neighbor : 가장 유사한 개체들

 

- 우수한 기업고객과 가장 유사한 기업 탐색, 온라인에서 기업의 소매 고객과 가장 유사한 고객 탐색 등  

    -> 영업인력 직접적으로 도움, 타겟 마케팅

 

- ex) 위스키 분석 

    - 며칠 전 저녁에 맛 본 "Bunnahabhain" 위스키가 마음에 들었다고 하자. 다른 single malt 위스키들 중 유사한 것을 어떻게 찾을 수 있을까?

    - 각각의 single malt 위스키들을 feature vector로 나타낸다. 그리고 저 위스키와 가장 가까운 이웃을 찾는다.

    - 이처럼 각각의 특징들을 숫자 형태로 나타낸다.

    - 그러면 이처럼 특징들을 바탕으로 다른 위스키들과의 거리를 구할 수 있다. "Glenglassaugh"가 가장 유사하다고 볼 수 있다.

 

- Nearest Neighbors for Predictive Modeling

    - 타겟 변수를 예측하고자 하는 새로운 데이터가 주어진다.

    - 훈련 데이터셋으로부터 가장 유사한 데이터들을 선택한다.

    - 그들의 타겟 값들에 기반하여 새로운 데이터의 타겟 값을 예측한다.

 

 

3. Classification Using NN

- 새로운 데이터의 클래스(label)을 어떻게 예측할 수 있을까? (이웃을 이용하여 새로운 개체 분류)

 

- k개의 가장 가까운 이웃들을 찾는다.

- 그들의 타겟 변수를 참조한다.

    예를 들어, k=3이고, 두 개의 타겟 값은 (+), 한 개의 타겟 값은 (-)이면 다수결에 의해 (+)으로 예측할 수 있다.

 

- ex) 신용카드 마켓팅 문제

    - 아래 자료에 근거하여 David가 신용카드 제안에 응답할 지 예측한다.

    - 거리가 가까운 3명의 이웃을 찾을 수 있다. (Rachael, John, Norah)

    - 그들의 타겟 값을 이용하여 다수결로 예측하면 Yes로 예측할 수 있다.

 

4. Probability Estimation Using NN

- 새로운 데이터가 클래스에 속할 확률을 어떻게 구할 수 있을까?

 

- k개의 가장 가까운 이웃을 찾는다.

- 각 클래스의 빈도 비율을 계산한다.

    예를 들어, k=3일 때 Yes가 두 명, No가 한 명이면 Yes에 속할 확률은 2/3(66.7%), No에 속할 확률은 1/3(33.3%)로 계산할 수 있다.

 

5. Regression Using NN

- 새로운 데이터의 값을 어떻게 측정할 수 있을까? 

 

- k개의 가장 가까운 이웃들을 찾는다.

- 그들의 타겟 값들의 평균(or 중간값)을 계산한다.

    예를 들어, 위의 자료에서 David의 수입을 예측하고자 한다. Rachael, John, Norah의 수입이 각각 50, 35, 40이기 때문에 평균은 42, 중간값은 40으로 예측해 볼 수 있다.

 

6. NN의 두가지 이슈

1) 몇 개의 이웃을 선택해야 하는가?

    - nearest neighbor 알고리즘은 종종 k-nn 으로 불린다.

    - k를 결정하는 데에 관한 간단한 답은 없다. *_* 

 

    - 다수결을 활용하기 위해서 홀수로 정하는 것이 좋다.

    - k가 클수록 추정치가 더욱 평준화된다. outlier의 영향을 덜 받기 때문에 나쁘지 않다.

    - k = n이면 전체 데이터셋이 예측에 활용되기 때문에

        - classification 에서는 항상 가장 많은 값의 클래스에 속할 것이고,

        - regression 에서는 타겟 값이 항상 모든 값들의 평균으로 예측될 것이며,

        - class probability estimation 에서는 항상 base rate 확률로 예측될 것이다.

 

2) 모든 이웃들을 동일하게(평등하게) 간주해야 할까?

- 몇몇의 가까운 이웃들은 다른 가까운 이웃들보다 더욱 가까울 수 있다.

 

- 다수결 예측이나 평균을 구할 때 문제가 된다.

    - 이들은 이웃이 새로운 데이터와 얼마나 가까운지는 고려하지 않는다.

    - 위의 David 예제에서 k=3 일 때에는 세개의 데이터들의 거리가 모두 15 근처로 비슷하다. 하지만 k=4 로 정하면 4번째 가까운 이웃과의 거리는 122가 되기 때문에 다른 3개의 이웃들과는 많이 차이가 난다. 이를 동일하게 취급하는 것은 문제가 있다.

 

- 이를 해결하기 위해서는 유사도에 따른 가중치를 부여하면 된다. 

    - 다수결을 이용할 때 모든 표를 1로 정하지 않고, w₁ x 1 + w₂ x 1 + w₃ x 1 + ... 의 형태로 구한다.

    - wᵢ 는 유사도에 비례하여 할당되며, 보통 Σwᵢ = 1이 되도록 설정한다.

 

    - 평균을 구할 때에도 값을 더할 때 가중치를 곱하여 더한다.

    - (w₁ v₁ + w₂ v₂ + ... wₙ vₙ) / n

    - 마찬가지로 wᵢ 는 유사도에 비례하여 할당되며, 보통 Σwᵢ = 1이 되도록 설정한다.

 

- ex) weighted voting, k = 4

    - 각 가중치를 1/distance² 으로 구한다. 제곱을 하는 이유는 이상치의 가중치를 낮추기 위해서이다.

    - 그리고 비율을 따져서 가중치들의 합이 1이 되도록 한다. 

 

    - 위와 같이 가중치를 이용하여 비율을 구할 수 있고, Yes의 값이 더욱 크기 때문에 Yes라고 예측할 수 있다.

 

7. Geometric Interpretation of NN (NN의 기하학적 해석)

- 명시적으로 경계가 형성되진 않지만, 각 점의 분류를 결정함으로써 암시적은 영역을 계산할 수 있다. 

 

- k=1 로 분류한 그래프이다. k=1인 경우 자기 자신만을 그룹으로 가지며 정확도는 100%이다. 따라서 overfitting이 된다.

 

- 그래프 관찰

    - 경계들은 불규칙적이며, 특정한 기하학적 모양을 찾아볼 수 없다.

    - 훈련 데이터셋의 개체를 둘러싼 경계는 매우 구체적이다.

    - 경계는 이상치에 매우 민감하다. 위의 그래프에서 '+' 사이에 있는 '·' 의 경우가 그렇다.

 

7. Overfitting & Complexity Control of NN 

- 1-NN 

    - 훈련 포인트 자체는 자기 자신으로 예측되며, 자기 자신이 가장 가까운 이웃으로 검색된다.

    - 그러므로 1-NN 은 overfitting이 매우 강하게 발생한다.

 

- k-NN 

    - k는 복잡도 파라미터이다. (complexity parameter)

    - 극도로 복잡하게 만드려면 k = 1로 지정할 수 있다. 

    - 다른 경우에는 k = n이 된다. 그러면 모든 모델에서 그다지 복잡하진 않을 것이다.

 

- k를 선택하는 방법은 모델에 따라 다르다.

 

- 일반적인 방법

    - 다양한 k값에 따른 중첩 교차 검증을 실시한다.

    - 테스트셋에서 가장 좋은 성능을 보여준 k를 선택한다.

    - 전체 훈련 데이터셋에 대한 k-NN 모델을 형성한다.

 

    - 선형 모델이나 트리 구조 모델에서 경계는 부드러운 곡선이나 일정한 조각의 기하학적 영역이 아니다.

 

9. NN 모델의 이슈

1) Intelligibility 명확성 (얼마나 이해하기 쉬운가)

- 단일 인스턴스가 어떻게 결정되는지 설명하는 것은 쉽다.

- 하지만, 데이터로부터 어떤 '지식'이 도출되었는지 설명하는 것은 어렵다.

    - 데이터로부터 어떤 시스템을 배웠는지, 어떤 근거로 결정을 내렸는지

- 따라서, 모델에 정당성을 부여하는 것이 중요할 땐 k-NN은 바람직하지 않다.

 

2) Computational efficiency 계산 효율

- 훈련시키는 것은 매우 빠르게 진행된다.

    - 보통 저장된 개체들만 활용하기 때문에 모델을 만드는데 큰 노력을 들일 필요가 없다.

- 하지만, 예측/분류는 많은 노력과 시간이 필요하다.

    - 데이터베이스에서 새로운 개체와 가장 가까운 이웃들을 찾아야 하기 때문이다.

- 따라서, k-NN 방법은 실시간 적용에 활용하기엔 실용적이지 않을 수 있다.

 

10. 이질적인 속성들을 다루는 기술

1) 범주형 속성을 어떻게 다룰 것인가?

- 범주형 속성을 숫자형으로 바꾼다. 

- ex) Sex: Male / Female -> 0 / 1

- 이진 변수는 바꾸기 쉽지만, 여러개의 값은 어떻게 바꿔야할까?

 

2) 값이 큰 변수들은 거리에 매우 큰 영향을 미친다.

- 따라서 변수들의 범위와 규모(축척)을 측정해야 한다.

- ex) Age : [0, 100] , Income : [0, 100,000] -> Age : [0, 1], Income : [0, 1]

 

11. 거리를 구하는 다른 함수들

11-1. Euclidean distance (L2 norm)

- 가장 많이 사용되는 거리 함수

- 직관적이고 계산하기 쉽다.

 

11-2. Manhattan distance (L1 norm)

- 격자에서 이동한 거리의 총합

- ex) d((3,4), (5,2)) = |3-5| + |4-2| = 4

 

11-3. Jaccard distance 

- 두 집합의 유사도를 측정하는 방법이다.

- 두 집합이 공통적인 요소를 많이 가질수록 거리가 감소한다.

 

11-4. Cosine distance

- 두 벡터 사이 각의 cos값을 측정하는 방법이다.

- 특히 벡터의 크기를 무시하고자 하는 경우 유용하다.

- 텍스트 분류를 통해 두 문서 사이의 유사도를 측정하고자 할 때 종종 사용된다.

 

[Clustering]

12. Clustering (군집화)

- 비슷한 개체들끼리 자연스럽게 맺어지는 그룹을 찾는 방법이다.

- 특정한 타겟 속성이 없다.

- unsupervised segmentation (비지도 분할) 이라고도 부른다.

 

- ex) 더 나은 서비스를 위해 고객 그룹화, 더 보기 좋게 진열/정리 하기 위해 상품 그룹화

 

- 그룹 내의 개체들은 비슷하며, 서로 다른 그룹의 개체들은 그다지 비슷하지 않다.

 

- 지도 모델은 알고있는 데이터의 타겟 변수 값을 기반으로 특정한 타겟 변수 값을 예측하기 위한 패턴을 발견하는 것이다.

- 비지도 모델은 데이터셋에서 타겟 변수에 초점을 맞추지 않고, 다른 종류의 정규성을 찾는 모델이다.

 

- ex) 위스키 분석 (위의 예제)

    - 이번엔 '맛'이 비슷한 위스키끼리 클러스터링을 해보려 한다.

    - 계층적 클러스터링, k-means 클러스터링을 고려해볼 수 있다.

 

 13. Hierarchical Clustering 계층적 클러스터링

- 각 개체의 고유한 클러스터에서 시작한다.

- 반복적으로 가장 가까운 클러스터끼리 합친다. 

    - 유사도나 거리함수를 이용한다.

- 이론적으로는 하나의 클러스터가 될 때까지 반복한다. 하지만 통상적으로 이정도로 많이 반복하지는 않는다.

hierarchical clustering

 

14. 클러스터 사이의 거리 (distance function = linkage function)

1) Min distance

- 각 클러스터에서 가장 가까운 점 사이의 유클리드 거리

 

2) Centroid distance  

- 클러스터의 중간(모든 데이터들의 '평균값') 사이의 유클리드 거리 

 

15. Dendrogram 계통도

- 클러스터의 계층을 명시적으로 보여주는 그림

- 계통도를 수평으로 잘라서 원하는 수의 클러스터를 구할 수 있다. 

- 이를 통해 언제 클러스터링을 멈출 지 알 수 있다.

- 아래로 갈수록 클러스터의 수가 늘어난다.

 

16. 계측적 클러스터링의 장점

- 클러스터의 수를 결정하기 전에 이미 계통도를 통해 그룹화가 된 것을 볼 수 있다.

- 원하는 수의 클러스터에서 계통도를 자를 수 있다. (클러스터링을 멈출 수 있다.)

 

17. ex) Hierarchical Clustering of Scotch Whiskeys

 

- 클러스터는 스코틀랜드의 지역과 완전히 일치하지는 않다.

- 단순히 잘 알려진 것을 구입하는 대신, 각자의 클러스터에서 선택할 수 있다.

- 혹은 다른 '가장 비슷한' 위스키를 추천하는 가이드를 만들 수도 있다.

 

18. k-Means Clustering 

- k개의 그룹을 만드는 클러스터링 알고리즘이다.

- 가장 유명한 centroid-based clustering algorithm 이다.

 

- k는 데이터에서 찾은 클러스터의 개수이다. (사용자에 의해 특정된다.)

- means는 중심을 뜻한다. 클러스터에 속한 점들의 '평균값'을 의미한다.

 

19. k-Means Algorithm

- 초기 k개의 클러스터 중심을 고른다. (보통 랜덤으로 정한다.)

- 각 점을 그로부터 가장 가까운 중심이 해당하는 클러스터에 할당한다.

- 모든 점들이 할당된 이후, k개의 클러스터의 중심을 갱신한다.

- 그리고 다시 모든 점들을 그들의 가장 가까운 클러스터에 재할당한다.

- 더 이상 점들이 클러스터를 이동하지 않고 안정될 때까지 3-4번 반복한다.

 

- 각 중심들이 클러스터의 결과이다.

- 각 점들은 각각의 클러스터에 소속되어 있다.

 

20. ex

- 90개의 점을 k=3으로 하여 클러스터링 하는 과정이다.

- 분홍색, 초록색, 파란색 선은 각각 클러스터의 중심이 이동한 경로이다.

- 경로의 끝에 까만 점이 최종 클러스터의 중심이다.

 

21. Initial k Centroids 고르기

- k-means 알고리즘을 한 번 돌리는 것은 최상의 클러스터링이 아닐 것이다.

    - 초기 중심의 위치가 클러스터링의 결과를 만들게 되기 때문이다.

 

- 해결책은 초기의 랜덤 중심부를 다르게 하여 여러번 k-means 알고리즘을 돌리는 것이다.

- 그렇게 나온 결과들 중 가장 클러스터링이 잘 된 결과를 선택한다.

- 가장 좋은 클러스터링은 클러스터의 평균 직경을 최소화하는 것이다. (각 점에서부터 중심까지의 거리의 평균)

 

22. 올바른 k 값 고르기

- 실생활에서 최적의 k 값을 고르는 방법은 알 수 없다.

- 하나의 간단한 전략은, k-means 를 여러번 돌려서 가장 클러스터링이 잘 된 k를 고르는 방법이다.

- 그것은 클러스터의 평균 직경이 작고, 클러스터의 수가 그리 많지 않은 것이다.

- 다음 그래프에서는 기울기가 완만해지는 지점인 k = 3이 가장 좋은 k이다.

 

23. ex) Clustering business news stories

- 문서들을 단어들의 집합으로 나타낸다.

- Jaccard distance 를 이용하여 두개의 문서 사이의 거리를 구한다. (1-교집합/합집합)

 

 

24. ex) Clustering wiskey

- 각 위스키의 feature vector를 나타낸다 (1, 0, 1, 1, 0, ...)

- 두 위스키 사이의 거리를 유클리드 거리로 구한다.

 

수업 출처) 숙명여자대학교 소프트웨어학부 수업 "데이터사이언스개론", 박동철 교수님

 

1. Intro

 

데이터 사이언스는 다양한 형태로부터 얻은 데이터로 지식이나 인사이트를 도출하는 융합적인 학문이다.

크게 컴퓨터 사이언스, 수학과 통계학, 경영학적 지식이 요구된다. 

 

데이터 엔지니어는 데이터를 다루기 위한 소프트웨어와 시스템을 디자인하고 개발한다. 프로그래밍과 데이터베이스 지식을 필요로 한다. 가장 중요한 것은 데이터를 분석하기 전 전처리하는 과정을 맡는다는 것이다.

 

통계학자는 통계학적 이론과 방법을 실생활에 적용하여 문제를 해결한다. 통계학과 수학적 지식을 필요로 한다.

 

데이터 사이언티스트는 쉽게 말해서 둘 다 하는 사람이다. 분석적이고 기술적인 능력을 통해서 데이터로부터 인사이트를 도출한다. 위에서 말했듯이 프로그래밍, 통계, 경영학적 이해를 바탕으로 한다.

 

데이터 사이언티스트가 주로 필요로 하는 기술은 데이터 분석, 통계 분석 패키지 (R), 파이썬, 데이터 모델링, 머신러닝 등이다. 

주로 IT & 서비스 직군에서 근무하며, 교육이나 금융 분야에서도 데이터 과학자를 필요로 한다.

 

2. Data Science

 

최근 경영 산업은 전반적으로 데이터를 수집하는 능력을 가지고 있다. 

전략, 제조, 마케팅, 공급망 관리 등 모든 경영학적 측면에서 데이터 수집을 필요로 하고 있다. 

 

이제 거대한 양의 데이터가 생산되면서 대부분의 기업들은 경쟁우위로써 데이터 수집에 집중하고 있다.

과거에는 통계학자와 분석가가 데이터셋을 수작업으로 탐색했다면, 이제는 데이터의 양이 커지면서 수작업으로는 분석을 하기 어려워졌다.

컴퓨터와 네트워크가 중요해진 것이다.

이를 통해 데이터 과학의 원리와 기술을 더 넓은 분야에 적용하게 되었다.

 

3. Data Mining

 

데이터 마이닝은 큰 데이터셋에서 패턴을 찾는 과정이다.

경영학적 측면에서는 주로 고객의 행동을 분석하는 데 활용한다. 

고객의 패턴을 분석하여 타겟 마케팅, 온라인 광고, 추천, 신용 분석, 사기 탐색 등에 적용할 수 있다.

 

4. Data Science vs. Data Mining

 

데이터 사이언스는 데이터에서 지식을 도출하도록 하는 일련의 근본적인 원칙이다.

데이터 마이닝보다 좀 더 넓은 의미로 사용된다.

 

데이터 마이닝은 데이터로부터 숨겨진 패턴을 찾는 과정으로, 보통 데이터 수집 및 가공 이후 첫번째로 수행되는 과정이다.

즉, 데이터 마이닝 기술은 데이터 사이언스의 근본 원리를 실체화한 것이라고 볼 수 있다.

 

데이터로부터 지식을 도출할 때에는 자명하지 않으면서 수치적으로 도출되어야 한다. 

예를 들면 허리케인이 지나간 후 생수의 판매율이 20% 증가했다던가, 어떠한 과자가 기존보다 7배 많이 팔렸다던가 하는 형식으로 말이다.

 

또 한 가지 유명한 예시는 미국의 통신사 예시이다.

제한된 예산으로 고객이 다른 통신사로 넘어가는 것을 막을 방법을 찾아야 한다.

미국의 통신사 MegaTelco는 일반적으로 휴대폰 고객의 20%는 계약이 만료되면 다른 통신사로 떠나간다.

이제 휴대폰 시장이 포화되었기 때문에 통신사들은 고객을 유지하려고 노력하고 있다. 

 

회사는 몇몇 고객들의 계약 만료 전에 특별 상품을 제공하려고 한다.

이때 어떻게 최대한 고객이탈을 막을 수 있도록 상품을 제공할 고객을 고를 수 있을까.

이럴때 데이터 사이언스가 활용되는 것이다.

 

5. Data-Driven Decision Making (DDD)

 

데이터기반 의사 결정은 단순한 직관보다는 데이터 분석에 기초한 의사 결정이다. 

예를 들어, 광고를 할 때 한 사람의 경험과 직관에 기반하기보다는 소비자가 다른 광고에 어떻게 반응하는지에 대한 데이터 분석에 기초한다.

 

이 DDD에 데이터 사이언스가 필요하다. 

자동화된 데이터 분석을 통해 현상을 이해하기 위한 방법, 과정, 기술 등을 제공한다.

 

통계적으로 기업이 데이터기반 의사결정을 활용할수록 생산력이 4-6% 증가한다.

 

예를 들어, 마트의 고객은 주로 본인이 가던 곳만 가기 때문에 변화를 찾기 어렵지만, 아기가 태어남을 기점으로 한 번의 변화가 일어날 수 있다. 따라서 많은 상업자들은 아기가 태어난 것을 알고 새로운 고객에게 특별 상품(할인권 등)을 제공한다. 

하지만 미국의 마트 '타겟'은 이것을 넘어서서 아기가 태어나기 전, 임신 전부터 그것을 예측하여 마케팅을 했다. 그 결과 그들의 경쟁자보다 더 높은 이익을 얻을 수 있었다.

 

점점 더 많은 비즈니스 결정이 컴퓨터 시스템에 의해 자동화되고 있다.

미리 설계된 알고리즘을 통해 거의 실시간으로 데이터를 분석하고 의사 결정을 하고 있다.

 

예를 들면, 은행과 통신사에서는 사기 범죄를 제어하고, 소매 업체에서는 상품화 결정 시스템을 자동화한다. 아마존과 넷플릭스는 추천 시스템을, 광고 회사는 실시간 광고 결정 시스템을 자동화한다. 

 

6. Data Engineering vs. Data Science

 

데이터 엔지니어링과 데이터 사이언스는 다르다.

 

데이터 엔지니어링은 데이터를 처리하는 기술로, 시스템, 소프트웨어 디자인, 개발, 유지 및 보수 등을 포함한다. 

오라클과 같은 데이터 베이스 시스템과 하둡, 스파크와 같은 빅데이터 플랫폼 등의 소프트웨어를 개발하고 유지한다.

이들을 통해서 데이터 사이언스를 support한다.

 

데이터 사이언스는 앞에서도 말했지만, 데이터를 모으고 탐색하고 분석한다. 

데이터 엔지니어링 기술을 활용해서 데이터에 접근할 수 있다. 

 

7. Data Science and Big Data

 

빅데이터는 네트워크와 컴퓨팅 기술의 발달로 전통적인 데이터 처리 시스템으로 관리하기에는 너무 큰, 따라서 새로운 처리 기술이 필요한 데이터셋을 말한다.

 

빅데이터의 4가지 특징으로는 크기, 다양성, 속도, 정확성이 있다.

 

빅데이터 기술은 위의 4가지 특징 (4V)을 다룬다.

이를 위해 데이터 사이언스를 활용한다.

예시로는 Hadoop, HBase, MongoDB, Spark 등이 있다.

 

데이터와 데이터로부터 유용한 지식을 도출하는 능력은 핵심 전략 자산으로 간주되어야 한다.

이는 최상의 결과를 내기 위해 적절한 데이터와 데이터 사이언스 기술 두가지 모두에 투자해야한다는 것이다.

 

8. Data-Analytic Thinking

 

실생활 문제에 직면했을 때, 우리는 그 문제를 "분석적으로" 바라보아야 한다. 데이터가 성능을 향상시킬 수 있는지 여부와 그 방법을 정량적으로 평가해야 한다.

 

데이터 분석적 사고는 일련의 근본적인 개념과 원칙에 의해 가능해진다. 시스템적인 틀(framework) 을 구조화해야 한다.

 

데이터 분석적 사고를 통해서 다른 사람들과 능숙하게 교류할 수 있고, 데이터기반 의사 결정을 향상시킬 수 있으며 데이터 중심의 경쟁 위협을 바라보는 사고를 기를 수 있다.

 

최근 산업, 기업에서는 수익을 높이고 비용을 절감하기 위해 데이터 사이언스 팀을 만들고 있고, 주요 전략 요소에 데이터 마이닝을 사용하고 있다.

 

데이터 사이언티스트가 아니더라도 매니저, 마케터, 경영 전략가 등의 직업에서도 데이터 사이언스를 활용한다. 

 

9. Example of Fundamental Concepts

 

1) 자료에서 유용한 지식을 추출하기 위해 체계적인 절차를 밟는다.

 

체계적인 절차란 명확히 정의된 단계를 말한다. (ex) 문제 분석 -> 모델링 -> 면밀한 평가

이러한 과정은 데이터에 대한 우리의 생각을 구조화하기 위한 틀을 제공한다.

 

2) 대량의 데이터에서 관심있는 개체에 대한 정보 속성을 찾는다.

 

즉, 우리에게 필요한 정보를 제공하는 변수를 찾는 것이다.

 

3) overfitting을 피한다.

 

모델링을 하는 이유는 새로운 데이터를 "예측"하기 위함이다. 

overfitting된 모델은 특정 training data에만 적합할 뿐, 새로운 데이터에 대해서는 좋은 성능을 낼 수 없다. 

 

4) 마이닝 결과를 신중하고 객관적으로 평가한다.

 

우리가 도출한 결과가 얼마나 더 나은지 공식화 해야 한다.

단순히 더 낫다가 아니라 얼마나 더 나은지 보여주어야 한다.

 

10. Engineering side of Data Science

 

데이터 사이언티스트는 두가지 종류의 능력을 갖춰야 한다.

 

1) Science

- 이론적인 개념과 원칙을 실제 상황에 적용하는 능력

- ex) logistic regression, support vector machines

 

2) Technology

- 트렌드에 맞는 (상황에 맞는, 인기있는) 프로그래밍 언어와 툴을 사용하는 능력

- ex) Hadoop, MongoDB, Spark, TensorFlow 

 

최근에는 특정 종류의 소프트웨어 툴에 익숙하지 않은 데이터 과학자를 상상하기 힘들다. 

그럼에도 우리는 기술보다 과학에 조금 더 집중해야 한다. 우세한 기술들은 빠르게 바뀌기 때문이다.

+ Recent posts