2017년 3월 29일 수요일

Confusion Matrix, Sensitivity, Specificity

Cohen's kappa

  • the kappa as a measure of agreement between 2 individuals 
  • the kappa statistic is a measure of how closely the instances classified by the machine learning classifier matched the data labeled as ground truth
    • Kappa = (observed accuracy - expected accuracy)/(1 - expected accuracy)
    • 대략 0.75 이상이면 훌륭하고, 0.4 이상만 되도 우수하다고 볼 수 있다고 함.
  • Kappa is an important measure of classifier performance, especially on imbalanced data set.
    • it measures how much better the classier is comparing with guessing with the target distribution.
    • 데이터 집합이 밸런스가 맞지 않을 경우, 대충 찍어서 맞추어도 성능(정확도)이 좋은 것으로 나오는 상황에 대한 대응을 하는 차원에서의 평가지표로 이용된다고 볼 수 있음.

Case Study

특정 이벤트를 Positive class로 전제할 때, ...
  • 서비스 도메인의 특징: (이벤트 신호를 놓치더라도 다시 이벤트 신호를 살펴볼 기회가 있는 상황에서는) 실제 정상 신호를 이벤트라고 판단하는 것(FPR, 거짓긍정률)을 막는 게 양치기 소년 효과를 막기 위해서 더 중요함. 따라서, 현실적으로는 Specificity (부정률)이 높아져야 함. , 실제 정상이면 정상이라고 판단해야지, 이벤트로 오판하면 시스템 전체의 신뢰도가 무너질 수 있음.
    • 물론, 이론적으로는 실제 이벤트를 이벤트라고 판단(리콜=민감도=참 긍정률)하고, 이베트라고 예측했을 때 이벤트가 정말 맞을 확률(정밀도)높은게 이벤트를 잘 맞춘다는 평가치(=F1 기준)가 될 것임.
  • 참 긍정률 TPR = Sensitivity(민감도) = Recall(재현율) 실제 이벤트를 얼마나 잘 구별했나? (실제의 전체 이벤트 중에서 이벤트가 일어났음을 정확히 판단할 확률)
  • 참 부정률 TNR = Specificity(특이도) Normal을 얼마나 잘 구별했나? (실제 전체의 정상 신호 중에서 정상이라고 정확히 판단할 확률)
    • 예시: 어떤 검사방법의 적합성을 평가하는 방법으로 민감성과 특이성의 개념을 사용할 때,
      • 민감성이란 (전체 질병을 가진 사람 중에서, 실제) 질병이 있는 사람을 양성(질병이 있다고)으로 검출하는 능력. 즉 A/(A+B) 
      • 특이성이란 (전체 질병이 없는 사람 중에서, 실제) 질병이 없는 사람을 음성(질병이 없다고)으로 검출하는 능력. 즉 Y/(X+Y)
  • Kappa ; 우연에 의하지 않은 관찰된 일치율 우연에 의하지 않은 최대 일치율  0.8 이상이면 좋다고 함.
  • F-Score: Precision과 Recall의 조화평균 = 2*(Precision*Recall)/(Precision+Recall)
  • 정확도 Accuracy전체 데이터 중에서 정확히 맞춘 것만 따지기.
  • 정밀도 Precision 이벤트라고 예측된 것 중에 진짜 이벤트가 들어있을 확률
  • Precision과 Recall을 재미있게 설명한 블로그 (2016.06)
    • 전체 선물로 받은 것 중에서 정확히 기억한 것의 비율 = recall = sensitivity
      • (실제로는 10개를 선물 받았었는데) 무언가 기억해낸 5개 중에서, 3개가 정확할 경우의 recall = 3/10 = 30%
      • --> 전체 10개 중에서 몇 개나 기억해냈는가
    • 기억해 낸 것 중에서 정확하게 기억해 낸 것의 비율 = precision 
      • (실제로는 10개를 선물 받았었는데) 무언가 기억해낸 5개 중에서, 3개가 정확할 경우의 precision = 3/5 = 60%
        • 이 때의 5개는 선물 받았다고 추정해 낸 Postive 추정값.
      • --> 내가 기억해 낸(예측한) 정밀도가 어떠한가

2017년 3월 15일 수요일

Latex, Lyx, TexLive

개요


  • 기존 윈도우에서 잘 사용하던 Lyx 환경을 새로운 윈도우 환경으로 옮기면서, MikTeX 패키지 설정에 어려움이 많던차에, 한글도 지원된다고 하는 TexLive로 옮겨타기로 했다.

비교

  • MikTeX
    • 윈도우 전용; 최소한의 패키지
  • TexLive
    • 한글 지원; 윈도우/맥/리눅스

