목록분류 전체보기 (81)
tak's data blog
스스로도 머신러닝에대해 공부하면서 자주 까먹고 헷갈리는 부분이 많아 BOAZ에서 머신러닝 스터디를 계기로 복습할겸 내용을 정리해보도록 하겠습니다. 1. 머신러닝의 기본 개념 - 데이터에서부터 학습할 수 있는 시스템을 만드는 것! - 자동화 - 사용 분야 : 복잡한 문제와 대량의 데이터에서 인사이트 도출, 많은 수동 조정과 규칙이 필요한 경우 (모델링을 통한 과정 간소화) - 데이터 마이닝 : 겉으로 보이지 않는 패턴을 발견하는 것 머신러닝의 종류 1) 학습하는 동안의 감독 형태나 정보량에 따른 분류 1. 지도 학습 : 정답을 알려주며 학습을 시키는 방법. 예를 들어 자동차 사진을 주고(input data) 이 사진을 자동차(label data)라고 지칭하는 학습법이다. 크게 회귀(regression)와 ..
저번주 santander에 이어서 이번주는 포르토 세구로에서 주최한 안전 운전자 예측 경진대회에대해 다루어 보겠습니다. 우선 '머신러닝 탐구생활' baseline을 기반으로 필사한점을 인지해주시기 바라겠습니다! 캐글 커널 주소 : www.kaggle.com/c/porto-seguro-safe-driver-prediction 대회의 평가 척도로는 [정규화 지니 계수]를 사용합니다. 간단하게 설명드리자면 불균형의 정도를 나타내는 통계학적 지수로, 지표는 경제 분야에서 소득별 부의 불균형 정도를 나타내는데 사용합니다. 지니 계수는 회색 gini index의 면적을 삼각형 전체의 면적으로 나눈 값을 의미합니다. 부의 불균형이 높을 수록 gini index영역은 더 커지고, 그에 따라 지니 계수 또한 높아질 것입..
문제 아래 SQL문은 EXCEPT 연산을 사용하여 재고가 없는 영화를 구하고 있다. 해당 SQL문은 EXCEPT연산을 사용하지 말고 같은 결과를 도출하라. except 연산은 차집합 연산이기 때문에 빼주거나 다양한 방법이 있을 것 같았다. 처음에 left join을 생각해봤지만 다시 생각할 필요가 있었다. 1. film 테이블을 먼저 조회한다. 2. not exists 문을 사용하여 재고 존재하는 집합은 film집합에서 제외 시킨다. 여기서 select 1이란 해당 테이블의 갯수만큼 1로된 행을 출력한다는 뜻이다. 값의 존재유무를 우선시한다. 3. (같은결과를 반환하는 다른 문장) 4. (같은결과를 반환하는 다른 문장) 유의해야할 점 : 재고가 없는 집합을 찾기 위해서 not exists처럼 무언가 존재..
이번에는 집합 연산자와 서브쿼리와 관련된 문제풀이를 시작하겠습니다! 문제 아래 SQL문은 FILM 테이블을 2번이나 스캔하고 있다. FILM 테이블을 한번만 SCAN하여 동일한 결과 집합을 구하는 SQL을 작성해라. 좀더 효율적인 SQL을 위해서 줄이는 과정이다. 1. 분석함수 AVG를 사용해서 평균을 구한다. 2. 위에서 구한 값을 인라인뷰로 감싼 후 평균보다 큰 값을 구한다. 유의해야할 점 : 효율적인 SQL작성을 위해 서브쿼리, 인라인 뷰 등의 활용성과 보기쉽게 작성하는 점이 중요하다.
이번에도 어김없이 문제풀이를 해보겠습니다! 문제 rental과 customer 테이블을 이용하여 현재까지 가장 많이 rental을 한 고객의 고객id, 렌탈순위, 누적렌탈횟수, 이름을 출력해라. 미리 생각할점으로 우선 고객id를 뽑기위해 두 테이블을 조인한다./ 순위를 구해야한다(분석함수를 써야한다. 집계함수로는 안된다.) 1. rental 테이블을 살펴보자. 2. customer 테이블을 살펴보자. 3. 가장 많이 렌탈을 한 고객을 구한다. 4. row_number()를 활용해 순위를 구한다. 5. rental_rank를 기준으로 order by를 한다. 그 후 customer테이블과 조인/ group by를 위해서 max를 쓰게 됨. 6. max를 안쓰고 나타내는 또다른 방법.(결과는 같다.) 유의해..
이번에는 rollup의 유용함을 볼 수 있습니다. rollup은 지정된 grouping 칼럼의 소계를 생성하는데 사용합니다. 문제 rental 테이블을 이용하여 연, 월일, 연월일, 전체 각각의 기준으로 rental_id 기준 렌탈이 일어난 횟수를 출력해라. 1. rental테이블을 살펴보자. 2. 연 기준으로 count해본다. 3. 연월기준으로 count해본다. 4. 연월일 기준으로 count한다. 5. rollup함수를 사용하여 grouping 칼럼의 총계를 생성한다. 유의해야할 점 : rollup함수를 사용하는 것과 날짜 데이터를 다룰 때 사용하는 방식.
지난 문제풀이에 이어서 이번에도 문제풀이를 이어가겠습니다. 문제 고객들에게 단체 이메일을 전송 할때, customer 테이블에서 고객의 email주소를 추출하고, 이메일 형식에 맞지 않는 이메일 주소는 제외시켜라. (이메일 형식은 '@'가 존재해야 하고 '@'로 시작하지 말아야 하고 '@'로 끝나지 말아야 한다.) 1. customer 테이블을 살펴보자. 2. like를 이용해서 이메일 형식의 3가지 조건을 만족하도록 다음과 같이 작성한다. 유의해야할 점 : where절에 like연산자를 사용해서 이메일 형식에 해당하도록 작성해야 한다. 1) '@' 가 존재해야 한다. -> like '%@%' 2) '@' 로 시작하면 안된다. -> not like '@%' 3) '@' 로 끝나도 안된다. -> not l..
SQL을 공부하면서 문제풀이를 공유하고자 합니다. 나아가서 나중에는 직접 데이터를 가져와 문제 풀이 내용을 바탕으로 실습해볼 예정입니다!! 문제 payment 테이블에서 단일 거래의 amount의 액수가 가장 많은 고객들의 customer_id를 추출해라. 단, customer_id의 값은 유일. 1. payment 테이블의 구조를 살펴본다. 테이블을 살펴본 후 한꺼번에 생각하지 말고 차례대로 나눠서 생각해보자 2. 전체 거래 중 amount의 액수가 가장 큰 amount를 구한다. 첫번째로 desc를 써 내림차순으로 한 후 limit 1을 정해 가장 큰 amount를 구합니다. 3. payment 테이블에서 가장 큰 amount를 가진 customer_id를 구하고 중복을 제거한다. where절에서 서..