본문 바로가기

전체 글277

[SQL] 해커랭크 Occupations 풀이 HackerRank Occupation 풀이 문제 링크 https://www.hackerrank.com/challenges/occupations/problem 4개의 직업이 존재하는데 각 열별로 특정 직업을 가진 사람의 이름을 사전 순으로 나열한다. 단, 이렇게 하면 빈 칸이 생길 것인데 빈칸은 모두 Null로 채워야 하는 것이 문제이다. 풀이 방법 이를 위해서는 일단은 직업에 따라 사람들을 분류하는 것이 우선이다. 그리고, NULL을 띄우기 위한 발상은 다음과 같다. 아무튼, 1번째 의사/가수/교수/배우 2번째 의사/가수/교수/배우 ... 이렇게 나열을 해야 한다. 이를 위해서는 N번째 기준으로 group by를 해야 할 것이고 각 직업별로 N번째를 세야 한다. 다시 말해, 직업별 counter를 변수.. 2021. 9. 22.
[SQL] 프로그래머스 입양시각 구하기 (2) 프로그래머스 SQL 연습문제의 레벨4 문제이자, 마지막 수문장 정도 되는 문제. 다른 문제들에 비해서는 그래도 꽤 어려운 문제로, 많이 배우고 설명을 듣고 해당 내용을 정리해보았다. 문제 출처 https://programmers.co.kr/learn/courses/30/lessons/59413 문제의 난점 단순히 group by 시간해서, 풀만한 그런 문제가 아니다. 0시~23시 각 시간별로 입양이 몇번 일어났는지를 알아내야 하나, 문제는 0번인 시간대도 출력해야 한다. 문제 발상 이를 위해서는 0시~23시 시간만 적힌 테이블 하나랑, 입양 횟수를 시간대로 정리한 테이블 하나를 left join시키면 될 것이다. 하지만 어떻게 0시~23시를 만들어 줄 것인가? 이게 해당 문제의 포인트다. 풀이방법(Mys.. 2021. 9. 21.
[TIL] Gradient Vanishing 문제와 활성화 함수 (면접에서 틀렸던 문제다... 진짜..) Gradient Vanishing이란? 신경망 학습 과정에서는, 가중치를 back-propagation 하는 과정에서 가중치가 발산하거나 곡선의 기울기가 0이 되면서 학습이 제대로 되지 않는 현상이 발생할 수 있다. 원인은 활성화함수에서 사실, 선형 함수의 경우는 미분해봤자 계수가 되기 때문에 선형함수에서는 그 원인을 찾을 수 없다. 즉, 원인을 찾기 위해서는 비선형 함수를 만들어주는 활성화함수에서 찾아야 할 것이다. 미분계수가 0에 수렴이 되면, 기울기에 의해서 값을 찾아가야 하는데 제대로 오차가 감소되지 않거나, local minima에 빠지는 문제가 발생할 것이다. Sigmoid function 시그모이드는 로지스틱 회귀와 연관된 함수로, 0과 1 사이의 실.. 2021. 9. 20.
[추천] 추천 시스템의 평가 참고 [1] https://techblog-history-younghunjo1.tistory.com/133 [2] https://zzaebok.github.io/recommender_system/metrics/rec_metrics/ [3] https://jyoondev.tistory.com/131 복습 : 추천 시스템이 풀려는 문제 추천시스템은 크게 분류 문제 / 회귀 문제 관점 두 가지로 해석이 가능하다. - 분류 문제 : 유저가 좋아할만한 아이템을 k개 찾아 준다. - 회귀 문제 : 유저가 특정 아이템에 매길 평점을 예측한다. 이에 따라, 분류 문제와 회귀 무제에서 기존에 사용된 평가 지표를 활용 가능할 것이다? 기존 Metric의 문제점 하지만, 단순히 기존의 분류와 회귀에서 사용한 Metric을 .. 2021. 9. 15.
[자연어] BERT 모델, 찍먹해보자. 참고자료 [1] https://ebbnflow.tistory.com/151 [2] https://wikidocs.net/115055 BERT란? 구글에서 만든 NLP 처리 기술이다. BERT는 기본적으로 '사전 훈련 언어 모델'이다. 단어를 Embedding하는 것이 NLP에서 중요한 문제인데 대표적인 방법으로는 - TF-IDF Vectorizer - Count Vectorizer - Word2Vec 이런 것들을 예시로 들 수 있다. TF-IDF, Count는 단어의 빈도수에 따른 단일 단어만 고려한다면, Word2Vec은 주변 단어, 즉 문맥을 고려할 수 있는 벡터화이다. 그러나 Word2Vec 역시 동음이의어 등에는 취약하다는 단점을 가지고 있다. BERT는 다른 모델을 쓰기 전, 사전 훈련을 통해 .. 2021. 9. 6.
[TIL] JSON 파일 읽기 csv 파일만 읽다가 json 파일을 읽어보아야 하는 상황을 겪게 되어, 이런저런 삽질을 통해 방법을 알게 되었다. (1) JSON file -> data 읽기 path = '(json 파일이 있는 경로)' records = [json.loads(line) for line in open(path, encoding = 'utf-8')] 이렇게 읽을 경우 list 형태로 데이터를 얻게 된다. records[0].keys() 를 통해 dict형태의 key를 알 수 있고, 필요한 데이터를 직접 추출하면 된다. (2) json URL -> 파일 다운로드 import json import urllib.request from urllib import request url = '(json file의 url)' save.. 2021. 9. 6.