[Data]/[Data Science]

    [Data Science] TF-IDF란?

    [Data Science] TF-IDF란?

    TF-IDF를 알기 이전에 DTM부터 알아보겠습니다.  DTM(Document-Term Matrix, 문서 단어 행렬)  다수의 문서에서 등장하는 각 단어들의 빈도를 행렬로 표현한 것을 의미합니다.  문서1: "나는 고양이를 좋아합니다."문서2: "나는 개를 싫어합니다."  단어나는고양이를좋아합니다개를싫어합니다문서111100문서210011  TF-IDF(Term Frequency-Inverse Document Frequency)  단어의 빈도(TF)와 역 문서 빈도(IDF)를 사용하여 DTM 내의 각 단어들마다 중요한 정도를 가중치로 주는 방법 - 위키독스  *모든 문서에서 등장하는 단어는 중요도가 낮고, 특정 문서에서만 등장하는 단어는 중요도가 높습니다.  tf(d, t): 특정 문서 d에서 특정단어 ..

    [Data science] 문장 유사도 분석을 위한 Levenshtein Distance(편집거리 알고리즘) 행렬 구하기

    [Data science] 문장 유사도 분석을 위한 Levenshtein Distance(편집거리 알고리즘) 행렬 구하기

    두 문장의 유사도를 알기 위해 "레벤슈타인 거리"라는 알고리즘을 사용할 수 있습니다. 대학시절 이산수학 과목에서 배웠는데 잊어버리기도했고 문장 유사도 분석을 해야하기 때문에 다시 정리할까 합니다. 이러한 공식을 가지고 있다고 합니다. 하지만 너무 어려우니 저는 매트릭스에 값 채우는 법만 빠르게 알아보겠습니다 레벤슈타인 알고리즘은 2차원 매트릭스를 생성하는데 비교하는 글자의 수에 따라서 정방행렬이 될 수도 있고, 아닐 수도 있습니다. 비교하려는 두 개의 문자 또는 문장의 길이가 같으면 정방행렬, 그렇지 않다면 정방행렬이 아니게 됩니다. 규칙은 간단합니다. 2차원 매트릭스의 행과 열을 a[i], b[j]라 할때 a[i] == b[i]이면 왼쪽 위 대각선 값을 그대로 가져오고, 그렇지 않으면 왼쪽, 위쪽, 왼..

    [머신러닝] 로지스틱 회귀(Logistic Regression)에서 모델 학습 과정

    [머신러닝] 로지스틱 회귀(Logistic Regression)에서 모델 학습 과정

    로지스틱 회귀는 어떠한 과정을 거치며 학습할까? 분류 문제를 해결하는 대표적인 모델인 로지스틱 회귀(Logistic Regression)의 학습 과정에 대해 알아보자. 그 전에 몇 가지 사전 지식을 점검하고자 합니다. 1. 머신 러닝에서 문제는 크게 2가지로 나뉘게 되는데 "분류(Classification)"와 "회귀(Regression)"로 구분합니다. 분류 문제는 "이산적인(class)" 결과를 예측하는 문제, 회귀 문제는 "연속적인(continuous)" 결과를 예측하는 문제로 정의할 수 있습니다. 예시를 들자면 분류 문제는 수신된 이메일이 스팸 메일인지 아닌지, 암 의심 환자의 종양이 양성인지 악성인지 등을 예측합니다. 또한 회귀 문제는 주택 가격 예측, 온도 예측, 판매량 예측 등을 예측합니다...

    [머신러닝] MinMaxScaling 한 데이터를 히스토그램으로 확인하기

    [머신러닝] MinMaxScaling 한 데이터를 히스토그램으로 확인하기

    MinMaxScaling을 하면 0~1 사이의 값으로 데이터의 값이 조정됩니다. 데이터의 조정된 값을 그래프로 확인해 보겠습니다. wine = pd.read_csv('https://bit.ly/wine_csv_data') wine.head() data = wine[['alcohol', 'sugar', 'pH']].to_numpy() target = wine['class'].to_numpy() from sklearn.model_selection import train_test_split train_input, test_input, train_target, test_target = train_test_split(data, target, test_size=0.2, random_state=42) from skl..

    [머신러닝] 확률적 경사 하강법 & 그리드 서치

    [머신러닝] 확률적 경사 하강법 & 그리드 서치

    확률적이란 말은 '무작위하게' 또는 '랜덤하게'의 기술적 표현 '경사'는 기울기를 의미 / '하강법'은 내려가는 방법 경사 하강법 = 경사를 따라 내려가는 방법 확률적 경사 하강법의 종류 1. 확률적 경사 하강법(Stochastic Gradient Descent, SGD) 매 반복 마다 훈련 세트에서 랜덤하게 하나의 샘플을 선택하여 모델을 업데이트 장점: 빠르다 단점: 노이즈가 심하게 발생할 수 있고, 수렴이 불안정할 수 있다. 2. 미니 배치 경사 하강법 매 반복 마다 훈련 데이터를 여러개의 샘플 데이터인 작은 미니 배치로 나누고, 각 미니배치에 대해 모델을 학습 장점: SGD보다 안정적이며, 병렬 처리가 가능하므로 속도가 빠르다. 단점: SGD보다 노이즈가 작지만, 여전히 존재 가능 3. 배치 경사 ..

    [머신러닝] 생선 데이터와 KNN분류를 이용한 모델 학습 예시

    [머신러닝] 생선 데이터와 KNN분류를 이용한 모델 학습 예시

    KNN 분류 모델의 사용 예시를 알아보겠습니다. 데이터를 받아옵니다. import pandas as pd fish = pd.read_csv('https://bit.ly/fish_csv_data') fish.head() 물고기의 '종'을 타겟으로 하고 나머지 컬럼을 입력값으로 하는 분류 모델을 만들 생각입니다. 타겟 값의 유니크 값부터 확인해 보겠습니다. fish['Species'].unique() >>> array(['Bream', 'Roach', 'Whitefish', 'Parkki', 'Perch', 'Pike', 'Smelt'], dtype=object) 종의 개수가 7가지 됩니다. fish_input 같은 경우 .to_numpy()를 이용하면 2차원 배열이 됩니다. fish_input = fish..