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

 

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. Evidence-Based Classification 

- 지금까지 분류를 위한 여러 방법을 알아보았다.

- 이제 분류의 다른 방법을 알아볼 것이다.

 

- Evidence 

    - 실제 일어난 것들. 실제 data 값들. (data instance의 feature values)

    - data의 각각의 feature vector를 타겟 값에 대한 증거 (evidence)로 생각할 수 있다.

- 각 feature에 의해 주어진 증거의 강점을 안다면, 그것들을 확률적으로 결합하여 개체를 분류할 수 있다.

- 훈련 데이터로부터 각 증거의 강도를 알 수 있다.

 

2. (ex) online targeting advertising

- 고객들이 과거에 방문한 웹페이지를 기반으로 온라인 타겟 광고를 한다고 생각해보자.

- 웹페이지의 상단, 사이드, 하단에 광고를 띄우려고 한다.

- 화면 광고의 특징

    - 검색 결과를 바탕으로 나타나는 검색 광고와는 다르다. 

    - 사용자들은 어느 키워드도 입력하지 않는다.

    - 그러므로 우리는 사용자의 feature values를 기반으로 사용자가 특정 광고에 관심이 있는지 없는지 유추할 필요가 있다.

 

- 광고 타겟팅 문제를 더욱 정확하게 정의내려보자.

- 네이버나 페이스북과 같은 매우 큰 컨텐츠 제공자와 일하고 있다고 가정해보자.

    - 다양한 컨텐츠, 많은 온라인 고객들을 보유하고 있다.

- 우리 웹사이트를 방문하는 고객들의 몇몇 부분집합을 타겟으로 하고자 한다.

- 이 광고 캠페인은 호텔을 광고하기 위해서 진행된다. 사람들이 호텔 방을 예약하도록 하는 것이 목표이다.

 

- 훈련 데이터를 얻기 위해서 우리는 온라인 고객들을 랜덤으로 선택하여 이 캠페인을 과거에 진행했다.

- 이제 우리가 원하는 것은 '타겟 고객을 대상으로' 광고 캠페인을 진행하는 것이다.

- 그를 통해 광고에 사용하는 비용 대비 많은 예약자를 얻고자 하는 것이다.

 

- 광고 타겟팅 문제를 어떻게 정의할 수 있을까?

    - instance는 무엇이 될까

    - 타겟 변수는 무엇이 될까

    - 특성들은 무엇이 될까

    - 훈련 데이터는 얼마나 모아야 할까

    - 어떤 분류 모델을 이용해야 할까

 

- 다음과 같이 정의하고자 한다.

    - instance : 고객

    - target variable : 그 고객이 이 호텔 광고를 본 뒤 일주일 내에 예약을 한 적이 있거나 할 예정인가?

    - features : key question! 이후에 다룰 예정

    - training data : 타겟 변수에 대한 이진값 (Y / N)

    - classification model : 광고를 본 후 방을 예약할 고객의 확률을 추정하기 위해 Naive Bayes classifier을 사용할 것이다.

 

- key question) 고객을 묘사하기 위해 어떤 특징 (features)을 활용해야 할까?

    - 어떤 attribute가 필요할까

    - 호텔에게 좋은 고객이 될 가능성이 높은 고객과 낮은 고객들을 차별화할 수 있도록 해야 한다.

- 이 예제에서 (호텔)는 고객이 이전에 방문했던, 혹은 좋아요를 눌렀던 컨텐츠들의 집합을 feature로 활용할 것이다.

    - ex) Jessie = {www.sookmyung.ac.kr, "Avengers: Endgame", ...}

    - 브라우저 쿠키나 다른 메커니즘을 통해 기록된 것을 이용할 것이다.

- 각 증거(컨텐츠 조각들)의 강도와 방향을 추정하기 위해 과거 데이터를 활용할 것이다.

    - 그리고 클래스 멤버십의 가능성을 추정하기 위해 그것들을 결합할 것이다.

- 이 예제의 framework와 잘 맞는 여러 다른 문제들이 있다.

    - 각 개체는 증거들의 집합으로 묘사된다.

    - 우리는 개체를 분류하기 위해서 각 증거 조각의 강도를 결합해야 한다.

 

- ex) spam detection

    - 각 메일은 단어들의 집합으로 구성되어 있다.

    - 각 단어들이 이 메일이 스팸인지 아닌지 구분하는 증거가 된다.

    - 메일을 분류하기 위해 증거들을 확률적으로 결합할 것이다.

    - problem definition

        - instance : an email message

        - target classes : spam or not-spam

        - features : the words (and symbols) in the email message

 

3. Combining Evidendce Probabilistically

- 우리는 고객이 광고를 본 후 호텔 룸을 예약할 확률을 알고싶다.

- 사건이 일어날 확률을 p(C)라고 하면, 우리는 조건부 확률인 p(C | E)에 관심을 가져야 한다.

    - E = {e1, e2, ..., ek} : 고객이 방문한 웹사이트들의 집합

    - C : 고객이 룸을 예약하는 사건

- E가 달라질 때마다 p(C | E)도 달라질 것이다. 즉, 서로 다른 웹사이트를 방문한 고객들은 서로 다른 행동을 보일 것이다.

- 훈련 데이터를 통해서 p(C | E)를 유추할 수 있다.

- 하지만, 중요한 문제가 있다. 훈련 데이터에서 정확히 똑같은 집합의 증거를 가진 개체 (k개의 웹사이트를 똑같이 방문한 사람) 는 거의 없을 것이다. 

- 따라서 증거를 하나씩 분리해서 고려한 후에 다시 합쳐야 한다.

- 즉, E = {e1, e2, ..., ek} 일 때, e1, e2, ..., ek를 각자 분리해서 계산한다는 뜻이다.

 

4. Joint Probability

- Notations

    - A, B : 두 사건

    - p(A), p(B) : A와 B가 각각 일어날 확률

    - p(AB) : 두 사건이 동시에 일어날 확률 -> joint probability

 

- 두 사건 A, B가 독립인 경우 p(AB) = p(A) · p(B)

- 독립이 아닌 경우 p(AB) = p(A) · p(B | A)

 

5. Bayes' Rule 

- p(AB) = p(A) · p(B | A) = p(B) · P(A | B)

==> p(B | A) = {p(A | B) · p(B)} / p(A)

 

- A와 B를 각각 E, H라고 하자.

- H : 가능성을 평가하고자 하는 어떠한 가설

- E : 우리가 관찰할 수 있는 증거

 

==> p(H | E) = {p(E | H) · p(H)} / p(E)

- 이것이 베이즈 정리이다.

 

- p(H | E)를 구할 때 p(E | H)를 대신 살펴봄으로써 증거 E가 주어졌을 때 가설 H의 확률을 계산할 수 있다.

- 즉, p(E | H), p(H), p(E)를 통해서 p(H | E)를 구할 수 있다는 장점이 있다.

 

6. Importance of Bayes' Rule

- p(E | H), p(H), p(E)가 p(H | E)보다 결정하기 쉽다.

 

- ex) medical diagnosis

    - 예를 들어, 내가 의사이고 빨간 반점을 가진 환자가 찾아왔다고 가정해보자.

    - 나는 환자가 홍역을 갖고 있다고 추측할 수 있다.

    - H를 '홍역', E를 '붉은 반점'이라고 할 때, p(H | E)를 구해야 한다.

    - 하지만 p(H | E)를 바로 구하는 것은 거의 불가능하다.  

    - 왜냐하면 그 확률을 구하려면 한 사람에게 붉은 반점이 나타날 수 있는 모든 사례들과 그 중 홍역일 비율을 생각해야 하기 때문이다.

 

    - 하지만, 대신 p(E | H), p(H), p(E)를 구해본다면,

    - p(E | H) : 홍역일 때 붉은 반점이 생길 확률

    - p(H) : 어떤 사람이 홍역에 걸릴 확률

    - p(E) : 어떤 사람에게 붉은 반점이 생길 확률

    - 이 확률들은 전문가로부터 이미 알려져 있거나 직접 구할 수 있다.

    - 따라서 베이즈 정리를 통해서 p(H | E)를 더욱 쉽게 구할 수 있다.

 

7. Applying Bayes' Rule to Classification

- 데이터 사이언스의 많은 부분이 베이지안 방법에 기반을 두고 있다.

- 그들의 핵심 논리가 베이지 정리에 근거한 것이다. 

 

- p(C = c | E) = {p(E | C = c) · p(C = c)} / p(E)

    - C = c : 타겟 변수값이 c인 사건 (ex: C = 'YES' or C = 'NO')

    - E : 증거 (the vector of feature values)

    - p(C = c | E) : 증거가 E일 때 C = c일 확률. 우리가 구하고 싶은 값이며 '사후확률 (posterior probability)'라고 부른다.

 

    - p(C = c) : 클래스 c의 사전확률. 모든 예시들 중 class가 c일 확률

    - p(E | C = c) : 클래스 C = c일 때 증거가 E일 확률. feature vector가 E인 클래스 c의 비율

    - p(E) : E일 가능성. 모든 예시들 중 E가 발생할 확률

    - 아래 세 가지 확률은 데이터로부터 쉽게 구할 수 있다.

 

- 사후확률 p(C = c | E)

    - 클래스 확률의 추정치로 바로 사용할 수 있다.

    - 개체들의 순위를 매기기 위한 점수로 사용할 수 있다.

    - 또는, 분류할 때 서로 다른 c값에 대해 p(C = c | E)의 최댓값을 선택할 수 있다.

    - ex) p(C = 'YES' | E) = 0.7, p(C = 'NO' | E) = 0.3 -> determine C = 'YES'

 

- ex) spam detection

    - w1, ..., wn : 메일 속 단어들

    - p(Spam | w1, ..., wn) = {p(w1, ..., wn | Spam) · p(Spam)} / p(w1, ..., wn)

 

8. Major Difficulty in Computing p(C = c | E)

- E = {e1, e2, ..., ek}

- E는 충분히 크고, 구체적인 조건들의 집합이다.

- p(E | C = c) = p(e1, e2, ..., ek | C = c)

 

- 하지만 p(e1, e2, ..., ek | C = c)를 구하는 것은 어렵다. 

- 훈련 데이터에서 증거가 주어진 E  = {e1, e2, ..., ek}와 완전히 일치하는 특정 개체를 절대 볼 수 없을지도 모른다. 

- 만약 존재한다고 하더라도 확신을 가지고 확률을 추정할만큼 충분히 있진 않을 것이다.

 

9. Conditional Independence

- p(AB | C) = p(A | C) · p(B | AC) = p(B | C) · p(A | BC)

