[머신러닝]
[머신러닝] 회귀(Regression) 모델과 성능지표
1. 회귀 모델 독립 변수와 종속 변수 사이의 관계를 파악하여 특정 변수 값을 예측하는 통계적 기법, 쉽게 말해 과거의 데이터를 기반으로 미래의 값을 예측하는 모델입니다. 주식 가격 예측, 주택 가격 예측 등에 사용됩니다. 회귀 모델은 각 특성이 동일한 중요도와 스케일을 가지고 있다고 가정하여, 모델 학습을 수행합니다. 그래서 전처리(preprocessing)과정에서 minmaxscaling보다는 표준화(standardization)가 더 적합합니다. 이상치 때문인데 minmax는 이상치가 존재할 경우 0~1 사이로 압축되는 과정에서 극단적인 값들이 모델에 큰 영향을 줄 수 있습니다. 표준화는 평균과 표준편차를 사용하기 때문에 이상치가 있더라도 분포를 균일하게 유지할 수 있게 해줍니다.(데이터와..
[머신러닝] 혼동행렬(Confusion Matrix)과 성능지표
머신러닝 분류 모델의 성능을 평가할 때 주로 사용되는 개념인 혼동행렬과 성능지표들에 대해서 알아보겠습니다. 가끔 보는 내용이라 매번 헷갈리기 때문에 이번에 정리해보려 합니다. 1. 혼동행렬(Confusion Matrix) 혼동행렬(Confusion Matrix)는 다음과 같이 생겼습니다. 모델이 객체를 분류할 때의 예측한 결과와 실제 결과를 비교하여 분류 모델이 얼마나 잘 작동하는지 보여줍니다. *TP(True Positive, 참 긍정): 실제 "긍정(True) 클래스"인 샘플을 모델이 "긍정 클래스"라고 정확히 예측한 수*TN(True Nagetive, 참 부정): 실제 "부정(Negative) 클래스"인 샘플을 모델이 "부정 클래스"라고 정확히 예측한 수*FP(False Positive,..
[머신러닝] 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에서 특정단어 ..
[머신러닝] 문장 유사도 분석을 위한 Levenshtein Distance(편집거리 알고리즘) 행렬 구하기
두 문장의 유사도를 알기 위해 "레벤슈타인 거리"라는 알고리즘을 사용할 수 있습니다. 대학시절 이산수학 과목에서 배웠는데 잊어버리기도했고 문장 유사도 분석을 해야하기 때문에 다시 정리할까 합니다. 이러한 공식을 가지고 있다고 합니다. 하지만 너무 어려우니 저는 매트릭스에 값 채우는 법만 빠르게 알아보겠습니다 레벤슈타인 알고리즘은 2차원 매트릭스를 생성하는데 비교하는 글자의 수에 따라서 정방행렬이 될 수도 있고, 아닐 수도 있습니다. 비교하려는 두 개의 문자 또는 문장의 길이가 같으면 정방행렬, 그렇지 않다면 정방행렬이 아니게 됩니다. 규칙은 간단합니다. 2차원 매트릭스의 행과 열을 a[i], b[j]라 할때 a[i] == b[i]이면 왼쪽 위 대각선 값을 그대로 가져오고, 그렇지 않으면 ..
[Numpy] argsort()
파이썬의 넘파이 라이브러리에는 argsort()라는 정렬함수가 있습니다. 일반적인 정렬함수와 약간 차이가 있는데요. 주어진 배열의 요소를 정렬한 후 정렬전 인덱스를 반환해 주는 것이 특징이며 오름차순이 기본값입니다. 직접 코드로 확인해 보겠습니다. import numpy as np arr = np.array([3, 1, 2, 5, 4]) print(np.argsort(arr)) >>> [1 2 0 4 3] 0 1 2 3 4 >> 인덱스 ↓ ↓ ↓ ↓ ↓ 3 1 2 5 4 >> 배열요소 정렬되면 1 2 3 4 5로 정렬이 될텐데, 그에 맞춰 인덱스도 정렬되어 1 2 0 4 3이 되어 출력됩니다. 추가) .argsort()[::-1]로 작성해 내림차순으로 정렬해 역순으로 가져올 수도 있으며 많이 사용되는 방..
[Pandas] 판다스 2.0 버전 이상 원-핫 인코딩 표시 문제 해결
저의 판다스는 2.1.3 버전입니다. 23년 12월 3일 기준 최신 버전인데, 원-핫 인코딩 시 불편한(?) 문제가 생기게 됩니다. 바로 정수가 아닌 문자(bool)로 표현된다는 것 입니다."satisfaction_dissatisfied" 컬럼 부터 True or False로 표현됩니다. 이전 버전의 판다스는 이러지 않았는데 불편하다고 생각합니다. 미관상 숫자로 통일하고 싶죠. 또한 타입도 boolean타입이 됩니다. df.info()를 이용해 확인해 보았습니다. 그럴 때 방법이 있습니다. 단순합니다. "곱하기 1"을 해주면 됩니다. 이전과 다르게 "satisfaction_dissatisfied" 부분 부터 정수로 변한 것이 보이시나요? True or False가 1 or 0으로 변경되었습니다. d..