Machine Learning

abcd·2021년 8월 31일

AI

목록 보기
1/2
post-thumbnail

인공지능/머신러닝 개론

빅 데이터의 등장

4차 산업 흐름에 따라 수 많은 정보가 디지털 데이터로 저장되고 있음

빅 테이터와 머신러닝

머신러닝은 빅 데이터를 분석할 수 있는 강력한 툴!
기존 통계학 및 시각화 방법의 한계를 해결

머신러닝

명시적으로 프로그래밍을 하지 않고도 컴퓨터가 학습할 수 있는 능력 을 갖게 하는 것

명시적 프로그래밍 -> 챗봇 만들때 케이스 별로 예측값을 직접 개발자가 생각함
머신 러닝 -> 개발자가 케이스를 나누는 것이 아닌 기계가 학습하여 나눔

머신러닝 기법 구분

지도학습 vs 비지도학습

예측해야 할 결과에 대한 정답 데이터가 있는지 없는지 확인

지도학습은 사진데이터 와 사진내부의 데이터의 물체를 미리 주어져 학습하는 방법
비지도학습은 사진데이터는 주어지지만 데이터의 물체를 미리 안주어지는 방법

강화학습

데이터가 없어도 학습 가능 기계가 스스로 학습할 데이터를 만듬

Ex.알파고(최신버전)

범주형 자료의 요약

도수분포표

Before

After

범주를 정하고 도수 상대도수 누적 상대도수 별로 나타냄
피벗테이블 과 비슷 하다고 느낌
누적 상대도수가 필요한 이유 (ex. 매우만족 부터 보통 까지 뽑아내야할때 누적 상대도수 활용)

도수분포표 정의

도수
각 범주의 속하는 관측값의 개수 value_counts()

상대도수
도수를 자료의 전체 개수로 나눈 비율 value_counts(normalize=True)

도수분포표
범주형 자료에서 범주와 그 범주에대응하는 도수,상대도수를 나열해 표로 만든 것

시각화

막대그래프

수치형 자료의 요약

np.mean() 평균

관측값들을 대표할 수 있는 통계값 모든 관측값의 합을 자료의 개수로 나눈 것

평균의 특징

관측값의 산술평균으로 사용
통계에서 기초적인 통계 수치로 가장 많이 사용
극단적으로 큰 값이나 작은 값의 영향을 많이 받음

퍼진 정도의 측도

ex.

평균은 같지만 분산이 달라 그래프가 다름
분산이 클수록 퍼진다!

분산

from statistics import variance
variance()

자료가 얼마나 흩어졌는지 숫자로 표현

각관측값이 자료의 평균으로부터 떨어진 정도

표준편차

from statistics import stdev
stdev()

분산의 단위 = 관측값의 단위의 제곱 - 관측값의 단위와 불일치

분산의 양은 제곱의 관측값과 단위가 일치 - 분산의 양은 제곱근을 표준편차라 하고 s로 표기

히스토그램(Histogram)

plt.hist()

수치형 자료중 일정한 범위를 갖는 범주로 나누고 막대그래프와 같은 방식으로 그림

ex.

특징

자료의 분포를 알 수 있음
계급구간과 막대의 높이로 그림
도수,상대도수를 막대 높이로 사용

데이터 전 처리하기!

머신러닝을 위한 데이터 전 처리 이해하기

전반적인 머신러닝 과정

데이터 전 처리의 역할

**머신러닝의 입력 형태로 데이터 변환 ( 특성 엔지니어링)

**결측값 및 이상치를 처리하여 데이터 정제

학습용 및 평가용 데이터 분리

데이터 전처리 필요한 이유

대부분의 머신러닝 모델은 숫자 데이터를 입력 받는다.

실제 데이터는 다양한 형태로 존재

실제 데이터는 머신러닝 모델이 이해할 수 없는 형태로 되어있어 데이터 전 처리(수치형 자료로 변환)할 필요가 있다!

데이터 정제

전 처리를 통하여 테이터의 결측값 및 이상치를 처리

데이터 분리

전 처리를 통하여 학습용 과 평가용 데이터를 분리

분리를 하여야 각각의 역활에 맞게 사용 가능하다!

원본 데이터를 다 학습용으로 사용하게 된다면 평가시 결과값이 안좋아 질수 있으므로
데이터의 객관성을 위해 평가용을 꼭 따로 두기!

범주형 자료 전 처리

ex.

범주형 데이터는 몇 개의 범주로 나누어진 자료

범주의 크기가 의미 없다면 명목형 자료
크기가 의미가 있다면 순서형 자료

위의 그래프에서 Pclass는 순서형 자료! 나머지는 명목형 자료

