개발

    [추천시스템] 성능 평가 지표(pyspark) - Precision, Recall, Map, NDCG

    추천시스템에서 랭킹하는 방식으로 좋은 추천(랭킹)을 했는지에 대해 정량평가 할 수 있는 4가지 지표를 정리해보고자 한다. * 이하 코드는 함께 인턴했던 뢀뢀씨❤️와 함께 작성했습니다! 뢀뢀씨 보고 있다면 댓글 달아주세요 1. Precision/ RecallPrecisionK 개 추천했을때, 추천결과가 hit한 precision 평균을 의미순서가 중요하지 않다.모델이 10개를 추천했을때 사용자가 몇개를 봤냐 사실 pyspark에서는 프리시즌을 계산하는 모듈을 제공하는데 생각했던 수식과의 차이 때문에 직접 udf를 제작하게되었다. pyspark 모듈과 udf의 차이는 관련도(relevance)를 매기는 기준이 다르다. pyspark : labeludf : label[:k]예시) prediction : [a,..

    [Spark DEBUG] partiton path load 오류

    문제 상황 참조하는 테이블은 컬럼 기반의 데이터 저장 방식인 parquet 포맷. max partition이 25개로 설정되어 있음. path를 확인하는 시점과 데이터프레임을 load하는 시점에서의 리스트가 달라 path가 없다는 오류 발생. -> 25 제한에 따라 가장 오래 된 파티션이 삭제 됨으로 해당 파티션이 없다는 오류 발생 시도한 것들 기존 방법 (기존 코드를 그대로 따라 갔었는데, 해당 방법은 전체 메타데이터를 로드하는 방법임을 깨달음 stackoverflow) 배열로가져오고 맥스값 가져오기. collect가 한번 로드되면 목록 외로 데이터 전체가 로드 되는 줄 알았는데 아니었음. max_updatetime = spark.sql("""select max(updatetime) from db.ta..

    [python] 표준 입출력 sys.stdout / sys.stderr?

    표준 입출력이란? 표준 입력(stdin) 파이썬 함수 : input() 표준출력(stdout) 함수 : print() python의 print(), input() 같은 함수들은 시스템 함수를 활용해서 만들어진 입출력이 혼합된 함수이다. 일종의 모듈(특정 기능들(함수, 변수, 클래스 등)이 구현되어있는 파일을 의미)이라고 볼 수 있고, print()나 input()이 없었다면 표준입출력을 사용해야한다. 일단 내장함수 print의 정의를 보면 file=sys.stdout이 기본 인자(Arguement)로 전달되는 것을 알 수 있다. print(*objects, sep=' ', end='\n', file=None, flush=False)(공식문서) Print objects to the text stream f..

    [hadoop] Hadoop Ecosystem

    하둡 에코 시스템 하둡 분산처리 시스템 (HDFS)과 MapReduce 프레임워크(코어 프로젝트)로시작했으나 여러 데이터 저장, 실행 엔진, 처리 등 다양한 하둡 생태계 전반을 포함하는 의미로 발전하고있다. 하둡 생태계에는 어떤 프로젝트들이 있을까? ▼ 더보기 HDFS 하둡 네트워크에 연결된 기기에 데이터를 저장하는 분산형 파일 시스템. 여러 저장소에 대용량 파일을 나워서 저장한다. 그리고 여러 서버에 중복해서 저장하기 때문에 하나의 서버가 소실되더라도 복구할 수 있어 안정성을 높인다. YARN (Yet Another Resource Navigator) hadoop 2.0에서는 클러스터의 자원을 관리하기 위한 시스템으로 yarn이 추가되었는데, mapreduce에서 하던 일을 분산해서 하기 위해 추가되었..