전체 글 15

[캐글 보충] 1. 지도 학습 vs. 비지도 학습

해당 포스트는 auto encoder를 학습하던 중 지도 학습과 비지도 학습에 대한 개념을 학습하기 위해 작성되었습니다. 지도 학습(Supervised Learning)지도 학습이란 머신러닝 모델이 데이터를 학습할 때, 학습하는 데이터가 레이블(label)되어 있는 경우를 말합니다.  지도 학습의 종류에는 크게 회귀(Regression)와 분류(classification)이 있습니다. 회귀는 훈련 데이터와 이에 매칭되는 타겟 변수의 값들(레이블)을 학습하여, 새로운 입력 데이터에 대한 출력 값을 예측하는 기법입니다.분류는 말그대로 훈련 데이터와 이에 매칭되는 레이블을 학습하여, 새로운 입력 데이터의 범주형(categorical) 클래스를 예측하는 기법입니다.비지도 학습(Unsupervised Learni..

캐글 02:07:08

근황 - 2024.10.21

그동안 블로그 작성은 잘 못했지만 병특 근무를 위한 개인 공부는 어느 때보다 열심히 했었다. 운영하던 학교 수강평 웹 서비스를 크로스 플랫폼 모바일 앱 서비스로 개편하여 출시하였고, 크롤링을 공부하여 해외 구매 대행 사업자들이 무료로 쓸 수 있는 서비스를 개발해보기도 했다. 그렇게 개인공부를 하며 대학교는 졸업했고 한국에 돌아왔지만, 병특 채용을 약속했던 스타트업은 인수합병을 당해버려서 무산되어버렸다.  ‎쑤강평‎학교 수업들에 대한 수강평, 게시판 기능, 투두 기능 등을 포함한 학생들의 학업을 돕는 앱입니다.apps.apple.com 원래 병특 채용을 약속했던 기업은 구현 실력이 이론 혹은 cs 전반에 대한 배경 지식보다 중요한 시리즈 a 정도의 스타트업이었고, 채용을 약속받은 상태였기 때문에 이론적인 ..

캐글 2024.10.21

BE (3) - Express 백엔드 token 관련 해킹 예방하기

Access Token 의 문제점 여기서 지칭하는 Access Token은 단순히 아래 코드와 같이 jwt.sign() 을 이용해 반환받은 auth 관련 token 입니다. const accessToken = jwt.sign(userObject, secretKey); Refresh Token을 사용하지 않는 Express backend는 jwt.sign()을 통해 반환받은 Access Token이 하나만 있다면 해당 token을 갖고 계속 인증이 필요한 요청을 수행할 수 있습니다. jwt.sign()은 실행할 때마다 다른 token을 반환하지만 기본적으로는 과거에 반환한 token은 만료가 되지 않기 때문에 보안 상 관리하기 까다롭습니다. 임시 해결법 jwt.sign()으로 token을 발행할 때 tok..

개발 2024.01.31

BE (2) - PUT vs. PATCH

HTTP method는 기본적으로 서버에 어떤 작업을 수행할 것인지에 대한 정보를 전달하기 위해서 사용됩니다. 데이터를 서버에서 받아올 때 사용하는 GET method, 데이터를 서버에 등록할 때 사용하는 POST method, 서버에 있는 데이터를 삭제하기 위해 사용하는 DELETE method 등이 있습니다. 여러 method 들 중에서 데이터를 수정할 때 사용하는 method는 PUT 과 PATCH 두 가지가 있는데 이 둘의 차이점에 대해서 알아보도록 하겠습니다. PUT method 데이터를 '수정'한다는 느낌보다는 '교체'라는 단어가 더 잘 들어맞습니다. 데이터의 모든 필드의 값을 입력해야 되고 데이터 전체가 교체됩니다. //PUT { "username": "dongsunseng", "email"..

개발 2024.01.25

BE (1) - res.json() vs. res.send() vs. res.end()

res.json() vs. res.send() 기능상으로 수행하는 작업은 거의 동일합니다. res.json() 와 res.send()로 object를 보냈을 때의 차이점 object를 보내는 작업을 처리하는 순서에서 차이가 있습니다. res.json(): 1. 전달하려는 object를 문자열로 stringify합니다. 2. 만약 Content-Type header이 세팅되지 않았을 경우 res 객체의 Content-Type header를 this를 사용해서 "application/json"으로 세팅 해줍니다. 3. res.send()를 사용해서 stringify해준 object를 보내줍니다. → 1. res.json(object) 2. res.send(string) res.send(): 1. res.se..

개발 2024.01.24

복귀 - 2024.01.12

이전 포스트에 블로그를 꾸준히 해보겠다는 포부를 보였지만 갑자기 잠수를 탔었던 이유와 앞으로의 계획에 대해 말해보려고 한다. 일단 이번 학기는 학교 공부를 좀 열심히 해봐야겠다는 생각이 있었다. 뉴욕 본교에서 첫 학기여서 잘하고 싶기도 했고, 이번 학기는 장학금을 받고 싶다는 생각이 있었다(엄마의 무언의 압박 ㅋㅋ). 열심히 한 결과 나름의 성과는 있었다. 성적도 잘 나와서 장학금을 받을 수 있을 것 같고 이번학기는 사이드 프로젝트로 전에 만들었던 학교 수강평 웹사이트를 React Native로 모바일 앱으로 만들었다(85% 정도 완성). 이에 대한 자세한 내용은 '학교 수강평 사이트 개발 및 운영 도전기' 시리즈에서 다시 다루도록 하겠다. 앞으로의 계획 일단 졸업까지 한 학기를 남겨두고 있고 졸업 후에..

카테고리 없음 2024.01.13

ML/DL - Code CheatSheet

Numpy 1. __version__ : 버전 확인 import numpy as np print(np.__version__) 2. array() : 배열 만들기 my_arr = np.array([10, 20, 30], [40, 50, 60]) 결과값: [[10, 20, 30], [40, 50, 60]] 3. sum() : 배열의 각 요소를 모두 더한 값을 반환하기 넘파이 배열은 + 와 * 을 배열의 각 요소를 더하고 곱하는 작업이 가능하다. a = np.array([1, 2, 3]) b = np.array([3, 4, 5]) print(a + b) #결과값: array([4, 6, 8]) print(a * b) #결과값: array([3, 8, 15]) np.sum() 함수에 a * b를 전달하면 넘파이..

카테고리 없음 2023.07.22

캐글 도전기 (2) - 7/5 ~ 7/14

캐글에 대해 알게된 점: 1.0은 불가능하다 일단 캐글에 대해 새롭게 알게 된 점 한 가지가 있는데 캐글 뉴비들에게는 나름 헷갈릴 수 있을 것 같아서 짚고 넘어가려 한다. 캐글을 시작하면 타이타닉이나 주택가격예측 대회를 자연스럽게 거쳐가게 된다. 각 대회에 리더보드를 확인해보면 1.0의 정확도를 받은 사람들이 굉장히 많다는 것을 확인 할 수 있다. 이를 보고 글쓴이는 1.0의 정확도를 받는 것이 이 대회를 완벽하게 이해하고 더 정교한 데이터 전처리와 모델링을 통해서 나오는 이상적인 결과라고 생각했고 이를 위해 한참을 다른 사람들의 코드를 보며 연구했다. 그러던 중 놀라운 결과를 알게 되었는데 1.0의 정확도가 나오는 것은 불가능할 뿐만 아니라 이 대회의 목적이 아니라는 것이었다. 정확도라고 함은 학습 데..

카테고리 없음 2023.07.18

ML/DL(3) - 손실 함수와 경사 하강법의 관계

손실함수와 경사 하강법의 관계를 공부하며 헷갈리고 정확히 무슨말인지 이해가 안 가는 부분들이 있었는데 이들을 짚고 넘어가려 한다. 1. 왜 가중치와 절편을 업데이트하는데에 손실함수를 미분한 값을 사용하는가 선형 회귀의 손실함수는 '제곱 오차(squared error)'로 예측값과 타깃값의 차이를 제곱한 것이다. 이때 제곱 오차가 최소가 되면 데이터의 경향을 가장 잘 표현하는 직선을 찾을 수 있는 것이다. 따라서 제곱 오차 함수의 최솟값을 알아내야 하는데 제곱 오차함수는 2차 함수이므로 기울기에 따라 함수의 값이 낮은 그래프의 최소에 가깝게 이동해야한다. 2차 함수인 이유는 아래와 같이 정리해보면 알 수 있다. x축을 가중치 $w$ 혹은 절편 $b$로 두고 y축을 손실함수로 두었을 때 손실함수의 최소로 이..

카테고리 없음 2023.07.08