대표적인 범주형 자료 변환 방식

명목형 자료

  • 수치 맵핑 방식
    ex. 2가지

    ex. 3가지 이상

  • 더미 기법

다중으로 사용될때 사용하면 편리할 것

순서형 자료

  • 수치 맵핑 방식

수치형 자료 전 처리

숫자로 이루어져 있는 자료

머신러닝의 입력으로 바로 사용할 수 있으나, 모델의 성능을 높이기 위해서 데이터 변환이 필요

대표적인 수치형자료 변환 방식


스케일링(Scaling)

정규화(Normalization)

변수 값의 범위 및 크기를 변환하는 방식

변수(feature)간의 범위가 차이가 나면 사용

정규화 예시

표준화(Standardization)

시그마 = 표준편차 , 뮤 = 평균

표준화 예시

범주화


데이터 정제 및 분리하기

결측값(Missing data) 처리

일반적인 머신러닝 모델의 입력 값으로 결측값을 사용 할 수 없음
따라서 Null,None,NaN등의 결측값을 처리 해야함

대표적인 결측 값 처리 방식

  • 결측값이 존재하는 샘플 삭제(1)
  • 결측값이 많이 존재하는 변수 삭제(2)
  • 결측값을 다른 값으로 대체(3)

Ex.

이상치(Outlier) 처리

이상치가 있으면, 모델의 성능을 저하할 수 있으므로 이상치는 일반적으로 전 처리 과정에서
제거하며, 어떤 값이 이상치 인지 판단하는 기준이 중요함

이상치 판단 기준 방법

  • 통계 지표(카이제곱 검정,IOR지표 등)를 사용하여 판단

  • 데이터 분포를 보고 직접 판단

  • 머신러닝 기법을 사용하여 이상치 분류


지도학습 데이터 분리

지도학습의 경우 feature 데이터와 lagel 데이터를 분리하여 저장합니다.

  • Feature 데이터 : lebel을 예측하기 위한 입력 값
  • Label 데이터 : 예측해야 할 대상이 되는 데이터

Ex.

Survived -> Label 데이터


지도학습 - 회귀

회귀 개념 알아보기

  • 아이스크림 가게운영중 판매용 아이스크림 주문 시, 예상되는 실제 판매량만큼의 주문을 원함
    이 때 만약 평균 기온을 활용하여 미래 판매량을 예측해보기

선형적인 관계란 같이 오르면 같이오르고 같이 내리면 같이 내리고 하나가 줄면 하나가 늘어> 나도 선형적인 관계라고 한다. (일관적인 관계)

회귀분석

  • 데이터를 가장 잘 설명하는 모델을 찾아 입력값에 따른 미래 결과값을 예측하는 알고리즘

Label 데이터가 수치형일시!

단순 선형 회귀

실제 정답과 내가 예측한 값과의 차이가 작도록 해야함

실제 값과 예측값의 차리를 구하기

실제 값과 예측값의 차이의 합으로 비교하게는 예외가 존재한다.

합계값이 둘다 동일하게 0이 나왔지만 오른쪽이 좀더 좋아보임

그래서 실제 값과 예측 값 차이의 제곱의 합으로 비교하기

Loss함수

  • 실제 값과 예측 값 차이의 제곱의 합을 Loss함수로 정의함
    -> Loss 함수가 작을 수록 좋은 모델이다.

- Loss함수 줄이기

Loss 함수에서 주어진 값은 입력 값과 실제 값이다.
-> B0(y절편) , B1(기울기) 값을 조절하여 Loss함수의 크기를 작게 한다.

Loss함수의 크기를 작게 하는 B0(y절편), B1(기울기)를 찾는 방법

argmin = B0B1을 변경하여 작게만드는것

경사 하강법

Loss함수 값이 제일 작게 하는 절편,기울기를 B0,B1라고 하자
경사 하강법은 계산 한번으로 B0,B1(최종 Loss값)을 구하는 것이 아닌 초기값에서 점진적으로 구하는 방식

B0,B1(0,1) 일시 점진적으로 (1,3) , (3,5) , (3,7) 이러한 식으로 최고의 Loss값을 찾음

Gradient 값 = Loss값을 줄일수 있는지 힌트가 되는 값

  • 3d image

단순 선형 회귀 특징

  • 가장 기초적이나 여전히 많이 사용되는 알고리즘
  • 입력값이 1개인 경우에만 적용이 가능함
  • 입력값과 결과값의 관계를 알아보는 데 용이함
  • 입력값이 결과값에 얼마나 영향을 미치는지 알 수 있음
  • 두 변수 간의 관계를 직관적으로 해석하고자 하는 경우 활용

다중 선형 회귀