- C가 일어날 때 A와 B는 독립적이지 않다.

 

- 하지만, C가 일어날 때 조건적으로 A와 B가 독립이라면

- p(AB | C) = p(A | C) · p(B | C) = p(B | C) · p(A | C)

- 이 경우가 더 확률을 계산하기 쉽다.

 

- 따라서 데이터사이언스의  베이지안 방법에서는 '조건부 독립'을 강하게 가정함으로써 이 문제를 다룬다.

 

- p(E | c) = p(e1 ^ e2 ^ ... ^ ek | C) = p(e1 | C) · p(e2 | C) · ... · p(ek | C)

- 클래스 c가 주어졌을 때, eᵢ를 다른 eⱼ와 독립적이라고 가정한다.

- 간단히 표현하기 위해서 C = c 를 c라고 표현하겠다.

- 각 p(eᵢ | c) 는 데이터로부터 바로 계산될 수 있다.

    - 모두 맞는 feature vector를 찾을 필요가 없다.

    - 단순히 클래스 c의 개체에서 각 feature eᵢ를 찾은 비율을 계산하면 된다.

    - 그러면 증거를 한 번에 비교하는 것보다 상대적으로 eᵢ가 많이 발생할 수 있다. 

 

10. Naive Bayes Classifier

- 이 전의 식과 베이즈 정리를 결합하면 다음과 같이 '나이브 베이즈 방정식 (Naive Bayes equation)'이 나온다. 

- 베이즈 방정식을 활용하여 표본이 각 클래스에 속할 확률을 추정하는 방식이다.

- 더 높은 확률을 갖는 클래스를 반환한다.

 

- 예를 들어, Y에 속할 확률이 30%라고 치면, N에 속할 확률은 70%가 아니라 따로 또 계산을 해줘야 한다.

만약 N에 속할 확률이 45%라면 Y에 속할 확률보다 크기 때문에 N으로 분류한다.

 

- 우리는 분류에만 관심이 있기 때문에 정확한 값보다는 어떤 클래스에 속할 확률이 더 큰지가 더 중요하다.

- 따라서 실제로는 분모의 p(E)는 모든 클래스에 대해 똑같기 때문에 생략하고, 분자만 계산한다.

 

11. Advantage of Naive Bayes

- 매우 간단한 classifier이다. 

    - 그럼에도 불구하고 모든 특징 증거들을 고려한다.

- 저장공간과 실행시간에 대해 매우 효율적이다. 

    - 오직 p(c)와 p(eᵢ | c)만 저장하고, 몇몇의 간단한 곱셈만 수행하기 때문이다.

- 단순함과 강한 독립성 가정에도 불구하고 많은 실생활 문제들에서 놀라울 정도로 잘 수행된다.

    - 독립이 아닌 사건들에도 적용할 수 있다. 독립성 가정의 위반은 분류 성능을 낮추지 않는 경향이 있다.

    - 두 증거가 사실 독립적이지 않은데 독립적으로 다뤘다면 증거들의 double counting 문제가 생긴다.

    - (ex) p(AB) = p(A) · p(B | A) vs. p(AB) = p(A) · p(B)

    - 이는 classifier 측면에서는 별로 영향을 미치지 않는다. 단순히 확률이 과대평가될 가능성이 있다.

- 따라서 독립적이지 않은 evidence들이 많기 때문에 확률 추정치 자체가 정확하다고 볼 수는 없다.

    - 그렇기 때문에 실무자들은 확률의 실제값과는 관련이 없는, 단지 순위를 매기기 위해 Naive Bayes를 사용한다.

- 자연스럽게 점증적으로 학습한다. (incremental learner)

    - 한 번에 한 가지 훈련 사례를 모델에 업데이트 할 수 있다.

    - 새로운 훈련 데이터가 들어올 때 과거의 모든 훈련 데이터들을 재처리 할 필요가 없다.

    - 특히 새로운 라벨링 데이터가 들어올 때마다 모델을 업데이트하고자 하는 애플리케이션에 유리하다.

    - ex) creating a personalized spam email classifier

    - 사용자가 웹브라우저에서 '스팸'버튼을 클릭할 때 새로운 라벨링된 데이터가 들어온다. 그를 통해서 스팸 탐지 모델을 업데이트할 수 있다.

 

12. (ex) Weather Forecast

- 위와 같이 날씨에 따른 골프 가능 여부 데이터셋이 있다.

- 그럼 아래 사례의 클래스는 어떻게 예측할 수 있을까?

- 우선 모든 필요한 확률들을 계산해야 한다.

p(C | E) ≈ p(e1 | c) · p(e2 | c) · ... · p(ek | c)

 

- p(c)

- p(eᵢ | c) for "outlook"

- p(eᵢ | c) for "temp"

- p(eᵢ | c) for "humidity"

- p(eᵢ | c) for "windy"

 

- compute p(c | E) for each class c

    - p(Yes | rainy, cool, high, true) ≈ p(rainy | yes) · p(cool | yes) · p(high | yes) · p(true | yes) · p(yes) = 0.00529

    - p(No | rainy, cool, high, true) ≈ p(rainy | no) · p(cool | no) · p(high | no) · p(true | no) · p(no) = 0.02057

- 정확한 확률값의 크기에 상관없이 Yes보다 No인 확률이 더 크기 때문에 play golf = No 로 결정된다.

 

13. (ex) Patient Diagnosis

- 위의 예제와 같이 데이터셋을 통해서 flu 클래스를 예측해보고자 한다.

 

- p(c)

- p(eᵢ | c) for "chills"

- p(eᵢ | c) for "runny nose"

- p(eᵢ | c) for "headache"

- p(eᵢ | c) for "fever"

 

- compute p(c | E) for each class

    - p(flu = Y | chills = Y, runny nose = N, headache = Mild, feaver = N) = 0.006

    - p(flu = N | chills = Y, runny nose = N, headache = Mild, feaver = N) = 0.0185

- flu = N인 확률이 더 크기 때문에 Flu = N으로 결정된다.

 

14. (ex) Spam Detection

 

- p(c)

- p(eᵢ | c) for the word "password"

- p(eᵢ | c) for the word "review"

- p(eᵢ | c) for the word "send"

- p(eᵢ | c) for the word "us"

- p(eᵢ | c) for the word "your"

- p(eᵢ | c) for the word "account"

 

- compute p(c | E) for each class c

    - p(spam | ¬password, review, ¬send, ¬us, your, account) = 0.000976

    - p(ham | ¬password, review, ¬send, ¬us, your, account) = 0

- spam 일 확률이 더 크기 때문에 spam으로 결정된다.

 

15. A Model of Evidence "Lift"

- 전체 모집단에 대해 선택된 하위 모집단에서 positive class가 얼마나 더 만연한지 측정하는 classifier 평가지표이다.

- 즉, Lift = positive / sampling (targeting)

 

- evidence lifts의 하나로 Naive Bayes를 생각해볼 수 있다. 

- 변환한 식에서 p(eᵢ | c) / p(eᵢ) 가 클래스 c의 evidence lift이다.

- evidence lift는 eᵢ가 클래스 c를 얼마나 더 lift 시키는지, 클래스 c와 얼마나 연관성이 있는지, eᵢ가 이 개체를 클래스 c로 분류하는데 얼마나 도움이 되는지를 나타내는 지표이다.

 

- 사전확률 p(c)에서부터 시작하여 예시 E를 살펴볼 것이다.

- 각각의 증거 eᵢ는 클래스에 대한 확률을 높이거나 낮춘다. 

- 만약 liftc(eᵢ) > 1 이라면 확률은 증가할 것이고, liftc(eᵢ) < 1이라면 확률은 감소할 것이다.

 

16. (ex) Evidence Lifts from facebook 'likes'

- 최근 연구자들은 페이스북의 '좋아요'가 보통 직접적으로 드러나지 않는 사람들의 특징들을 꽤 예측한다는 논문을 발표했다.

- 지식 수준이 어떤지, 정신적인 상태는 어떤지, 이미 밝힌 동성애자인지, 술을 마시거나 담배를 피는지, 종교나 정치적 견해는 어떤지 등 말이다.

- 어떤 사람이 좋아요를 누른 기록과 각각 "High IQ"에 대한 evidence lifts이다. 

- "Sheldon Cooper"에 좋아요를 눌렀다는건 일반적인 사람들보다 '높은 IQ'를 갖고 있을 확률이 30% 더 높다는 의미이다.

- 마찬가지로 "Lord of the rings"에 좋아요를 눌렀다는건 일반적인 사람들보다 '높은 IQ'를 가지고 있을 확률이 69% 높다는 의미이다.

 

- 일반적으로 페이스북 인구에서 타겟 변수를 'IQ > 130'으로 잡으면, 약 14%의 사람들이 Yes 클래스에 해당한다는 가설이 있다.

- 그러면 아무것도 좋아요를 누르지 않은 경우엔 'IQ > 130'일 확률 추정치는 기본 비율인 14%이다.

- 만약 "Sheldon Cooper"에 좋아요를 눌렀다면, 확률 추정치는 0.14 x 1.3 = 18% 로 30% 증가된 값이 된다.

- 만약 (Sheldon Cooper, Star Trek, Lord of the Rings) 세 개에 좋아요를 눌렀다면, 확률 추정치는 0.14 x 1.3 x 1.39 x 1.69 = 43%가 된다. 

- 이처럼 evidence lift를 통해서 행동 특성을 예측할 수 있다.

 

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

 

1. Visualizing Model Performance

- 모델 성능을 시각화하기 위한 몇몇 유용한 기술들에 대해 다룬다.

- 모델 성능을 직관적으로 보여준다.

 

2. Ranking instead of Classifying

- 이전 장에서는 각 경우에 대한 결정을 expected value에 기반하여 어떻게 계산할 지 알아보았다.

- 이번에는 다른 전략으로 ranking에 대해 알아볼 것이다.

- 각 경우를 분리하여 결정하기보다는, 예측된 점수를 기반으로 사례들의 순위를 매긴 다음 상위 n개의 경우를 택하는 것이다.

 

- 많은 경우, 그저 가장 성능이 좋은 n개의 케이스를 원할 때가 있다. 예를 들어 캠페인을 위한 마케팅 예산이 이미 정해져 있는 경우가 그렇다.

- 이러한 경우 각 경우의 정확한 확률 추정치는 그닥 중요하지 않다.

- 정확한 확률값을 구하기보다 상대적인 순위를 통해서 가장 효율적인 몇가지 방법만 택하는 것이다.

 

3. Ranking Instances

- 개체에 점수를 매기는 classifier가 있다고 하자. 이때 점수는 확률값 (or distance)이다.

