R-Blogger블로그·해설한국어2025-12-19
머신러닝 기반 사악한 리스트: 즐거운 점핑 리버스 스토리
소개 Ho ho ho! 🎅 휴가 시즌이 도착했습니다. Jumping Rivers에서는 전통적인 장식 대신 데이터를 사용해 공간을 꾸밉니다. 엘프들이 두 번씩 리스트를 확인하느라 바쁜 동안, 우리는 머신러닝 마법을 크리스마스에 접목시켜 보자는 생각을 했습니다. 결국 예측 모델링과 사탕수수, 쿠키, 그리고 사무실 속 작은 장난을 결합하면 가장 축제적일 수밖에 없습니다. 이 블로그는 코드와 함께 진행되는 여정으로, 누가 장난꾸러기인지, 누가 착한지, 그리고 그 사이에 떠다니는 사람들을 찾아내는 전 과정이 담겨 있습니다. 데이터 수집부터 가장 재미있는 특징 만들기, ML 모델 학습, 그리고 결과를 멋진 휴가 스파이스와 함께 공개하는 단계까지, 단계별로 안내해 드리겠습니다. 따뜻한 코코아 한 잔과 가장 좋아하는 크리스마스 양말을 끼고 Jumping Rivers ML‑Powered Naughty List 모험에 뛰어들 준비를 하세요! 모든 데이터, 라벨, 결과는 완전 가상의 내용이며 즐거운 축제 분위기를 위해 무작위로 생성된 것임을 알려드립니다. 1단계: 데이터 수집 및 팀 소개 첫 번째 단계는 데이터셋을 수집하는 것이었습니다. Jumping Rivers 팀을 참여자로 하여, 잠재적 ‘장난꾸러기’ 특성을 반영하는 유머러스한 휴가 테마 특징을 부여했습니다. 아래는 한눈에 보이는 축제 테이블 요약입니다. 과도하게 쿠키를 먹었다 🍪 크리스마스 카드를 보내지 않았다 💌 성가에서 멜로디를 벗어났다 🎶 포장재를 엉망으로 만들었다 🎁 이 목록에 있는 모든 이름은 최종 축제 타이틀인 장난꾸러기, 착한 사람, 혹은 조금 장난스러운 사람에 경쟁 중입니다. 소문에 따르면 사내 인턴 엘프가 쿠키 장난에서 최고 점수를 획득했고, 루돌프는 대시보드를 깔끔하게 유지하며, 겨울 점수는 완벽히 균형을 잡은 프로스티 스노우 애널리스트가 있습니다. 처음부터 시작하거나 실력을 향상시키고 싶다면 Jumping Rivers가 준비한 교육 과정을 확인하세요. 2단계: 특징 엔지니어링 ML 목적상 이름은 숫자로 인코딩되었습니다. 이는 실제 ML 상황에서는 의미가 없지만 전처리 과정을 보여 주는 데 유용합니다. 모델링에 사용되는 특징은 다음과 같습니다. Name (encoded) Ate too many cookies Forgot to send Christmas cards Sang off-key Gift wrapping disasters 3단계: 모델 훈련 우리는 R에서 Random Forest 분류기를 사용했습니다. 이는 간단하고 해석이 쉬우며, 작은 데이터셋에도 적합합니다. 아래 R 코드가 전체 워크플로우를 보여 줍니다. library(tidyverse) library(randomForest) library(ggplot2) # 팀원 설정 team = c( "Esther Gillespie", "Colin Gillespie", "Sebastian Mellor", "Martin Smith", "Richard Brown", "Shane Halloran", "Mitchell Oliver", "Keith Newman", "Russ Hyde", "Gigi Kenneth", "Pedro Silva", "Carolyn Wilson", "Myles Mitchell", "Theo Roe", "Tim Brock", "Osheen MacOscar", "Emily Wales", "Amieroh Abrahams", "Deborah Washington", "Susan Smith", "Santa's Intern Elf", "Rudolph the Data Reindeer", "Frosty the Snow Analyst" ) # 무작위로 장난스러운 특성 생성 set.seed(51) df = tibble( name = team, ate_too_many_cookies = sample(0:1, length(team), replace = TRUE), forgot_to_send_cards = sample(0:1, length(team), replace = TRUE), sang_off_key = sample(0:1, length(team), replace = TRUE), wrapping_disaster = sample(0:1, length(team), replace = TRUE), naughty = sample(0:1, length(team), replace = TRUE) ) # 이름 인코딩 df$name_encoded = as.numeric(factor(df$name)) # 사용하려는 특징 벡터 features = c( "name_encoded", "ate_too_many_cookies", "forgot_to_send_cards", "sang_off_key", "wrapping_disaster" ) # Random Forest 모델 학습 rf_model = randomForest(x = df[, features], y = as.factor(df$naughty), ntree = 100) # 장난 점수 예측 df$predicted_naughty = predict(rf_model, df[, features]) df$naughtiness_score = predict(rf_model, df[, features], type = "prob")[, 2] # 장난 리스트 생성 naughty_list = df %% arrange(desc(naughtiness_score)) %% select(name, naughtiness_score, predicted_naughty) print(naughty_list) # 시각화 ggplot(naughty_list, aes(x = reorder(name, naughtiness_score), y = naughtiness_score, fill = as.factor(predicted_naughty))) + geom_col() + coord_flip() + scale_fill_manual(values = c("0" = "forestgreen", "1" = "darkred"), labels = c("Nice", "Naughty")) + labs( title = "🎅 Jumping Rivers ML-powered Naughty List 🎄", x = "Team Member", y = "Naughtiness Score", fill = "Status", alt = "Jumping Rivers Naughty List" ) + theme_minimal(base_family = "outfit") 4단계: 분석 및 비고 예측 결과를 해석하면 가장 높은 장난 점수를 받은 참가자들이 가장 장난스러운 사람이라는 것을 알 수 있습니다. 주요 관찰 사항은 다음과 같습니다. 쿠키 애호가: 쿠키 위반이 많을수록 높은 점수. 포장 재료 혼란: 추상 예술처럼 보이는 포장은 높은 점수로 이어짐. 음악적 실수: 멜로디를 벗어난 성가단은 장난스러운 사람으로 표시됨. 미완성 카드: 작은 실수도 장난스러운 순위 상승에 영향을 줌. 특별히 주목할 점은 Theo가 장난 리스트 상단을 차지하고, Santa’s
원문 URL
전체 글은 원문 페이지에서 이어서 읽을 수 있습니다.
- 작성자
- R-Blogger
- 출처
- R-Blogger
- 플랫폼
- R-Blogger
- 분류
- 블로그·해설
- 언어
- 한국어
- 발행일
- 2025-12-19