book_만화로 쉽게 배우는 머신러닝
사실 이거 만화임ㅎ...그래서 간신히 봤지
암튼 대강이라도 안다는 게 중요하지 따봉
그래도 나름 모아보니 내용은 많네
함 훑어나 바유~
입력 데이터를 바탕으로 예측모델을 구축, 학습 하는 프로그램
크게보면 데이터 마이닝도 포함됨
데이터 마이닝 ?
: 빅데이터에서 유의미한 경향을 찾는 것
요지피셜
'회귀' 뜻이 뭔가 항상 궁금했는데, 수학 회귀 이론 발견? 만든? 가설이
부모와 자녀의 키사이에는 선형적인 관계가 있는데, 이 관계들을 모아보면 결국 전체 키 평균으로 돌아가려는 경향 이 있다는 거임.
결국,
" 어떤 값(x) 에 따라서 결과 값(y)이 일정하게 도출되는 것 "
이걸 수식으로 만들 수 있으면 회귀임
회귀 문제
분류 문제
데이터를 분류하는 과정
데이터 정리 (빠지거나 보정 필요한 것들)
데이터 클래스 예측 (음성, 문자의 인식, Positivie/Negative 판정 등 정례와 비정례 값으로 구분함)
로지스틱 분류 (입력 가중치를 조정해서 정례.비정례를 수치로 만듬, 회귀분류임)
결정나무
트리 구조처럼, 노드와 리프로 표현하고,
정례인 리프 값으로 가는 노드(조건들)들을 AND 로 결합하면 논리식이 됨
노드를 어떻게 짜야 효율적일까?
-= 불순도와 정보량을 이용하여 수치화함
불순도 : 어느 데이터 집합에서 y/n 값이 나오는 경우를 맞히기 어려운 정도 (클래스 분류가 안 되어있을 경우)
정보량 : 어느 데이터 집합으로부터 y/n 결과로 얻어진 정보양 (유의미한 정보 양)
트리가 짧고 단순할수록 우연일 확률이 낮아짐
Overfitting 을 주의해야 함 (결정나무에서 학습 데이터에 지나치게 적응해 있어서, 새로운 데이터를 넣어도 원하는 답으로 뽑아낼 수 있음)
분류 모델의 학습 데이터 정확도가 100%이어도, 테스트 데이터로 평가하지 않으면 의미가 없다.
→ 미지 데이터의 성능을 구하기 위해, Raw data 구분해서, 테스트 데이터를 남겨둬야 함
Raw data 구분하기
성능을 평가하는 방법
Negative : 적합하지 않은 데이터
Positive : 적합한 데이터
정확성, 정밀도, 재현률을 종합적으로 따지기 위한 값 = F1 Score
F1 Score x (Precision x Recall / Precision + Recall)
요지피셜
이 수식을 조화평균이라고 하는데, 그냥 산술평균 (a+b/2) 이 안되는 이유는,
평균적인 변화율 을 구해야 하기 때문임.
(왔다 갔다의 평균속도 구할 때 속도/2 하면 안되는 것 처럼)
정확성(Accuracy)
: 전체 결과 중, 올바른 예측이 얼만큼이었나
TP+TN / (TP +TN+FP+FN)
eg) 30+40 / (30+20+10+40)
정밀도(Precision)
: 긍정으로 예측한 것 중에, 실제 긍정이 얼만큼인가
= TP / (TP+FP)
eg) 30 / 30+10
재현률 (Recall)
: 실제 긍정 중에, 긍정 예측된 게 얼만큼인가
= TP / (TP+FN)
eg) 30 / 30+20
생물세포의 뉴런처럼 서로 시냅스를 통해 신호를 주고 받음
이런 모델 유닛들이 연결된 것이 뉴럴 네트워크 모델
3개의 층으로 구성됨 (실제로 수치 계산을 하는 건 은닉, 출력 층만)
뉴럴 네트워크 모델은 앞으로만 진행함 (출력 쪽으로만 연결되어있어서 입력 쪽으로 돌아가는 피드백이 없음)
뉴럴 네트워크의 계층을 심화하는 게, 딥 머신러닝
은닉층을 여러 층으로 만들기 (은닉 1 → 은닉 2 → ...)
은닉층에 적용가능한 태스크 늘리기 (노드 여러개, 모든 노드로 전파)
→ 이러면서 기울기가 0에 가까워져 무의미한 결과가 나옴 (학습을 하지 않음)
딥 러닝에 필요한 처리 (위 문제를 해결하기 위한 방법)
(앙상블 학습의 목표)
버깅
학습데이터에서 복원 추출해서 다시 학습데이터로 씀
이 학습데이터가 계속 선택되지 않을 확률 = (1-1/n)n승 = 1/e = 0.368..
→ 학습이 몇 번이든 약 30%의 데이터는 포함되지 않음
랜덤 포레스트
여러개의 분류 트리가 학습 데이터의 특징을 랜덤으로 선택해서 다른 트리를 만듬
부스팅
오류 줄이는 거에 특화된 분류 모델을 여러개 추가함
비지도 학습의 하나
유사한 데이터를 묶고, 각 그룹 간 경계를 짓는 것
클러스터링 방식
계층적 클러스터링
분할 최적화 클러스터링
데이터 분할의 좋음을 평가하는 함수를 정하고, 그 함수 값이 가장 좋은 걸 모델링 함
수법
k-means
각 클러스터의 평균 벡터 k개를 난수로 생성해서,
각 클러스터 중심으로 가까운 데이터를 흡수함, 평균 벡터가 움직이지 않을 때까지 반복
→ 국소적인 결과를 얻고 모델 학습을 중지할 위험도 있음
EM 알고리즘
각 클러스터에 k개의 정규 분포를 난수로 정해서,
적당한 비율로 각 클러스터에 계산해보고, 완만하면 소속함
원래 데이터 행렬 : N명의 사용자가 M종류의 상품을 구입한 데이터 → N x M = K
1에서 쪼갠 사용자 정보 : N x K = u
1에서 쪼갠 제품 정보 : M x K = v
원본과 오차가 최대한 적게, K = uv
노션에서 써서 수식이 뒤죽박죽이지만, 아무튼 됐다.
하 잔다 이제
ㅂ2