- ex) class probability(decision tree, k-NN classifier), distance from the separating boundary(support vector machine, logistic regression)

 

- 각 개체들을 점수에 따라 정렬한 후 특정한 값 T를 임계값으로 설정한다.

- 임계값을 높게 잡으면 정말 몇 개의 경우만 선택될 것이고, 임계값을 낮게 잡으면 가능한 많은 경우를 선택할 수 있을 것이다.

 

4. Thresholding Instances

- 임계값이 변할 때마다 true positive와 false positive의 수가 달라진다. 

- 따라서, 각 임계값마다 특정한 confusion matrix가 형성된다.

- 임계값을 기준으로 높은 순위는 'YES', 낮은 순위는 'NO'라고 예측하기 때문이다.

임계값에 따른 confusion matrix

 

- 임계값이 낮아질수록 개체들은 N에서 Y로 옮겨진다. (예측값이)

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

- 기술적으로, 각각의 임계값은 서로 다른 classifier를 생성한다.

- 그리고 각각의 confusion matrix를 통해 나타낸다.

 

- 그러면 다른 classifier에 의해 만들어진 순위는 서로 다른데 어떻게 비교해야 할까? 어떤 순위가 더 낫다고 볼 수 있을까?

- 또한, 적절한 임계값을 어떻게 찾을까? 

    - 이건 expected profit이 최대가 되는 임계값으로 결정할 수 있다.

 

5. Profit Curve

- 임계값에 따른 expected profit을 보여주는 곡선이다.

- 임계값이 낮아질수록 negative가 아니라 positive로 예측되는 개체들이 추가된다.

- 즉, 임계값이 낮아질수록 positive predict가 높아진다.

- 타겟 마케팅을 위한 3개의 classifier를 나타낸 profit curve이다.

- 각 곡선에 대해 고객들은 몇몇 모델에 기반하여 마케팅에 대해 응답할 확률에 따라 높은 확률부터 낮은 확률까지 정렬된다.

- 보통 고객의 비율에 대해 이야기할 것이다.

- x축은 임계값이고, y축은 그에 다른 이익이다.

 

- 곡선은 profit이 음수로 갈 수 있음을 보여준다. 항상 그런 것은 아니고 cost-benefit matrix에 따라 달라진다.

- 이윤이 작거나 응답자의 수가 작을 때 발생한다.

- 응답하지 않을 사람들에게 너무 많이 제공함으로써 비용을 너무 많이 지불하게 된다.

 

- 모든 곡선들은 같은 지점에서 시작해서 같은 지점에서 끝난다.

    - 0%는 지출도 없고 이익도 없는 상태이다.

    - 100%는 모든 사람들이 타겟이 된 상태이다. 따라서 모든 classifier가 같은 성능을 갖는다.

 

- 하지만, 그 사이에서는 classifier가 고객을 정렬한 방법에 따라 서로 다른 값을 갖는다.

    - 직선인 경우는 random model을 적용한 경우로 최악의 성능을 갖는다.

    - 위의 그래프에 따라 만약 마케팅에 예산이 정해져있어 8%의 고객에게만 제공할 수 있을 땐 x = 8 이내에서 가장 높은 값을 갖는 classifier 1을 선택하면 되고, 예산 상관없이 최고의 이익을 내고 싶다면 약 x = 50에서 가장 높은 값을 갖는 classifier 2를 선택하면 된다.

 

6. Two Limitation of Profit Curves

- 이전 장에서 본 조건부 확률을 이용하는 expected profit이다. 

- 이 값을 이용하기 위해서는 사전확률인 p(p)와 p(n)을 알고 있어야 하고, 그 값은 안정적으로 고정되어 있어야 한다.

- 또한, cost와 benefit (b(h, a), c(h, a))도 알고 있어야 하고 안정적으로 고정되어 있어야 한다.

- 하지만, 많은 실제 경우에서는 이 값들은 정확하지 않고 불안정하다.

    - ex) 사기 탐색의 경우 사기 금액이 정해져있지 않고 항상 변한다.

    - churn 관리의 경우 고객에게 제공하는 상품의 금액이 항상 다를 것이다.

 

7. Receiver Operating Characteristic (ROC) Graph

- 전체 공간에 성능 가능성을 보여줌으로써 불확실성을 수용할 수 있는 방법이다.

- calssifier에 의해 만들어지는 benefits (true positives) 과 costs (false positives) 사이의 상대적인 성능값을 보여준다.

- 각 점 (fpr, tpr) 은 classifier 한 개를 나타낸다.

- fpr = false positive rate (= FP / (FP + TN)) = 1 - specificity : negative 중에 틀린 것

- tpr = true positive rate (= TP / (TP + FN)) = sensitivity : positive 중에 맞은 것

 

- 점 A는 classifier A의 cost = 0.1, benefit = 0.4일 때의 성능을 나타낸다.

 

- (0, 0) : classifier가 무조건 N으로 예측한 것이다. false positive errors = true positives = 0

- (1, 1) : classifier가 무조건 Y로 예측한 것이다. 

- (0, 1) : 완벽한 classifier이다. 모든 negative와 positive를 올바르게 분류한다.

- (x, x) : positive class를 x · 100%로 랜덤으로 예측하는 classifier이다. 

    - (0.5, 0.5) : 랜덤으로 절반을 positive로 예측한다. positive를 절반 맞출 것으로 기대한다.

    - (0.9, 0.9) : 랜덤으로 90%를 positive로 예측한다. negative는 90% 틀리고, positive는 90% 맞을 것으로 기대한다.

 

- ROC space에서 c₁ 과 c₂를 비교해보자

    - c₁ 이 c₂에 비해 북서쪽 (왼쪽 위) 에 있으면 c₁이 더 낫다. true positive rate과 true negative rate이 모두 더 높거나 나쁘지 않다.

    - c₁ 이 c₂에 비해 남서쪽 (왼쪽 아래) 에 있으면 c₁이 더 보수적이다. false positive rate은 낮지만, true positive rate도 더 낮다. 틀리는 경우를 낮추는 model이다.

    - c₁ 이 c₂에 비해 북동쪽 (오른쪽 위) 에 있으면 c₁이 더 급진적이다. true positive rate도 높고 false positive rate도 높다. Y로 예측하는 개체를 늘림으로써 positive를 맞추는 경우에 더욱 집중하는 model이다.

 

- ranking model

    - 임계값에 따라 점수가 임계값보다 높으면 Y, 아니면 N으로 예측한다.

    - 각 임계값에 따라 ROC space에 다른 점들을 생성한다. 각 임계값에 따라 다른 confusion matrix가 생성되기 때문이다.

 

- 임계값이 낮아질수록 positive로 예측하는 개체들이 늘어나는데, positive instance와 negative instace를 모두 지나치게 된다.

- 따라서 true positive rate와 false positive rate이 모두 증가하기 때문에 곡선이 우상향한다.

 

8. Advantage of ROC Curves

- ROC Curve는 classifier가 사용될 조건으로부터 classifier 성능을 분리한다.

- 즉, 사전확률(p(p), p(n)) 과 costs and benefits(v(h, a))가 필요하지 않다는 것이다.

- 이러한 조건들이 바뀌어도 classifier의 위치와 상대적인 성능이 변하지 않는다.

- 사전 클래스가 달라지더라도 각 점의 위치는 달라질 수 있지만, curve의 모양 (다른 classifier 대비 상대적인 성능) 은 바뀌지 않는다.

 

9. The Area Under the ROC Curve (AUC)

- classifier의 ROC curve 아래의 면적이 간단히 1²의 일부로 표현된다. -> 0과 1의 범위 내로 표현된다.

- ROC Curve는 더 많은 정보를 제공하지만, AUC는 성능을 요약하여 하나의 숫자로 표현해야 할 때 유용하다.

- 왼쪽 그래프에서 숫자가 AUC이며 classifier의 성능을 나타낸다. 0.95는 0.85보다 10% 더 좋은 성능을 갖는다는 것이다.

- 오른쪽 그래프들에서 첫번째 그래프가 가장 성능이 좋고, 네번째 그래프가 가장 성능이 안좋은 classifier이다.

 

10. Cumulative Response Curve

- ROC Curve는 분류 모델 성능을 시각화하기 위한 일반적인 tool이다.

- 하지만, 개발자가 아닌 이해관계자들이 보기엔 너무 직관적이지 않다.

 

- Cumulative response curves는 더욱 직관적인 시각화이다.

- 임계값에 따른 타겟 개체의 true positive 비율을 함수로 표현한다.

- 따라서 YES 클래스를 얼마나 잘 분류하는지 시각화하는 그래프라고 볼 수 있다.

- false positive보다 true positive가 더욱 가치있기 때문이다.

- x축이 타겟 instance 비율, y축이 true positive rate이다.

 

- 임계값이 낮아질수록 더욱 많은 개체들을 타겟으로 한다.

- Random model : x%를 타겟으로 할 때 x%의 positives를 얻는다.

- A better model : x%를 타겟으로 할 때 x%보다 큰 positives를 얻는다.

- 따라서 그래프에서 대각선보다 위에 있는 그래프들은 더 나은 성능을 제공한다.

 

11. The Lift of a Classifier

- Lift : classifier가 random model (50%) 보다 얼마나 더 성능이 좋은지 나타내는 지표이다.

- 즉, 리스트에서 positive instance를 negative instace 위로 올리는 정도를 의미한다.

 

- Lift = (the percentage of positivie instances targeted) / (the percentage of instances targeted)

= 전체 타겟 개체들 중 positive 개체의 비율

 

(ex) 

- 100 customers (50 positives, 50 negatives)

- 리스트를 스캔해 내려가다가 중간에서 (50% targeted) 멈추면 얼마나 많은 positives가 있을 것으로 예상하는가?

- case 1 : sorted randomly

    - 절반의 positives가 있을 것이다. -> lift = 0.5 / 0.5 = 1

- case 2 : ordered by an effective classifier

    - lift > 1

- case 3 : perfect classifier

    - lift = 1 / 0.5 = 2

 

12. Lift Curve

- 타겟 개체의 비율에 대한 lift 값을 그래프로 표현한다.

- 기본적으로 주어진 x 점에서의 cumulative response curve 값을 해당 점에서의 대각선 값으로 나눈 값이다.

- 따라서, cumulative response curve의 대각선은 lift curve에서 y = 1의 수평선이 된다.

- ex) 'our model gives a two times lift'

    - 임계값을 선택할 때, 모델 타겟팅은 랜덤일 때보다 2배 더 낫다. (잘 맞춘다)

    - cumulative response curve에서 true positive rate은 random classifier의 true positive rate의 두 배일 것이다.

 

