TIL/멋사_AI스쿨_TIL

221025 AI스쿨 TIL 머신러닝: 분류

2022. 10. 25. 21:30

28일차 멋사 AI스쿨 main lecture by 박조은 강사님

 

오늘의 회고

사실(Fact): 머신러닝 결정트리학습법, 당뇨병 예측 실습

느낌(Feeling): 어제보다는 지도학습, 비지도학습에 대해 이해가 되는데, 지니불순도나 엔트로피 같은 용어가 단번에 이해하기 어려웠다

교훈(Finding): 오늘 과제를 해결하면서 복습하고, 유튜브 영상을 많이 참고해야겠다.

 

+)

그리고 TIL 쓰는 스타일을 바꿔보려고 하는데 좀 어렵다

자세한 내용보단 뭘배웠는지 위주로 적고, 자세한 내용은 스스로 실습을 하면서 정리하면 좋을 거같다.


머신러닝을 통한 현실세계의 문제 해결

1. 지도학습 VS 비지도학습

(정답 == label == target) 있으면 지도학습, 없으면 비지도 학습

2. 지도 학습이라면, 그 중에서도 분류로 할수있는 일, 회귀로 할수있는 일 생각해보기

3. 어떤 알고리즘이 좋을지 선택하기

ex) 지도 학습 알고리즘 

  • 분류문제 - 로지스틱 회귀, 나이브 베이즈 분류 
  • 회귀문제 - 선형 회귀, 정규화 
  • 둘 다 - 서포트 벡터 머신, 랜덤 포레스트, 신경망 ...

분류

  • 이미지 분류
  • 질문 분류 (민원 처리부서 분류)
  • 스팸메일 분류
  • 자연어 텍스트를 분류
  • 물류 - 배송지 분류
  • 상품 카테고리, 진열 분류
  • 암 진단하기 (사진을 통한 질병 진단)
  • 웹사이트의 언어 확인
  • 게임회사 등 → 이상치탐지, 이상유저 분류 (욕설, 핵프로그램, 트롤)
  • 광고 → 가짜 유저 (abuser) 탐지

https://datascienceschool.net/03 machine learning/09.01 분류용 예제 데이터.html

 

회귀

  • 주식, 주가 예측
  • 주택 가격 예측
  • 기상 - 기온, 강수량 예측
  • 제품 수율 예측 (반도체 등)
  • 농산물 생산량, 수요량, 수확량 예측
  • 광고의 클릭률, 전환률 예측
  • 관객수 예측
  • 투표율 / 당선 예측
  • 기간별 매출액
  • 서버의 트래픽양 예측

출처: https://github.com/amueller/odscon-2015/blob/master/machine-learning-with-scikit-learn-odscon-expanded.pdf

 

GitHub - amueller/odscon-2015: Slides and material for open data science

Slides and material for open data science. Contribute to amueller/odscon-2015 development by creating an account on GitHub.

github.com

오늘 수업에서 가장 중요한 도식

model >> Prediction >> Evaluation

기출문제로 Training하고, 실제 시험에서 Test한다고 이해하면 쉽다

학습할땐 Fit / 실제 시험, 예측은 Predict

feature_names : 학습, 예측에 사용할 컬럼을 리스트 형태로 만들어서 변수에 담아준다.

딥러닝은 머신러닝의 종류 중 하나로 도식에서 Model에 신경망 학습이 들어간다고 생각하면 된다.

 

 

 

결정 트리 학습법 Decision Tree

첫번째로 배운 알고리즘. 스무고개 게임과 비슷하다고 생각하면 이해하기 쉽다.

트리 모델 중 목표 변수가 유한한 수의 값을 가지는 것을 분류 트리라고 한다.

결정 트리 중 목표 변수가 연속하는 값, 일반적으로 실수를 가지는 것은 회귀 트리라 한다

CART 알고리즘 (분류 및 회귀 트리)

  • 랜덤 포레스트
  • 부스트트리
  • 회전 포레스트

