본문 바로가기

전체 글

(96)
11/24 데이터 마이닝 정리 (서포트 벡터 머신) 일단 Binary response에 대한 분류 문제 기준으로 설명 서포트 벡터 머신은 크게 두 가지로 나눌 수 있음 1. separable case (No overlap): linear한 class boundary로 error없이 분류할 수 있는 경우를 말한다. 2. Non-separable case (Overlap): linear한 class boundary 하나만으로는 error없이 분류가 절대로 불가능한 경우 separable의 경우 Maximal Margin Classifier (MMC)를 사용하고, non-separable case는 Support Vector Classifier (SVC)를 사용하여 분류를 한다. (서포트 벡터 머신은 그림으로 설명하면 이해가 더 쉽지만, 지금은 말로만 정리) ..
11/23 배운점 파이썬을 오랜만에 해서 다시 감 잡는중 1. reset_index()로 한 셀에 있는 행을 여러 행으로 나눌 수 있다. drop 옵션 설정하면 인덱스로 세팅한 열을 삭제함. 2. groupby('칼럼').apply(함수): 칼럼별로 그룹지은 다음 함수 그 데이터에 계산 해줌 groupby 함수를 사용한 경우 object가 dataframe이 아님 3. drop_duplicates('칼럼'): 칼럼의 행을 확인해서 중복되는 모든 행을 drop 4. 피처 임베딩 이해중
11/17 데이터마이닝 (부스팅, 스태킹) 부스팅은 기본적으로 weak learner를 학습하여 sequential한 tree를 만듦. 그렇다고 parallel한 tree를 만들지 못하는 것은 아님. 부스팅은 최근 개발된 xgboost, lightgbm, catboost를 주로 사용하게 되는데, 이 3가지 부스팅 방법 모두 parallel한 프로세스를 increment해서 속도가 빠른 편. 하지만 부스팅은 사용하는 hyperparameter 개수가 많아서 튜닝이 상당히 오래 걸린다는 단점이 있음. 부스팅의 특징 부스팅은 트리가 sequential하게 생성됨 -> 각각의 트리가 이전의 트리에서 얻은 정보를 사용함 -> 과적합 가능성이 높음 부스팅에는 부트스트랩 샘플링 같은 과정이 없는 대신 subset을 사용할 수는 있음. 부스팅의 하이퍼파라미터로..
11/15 배운점 (얕은 복사와 깊은 복사, 오버리프 그림 불러오기 문제) 1. copy함수 여태까지 copy() 함수를 쓰면 독립적으로 복사가 된다고 알고 썼다. 그런데 오늘 문제를 풀다가 copy를 평소처럼 써서 리스트를 새로 만들었는데 자꾸 복사해온 리스트 원소가 바뀌었다. 알아보니 그동안 잘못된 사용을 하고 있던 것이고 문제가 없다고 착각을 했던 것 같다. copy함수는 얕은 복사로 객체 전체를 복사한 것이 아니라 메모리주소만 복사한 것이라서 copy한 변수를 바꾸면 원 변수에도 영향을 미친다고 한다. 이것은 immutable한 객체에는 영향이 없는데 mutable한 객체에 영향을 미칠 수 있다. 그래서 리스트를 사용할 때 문제가 될 수 있었고, 세트, 딕셔너리 모두 마찬가지로 문제가 발생할 수 있다.얕은 복사의 방법은 내가 사용한 .copy()함수부터, = 을 사용하여..
11/14 배운점 1. 난 그동안 파이썬 경로 막 써와서 몰랐는데 ./ 이 경로는 현재 경로를 의미하고 ../ 이게 현재 경로에서 한단계 이전 경로로 돌아가는 것.. 이걸 모르고 살았으니,, 난 멍청이가 맞다. 2. cuda 메모리가 꽉차는 거로 나왓다. (CUDA out of memory) 그런데 아래에 보면 memory usage가 N/A로 나왔다. 이 문제가 아마도 cuda 11.7을 쓰는데, 가상환경에는 cuda에 맞지 않는 torch, torchvision, torchaudio 버전을 설치해서 발생한 오류인 것으로 보인다고 했다. 그래서 pytorch 들어가서 확인해보았다. run this command를 복붙해서 실행하여 새로운 pytorch 버전을 받았다. (근데 이미 설치된 pytorch 어떻게 안하고 해도..
11/14 문제는 문제고 실행은 실행이다 일단 어제 발생한 가상환경 경로 문제는 이전에 내가 아나콘다 프롬프트 실행 시 경로를 D드라이브로 바꿔놓은 것 같고, 그걸 다시 되돌리고 싶은데, 구글에서 검색해보면 나오는 일반적 방법인 아나콘다 프롬프트 속성에서 %HOMEPATH% 이걸 D드라이브로 바꿔놓은 게 아니라서 되돌리는 법을 못 찾겠다. 그래서 그냥 이대로 D드라이브에 가상환경을 생성하기로 했다. 굳이 되돌려 놓는다해도 어차피 C드라이브 용량 부족해서 문제될 것이 많기 때문이다. 그럼 이제 문제는.. 다른 C드라이브에 있는 가상환경은 requirements.txt 파일만 제자리에 있으면 pip install -r requirements.txt를 실행했을 때 실행이 자동적으로 진행이 되는데,, D드라이브에 새로 생성한 녀석은 저 텍스트 파일을 ..
11/13 배운점보다 의문점 (가상환경 경로 문제 어떡하지..) 1. requirements.txt라는 파이썬 라이브러리와 버전이 적혀있는 텍스트 파일을 준다면, 이것을 한번에 받는 법. -> pip install -r requirements.txt 여기서 중요한 점은 아나콘다 프롬프트에 내가 생성한 가상환경의 경로에 해당 텍스트 파일을 갖다놔야 설치가 진행된다. 2. 가상환경에 설치되어 있는 라이브러리 확인 방법 : pip freeze 하 근데 옛날에 가상환경 만드는 경로 바꿔놨던게 잘못됐는지 오류가 난다... requirements.txt 인스톨 다 하고 주피터노트북에서 커널 바꿔서 라이브러리 임포트 하려니까 바로 막히는데.. 일단 오늘은 여기까지만 하고 다른 일을 해야할 것 같다...
11/12 R 배운점 1. cpu 병렬처리를 위해서 doParallel이라는 라이브러리를 사용. 2. detectCores() 함수로 cpu의 개수를 저장하고 3. registerDoParallel() 함수에 cpu 개수를 집어 넣어서 해당 개수만큼의 cpu를 병렬처리 할 수 있음 4. 랜덤포레스트 돌릴 때 target 클래스를 말하는 level로 숫자를 쓰면 오류 생김. level을 숫자가 아닌 문자로 시작하도록 변경해줘야 문제가 생기지 않음. 5. 랜덤포레스트 mnist데이터로 돌리는거 생각보다 시간이 오래 걸림.
11/11 데이터마이닝 간단 정리(앙상블 중 배깅과 랜덤포레스트의 특징, 기억하면 좋을 것들) 앙상블 기법: 학습 알고리즘 여러개를 함께 사용해서 더 나은 예측 성능을 얻는 방법 종류: 배깅, 랜덤포레스트, 부스팅, 스태킹, 혼합모형(Mixture of experts and hierarchical mixture of experts), Bayesian methods 배깅: tree를 parallel하게 합함. 과적합이 잘 안 돼서 막 쓰기에 좋음. 가지치기(pruning)할 필요도 없음. 부스팅: tree를 sequential하게 모아줌 (성능이 안 좋은 것을 모아서 가중치를 높여 훈련). 좋을 땐 랜덤포레스트보다 성능이 훨씬 좋음. 반면 단점은 과적합 가능성이 높은 편 배깅은 tree기반 모형이긴 하지만 사용 모형이 꼭 tree가 아니어도 됨. 기본적으로 tree기반 모형의 특징이 모형의 분산이 ..
11/03 데이터 마이닝 간단히 정리 (Imbalanced data) 매번 헷갈리는 건데 이제는 좀 외우자 Sensitivity: 실제 (+) 중 (+)로 예측한 비율 Specificity: 실제 (-) 중 (-)로 예측한 비율 TPR (True Positive Rate): Sensitivity (실제 + 중에서 +로 예측된 것의 비율) FPR (False Positive Rate): 1 - Specificity (실제 - 중에서 +로 예측된 것의 비율) Precision: (+)로 예측한 것 중 실제 (+)인 비율 = PPV (Positively Predicted Value) Recall : 실제 (+) 중 (+)로 예측한 비율 = Sensitivity Balanced Accuracy = (Sensitivity + Specificity) / 2 F-beta score: ..
11/02 배운점 (인덱스 추출은 which 함수를 써라) R 배운점 1. 어떤 조건에 해당하는 인덱스만 추출하고 싶으면 which(조건) -> 샘플링에 유용하다 논문 배운점 1. 변분 추론의 목적: 모형의 비교를 위해서 주변 가능도 함수를 근사적으로 구하기 or 예측을 위해서 사후분포를 근사적으로 구하기 2. 변분 추론의 Q라는 확률분포족은 잠재변수로 가능한 분포 family를 말함. 의문점 : GP 분류를 하면서 필요한 과정만 추릴 필요가 있겠는데 파악이 어려움
11/01 LATEX 배운점.. 급하게 오버리프로 템플릿 불러와서 텍을 쓰고 있다. 한번도 제대로는 안 써봤는데 교수님 요청에 따라 다급히 쓰는중,, 1. 레이텍 기본 설정은 첫문단 들여쓰기가 없는 것. 첫문단부터 들여쓰기를 하고 싶다면, \usepackage{indentfirst} 이 패키지 불러오면 바로 첫문단 들여쓰기 됨 2. 온갖 기호는 검색하면 나오니까 패스 (물결표는 \sim) 3. 문단을 쓰다가 도중에 식을 적고자 할 때는 $ 식 $ 4. 중괄호를 쓰고싶을땐 \{로 열고 \}로 마무리 5. 그리스 문자에 볼드체를 쓰고싶으면 \textbf가 아니라 \boldsymbol 을 사용할 것 6. 수식 중간에 공백을 넣고싶으면 \, (공백 한칸), \; (두칸), \quad (네칸), \qquad (8칸) 7. \mathcal이 워드..
10/31 배운점과 의문점 배운점 1. R에선 for문 안에서 반복인자 i를 쓸 때, 예를들어 데이터프레임의 행과 열을 계산하는데 i인자를 쓰면 파이썬처럼 원하는대로 인덱싱, 슬라이싱이 되지 않음 2. positive defininte matrix 양정치행렬인지 묻는 것은 역행렬이 있냐 없냐 (non-singular vs singular matrix) 3. 자꾸 데이터 결측 확인 안 해서 안 돌아가는 걸 다른 것 때문에 그런줄 알고 시간 쓸데없이 오래 쓰는데 확인 잘 좀 하자. 의문점 1. vbmp 패키지에서 vbmp 함수 인자로 theta를 입력할 때, theta는 어떤 벡터인데 그 벡터 길이가 길어질수록 성능이 좋아지는 효과가 있었음. 이유는 아직 파악 못함 2. train 함수로 학습시킬때, naivebayes 방법에서 뭔가..
[Git] Git 명령어 정리 6 (git tag, git alias) https://git-scm.com/book/ko/v2/Git%EC%9D%98-%EA%B8%B0%EC%B4%88-%ED%83%9C%EA%B7%B8 Git - 태그 와일드카드를 사용하여 Tag 리스트를 확인하려면 -l, --list 옵션을 지정 단순히 모든 Tag 목록을 확인하기 위해 git tag 명령을 실행했을 때 -l 또는 --list 옵션이 적용된 것과 동일한 결과가 출력된다. git-scm.com [태그와 별칭(alias)] tag와 alias는 개발자에게 유용한 기능 같다. 나한테는 크게 필요하지 않은 명령어 같지만 한 번 살펴보자. git tag # 만들어진 태그가 있는지 확인 git tag -l "v1.8.5*" # v1.8.5라는 이름을 앞에 달고있는 태그 검색 git tag -a 태그명 ..
[Git] Git 명령어 정리 5 (git remote, git push, git pull) https://git-scm.com/book/ko/v2/Git%EC%9D%98-%EA%B8%B0%EC%B4%88-%EB%A6%AC%EB%AA%A8%ED%8A%B8-%EC%A0%80%EC%9E%A5%EC%86%8C Git - 리모트 저장소 원격 저장소라 하더라도 로컬 시스템에 위치할 수도 있다. “remote” 저장소라고 이름이 붙어있어도 이 원격 저장소가 사실 같은 로컬 시스템에 존재할 수도 있다. 여기서 “remote” 라는 이름은 git-scm.com [Remote repository 관련 명령어] git remote # remote repository 확인 git remote -v # remote repository의 이름과 URL까지 확인 git push # commit 파일을 push하는 명령어..
[Git] Git 명령어 정리 4 (git log) https://git-scm.com/book/ko/v2/Git%EC%9D%98-%EA%B8%B0%EC%B4%88-%EC%BB%A4%EB%B0%8B-%ED%9E%88%EC%8A%A4%ED%86%A0%EB%A6%AC-%EC%A1%B0%ED%9A%8C%ED%95%98%EA%B8%B0 Git - 커밋 히스토리 조회하기 머지 커밋 표시하지 않기 저장소를 사용하는 워크플로우에 따라 머지 커밋이 차지하는 비중이 클 수도 있다. --no-merges 옵션을 사용하면 검색 결과에서 머지 커밋을 표시하지 않도록 할 수 있다. git-scm.com git log # git에서 commit한 History를 불러옴 # 여러 개발자와 일할 때, 동료들이 무엇을 commit했는지 빠르게 조회할 수 있다고 함 # 조회범위를 제한하..