본문 바로가기

데이터사이언스/인공지능

(10)
(빅분기)앙상블(Ensemble)기법(보팅, 배깅, 부스팅) 앙상블은 여러 개의 개별모델(분류기)을 생성하고 그 예측을 조합함으로써 보다 정확한 최종 예측을 도출하는 기법 (weak classifier들을 결합하여 strong classifier를 만드는 것) ※ 앙상블을 상대적으로 약한 여러개의 머신러닝 알고리즘을 결합해 단일 분류기보다 신뢰성이 높은 예측값을 얻는 것을 목표로한다. 1. 보팅(Voting): 서로 다른 알고리즘을 가진 분류기를 결합하여 여러 개의 분류기가 투표를 통해 최종 예측결과 결정 - 하드(Hard)보팅: 예측한 결과값들 중 다수의 분류기가 결정한 예측값을 최종 보팅 결과값으로 선정(다수결의 원칙) - 소프트(Soft)보팅: 분류기들의 레이블 값 결정 확률을 모두 더해 이를 평균내서 확률이 가장 높은 레이블 값을 최종 보팅 결과값으로 선정..
(빅분기)혼동행렬(Confusion Matrix)이란? (민감도, 특이도, 정확도 등) 혼동행렬이란 예측결과와 실제값을 비교해서 얼마나 정답과 일치하는지 다양한 평가지표를 통해 판단 1. 정분류율, 정답률(Accuracy): 전체 관측치 중 올바르게 예측한 비율(모든 데이터의 판정 결과가 맞는지 여부를 산출) - Accuracy = (TP + TN) / (TP + TN + FP + FN) - 실제 데이터와 예측데이터가 얼마나 같은지 나타냄(1이 나오면 과적합 의심) - 불균형한 레이블 값 분포에서 성능을 판단할 경우 적합하지 않음(사기예측, 암예측 등 1과 0이 비대칭한 데이터셋) 2. 정밀도, 적합률(Precision): True로 예측한 관측치 중 실제 True인 비율(양성 예측 중, 실제로 양성이 나타난 정도) - Precision = TP / (TP + FP) - 실제 음성인 데이터..
CNN으로 사진 분류하기 - 합성곱(convolution): 작은 필터를 이용해 이미지로부터 특징을 뽑아내는 알고리즘 - CNN: 합성곱층을 반복적으로 쌓아서 만든 인공신경망 - 특징맵: 합성곱층의 결과, 합성곱층이 특징을 추출한 뒤의 이미지 - 이미지 정규화: 이미지의 픽셀 간 편향을 제거하는데 사용됨 각 채널의 분포가 동일해지므로 학습이 원활하게 이루어짐 - 커널: 이미지로부터 특징을 추출하기 위한 가중치를 행렬로 나타내고 커널의 집합을 필터라고 함 - 스트라이드: 커널의 이동거리 - 데이터증강: 이미지에 여러 변형을 주어 이미지 개수를 늘리는 기법(회전, 크기변경, 밀림, 반사, 이동 등) 합성곱은 작은 필터를 이용해 이미지로부터 특징을 추출해내는 방법으로 예를들어 영어는 검은글씨, 한글뜻은 빨간글씨로 적혀있는 영어단어책이..
간단한 신경망 만들기(보스턴 집값 예측하기) 간단한 신경망을 만들기 위해 사이킷런에서 제공하는 보스턴 집값에 영향을 미치는 데이터셋을 불러와서 집값을 예측해보자. 이번에는 선형회귀 알고리즘을 사용하여 모델링하여 회귀에 의해 얻은 결과를 실제데이터와 비교해 오차(MSE)를 줄여나가는 방식으로 학습한다. 선형 회귀 MLP모델에서는 입력층에 입력데이터가 들어오면 은닉층에 전달된 입력 데이터의 특징으로부터 정보를 추출한다. 이후 출력층의 예측값과 실제 정답을 비교해 손실을 계산한다. 손실을 계산했으면 가중치를 수정하기 위해 오차를 역전파한다. import pandas as pd from sklearn.datasets import load_boston dataset = load_boston() dataFrame = pd.DataFrame(dataset['d..
간단한 신경망 만들기(사인함수 예측하기) 이미지를 딥러닝을 이용해 인식하는 모델은 천만에서 1억 개가 넘는 가중치를 가지며 자연스러운 문장을 생성하는 OpenAI GPT-3 언어모델은 1,750억개까지의 가중치를 갖는다. 이러한 복잡한 딥러닝모델을 설계하기 전에 연습삼아 간단한 신경망모델을 만들어보자. - 파이토치에서 '모듈'은 신경망을 구성하는 기본 객체이다. 모듈에는 구성요소를 정의하는 __init__()함수와 순전파의 동작을 정의하는 forward()함수가 있다. - 간단한 신경망은 nn.Sequential, 복잡한 신경망은 nn.Module을 이용한다. - MSE(평균 제곱 오차)는 회귀, CE(크로스 엔트로피)는 분류에 이용한다. - 피처는 신경망의 입력으로 들어오는 값으로 데이터가 갖고 있는 특징이다. - 배치: 데이터셋의 일부로 신..
인공신경망 ANN 이해하기(인공지능 핵심용어 등) 인공신경망(ANN)은 사람의 신경망을 본떠서 만든 알고리즘이다. 인공신경망이란 수많은 뉴런들을 서로 그물망처럼 묶어서 정보를 앞에서 뒤로 전달하며 출력층에 나온 값을 가지고 예측하는 알고리즘이다. 퍼셉트론을 이용해 만든 모든 구조물을 인공 신경망이라고하고 퍼셉트론을 하나만 사용하면 '단층신경망', 여러개를 사용한다면 '다층신경망'이라고 부른다. 딥러닝은 결과를 해석하는 일은 쉽지않다. 똑같은 코드를 누가 실행하느냐에 따라 결과가 바뀌고 성능이 좋게 나오면 운이 좋아서 그런 건지, 아니면 지금 데이터에 한해서만 성능이 좋은 건지 알기 어렵다. 신경계의 뉴런들은 작은 패턴을 찾아내는데 특화되어있고 작은 단위의 패턴을 다음 층의 인풋으로 사용해서 더 섬세하게 예측한다 ※인간의 신경계: 몸 안팎에서 일어나는 변..
딥러닝 문제 해결 체크리스트 1. 풀어야 할 문제 이해하기 - 정확한 값을 예측하는 회귀 문제인가? - 입력이 속한 범주를 예측하는 분류 분제인가? 2. 데이터 파악하기 - 입력 자료형과 정답 확인하기 - 클래스 간의 불균형은 없는지 확인하기 - 누락된 데이터 혹은 자료형에 맞지 않는 데이터가 포함되어 있는지 확인하기 3.데이터 전처리 - 학습에 필요한 데이터가 부족하다면 데이터 증강하기 - 데이터를 정규화해서 값의 범위 맞추기 4. 신경망설계 - 데이터의 공간 정보가 중요하면 합성곱 적용하기 - 데이터의 순서 정보가 중요하면 RNN 적용하기 5. 신경망학습 - 적합한 손실함수 찾기 - 가중치 수정을 위한 최적화 정하기 - 신경망의 성능을 평가하기 위한 평가 지표 정하기 6. 손실이 무한대로 발산한다면 - 손실 함수 바꿔보기 - 데..
지도학습, 비지도학습, 강화학습 머신러닝의 학습방법을 지도학습, 비지도학습, 강화학습으로 분류합니다. 1. 지도학습: 데이터에 정답이 있음 - 고양이와 토끼를 구분한 예측결과를 출력함 2. 비지도학습: 데이터에 정답이 없음 - 구매이력이 담긴 쇼핑이력, 구매이력으로 소득수준 파악, 소비자의 취향파악 등 정답은 없지만 주어진 정보를 이용해 상관관계를 찾아냄 - 데이터를 그룹으로 나누는 클러스터링과 이상치 탐지에 사용됨 3. 강화학습: 데이터를 사용하지 않고 인공지능이 스스로 시행착오를 겪으며 성장하는 학습방법 - 강화학습을 데이터를 입력으로 받지 않고 주어진환경과 인공지능이 직접 상호작용해 인공지능의 행동을 점점 수정해나가도록 학습함 - 성공적인 행동에 상을 내리고, 잘못된행동에 벌을 줘서 인공지능이 직접 자신의 생동을 개선하게 함 - ..