- 즉, lift는 타겟팅의 효과를 측정한다.

 

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

 

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

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

 

1. Overfitting

- 데이터 사이언스에서 가장 중요한 근본 개념 중 하나이다.

- 모델을 만들 때 너무 flexible하게 만들면 모델이 특정한 데이터셋(훈련 데이터셋)에 너무 적합해진다.

 

- 모델이 훈련 데이터셋을 넘어선 일반적인 데이터셋에는 잘 적용되지 않는 경우이다.

- 모델은 새로운 데이터 개체도 잘 예측해야 한다.

 

2. 근본적인 부작용

- 더 복잡한 모델을 사용하면 정확도는 높아지겠지만, outfitting의 가능성 또한 높아진다.

- 한번에 overfitting을 제거할 방법은 없다.

- 가장 좋은 전략은 overfitting을 인지하고, 원칙적인 방법으로 복잡도를 조절하는 것이다.

 

- fitting graph : 복잡도 함수로써 모델의 정확도를 보여주는 그래프이다.

 

- 보통 모델을 만들 때 훈련 데이터에서 일정 부분을 holdout data로 빼놓고 훈련 데이터로 모델을 만든 다음 정답을 알고 있는 테스트 데이터로 정확도를 평가한다.

- 조금 더 general한 정확도를 측정할 수 있다.

- 위의 그림에서 오른쪽이 fitting graph이다.

 

3. overfitting 인지

- 모델이 충분히 복잡하지 않을 때 : 훈련데이터와 테스트 데이터 모두에서 정확도가 낮다. → underfitting

- 모델이 너무 복잡해질 때 : 훈련데이터에서는 정확도가 높아진다. 하지만, 테스트 데이터에서는 정확도가 낮아진다. → overfitting

 

- (ex) : customer churn table model.

    - 극단적인 예시는 fitting graph가 독특할 것이다.

    - 행의 개수가 많을수록 복잡도가 커질 수 있다.

 

    - learning에 'churn' data만 넣고, 여기에 없는 데이터는 'stay' data로 인식하도록 했다.

 

    - 모델이 증가하면서 훈련 데이터의 에러는 감소하지만, 테스트 데이터의 에러는 어느 특정 값에서 시작해서 변하지 않는다.

    - 이유 : 학습을 할 때 churn data만 put했다. 그러면 테스트 데이터는 그 안에 포함되어 있지 않기 때문에 모두 'stay' data로 인식한다. 하지만 그 중에 churn data가 있을 것이다. 따라서 (holdout 'churn' data) / (holdout data) 의 값이 holdout data의 base error rate (=b) 가 된다.

 

 

4. overfitting in tree induction

- 극단적인 classification tree : 모든 leaf node들이 pure할 때까지 데이터를 나눈 tree

    - 정확도는 100% 일 것이다.

    - overfitting 되었을 확률도 ^^..

 

- tree 모델의 복잡도는 노드의 개수에 비례한다.

    - tree 노드 개수에 제한이 없다면 어느 정확도에도 맞출 수 있을 것이다.

    - 따라서, tree가 자람에 따라 overfit 되는 경향이 있다.

 

- fitting graph for tree induction

    - ex) tree가 모집단의 특징이 아니라 훈련 데이터의 디테일한 부분을 고려하기 시작했을 때..

    - holdout data의 정확도가 떨어지는 순간 (= overfit이 시작되는 순간) 을 "sweet spot" 이라고 한다.

    - 그러므로 위의 경우 노드가 100개 정도 되는 순간부터 overfitting이 된다고 볼 수 있다.

    - 따라서 우리는 tree의 크기를 이 사이즈 (100) 로 제한해야 한다.

 

    - 하지만, 이론적으로 sweet spot을 정확하게 찾을 방법은 없다.

    - 따라서 이 부분은 데이터 과학자의 경험에 의해 결정해야 한다.

 

5. overfitting in mathematical functions

- 수학적 함수를 복잡하게 만드는 한 가지 방법은 변수나 항의 수를 늘리는 것이다.

 

 

- 더 많은 속성들을 사용하면서 모델은 훈련 데이터에 더 적합해질 수 있다. ( + overfitting 위험성)

- 즉, 변수나 항을 늘릴수록 훈련 데이터셋에서의 정확도는 증가한다.

 

- overfitting을 피하기 위해서는 오직 정보를 얻을 수 있는 유용한 속성들만 사용하고, 

- holdout technique을 활용해서 overfitting을 확인할 수 있다.

 

6. Holdout Evaluation

- 모델을 만들 때 holdout data를 빼놓고 형성한다.

- holdout data를 가지고 모델의 정확도를 평가한다.

- 목표는 모델의 일반화 성능을 추정하는것이다. 

- 답을 알고 있고, 훈련할 때 사용하지 않았기 때문에 정확도를 평가할 수 있다.

 

- 문제 

    - 이 테스트로부터 얻은 성능의 추정값은 단지 한번의 테스트를 통한 추정값이다.

    - 한 번의 추정만으로 모델 정확도에 확신을 얻는 방법은 운이 좋게 테스트 데이터를 한번에 잘 고르는 방법이 있겠다.

 

7. Cross-Validation (CV)

- holdout evaluation 의 더욱 정교화된 방법이다.

- holdout 평가를 여러번 진행한 뒤 그것의 통계값을 이용하는 방법이다.

 

- 추정된 성능에 대해 몇가지 통계값을 얻을 수 있다.

    - mean 평균 : 평균적으로 어느 정도의 성능이 예상되는가

    - variance 분산 : 데이터셋마다 성능이 얼마나 다른가

 

- k-fold cross-validation : 데이터셋을 k번으로 나누어서 나눈만큼 평가를 반복하는 방법이다.

 

- (ex) predict which customers are going to churn

    1) information gain

 

    2) classification tree

 

    3) 언제 tree building을 멈추는가?

        - 그렇게 복잡해지기 전에 멈춰야 한다.

        - 이 문제는 model generality와 overfittingr과 밀접한 관련이 있다.

 

    4) tree를 원래 데이터셋에 적용했을 때 정확도가 73%이다.

        - 이 값을 믿을 수 있는가?  다른 데이터셋에 적용해도 73%가 나올까?

        - 정확도가 73%인 것이 이 모델이 좋다는 의미인가? 좋지 않다는 의미인가?

 

8. Learning Curves

- 일반적으로, 모델의 일반화 성능은 어떠한 지점까지는 훈련 데이터 수를 증가시킴으로써 가능하다.

- learning curve : tree와 logistic regression에서 훈련 데이터 크기에 따른 일반화 성능을 나타낸 그래프이다.

 

 

- observations

    - decision tree가 logistic regression에 비해 더 유연하다.

    - 크기가 작은 데이터셋에 대해서는 logistic regression이 더 낫다. 

    - 크기가 큰 데이터셋에 대해서는 tree가 더 nonlienar 관계를 잘 표현한다.

 

- learning curve vs. fitting graphs

    - learning curve : 훈련 데이터의 일반화 성능을 보여준다. (x축 : training data 양)

    - fitting graph : 훈련 데이터 성능과 holdout 데이터 성능 2가지 모두 보여준다.  

 

9. Overfitting Avoidance and Complexity Control

- Regularization : 가장 대표적인 overfitting avoid 방법, 모델의 복잡도를 줄이는 방법이다.

 

9-1. for tree induction

- main problem

    - leaf node들이 순수해질 때까지 tree를 키우는 것

    - 이로 인해 크고 복잡한 데이터가 데이터에 맞지 않을 수 있다.

 

- 3 regularization

    - 더 복잡해지기 전에 멈추기

    - 충분히 tree 크기가 커질 때가지 키운 다음에, '가지치기' 해나가면서 다시 사이즈 줄이기

    - 서로 다른 크기를 가진 tree를 여러 개 만든 다음, 최선의 모델 선택하기

 

1) limit tree size

- 분할된 leaf node에 들어갈 개체의 최소 개수를 정해둔다. 

- 즉, 최소 개수 이하의 수가 되면 더이상 분할하지 않는다.

 

 

- 이 경우, 최소 개수를 20개로 정했기 때문에 각 그룹의 개체 수가 20개 이하가 되었을 때 growing을 멈췄다.

 

2) Prune An Overly Large Tree

- node와 branch들을 잘라내고, 그자리를 leaf node로 바꾸는 방법이다.

- 대체했을 때 정확도가 낮아지지 않을 때까지 진행한다.

- 성능이 떨어지지 않을 때까지 하위 그룹에서 반복되며 진행될 수 있다.

 

 

3) Build Many Trees And Pick The Best

- tree를 많이 만들어놓고, 그 중 가장 정확도가 높은 tree를 택하는 방법이다. 

 

9-2. for linear models

- 항이 많을수록 복잡하다.

 

1) Sequential forward selection (SFS)

- 순차적으로 항을 한 개씩 골라서 성능을 테스트한다. 그 중 가장 정확도가 높은 xᵢ를 선택하여 f(x) 에 넣는다.

- 그 다음, 처음으로 추가한 항을 포함하여 또 한 개의 항을 골라서 성능을 테스트한다. 그 중에서 가장 성능이 좋은 xᵢ를 선택하여 f(x) 에 넣는다.

- 이 과정을 계속 반복한다.

- 항을 추가하는 것이 테스트 데이터에서의 정확도를 더이상 높이지 않을 때까지 반복한다.

 

2) Sequential backward elimination (SBE)

- 위의 과정을 반대로 진행하는 것이다.

- 전체 f(x)에서 항을 한 개씩 선택하여 제거한 후 성능을 테스트한다.

- 제거했을 때 가장 성능이 좋은 xᵢ를 선택하여 제거한 후, 그 다음 또 항을 한 개 골라서 제거하고 성능을 테스트한다.

- 이 과정을 계속 반복한다.

- 마찬가지로 항을 제거하는 것이 더이상 정확도를 높이지 않을 때까지 반복한다.

 

10. Nested Cross-Validation

- 중첩된 CV

- 모델의 복잡도를 가장 크게 좌우하는 파라미터가 무엇인지 모를 때 사용한다.

- (ex) decision tree → number of nodes, linear model → number of features ···

 

- 즉, 복잡도 파라미터의 최적값을 찾기 위해 사용한다.

- (ex) What is the best number of nodes in a decision tree?

 

- 중첩된 loop 를 이용한다. (outer & inner loop)

    - outer loop :  만들어진 모델의 일반적인 성능 측정한다. (k-fold CV)

    - inner loop : best complexity parameter 찾아낸다.

 

    - inner loop → outer loop

 

- 단점 : inner loop 개수가 많을수록 실행 시간이 매우 길어진다.

 

 

 

 

 

 

 

 

 

 

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

 

