오늘은 과제 제출 일정이 2일 밖에 남아있지않아 

 

과제 발표 대본을 짜고 팀원분들 앞에서 발표를 진행해보며 완성도를 높이는 시간을 가졌다.

 

오늘 목표는 대본을 최대한 빨리 짜서 다른 학습을 진행해 보려했으나 대본짜는게 괴장히 늦어지고 수정을 진행하면서 시간을 너무 많이 사용해서 학습을 많이 진행하지 못했다.

 

오늘 학습내용 소개 순서는

 

1. 과제를 마무리하며 알게 된 내용

 

2. 기초 수학 특강

 

3. 회고 

 

순서로 진행하겟습니다.


☑️과제 발표 준비

지금까지 과제를 준비하며 많은 부분을 학습하게 되었다고 생각했지만

 

좁은 학습분량인 과제 분량에도 아직 모르는 것들이 존재했고 머신러닝 학습에 대한 평가를 하는게 새롭게 느껴졋다.

 

1. 최빈값 mode를 사용할때[0]의 역할

- fillna(df.mode()[0])에서 [0]의 역할은 최빈값의 가장 첫 번째 값을 최빈값으로 설정하겟다고 설정하는 것이다.

 

2. Logistic Regrection의 모델 생성시 설정

model = LogisticRegrection(max_iter=100)

- max_iter=100의 의미는 학습을 최대 100번 반복으로 설정하는 코드입니다.

- 최대반복 수를 설정하는 이유는 데이터셋의 크기가 클수록 크게 설정해야하는 것이 맞지만 학습이 오류가 나서 학습을 멈춰버리는 경우가있어서 적절한 값을 설정해주어야 한다.(기본값은 100)

 

3. RandomForest의 모델 생성시 설정

model = RandomForest(random_state=42)

- random_state를 설정하는 이유는 모델 생성에서 결과를 일관되게 재현 및 비교하기 위해 랜덤 스테이트를 설정하는 것

 

4. XGBoost의 모델 생성시 설정

model = XGBoost( use_label_encoder=False, eval_metric='logloss')

- use_label_encoder=False룰 설정하게 되면 LabelEncoding을 사용했을 때 나올 수 있는 경고 메세지를 무시해준다.

- eval_metric='logloss'는 로그 손실 값을 계산하고 출력하여 학습상태를 확인 할 수 있다.

 

5. Classification_report 해석

우선 Classification의 요소로는

예측하는 값들을 개별 클래스로 나누어 준다

precision (정밀도): 진행한 예측이 얼마나 정밀하게 예측이 되었는지 보여 준다.

recall(재현율): 모델을 학습할 때 실제 계산과 테스트 계산이 얼마나 잘 이루어 졌는지 확인한다.

f1-score: 정밀도와 재현율의 균형 조화 점수를 보여준다.

support: 학습을 진행할 때 몇 개의 값들을 사용했는지 보여준다.

Macro avg: 두 클래스의 평균 성능을 동일한 가중치로 평가한 값 

Weighted avg: 각 클래스의 샘플 수에 따라 가중치를 적용해 계산된 평균 성능 

 

6. confusion_metrix 해석 방법

[[89, 16],

[16, 58]]

89 = 첫 번째 클래스를 정확하게 예측한 수

16 = 첫 번째 클래스를 두 번째 클래스로 잘못 예측한 수

16 = 두번째 클래스를 첫 번째 클래스로 잘못 예측한 수

58 = 두번째 클래스를 정확히 예측한 수

결론: 첫번째 클래스에 대한 예측은 성능이  좋고 두 번째 클래스 예측 또한 좋지만 첫 번째 클래스 예측이 더 성능이 좋다. 

 

 


☑️기초 선형 대수학(행렬과 연산)

스칼라(온도, 길이, 질량)

- 크기만있고 방향은 없다.

- 물리적 단위를 포함 할 수 있음

- 일반적으로 실수로 표현

 

벡터(힘, 속도, 위치)

- 벡터는 크기와 방향으로 데이터를 표현

- 벡터의 표현: 열의 형태로 나타냄

- v1, v2는 벡터의 성분이며 각 차원별 크기

 

벡터의 연산

- 벡터의 덧셈과 뺄셈: 같은 서분끼리 더하거나 뺌 a +b = (a1 + b1, a2 + b2....)

- 스칼라 곱: 벡터와 숫자의 곱으로 벡터 성분에 숫자를 곱함 k*a = (k*a1, k*a2...)

