범주형 데이터를 수치 데이터로 변환하는 일반적인 방법 중 하나로 One-Hot Encoding이 있습니다.
각 범주를 이진 벡토로 표현하는 방법 중 하나로 벡터의 길이가 범주의 수와 동일합니다.
범주의 수가 많을 수록 백터의 차원이 커지게 됩니다.
500개의 범주가 있을 경우 길이가 500개의 길이를 가진 벡터가 생성됩니다.
또한 대부분의 값이 0으로 채워져 있기 때문에 대용량의 데이터를 처리할 경우 계산 속도가 느리다라는 단점이 있습니다. 고차원의 데이터일수록 모델이 학습해야할 매개변수가 증가하기 때문에 계산 속도가 느려집니다.
TF-IDF는 Term Frequency-Inverse Document Frequency로 문서 내 단어의 중요도를 평가하는 지표입니다.
범주 데이터는 주로 자연어의 형태를 띄며, 자연어 데이터와 유사한 구조를 가지고 있기 때문에 TF-IDF는 특징벡터를 표시하는데 사용이 됩니다.
TF-IDF는 문서 내에서 많이 나온 단어의 중요도는 높게, 많은 문서에서 등장하는 조사 등의 단어의 중요도는 낮게 평가합니다.
docs = [
"The horse is in the house",
"The cat and dog play together",
"The dog is in the house"
]
# Sklearn 패키지 활용
from sklearn.feature_extraction.text import TfidfVectorizer
vectorizer = TfidfVectorizer()
tfidf_matrix = vectorizer.fit_transform(docs)
tfidf_array = tfidf_matrix.toarray()
tfidf_array
# 데이터 프레임 변환
feature_names = vectorizer.get_feature_names_out()
tfidf_df = pd.DataFrame(tfidf_array, columns=feature_names)
tfidf_df
feature_names
# tf-idf 행렬 출력
tfidf_df
SAS에서 텍스트 마이닝을 수행하기 위해서는 SAS Text Miner 또는 SAS Enterprise Miner와 같은 모듈을 사용하시면 됩니다.
Don’t miss the livestream kicking off May 7. It’s free. It’s easy. And it’s the best seat in the house.
Join us virtually with our complimentary SAS Innovate Digital Pass. Watch live or on-demand in multiple languages, with translations available to help you get the most out of every session.