1. Predictive Modeling

- 다른 속성들을 통해서 타겟 속성의 값의 모형을 찾는 것이다.

 

-  Nonparametric modeling

    - 모델 모양이 정해져 있지 않은 모델이다

    - 모델의 구조는 데이터로부터 결정된다.

    - (ex) classificaiton 'tree' - 가지의 수, 모양 등은 데이터를 통해서 알 수 있다.

 

- Parametric modeling 

    - 모델이 정해져 있다.

    - 모델의 구조는 데이터 분석가에 의해 지정된다.

    - (ex) linear classify - y = ax + b의 모양으로, 모양은 정해져 있으며 데이터로부터 파라미터인 a, b만 찾아낸다.

 

2. Nonparametric modeling 

- 분석가가 모델의 구조를 지정하지 않는다. 데이터로부터 학습된다.

 

3. Parametric modeling (= parameter learning)

- 특정 파라미터 값이 지정되지 않은채로 모델의 구조가 정의된다.

- (ex) Y = aX + b -> a, b : parameter

 

- 주어진 훈련 데이터셋을 통해서 최상의 파라미터 값을 찾는다.

- (ex) linear regression

 

- 모델의 형식은 배경 지식이나 다른 데이터 마이닝 기술들을 통해서 결정한다.

 

- 목적은 모델 파라미터의 '최적'값을 찾아내는 것이다.

- 이때 어떤 모델이 가장 데이터를 잘 표현하는지 결정하는 것이 중요하다.

 

3-1. Classification Trees

- space는 결정 범위에 의해 여러 개의 클래스로 나눠진다.

 

- 새로운 개체가 들어왔을 때, 개체의 타겟 값은 분류된 타겟 값을 통해 결정된다.

 

- 다른 방식으로도 공간을 분류할 수 있다.

 

3-2. Linear classifier

- linear combination을 이용해서 속성을 분류한 것이다.

- linear combination은 속성 값에 가중치를 부여하여 더한 것이다. 

- (ex) 1 x Age = Balance x -1.5 + 60

- 선을 기준으로 윗 부분 :  Age > balance x -1.5 + 60, 아랫 부분 : Age < Balance x -1.5 + 60

 

3-3. classification tree vs. linear classifier

- 목표는 같다. : 타겟 속성에 대해 값을 기준으로 데이터를 분류하기 위한 모델이다.

 

- 차이점 : 구조

 

- classificaiton tree

    - 각 속성 별로 class를 분류해서 값을 집어넣는 방식이다.

 

- linear classifier

    - 여러 속성들을 가중치를 파라미터로 하여 더해서 관계성을 찾는 방식이다.

 

4. Linear Classifier

- general linear classifier 

    - f(x) = w₀ + w₁x₁ + ··· + wₙxₙ

 

- shpe of decision boundary

    - n = 2 → line

    - n = 3 → plane

    - n = 4 → hyperplane

 

- goal

    - 훈련 데이터를 통해서 가장 적절한 가중치 값을 찾는 것이다. 

    - 훈련 데이터를 잘 분류하고, 새로운 데이터도 가능한 적절하게 예측할 수 있도록

 

    - 가중치 w𝑖 가 클수록 x𝑖가 타겟을 분류하는 데 중요한 역할을 한다는 것이다. 

    - w𝑖가 0에 가까우면 x𝑖는 보통 무시되어도 괜찮다.

 

- 가중치 선택하는 일반적인 방법

    - 목표에 맞는 objective function을 정의한다.

    - objective function을 극대화 (최소화) 하는 최적의 가중치 값을 찾는다.

 

- 다음 모델들은 같은 linear 구조이지만, 다른 objective function을 사용한다. 

    - support vector machine (SVM) : classification

    - linear regression : regression

    - logistic regression : classification

 

    - 동일한 linear classifier f(x) = w₀ + w₁x₁ + ··· + wₙxₙ 를 사용한다.

 

    - (ex) svm vs. logistic regression : 둘 다 분류 모델이지만, 다른 경계를 형성한다. 

 

4-1. Support Vector Machine

- linear calssifier 모델이다. 

- 속성들의 선형 조합에 기반하여 개체를 분류한다.

 

- "margin을 최대화하는 선이 최적의 linear classifier이다"

    - margin : 각 그룹의 값들 중 가장 바깥 쪽에 있는 값을 그은 두 dash line 사이의 거리

    - margin이 가장 큰 두 선의 중간에 있는 선이 svm의 linear classifier이다.

    - 즉, 최적의 선은 두 클래스에서 모두 멀리 떨어진 선이다.

 

- misclassificaiton

    - 물론 아래와 같이 한 줄로 데이터들을 완벽하게 분리할 수 없는 경우도 많다. 

 

- original function : margine size 최대로 하는 선

- new objective function : 잘못 분류된 훈련 데이터 개체에 패널티를 부여하는 것이다.

 

 

- 패널티는 margin 경계로부터의 거리에 비례해서 부여된다.

- 이러한 방식을 'hinge loss function' 이라고 한다.

 

4-2. Linear Regression

- 데이터를 가장 잘 표현하는 linear 함수를 찾는 모델이다.

- 타겟 속성의 값을 "예측" 할 때 사용된다.

 

 

- 다른 objective function을 사용하는 많은 선형 회귀 방법들이 있다.

 

- 일반적인 절차

    - 훈련 데이터에서 각 점들에 대한 오차를 계산한다. 

    - 오차 : 선과 점 사이의 거리

    - 오차의 절댓값들을 더한다.

    - 오차의 절대합을 최소화하는 가중치를 구한다.

 

4-2-1. 최소제곱법

- 가장 일반적인 표준 선형 회귀 절차이다.

- objective function : 오차의 제곱합을 최소로 하는 가중치 w₀, w₁, ··· , wₙ 찾기

- 오차의 절댓값을 더하면 선을 다르게 해도 차이가 그리 크지 않고, 수학적 계산도 어렵기 때문에 제곱합을 사용한다.

 

- 장점

    - 더 높은 검정력으로 지수가 높아질수록 이상치의 오차가 극대화될 것이다.

    - 이차 함수는 수학적으로 다루기 쉽다. 미분해서 도함수가 0이 되는 값이 최소값이 된다.

- 단점

    - 이상치가 선을 결정하는 데 너무 큰 영향을 미친다.

 

4-3. Logistic Regression 

- linear regression 과 비슷하다. 

    - 둘 다 지도학습 알고리즘이다.

    - 둘 다 라벨링된 데이터셋을 예측하기 위한 알고리즘이다. (class 값이 정해진)

    - 하지만, linear regression은 회귀 모델이고, logistic regression은 이름은 regression이지만 분류 모델이다.

 

- 타겟이 될 "이항" 결과 (범주형 종속 변수) 와 서로 종속되어 있는 많은 속성들이 있을 때 사용한다.

- Y = aX + bZ 일 때, Y 가 타겟이고, X와 Z가 독립인 다른 속성들이다. a와 b가 파라미터이다. 

- Y는 X와 Z의 영향을 받는다.

 

- 실생활의 이항 결과들은 이러한 것들이 있다.

- game (win / loss), sales( buying / not buying), loan( default / non default ), marketing( response / no response )

 

- 새로운 개체가 관심있는 클래스에 속할 확률을 추정할 때 linear model f(x)을 이용한다.

- (ex) f(x) = 0.85 → x가 그 특정 클래스에 속할 확률이 85%이다.

 

- 하지만! 이 f(x) 함수를 logistic regression에 바로 적용할 수 없다.

- f(x) 는 범위가 (-∞, ∞) 지만, logistic regression 의 범위는 확률로 [-1, 1] 이어야 하기 때문이다.

 

그래서 오른쪽과 같이 S-Curve 형태가 나오도록 함수를 조절하여 사용한다.

 

4-3-1. logistic function p(x)

 

standard logistic function

- 다음 방정식을 따르는 s-shaped curve (sigmoid curve) 형태의 p(x) 함수를 적용한다.

- 확률값을 추정하여 return 한다.

- linear function f(x) 를 변형한 형태로, linear 함수를 사용하는 것은 맞다.

 

- ln(p/(1-p)) = w₀ + w₁x₁ + ··· + wₙxₙ = f(x)

 

- Odds 승산

    - 사건이 발생하지 않을 확률에 대한 사건이 발생할 확률이다.

    - p / (1-p)

    - (ex) probability = 0.5 → odds = 1, p = 0.9 → odds = 9

 

- log odds → ln(p / (1-p)) = f(x)

 

4-3-2. objective function

- likelihood model 최대화

probability

- Σ g(x, w) 값을 최대화 하는 w𝑖 를 구하는 것이다.

 

- g(x, w)는 x의 특징에 기반한 x의 실제 클래스를 통해 모델의 추정 확률을 반환한다.

- 이제 라벨링된 데이터셋의 모든 개체들에 대한 g(x, w) 값을 모두 더한다.

- 그리고 다른 파라미터를 가진 모델에 대해서 또 진행한다.

- 그러면 logistic regression에 대한 다양한 가중치 집합이 생성된다.

- 가장 합이 큰 모델이 데이터에 대해 가장 높은 확률을 갖는 모델이다. (가장 가능성이 큰 모델)

- 가능성이 가장 큰 모델은 평균적으로 가능한 예제들에 대해 가장 높은 확률을 반환하고, 적절하지 않은 모델에 대해서 가장 낮은 확률을 반환한다.

 

- 적용

    - 위와 같이 p(x) 확률값에 따라 개체들을 분류할 수 있다.

 

4-4. Linear regression vs. Logistic regression

Linear regression Logistic regression
연속적이고 종속적인 변수를 예측할 때 사용한다.
Regression 회귀 문제
카테고리형 (범주형) 종속 변수를 예측할 때 사용한다.
Classification 분류 문제
가격, 나이와 같은 연속적인 값을 예측한다. yes or no, 0 or 1과 같은 범주형 값을 예측한다.
output을 쉽게 예측할 수 있는 가장 fit 한 line을 찾는다. 예제들을 쉽게 분류할 수 있는 S-Cruve line을 찾는다.
정확도 측정에 "최소제곱법"이 사용된다. 정확도 측정에 "최대 가능도 방법"을 사용한다.
독립적인 변수와 종속적인 변수 사이에 반드시 선형 관계가 존재해야 한다. 꼭 선형 관계가 존재할 필요는 없다.

 

4-5. Classification trees vs. Linear classifiers

Classification tree Linear classifier
축에 수직인 결정 경계 (decision boundaries)를 사용한다. 결정 경계의 방향이 정해져있지 않다.
여러 영역으로 분류한다. 공간을 2개로 나눈다.

 

