[TIL] 20.07.22

우주먼지·2020년 7월 22일
0

TIL

목록 보기
8/28

계획한 일

  • 정처기 3권 풀고 모의고사 5개
  • 정렬 알고리즘 작성
  • velog작성

공부한 것

엔트로피

엔트로피는 불확실한 정보를 숫자로 정량화하려는 노력이다. 정보량을 나타낸다.
이는 어떠한 사건이 일어날 확률의 역수에 로그를 취한 값이다.

엔트로피는 불확실한 정보를 수치화하는 것이므로 높은 엔트로피는 높은 불확실성을 의미한다.

교차 엔트로피 : 두가지의 확률 분포 간의 차이를 나타내는 것이다. 이는 항상 비교대상이 필요하다.
손실의 일종이며 이 값이 낮추는 방향으로 학습하는 것이 신경망의 학습 원리이다.

시그모이드를 이용하여 교차 엔트로피를 표현하는데, 이떄 x의 값이 작은 음수값일 경우 inf를 출력한다.따라서 음수일 경우와 양수일 경우 다른 식으로 표현한다.

하지만 미니배치 단위로 딥러닝을 진행하기 떄문에 음수 양수의 출력값이 랜덤으로 출력된다.

따라서 식을 변형하여, 이를 하나로 합쳐주었다.

naive bayes 분류기

베이즈 정리를 이용하여 단어의 종류를 확률로 표현하는 것이다.

캐글의 IMDB Dataset.csv를 이용하여 입력하는 문장의 긍정, 부정의 확률을 출력한다.
P(긍정|test_data) or P(부정|test_data)를 구하는 것이다.
이를 구하기 위해서 P(긍정|test_data) = P(test_data|긍정) * P(긍정) / P(test_data)

<순서도>
csv파일읽기 -> stopword제거 -> tokenize -> 단어들의 빈도수측정 -> test_data의 단어들이 있는지 확인 -> 있으면 특정 단어의 빈도수 / 전체 단어수 -> 없으면 임의의 빈도값을 정해서 같은 방식으로 계산 -> 모든 값을 다 곱해준다 -> 베이즈 정리 -> 값 비교

선형 회귀

단순 선형회귀는 변수가 하나. 다변수 선형회귀는 변수가 여러개, 다항 회귀는 2,3차 방정식과 같은 다항식으로 표현되는 그래프이다.

LinearRegression 구현

from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split

x = np.random.randn(200)
y = 2 * x + 4 + np.random.randn(200)

x_train, x_test, y_train, y_test = train_test_split(x, y) # 훈련, 테스트 데이터 나누기

model = LinearRegression() # 모델 결정
model.fit(x_train, y_train) # 모델 학습

model.score(x_test, y_test) # 테스트 데이터 정확도 확인

선형회귀와 테스트 데이터와 훈련데이터를 나눠주는 라이브러리 import
x값을 랜덤으로 생성하고 가중치를 2, 편향을 4로 임의로 정해주었다.
훈련데이터와 테스트 데이터를 나눠준후, 모델에 훈련데이터를 학습시켜준다.
테스트 데이터로 정확도를 확인한다.

sort

삽입정렬 : 내 위치의 다음 요소와 값을 비교하여 앞에 값이 작으면 나와 위치를 바꿔준다. 하나의 원소가 끝나면, 제일 앞의 요소를 제외한 나머지 요소로 다시 진행한다.

선택정렬 : 리스트에서 제일 작은 값을 찾아 제일 앞에 값과 교환한다. 그 후, 제일 앞의 값을 제외하고 다시 최소값을 찾아 두번째 값과 바꿔준다. 이를 반복한다.

버블 정렬 : 인접한 두 값을 계속 비교한다. 0과1, 1과2, ...이런식으로 n-1과n까지 진행하면 된다.

이 세 정렬은 모두 n^2의 시간 복잡도를 가진다.

느낀점

  • 점점 어려워지는데 시간이 없고 너무 피곤하다.
  • 정처기가 끝나야하는데 정처기가 자신이 없다.
  • 딥러닝이랑 자연어처리는 이해하기가 어렵다. 복습이 많이 필요해보이는데 혼자하는게 생각보다 힘드네 ㅎ
profile
안녕하세요 ㅎㅎ

0개의 댓글