[TIL] 20.07.23

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

TIL

목록 보기
9/28

계획한 일

  • 정처기 수제비 모의고사 풀어보기
  • 오늘 배운 내용 정리해서 velog
  • 나이브베이즈 실행 성공시키기
  • sort 알고리즘 작성

공부한 것

naive Bayes 분류기

어제 짠 코드를 활용하여 한국어 단어 분류기를 만들었다.

여기에서 ratings_test.txt파일을 이용하여 학습을 진행했다.
같은 방법으로 진행하나 이 파일은 txt파일이고, 구분되어 있지 않으므로, 리뷰 코드, 문장, 긍정\부정을 다른 방식으로 잘라서 분류해주었다. 그외의 방식은 동일하게 진행한다.

  1. 파일에서 문장 읽어와서 긍정 부정 문장으로 나눠서 저장
  2. 문장의 STOP WORDS를 제거하고, tokenize진행
  3. 스트링 형태의 단어들을 모두 모다 리스트 형태로 변환.
  4. 테스트 데이터도 3,4 과정을 거쳐 리스트 형태로 변환
  5. 테스트 데이터의 한 단어가 훈련데이터의 단어에 있는 지확인
    6-1. 있으면 이 단어의 빈도수/전체 단어의 개수를 로그값으로 구한다(너무 값이 작아지는 것을 방지)
    6-2. 없을 경우 이 단어가 나올 확률을 임의로 정해 같은 방식으로 로그값을 구한다.
  6. 6의 과정을 테스트 데이터의 모든 단어의 로그값을 더해준다.(로그값은 더한게 곱한거)
  7. 구한 값을 베이즈 정리에 의해 긍정 혹은 부정일 확률을 더해준다.
  8. 원래 값으로 돌리기 전에 비율을 측정하는 것이므로, 부정 혹은 긍정의 값 중 더 큰값을 0으로 만든다.
  9. 9의 값을 지수화하여 원래의 값으로 되돌려준다.
  10. 10에서 구한값으로 확률을 계산하여 출력

Ridge, Lasso Regression

다중 선형회귀 모델은 과적합이 일어날때가 있다.
따라서 정규화를 한다. 이는 과적합이 되지 않도록 모델을 강제로 제한하는 것을 의미하며, 가중치 값을 조정하여 제약을 준다. Ridge, Lasso, Elastic net Regression을 사용한다.
이 중 Ridge보다 Lasso가 더 강한 규제에 속한다.

from sklearn.linear_model import LinearRegression, Ridge

model = Ridge(alpha=0.1).fit(x_train, y_train)

사이킷런의 모델을 불러와서 사용하며 위에 코드와 같은 방법으로 학습시키고 사용한다.
알파값을 이용하여 규제를 조절해주며, 알파값이 클수록 선형에 가까워진다.

from sklearn.linear_model import LinearRegression, Lasso

model = Lasso(alpha=0.01).fit(x_train, y_train)

Lasso역시 사이킷런의 모델을 불러와서 사용한다. 이 모델은 알파값이 증가할 수록 사용하는 특성의 값도 증가한다.
즉, Ridge와 달리 모든 특성을 사용하지 않고 필요하다고 생각하는 특성만을 사용한다. 하지만 알파값이 증가할 수록 사용하는 특성의 수가 증가한다.

주로 Ridge 회귀를 사용하지만, 특성이 많고 그 중 일부만 사용하고자 한다면 Lasso 회귀를 사용하면 좋다.

느낀점

  • 정처기가 이번주에 끝난다. 여기사람들이랑 같이 공부할 수 있었으면 좋겠다.
  • 내일 시험인데 잘볼수 있을지 걱정이 된다. 공부한 시간도 적고, 하고 싶단 생각도 많이 안들정도로 힘들다
  • 딥러닝은 어떻게 공부해야할지 모르겠다. 언제 쓰이는지 어떻게 써야하는지를 모르겠다.
  • 걸음걸이 분석하던것도 해야하는데 누구한테 어떤 방식으로 써야하는지 모르겠다.
profile
안녕하세요 ㅎㅎ

0개의 댓글