4-6. 어떤 모델이 더 좋은가..?

-  어떤 결정 경계가 가장 좋은 선택일지 아마 미리 볼 수 없을 것이다.

- 하지만 이해력의 차이가 있다.

    - logistic regression은 통계학을 잘 모르는 사람드은 이해하기 쉽지 않다.

    - decision tree는 대부분의 사람들이 이해하기 쉽다.

 

- 많은 경우 이해관계자들에게 모델을 만족시켜야 한다.

- 그렇기 때문에 성능과 이해도를 잘 조절하여 모델을 선택해야 한다.

 

5. Linear Regression 예제

- Wisconsin Breast Cancer Dataset : 유방암 진단 데이터

- 각 예는 세포 핵 이미지를 나타낸다. 

- 376개의 양성 데이터와 212개의 음성 데이터가 있다.

 

- attributes : 세포핵의 특성을 묘사한 디지털화된 이미지를 계산한다. 

    - radius, texture, perimeter, area 등의 각각의 속성에 대해서 평균, 표준편차, 최대값을 계산한다.

 

- linear equation

 

- test 결과 정확도가 98.8%이다. (6 mistakes / 588 images)

- 같은 데이터셋으로 classification tree 모델을 만들면 정확도가 99.1% 이다.

 

 

- Q1 : 정확도가 98.8%이면 좋은 결과인가 아닌가?

    - 그정도 값은 데이터 마이닝에서 많이 볼 수 있는 정확도 수치이다.

    - 그러나 실생활 문제에 대한 분류 모델 평가는 보다 복잡하고 어렵다.

 

- Q2 : classificaiton tree가 정확도가 더 높으니까 좋은 모델인가?

    - 차이는 오직 하나의 추가적인 오차로부터 발생했다.

    - 게다가, 평가된 정확도는 훈련 데이터셋으로 활용한 동일한 데이터로 평가한 것이기 때문에 높은 것이 당연하다.

 

6. Linear Classifier for Ranking Instances

- 많은 경우 단순히 개체가 클래스에 속하는지 아닌지만 예측하고 싶지 않을 수 있다.

- 한 클래스나 다른 클래스에 속할 가능성으로 순위를 매길 수있다.

- (ex) will the customer respond to this ad? → Which customers are mostly likely to respond to this ad?

 

- 이 질문을 linear classifier 을 활용해서 해결할 수 있다.

 

- 결정 경계로부터 가까우면 해당 클래스에 명확히 속하지 않는 개체이다. ( |f(x)| ≈ 0 )

- 결정 경계로부터 멀리 떨어질수록 해당 클래스에 속할 확률이 크다. ( |f(x)| >> 0 )

- 따라서 결정 경계로부터 멀리 떨어진 개체일수록 rank를 높게 매긴다. 

 

 

7. Nonlinear model

- 머신러닝의 경우 대부분의 모델이 nonlinear한 형태로 나타난다.

- f(x) = w₀ + w₁x₁ + ··· + wᵢxᵢ² + wⱼxⱼ³ + wₖxᵢxⱼ + ···

 

- nonlinear term : 곱, 나눗셈, 지수, 로그 등이 포함되어 선형으로 나타나지 않는다.

- support vector machine과 logistic regression 의 nonlinear model이다.

 

- Artificial neural network 인공 신경망

    - 복잡한 nonlinear function을 학습시킬 때 사용한다.

    - 많은 nonlinear function을 연결한다.

 

 

- nonlinear model로 flexibility를 너무 높이면, 그 모델은 훈련 데이터에 너무 적합하게 형성된다. → overfitting

- overfitting → 훈련 데이터에만 fit하고, 정작 예측해야 할 새로운 데이터에 적용하면 성능이 급격히 낮아진다.

- 따라서 우리는 훈련 데이터를 넘어서 새로운 데이터에도 잘 작동할 모델을 형성해야 한다.

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

 

1. Predictive Modeling 예측 모델

 

- 일반적인 절차

    - training data를 가장 잘 표현하는 모델 설정

    - 새로운 데이터에 모델 적용하여 결과 예측

 

- 아마 처음으로 classification을 생각할 것이다.

    - 새로운 데이터가 어느 클래스에 속할지 training dataset을 기반으로 확인한다.

    - (ex) 이 고객이 회사를 금방 떠날 것 같은가? → YES / NO

 

2. Model

 

- 현실을 목적에 맞는 것만 남도록 간략하게 표현한 것이다. 

- 중요한 것과 중요하지 않은 것을 기반으로 간략화한다.

- 부적절한 정보는 날리고 관련이 있는 데이터들만 남긴다.

- (ex) 지도, 청사진 

 

2-1. Predictive Model

- 타겟에 대해 모르는 값을 추정하는 공식이다. 

- 예측의 정확도로 성능을 평가한다.

- 수학적인 표현(ex: linear regression)과 논리적인 표현(ex: decision tree)이 있다.

 

2-2. Descriptive Model

- 데이터에 내재되어 있는 인사이트를 얻는 것이 주 목적인 모델이다. 

- 즉, 예측"값"을 얻는 것이 목적이 아니다.

- 예시로는 clustering, profiling 등이 있다.

- 도출된 지능과 이해가능성으로 성능을 평가한다.

 

- 많은 모델들이 두가지 목적을 모두 제공할 수 있다. 

 

3. Model Induction 모델 유도

 

- 데이터로부터 모델 유도

    - 특정한 사례를 일반적인 규칙으로 일반화하는 것이다.

 

- 모델은 통계학적 의미에서 일반적인 규칙이다.

    - 항상 100% 맞진 않는다.

 

- Induction algorithm 유도 알고리즘 (leaner) : 데이터로부터 모델을 형성하기 위한 절차이다. 

- Training data 훈련 데이터 (labeled data) : 모델을 유도하기 위해 유도 알고리즘에 대입하는 데이터이다. 이미 라벨 값을 알고있다.

 

4. Supervised Segmentation 지도 분할

4-1. Basic idea

- 타겟에 대해 서로 다른 값들을 갖는 하위 그룹으로 분할하는 방법이다.

- 즉, 그룹끼리는 타겟에 대해 같은 (비슷한) value를 가진다.

- 분할에 사용된 변수 (값, attribute) 를 예측의 타겟 속성으로 사용할 수 있다.

 

 - 데이터를 가장 잘 분류할 수 있는 속성을 선택하는 것이 중요하다.

 

4-2. Selecting Information Attributes

- 효과적으로 데이터를 분류하기 위해서는 유용한 속성을 사용해야 한다.

- 유용한 속성은 해당 변수에 대해 중요한 값을 갖는 속성이다.

- 즉, 타겟의 값을 예측하는 것을 도와줄 수 있는 속성이다.

 

- (Ex)

- 사람들을 'yes' 와 'no'로 분류하고자 한다.

- 속성

    - 머리 : 정사각형 / 원

    - 몸 : 직사각형 / 타원

    - 몸 색 : 검정 / 하양

 

- target variable : 체납 여부 - yes / no

 

- 어떤 속성이 사람들을 yes와 no로 가장 잘 분류할 수 있을까?

- 우리는 그룹을 가능한 pure하게 분류하고자 한다.

 

- pure 

    - 그룹이 타겟 값에 대해 동일한 값을 갖는 상태를 말한다.  

    - 하나의 멤버라도 다른 값을 가지면 그 그룹은 impure하다고 말한다.

 

- 문제

    - 속성이 완벽하게 그룹으로 분리되는 경우는 거의 없다. 

 

        - 머리 모양과 몸 색을 각각 그룹을 분리한 결과이다. 어떤 속성이 더 그룹을 잘 분리한 것일까?

 

    - 모든 속성이 위의 예제처럼 2가지로 나누어지는것은 아니다. 더 많은 경우에는 어떻게 분리할 수 있을까?

    - (연속적인) 숫자 값을 가지는 속성은 어떻게 분류하는 것이 좋을까? (ex: 나이)

 

- 분류 기준

    - 속성이 데이터를 얼마나 잘 분류하는지를 평가하는 공식을 만들 수 있다.

    - 그 공식은 '순도'에 기반할 수 있다. 

 

- Information Gain

    - 가장 대표적인 분류 기준이다.

    - 순도를 측정하는 "엔트로피"에 기반한다.

 

- Entropy 무질서도

    - 무질서도를 측정하는 기준이다. 타겟의 관점에서 분류가 얼마나 impure하게 되었는지 측정한다.

    - H(S) = Σ p𝑖 log₂ (1/p𝑖)

        - p𝑖 : S에서 𝑖를 가질 확률 (Σ p𝑖 = 1)

        

    - (Ex) 

    - attribute S = {yes, yes, yes, no, no} → p₁(yes) = 3/5, p₂(yes) = 2.5

    - H(S) = 3/5 log₂(5/3) + 2/5 log₂(5/2) = 0.97 → very impure

 

plot of entropy H(S)

 

4-3. Information Gain

- 엔트로피는 각각의 분할이 얼마나 impure한지만 측정한다.

- 즉, 한 개의 속성만 고려한다.

 

- information gain은 속성이 만드는 전체 분할에 대한 엔트로피 증감 정도를 측정한다.

    - 엔트로피가 감소하면 유용한 정보이고, 엔트로피가 증가하면 정보를 얻을 수 없는 속성으로 분할한 것이다.

 

- IG = H(parent) - [ Σ p(c𝑖) ·H(c𝑖) ]

    - 각 child (분류된 그룹)에 대한 엔트로피는 각각의 그룹에 속하는 인스턴스의 비율에 가중된다.

- Information Gain 값이 클수록 유용한 속성이다. 

 

4-4. Numerical Variables

- 회귀 문제와 같이 속성 값이 "숫자형"인 경우는 카테코리값을 가진 속성보다 분류하기 어렵다.

 

1) Discretize 이산화

    - 한 개 이상의 분할점을 선택해서 숫자 값을 이산화하는 방법이다.

    - 그 후 카테고리형 속성과 같이 다룰 수 있다. 

 

2) 여러 개의 후보 분할점을 고르는 방법

    - 각각의 후보 분할점에 대해 IG 를 계산한 후 가장 IG 값이 큰 경우를 선택하는 방법이다. 

 

 

5. Classificaiton Tree Segmentation

-  여러 개의 속성을 사용해서 데이터를 분류하는 방법이다. → 트리 모양

 

- structure

    - interior node : 분류의 기준이 되는 속성 이름이다.

    - leaf node : 분류된 class(결과?)를 말한다.

    - branch : 속성의 구분되는 값을 말한다. (분류 기준, 범위)

    - path from the root to a leaf : 분류의 특징을 설명하는 길이다.

 

 

