
4차 산업 흐름에 따라 수 많은 정보가 디지털 데이터로 저장되고 있음
머신러닝은 빅 데이터를 분석할 수 있는 강력한 툴!
기존 통계학 및 시각화 방법의 한계를 해결

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

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

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

지도학습은 사진데이터 와 사진내부의 데이터의 물체를 미리 주어져 학습하는 방법
비지도학습은 사진데이터는 주어지지만 데이터의 물체를 미리 안주어지는 방법
데이터가 없어도 학습 가능 기계가 스스로 학습할 데이터를 만듬
Ex.알파고(최신버전)

Before

After

범주를 정하고 도수 상대도수 누적 상대도수 별로 나타냄
피벗테이블 과 비슷 하다고 느낌
누적 상대도수가 필요한 이유 (ex. 매우만족 부터 보통 까지 뽑아내야할때 누적 상대도수 활용)
도수
각 범주의 속하는 관측값의 개수 value_counts()
상대도수
도수를 자료의 전체 개수로 나눈 비율 value_counts(normalize=True)
도수분포표
범주형 자료에서 범주와 그 범주에대응하는 도수,상대도수를 나열해 표로 만든 것
막대그래프


관측값들을 대표할 수 있는 통계값 모든 관측값의 합을 자료의 개수로 나눈 것
평균의 특징
관측값의 산술평균으로 사용
통계에서 기초적인 통계 수치로 가장 많이 사용
극단적으로 큰 값이나 작은 값의 영향을 많이 받음

ex.

평균은 같지만 분산이 달라 그래프가 다름
분산이 클수록 퍼진다!
분산
from statistics import variance
variance()
자료가 얼마나 흩어졌는지 숫자로 표현
각관측값이 자료의 평균으로부터 떨어진 정도
from statistics import stdev
stdev()
분산의 단위 = 관측값의 단위의 제곱 - 관측값의 단위와 불일치
분산의 양은 제곱의 관측값과 단위가 일치 - 분산의 양은 제곱근을 표준편차라 하고 s로 표기

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

ex.

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

전반적인 머신러닝 과정
**머신러닝의 입력 형태로 데이터 변환 ( 특성 엔지니어링)
**결측값 및 이상치를 처리하여 데이터 정제
학습용 및 평가용 데이터 분리
대부분의 머신러닝 모델은 숫자 데이터를 입력 받는다.


실제 데이터는 다양한 형태로 존재
실제 데이터는 머신러닝 모델이 이해할 수 없는 형태로 되어있어 데이터 전 처리(수치형 자료로 변환)할 필요가 있다!
전 처리를 통하여 테이터의 결측값 및 이상치를 처리

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

분리를 하여야 각각의 역활에 맞게 사용 가능하다!
원본 데이터를 다 학습용으로 사용하게 된다면 평가시 결과값이 안좋아 질수 있으므로
데이터의 객관성을 위해 평가용을 꼭 따로 두기!
ex.

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

범주의 크기가 의미 없다면 명목형 자료
크기가 의미가 있다면 순서형 자료
위의 그래프에서 Pclass는 순서형 자료! 나머지는 명목형 자료
대표적인 범주형 자료 변환 방식
수치 맵핑 방식
ex. 2가지

ex. 3가지 이상

더미 기법

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


숫자로 이루어져 있는 자료
머신러닝의 입력으로 바로 사용할 수 있으나, 모델의 성능을 높이기 위해서 데이터 변환이 필요
대표적인 수치형자료 변환 방식
정규화(Normalization)
변수 값의 범위 및 크기를 변환하는 방식
변수(feature)간의 범위가 차이가 나면 사용

정규화 예시

표준화(Standardization)

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

범주화

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

이상치가 있으면, 모델의 성능을 저하할 수 있으므로 이상치는 일반적으로 전 처리 과정에서
제거하며, 어떤 값이 이상치 인지 판단하는 기준이 중요함
이상치 판단 기준 방법
통계 지표(카이제곱 검정,IOR지표 등)를 사용하여 판단
데이터 분포를 보고 직접 판단
머신러닝 기법을 사용하여 이상치 분류

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

Survived -> Label 데이터

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

Label 데이터가 수치형일시!


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

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

합계값이 둘다 동일하게 0이 나왔지만 오른쪽이 좀더 좋아보임
그래서 실제 값과 예측 값 차이의 제곱의 합으로 비교하기