만약, 입력값 X에 강수량이 추가된다면?
즉, 평균 기온과 평균 강수량에 따른 아이스크림 판매량을 예측하고자 할 때

여러 개의 입력값(X)으로 결과값(Y)을 예측하고자 하는 경우 사용된다!

다중 선형 회귀 모델 이해하기

가정 선형관계!

단순 선형 회귀와 마찬가지로 Loss함수는 입력값과 실제값 차이의 제곱의 합으로 정의됨

-> 마찬가지로 B0 ~ Bm 값을 조절하여 Loss 함수의 크기를 작게 함

Ex.

다중 선형 회귀 모델의 경사 하강법

실제 데이터 예시

다중 선형 회귀 특징

  • 여러개의 입력값과 결과값 간의 관계 확인 가능
  • 어떤 입력값이 결과값에 어떠한 영향을 미치는지 알 수 있음
  • 여러 개의 입력값 사이 간의 상관관계가 높을 경우 결과에 대한 신뢰성을 잃을 가능성이 있음

상관 관계 -> 두 가지 것의 한쪽이 변화하면 다른 한쪽도 따라서 변화하는 관계

회귀 평가 지표

회귀 알고리즘 평가

  • 어떤 모델이 좋은 모델인지를 어떻게 평가할 수 있을까 ?
    목표를 얼마나 잘 달성했는지 정도를 평가해야 함
  • 실제 값과 모델이 예측하는 값의 차이에 기반한 평가 방법 사용

Ex. RSS,MSE,MAE,MAPE,R2(R제곱)

RSS(단순 오차)

  1. 실제 값과 예측 값의 단순 오차 제곱 합
  2. 값이 작을수록 모델의 성능이 높음
  3. 전체 데이터에 대한 실제 값과 예측하는 값의 오차 제곱의 총합

특징

  • 가장 간단한 평가 방법으로 직관적인 해석이 가능함
  • 그러나 오차를 그대로 이용하기 때문에 입력 값의 크기에 의존적임
  • 절대적인 값과 비교가 불가능함

Loss 값이 커지면 RSS값이 커짐 객관적 비교불가

MSE,MAE(절대적인 크기에 의존한 지표)

MSE(Mean Squared Error)
평균 제곱 오차, RSS에서 데이터 수 만큼 나눈 값
작을수록 모델의 성능이 높다고 평가할 수 있음.

회귀에서는 Loss 분류에따른 혹은 다른 문제점에는 MSE

MAE(Mean Absolute Error)
평균 절대값 오차, 실제 값과 예측값의 오차의 절대값의 평균
작을수록 모델의 성능이 높다고 평가할 수 있음.

특징

  • MSE: 이상치(Outlier) 즉, 데이터들 중 크게 떨어진 값에 민감함

  • MAE: 변동성이 큰 지표와 낮은 지표를 같이 예측할 시 유용

  • 가장 간단한 평가 방법들로 직관적인 해석이 가능함

  • 그러나 평균을 그대로 이용하기 때문에 입력 값의 크기에 의존적임

  • 절대적인 값과 비교가 불가능함

    R2 (결정 계수)

회귀 모델의 설명력을 표현하는 지표
1에 가까울수록 높은 성능의 모델이라고 해석할 수 있음

TSS는 데이터 평균 값(y)과 실제 값(y(i))(y^(i^))차이의 제곱

특징

  • 오차가 없을수록 1에 가까운 값을 갖음
  • 값이 0인 경우,데이터의 평균 값을 출력하는 직선 모델을 의미함
  • 음수 값이 나온 경우,평균 값 예측 보다 성능이 좋지 않음

지도학습 - 분류

분류 개념 알아보기

해외 여행을 준비하고 있다고 있음 완벽한 여행을 위해 항공 지연을 피하고자 함.
기상 정보(구름 양,풍속)을 활용하여 해당 항공의 지연 여부를 예측할 수 있다면?

  • 데이터: 과거 기상 정보(풍속)과 그에 따른 항공 지연 여부
  • 목표 : 현재 풍속에 따른 항공 지연 여부 예측하기

분류 알고리즘 으로 해결하기

분류

  • 주어진 입력 값이 어떤 클래스에 속할지에 대한 결과 값을 도출하는 알고리즘

  • 다양한 분류 알고리즘이 존재하며,예측 목표와 데이터 유형에 따라 적용

항공 지연 문제 해결하기

풍속 4m/s를 기준으로 지연 여부를 나눠보기

  • 풍속 4m/s보다 크면 지연
  • 풍속 4m/s보다 작으면 지연없음

분류 알고리즘 종류

  • 분류 문제에 다양한 머신러닝 모델을 사용하여 해결