- procedure

    - 분류 값을 모르는 예시들이 있다.

    - root node에서부터 예시들의 특정 속성 값들로 branches를 선택하면서 interior nodes를 타고 내려온다.

    - terminal node (leaf node)에 도달하면 그것은 분류가 된 것이다.

 

- (ex)

    - balance = 115K, employed = no, age = 40 인 사람을 분류해보자.

    - root node인 employed 부터 no, ≥50K, <45 path를 따라서 내려온다.

    - 결과적으로 class = Not Write-off 로 특정된 leaf node에 도착한다.

    - 따라서 우리는 그 사람이 체납하지 않을 것이라고 예측할 수 있다.

 

- divide-and-conquer approach 

    - 전체 데이터셋을 나누기 가장 좋은 속성을 찾는다.

    - 각 서브 그룹에 대해서 재귀적으로 가장 좋은 속성들을 찾아나간다. 

 

- (ex) 위의 사람모형 예시

    - 일련의 과정에서 IG 값의 크기에 따라 큰 순서대로 몸 모양 - 몸 색 - 머리 모양 순으로 그룹을 분류한다.

 

그 결과 위와 같은 classification tree를 얻을 수 있다.

 

- 요약해보면, 데이터를 재귀적으로 나누는 과정이다.

- 각 과정에서 모든 속성을 테스트하고 그룹을 가장 순수하게 나누는 (IG값이 큰) 속성을 선택한다.

 

- 멈추는 단계는 모든 leaf node가 pure할 때, 변수를 끝까지 나눴을 때 등이 있지만, 이렇게까지 나누면 모델이 overfitting될 것이다. 

 

6. Visualizing Segmentation

- classification tree 결과를 공간 상에 시각화할 때 사용한다.

- 하지만, 시각화는 두세개의 특징으로만 가능하다.

- 그럼에도 고차원 공간까지 적용할 수 있는 인사이트를 얻을 수 있다.

 

7. 규칙

- classification tree는 구현하기 쉽기 때문에 자주 사용되며, 수학적 공식이 그렇게 복잡하지 않다. 

- 논리적 문장으로 classification tree를 구현할 수 있다.

    - 각각의 path가 statement가 된다.

    - 각 sement는 path와 "AND"로 구성된다.

 

 

8. 확률 추정

- 단순한 분류보다 확률 추정을 할 때

- (ex) he will not write-off → the probability of him writing-off = 40%

- ranking과 같이 더욱 정교한 의사결정을 해야할 때 사용할 수 있다.

 

- Frequency-based propbability estimation

    - 확률을 추정하기 위해 각 leaf 에서의 개체 수를 사용한다.

    - leaf에서 그에 해당하는 개체 (positive) 가 n개, 해당하지 않는 개체 (negative) 가 m개라면, 새로운 개체가 그에 해당할 확률은 n/(n+m)이 된다.

 

8-1. overfitting problem

- 개체 수가 아주 적은 분류 그룹의 확률은 굉장히 높아질 수 있다. 

    - (ex) 개체 수가 1개인 그룹은 무조건 100%가 나올텐데, 그것이 좋은 분류라고 할 수 있을까? - 다른 그룹의 개체 수가 나머지 99개인 경우?

 

8-2. Laplace correction 라플라스 보정

- 단순히 빈도를 계산하는 대신, 빈도수 기반 추정치의 smoothed된 버전을 사용하는 것이다.

 

- (ex) p₁ : 2 postitive, no negative, p₂ : 20 positive, no negative

    - frequency-base : p₁ = p₂ = 1

    - laplace correction : p = 0.75, p₂ ≈ 0.95

 

- 개체 수가 증가할수록 라플라스 방정식은 빈도수 기반 측정값에 수렴한다.

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

 

1. Data Science Process

 

데이터 사이언스의 기본 원리는 데이터 마이닝이다. 데이터 마이닝은 상당히 잘 이해된 단계를 가진 process이다.

 

데이터 사이언티스트는 실생활의 문제를 하위 작업으로 분리한다.

하위 작업들의 솔루션들이 모여서 전체적인 문제를 해결할 수 있다.

 

문제의 기저가 되는 공통적인 데이터 마이닝 작업이 존재한다. 

(ex) classification, regression, clustering, association rule discovery

 

좋은 데이터 과학자가 되기 위해서는 다양한 공통적인 데이터 마이닝 작업을 해결하는 방법을 알아야 하고, 문제를 이렇게 공통적인 작업들로 나눌 수 있어야 한다.

 

각각의 하위 작업들은 그에 맞는 데이터 마이닝 기법으로 병렬처리 된다. 작업을 나눌 때 마이닝 방법을 생각해놓는 것이 좋다.

 

2. Common Data Mining Tasks

 

- classification : 분류 

- regression (a.k.a. value estimation) : 회귀 (value 추정)

- similarity matching : 유사도 매칭

- clustering : 군집화

- co-occurrence grouping (a.k.a. association rule discovery) : 동시발생 (관계 규칙 발견)

- profiling (a.k.a. behavior description) : 프로파일링 (행동 묘사)

- link prediction : 연관성 예측 (ex. recommendation)

- data reduction : 데이터 사이즈 줄이기 (불필요한 데이터 제거, 형태 변환 등)

- causal modeling : 인과관계 모델링

 

2-1. Classification 분류

 

모집단의 각 개체가 어떠한 클래스의 집합에 속할지 예측하는 방법이다. 

 

 

주로 상호배타적인 클래스로 분류할 때 사용한다.

분류에서 끝나는 것이 아니고, 분류를 학습하여 "예측" 하는 데 활용한다. → 지도학습에 활용

 

각각의 개체를 instance라고 하고, 속성을 attribute라고 한다.

예측의 대상이 되는 속성(클래스)를 classificaiton target 이라고 한다.

그리고 그 타겟들은 이미 상호배타적으로 설정되어 있다.

 

예를 들면, 연봉, 성별, 나이 등의 데이터로 이 사람이 어떠한 물건을 살지 안살지 예측하는 것이다.

이때 타겟은 "물건을 산다" 라는 속성이고, 클래스는 Yes 또는 No 이다.

 

일반적인 과정 : 훈련 데이터셋 → 데이터의 클래스를 묘사하는 모델 설정 (모델링) → 새로운 인스턴스가 주어질 때, 해당 모델을 적용하여 추측된 클래스 생성

 

비슷한 작업으로 scoring이나 class probability estimation 이 있다.

이는 각 개체가 각 클래스에 속할 확률을 도출하는 것이다.

예를 들어, 위의 예시에서 (Lee, 42000, male, 44) → (YES : 80%, NO : 20%) 이렇게 각 개체에 대해 클래스를 가질 확률을 계산한다.

 

2-2. Regression 회귀

 

각 개체가 특정 변수에 대해 어떠한 숫자 값을 가질 것을 예측하는 모델이다.

value estimation 이라고도 불린다.

 

 

예를 들어, 특정한 키의 사람은 어떤 값의 몸무게를 가질지 예측하는 것이다.

 

일반적인 과정 : 훈련 데이터셋이 주어질 때, 각 개인에 대해 특정 변수 값을 묘사하는 모델 설정 → 새로운 개체에 모델을 적용하여 측정된 값 생성

 

 

classification과의 차이점

- classification은 인스턴스의 "클래스"를 예측하는 것이다.  (ex. YES / NO)

- regression은 인스턴스와 관련된 "숫자 값"을 예측하는 것이다.   (ex. 178)

 

2-3. Similarity Matching 유사도 매칭

 

알고있는 데이터를 기반으로 유사한 데이터를 찾는 모델이다.

 

 

일반적인 과정 : 두 개체 사이의 거리 측정 → 한 개체에 대해서 가장 작은 거리를 갖는 개체 탐색

 

데이터의 종류가 다양하기 때문에 거리 측정에서는 유클리드 거리, 코사인 거리 등 다양한 종류의 거리를 사용한다.

 

(유클리드 거리) 예를 들어서, User 3 = (5, 4, 7, 4, 7), User 4 = (7, 1, 7, 3, 8) → distance ≅ 3.87

 

2-4. Clustering 군집화

 

비슷한 개체를 하나의 군집으로 묶는 모델이다. 

유사도를 측정하기 위해 "거리"를 사용한다. 

 

산점도에서 자연스럽게 형성되는 그룹을 분석할 때 유용하다. → 비지도학습에 활용

 

 

예를 들면, 주로 어떤 종류의 고객을 보유하고 있는지 파악할 때 사용된다.

 

2-5. Co-occurrence grouping 동시발생

 

개체들 사이의 동시 발생을 통해 관계를 찾는 모델이다. 

 

예를 들어서, 마트 판매 상품을 분석해보니 기저귀를 살 때 맥주도 같이 사는 손님의 비율이 높았다.

 

이와 같이 분석을 통해 특별 프로모션, 상품 진열, 세트 판매, 추천 등 마케팅에 활용할 수 있다.

 

2-6. Profiling 행동 특성 묘사

 

개인이나 집단의 전형적인 행동을 특징짓는 모델이다. 

 

normal한 행동특성에서 벗어난 행동을 탐지할 때 매우 유용하다.

프로필은 normal한 행동을 묘사하기 때문에, 갑자기 그것에 벗어난 행동을 할 때 알림을 주는 것이다.

 

한 예시로는 사기 탐지에 사용된다.

 

2-7. Link Prediction 연관성 예측

 

데이터 아이템들 사이의 연관성을 예측하는 모델이다. 

일반적으로 연결고리가 존재한다고 제안하고, 그 강도를 추정함으로써 사용된다.

 

"추천" 알고리즘에 매우 유용하다. SNS에서 친구를 추천해주거나, 넷플릭스 등에서 영화를 추천할 때 주로 사용된다.

 

2-8. Data Reduction 데이터 사이즈 감소

 

큰 데이터셋을 중요한 정보를 많이 포함하는 작은 데이터셋으로 사이즈를 줄이는 것이다.

 

작은 데이터셋은 다루기 쉽고, 정보나 향상된 인사이트를 보다 더 잘 드러낸다. 

하지만, 정보의 손실 또한 일어나기 쉽다는 단점이 있다.

 

2-9. Causal Modeling 인과관계 모델링

 

다른 사건에 실질적으로 영향을 주는 사건을 찾는 모델이다. 

 

예를 들어 담배피는 사람들 중에 이가 누런 사람과 폐암에 걸린 사람들이 있다고 할 때,

이 누래짐과 폐암이 담배때문에 발생한건지, 아니면 그냥 그런 사람들이 담배를 피는건지 인과관계를 파악하는 것이다.

 

