머신러닝 - 나이브베이즈 🔑 Naive Bayes | R | naiveBayes() | 베이즈정리 | 사건발생 확률 | 조건부 확률 | 사후확률 | 사전확률 | 라플라스 추청치

Поделиться
HTML-код
  • Опубликовано: 14 ноя 2024

Комментарии • 23

  • @hmltj6847
    @hmltj6847 3 месяца назад

    안녕하세요. 영상을 열심히 본 고등학생입니다. 근데 강의에서 다루는 기업도산 사건의 경우 왜 다항 베이즈 정리인지 궁금합니다. 차입금 증가/증가하지 않음 이런 식으로 특징 존재 여부를 고려하는 것은 베르누이 베이즈 정리로 알고 있는데, 혹시 두 개가 뭐가 다른 건가요?

    • @kykwahk
      @kykwahk  3 месяца назад

      여기서 다항 나이브베이즈(multinomial naive Bayes)는 예측변수가 범주형 변수인 경우를 얘기하며, 범주가 두 개인 경우도 포함한 개념입니다. 참고로 예측변수가 연속형 변수인 경우에도 나이브베이즈모델을 적용할 수 있는데요, 이 경우 가우시안 나이브베이즈(Gaussian naive Bayes)라고 합니다.

  • @고해로
    @고해로 Год назад

    교수님 강의 늘 감사드립니다.^^ 나이브베이즈 함수에 사용되는 변수에 대해 질문드립니다.
    강의에서는 예측변수로 범주형 변수여야하며 연속형 변수는 범주형 변환이 필요하다고 하셨는데요.
    naiveBayes() 함수의 예측변수로 연속형을 넣어도 결과는 잘 나오는데요. naiveBayes() 함수에서 자동으로 범주형 변수로 변환되어서 계산되는 것인지 궁금합니다.
    그리고 자동변환이 되더라도 naiveBayes() 함수의 정확한 결과 또는 결과해석을 위해서는 데이터의 모든 연속형 변수를 반드시 범주형으로 변환해야 되는 것인가요?

    • @kykwahk
      @kykwahk  Год назад +1

      강의에서는 베이즈정리와 이를 바탕으로한 나이브베이즈 모델을 보다 쉽게 이해할 수 있도록 예측변수가 범주형인 경우로 한정해서 설명했습니다. 하지만 예측변수가 연속형인 경우에도 동일하게 나이브베이즈 모델을 사용할 수 있습니다. 이 두 개를 구분하여 전자(강의에서 다루는 모델)를 다항 나이브베이즈(multinomial naive bayes)라고 하고 후자를 가우시안 나이브베이즈(Gaussian naive bayes)라고 합니다.
      가우시안 나이브베이즈에서는 일반적으로 연속형 변수의 분포를 정규분포(즉 Gauss 분포)로 가정하고 예측변수의 평균과 표준편차를 바탕으로 확률밀도함수를 도출합니다. 그리고 그로부터 예측하고자 하는 케이스의 예측변수값이 발생할 우도(가능도, likelihood)를 계산하여 조건부확률(예를 들면, P(부채비율=250|y=도산))로 사용합니다. 이후의 단계는 다항 나이브베이즈와 동일합니다. 이렇게 계산된 조건부확률(즉 우도)을 사전확률(예를 들면, P(y=도산))과 곱하여 사후확률(예를 들면, P(y=도산|부채비율=250)을 산출합니다.
      naiveBayes() 함수는 이 두 가지 모델을 모두 다룰 수 있습니다. 그래서 이 함수에 연속형 변수를 예측변수로 넣어도 문제 없이 작동하는 겁니다. naiveBayes() 함수는 범주형 변수인 경우에는 이항분포나 다항분포를 사용하고 연속형 변수인 경우에는 정규분포를 사용해서 조건부확률을 계산합니다. 범주형 변수와 연속형 변수가 섞여 있어도 관계 없습니다. 나이브베이즈 모델은 예측변수 간의 독립을 가정하기 때문에 각 변수의 조건부확률을 각자의 방식으로 계산한 후 그대로 곱해서 사후확률을 도출할 수 있습니다.

    • @고해로
      @고해로 Год назад

      @@kykwahk 아 연속형은 다르게 계산되는군요. 상세한 설명 너무 감사합니다.^^

  • @sophiej4605
    @sophiej4605 3 года назад +2

    교수님 좋은 강의 공개해주셔서 너무 감사합니다. 그런데,
    R 실행시, 이해가 안되는 부분이 있습니다.
    결측치 대체 함수에서, votes[d.na, i] ,

    • @kykwahk
      @kykwahk  3 года назад +2

      예를 들어, 민주당 의원의 찬성 비율이 60%라고 가정해보겠습니다. 그러면 반대 비율은 40%입니다. 0과 1 사이의 난수를 하나 뽑습니다. 찬성과 반대 비율을 하나의 분포처럼 이용하여 이 난수가 어디에 떨어지는지(어디에 속하는지) 봅니다. 그러면 난수가 0과 0.6 사이면 그 난수는 찬성을 의미하는 것으로 볼 수 있고요, 0.6과 1 사이면 그 난수는 반대를 뜻하는 것으로 간주할 수 있습니다. 그래서 뽑은 난수가 찬성 비율(즉 0.6)보다 작으면 yes로 대체하는 겁니다.

    • @sophiej4605
      @sophiej4605 3 года назад +1

      @@kykwahk 설명을 들으니, 이해가 갔습니다. 답변 올려주셔서 너무 감사합니다. 건강하시고, 새해 복 많이 받으세요!!

  • @byung-kwonjung9379
    @byung-kwonjung9379 3 года назад

    감사합니다.

  • @victoriachoi477
    @victoriachoi477 4 года назад

    교수님 이 강의가 혹시 R을 이용한 통계데이터분석이라는 2019년 최근교재와 관련이있는건가요? 맞다면 교재가 있으면 도움이 될까해서 구매해야할것 같아서요..또..이 강의는 R 기초와 활용을 공부한 다음에 하는건지요?

    • @kykwahk
      @kykwahk  4 года назад

      1. 이 강의는 'R을 이용한 통계데이터분석' 책과 관련이 없습니다. 이 강의와 관련된 책은 현재 출간 준비 중입니다. 참고로 'R을 이용한 통계데이터분석'은 전통적인 통계분석기법을 소개한 책입니다. 평균검정(t검정), 분산분석, 회귀분석, 독립성검정(카이제곱검정), 일반선형모델(로지스틱/포아송모델), 차원분석, 군집분석, 시계열분석, 생존분석, 구조방정식모델링, 비모수검정 등의 주제를 다루고 있어요.
      2. 네~ 이 강의를 포함하여 '머신러닝과 텍스트마이닝' 재생목록의 강의들은 R 기초를 공부하신 후 수강하시면 더 편하게 들으실 수 있어요.

    • @victoriachoi477
      @victoriachoi477 4 года назад

      @@kykwahk
      아!! 감사해요 교수님..

  • @백경민-j1l
    @백경민-j1l 3 года назад

    교수님 친절한 강의 감사합니다. 아직 교재는 출간되지 않은건가요... 교재 구매해서 보고싶습니다 ㅎㅎ 혹시 강의자료 받을 수 있을까요..

    • @kykwahk
      @kykwahk  3 года назад

      교재는 지금 출간 준비 중에 있어요.

    • @kykwahk
      @kykwahk  Год назад

      이제 출간되었습니다: 『R을 이용한 머신러닝과 텍스트마이닝』(도서출판 청람).

  • @sophiej4605
    @sophiej4605 3 года назад

    감사합니다. 개념이해가 쏙 되네요

  • @timyong9492
    @timyong9492 2 года назад

    혹시 표본수, 평균, 표준편차가 주어져있고, 사전표준편차가 주어진 경우에는 경우에는 어떤식으로 사후분포를 계산해야하나요?

    • @kykwahk
      @kykwahk  Год назад +1

      예측변수의 평균과 표준편차를 바탕으로 확률밀도함수를 도출합니다. 그리고 그로부터 예측하고자 하는 케이스의 예측변수값이 발생할 우도(가능도, likelihood)를 계산하여 조건부확률로 사용합니다. 이렇게 계산된 조건부확률(즉 우도)을 사전확률(보통 범주별 빈도를 바탕으로 계산)과 곱하여 사후확률을 산출합니다.

  • @nov_je
    @nov_je 2 года назад

    좋은 강의 감사합니다. 혹시 ppt 자료 제공해주실 수 있으신가요?

    • @nov_je
      @nov_je 2 года назад

      자주 복습을 하고 싶습니다ㅠㅠ

  • @seoulresearch
    @seoulresearch 3 года назад

    감사합니다 교수님!

  • @trthffil
    @trthffil 4 года назад

    강의 감사합니다.^^ 숫자가 다르게 나오는 경우가 있어서
    table(votes.test$Class, votes.nb.pred, dnn = c("Actual", "Predicted"))라고 하면
    Predicted
    Actual democrat republican
    democrat 73 7
    republican 1 50 이렇게 교수님과 다르게 74 6이 아니라 73 7이 나옵니다. 나머지는 같습니다.
    mean(votes.nb.pred==votes.test$Class)도 0.9389313으로 교수님의 0.9465649와 다릅니다.
    votes.nb.pred = predict(votes.nb, newdata = votes.test[,-1],
    type = "raw")
    head(votes.nb.pred)
    democrat republican
    [1,] 1.774387e-07 0.9999998
    [2,] 1.545401e-01 0.8454599
    [3,] 7.122639e-01 0.2877361
    [4,] 6.256123e-06 0.9999937
    [5,] 2.260384e-07 0.9999998
    [6,] 1.729191e-06 0.9999983
    으로 교수님과 다르게 나옵니다.
    head(votes.nb.pred)
    [1] republican republican dempcrat republican republican
    [6] republican
    Levels: dempcrat republican으로 교수님과 다르게 나옵니다.
    table(votes.test$Class, votes.nb.pred, dnn = c("Actual", "Predicted"))
    Predicted
    Actual democrat republican
    democrat 73 7
    republican 1 50
    mean(votes.nb.pred==votes.test$Class)
    0.9389313
    으로 교수님과 다르게 나옵니다.
    summary(votes.nb.cv)
    Min. 1st Qu. Median Mean 3rd Qu. Max.
    0.8550 0.8931 0.9122 0.9087 0.9179 0.9466 도 교수님과 다르게 나옵니다.
    결국 도표도 다르게 나옵니다.ㅠㅠ
    library(ggplot2)
    ggplot(data.frame(acc=votes.nb.cv), aes(x="", y=acc)) +
    geom_boxplot(fill="slategray", color="darkslategray", width=0.5) +
    geom_point(position = "jitter", color="royalblue", alpha=0.7) +
    labs(title="Accuracy for Party Prediction with 100 samples", y="Accuracy") +
    coord_flip() +
    theme(axis.title = element_blank(),
    axis.text = element_blank(),
    axis.ticks = element_blank())
    어디서 잘못된 입력이 있었는지 모르겠습니다.^^

    • @kykwahk
      @kykwahk  4 года назад +1

      머신러닝 기업을 적용하다보면 난수(random number)를 사용하는 경우가 있습니다. 난수를 사용하는 sample(), runif() 함수 등은 시드값(seed number)에 따라 다른 결과를 도출합니다. 그래서 동일한 결과를 재현하기 위해서는 강의에서처럼 set.seed() 함수를 이용하여 초기 시드값을 설정합니다.