설치 개요

  • 윈도우 10
  • TexLive 2016 다운로드 받아서 설치
    • http://tug.org/texlive/
      • 패키지 설치 시간 고려하면 상당히 시간 걸림
    • 설치파일(intall-tl-windows.exe) 실행시 관리자 권한으로 실행
    • (Install Full) 기본은 full scheme 설정하는 방식: ~3383개
      • 잘 설정할 자신이 있다면 small scheme 선택: ~2241개
      • 참고 블로그: http://woogyun.tistory.com/533
  • Path 설정
    • TeX의 실행파일 폴더(예: D:\texlive\2016\bin\win32)를 추가
  • 기본 에디터 또는 별도 TeX 편집기 (TeXstudio 또는 Lyx) 설치
    • TexLive 기본 에디터는 TeXworks 
      • 예를 들면, 기본 notepad 수준
    • http://www.texstudio.org/
      • 예를 들면, 워드 수준
    • https://www.lyx.org/
      • 예를 들면, 노트패드++ 수준
    • 이외, Texmaker 또는 온라인 LaTeX
      • 참고 블로그: http://t-robotics.blogspot.kr/2016/02/latex.html
      • TeX 에디터 종류: https://en.wikipedia.org/wiki/Comparison_of_TeX_editors

Sample.tex

  • https://gist.github.com/chkwon/821ee403b67aa46ee166
  • or use the following;
% -*- coding: utf-8 -*-
\documentclass{oblivoir}
\usepackage{kotex}
\title{처음 만든 \LaTeX\ 문서}
\author{고길동}
\begin{document}
\maketitle
처음 만든 \LaTeX\ 문서입니다. 한글을 사용하려면 \verb|\usepackage{kotex}|을 사용해야 합니다.
\end{document}

 Figure

  • 가급적 벡터 이미지를 사용하기: eps, pdf
    • 일러스트, 파워포인트, Inkscape
  • 불가피한 비트맵 이미지: png, tiff

Usage Tips

  • 참고 블로그: 
    • http://stom.chkwon.net/latex/
    • http://formal.korea.ac.kr/~jlee/lectures/cnce150/
  • .bib 파일은 JabRef을 통해서 관리
  • 최종 PDF 출력에는 pdflatex과 PDF image formats이 가장 적당하다고 함.
    • 편집 > 환경 설정 > 문서 처리 > 문서 처리 도구 기본값
  • 한글 사용하려면 다음과 같이
    • \usepackage{kotex}

윈도우 10 단축키


  • 윈도 + Tab : Task bar
  • 윈도 + Ctrl + D : 가상 데스크톱 만들기
  • 윈도 + Ctrl + F4 : 가상 데스크톱 닫기
  • 윈도 + Ctrl + 좌우 방향키 : 가상 데스크톱 이동
  • 윈도 + A : Action Center
  • 윈도 + I: 설정화면
  • 윈도 + S : Search
  • 윈도 + K : 무선 장치
  • 윈도 + 좌우방향키 : 선택 창 정렬
  • 윈도 + Shift + 좌우방향키 : 외부 화면 연결시 선택 창을 이동
  • 윈도 + P : 외부 화면 연결

2017년 3월 14일 화요일

Ubuntu 16.04 한글 입력 설정


한글 설치


  • 16.04에서는 IBus가 한글 입력을 기본으로 제공하지 않기 때문에, Fcitx를 사용하는 게 낫다. 또한 시스템 언어 설정에서 한글 언어를 사용한다고 설정하면, fcitx-hangul이 설치된다. 
    • $ sudo apt-get install fcitx-hangul
  • 따라서 언어 설정에서, Keyboard input method system을 ibus가 아닌 fcitx로 변경하면 된다.
    • 상단 메뉴바 오른쪽 입력기에 키보드 표시가 fcitx 아이콘임

한글 키보드 입력 및 한영 전환


  • 참고 블로그
    • http://hochulshin.com/ubuntu-1604-hangul/
  • AllSettings > Keyboard > Shortcuts Tab > Typing 선택 후
    • 설정되어 있는 Key들을 (backspace 눌러서) 모두 Disabled로 변경 
  • Compose Key를 Right All로 선택
  • Switch to next source는 한영키를 눌러 Multikey로 선택
  • fcitx아이콘을 눌러서 Configure Current Input Method를 선택
    • Keyboard-English(US)가 있다면 +를 눌러 Hangul을 추가
  • Global Config tab에서 Trigger Input Method는 한/영키를 눌러 Multikey로 설정(왼쪽 오른쪽 모두)
  • Extrakey for trigger input method는 Disabled로 설정
  • Global Config tab에서 Program > Share State Among Window > All을 선택


XPS 15 9560 Dual Booting

부팅 USB 스틱 만들기

  • 우분투에서 부팅용 USB 만들기
    • http://pinkwink.kr/871
      • $ sudo apt install unetbootin