(https://ko.wikipedia.org/wiki/%EA%B2%B0%EC%A0%95_%ED%8A%B8%EB%A6%AC_%ED%95%99%EC%8A%B5%EB%B2%95)

 

결정트리의 장점

  • 결과를 해석하고 이해하기 쉽다.
  • 자료를 전처리 할 필요가 거의 없다.
  • 수치 자료와 범주 자료 모두에 적용할 수 있다.
  • 화이트박스 모델을 사용한다. 모델에서 주어진 상황이 관측 가능하다면 불 논리를 이용하여 조건에 대해 쉽게 설명할 수 있다. (결과에 대한 설명을 이해하기 어렵기 때문에 인공신경망은 대표적인 블랙 박스 모델이다.)
  • 대규모의 데이터 셋에서도 잘 동작한다. 

당뇨병 예측 실습

전체 데이터 중 80%는 학습, 나머지는 예측으로 나누어서 사용

처음에 변수에 할당을 잘해야한다. 안그러면 예측 정확도가 100%가 나오는 문제(?!) 발생 

 

오버피팅 == 과대적합 == 과적합

학습하지 않아도 되는 부분까지 학습해서 쓸데없는 부분까지 학습해서 오히려 오답

언더피팅 == 과소적합

'학습을 적게해서 점수가 낮게 나오는 것

 

지니계수, 지니불순도, 엔트로피 -> 추가 공부 필요

참고링크: https://hleecaster.com/ml-decision-tree-concept/

p가 0.5가 최악의 경우이다. 치 짜장면이 좋아 짬뽕이 좋아 물었을떄 ‘아무거나’라고 말한 상태 같은 것이다

트리를 그리다가 gini=0이되면 트리가 뻗어나가는 것을 멈추게된다

 

사이킷런 모델 불러오기

from sklearn.tree import DecisionTreeClassifier
model = DecisionTreeClassifier(random_state=42, max_depth=6, min_samples_leaf=6)

.fit 학습하기 / .predict 예측하기

# 학습
model.fit(X_train, y_train)
# nan값이 있으면 학습이 안된다.

# 예측
y_predict = model.predict(X_test)

예측 정확도 계산하기 3가지 방법

# 직접 계산하기
(y_test == y_predict).mean() 

# 미리 구현된 알고리즘 가져오기
from sklearn.metrics import accuracy_score
accuracy_score(y_test, y_predict)

# score 활용
model.score(X_test, y_test)

현실세계에서는 당뇨 진단에 인슐린이 중요도가 크다고 알고있는데, 분석결과 글루코스가 더 높았다.

그렇다면? EDA를 통해 인슐린 중요도가 왜 낮게 나왔는지 분석해본다.

데이터를 뜯어보니 인슐린 데이터가 0인 경우가 많았다 (결측치로 변경 후 확인한 비율

데이터가 0인 값을 결측치로 취급 후, 결측치를 평균값으로 채우는 전처리를 실습하였다.

# 0인 데이터를 결측값으로 바꾸기
df["Insulin_nan"] = df["Insulin"].replace(0,np.nan)
# 결측치 채우기
# 중요한 데이터인데 누락이 될 수 있고, 편향될 가능성이 있어서 평균값으로 채움
df["Insulin_fill"] = df["Insulin_nan"]
df.loc[(df['Outcome']==0)&(df["Insulin_nan"].isnull()), 'Insulin_fill'] = Insulin_mean.loc[0]
df.loc[(df['Outcome']==1)&(df["Insulin_nan"].isnull()), 'Insulin_fill'] = Insulin_mean.loc[1]
df["Insulin_fill"].isnull().sum()

데이터 전처리 후 Insulin -> Insulin_fill 중요도 차이!!

좌측 보라색, 우측 연두색

정확도(Accuracy) 도 상승! 0.71 -> 0.88

  • 머신러닝을 통한 현실세계의 문제 해결
  • 결정 트리 학습법 Decision Tree
  • 당뇨병 예측 실습
  • .fit 학습하기 / .predict 예측하기
  • 예측 정확도 계산하기 3가지 방법
'TIL/멋사_AI스쿨_TIL' 카테고리의 다른 글
  • 221027 AI스쿨 TIL 복습DAY: 결정트리, 머신러닝
  • 221026 AI스쿨 TIL 머신러닝: 랜덤포레스트
  • 221024 AI스쿨 TIL 머신러닝 첫시간
  • 221019-24 AI스쿨 TIL 미드프로젝트 기간 중 회고
둥둥런
둥둥런
대학원생의 UX, 데이터분석, 개발 공부 기록장📁
둥둥런
Done is better than Perfect
둥둥런
전체
오늘
어제

공지사항

  • About me
  • 분류 전체보기
    • TIL
      • 멋사_AI스쿨_TIL
    • 회고
      • 프로젝트 회고
    • STUDY
      • SQL
      • Python
      • Pandas
      • 태블로
      • 통계
      • 머신러닝 | 딥러닝
      • ETC
      • 그로스마케팅 | 광고
      • UX
    • BOOK
    • EVENT

인기 글

블로그 메뉴

  • 태그
  • 관리
hELLO · Designed By 정상우.
둥둥런
221025 AI스쿨 TIL 머신러닝: 분류
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.