3. Supervised 지도학습 vs. Unsupervised 비지도학습 Methods

 

3-1. Supervised

- 지도학습은 training data를 통해 이미 정답을 알고 학습을 시키는 것이다.

- 명시되어 있는 특정한 타겟이 존재한다.

- (ex) classification

 

Supervised data mining

- 알고싶은 특정한 타겟이 존재한다 → 답이 존재한다.

- training dataset이 반드시 존재한다 → 각각의 target value가 존재하는

- target value는 label 이라고도 부른다. 

- (ex) classification, regression, causal modeling

 

3-2. Unsupervised

- 비지도학습은 정답을 모르고 학습을 시키는 것이다.

- 정의해야 할 명시되어 있는 특정한 타겟이 없다.

- (ex) clustering

 

Unsupervised data mining

- 특정한 타겟이 아닌, 어떠한 패턴을 찾는 것이 목적이다.

- training dataset이 필요하지 않다.

- (ex) clustering, co-occurrence grouping, profiling

 

4. Classification vs. Regression

 

둘 다 supervised data mining task이다.

 

4-1. Classification

- 타겟이 카테고리 값이다. (ex. YES / NO, HIGH / MID / LOW)

- (ex) 이 고객이 인센티브를 받으면 이 상품을 구매할까? → YES / NO

고객이 인센티브를 받으면 (S1, S2, S3) 중에서 어떤걸 구매할 가능성이 높을까? → S1 / S2 / S3

 

4-2. Regression

- 타겟이 숫자 값이다. (ex. 2.5, 68)

- (ex) 이 고객이 이 서비스에 얼마를 쓸까? → $2,500

 

5. Data Mining and its Results

데이터 마이닝에는 두가지 단계가 있다.

 

5-1. Mining phase

: Historical Data (Training Data) → Data mining → Model

 

- training data를 통해 패턴 찾기 or 모델링

- training data는 모든 값이 명시되어 있어야 한다.

 

5-2. Use phase

: New data item → Model → Result

 

- 새로운 데이터에 패턴이나 모델 적용 → 예측

- 새로운 데이터는 알려지지 않은 class value가 존재한다.

 

6. Data Mining Process

: CRISP - DM (Cross Industry Standard Process for Data Mining)

산업을 통틀어서 데이터 마이닝을 위한 표준화된 Process이다.

 

: Business Understanding → Data Understanding → Data Preparation → Modeling → Evaluation → Deployment

 

기본적인 틀은 저 순서이고, 계속적인 평가를 통해 이전 과정으로 돌아가기도 하고 수정을 거듭하면서 점차 성능이 향상된다.

 

6-1. Business Understanding

- 해결해야 할 비즈니스 문제를 이해한다.

    -대부분 모호하거나 폭넓거나 이해하기 어려운 문제이다.

 

- 해결해야 할 비즈니스 문제를 하나 이상의 데이터 사이언스 문제로 간주한다.

    - 데이터 과학자들에 의해 공식화된 창의적인 문제가 성공의 열쇠가 된다.

 

- 문제를 여러 개의 하위 작업으로 나누고, 각각의 데이터 사이언스 문제를 해결할 방법을 디자인한다.

    - classification, regression, clustering 등

    - 각 문제에 맞는 효과적인 툴을 사용할 수 있다.

 

- 문제를 재구성하고 해결책을 설계하는 것은 반복적인 발견의 과정이다.

 

6-2. Data Understanding

- Data

    - 세운 해결책들에 이용가능한 원상태의 데이터셋이 존재한다.

    - (ex) a customer database, a transaction database, a marketing response database

 

- 각 데이터의 강점과 한계점을 이해한다.

    - 문제와 완벽하게 알맞는 데이터는 거의 존재하지 않는다.

    - 각 데이터로 할 수 있는 것과 없는 것을 찾고, 해당 데이터로 문제를 해결할 수 있을지 생각한다.

    - (ex) classification 을 하기 위해서는 라벨이 존재하는 데이터가 필요하다. 

 

- 데이터에 더 투자가 필요한지 결정한다.

    - 몇몇 데이터는 무료이지만, 몇몇 데이터는 얻기 위해 노력이 필요하거나 돈을 지불해야 한다.

 

6-3. Data Preparation

- 데이터를 정리해서 보다 유용한 형태로 변환한다.

    - 몇몇 데이터 분석 툴들은 특정한 형태의 데이터만 요구하기 때문이다.

 

- 일반적인 예시들

    - converting data to tabular format : 테이블 형식의 데이터로 변환

    - removing or inferring missing values : 결측치 제거하거나 유추

    - converting data to different types : (ex) 'male', 'female' → 0, 1  타입 변경 

    - normalizing or scaling numerical values : (ex) [-100, 100] → [0, 1]  범위 조절

    - cleaning data : (ex) Age : 999 → ? 데이터 정리

 

- 데이터 마이닝 결과의 질은 이 단계에 달려있다.

    - (ex) 결측치, 비정상 값, 정규화되지 않은 값

 

6-4. Modeling

- 가장 주요한 단계이다.

 

- output

   - 데이터의 규칙을 나타내는 모델이나 패턴의 일종을 생성한다.

 

- 데이터 마이닝의 근본적인 아이디어를 이해하는 것이 매우 중요하다.

    - 존재하는 데이터 마이닝 기술과 알고리즘을 이해하자.

 

6-5. Evaluation

- 데이터 마이닝 결과를 엄격하게 평가한다.

    - 다음 단계로 넘어가기 전에 그 결과가 유효하고 신뢰할 수 있다는 확신을 얻어야 한다.

 

- Examples

    - 모델의 예측 정확도 추정 (ex. 90%?)

    - training data를 넘어서는 모델의 보편성 확인 (overfitting 되지 않았는지)

    - 허위 경보의 비율 추정

 

- 결과를 즉각적으로 적용하는 대신, 일반적으로 통제된 상황에서 모델을 먼저 테스트하는 것이 바람직하다.

    - 그것이 더 쉽고 저렴하고 빠르고 안전하다.

 

- 데이터 사이언티스트는 그 모델과 평과 결과를 다른 데이터 사이언티스트들 외에 이해관계자들에게 쉽게 설명해야 한다.

    - 매니저, 고위 관계자, 프로그래머 등

 

 

6-6. Deployment

- 실제 상황에 데이터 마이닝 결과 (시스템)을 적용한다.

 

- 일반적인 시나리오

    - 새로운 예측 모델이 구현된다.

    - 그 모델은 기존의 정보 시스템과 통합된다.

 

- 많은 경우

    - Data Science Team : 프로토타입을 제작하고 평가한다.

    - Data Engineering Team : 모델을 생산 시스템에 적용한다.

 

- 적용 이후, 과정은 첫번째 단계로 되돌아간다.

    - 이 과정을 통해 얻은 통찰력과 경험을 통해 더욱 개선된 해결책을 제시할 수 있다.

 

7. Other Analytics Techniques & Technologies

- 데이터 마이닝 외에도 데이터 분석을 위한 다양한 기술들이 있다.

    - 통계학, 데이터베이스 시스템, 머신러닝 등

 

- 이러한 기술들을 익혀두는 것이 중요하다. 

    - 그것들의 목표가 무엇인지, 어떠한 역할을 하는지, 그것들의 차별점이 무엇인지

 

- 데이터 과학자에게 중요한 기술은 어떤 종류의 분석 기술이 특정한 문제를 해결하는데 적합한지 인지할 수 있는 것이다.

 

7-1. Statistics 통계학

- 분석의 바탕이 되는 많은 지식들을 제공한다.

 

- Examples

    - Data Summary (means, median, variance 등)

    - Understanding different data distributions

    - Testing hypotheses : 가설 테스트

    - Quantifying uncertainty : 불확실성 증명

    - Measuring correlation : 연관관계 측정

 

- 많은 기술들이 데이터에서 도출하는 모델이나 패턴들은 통계학에 근본을 두고 있다.

 

7-2. Database Querying

- Database system

    - 데이터 삽입, 질의 (쿼리), 업데이트 및 관리 할 수 있는 소프트웨어 응용 프로그램 

 

- Database query

    - 데이터나 데이터의 통계에 대한 특정한 요청

    - 데이터를 통해서 얻고자 하는 질문

        - (ex) 지정된 데이터 검색, 정렬, 요약 통계량 계산

    - 기술적 언어로 공식화되고 데이터베이스 시스템에 질문을 제기함

        - (ex) SQL (Structured Query Language)

SQL문 예시

 

- Data science vs. databases technologies

    - 데이터 사이언스에서 데이터베이스 시스템에 저장된 관심있는 데이터를 찾거나 조사하기 위해 데이터베이스 기술을 사용할 수 있다.

       

 

7-3. Machine Learning

- 컴퓨터 시스템이 명시적인 프로그래밍 없이, 데이터를 가지고 학습할 수 있는 능력을 제공하는 것이다.

    - 인공지능의 한 분야이다.

 

- 모델을 개발하고 모델 성능을 향상시키는 데에 데이터를 활용한다.

    - (ex) decision tree, artificial neural networks (deep learning), support vector machines, clustering, bayesian networks,...

 

- 하지만,이들 사이의 경계가 모호해졌다.

 

- 데이터 마이닝과 머신러닝은 긴밀히 연결되어있다.

    - 데이터 마이닝의 한 분야가 머신러닝으로 파생되기 시작하였다.

    - 데이터 마이닝은 머신러닝의 한 가지이다.

        - KDD (Knowledge Discovery and Data mining)

        - 둘 사이에 기술과 알고리즘은 공유된다.

    - 데이터로부터 유용하고 유익한 패턴을 찾아낸다.

 

- 그럼에도 불구하고 머신러닝은 성능향상, 인지능력 향상에 더욱 집중되어 있다.

    - (ex) robotics and computer vision

    - (ex) agent가 이 환경에서 학습된 지식을 어떻게 활용하는가

 

- 데이터 마이닝은 데이터로부터 패턴, 규칙을 찾는 것에 더욱 집중되어 있다. 

    - 상업적 응용 프로그램 및 비즈니스 문제에 특히 활용된다.

 

8. Examples of Applying These Techniques

- "어떤 고객이 가장 수익성이 있는가?" : Database systems (profiable can be calculated from existing data., not predict)

- "수익성이 있는 고객과 평균의 고객들 간에 정말 차이가 있는가?" : Statistics (hypothesis testing)

- "하지만 이 고객들은 정말 누구인가? 특징화 할 수 있는가?" : Data mining (profiling)

- "어떤 특정한 새로운 고객이 수익성이 있을까? 얼마나?" : Data mining (classification, regression)

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

 

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