멀티 부팅

  • XPS 13에서 윈도우 10과 우분투 16.04 멀티부팅하기
    • http://pinkwink.kr/998
      • F12 또는 F2로 Bios 셋업
    • 1) System Configuration / SATA Operation
      • RAID On을 AHCI로 변경
    • 2) Secure Boot / Secure Boot Enable
      • Enabled에서 Disabled로 변경
    • 3) General / Advanced Boot Option
      • Enabled Legacy Option ROMs를 check
  • 우분투 설치를 위해 윈도우10에서 사전에 해 주어야 할 작업
    • System Settings에서 Fast Startup를 멈추어 주기
      • https://www.tenforums.com/tutorials/4189-fast-startup-turn-off-windows-10-a.html
    • 기존 윈도우 설치된 파티션의 크기를 축소
    • 나중에 우분투 설치시 
      • swap: 32 x 1024 = 32,768 MB
      • ext4 / 충분히
  • SATA Operation
    • RAID is the right setting for Windows anyways. AHCI is only required if the OS don't has Intel RST drivers, like Linux. 
    • f you installed Windows in RAID mode (which is not technically RAID but Intel RST) you can't switch to AHCI later, Windows will no longer properly boot. Also RST is the "correct" mode anyway to get the maximum speed and power savings.
  • 윈도우 10 듀얼 부팅 모드로 설치된 우분투를 제거하는 방법 (UEFI 기준)
  • grub 오류로 인한 멀티부팅 복구 방법
    • http://pinkwink.kr/868
      • boot-repair
  • 윈도우 부팅이 안될 경우,
    • Intel RST driver가 없으면 PCie SSD를 인식하지 못함
    • CPU가 스카이레이크 Win 10일 경우, UEFI boot ; Security Off
  • grub 조정 방법
    • https://www.howtogeek.com/howto/43471/how-to-configure-the-linux-grub2-boot-menu-the-easy-way/
    • $ sudo add-apt-repository ppa:danielrichter2007/grub-customizer
    • $ sudo apt-get update
    • $ sudo apt-get install grub-customizer

Python, Jupyter

NumPy, SciPy, Pandas, and Matplotlib are fundamental scientific computing and visualization packages with Python.
  • 설치 방법1 : pip를 이용해서 설치하는 방식 
    • $ sudo apt-get update
    • $ sudo apt-get install python-pip
      • $ pip list
    • $ sudo pip install -U numpy
      • (만약 필요하다면 다음을 먼저 수행) 
      • $ sudo apt-get install python-dev
    • $ sudo apt-get install libblas-dev liblapack-dev
    • $ sudo pip install -U scipy
      • (만약 필요하다면 다음을 먼저 수행) 
      • $ sudo apt-get install gfortran
    • $ sudo apt-get install libpng-dev libfreetype6-dev libjpeg8-dev
    • $ sudo pip install matplotlib
    • $ sudo pip install -U scikit-learn
    • $ sudo pip install jupyter
      • (만약 설치후 jupyter가 실행되지 않는다면 다음과 같이 해보기)
        • $ ~/.local/bin/jupyter-notebook
        • 상기 명령이 먹힌다면, ~/.bashrc 에 다음 문장 넣어서 구동하기 export PATH=$PATH:~/.local/bin
      • 그런데, 지금까지 주욱 잘 설치가 되도, 막상 jupyter 구동하면, kernel 찾을 수 없다는 메시지 나올 수 있음
  • 설치 방법2: anaconda3을 이용해서 쉽게 설치
    • 참고 사이트
    • 다음의 사이트에서 원하는 버전의 python installer 선택하여 다운로드
    • 기본적인 conda 명령들
    • exercise
      • $ conda create --name eclc python=3.5 ipykernel
      • $ conda install --name eclc numpy pandas matplotlib scipy pip
      • $ conda info --envs
      • $ source activate eclc
      • $ python -m ipykernel install --user --name eclc --display-name "Python3.5 (eclc)"
      • $ source deactivate
      • $ conda remove --name eclc --all
      • $ jupyter notebook
    • packages
      • pip install 대신에 conda install 을 사용할 것.
        • pip는 anaconda 패키지 위치에 설치되는 것이 아니라 기본 System 패키지 설치 위치에 설치됨
        • 필요한 경우, conda install로 pip를 설치한 뒤, 해당 env에서 pip로 설치
      • $ conda install -n eclc pip
        • $ source activate eclc
        • $ pip install emcee corner
  • 기타
    • virtualenv가 필요한 경우
      • sudo pip install virtualenv
    • pip list 구동시 ImportError 나올 때
      • $ sudo apt-get purge -y python-pip
      • $ wget https://bootstrap.pypa.io/get-pip.py
      • $ sudo python ./get-pip.py
      • $ sudo apt-get install python-pip
    • Jupyter 다중 kernel 설정
      • $ jupyter kernelspec list
    • pytorch 설치 방법
      • $ conda install pytorch torchvision cuda80 -c soumith
    • Checking versions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# scipy
import scipy
print('scipy: %s' % scipy.__version__)
# numpy
import numpy
print('numpy: %s' % numpy.__version__)
# matplotlib
import matplotlib
print('matplotlib: %s' % matplotlib.__version__)
# pandas
import pandas
print('pandas: %s' % pandas.__version__)
# statsmodels
import statsmodels
print('statsmodels: %s' % statsmodels.__version__)
# scikit-learn
import sklearn
print('sklearn: %s' % sklearn.__version__)
# tensorflow
import tensorflow
print('tensorflow: %s' % tensorflow.__version__)
# keras
import keras
print('keras: %s' % keras.__version__)
cs