의사결정나무 - 모델 구조

의사결정나무(Decision Tree)란?

  • 스무고개 와 같이 특정 질문들을 통해 정답을 찾아가는 모델
  • 최상단의 뿌리 마디에서 마지막 끝 마디까지 아래 방향으로 진행

이진트리 구조...

중간 마디 추가하기

2개 이상의 feature데이터의 경우

이진트리 구조와 매우 유사하다고 볼 수 있지만 나누는 기준을 잘 정해야 할 것 같다..

의사결정나무 - 불순도

의사결정나무 분리 기준 알아보기

분류를 하기 에매함 3번의 yes항 떄문에

불순도

  • 다른 데이터가 섞여 있는 정도

ex.
Date set A 와 B 중 불순도가 더 낮은 것은?

답은 A!
데이터의 개수가 적기 때문에 눈으로 확인 가능하지만 수많은 데이터가 존재할 때 불순도는 어떻게 측정 가능할지 알아보자

지니 불순도(Gini Impurity)

  • 지니 계수(Gini Index)
    해당 구역 안에서 특정 클래스에 속하는 데이터의 비율을 모두 제외한 값으로 나타냄
    즉, 다양성을 계산하는 방법
  • 지니 불순도(Gini Impurity)

지니 불순도(Gini Impurity) 계산하기

N은 전체 계수! n1은 n1내 에서의 전체 계수

불순도별 가장 낮은 기준을 선택하는것!

지니 불순도(Gini Impurity) 적용하기

의사결정나무의 깊이의 trade-off

-의사결정나무의 깊이가 깊어질 수록 세분화해서 나눌 수 있지만 너무 깊은 모델은 과적합을 야기할 수 있음.
-> 데이터에 따라 다를 수 있지만 너무 깊은 모델은 지양하자!

학습데이터를 나눌 때 너무 자잘한 데이터까지 신경쓰지 않기!

의사결정나무의 특징

  • 결과가 직관적이며, 해석하기 쉬움
  • 나무 깊이가 깊어질수록 과적합(Overfitting)문제 발생 가능성이 매우 높음
  • 학습이 끝난 트리의 작업 속도가 매우 빠르다.

분류 평가 지표

혼동 행렬(confusion Matrix)

  • 분류 모델의 성능을 평가하기 위함

True Positive : 실제 Positive인 값을 Positive라고 예측(정답)
True Negative : 실제 Negative인 값을 Negative라고 예측(정답)
False Positive : 실제 Negative인 값을 Positive라고 예측(오답) - 1형 오류
False Negative : 실제 Positive인 값을 Negative라고 예측(오답) - 2형 오류

정확도(Accuracy)

  • 전체 데이터 중에서 제대로 분류된 데이터의 비율로,모델이 얼마나 정확하게 분류하는지 나타냄

  • 일반적으로 분류 모델의 주요 평가 방법으로 사용됨

  • 클래스 비율이 불균형 할 경유 평가 지표의 신뢰성을 잃을 가능성이 있음

  • P:positive n:negative t:true f:false

정밀도(Precision)

  • 모델이 Positive라고 분류한 데이터 중에서 실제로 Positive인 데이터의 비율

  • Negative가 중요한 경우

  • 실제로 Negative인 데이터를 Positive라고 판단하면 안되는 경우 사용되는 지표

Negative가 중요한 경우

  • 스팸 메일 판결을 위한 분류

  • 해당 메일이 스팸일 경우 Positive, 스팸이 아닐 경우 즉,일반 메일일 경우 Negative

  • 일반 메일을 스팸 메일(Positive)로 잘못 예측했을 경우 중요한 메일을 전달받지 못하는 상황이 발생할 수 있음.

재현율(Recall,TPR)

  • 실제로 Positive인 데이터 중에서 모델이 Positive로 분류한 데이터의 비율

  • Positive가 중요한 경우

  • 실제로 Positive인 데이터를 Negative라고 판단하면 안되는 경우 사용되는 지표

  • Positive가 중요한 경우

악성 종양 여부 판결을 위한 검사

악성 종양일 경우 Positive
악성 종양이 아닐 경우 즉, 양성 종양일 경우 Negative

악성 종양(Positive)을 양성 종양(Negative)로 잘못 예측했을 경우 제 때 치료를 받지 못하게 되어 생명이 위급해질 수 있음

다양한 분류 지표의 활용

분류 목적에 따라 다양한 지표를 계산하여 평가

  • 분류 결과를 전체적으로 보고 싶다면 -> 혼동 행렬
  • 정답을 얼마나 잘 맞췄는지 -> 정확도
  • FP 또는 FN의 중요도가 높다면 -> 정밀도,재현율

0개의 댓글