- 벡터의 크기: 벡터의 길이를 나타내는 스칼라 값 a = (a1제곱,a2제곱,...an제곱)

- 벡터의 내적: 주 벡터 사이의 관계를 나타내는 연산으로, 두 벡터를 곱해서 하나의 숫자(스칼라)를 구하는 방법

- 코사인 유사도: 두 벡터가 이루는 각도의 코사인 값을 이용해 벡터 간의 유사성을 특정하는 방법(값이 1에 가까울수록 두 벡터는 동일한 방향, 값이 0이면 두 벡터는 서로 수직, 값이 -1에 가까울수록 두 벡터는 반대 방향)

 

Word Embedding: 충분히 잘 학습되었다면 단어에 대한 연산이 가능

 

코사인 유사도 활용

-문서 유사도 측정: 텍스트 데이터에서 단어의 빈도를 벡터로 표현하고, 문서간의 유사성을 측정

-이미지 검색: 이미지의 특징 벡터를 비교하여 이미지를 찾거나 분류할 때 사용

-추천 시스템: 사용자와 아이템의 특징을 벡터로 나타내어, 유사한 사용자나 아이템을 찾아 비슷한 특징을 가진 사람들 끼리 매칭 혹은 아이템 추천

 

행렬(벡터에서 차원을 늘린 것)

숫자나 변수들을 직사각형 형태로 배열한 것, 행과 열로 구성 됨

 

- 행렬의 덧셈과 뺄셈: 같은 위치의 요소끼리 더하거나 뺌(두 행렬의 크기가 같아야한다.)

- 행렬의 스칼라 곱: 행렬의 모든 요소에 스칼라 값을 곱한 결과 

- 전치 행렬: 행과 열을 바꾼 행렬

- 행렬의 곱셈: 원소 계산(각 행의 원소와 열의 원소를 곱한 후 더함), 행렬 곱의 조건(A가 m*n 행렬이고 B가 n*p행렬일 때, A의 열수와 B의 행수가 같아야하고, 이경우 곱셈AB는 m*p행렬을 만듦)(행렬곱셈도 내적으로 이루어져이싸고 이해하면 편하나)

특수행렬

- 단위행렬: 대각선의 원소가 1이고 나머지가 모두 0인 정방행렬 A*I = A, I*A = A

- 영행렬: 모든 원소가 0인 행렬 A + 0 = A

- 대각행렬: 주대각선에만 원소가 존재하고, 나머지 원소는 모두 0인 행렬(행렬 곱 연산이 비교적 단순하며, 대각선 원소끼리만 연산에 영향을 줌)

 

행렬의 활용

- 데이터 분석: 평균, 표준펴차 등 통계저 수치를 구할 때 각 열의 값을 기반으로 연산을 수행, 행렬의 곱셈을 사용해 데이터를 변환하거나, 피처(변수)들의 상관관계를 계산하여 데이터의 패턴을 분석, 주성분 분석(PCA) 같은 방법을 통해 다차원 데이터를 저차원으로 축소할 때도 행렬 연산이 활용됨

- 이미지 처리: 픽셀 값으로 이루어진 2차원 행렬로 표현됨

- 딥러닝에서 뉴런의 활성화 값을 결정(행렬 연산은 입력 데이터와 가중치를 처리하는 기본적인 방법)

 


☑️ 회고

오늘 발표 준비를 완료하였고 제출 기간 전까지 발표자료의 완성도를 높이는 시간과 도전과제에 대한 내용을 정리해야할 듯하다.

 

학습을 따로 진행하지 못해 조금 아쉬운 날이였지만 밀리진 않았지만 밀린듯한 느낌을 주던 필수과제를 마무리해서 속은 시원하다.

 

선형 대수학은 처음 들어보는 단어들이 매우 많아서 이해는 못하였지만 아 저런 수학 공식들을 사용해서 딥러닝모델이 학습을 진행하는구나 아직은 먼 이야기같아 보이니 딥러닝 코드들이 어떤 기능을 가지는지에 대해서 학습하고 수학에 대한 공부를 진행해야겟다.

 

이제는 이해되는 것보다 저게 뭐지 저런 것이 있구나하는 내용들이 많아서 감이 안잡히기 시작해 현타가 살짝 오지만 전문가는 아니더라도 코드를 보고 이해하고 잘못된 부분을 보면 어떻게 왜 잘못된 것인지 알 수 있을 때까지 노력하고싶다.

+ Recent posts