샘플에 대응하는 예측값(타깃)의 정답을 제공하는 방식
샘플이 문서면 타깃은 범주형 레이블
목적 : 주어진 데이터셋에서 손실 함수를 최소화하는 파라미터 값을 고르는 것 👉 경사 하강법 사용
<동작 과정>
1. 샘플을 파라미터를 가진 모델에 넣으면 예측을 합니다.
2. 예측한 값과 타깃이 손실함수를 거치고, 거기서 나온 손실로 파라미터를 업데이트 합니다.
파라미터를 반복적으로 업데이트하는 과정을 역전파,
예측값과 타깃으로 손실함수를 계산하는 과정을 정방향 계산,
손실로 파라미터를 업데이트 하는 과정을 역방향 계산 이라고 합니다.
✔ GD와 SGD의 절충안으로 나온 것이 미니 배치 확률적 경사 하강법 (MSGD)
from sklearn.feature_extraction.text import CountVectorizer
import seaborn as sns
corpus = ['Time flies like an arrow.',
'Fruit flies like a banana.']
one_hot_vectorizer = CountVectorizer(binary=True)
one_hot = one_hot_vectorizer.fit_transform(corpus).toarray()
vocab = one_hot_vectorizer.get_feature_names()
sns.heatmap(one_hot, annot=True,
cbar=False, xticklabels=vocab,
yticklabels=['Sentence 1', 'Sentence 2'])
👉 문장이나 단어에 상응하는 원소를 1, 상응하지 않는 원소를 0 으로 표현 (CountVectorizer 클래스는 글자 하나로 이루어진 단어는 무시하기 때문에 a 단어는 히트맵에 나오지 않는다.)
IDF 표현 (Inverse-Document-Frequency : 역문서 빈도)
TF-IDF 표현
from sklearn.feature_extraction.text import TfidfVectorizer
import seaborn as sns
corpus = ['Time flies like an arrow.',
'Fruit flies like a banana.']
tfidf_vectorizer = TfidfVectorizer()
tfidf = tfidf_vectorizer.fit_transform(corpus).toarray()
sns.heatmap(tfidf, annot=True, cbar=False, xticklabels=vocab,
yticklabels = ['Sentence 1', 'Sentence 2'])
🤔 왜 이런 숫자가 나올까?
-> heatmap의 Sentence 1에서 flies와 like의 값은 0.3552를 반올림한 값이 0.36