머신러닝 / 딥러닝 프로세스 (데이터분석)
1. 데이터 수집,가공,적재(ETL, 추출(Extract), 변환(Transform), 로드(Load))
2. EDA(탐색적 데이터 분석)
3. 전처리(모델 학습에 input으로 쓸 수 있게 가공하는 작어을 필수로 포함 + Feature Engineering)
4. 모델링
5. 모델 학습/평가
6. 실제 예측/시각화
NLP(자연어처리) 프로세스
1. 데이터 -> 텍스트
2. EDA(게시글)
3. 전처리(문장 토큰화, 단어 토큰화 -> 품사부착 -> 원형복원(어간추출, 표제어추출) -> 불용어처리)
4. 모델링(키워드 추출, 문서요약, 감성분석, 토픽모델링, 문서분류)
5. 모델학습
6. 실제 예측 / 시각화
다양한 형태소 분석기
Kkma 토큰화 꼬꼬마
# n-gram이 가지는 의미
: 문맥적인 의미를 제한적으로 판단 가능
bigram = ngrams(tokens, 2, pad_left=True, pad_right=True, left_pad_symbol="SS", right_pad_symbol="SE")
token = 2개
pad_left, right = SS, SE => 패딩 주는 느낌
단어의 표현(숫자화)
- 원핫인코딩
단어 수(유니크한 값)가 늘어나는 만큼 차원의 수가 늘어남
원핫인코딩을 쓸 수 있는 데이터 유형 : 상의/하의/신발
- 라벨인코딩
라벨인코딩을 쓸 수 있는 데이터 유형 : S M L XL XXL
사이즈처럼 증가하는 형태의 카테고리형(범주형) 데이터
원핫 인코딩 로직 작성하기
사이킷런 쓰지말고 로직구현하래
유사도 : 두 개의 벡터가 얼마나 가깝냐
원핫인코딩은 코사인 유사도가 0이 나옴
-> 코사인 유사도는 1에 가까울수록 유사하다고 판단
보통, 거리를 측정할 때 유클리디언 거리(피타고라스)
-> 거리가 가까울수록 유사하다고 판단
ex)
원숭이 100
바나나 010
코사인유사도 -> 0
유클리드유사도 -> 루트2
바나나 사과(010, 001) -> 코사인 : 0, 유클리드 : 루트2
사람 바나나(0001, 0100) -> 코사인 : 0, 유클리드 : 루트2
=> 원핫인코딩 특성상 의미를 담지 못함
자카드 유사도
합집합에 대한 교집합 비율
ex)
A = 나는 / 책을 / 봤다
B = 나는 / 여행을 / 갔다
AUB = 나는 책을 여행을 봤 갔
A교B = 나는
=> 1/5
코사인 유사도
같은 방향을 바라볼땐 기울기 차이 0 (코사인유사도 0)
다른 방향 바라볼땐 기울기 차이 180 (코사인유사도 -1)
TF-IDF
단어의 빈도-역문서 빈도
단어가 다른 문서에 등장했는지 안했는지
다른 문서에 등장안하고 내 문서에만 등장하면 높은 점수 줌
역문서 빈도가 높다 : 다른 문서에서는 잘 등장하지않았다.
총 13개 문서 중
5개 문서에서 등장
df = 5/13
idf = 13/5
13개 문서 중
9개 문서에서 등장
df = 9/13(5개 등장했을 때 보다 커짐)
idf = 13/9(상대적으로 작아짐)
IDF 계산 시 log를 씌우는 이유
: 총 문서 수가 많아지는 경우 IDF 값이 기하급수적으로 커지기 때문
토큰1의 표현(벡터) : (0.03, 0.01, 0.05)
벡터 : 스칼라를 여러개 모은 것
스칼라 : 그냥 숫자
=> 벡터는 숫자를 여러개 모은 것
N-gram
Out of vocabulary : 단어사전에 등장하지않는 문제
단어 임베딩
word representation : 단어 자체만 보는게 아니라 주변에는 어떤 단어가 있는지 확인
실습
원핫인코딩 로직
1은 핫함! 핫한게 하나!
자료형을 타이핑한다.
리스트를 넣으면 ndarray 형태가 나오는구나.
np.eye는 중복된 단어가 생길 경우를 고려하지 못함
실습...
문서의 표현
TF-IDF
BOW(Bag of Words)
TDM
알고리즘 코드
1. 어떤 것을수행해야하는지 말로 풀어서 표현 - 수도코드
조건/반복 - 제어문 잘 사용
제어문 한글로 잘 표현하기
ex) 문서를 하나씩 돌면서, 데이터프레임에서는 컬럼을 돌면서 sum하고.. 이런식으로
컴퓨터가 이해할 수 있게 표현
2. 파이썬이 할 수 있는 것/없는 것을 명확히 알고 있기
'새싹일지' 카테고리의 다른 글
0819 새싹일지 (0) | 2024.08.19 |
---|---|
0731 새싹일지 (0) | 2024.07.31 |
SQL, 크롤링, 머신러닝, 딥러닝 (5) | 2024.07.25 |
0723 새싹일지_오전 (2) | 2024.07.23 |
0722 새싹데이 (9) | 2024.07.23 |