- 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값을 줄일수 있는지 힌트가 되는 값

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

여러 개의 입력값(X)으로 결과값(Y)을 예측하고자 하는 경우 사용된다!
다중 선형 회귀 모델 이해하기

가정 선형관계!
단순 선형 회귀와 마찬가지로 Loss함수는 입력값과 실제값 차이의 제곱의 합으로 정의됨
-> 마찬가지로 B0 ~ Bm 값을 조절하여 Loss 함수의 크기를 작게 함

Ex.

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

실제 데이터 예시

다중 선형 회귀 특징
상관 관계 -> 두 가지 것의 한쪽이 변화하면 다른 한쪽도 따라서 변화하는 관계
Ex. RSS,MSE,MAE,MAPE,R2(R제곱)


특징
Loss 값이 커지면 RSS값이 커짐 객관적 비교불가
MSE(Mean Squared Error)
평균 제곱 오차, RSS에서 데이터 수 만큼 나눈 값
작을수록 모델의 성능이 높다고 평가할 수 있음.

회귀에서는 Loss 분류에따른 혹은 다른 문제점에는 MSE
MAE(Mean Absolute Error)
평균 절대값 오차, 실제 값과 예측값의 오차의 절대값의 평균
작을수록 모델의 성능이 높다고 평가할 수 있음.

특징
MSE: 이상치(Outlier) 즉, 데이터들 중 크게 떨어진 값에 민감함
MAE: 변동성이 큰 지표와 낮은 지표를 같이 예측할 시 유용
가장 간단한 평가 방법들로 직관적인 해석이 가능함
그러나 평균을 그대로 이용하기 때문에 입력 값의 크기에 의존적임
절대적인 값과 비교가 불가능함
회귀 모델의 설명력을 표현하는 지표
1에 가까울수록 높은 성능의 모델이라고 해석할 수 있음

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

특징

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

분류 알고리즘 으로 해결하기
주어진 입력 값이 어떤 클래스에 속할지에 대한 결과 값을 도출하는 알고리즘
다양한 분류 알고리즘이 존재하며,예측 목표와 데이터 유형에 따라 적용

항공 지연 문제 해결하기
풍속 4m/s를 기준으로 지연 여부를 나눠보기

이진트리 구조...


중간 마디 추가하기
2개 이상의 feature데이터의 경우


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

분류를 하기 에매함 3번의 yes항 떄문에
ex.
Date set A 와 B 중 불순도가 더 낮은 것은?

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

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

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

불순도별 가장 낮은 기준을 선택하는것!
지니 불순도(Gini Impurity) 적용하기

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

True Positive : 실제 Positive인 값을 Positive라고 예측(정답)
True Negative : 실제 Negative인 값을 Negative라고 예측(정답)
False Positive : 실제 Negative인 값을 Positive라고 예측(오답) - 1형 오류
False Negative : 실제 Positive인 값을 Negative라고 예측(오답) - 2형 오류
전체 데이터 중에서 제대로 분류된 데이터의 비율로,모델이 얼마나 정확하게 분류하는지 나타냄
일반적으로 분류 모델의 주요 평가 방법으로 사용됨
클래스 비율이 불균형 할 경유 평가 지표의 신뢰성을 잃을 가능성이 있음

- P:positive n:negative t:true f:false
모델이 Positive라고 분류한 데이터 중에서 실제로 Positive인 데이터의 비율
Negative가 중요한 경우
실제로 Negative인 데이터를 Positive라고 판단하면 안되는 경우 사용되는 지표

Negative가 중요한 경우
스팸 메일 판결을 위한 분류
해당 메일이 스팸일 경우 Positive, 스팸이 아닐 경우 즉,일반 메일일 경우 Negative
일반 메일을 스팸 메일(Positive)로 잘못 예측했을 경우 중요한 메일을 전달받지 못하는 상황이 발생할 수 있음.

실제로 Positive인 데이터 중에서 모델이 Positive로 분류한 데이터의 비율
Positive가 중요한 경우
실제로 Positive인 데이터를 Negative라고 판단하면 안되는 경우 사용되는 지표

악성 종양 여부 판결을 위한 검사
악성 종양일 경우 Positive
악성 종양이 아닐 경우 즉, 양성 종양일 경우 Negative
악성 종양(Positive)을 양성 종양(Negative)로 잘못 예측했을 경우 제 때 치료를 받지 못하게 되어 생명이 위급해질 수 있음

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