JDK 설치 및 변경 (Ubuntu 11.10, 14.10LTS)


우분투 버전 확인

cat /etc/lsb-release
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-8-jdk

선택적으로 아래와 같이 변경 할 수 있다.

sudo update-alternatives --config java
sudo update-alternatives --config javac

원하는 JDK를 선택한다.

Openjdk-7-jdk Lolli-POP
Java 6: for Gingerbread through KitKat
Java 5: for Cupcake through Froyo
There are 2 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                            Priority   Status
------------------------------------------------------------
* 0            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java   1071      auto mode
  1            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java   1071      manual mode
  2            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1069      manual mode

Press enter to keep the current choice[*], or type selection number: 2
update-alternatives: using /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java to provide /usr/bin/java (java) in manual mode
root@jemin-virtual-machine:~# update-alternatives --config javac
There are 2 choices for the alternative javac (providing /usr/bin/javac).

  Selection    Path                                         Priority   Status
------------------------------------------------------------
* 0            /usr/lib/jvm/java-7-openjdk-amd64/bin/javac   1071      auto mode
  1            /usr/lib/jvm/java-7-openjdk-amd64/bin/javac   1071      manual mode
  2            /usr/lib/jvm/java-8-openjdk-amd64/bin/javac   1069      manual mode

Press enter to keep the current choice[*], or type selection number: 2


'Computer Science > Linux and MAC 사용법' 카테고리의 다른 글

Samba 이용한 공유 디렉터리 만들기  (0) 2015.07.09
Ubuntu 한글 설정  (0) 2015.04.26
vi와 vim 연결하기  (0) 2014.10.31
리눅스 터미널 이름 변경 방법  (0) 2014.10.31
리눅스 명령어 정리  (0) 2014.10.25

AOSP 5.1.0 (LMY47I) Build for Nexus 5 (hammerhead) 


Nexus 5 용 Android 컴파일해서 올리기



1. 환경설정


Ubuntu 14.04


sudo apt-get install bison g++-multilib git gperf libxml2-utils make zlib1g-dev:i386 zip


2. 소스코드 다운 받기



$ mkdir ~/bin

~/.profile 에 PATH 추가

PATH=~/bin:$PATH


$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo

$ chmod a+x ~/bin/repo


$ repo init -u https://android.googlesource.com/platform/manifest -b android-5.1.0_r3

$ repo sync -j8

android-5.1.0_r3 (LMY47I) 가 Nexus 5용 최신 branch 이다.

option 'j'의 의미는 동시에 받는 저장소의 갯수이다. 네트웍 환경에따라 늘릴수 있다.







3. 저작권 있는 바이너리 획득



Google Binaries for Nexus series 

위 사이트에서 LM471용을 다운 받았다.

각자 알맞게 다운 받는다.


AOSP root 디렉터리에 받은 3개의 파일을 압축 풀어 준다.



각각을 실행 하면 저작권 메시지가 나온다.


I ACCEPT를 타이핑하면 아래와 같이 정상적으로 제조사별 드라이버 파일들이 추출 되는것을 알 수 있다.



남은 2개의 .sh 파일에 대해서도 모두 같은 작업을 수행 한다.



4. 빌드


빌드 스크립트를 읽어 온다.


$ .build/envsetup.sh





어떤 타입으로 빌드 할지를 선택 한다.




최종적인 빌드 성공시 나오는 결과는 아래와 같다.




4. Flash



Smartphone 상태 변경

$ adb reboot bootloader

bootloader 상태로 이동 시킨다.

OEM Unlock 상태여야 한다.


이동

$ cd ~/Android_Platform/Android_L/out/target/product/hammerhead


전부다 업로드 할 것이라면 아래 명령어를 이용 한다.

fastboot -w flashall 


정상적으로 성공하면 아래와 같은 메시지를 볼 수 있다.





기타 정보


fastboot의 위치

AOSP의 아래에 있다.

out/host/linux-x86/bin






The Build System


Android Build system은 그 어떤 전통적인 Build System과도 닮아 있지 않다.

이렇게 거대한 Open source Project는 존재하지 않았기 때문이다.


make는 사용하지 않는다.

Linux kernel 컴파일시 항상 보았던, menu-config도 없다. 

따라서 이해를 위해서 기존의 임베디드 개발에 익숙한 사람들도 시간을 좀 들여야 한다.



Android Build System은 Android.mk 파일에 의해서 어떻게 동작할지가 기술 된다.

이것들의 갯수는 아래와 같다.


2.3.7 Gingerbread, 1,143

4.2 Jelly Bean 2,037

5.1.0_r3 Lollipop 3849




기존 커널 빌딩은

정적이지만, 안드로이드는 동적이다. envsetup.sh 와 lunch를 통해서 동적으로 사용자와 반응 하게된다.

그리고 조정가능한 요소들이 매우 제한적이다.



Build system은 Objet 파일을 만들어 내지 않는다.

중간 결과 따위가 없다.

대신 out/ 디렉터리에 중간 결과물들이 있다. 이것은 .o 파일 따위가 아니다.


마지막으로 아주 심하게 GNU-make 기능에 의존적이다. 다시말하면 정확히 3.81 version에 의존적이다.

3.82는 패치 없이는 동작하지 않는다.

즉, define, include, ifndef 같은 것들이다.


왜 구글이 Recursive Make를 안쓰는지는

"Recursive Make Considered Harmful", Peter Miller를 확인하자.

여기서 single global makefile 이 왜 좋은지를 알 수 있다.

구글은 module-provided .mk file을 가지고 단일 makefile로 컴파일을 한다.



Architecture



<그림 안드로이드 빌드 시스템의 구조>


build/core 디렉터리에서 main.mk를 찾을 수 있다.

각각의 mk 파일들이 모여서 엄청나게 거대한 단일 makefile로 만들어 지며, 이것은 각각의 작은 프로젝트들을 모두 컴파일 한다.

다시한번 말하지만 여러개의 makefile이 재귀적으로 호출되는 구조가 아니다.


Android system을 make해보면

어느정도 긴시간을 아무것도 출력하지 않는것을 알 수 있다.

도대체 그 시간에 무엇을 하고 있는 것일까?

그 시간에 Android.mk들이 서로 조합되는 시간일 것이다. 이것을 실제로 보고 싶은 경우

build/core/main.mk를 수정 하면 된다.






Configuration



빌드를 configure하는 방법은

envsetup.sh 과 lunch cmmand를 이요하는 것이다.


buildspec.mk 파일은 가능한 요건들을 출력 한다.



TARGET_PRODUCT

generic: 기본적인 것

full: 대부분의 앱들이 가능한 버전이다.

full_crespo: full과 같지만, crespo (nexus S)를 위한것

full_grouper: full과 같지만, grouper (nexus 7)을 위한것

sim: simulator를 위한것 하지만 2.3 (gingerbread)에서만 가능 했다.

sdk: 


TARGET_BUILD_VARIANT

eng: user, debug, eng를 포함한다.

userdebug: user, debug를 포함한다.

user: user를 포함한다.


TARGET_BUILD_TYPE

release 아니면 debug 


TARGET_TOOLS_PREFIX

기본적으로 prebuild에 있는 cross development toolchain을 사용 한다.

다른 toolchain을 사용하고 싶으면 새로 설정하면 된다.


OUT_DIR

모든 결과물을 out 디렉터리에 넣는다.

다른 디렉터리를 설정하면 다르게 할 수 있다.


BUILD_ENV_SEQUENCE_NUMBER



Output



host와 target을 위해서 각각 컴파일을 진행 









'Computer Science > Embedded Android' 카테고리의 다른 글

3. AOSP Jump-Start  (0) 2013.05.07

AOSP의 버전 관리



Overview



AOSP에 포함된 Git repository의 전체 리스트는

android.googlesource.com (Git Web Interface) 

에서 확인 가능하다. 


약 100개가 넘는 repository가 있다. 

Git 명령어로 하나씩 pulling 하는것은 매우 지루한 일이다.


그래서 구글에서는 Repo 유틸리티를 제공한다, 

Repo를 이용하면 이것들을 통합해서 git repositories들이 다운 받아 진다.


Repo는 manifest.xml 파일에 정의된 사항에 따라 Git repository를 받아오게 된다.

각각의 Git repository는 독립적인 Project로 관리 된다.


Repo 명령어의 사용 방법: https://source.android.com/source/using-repo.html#sync



Repo Init


repo init을 통해서 어떤 branch를 가져올지를 정하게 되는데,

https://android.googlesource.com/platform/manifest

platform/manifest 이 부분에 모든 branch들이 정의가 되어 있다.


repo init 뒤의 branch를 생략하게 되면 master branch를 다운 받아지게 된다.

master branch는 진행중인 project이므로 Google Developer들의 주석이나 팁들이 많이 포함되어 있다.

그리고 일반 개발자들이 기여한 코드들도 들어 있다.

따라서 정상적인 동작을 보장하지는 않는다.


이러한 branch들의 확인을 위해서 Git web site에서 직접 봐도 되고 git 명령어를 이용해도 된다.


git clone https://android.googlesource.com/platform/manifest.git

cd manifest



git tag

git branch -a

위 두 명령어를 이용해서 세부적인 리스트를 확인할 수 있다.


그리고 각 Branch 마다 지원하는 Device model과 특성이 다르가. 그것을 이해하기 위해서는

Codenames, Tags, and Build Numbers

를 읽어 보면 된다.


세부 사용법

$ repo init -u <URL> [<OPTIONS>]


Repo를 현재 작업 디렉터리에 설치

.repo 디렉터리를 생성함.

이것은 Repo 소스코드를 위한 Git 저장소와 표준 안드로이드 manifest 파일을 가지고 있다.

manifest.xml 이라는 심볼링 링크도 있다. 이것은 .repo/manifests/directory를 가리킨다.



Repo Sync



repo sync -j8

-j 뒤의 숫자는 병렬로 repository를 읽어올 숫자이다.

현재 network 상황에 맞추어 option을 줄 수 있다.




시도 리스트


Android 5.0.0_r6 프로젝트에

Android 51.0_r3을 repo init와 sync로 받았더니, 그냥 모두 덮어 씌어져 버렸다.






Ubuntu 리눅스가 VMware에서 돌아가고 있다면


1. 메뉴 VM -> Settings 를 실행

2. Options 탭 선택

3. Shared Folders 선택

4. 오른쪽 창 위쪽에서 'Always enabled'를 선택

5. 아래에 공유할 폴더를 추가

6. OK

7. 아래의 디렉터리로 접근 하면 된다.

/mnt/hgfs/E Drive

Bayesian Classifier


Conditional Probability를 이용해서 Classifier를 구현 하는 방법이다.

이번 장에서는 Theorem에 대해서 주로 다루고 실제 구현은 R을 통해서 수행한다.

구현 부분이 궁금하다면 Naive Bayes Classification with R을 보자.


Conditional Probability 계산법

$$P\left( { C }|{ A } \right) =\frac { P(A\cap C) }{ P(A) } $$

이라면, A일때 C의 확률을 구하는 조건부 확률 문제이다.


하지만, A 조건이 결합 확률로써 여러 조건들이 연속적으로 발생 할때의 확률이라면 계산하기는 쉽지 않다.

이때 Bayes Theorem을 적용하면 쉽게 계산을 할 수 있게 된다.



이 알고리즘은

P를 정확히 계산할 수 있다는 전제 하에 가장 성능이 좋은 알고리즘으로 알려져 있다.

하지만 이것은 이론상 그런것일 뿐 실제로는 P를 정확히 계산하기 어렵기 떄문에 그렇지는 않다.




Bayes Theorem의 기초 문제



팀 0은 65% 승리, 이중 30%만이 팀1의 Home 장소에서 이긴것이다.


팀1의 경우 35%의 승리가 있고 그중 75%가 자신의 홈에서 승리한 것이다.


이러한 상황에서 

팀 1이 팀0의 홈에서 경기를 한다면 확률상 어느 팀이 승리할 것인가?



해설


X는 홈이 되는 팀을 나타낸다.

Y는 경기에서 승리한 팀을 나타낸다.

이럴때, X와 Y는 각각 {0,1}사이의 값을 가질 수 있다.


P(Y=0) = 0.65

P(Y=1) = 0,35


P(X=1 | Y=1) = 0.75

P(X+1 | Y=0) = 0.3


이것을 예측하기 위해서는 다음과 같다.


P(Y=1|X=1)와 P(Y=0|X=1) 이 둘의 확률을 계산해서 더 큰 쪽으로 Prediction 하면 된다.


계산 방법은 아래와 같다.



Bayesian Classifier



Bayes Theorem을 이용해서 모든 class에 대한

posterior probability를 계산하여 classifier를 만드는 것이다.





그런다음, 각각의 Class에 대한 확률 값 P중에서 최대가 되는 것을 선택해서 예측 하게 된다.

Bayes theorem을 쓰면, 원래 수식 보다는 조건부가 더 간단해져서 계산하기 쉽지만, 

그래도 여전히 아래와 같이 Joint Probability 이므로 계산하기 쉽지 않다. 







Naive Bayes Classifier 



주어킨 class에 대해서 모든 각각의 Attribute들이 독립적이라고 가정 하면, 
Joint Probability 문제가 간단해 진다.



그렇다면, 어떻게 Data로 부터 Probability를 얻어내는가?


Traning set으로 부터 counting하여 P를 얻어낸다.

결국 discrete attribute에 대해서는 아래와 같은 식이 성립 한다.




□ Example of Naive Bayes Classifier (1) 


아래와 같이 트레이닝 데이터가 주어졌다고 했을때,


x = (Refund = no, Martial Status= Married, Income = 120K)의 Record에 대해서 prediction을 수행 해라.





Taxable Income에 대해서는 Normal Distribution을 따른 다고 가정한다.


sample mean = 110 

sample variance = 2975




문제를 풀기 위해서 주어진 record에 대해서 class = Yes 일때와 No일때의 확률을 구하는 수식은 아래와 같다.






위를 계산하면,

P(X|yes) = 0 이고 P(X|no) = 0.0024 이다.

따라서 Class는 No로 Prediction 된다.




□ Example of Naive Bayes Classifier (2)






독립이라는 가정하에 각각의 Class의 확률을아래와 같이 분리 할 수 있다.







결국 분모는 P(X)로 같으므로, 분자만 비교하면 P(mammals|x) > P(non-mammals|x) 이므로

test record x는 mammals로 prediction 된다.




Probabilistic Learning - Classification using Naive Bayes


과거의 데이터를 분포를 가지고 확률에 기반에서 미래를 예측 하는 기술이다.

18세기 수학자 Thomas Bayes에 의해서 고안된 기초적인 수학 원칙인 Bayesian method에 기반한다.


Bayesian classifier는 

Text classification, such as junk email (spam) filtering, author identification, or topic categorization

Intrusion detection or anomaly detection in computer networks

Diagnosing medical conditions, when given a set of observed symptom


기본적으로 Basian classifier는 정보가 다양한 속성으로 부터 동시에 고려되져야 한다면, 그것을 통해서 확률적인 결과를 예측 해야 한다면

그러한 상황에서 적용할때 최적의 방법으로 알려져 있다.


많은 알고리즘은들은 weak effect를 가지는 feature 들을 무시하는 방법을 택하지만 Bayesian 방법은 모든 미묘한 변화와 가능성을 고려하는 방법을 택한다.


스팸의 경우 스팸이 20% 이면 스팸이 아닌것은 80%인 둘은 항상 총합이 100%가 되는,

Mutually exclusive 하며 exhaustive한 관계를 가지고 있다.









The Laplace estimator


spam filter를 하기위해서 몇가지를 더 고려한다고 가정해보자.

money, groceries, 그리고 unsubscribe 이 세개를 Viagra와 함께 추가로 고려 한다.

이럴때, Naive baytes algorithm을 적용하기전에 spam일 때의 likelihood를 계산해 보면,

$$(4/20)\times (10/20) \times (0/20) \times (12/20) \times (20/100) = 0$$


이렇게 계산 했을 때, ham의 경우

$$(1/80) * (14/80) * (8/80) * (23/80) * (80/100) = 0.00005$$


따라서 spam 일때의 확률은

$$0 / (0 + 0.0099) = 0$$

ham 일때의 확률은

$$0.00005 / (0 + 0. 0.00005) = 1$$

이 된다.


하지만, 이러한 0% 와 100%의 spam과 ham의 예측은 타당하지 않다.

가끔은 viagra도 합당한 e-mail에도 쓰일 수 있다. 그래서 절대적으로 spam이라고 단정 할 수는 없는 것이다.


이러한 문제는 과거에 해당 이벤트가 한번도 해당 클래스 레벨에서 관측 되지 않았다면 매번 발생 하는 문제이다.

Groceries라는 단어가 과거의 spam에서 발견되지 않았다면,

P(spam|groceries) = 0%이고 따라서 절대적으로 spam이 아닌 결과를 도출 하게 된다.

데이터를 관측하지 못해서 정확도가 올라가는 현상은 매번 심각히 고려야할 문제로 다뤄 왔다.


이것을 해결하는 하나의 방법으로 Laplace estimator를 사용하는 방법이 있다.

프랑수 수학자 pierre-simon laplace에 의해서 고안된 것이다.

이것은 zero feature를 막기 위해서 최소한 1의 count 값을 모든 feature에 추가하는 방식을 말한다.

1을 각각 추가해서 이전의 식을 재수행하면 아래와 같다.

$$(5/24) * (11/24) * (1/24) * (13/24) * (20/100) = 0.0004$$

각각의 feature에 1을 추가하면 전체에 총 4를 추가한다. 모두 각각 4개의 feature가 기록 되었기 때문이다.


ham의 값은

$$(2/84) * (15/84) * (9/84) * (24/84) * (80/100) = 0.0001$$


이것을 이용해서 각각의 확률 계산해 보면,



Using numeric features with naive Bayes 


naive bayes를 적용하기 위해서는 빈도 테이블이 있어야 한다. 따라서 각각의 feature들은 카테고리컬 해야하며 메트릭으로 구성 되어야 한다.


해결방법은 discretization을 수행 하는 것이다.

이렇게 할려면 각각의 bin 설정을 위한 cut point를 설정 해야 한다. 따라서 이러한 discretization 기법을 binning이라고도 부른다.


여기서는 시간을 이용해서 cut point를 설정 했다.

아래의 histogram을 보면 자연적으로 4개의 구분으로 나눠지는 것을 알 수 있다.

이렇게 나눠진 numeric data들은 각각의 구획에 따라서 nominal feature들로 변환 되어서 naive bayes에 적용된다.


만약 discretization을 하기가 명확하지 않다면, 하나의 선택적 방법은

분위수를 수행 하는 것이다.


하지만 이러한 discretizing은 언제나 정보 손실을 가져온다는 것을 유념해야 하며,

따라서 balance를 유지하기 위해서 노력 해야 한다.

너무 적은 bin은 중요한 경향을 놓치게하며, 너무 많은 bin은 naive bayes에 적용하기에는 부족한 빈도 table을 생성하는 경향을 보이기 때문이다.





Bayesian Network  



기존의 Naive Bayesian의 경우 모든 Attribute가 독립 적이라는 가정을 하고 Classification을 수행하기 때문에 문제가 발생한다.


어느정도 의존성을 고려해서 처리하고 싶을때 지금 소개하는 Bayesian Network을 사용 한다.


아래 보여지는 Network은 기존의 Naive Bayes Classifier를 Network으로 나타낸것이다. 보이는 봐와 같이 Class 정보인 play에만 의존성이 있고 각각의 Attribute에 대해서는 모두 의존성이 없는 모습을 가진다.






그럼 이제 어느정도 의존성이 있는 Network을 가지고 Prediction을 수행해 보자.



아래와 같은 데이터에 대해서 Play는 무엇으로 Prediction 되어 질 수 있는가?



위의 주어진 레코드를 x로 두면


P(Play = Y |X), P(play = N |X) 둘 중에서 더 큰 확률 값을 가지는 것으로 prediction하는 문제가 된다.


이때 모든 Joint Probability를 고려 하면,



이중에서 network을 고려해서 실제 의존성이 있는 것들만 남기면 다음과 같다.

각각의 확률 값들은 표에 나온 미리 계산된 확률값을 그대로 이용 한다.



Play=no에 대해서도 계산하면 다음과 같다.



최종적으로 계산하면 아래와 같다.



결국 두개의 확률을 비교 하면 Play=YES가 더 크기 때문에 해당 값으로 prediction 된다.

















'AI > Theory' 카테고리의 다른 글

Deep Learning  (0) 2015.06.03
Association Analysis Basic Concepts and Algorithms  (0) 2015.04.27
K Nearest Neighbors - Classification  (0) 2015.04.23
Performance Evaluation  (0) 2015.04.19
Classification: Decision Tree  (2) 2015.04.19

K Nearest Neighbors - Classification



Unseen Data가 들어 오면, Traning Data를 그대로 사용하여 majority voting을 통해서 class를 결정하는 방법을 말한다.





구현을 위해서 필요한 사항

1) 트레이닝 데이터들을 모두 보관한다.

2) Distance Metric을 사용하여 Unknown record와의 거리를 계산 한다.

3) k개의 neighbor와 반복해서 Distance를 계산 한다.

4) 최종적으로 Majority voting을 통해서 prediction 한다.



입력된 테스트 데이터 (x', y')과 Traning Data (x,y)와의 distance 또는 Similarity를 계산 한다.


그다음 nearest - neighbor list로 구성된 D_z가 발견되면, D_z 내에서 majority voting을 통해서 class를 파악 한다.


Majority voting 방법은 아래와 같다.


위 식에서 

v는 + 또는 -와 같은 어떤 class label을 나타냄.

y_i는 nearest neighbors의 class label이다. 

I() 함수는 true 이면 1을 아니면 0을 return하는 indicator 이다.


 


위와 같은 경우 아래와 같이 된다.


  


는 최대가 되는 argument 즉, v를 return 하는 것이다.




K-NN의 특징



결국 Distance metric을 이용해서 nearest neighbor를 계산하는 방법이기 때문에 Distance metrix에 다분히 의존적인 방법이다.


보통 사용하는 Distance Metric은 아래와 같다.




위 Metric 중에서 우리가 Euclidean을 사용 한다면, 아래와 같은 문제점이 생길 수 있다.


□ Scaling issues: Distance measure를 사용 하므로 이러한 문제가 발생 한다.

모든 크기를 0~1 사이로 맞추는 방법을 사용할 수있다.

Mahalanobis distance를 사용하는것이 해결 방법이 될 수도 있다.



□ High Dimensionality: curse of dimensionality



위와 같이 2개의 Euclidean measure는 동일한 값을 나타낸다.


하지만,

0은 의미 없는 값이라고 했을 때 0이 많다고해서 두개가 유사한것은 문제가 된다.


이것을 보정하기 위해서 vector의 길이로 각각을 나누어 준다.


첫번째 vector의 length = 


두 번째 vector의 length = 


이것으로 각각을 계산하면




□ Laze Learner의 방법


명시적으로 model을 생성하지 않으므로 상대적으로 online prediction time이 길어 진다.


performance에 영향을 주는 factors

Distance metric의 종류

K의 수를 얼마로 정할 것인가 이다.


















'AI > Theory' 카테고리의 다른 글

Association Analysis Basic Concepts and Algorithms  (0) 2015.04.27
Bayesian Classifiers  (0) 2015.04.23
Performance Evaluation  (0) 2015.04.19
Classification: Decision Tree  (2) 2015.04.19
Data Type and Data preprocessing  (0) 2015.04.18

Methods for Performance Evaluation


어떻게 성능을 측정할 것인가?


이것은 Learning 알고리즘에 의존적인 문제이다. 생각해 볼 수 있는 지표들은 아래와 같다.


Class of distribution: 균등함의 정도를 나타낸다.

Cost of misclassification

Size of training and test sets



Holdout 방법 

Reserve 2/3 for training and 1/3 for testing 으로



Metrics for Performance Evaluation






Computing Cost of Classification


주어진 Cost  Matrix





Sensitivity and Specificity


바이너리 classification test에서 주로 사용 하는 통계적인 measure가 Sensitivity와 specificity 이다.


Wikipedia: URL


Sensitivity는 

True positive rate

recall

로 불린다.

Specificity

True negative rate


예측한것 들 중에서 실제로 negative 인것 / 전체 negative 인것












좀 더 읽어보기


Practical Machine Learning post

Receiver Operating Characteristic, Cross validation












'AI > Theory' 카테고리의 다른 글

Bayesian Classifiers  (0) 2015.04.23
K Nearest Neighbors - Classification  (0) 2015.04.23
Classification: Decision Tree  (2) 2015.04.19
Data Type and Data preprocessing  (0) 2015.04.18
Support Vector Machine  (0) 2015.04.17

Classification: Decision Tree


Classification은 미리 정의된 카테고리들 안으로 어떤 하나의 object를 어사인하는 작업을 말한다.

이것은 많은 응용들이 가지는 문제에 적용 되어 질 수 있다.


예를 들면, spam 찾기, 세포의 malignant 구분, galaxy의 종류 구분 등에 적용 할 수 있다.

이러한 것들은 supervised learning의 한 종류이며,


가장 간단한 형태인 Decision Tree에 대해서 다루도록 하겠다.




Hunt's Algorithm



해당 알고리즘을 이해하기 위해서 채무 불이행 (Defaulted Borrower)문제를 풀어 보도록 하자.


D_t는 node t와 연관된 training record들의 set이라고 하자.

y = {y1, y2, ... yc}는 class label들 이라고 하자.

위와 같은 조건하에서 아래와 같이 Algorithm을 정의 한다.


Step1: 

D_t에 있는 모든 레코드가 같은 class y_t륵 가진다면, t는 어떤 leaf node가 되고 y_t로써 labeling 되어 진다.

Attribute test를 또 할필요도 없이 impurity가 0이므로, 즉 100%인 것이다. 논란의 여지 없이 leaf node를 y_t로 만들면 된다.


Step2: 

    만약 D_t가 empty set이라면, t에서의 leaf node는 default class y_d로 라벨 되어 진다.

y_d는 전체에서 다수의 test set을 가지는 것을 말한다.


Step3:

D_t에 있는 레코들이 두개 이상의 y_t 클래스를 가진다면, attribute test를 사용해서 data를 더 작은 subset들로 분할 한다.

이 작업을 나눠진 각각의 subset에대가 반복 한다.

핵심은 이 attribute test로 적절한 condition을 찾는 것이다.





위의 이전 데이터를 가지고 아래의 Decision Tree를 생성하는 과정을 보여 준다.

(a)를 보면 채부 불이행(Defaulted)가 No이다. 이러한 의미는 모든 사용자가 대출이 가능하다는 것을 뜻한다.


(b)와 같이, Home Owner를 Root로 해서 더 작은 Subset으로 나눠지는 형태의 트리를 구성 한다.

이렇게 어떤 Root 노드를 선택할 것인지에 대한 Attribute test에 관한 이야기는 나중에 다룬다. 일단 저렇게 했다고 생각하자. 

단지, HomeOwner는 spliting을 하기 위환 best criterion이라고 생각하자.


Hunt's Algorithm은 이제 다시, 각각의 child node들의 root에 똑같은 방법을 다시 적용하게 된다 (recursively).


(c)에서 HomeOnwer =yes 인 사람들은 모두 Defaulted = No 이므로 더이상 분할 하지 않는다.

하지만 오른쪽의 경우 즉 HomeOwner=No인 경우를 보면, 

총 7개의 Training Data중에서 

3개의 Defaulted = Yes

4개의 Defaulted = No 로 구성 되어 진다.

따라서 단일 class로 구성 될 때 까지 계속 분할 해야 한다.

이러한 작업을 반복하면 (d)와 같은 모습을 나타내게 된다.








Measures for Selecting the Best Split


가장 최적의 split way를 찾는 문제는 많이들 연구를 해왔다. 이중 몇가지를 소개 하겠다.


p(i|t)라는 것을 t 노드에서의 i class의 비율이라고 생각하자.



C0에 대해서 10개의 레코드가 있고,

C1에 대해서 10개의 레코드가 있다고 하면

P(C0,C1)은 P(0.5, 0.5)가 된다. 동일한 수의 레코드가 각각의 class에 대해서 존재하기 때문이다.


하지만, 이것을 하나의 Attribute를 기준으로 Split하게 된다면 아래와 같은 Tree 형태로 나타내어 진다.





이떄 과연 우리는 무엇이 더 좋은 구조라고 말 할 수 있는가.


이것을 measure 하기 위해서 impurity라는 개념을 도입 한다.

impurity란 class의 분포가 skewed (편향됨) 한 정도를 나타낸다.

즉, impurity가 높다는 것은 평향되지 않다는 것을 의미한다.


P(0,1)이 zero impurity를 가지며, P(0.5, 0.5)가 가장 높은 impurity를 가진다.




Gain이 클려면 결국, M12, M34와 같은 Impurity가 낮아야한다.

그리고 M12, M34를 구하기 위해서는 weighted average를 이용해서 구하게 된다.



결국 impurity가 높다는것은 error가 높다는 것을 의미한다, 편향됨의 정도가 높아야 prediction 했을 떄의 error가 적게 된다.

이러한 impurity를 measure는 지표는 아래와 같다.



위 식에서 c는 number of classes가 된다.


위식과 weighted average를 이용해서 각각을 split node를 찾기위한 수식은 아래와 같다.



주어진 Node t에서의 GIni Index는 아래와 같다.



P(j|t)는 t의 노드에서 j 클래스의 빈도를 나타낸다.


최대의 경우 n_c가 클래스의 총 숫자를 나타내는데, 모든 래코드가 모든 클래스에 대해서 분포를 가진다면, 그 때 GINI indext가 가장 큰 값을 나타낸다. 즉, 10개의 클래스가 존재하는데 해당 노드 t에서 포함되는 모든 레코들이 10개의 클래스에 대해서 모두 분포를 가지고 있다며, 이때 가장 impurity가 높게 되는 것이다. 이러한 때를, least interesting information 이라 한다.


최소의 경우, 모든 record가 단 하나의 클래스만을 가지고 있을 때이다. 이때는 0이되며, most interesting information 이라고 한다.


어떤 노드 p에서 k partitions (children)으로 split 할때 split의 quality를 다음의 수식으로 계산 한다.



n_i / n은 weighted average를 구하기 위한 수식 이다.




주어진 노드 t에 대해서 Entropy 계산은 아래와 같다.


위 식의 의미를 살펴 보면,



의 식이 계속 확률에다가 곱해지는 형태가 된다. 즉 확률이 크면 클수록 로그값이 작아진다,

따라서 확률이 높은 것들은 확률을 낮춰주고, 확률이 낮은것들은 확률을 높여주게 된다.


이것을 이용해서 사용되어지는 평균 비트수를 줄일 수 있다고 한다.

허프만 코드 적용에 유용하게 사용 할 수 있다.



Information Gain


Parent Node p is split into k partitions

n_i is number of records in partition i



node t에서 Classification error를 이용하는 방법.





계산 방법 예제






Binary Classification Problem에 대해서 3개의 measures를 기하학 적으로 표현 하면 아래와 같다.


x축은 p의 확률 이며,

y축은 impurity 이다.


Gini의 경우에 살펴보면,


C0: P

C1: 1-P


Gini Index의 정의에 따르면 Impurity 수식은







의사결정트리 분석의 장점


결정트리를 통한 데이터 분석의 결과는 나무(Tree) 구조로 표현되기 때문에 분석가가 결과를 쉽게 이해하고 설명할 수 있는 장점이 있다. 


분류율에 대한 정확도만 따지자면 신경망(Neural Network) 또는 로지스틱 회귀분석 등의 분류 방법들 보다 낮게 평가되기도 하지만 결과를 쉽게 이해하고 설명할 수 있으며 의사결정을 하는데 직접적으로 사용할 수 있는 장점이 있기 때문에 데이터마이닝 적용시 매우 많이 사용되고 있다. 



의사결정트리 분석의 한계


일반적인 결정트리 알고리즘은 갖는 한계, 단점을 아래에 나열하였다. 


[1] 데이터의 특성이 특정 변수에 수직/수평적으로 구분되지 못할 때 분류율이 떨어지고, 트리가 복잡해지는 문제가 발생한다. 신경망 등의 알고리즘이 여러 변수를 동시에 고려하지만 결정트리는 한 개의 변수만을 선택하기 때문에 발생하는 당연한 문제이다. 


[2] 결정트리는 Hill Climbing 방식 및 Greedy 방식을 사용하고 있다. 일반적인 Greedy 방식의 알고리즘이 그렇듯이 이 방식은 최적의 해를 보장하지는 못한다. 


[3] 약간의 차이에 따라 (레코드의 개수의 약간의 차이) 트리의 모양이 많이 달라질 수 있다. 두 변수가 비슷한 수준의 정보력을 갖는다고 했을 때, 약간의 차이에 의해 다른 변수가 선택되면 이 후의 트리 구성이 크게 달라질 수 있다.  









'AI > Theory' 카테고리의 다른 글

K Nearest Neighbors - Classification  (0) 2015.04.23
Performance Evaluation  (0) 2015.04.19
Data Type and Data preprocessing  (0) 2015.04.18
Support Vector Machine  (0) 2015.04.17
Perceptron and Multiclass perceptron  (0) 2015.04.06

Data Type and Data Preprocessing




Data Type



categorical or qualitative attribure

Nominal: values that are distinct symbols

ex: ID numbers, eye color, zip codes

Ordinal - possible to rank the categories

ex: height in (tall, medium, short)


numeric or quantitative attribure

interval: values that are ordered and measured in fixed and equal units

ex; calendar dates, temperatures in celsius or fahrenheit

ratio: treated as real numbers

ex: length, mass, counts



Attribute values의 특성



Nominal attribute는 distinctness 로 구별이 가능한 것들을 말한다.

Ordinal attribute는 distinctness & order 이다. 

Interval attribute는 distinctness, order & addtion

Ratio attribute: all 4 properties



Types of data sets

- Record data

레코드들이란 고정된 attribute들의 집합으로 구성 된 것들을 말한다.


- Data Matrix

여러개의 dimension을 지원하는 데이터 형태이며,

각각의 dimension들은 하나의 distinct attribute가 된다.


- Document Data

각 도큐먼트들은 어떤 'term' vector가 된다.

각각의 term들은 백터의 컴포넌트가 된다.



- Transaction Data

레코드 데이터의 특별한 타입을 말한다.



- Graph Data

HTML 이나 Web에서 주로 사용 한다.


- Ordered Data

Genomic sequence data






Data pre-processing


Aggregation

Sampling

Dimensionality Reduction

Feature selection

Feature extraction

Discretization and Binarization

Attribute Transformation



The curse of Dimensionality


Dimension이 증가하면 전체 공간에서 data가 차지하는 비중이 작아 지게 된다.





Similarity and Dissimilarity


Similarity

두 데이터가 numerical 할때 둘 사이의 유사도를 비교하는 것이다.

값이 높다면 좀더 유사하다고 할 수 있다.

이것은 [0,1] 사이의 값을 가진다.


Dissimilarity

Numerical measure에 대해서 두개의 object들이 얼마만큼 다른지를 판별 한다.

낮은 값은 좀더 alike 하다고 할 수 있다.

최소의 dissimilarity는 0이다.

최대는 보통 제한이 없다.

1로 맞추기 위해서는 range를 알아서 그 값으로 나누어야 하는데, 구지 그러한 노력을 하는 것이 큰 의미가 없기 때문이다.






Distance의 종류

  • Euclidean
  • Minkowski 
  • Mahalanobis 





Euclidean Distance


백터의 개념을 집어 넣을 수 있기 때문에,

n은 dimensions(attributes)의 수이다.

하나의 attribute들이 x,y,z,... 이 되고

이것들이 각각 차원이 되므로


공간상에 두 점을 잊는 백터의 길이가 Euclidean Distance라고 할 수 있다.




예제를 통한 계산


p1과 p2







Minkowski Distance 


generalization of Euclidean Distance 


r은 어떠한 parameter 이다

n은 dimension의 수이다. 즉, attribute의 수이다.

p와 q는 서로다른 데이터 오브젝트를 의미한다.


이제 각각의 r에 따라서 알아 보겠다.




Hamming distance는 2개의 binary vector들 사이에 서로다른 bit의 수를 나태내게 된다.




위와 똑같은 데이터를 가지고
r에 따른 Minkowski Distance를 계산해 보자.

r=1의 의미는 Hamming Distance를 계산 하는 것이다.




Mahalanobis Distance  


각 dimension들간의 scale이 차이가 심하여, Distance에 크게 영향을 미치는 현상을 제거하는 것이다.
즉, 원래의 타원형 데이터를 원형으로 다시 re-scaling 하여 계산 하는 형태이다.



공분산 행렬 (co-variance Matrix)이 아래와 같다고 치자.



참고




co-variance (공분산)을 구하는 방법.

m은 데이터의 갯수를 의미한다.

i는 하나의 attribute, 하나의 dimension을 의미하고

j는 또 다른 하나의 Attribute를 의미한다.


각각의 데이터를 평균과 뺀 다음 둘을 곱한것들의 합이기 때문에


양수가 나오는 경우 (+)(+), (-)(-) 형태의 데이터가 많은 것을 나타내며,

음수가 나오는 경우 (+)(-), (-)(+) 형태의 데이터가 많은 것을 나타낸다.


따라서,

Covariance가 양수면 두개의 attribute들이 비례 관계를 가지는 것을 의미한다.

음수라면, 두개의 attribute들이 반비례 관계를 가지는 것을 의미한다.



마지막, 

의 뜻은

각 dimension에서의 covariance combination을 타나내는 matrix을 의미한다.


two dimension의 경우 2x2 matrix이 생성 되고

n dimension의 경우 nxn의 matrix이 생성된다.







Distance와 Similarity 사이 에서의 일반적인 성질에 다해서 다루워 보겠다.









Cosine Similarity





Binary Vector의 경우


Simple Matching Coefficient (SMC)

number of matches / number of attributes


Jaccard Coefficient (useful for asymmetric attribute)

J = number of 11 matches / number of not-both-zero attributes values





Correlation






















'AI > Theory' 카테고리의 다른 글

K Nearest Neighbors - Classification  (0) 2015.04.23
Performance Evaluation  (0) 2015.04.19
Classification: Decision Tree  (2) 2015.04.19
Support Vector Machine  (0) 2015.04.17
Perceptron and Multiclass perceptron  (0) 2015.04.06

Support Vector Machine


Classification technique 의 한 종류이다.

statistical learning theory에 근간을 두고 있다.

해당 알고리즘은 많은 실제 응용프로그램에서 높은 성능을 나타내게 된다.


handwritten digit recognition to text categorization 등에 사용된다.

curse of dimensionality에 강건한 모습을 가진다.


이것의 unique한 ascpect는

traning data의 subset만을 가지고 decision boundary를 결정 한다는 점이다.

이러한 training data의 subset을 support vector라고 한다.


일단은 linearly separable data를 가지고 linear SVM을 트레이닝 하는 방법을 배운다.



Linear SVM: Separable Case


그다음 non-linearly separable data에 대해서 SVM을 이끌어내는 방법을 배운다.



아래와 같이 2개의 영역으로 Classification 하는 문제에서

Hyper-plane은 무수히 많이 나올 수 있다.


이중 최적의 Hyper-plane은 무엇 일까?



그것은 아래와 같이 최대의 margin을 가지는 hyper plane일 것이다.



이렇게 최대 마진을 가지는 B1은 B2보다 노이즈에 강건하기 때문에 좋은 성능을 가지게 된다.

즉, generalization error가 적어지는 효과가 있다.




이러한 최대 margin을 가지는 hyperplane을 찾는 방법은 아래와 같다.




Wiki 피디아




Linear Decision Boundary


각각의 Example의 Tuple (xi,yi) 이다. i는 1,2,...N 이다.




그리고 전통적으로 y는 2개의 class 문제로써



이럴때 Decision Boundary는 아래와 같이 정의 된다.


여기서 w와 b는 모델의 파라메터가 값이 된다.


b는 bias로 threshold 값이 된다.

결정을 할때 특정 임계값을 줘서 그 강도를 조절 할 수 있다. 




위 그림은 이차원 training set 데이터를 나타낸다. 각각의 training data들은 사각형과 원형을 가지고 있다.


만약 2개의 점이 decision boundary 안에 위치 한다면, 아래의 식을 만족 한다.



여기서 x_b - x_a는 

Decision boundary와 병렬인 어떠한 벡터가 된다. 그리고 이것은 x_a에서 x_b로 직접적으로 가게 된다.


w와의 dot product는 0이기 때문에 벡터 w의 방향은 decision boundary와 반드시 직교하게 된다. 이것의 그림은 위와 같다.


이제 x_s는 decision boundary의 위에 위치 한다고 하고 우리는 이것을 아래와 같이 기술 할 수 있다.









Margin of a Linear Classifier 


decision boundary와 가장 가까운 square와 circle을 우리는 고려 해 볼 수 있다.
사각형은 decision boundary 위에 위치하기 떄문에, 그것은 반드시 

을 만족 한다. 즉, k는 어떠한 positive 값이 된다.


반면에 circle은 반드시 

을 만족 한다. 즉 k'은 어떠한 negative 값이 된다.

2개의 parallel hyperplanes 

를 설명하기 위해서 

decision boundary의 두개의 파라메터 w와 b를 다시 설정 한다.



decision boundary의 margin이란 결국 주어진 2개의 hyper-plane들 사이의 거리를 의미 한다.


이 margin을 계산 하기 위해서,

우선 은 b_i1 위에 있는 데이터 포인트 이다. 그리고 x_2는 bi2위에 있는 데이터 포인트 이다. 

이러한 모습은 위 그림과 같다.


2개의 점에서의 차이는 첫번째 equation에서 second equation을 빼는 것이다.

이것을 유도하면 아래와 같다.



핵심은 x1-x2가 다른 선이라도 smallest distance from each class 이기 때문에

가장 단거리 d를 의미하고

그것과 법선 벡터 w와는 cos 0로 값은 1이다.

따라서 위와 같이 간소화 될 수 있다.




Learning a Linear SVM Model 


Training 단계에서의 SVM은 

파라메터 decision boundary의 파라메터 w와 b를 트레이닝 하게 된다. 트레이닝 데이터로 부터


파라메터들은 반드시 다음과 같은 2개의 조건을 만족 하게 된다.



먼역 y=1이라면 모든 트레이닝 데이터들은 반드시 hyper plane 위에 위치 해야한다.


이와 반대로, y = -1이라면 그것은 반드시 hyperplane 아래에 위치하게 된다.

이러한 두개의 inequality는 다음과 같이 좀더 compat 한 수식으로 요약된다.




SVM의 decision boundary가 반드시 maximal 이어야 한다는 조건은 다음의 수식이 minimizing 되어야 한다는 의미와 같다.




Definition 5.1 (Linear SVM: Separable Case). The learning task in SVM can be formalized as the following constrained optimization problem: 








Dual Problem


기존의 문제가 Lagrange multipliers를 이용해서 Dual problem으로 변경 되어 질 수 있다.






Linear SVM: Non-separable Case



이전에 정의한 decision boundary는 mistake-free 한것들만 정의 했었다.

하지만, 소수의 데이터가 대부분의 데이터 보다 너무 멀리 떨어져있고, 이것이 Noise일 가능성이 있다면,

어느정도 이러한 noise들을 무시하는 tolerable to small training error를 가지는 SVM을 설계할 수있다. 이것을 soft margin이라고 한다.


더욱이 not linearly separable 하다면 이러한 soft margin은 더더욱 필요하게 된다.





Nonlinear Support Vector Machine



이제는 아에 not linearly separable data들에 대해서 다루도록 하겠다.


이때는 original coordinate space x를 아에 새로운 space로 transform 하게 된다.





아래의 기존 2차원 space를 transform 하게 되면,

더 높은 dimensional space로 변경하게 되면 아래와 같이 된다.

이것은 linearly separable data의 분포로 변경이 되어진다.






Kernel Method


하지만 위와 같은 transform 되는 higher dimensional space의 존재 여부를 알아내는 것이 매우 어려운 문제가 된다.


이것을 해결하기 위해서 Kernel Method를 사용하게 된다.

이것을 통해 의 존재를 알 수 있다.



 




Characteristics of SVM


Try to find the global minimum of the objective function

 - ANN tends to find locally optimum solutions


SVM is an algorithm for binary class problem


How to apply for multi-class problems

- one-against rest approach

- one-against-one approach

- Error-correcting output coding (ECOC)







'AI > Theory' 카테고리의 다른 글

K Nearest Neighbors - Classification  (0) 2015.04.23
Performance Evaluation  (0) 2015.04.19
Classification: Decision Tree  (2) 2015.04.19
Data Type and Data preprocessing  (0) 2015.04.18
Perceptron and Multiclass perceptron  (0) 2015.04.06

R을 써야 하는 이유?


하나의 연구를 마무리 짓기위해서는 검증 실험이 절대적이다.

이러한 상황속에서 논문을 한편 쓰고나면 엄청나게 많은 데이터들이 난잡하게 파일로 남는것을 알 수 있다.


엄청난 양의 임시파일 

스크립트코드

중간 결과물


여기서 문제는 논문은 보통 여러차례 reject 맞는 것이 일반적이다. revision을 하려고 보면 기억도 나질 않는다.

다시 그래프를 그리고 데이터를 해석하기 위해서는 이전 데이터를 다시 봐야하는데 그럴때 참 많은 어려움을 느낀다.


그나마 프로그램을 엑셀과 같이 1개만 쓰면 모를까

통계 처리를 위해서 SPSS 등과 같은 SAS 프로그램을 사용 했다면 일은 더욱더 복잡해 진다.

이러한 데이터 관리와 처리의 문제를 RStudio를 통해서 해결해 보자.



R의 언어적 장정

백터를 이용해서 데이터를 처리한다. 이러한 자료구조는 전통적인 언어에서 지원하지 못하는 기능이다.

loop대신 apply 종류의 함수를 이용하므로 엄청난 실행 향상을 가져오며 계산의 단순함을 가져온다.

atomic operation을 목표로하므로 하나하나의 기능은 단순하지만 조합하면 무엇이든 할 수 있다.

부분적으로 함수 언어의 형태를 가지므로 병렬화에 용이하다. 하둡과 맵 리듀스에 적용하기 쉽다.







Perceptron



perceptron이란 가장 간단한 형태의 Neural Network을 말한다.




위와 같은 형태를 가지며, Hidden layer가 존재 하지 않는다.

입력 노드들은 X1~Xn까지 존재하며 각각의 weighted link들과 product 되어 진다.

어떠한 Activation function을 작동 시키는 t가 존재하며, 이러한 t는 threshold의 약자이다.


이것을 정리하면 아래와 같은 수식을 얻을 수 있다.




위 식을 다시 정리 하기위해서, threshold를 표현하면 아래와 같다.


이것을 이용해서 다시 표현하면,



이제 우리는 학습을 통해서 linearly separable한 data에 대해서 구분을 해주는

hyperplane을 찾는 것을 수행 하는 것이 목적이다.






Perceptron Learning Algorithm (PLA) 을 나타내면 아래와 같다.




1) 초기의 weight vector를 결정해 준다. 이것을 통해서 초기의 hyperplane을 생성 한다.

2) 을 예측 한다.

3) 예측된 y값과 실제값을 비교 한다. 아래의 수식에 의해서 값이 다를 경우 weight 값이 보정되고 hyperplane이 이동하게 된다.

실제값은 결국 {1,-1} 사이의 값을 같는다고 하면,

1인데 -1이 나오면 2가 되고

-1인데 1이 나오면 -2 가 된다.

위와 같이 prediction이 정확하지 않는다고 하면, 아래의 방법대로 weight 값을 업데이트 하게 된다.


예측값이 음수인 경우, y=+1 ,y(hat) = -1 ( y-y(hat)) = +2

에러에 대한 보상을 위해서 예측되는 값을 증가 시켜줘야 한다. 

이것을 위해서 양수인 입력 값들에 대해서는 weight 값을 증가 시켜 준다.

음수인 입력 값에 대해서는 weight 값을 낮춰 준다.


예측값이 양수 인 경우, y=-1,y(hat) = + 1 ( y-y(hat)) = -2

에러에 대한 보상을 위해서 예측된 값을 낮춰 준다.

이것을 위해서 양수인 입력 값에 대해서는 weight 값을 낮춰 준다.

음수인 입력 값에 대해서는 weight 값을 증가 시킨다.




실전 문제 풀이

초기 직선의 방정식: w2x2 + w1x1 + w0x0 = 0이라는 직선의 방정식으로 구성된 hyperplane을 생각해 보면


직선의 방정식: 2x1 + x2 = 0  // x2 = -2x1

실제 데이터 vector는 아래와 같다고 가정한다.

j를 의미 한다. 

 i를 의미한다.

 x0

x1 

x2

 1

 1

1

-1 

-1 

 1

-1 

-1 

 1

-1 

-1 

-1 



위 알고리즘에 따라 순차적으로 실행해 보면,


1) y와 y^ 이 동일, weight 수정 없음

2) y = -1 , Y^ =1


위와 같이 weight 값이 조정되어서


수정된 직선의 방정식은 1x1 + 2x2  -1 = 0  




새롭게 수정된 Hyperplane에 의해서 나머지 데이터들은 모두 제대로 prediction 된다.



실제와는 다르지만 아래와 같은 느낌으로 계속 조금씩 이동하면서 Hype-plane을 찾아 간다고 생각하면 된다.







If not linearly separable ?






위와 같은 경우를 XOR 문제라고 하며 linearly separable한 Hyper-plane을 찾을 수 없는 경우이다.


이것을 해결하기 위해서 Hidden Layer라는 것을 위치 시키게 된다.


이제 XOR 문제를 풀어 보면 아래와 같다.



 

 x1

x2 

hyper-plane1 

hyper-plane2 

 -1

-1 

 1

 1

-1

-1 

 -1

-1 



hyper-plane 1: x1-x2+0.5 = 0

hyper-plane 2: x1-x2-0.5 = 0


마지막 activation function의 hyperplane = -[x1+x2+0.5] =0

앞에 -를 붙이는 이유는 (-1,1)이 -1 이게 떄문이다. Hyperplane이 반대로 작용하게 된다.










'AI > Theory' 카테고리의 다른 글

K Nearest Neighbors - Classification  (0) 2015.04.23
Performance Evaluation  (0) 2015.04.19
Classification: Decision Tree  (2) 2015.04.19
Data Type and Data preprocessing  (0) 2015.04.18
Support Vector Machine  (0) 2015.04.17

Amdahl's law


Gene Amdahl에 의해서 만들어진 법칙이다.



어떤 시스템의 P만큼 부분을 S만큼 개선하면


전체 시스템에서의 최대 성능 향상은 아래의 식을 따른다.




즉, 이것을 병렬처리에 적용하면 아래와 같다.

S만큼 개선이라는 말은 CPU 갯수를 의미한다. 2개면 2배, 3개면 3배이다.

P만큼 부분이라면 CPU를 늘렸을때 향샹되는 것이기 때문에 병렬화가 가능한 Instruction의 수이다.


proof of Amdahl’s Law

Suppose an algorithm needs n operations to compute the result. With 1 processor, the algorithm will take n time units. With N processors, the (1f)n parallelizableoperations will take (1f)n time units and the remaining fn non parallelizable operations will take fn time units for a total running time of fn+(1f)nN time units. So the speedup S is nfn+(1f)nN=1f+1fN.



예를들어, P가 40%로 0.4이고 S가 2배 향상되어 2라면 아래와 같다.




이러한 Amdahl's law는 병렬 컴퓨팅에서의 멀티 프로세서에 따른 성능향상을 설명할때 사용 된다.



위의 그림과 같이 병렬 컴퓨팅에서 멀티프로세서를 사용할 때 프로그램의 성능향상은 프로그램의 순차적인 부분에 의해 제한된다. 예를 들면, 프로그램의 95%가 병렬화 할 수 있다면 이론적인 최대 성능 향상은 아무리 많은 프로세서를 사용하더라도 최대 20배로 제한된다.



'Computer Science > 컴퓨터 구조' 카테고리의 다른 글

Purpose of memory alignment  (0) 2014.11.25
4. 멀티 프로세서  (0) 2013.06.09
성능평가 방법  (0) 2012.11.21

Writing for Computer Science - Style Specifics




Titles and Headings 



Titles and headings


간단하고 짧고, 정확하게 써라


A New signature File Scheme Based on Multiple-Block Descriptor Files for Indexing Very Large Data Bases

Signature File Indexes Based on Multiple-Block Descriptor Files


An Investigation of the Effectiveness of Extensions to Standard Ranking Techniques for Large Text Collections

Extensions to Ranking Techniques for Large Text Collections




Titles and section headings do not have to be complete sentences; indeed, such titles can look rather odd.

Duplication of Data Leads to Reduction in Network Traffic

Duplicating Data to Reduce Network Traffic



They recommend that we use only two levels of headings, major and minor, and to only number major headings.


more subsections often seems fussy.



The opening paragraphs



opening sentence should be direct and straightforward.


Trees, especially binary trees, are often applied - indeed indiscriminately applied to management of dictionaries.

Dictionaries are often managed by a data structure such as a tree, but trees are not always the best choice for this application.



다음은 이렇게 시작하면 안되는 첫 번째 문장을 보여 준다.

This paper does not describe a general algorithm for transactions

General-purpose transaction algorithms guarantee freedom form deadlock but can be inefficient. In this paper we describe a new transaction algorithm that is particularly efficient for a special case, the class of linear queries.



Starting an abstract or instruction with "This paper concerns" or "In this paper" often means that results are going to be stated out of context.

In this paper we describe a new programming language with matrix manipulation operators.

Most numerical computation is dedicated to manipulation of matrices, but matrix operations are difficult to implement efficiently in current high-level programming languages. In this paper we describe a new programming language with matrix manipulation operators.



병렬 구조로 많이 써라.

Underutilization of main memory impairs the performance of operating systems.

Operating systems are traditionally designed to use the least possible amount of main memory, but such impairs their performance.


첫 번째 문장모다 positive 이며, existing knowledge와 paper's contribution을 명확히 구분하고 있다.




Variation



organization, structure, length of sentences and paragraphs, and choice of words을 통해서 독자의 attention을 유지 할 수 있다.




Paragraphing



They highlight each main point clearly.



Ambiguity



There is a new version of the operating system, so when using the "fetch" utility, the error messages can be ignored.

There is a new version of the operating system, so the "fetch" utility's error messages can be ignored.



Part of the confusion comes from the redundant phrase "when using": there would be no error messages can be ignored.



premature pronouns lead to difficulties

When it was first developed, recursive compilation was impractically slow and required too much memory.

When recursive compilation was first developed, it was impractically slow and required too much memory.



Sentence structure


두줄 이상을 넘지 말아라.



When the kernel process takes over, that is when in the default state, the time that is required for the kernel to deliver a message from a sending application process to another application 




Tense



알고리즘 설명할때는 present를 사용함.

설명을 할때도 미래보다는 현재를 사용함.


Past tense는 work과 outcomes를 설명할 때 사용 한다.

Thus we write "the ideas were tested by experiment"




Repetition and parallelism



병렬구조가 문장을 정확하고 쉽게 이해하게 해준다.
남용하면 문제가되지만, 그래도 이해는 쉽다.

In SIMD, the same instructions are applied simultaneously to multiple data sets, whereas in MIMD different data sets are processed with different instructions. (x)

In SIMD, multiple data sets are processed simultaneously by the same instructions, whereas in MIMD multiple data sets are processed simultaneously by different instructions. (o)



병렬성은 반어법에 기반한 작성법이다.

Access is fast, but at the expense of slow update.

Access is fast by update is slow.


parallel structure가 빠진 문장은 ambiguity 한 결과를 만든다.

The performance gains are the result of tuning the low-level code used for data access and improved interface design. (x)

The performance gains are the result of tuning the low-level code used for data access and of improved interface design. (o)


좀더 개선을 하면, 더 긴 절을 뒤로 보낸다.

The performance gains are the result of improved interface design and of tuning the low-level code used for data access.



병렬구조에서의 should be used의 제거


For real-time response there should be sufficient memory, parallel disk arrays should be used, and fast processors.

Real-time response requires sufficient memory, parallel disk arrays, and fast processors.




Emphasis



잘못된 곳에 강조를 하지 말아라.

Additional memory can lead to faster response, but user surveys have indicated that it is not required. (o)

Faster response is possible with additional memory, but user surveys have indicated that it is not required. (x)



Definitions



처음 쓰는 terminology는 한번은 정의하고 가야한다.


We use homogeneous sets to represent these events.

To represent these events we use homogeneous sets, whose members are all of the same type.



Choice of words



긴 단어보다는 짧은 단어를

의미가 약한 단어보다는 길더라도 명확한 단어를 사용 한다.


The analysis derives information about programs.

The analysis estimates the resource costs of programs.



Qualifiers


많아봐야 하나의 수식어구를 써라.


It is perhaps possible that the algorithm might fail on unusual input.

The algorithm might fail on unusual input.



결론에서의 예제

We are planning to consider possible options for extending our results.

We are considering how to extend our results.


중복 부정

Merten's algorithm is not dissimilar to ours


very 또는 simply , quite 등의 수식어구들은 의미가 없으므로 쓰지 않는다.




Misused Words



부주의하게 비슷한 spelling을 가지고 표현하지 말아라.


대부분 which를 주로 사용하지만, that을 사용하고 콤마(,)뒤에 that은 위치 할 수 없으므로 이럴 때만 which를 쓴다.



There is one method which is acceptable. (x)

There is one method that is acceptable.

There are three options, of which only one is tractable.



Less는 연속적인 양 (continuous quantities) 을 나타낼때 쓴다. 

It used less space


fewer는 이산적인 양 (discrete quantities) 을 나타낼때 쓴다.



Affect: 영향이나 결과

effect: 발생한 일의 결과


Alternate: 사이에, 다른것, 스위치

alternative: 선택할 수 있는


Assume: 사실로 가정함

Presume: 당연한 일로 여기는 것


Basic: elementary의 의미가 내포됨

Fundamental




Spelling Conventions 



스펠링 체크를 영어권 국가마다 다 다를 수 있으므로 가장 일반적인 표현으로 통일하며

사전을 참고해서 단어를 사용해라.


최신 기술 용어에 대해서는 사전이 없는 경우가 많으므로, 다른 논문에서 사용된 technical term을 사용하는 것이 좋다.



Jargon (전문 분야의 특수 용어)



전문용어를 쓸때 그것이 obscure term들을 포함해서는 안된다. computer 분야에서는 서로 다른 의미로 사용 될 수 있기 때문이다.


(x) The transaction log is a record of changes to the database.

(o) The transaction log is a history of changes to the database.


첫 번째 경우 Database도 record들로 구성되며, program이 가지는 function으로도 고려 될 수 있다.


Synonyms (동의어)도 문제가 될 수 있다.

(x) Hughes describes an array of algorithms for list processing.

(o) Hughes describes several algorithms for list processing.



Cliche and Idiom


Scientific writing에서는 이러한 것들을 사용하지 말아라.

ex) "crop up", "lose track", "come to grips with", "it tuned out that", "play up", "stacked deck" and "right out"



Foreign Words


italics으로 강조해라.



Overuse of Words



같은 phrase를 여러번 사용하면, 독자를 짜증나게 할 수 있다.


(x) Ada was used for this project because the underlying operating system is implemented in Ada.

(o) Ada was used for this project because it is the language used for implementation of the underlying operating system.



Padding (연설 글등을 길게 만들려고 하는 군더더기)



쓸때없는 형용사 표현들을 말한다.


(x) A well-known method such as the venerable quick-sort is a potential practical alternative in instances of this kind.

가능하지 있는 일들은 아에 논하지 말아라. 이것으로 문장의 명확성이 만들어 진다.

(o) A method such as quick-sort is a potential alternative.


가끔 해당연구를 emphasize 하기 위해서는 wordy한 표현을 사용할 수 있지만,

most cast 에서 concise expression을 preferable 한다.



 Wordy

Concise 

 Adding together

 Adding 

 After the end of

 After 

 In the region of

 Approximately 

 Cancel out

 Cancel 

 Conflated together

 Conflated 

 Let us now consider

 Consider 

 Cooperate together

 Cooperate 

 Currently ... today

 Currently 

 Divided up

 Divided

 Give a Description of

 Describe 

 During the course of 

 During 

 In view of the fact

 Given 

  A number of

 Several 

 Whether or not

 Whether 

   
   
   
   
   
   
   
   
   
 



Plurals



단수 복수 처리는 뒤의 동사의 형태까지 변경하므로 중요한 것이다. 


그렇다고, 너무 복수를 남발하면, 저자에게 혼돈을 주게된다.

(x) Packets that contain an error are automatically corrected.

(x) Packets that contain errors are automatically corrected.


하나의 패킷이 단일 에러를 같던지 여러개의 패킷이 여러 에러를 가지든지, 둘다 띁이 모두 가능 하다.

따라서 singular로 변경한다.


(o) A packet that contains an error is automatically corrected.



클래스를 나타내는 경우에도 plural은 필요 없다.


(x) These kinds of algorithms are irrelevant.

(o) These kinds of algorithm are irrelevant.

(o) Algorithms of this kind are irrelevant.



Abbreviations



공간 절약이 되지만, 리딩 속도를 갑자기 낮추기 때문에 사용하지 말아야 한다.


no. - number

i.e - that is

e,g - for example

c,f - "compared with" (or more accurately "in contrast to", since that is the sense in which "c.f." should be used)

w.r.t - with respect to 



그리고 모든 Abbreviation은 맨처음 시작할때 반드시 설명을 함꼐 해야한다.



"so on"과 etc의 사용을 피하라. 어슬프고 독자를 깔보는 듯한 nuance를 준다.

(x) Methods available are random probing, extrapolation, etc

(o) Methods available include random probing and extrapolation

(o) Methods such as random probing and extrapolation can be used.



Acronyms 



많이들 사용하는 어쩔수 없는 것이다.

사용하거든 반드시 설명해라




Sexism



he /she를 쓰지말아라.


(x) A user may be disconnected when he makes a mistake

(o) A user may be disconnected when they make a mistake


they로 썻기 때문에 앞부분을 변경해 준다.

(o) Users may be disconnected when they make a mistake.


좀 더 좋은 문장은 아래와 같다.

(o) A user who makes a mistake may be disconnected.














'논문 작성 > Writing for computer science' 카테고리의 다른 글

Ch08: puctuation(2)  (0) 2016.12.25
Chapter 8: Punctuation  (0) 2015.06.28
Chapter 1-6  (0) 2015.02.17

more efficiently and effectively. 에서 efficeintly 와 effectively의 차이가 무엇일까요? 


Effective (adj.): Adequate to accomplish a purpose; producing the intended or expected result.


즉, 원하는 의도 목적을 얻어내는것에 맞춰져 있는 것이다.

아파서 약을 먹었는데 올바른 효과가 나타는것

The medicine is effective.


얼룩을 지우는데 그 세제 효과적이더라.

The detergent is effective for removing stains.



Efficient (adj.) Performing or functioning in the best possible manner with the least waste of time and effort.


시간이나 노력을 최소화 해주는데 초점이 맞춰져 있다.


이 엔진 정말 효율적이다. 연비 20킬로를 갈 수 있다.

The engine is really efficient. It can run for 20km on 1 litter.


Dan은 정말 효율적인 방법으로 일을 해요 (딱딱 시간을 아껴가면서 하는 것을 의미함).

Dan works in a very efficient way.



As well as 구문



[as well (as sb/sth) 구문 보충학습]

as well as as well + as의 의미임.

[as well as =in addition to someone or something; too]

*I have a dog as well as a cat.

=I have a dog as well /as I have a cat.

(내가 고양이를 가지고 있듯이 또한 개도 있다. as :접속사임)

 

1. 명사나 형용사를 연결 /

*They sell books as well asnewspapers.

*This rule applies to parents as well aschildren.

(이 규칙은 자녀들뿐만 아니라 부모에게도 적용된다)

*I could learn a lot from people as well asfrom books.

*She’s got a goat, as well as five cats and three dogs.

*He’s clever as well as nice.

*As well asbirds, some mammals can fly.

*They speak French in parts of Italy as well asFrance.

 

2. 동사가 as well as 다음에 올 경우

일반적으로 ~ing [분사구문의]형태를 사용함.

일종의 as well as는 어떠어떠한 사실에 덧붙여서라는 뜻으로 전치사구처럼 사용이 되기 때문.

*She is a talented musician as well as being a photographer.

*She works in television as well as writingchildren’s books.

*Smoking is dangerous, as well as making you smell bad.

*As well asbreaking his leg, he hurt his arm.

*She sings as well asplayingthe piano.

(이것은 그야말로 피아노도 잘 치지만 노래도 잘한다.)

cf. She sings as well as she plays the piano. (as ~ as구문)

(그녀의 노래실력은 피아노 실력만큼 훌륭하다.)

 

절이 쓰일 때는 일반적으로 분사구문으로 씁니다.

그래서 다음과 같은 문장은 as well as가 쓰여도 틀린 문장으 로 취급하게 됩니다.

*She negotiates the licences as well as she orders the equipment. (×)

*They will eat delicious dishes,as well as enjoy traditional games, together. ()

(그들은 전통 게임을 즐길 뿐 아니라 맛있는 음식을 함께 먹 을 것입니다.)

3. 부정사의 연결

만약 덧붙이는 행위를 나타내는 동사가 to 부정사로 쓰일 경 우는 to 부정사로 연결되었다는 의미로 to 없이 사용을 하는 것이 일반적

*I have to feed the animals as well as (to) look after the children.

4. know (sth) as well as I(you) do : [idioms]

[나 못지않게 ~(sth)을 잘 알고 있다(비난을 나타냄)]

*You know as well as I do that you're being unreasonable.

(네가 터무니없이 군다는 것을 너도 나 못지않게 잘 알고 있어.)

*I know about molecules as well as you do, so don't try to teach me.

(나는 분자들을 잘 알고 있기 때문에 나를 가르치려 하지 마.)


particular, specific, certain의 차이점은 뭔가요?



particular : '한정적'으로 명사 앞에 쓰여 '특별한'이라는 의미를 나타냅니다.
                      (ex)We must pay particular attention to this point.
(우리는 이 점에 특별한 관심을 기울여야 한다.)
                     
                      '서술적'으로 쓰여 '까다로운'이라는 의미를 나타냅니다.
                       (ex)She is very particular about her clothes.
(그녀는 옷에 대해 매우 까다롭다.)
 


 
specific : '한정적'으로 명사 앞에 쓰여 '구체적인(=명확한)', '특정한'이라는 의미입니다.
                   (ex)I gave you specific instructions.
(난 네게명확한 지시를 내렸다.)
                         There are a lot of children with specific learning difficulties.
 
                  '서술적'으로 쓰여 '특유의(=독특한)'이라는 의미입니다.
                   (ex)It is a belief that is specific to this part of Africa.
                         (그것은 아프리카 이 지역 특유의 신앙이다.)
 
 

   certain : '한정적'으로 명사 앞에 쓰여 불특정한 사람이나 사물을 나타내어
                 '어떤', '무슨'이라는 의미입니다.
                  (ex)Certain people might disagree with this.
                        (어떤 사람들은 이것에 동의하지 않을 것이다.)
 
                 '서술적'으로 쓰여 '확실한(=틀림없는)', '확신하는'이라는 의미입니다.
                  (ex)It is certain that he will agree.
                        (그가 동의하리라는 것은 확실하다.)
                        I'm not certain who was there.
                        (거기에 누가 있었는지 확신이 서지 않는다.)


The start


Dear 이름

Dear Mr 성 (남자) / Ms 여자성 (Mrs인지 Miss인지 모를 경우)

상대가 박사면


Dear Dr. Lee 이런식으로 Doctor를 붙여주면 좋아합니다.



The reference


with reference to your advertisement in the Times, 


The Reason for writing

I am writing to inquire about

apologize for

confirm



Enclosing Documents

I am enclosing ~

Please find enclosed ~

Enclosed you will find ~


Closing expression

Thank you for your patience and cooperation

Thank you for your consideration


I look forward to hearing from you.



The Finish

Yours sincerely

Sincerely

Best regards ( 좀더 친근한 사이일 경우에 사용함)

Thank you


What에 대한 고찰 

의문사 what

관계대명사 what

명사절 what

의문 형용사 what

관계 형용사 what



관계 대명사 what



- 선행사를 포함하므로 일반적인 관계대명사와는 그 특징이 다릅니다. 선행 사를 포함하므로 복합관계대명사로 볼수 있다.


- 일반적인 관계대명사는 선행사를 포함하지 않고, 단순히 수식하므로, 형용사절이라고 볼 수 있다.

- what 관계대명사는 선행 사를 포함하는 명사절의 형태가 된다.


what이 선행사를 포함하는 사례

I have eaten what you gave me.

= I have eaten that which you gave me (that은 대명사로, 관계사절 which의 선행사에 해당)

= I have eaten the thins which you gave me.

=I have eaten the food which you gave me.


일반 복합관계대명사

Whoever comes first is the winner.

= Anyone who comes first is the winner.



의문사 What


가장 많이 쓰이는 형태이다.


일반 의문문

What do you like?


간접 의문문

I don't know who she is




참고문헌

참고문헌


'영어 > 영문법' 카테고리의 다른 글

As well as 구문  (0) 2015.02.23
particular, specific, certain  (0) 2015.02.23
관계대명사: 계속적용법, 제한적 용법  (0) 2015.02.19
관계형용사 vs 의문형용사  (0) 2015.02.18
on the basis of vs based on  (0) 2015.02.01

관계대명사: 계속적용법, 제한적 용법


계속적용법: (콤마) 가 나오면서 계속적으로 해석하지요. 이때 관계 대명사 that 은 사용 못하지요.

 

The man has two sons, who are doctors. (그에게는 두아들이 있는데, 그들은= 그 두아들은 모두 의사가 되었다)


 

제한적 용법: 뒤에서 앞으로 한정적으로 해석(이때 콤마 사용 안함)

The man has two sons who are doctors. (그에게는 의사가 된 두아들이 있다)

 

의미적으로 둘간의 차이점은

​①에서는 아들이 단 두명이었는데 의사들이고  

​②에서는 의사인 아들이 두명 있으므로 실제 아들은 두명 이상 

 


그래서 기본적인 차이를 다시 정리하면

계속적 용법은 ​ ,(콤마) 가 있고, 해석을 앞에서 부터 해주는데 반해,

제한적인 용법은  앞에 콤마가 없고 해석은 뒤에서 앞으로 해주면서 범위를 한정시켜줍니다.

또한 ​관계 대명사 that 은 절대로 , (계속적용법)으로 사용할 수 없지요.




하지만 시험만을 위해 무엇은 가능하고 무엇은 불가능 하다로 볼것이 아니라, 콤마가 있는 것은 영어책을 읽을때 어떤 의미의

차이가 있는지 아는 것이 보다 근본적으로 중요한 것이겠지요.

 

영어원서를 읽다가 보면 불현듯 관계 대명사 앞에 나오는 콤마는 그것이 쓰인 이유를 좀더 명확히 아는것이,문장의 의미를 더 자세히 파악하도록 하는 역할을 할 수 있기 때문에 관계대명사 앞에 , 가 쓰이고 안쓰이고 차이를 설명하도록 하겠습니다.


 

1. 제한적 용법은(no comma) 선행사가  그 집단의  일부를 가르키고, 계속적인용법은 선행사가 그 집단의 전체를 가르킨다.

제한적 용법( =  선행사는 대상 그룹의 일부)


The man has two sons who are doctors. (의사가 된 두아들이 있다.)


계속적 용법(, comma 사용) (선행사= 대상그룹 전체)


2.    제한적용법은 선행사의 의미를 좀 더 명확하게 해주고, 계속적 용법은 추가적인 의미를 부여할 수 있다.

The professor who teaches English 101 is an excellent lecturer.


The professor 여기서 정관사 the 를 썼으므로, who~ 이하절이 없으면 그자체로는 정보가 부족합니다.


The professor is an excellent lecturer. (?)  (The professer? = who?)


그래서 누구를 가르키는 지 정확하게 밝혀져야 합니다. 그러므로 명확하게 identify 시키는 제한적 용법(No comma) 을 써야 합니다.


Professor David, who teaches Physics, 101 is an excellent lecturer.


여기서 Professor David는 이미 누구인지 가르키는 사람이 명확하므로 그 뒤에 추가적인 성분은 필요 없지요. 그러면 , 를 쓰면 좀더 부가적인 information 을 제공합니다.


관계형용사 vs 의문형용사



관계형용사 what


what + 명사 + (S) + V = all (of) the 명사 that + (S) + V ~

-> I gave him what money I had

-> I have him all the money that I had


I gave him all the money. + I had money.
= I gave him all the money that I had.
= I gave him what money I had.


what은 선행사가 있는 것이므로, 관계 형용사이다.


의문형용사 what


Please tell me~.+ What sports do you like?
= Please tell me what sports you like?


이것은 what이 단순히 명사 앞에와서 의문문을 만드는 것이므로,

간접 의문문에서의 의문 형용사라고 할 수 있다.


따라서 여기서, what은 '무슨, 어떤'으로 해석 해야함.




Writing for Computer Science, by Justin Zobel


Introduction


kinds of publication

  • book
  • thesis
  • journal article
  • conference or workshop proceedings
  • complete paper
  • extended abstract
  • technical report
A paper should be an objective addition to scientific knowledge, not a description of the path you took to the result.

Style is not about correct use of grammar, but about how well you communicate with likely reader.

Basic aims of science writing

  • To be clear
  • unambiguous
  • correct
  • interesting (not dull)
  • direct



Good style


Economy: Text should be taut


You should consider what I write that lead the reader astray.


Don't omit words that make the writing easier to understand.

Bit-stream interpretation require external description of stored structures. Stored descriptions are encoded, not external.


Interpretation of bit-streams requires external information such as descriptions. Such descriptions are themselves data, and if stored with the bit-stream become part of it, so that further external information is required.



Tone: Science writing should be objective and accurate.


literature style

  • nuance (의미, 소리, 색상, 감정상의) 미묘한 차이, 뉘앙스
  • ambiguity
  • metaphor: A figure of speech in which a word or phrase is applied to an object or action to which it is not literally applicable
  • sensuality
these are inappropriate for technical work.

the primary objective is to inform, not entertain.


common fault in scientific writing.

use of turgid (congested)

convoluted language


Good tone

direct, simple style but not dull (직접적이고 간결하지만, 지루하지는 않은)

Aim for austerity, not pomposity (겸손하게, 호헌 장담 하지말라)

Avoid buzzword(유행어), cliche(상투적인말), slang.

Omit any unnecessary material.

Be specific, not vague or abstract.


Don't be to overqualify



The upper hand(우세, 우위): Some author seem to have a superiority complex a need to prove that they know more or are smarter than their readers. 


과학자들이 읽지 않는 이상한 문장을 넣는다. 철학적인

불필요하게 어려운 수식을 넣는다.

제대로된 설명없이 무심한 말을 한다.

잘알려지지도 않거나, 접근하기 어려운 참고문헌을 인용 한다.


This kind of showing of, of attempting to gain the upper hand over the reader, is snobbish and tiresome.

Since the intention is to make statements the reader won't understand, the only information conveyed is an impression of the author's ego.

Write for an ordinary reader, as your equal.



Obfuscation


실제 주장없이 단순히 한 일을 쓰는 방식.

Experiments, with the improved version of the algorithm as we have described, are the step that confirms our speculation that performance would improve. the previous version of the algorithm is rather slow on our test data and improvements lead to better performance.


첫번째 문장이 너무 단조롭다. "experiments .. are the step that confirms our speculation"

위 문장은 사실이다. 하지만 not informative 하다. 


또 다른 문장으로 "improvements lead to better performance" (tautologous, 반복) 이다.


결정적으로, 실험을 수행한것은 알겠는데, 직접적인 주장이 없다는게 문제이다.



vague statements (희미한 문장)

이것은 항상 상세한 문장 보다 선호되어서 사용 된다.

Amelioration can lead to large savings.

Amelioration led to savings of 12%-33% in our experiments.


exaggeration (과장)

omission of relevant information (생략)

Bold statements of conclusions based on flimsy evidence.


The status of the system is such that a number of components are now able to be operated.

Several of the system's components are working.


In respect to the relative costs, the features of memory mean that with regard to system today disk has greater associated expense for the elapsed time requirements of tasks involving access to stored data.

Memory can be accessed more quickly than disk.



Analogies (유추)


사람마다 느끼는게 다르게 된다.


Writing a program is like building a model with connector blocks.


connector block이 무엇인지 모른다.

programmer가 아니라면, programming인것을 알 수 있나>


Contrasting look-ahead graph traversal with standard approaches, look-ahead uses a brid's eye view of the local neighbourhood to avoid dead ends, but at significant cost: it is necessary to feed the brid and wait for it to return aftereach observation 


Beware of analogies with situations that may be unfamiliar to the reader.



Straw men


반박할 여지가 없는 가설을 말한다. 즉 저자가 오로지 비평의 목적을 위해서 사용하는 내용을 말한다.

데이터베이스는 인덱스를 요구하지 않는다. 이런 말도안되는걸 쓰고 뒤에서 비평하는것은 주장을 뒷 받침 하는것에 전혀 도움이 되지 않는다.


  다른 사례는 새로 제안하는 방법을 좋게 만들기 위해서 가능하지도 않는 안좋은 방법을 만들어내서 비교하는 경우 이다. 이런 경우, 독자는 자신을 마치 이런 말도안되는 것을 사실인 만양 느끼게 한다고 생각하기에 매우 불쾌함을 느끼게 된다.


Query language have changed over the years. For the first database systems these were no query language and records were retrieved with programs. Before then data was kept in filing cabinets and indexes were printed on paper. Records were retrieved by getting them from the cabinets and queries were verbal, which led to many mistakes being mad. Such mistakes are impossible with new query language like QIL.


이것을 더 어렵게 만드는것은, 정말 오래된 연구와 비교하는 방법이다. 이러한 방법은 최근에 많이 바꼇을 수 있기 때문에 적합 하지 않다.



rhetoric(수사법)을 이용하는 방법, 즉 정확한 이유없이 그럴듯한 표현으로 대충 주장을 뒷받침 하려는 것이다. 

We did not investigate partial interpretation because it is known to be ineffective.



어떤 내가 하지 않는 것을 주장하기 위해서는 반드시 인용해야 한다. 근거없는 주장을 인용을 통해서 뒷받침하지 않고, 그럴듯하게 꾸며서 마치 accepted knowledge인 것 처럼 만드는 것을 말한다.

Most users prefer the graphical style of interface.

We believe that most users prefer the graphical style of interface.


Another possibility would be a disk based method, but this approach is unlikely to be successful.

Another possibility would be a disk based method, but our experience suggests that this approach is unlikely to be successful.



Reference and Citation


self-reference는 그것으로 하여금, 연구에 깊이가 있어보이고, 족보가 있어보이므로, 많이들 사용 하는 방법이다.

하지만, 의미없는 자기인용은 독자로 하여금 큰 실망을 주게되므로, 하지말아야한다.



인용을 해서 표현할때는 정확하고 충분하게 그 이야기를 설명해줄필요가 있다. 어떤 저자는 그 참고문헌을 못볼 수도 있기 때문이다.

그리고 선행 연구자에대해서 충분히 존경심을 담아서 그것을 논해야한다. 너무 아첨할 필요도 없고, 너무 비하해서도 안된다.

Robinson's theory suggests that a cycle of handshaking can be eliminated, but he did not perform experiments to confirm his results [22].

Robinson's theory suggests that a cycle of handshaking can be eliminated [22], but as yet there is no experimental confirmation.


인용시는 무명 모다는 정보를 뭐라도 주는것이 좋다.

Other work [16] has used an approach in which...

Marsden [16] has used an approach in which ...

Other work (marsden 1991) ahs used an approach in which ...


불필요한 레퍼런스에대한 논의는 피해라.

Several authors have considered the problem of unbounded delay. We cite, for example, Hong and Lu (1991) and Wesley (1987).

Several authors have considered the problem of unbounded delay.



Quotation (인용)


Acknowledgements

In the acknowledgements of a scientific paper you should thank everyone who made a contribution, whether advice, proofreading, or whatever: include research students, research assistants, technical support, and colleagues.


다음에 두가지 기본적인 폼을 보이겠다.

I am grateful to Dale Washman, Kim Micale, and Dong Wen, I thank the Foundation for Science and Development for financial support.


너무 감사의 글을 광범위 하게 하지말아라.

Kim, Dong이 증명에 도움을 줬다면, 왜 그들을 저자 리스트에 넣지 않았는지 의문이 생기게 된다. 적당한 수준에서 끝내야 한다. 아래와 같이정확히 어떤 부분에서 지식적으로 기여를 해줬는지를 적는다. 너무 크면 안된다.

I am grateful to Dale Washman for discussing aspects of the proof of Proposition 4.1, to Kim Micale for identifying some technical errors in Theorem 3, and to Dong Wen for helping with use of the debugging tools. I thank the Foundation for Science and Development for a year of financial support.


I am grateful to Dale Washman and Kim Micale for our fruitful discussions, and to Dong Wen for programming assistance. I thank the Foundation for science and Development for financial support.


다음과 같은 표현은 쓰지말자.

"I would like to thank"

"I wish to thank"

이것은 약간, I wish to thank ... but for some reason I am unable to do so. 의 nuance가 있다.

그냥 간단하게

"I am grateful to"

"I thank"

"Thanks to"

이렇게 쓰면 된다.

 

Grammar


이 책에서는 문법은 다루지 않는다. 좋은 글이란 문법이 문제가 되지 않는다.

몇몇 사람들은 다른 사람들의 글을 비판하기 위해서 전통적인 grammar rule을 사용하게 된다. 

하지만 이것은 clarity나 meaning을 희생하면서 가지 할 것은 아니다.


그렇지만, 과도한 문법 오류는 독자를 짜증나게하므로 매우 주의 해야한다.

문법을 지키는것은 기본이며, 좋은 글이 되기위한 충분 조건은 아니다.


Beauty


prose(산문)에나 어울리는 것이다.

무조건 simplicity 하고 clarity 하게 작성해라.

crystalline, transparent, and good rhythm들 까지 고려하면 좋지만, 필요 없다.








'논문 작성 > Writing for computer science' 카테고리의 다른 글

Ch08: puctuation(2)  (0) 2016.12.25
Chapter 8: Punctuation  (0) 2015.06.28
Chapter 7 Style Specifics  (0) 2015.03.05




Theme 설정 방법


테마로 한번 설정해 놓으면 변경된 내용을 쉽게 유지 할 수 있다.


변경 할 수 있는 요소들:

axis.title.x // 축 이름을 의미함.

axis.text.x //축 눈끔을 의미함.

plot.title // 도표의 제목을 의미함.





Pie chart



How to show percentage in this chart?


use annotate()


usage:

annotate("text", x="?", y="?", label="name")



참고자료

ggpie: pie graphs in ggplot2

R: Pie chart with percentage as labels using ggplot2









'AI > R ggplot2' 카테고리의 다른 글

CDF stat_ecdf  (0) 2016.12.21
ggplot2: 그래픽 라이브러리  (0) 2016.03.20
R에서 EPS 이미지 생성  (0) 2015.06.16
R 그래프 페키지 종류  (0) 2014.11.05

R 기본


변수 조작


목록출력


ls() # 전체 리스트를 출력한다.

반환값은 벡터이다.


ls.str() # 각변수에 대해서 더 자세한 정보를 보여준다.

변수들을 열함과 동시에 그 구조까지 보여주게 된다.


삭제방법

작업 공간의 변수를 삭제하고 싶을때 사용한다. 한번 지우면 복구가 불가능하니 주의하자.


rm(x) #작업 공간에서 x라는 변수를 삭제 한다.


rm(list=ls()) # rm과 ls()를 조합해서 현재 작업 공간에 정의된 모든 변수를 지울 수도 있다.






R 함수 정의


#한줄짜리
fuction (매개변수, ... ,매개변수n) expr

#여러줄
fuction (매개변수, ... ,매개변수n){ 
expr
}


파일 입출력



read.csv("name")
header = FALSE

# 행에다가 이름을 쓸일은 거의 없기 때문에 FALSE로 설정 한다.
write.csv(x, file="파일명", row.names=FALSE)
#파일 리스트를 출력 하는 방법
list.files()
# 하위 디렉터리 목록을 출력한다.
list.files(recursive=T) 
#현재 디렉터리에서 파일을 읽어 들인다.
files <- list.files(pattern="*.csv")
#절대 경로를 이용해서 파일을 읽어 들인다.
files <- Sys.glob(paste(directory,"//*.csv",sep=""))



객체 저장


오랜 연산결과 끝에 얻어낸 결과라면 해당 결과를 담고 있는 객체를 저장할 필요가 있다.

R객체를 저장하는 것은 save() 이고 불러오는 것은 load()이다.


#메모리에 있는 개체를 파일에 저장한다.
save(x,y, file="xy.RData"
#모든 메모리에 존재하는 객체를 파일에 저장 한다
rm(list=ls()) # 메모리에 있는 개체를 모두 삭제
a <- 1:5
b <- 6:10
c <- 11:15
save(list=ls(), file=abc.RData")
load("abc.RData")






Working Directory 변경


getwd() 를이용해서 확인 할 수 있다.

setwd() 를 이용해서 설정 한다.




시스템 환경 변수 계산 하는 방법


환경 변수를 알아내거나 변경하는 방법을 말한다.


Sys.getenv("SHELL")
Sys.setenv(SHELL="/bin/ksh")


R의 홈 디렉터리를 찾아내는 방법

Sys.getenv("R_HOME")




'AI > R Basic' 카테고리의 다른 글

R의 문자열 처리 및 비교  (0) 2015.10.03
Plyr package (데이터 조작)  (0) 2015.10.01
Reshape2 pacakge (데이터 조작)  (0) 2015.10.01
R 자주 사용하는 팁 및 한글 주석 깨짐 해결  (2) 2015.07.30
R의 철학  (0) 2015.04.17

(La)Tex 사용법 정리


논문 작성 필수 도구이다.

the art of programming의 저자이자 튜링상(CS의 노벨상) 수상자인 Donald Knuth 교수가 처음으로 Tex이라는 언어를 만들었다.

알고리즘이라는 학문을 수립한 CS 분야 최고 대가 중 한명이다.


스탠포드에서 가장많은 튜링상 수상자 보유 기관이라는 타이틀을 얻기위해서 Donald Knuth 교수님을 모셔왔다.

지금은 스탠포드 명예교수로 재직중이시다.



Tex의 표준 배포판의 종류


Latex Packages의 종류


MikTex

사람들이 많이 사용하는 버전이다.

한글을 지원하기 위해서는 추가적인 노력이 필요하다.


TexLive

2013 버전이후로는 추가적인 설정없이 한글을 사용 가능하다.


ko TeXLive

이것은 KTUG 표준 한글텍환경 프로젝트팀이 KTS의 지원을 받아서 제작하여 배포한 윈도우즈용 설치파일이다.

2014년부터는 ko.Tex이 TexLive에 정식으로 들어갔으므로 이제는 더이상 나오지 않는다.

가장 최신버전이 2013 이다.

다운로드


TnTex

Window에서 동작하는 간이 텍 환경이다.

휴대용으로 usb에 넣어서 portable하게 사용 할 수 있다.

TnTex은 LiveTex 기반으로 만들어 졌다.

관련사이트


사실 ShareLatex과 같은 web기반 tex이 있는 상황이라, 정말 Network도 구축 안된 환경에서 작업할 것이 아니라면

의미 없는것 같다.




Tex에서 한글 사용법


ko.tex live 2013을 설치한다. 또는 texlive 2014 버전 이상을 설치한다.

\usepackage{kotex}





LaTex Compiler의 종류



Complier를 어떤걸 선택 하느냐에 따라서, 그림 삽입 등을 할때 선택 사항이 달라 진다.


LaTex

dvi file을 생성 해야할 경우 latex을 반드시 써야 한다. (tex4ht를 사용 해야 하므로), 왜냐하면, dvips를 이용해서 pdf로 변활 하지 않으면, 품질 하락이 있다고 주장 한다. 다음 Post를 읽어보면, pdfLaTex을 쓰지 말라고 한다. Click

journal에서 postscirpt figure를 요할 경우 latex을 써야한다.


pdfLaTex

pdf image 사용가능

png image 사용 가능

eps 도 당연히 사용 가능



LaTex 문서 편집 관련



Latex에서의 공백 처리 방식

빈칸, 탭 모든 것은 동일한 스페이스로 취급된다. 따라서 여러개의 공백문자들도 하나로 취급 된다. 개행 문자 역시 하나의 공백일 뿐이다.


즉, 두 줄사이에 빈 한줄을 넣으면, 문단의 바꿈을 의미한다. 여러줄을 넣어도 그냥 문단의 변경일 뿐이다.


강제로 줄을 바꾸는 명령어: \\ or \newline

줄 바꾸면서, 쪽 나눔이 일어 나지 않도록: \\*

새쪽 시작: \newpage


행간 조절 방법

\linespread{factor}: 문서 전체에 영향이감

\setlength{\baselineskip}{1.5\baselineskip}: 한문단에 영향을 줌

setspace package도 유용함


문단 모양

\indent

\noindent


수평간격

Latex은 단어와 문장 사이의 관격을 자동으로 설정 한다. 하지만 간혹 너무 수평 간격이 넓을 때가 존재한다.

\hspace{length}


수직 간격

\vspace{length }

\vspace{-0.1cm}


Font Effects

\textit{words in italics}     // words in italics

\textbf{words in bold}     // words in bold

\textsf{sans serif words}  // sans serif words ( for source code)


\emph{text} // 평소에는 이탤릭체를 나타내지만, 앞뒤 문맥에 따라서 다르게 동작 한다.


\bf // bold font


상호 참조

\label{maker} 


\ref{maker}

\pageref{maker}






LaTex에 그림 넣기



그림을 삽입하는 방법은 여러가지가 있다.


eps포맷은 latex 컴파일러를 써야 한다. 왜냐하면, dvips -> pdf 로 변환 과정을 거치기 때문이다.

jpg, png, pdf포맷은 latexpdf를 통해서만 컴파일 할 수 있다.


\usepackage{graphicx}


이명령어를 맨위에 적어라 그러면, 두 컴파일러에서 모두 \includegraphics를 동작 가능하게 할 수 있다.


어떤 graphics package는 Latex 컴파일러 종류에 다라 동작하게 되므로 그래프 삽입시 문제가 발생 할 수도 있다.


이식성을 높이려면, pdf나 eps를 사용하자. 퀄리티도 올라감.

pdf vs eps의 싸움은 아래 링크를 보면, pdf가 승리 한것 같다.

Which figure type to use: pdf or eps?


pdf가 표준이며, pdflatex 을 사용했을 때 어떠한 변환 없이 컴파일이 가능 하기 때문이다.



\begin{figure}[!h]

\centering

\includegraphics[width=0.9\columnwidth]{Figure1}

\caption{With Caption Below, be sure to have a good resolution image

(see item D within the preparation instructions).}

\label{fig:figure1}

\end{figure}



1\begin{figure}
2\centering
3\epsfig{file=figure2.eps, width=7cm}
4\caption{Ratio of residence-time in frequently visited place for all users.}
5\label{fig:stay_in_place}
6\end{figure}



subfigure의 고찰


단순히 이미지를 나란히 배치하고 싶은거라면 아래의 코드를 이용한다.

\begin{figure}%

\centering

\parbox{1.2in}{%

...figure code...

\caption{First.}%

\label{fig:2figsA}}%

\qquad

\begin{minipage}{1.2in}%

...figure code...

\caption{Second.}%

\label{fig:2figsB}%

\end{minipage}%

\end{figure}%




\usepackage[options]{subfigure}



\subfiglabelskip=-12pt

\begin{figure*}[t]

\centering

\subfigure[][]{\label{figure4:first}\includegraphics[width=.32\textwidth]{./Figures/CPU_Util_CDF}}\hfill

\subfigure[][]{\label{figure4:second}\includegraphics[width=.32\textwidth]{./Figures/Traffic_CDF}}\hfill

\subfigure[][]{\label{figure4:thrid}\includegraphics[width=.32\textwidth]{./Figures/Power_CDF}}

\caption{resource usage}

\label{fig:figure4}

\end{figure*}


// subfiglabelskip는 subfigure의 caption을 조정하기 위해서 사용 함.

// subfigure의 caption은 무시한 경우이다. 넣고 싶으면, []에다가 무언가를 추가 하면 된다.


//인용의 경우

\ref

\subref

두 가지를 사용 한다.

\subref의 경우 main figure number를 보여주지 않는다.


각 with들의 차이점


\hsize: is the main parameter that TeX uses when typesetting: whenever it finishes a paragraph it looks at the current value of \hsize for breaking it into horizontal boxes. 


LaTex은 많은 간접적인 방법으로 width를 관리 한다.

\textwidth: text의 영역의 global을 말한다. 

\columnwidth는 컬럼의 width를 말한다. 즉 두개 이상의 컬럼이 존재 할때, textwidth와의 차이가 발생 한다.


\linewidth: List 환경에서의 라인의 길이를 포함하는 것이다. 

즉, list를 만들때 사용하는 것이 적합하다. 리스트를 만들때는 컴파일 타임에는 그 길이를 알 수 없기 때문에 textwidth 또는 columnwidth는 사용 할 수 없다. 


height = 0.1\textheight: 높이를 설정한다.


\includegraphics[height = 0.1\textheight, width=0.5\columnwidth, keepaspectratio=true]

keepaspectratio=false로 설정하면 자동 비율 설정을 막을 수 있다.



Click



크기 조절 방법

\includegraphics[height = 0.1\textheight, width=0.5\columnwidth, keepaspectratio=true]




LaTex에 표 만들기



\begin{table}[t]

\centering

\begin{tabular}{|c|l|}

\hline Rank (Fraction) & Exception \\

\hline 

\hline 1 (51.2\%) 21 & 1 \\

\hline 2 (14.6\%) 21 & 2 \\  

\hline 3 (12.2\%) 21 & 3 \\  

\hline 4 (9.8\%) 21 & 4 \\  

\hline 5 (2.4\%) 21 & 5 \\  

\hline 5 (2.4\%) 21 & 6 \\

\hline 5 (2.4\%) 21 & 7 \\

\hline 5 (2.4\%) 21 & 8 \\

\hline 5 (2.4\%) 21 & 9 \\    

\hline 

\end{tabular}

\caption{Table captions should be placed below the table.}

\label{tab:table1} 

\end{table}


{|c|l|} -> c는 가운데 정렬, l은 왼쪽 정렬, |의 의미는 vertical의 선 여부를 의미함.

& -> column 을 의미한다.

\\ -> row를 의미한다.

\hline은 아래쪽 선을 의미한다.


\documentclass[a4paper]{article}
\pagestyle{empty}
\begin{document}
\begin{table}[h]
{\renewcommand\arraystretch{1.25}
\begin{tabular}{|l|l|l|} \hline
Use Case Navn:& \multicolumn{2}{l|}{Opret Server} \\ \hline\hline
Scenarie:& \multicolumn{2}{p{4cm}|}{\raggedright At oprette en server med bestemte regler som tillader folk at spille sammen. More Text more text More Text} \\ \hline
\end{tabular}}
\end{table} 

\end{document}






Latex Image표


\begin{table}[t]

\centering

\caption{Chunk Data Structure.}

\includegraphics[width=1\columnwidth]{Figures/TCE/table1}

\label{ch02:table1}

\end{table}






캡션 (Caption) 조작하는 방법


caption package를 이용해서 표와 그림 등등에 있는 label들을 조작할 수 있다.


\usepackage[hoptionsi]{caption} %전체에 적용하는 방법

\captionsetup[hfloat typei]{hoptionsi} % 각각에 적용하는 방법, 즉 \caption전에만 위치 시키면 된다.


Figure -> Fig. 로 변경
\captionsetup{name=Fig.}

굵은 글씨로하고
Figure: -> Figure. 으로 변경
\usepackage[labelfont=bf, labelsep=period]{caption}



수식 표현 방법



The well known Pythagorean theorem \(x^2 + y^2 = z^2\) was 

proved to be invalid for other exponents. 

Meaning the next equation has no integer solutions:

 

\[ x^n + y^n = z^n \]



The mass-energy equivalence is described by the famous equation

 

$$E=mc^2$$

discovered in 1905 by Albert Einstein. 

In natural units ($c$ = 1), the formula expresses the identity


\begin{equation}

E=m

\end{equation}







알고리즘 표현 하기


수학이나 물리쪽에서는 수식을 표현하기 위해서 LaTex을 사용하지만,

Computer Science에서는 Algorithm을 표현하는 것이 중요하다.


LaTex에서 알고리즘을 표현하기 위해서는 다양한 package가 있다. 

필자는 algorithm2e.sty을 사용 한다.


\begin{document} 코멘트 이전에 아래의 코드를 이용해서 pacakge를 include 한다.

\usepackage[options]{algorithm2e} 


사용가능한 유용한 option


Lines numbers

linesnumbered: lines of the algorithms are numbered except for comments and input/output (KwInput and KwInOut). You must use \nllabel{label} to label those lines.


ruled: to have algorithms with a line at the top and the bottom. Note that the caption is not centered under the algorithm anymore but is set at the beginning of the algorithm.


반복문 사이에 라인을 넣는 옵션들

lined: 일자 라인

vlined: L 자 라인을 말함

noline: 아무것도 없다.



How to adjust line numbers of algorithm2e package

참고사이트: click


즉, 줄번호가 사가형 밖으로 나왔을 경우에 조절하는 방법이다.

통상 발생하지 않으나, 논문 작성 폼에 따라 문제가 간혹 발생한다. 이럴때 수작업으로 조절이 가능 하다.



해결 방법:

\IncMargin{1.5em}

\begin{algorithm}

/* 알고리즘 본문 */

\end{algorithm}

\DecMargin{1.5em}




아래와 같이 하면 특정 코드는 들여쓰기를 막을 수 있다.

\Indm  

\KwIn{List $L$ of n activities }

\KwOut{List $G$ of no sequence activities}

\Indp





문자열 크기


Command             10pt    11pt    12pt

\tiny               5       6       6

\scriptsize         7       8       8

\footnotesize       8       9       10

\small              9       10      10.95

\normalsize         10      10.95   12

\large              12      12      14.4

\Large              14.4    14.4    17.28

\LARGE              17.28   17.28   20.74

\huge               20.74   20.74   24.88

\Huge               24.88   24.88   24.88




줄간격


\linespread{value}


1.0 single spacing

1.3 one and a half spacing

1.6 double spacing 





줄 번호 삽입 (리뷰용)


https://texblog.org/2012/02/08/adding-line-numbers-to-documents/ 


\usepackage[pagewise,modulo]{lineno}


시작하려는 위치에서: \linenumbers


유용한 옵션들

  • [left]: Line numbers in left margin (default)
  • [right]: Line numbers in right margin
  • [switch]: Line number in outer margin (left for even, right for odd pages)
  • [switch*]: Line numbers in inner margin
  • [pagewise]: Restart numbering on every page
  • [running]: Continuously number lines (default)
  • [modulo]: Print only multiples of five
  • [displaymath, mathlines]: Line numbers for math environments (both needed)



algorithm2e 사용이 문제될 경우 (예: IEEE Access에서 linenumber 문제 발생)

algorithm2e 처럼 loop 범위에 line을 삽입하기 위해서 아래와 같이 custom definition을 넣어 준다.


% two packages are used

\usepackage{algorithm}

\usepackage{algpseudocode}


%custom command 

\makeatletter

% This is the vertical rule that is inserted

\def\therule{\makebox[\algorithmicindent][l]{\hspace*{.5em}\vrule height .75\baselineskip depth .25\baselineskip}}%


\newtoks\therules% Contains rules

\therules={}% Start with empty token list

\def\appendto#1#2{\expandafter#1\expandafter{\the#1#2}}% Append to token list

\def\gobblefirst#1{% Remove (first) from token list

  #1\expandafter\expandafter\expandafter{\expandafter\@gobble\the#1}}%

\def\LState{\State\unskip\the\therules}% New line-state

\def\pushindent{\appendto\therules\therule}%

\def\popindent{\gobblefirst\therules}%

\def\printindent{\unskip\the\therules}%

\def\printandpush{\printindent\pushindent}%

\def\popandprint{\popindent\printindent}%


%      ***      DECLARED LOOPS      ***

% (from algpseudocode.sty)

\algdef{SE}[WHILE]{While}{EndWhile}[1]

  {\printandpush\algorithmicwhile\ #1\ \algorithmicdo}

  {\popandprint\algorithmicend\ \algorithmicwhile}%

\algdef{SE}[FOR]{For}{EndFor}[1]

  {\printandpush\algorithmicfor\ #1\ \algorithmicdo}

  {\popandprint\algorithmicend\ \algorithmicfor}%

\algdef{S}[FOR]{ForAll}[1]

  {\printindent\algorithmicforall\ #1\ \algorithmicdo}%

\algdef{SE}[LOOP]{Loop}{EndLoop}

  {\printandpush\algorithmicloop}

  {\popandprint\algorithmicend\ \algorithmicloop}%

\algdef{SE}[REPEAT]{Repeat}{Until}

  {\printandpush\algorithmicrepeat}[1]

  {\popandprint\algorithmicuntil\ #1}%

\algdef{SE}[IF]{If}{EndIf}[1]

  {\printandpush\algorithmicif\ #1\ \algorithmicthen}

  {\popandprint\algorithmicend\ \algorithmicif}%

\algdef{C}[IF]{IF}{ElsIf}[1]

  {\popandprint\pushindent\algorithmicelse\ \algorithmicif\ #1\ \algorithmicthen}%

\algdef{Ce}[ELSE]{IF}{Else}{EndIf}

  {\popandprint\pushindent\algorithmicelse}%

\algdef{SE}[PROCEDURE]{Procedure}{EndProcedure}[2]

   {\printandpush\algorithmicprocedure\ \textproc{#1}\ifthenelse{\equal{#2}{}}{}{(#2)}}%

   {\popandprint\algorithmicend\ \algorithmicprocedure}%

\algdef{SE}[FUNCTION]{Function}{EndFunction}[2]

   {\printandpush\algorithmicfunction\ \textproc{#1}\ifthenelse{\equal{#2}{}}{}{(#2)}}%

   {\popandprint\algorithmicend\ \algorithmicfunction}%

\makeatother



% algorithm 


\begin{algorithm}

  \caption{Euclid’s algorithm}\label{euclid}

  \begin{algorithmic}[1]

    \Procedure{Euclid}{$a,b$}\Comment{The g.c.d.\ of a and b}

      \LState $r\gets a\bmod b$

      \While{$r\not=0$}\Comment{We have the answer if r is 0}

        \LState $a\gets b$

        \LState $b\gets r$

        \LState $r\gets a\bmod b$

      \EndWhile\label{euclidendwhile}

      \LState \Return $b$\Comment{The gcd is b}

    \EndProcedure

  \end{algorithmic}

\end{algorithm}





참고문헌 넣기


참고문헌을 만드는 방법은 크게 두가지로 수동, 자동이 있다.


□ 수동의 경우

LaTeX에서thebibliography 환경을 이용하는 것으로  \bibitem[label]{marker}를 매번 타이핑 해주는 방식이다.



□ 자동의경우

Texmaker (LaTex Editor)


myBib.bib 만들기

File -> new File -> save as -> [파일이름].bib


[파일 이름].bib 내용 채우기

Texmaker를 이용한 직접 채우기: Bibliography -> Bibtex -> 적당한 형식 고르기.

Google scholar 에서 직접 다운

EndNote에서 File -> Export -> output Style -> Select another output style -> BibTex 


본문 인용 방법

\bibliographystyle{acm-sigchi}

\bibliography{myBib}

\end{document}


acm-sigchi.bst 는 학회에서 제공하는 output style 이다. .bst 확장자를 가진다.
myBib.bib 는 BibTex 이다.

본문에서 bracket으로 인용되는 것은 아래와 같이 하면 된다.
~\cite{acrobat}

컴파일 방법본문 인용 방법

아래와 같이 하지 않으면 [?] 상태로 나타내게 되며, Reference 항목에 업데이트가 되지 않는다.


1) pdfLatex

일단 문서를 한번 컴파일 한다.

이렇게 해야 aux 파일이 생성 된다.

2) BibTex

BibTex을 한번 컴파일 해준다 현재 문서에서 

그러면 aux 파일을 읽어서 해당 문서에서 사용한 citation들을 찾아서 bibTex과 연관을 지어 준다.

3) PdfLaTex

   Latex 문서내의 모든 citation을 정확히 반영 한다.

4) PdfLaTex

   reference List에 내용을 반영 한다.

5) 결과 확인


이것을 Quick Build를 수정해서 [F1] 키만 누르면 자동으로 할 수 있게 한다.




참고자료

Bibliography in Texmaker 

Bibliography menu of TeXmaker

Step-by-step guide to using EndNote with LaTeX and BibTeX

BibTex in Latex with WinEdt (한글)

LaTeX 문서와 참고문헌 인용




□ 참고 문헌 인용시 package의 역할


그냥 인용을 해도 되지만, package를 이용하면 편리한 기능을 자동으로 수행해 준다.


number-only . . . as shown in [34] . . . \usepackage{cite

author-date . . . as shown in (Maier 2003) . . . \usepackage{natbib

short-title as shown in Maier, Final Theory . . . \usepackage{jurabib


\usepackage[...]{cite


Before

Tex: see \cite{wbl1, book3, meier3}

Result: see [2,1,3] 

-> 순서가 자동 정렬 되지 않는다.


After

see [1-3]

 

Options

space, nospace: default는 space가 있는것

nocompress: [1-4]

nosort: switch off sorting of entries

nobreak: default: strongly discouraged, but not forbidden

superscript: 인용이 윗 첨자로 들어가는 형태 see^1-3


다른 package들은 Computer science에서 일반적이지 않으므로 생략




What is the best Tex editor for LaTex



TexEditor 선호도 투표

웹기반 Tex Editor

http://www.sharelatex.com

http://www.scribtex.com

http://docs.latexlab.org (works with Google Drive)



설치형 Editor

Texmaker

멀티 윈도우를 지원 한다.


TexStudio

문법 체크를 지원 한다.


WinEdt: 과거에는 많이 썻지만 요즘은 사용하지 않는다. (상업용이다.)

하지만, http://www.sumatrapdfreader.org/free-pdf-reader.html

즉, sumatra PDF와 연동하면, Real-time으로 PDF 변화를 알 수 있다.

LaTex은 자유 소프트웨어이다. 그런대 Editor는 상업용을 쓴다는게 말이 안된다. 따라서 많은 오픈 프로젝트들이

활성화 되었다 WinEdt에 대항하기 위해서


TexnicCenter : 안좋음

http://www.lyx.org/ : 초보자용



여기서 어떤 Editor가 가장 많이 사용 되는지 투표하고 있다.

그 결과 TexStudio인것 같다. 무료이고, 기능도 막강하여 가장 많은 사람들이 사용 하는것 같다.

http://www.researchgate.net/post/What_is_the_best_TeX_editor_for_LaTeX1



Texmaker 단축키 모음집

click



TexStudio

단축키

F7: 현재 작업하고 있는 영역을 보여 준다.



너무 많은 TexEditor가 있어서 그것을 비교하는, Wikipedia도 있다.

http://en.wikipedia.org/wiki/Comparison_of_TeX_editors


또한, tex.stackexchange에서 엄청나게 비교를 했다.

http://tex.stackexchange.com/questions/339/latex-editors-ides





LaTex 소소한 Tip



Why should I put a ~ before \ref or \cite?

~는 단순한 공백처리가 아니다. 

Table~\ref{mytable}과 같은 형식으로 할경우 두 단어는 하나로 묶어준다. breaking 되는것을 막아준다.

그리고 가독성을 향상 시키는 효과를 가져온다. 


참고자료

click



두 단에 걸치는 그림, 표, 수식


Figure나 table 같은 floating object들은 별표붙인 환경으로 두 단에 걸칠 수 있다.

특정 자리에 멈추게 하고 샆다면. !h를 사용하라


예제코드

\begin{figure*}

~~

\end{figure*}





TexStudio에 Git 연결하기


아직 지원하지 않음

커멘드를 수정 해야할것 같다.








Troubleshooting 


문제: 컴파일시 Misplaced alignment tab character & 발생


해결방법


BibTex에 &의 사용이 있었다. 일단 이것을 제거한다음

.bbl 파일을 제거 했다. 

그다음 다시 컴파일 하니 성공









'논문 작성 > LaTex' 카테고리의 다른 글

Latex 줄 번호 삽입  (0) 2016.12.23
TextStudio 문법 검사 기능 사용  (0) 2016.06.29
TexLive 2016 설치법  (0) 2016.06.15
Latex 에 하이퍼링크 추가방법  (0) 2016.05.30
citation 번호 합치기  (0) 2016.04.22

논문에서는 중문 보다는 복문으로 글을 많이 쓰라고 한다.

복문 중문에 대해서 알아보자.


대등 연결: coordination

종속적으로 연결: subordination 



대등 연결 방법: 동등하게 중요한 두 생각을 서로 연결하는 방법은 세 가지


중문 (compound sentence)의 의미: a sentence containing two or more coordinate independent clauses, usually joined by one or more conjunctions, but no dependent clause, as The lightning flashed (independent clause) and (conjunction) the rain fell (independent clause).


1. 중문(compound sentence)으로 만들기 

독립적인 생각을 가지고 있는 두 절을 

  • 등위 접속사(coordinating conjunction), 
  • 접속 부사 (conjunctive adverb), 
  • 세미콜론(semicolon)

으로 연결합니다.

   

Green tea is popular in Asia, but black tea is more common in North America. 

Green tea is popular in Asia; however, black tea is more common in North America. 

Green tea is popular in Asia; black tea is more common in North America. 

녹차는 아시아에서 유명하다. 하지만, 홍차는 북미에서 더 일반적이다. 


2.  접속사(coordinating conduction)로 단어와 구를 연결해서 만들기 


Green tea and black tea come from the same plant but are processed differently. 

녹차와 홍차는 같은 식물에서 나오는 거지만, 다르게 처리된다. 


3. 상관접속사(correlative conduction)으로 단어와 구를 연결하여 만들기


Both green tea and black tea contain chemicals that are good for you.

녹차와 홍차는 당신 몸에 좋은 화학물질을 포함한다. 

both A and B - A와 B 모두


either A or B - A 이거나 B


whether A or B - A일지 B일지


not only A but also B - A뿐만 아니라 B도 


neither A nor B - A도 아니도 B도 아닌



두 문장을 종속적으로 연결하는 방법, 흔히 복문(Complex sentence) 


복문의 정의: complex sentence => a sentence which contains more than one clause


두 문장을 종속적으로 연결하는 방법은 네 가지 방법. 

두 생각이 종속적이라는 것은 중요도가 서로 다름을 의미함.


I. 덜 중요한 정보를 종속절(dependent clause)로 주절에 연결하여 복문(complex sentence) 만들기


Because green tea is healthy, it is becoming popular outside Asia. 

녹차는 건강에 좋기 때문에, 아시아 밖에서 유명해지고 있는 중이다. 

Green tea contains a lot of antioxidants, which slow the aging process. 

녹차는 노화 과정을 느리게 하는 풍부한 노화 방지제가 있다. 

Some doctors believe that green tea fights cancer.

몇몇 의사들은 녹차가 암에 효능이 있다고 믿는다.


2. 덜 중요한 정보를 동격, 동격구로 독립절(주절)에 연결함 

Green tea and black tea come from the same plant, Camellia sinensis. 

녹차와 홍차는 같은 식물, 차나무에서 나온다.  


3. 덜 중요한 정보, 추가 정보를 현재분사(-ing)구나 과거분사(-ed)구로 연결함. 


Interested in knowing more about green tea, doctors began studying its chemistry. 

녹차에 대해서 아는 것에 관심이 있는 의사들은 녹차의 화학물질을 연구하기 시작했다. 


4.  덜 중요한 정보, 추가 정보를 부사절로 만들어서 독립절(주절)에 연결함

After analyzing green tea's chemistry, doctors recognized its health benefits. 

녹차 성분을 분석한 후에, 의사들은 녹차의 효능을 알았다. 




 똑바르게 두 생각을  연결하는 방법


서로 너무나 다른 생각을 대등하게 연결하면 안됩니다. 생각들간의 관계가 불명확해져서 글을 읽는 사람이 어떤 생각이 더 중심적인 중요한 생각인지 알 수 없게 만듭니다. 유사한 생각이 아닐 경우에는 종속적으로 두 문장을 연결해야합니다.  


I was born in Cuzco, and a big festival takes place there every June. 

나는 쿠스코에서 나어 났고, 큰 축제가 매년 6월에 그 곳에서 열린다. (불명확한 문장)

-> I was born in Cuzco, where a big festival takes place every June. 

-> 나는 매년 6월에 큰 축제가 열리는 쿠스코에서 태어났다. (명확한 문장)


Calama, Chile, used to be the driest place on earth, and it had had no rain at all for four hundred years. 

칠레 칼라마는 지구상에서 한때 가장 매마른 지역이었고, 400년 동안이나 전혀 비가 오지 않았다. (불명확한 문장) 

-> Calama, Chile, used to be the driest place on earth because it had had no rain at all for four hundred years. 

-> 칠레 칼라마는 지구상에서 한때 가장 매마른 지역었다. 왜냐하면 400년 동안이나 전혀 비가 오지 않았기 때문이다. (명확한 문장)





'논문 작성 > 영어논문 작성법' 카테고리의 다른 글

영어 작문 규칙  (0) 2015.07.11
영어 이메일 기본 표현  (0) 2015.02.20
논문 작성 노하우 (인터넷 + 내생각)  (0) 2015.02.04
Rate, Ratio, Fraction  (1) 2014.03.24

1.2.1 Tense pairs


Present Simple / Present Continuous

두개의 차이는 Present simple는 permanent situation을 나타내고, present continuous는 temporary situation을 나타낸다는 것이다.

이러한 특징 때문에, present simple을 이용해서, 당신의 주장이 사실로써 받아들이도록 주로 사용된다.

즉, present continuous는 거의 사용하지 않는다!


나중에 실험 결과를 설명할때, Past Simple과 Present Simple 사이에서도 선택을 해야 한다.

다음의 예제를 보라.


a) We found that the pressure increased as the temperature rose, which indicated that temperature played a significant role in the process.

b) We found that the pressure increases as the temperature rises, which indicates that temperature plays a significant role in the process.




a) 처럼 과거로 사용할 경우, 찾아낸 사실은 단순히 현재의 연구 결과에만 영향을 미치는것 처럼 보이며, 저자는 그것의 가정을 주장하기 힘들다. 심지어, 다른 연구자는 똑같은 결과를 얻기위해서 매번 다시 그 작업을 해야하는 뉘양스를 풍기게 된다.


b) 현재를 사용할 경우 찾아낸 결과는 충분히 사실이라고 주장할 수 있다.

연구에서 찾는 사실이나, 결과는 불변의 참값이므로, 현재 시제로 작성 한다. 즉, 이러한 경우 강하게 그것이 진실이며, 통용되는 사실이라고 믿게 만든다. 논문을 읽는 독자는 이러한 결과에 맞추어서 지속적으로 생각을 이어가게 된다. 혼돈을 주지 않는다. 이러한 주장과 결과에대한 기술법은 Result 섹션에서도 중요하게 다룬다.


결론: 논문이란 새로운 결과를 주장하는 것이다. 따라서 Present Simple을 주로 사용해라. 


Past Simple vs Present Perfect

둘다 Introduction을 작성할 때 필요한 시제이다.

하지만, 언제 사용해야되는지를 적절히 살정 해야한다.


(a) Past Simple: I lived in Tokyo for five years ~ 

-> But i don't live there anymore.

(b) present Perfect: I have lived in Tokyo for five years

-> and I still live there NOW.

(c) Past Simple: I broke my glasses~

-> but it doesn't matter / I repaired them

(d) Present Perfect: I have broken my glasses

-> and so I can't see properly NOW.

(d)의 표현은 (c)보다 더 현재에 더 밀접한 관계가 있음을 내포 하고 있다.


이러한 사실들이 왜 Introduction을 작성하는데 중요한지를 다음 예제를 통해서 생각해보자.

아래의 예제는, Introduction에서 특히, previous research를 나타낼때의 예제이다. 과거의 연구의 부족한점을 기술할때 tense는 매우 유용하게 사용되어지며, 잘못된 사용은 심각한 오류를 발생 시킨다.


[Present Perfect]

For example, Penney et al. showed that PLA composites could be prepared using blending techniques and more recently, Hillier established the toughness of such composites. However, although the effect of the rubber particles on the mechanical properties of copolymer systems was demonstrated over two years ago, little attention  has been paid to the selection of an appropriate rubber component

계속해서 Past Simple을 사용하다가, 갑자기 Present Perfect를 사용한 이유는 무엇일까? 그것은 현재 논문은 적합한 rubber component를 선택하는것에 관심을 기우리고 있다는것을 보이기 위함이다.

*Note: a little means 'a small amount', but little meas 'virtually none'.


만약 Writer가, 마지막 문장을 계속해서 Past Simple로 작성할경우, 어떠한 문제가 발생하는지 생각해보자.

[Past Simple]

However, although the effect of the rubber particles on the mechanical properties of copolymer systems was demonstrated over two years ago, little attention was paid to the selection of an appropriate rubber component.

2년전에 적합한 rubber component를 선택하는 것을 관심 가졌었다는 의미가 된다. 아마도 그러한 관심은 그때 부터 계속 지속되었을 것이고, 결국 그 문제는 해결 되었을 것이라는 의미를 내포하게 된다.


결국, tense의 변경은 항상 의미의 뱐화를 내포 하고 있으므로, 임의로 생각없이 변경해서는 안된다. 사용과 변경에 있어서 신중함을 기해야 한다. 


1. Abstract
현재로 사용 모든것을


2. 서론

현재 사용

과거 연구는 과거나, 현재완료


2. 실험 부분 작성


실험 환경이나 연구 방법은 simple past를 사용 한다.


표 그림 설명의 경우 Simple present를 사용 한다.


내용의 기술시 시제는 과거 그러나 표와 그림은 현재시제로 한다.



3. Discussion and Conclusion 

내용기술에서 시제는 과거로 그러나 해석 결론 유추 등은 현재시제 사용



다크 프로그래머 글

click


요약

이론- 논문은 학술적 의미를 부여해야한다. 기술만으로는 힘들다. 

cvpr 2012 학회 reject 이유

The proposed method is well engineered and works slightly better or comparable to existing approaches. The feature training process seems encouraging as it may be scale invariant. Despite such positive aspect, I wonder what one (a cvpr graduate stduent) can learn from such study, and whether he/she can transfer or generalize this approach (knowledge) to other tasks (especially without heavy training).


아무리 결과가 좋더라도, 그것을 통해 후세대가 배울수 있는 무언가가 없다면 그것이 무슨 소용인가?

Engineering과 Research를 구분하는 구절이 아닌가 싶다.


영어 문장력

한국어가 허술할때 주는 느낌

'기존의 접근 방법을 크게 2가지가 나누는데, 하나은 모델 방법이고 둘이 통계 방법이다'. 

영어가 허술 하면, native들이 보기에 아마도 이런 느낌일 것이다.


우리는 일단 50% 깍이고 들어간다고 보면된다. 문장력도 엉상하고 구조까지 엉망일경우 아에 논문은 보지도 않고 reject를 당하게 된다.


영어교정도 하나의 방법이긴 하지만, 해당 분야의 비 전공자가 해주는것은 어느정도 한계가 있으므로, 스스로 영량을 키우는것이 중요하다.


1) 최소 마감 2주일전에는 논문 초안을 완성해야 한다. 그리고 남은 기간에는 끊임없이 표현을 가다듬고 교정하는 과정을 거쳐야 한다.

'결과를 바꾸는 것은 사실 1%의 차이이다. 1%의 차이지만 그 결과는 완전히 달라진다'


2) 또 하나, 영어가 안될 경우에는 최대한 간결하고 단순한 표현을 사용하는 것이 좋다고 생각한다. 개인적으로도 워낙 영어가 일천하기 때문에 멋진 어휘나 문장은 꿈도 꾸지 않는다. 멋이 없고 정말 없어 보이더라도 내가 말하고자 하는 바를 가장 정확하게 나타낼 수 있는 그리고 다른 (오해의) 해석의 여지가 없는 단어와 문장을 선택한다. 즉, 해석에 있어서 모호성이 없는 어휘 및 문장 선택이 중요하다는 것이다.


3) 마지막으로 너무 강한 표현보다는 정제된, 조금은 완곡한 표현을 쓰는 것이 논문을 좀더 있어 보이게 하고 심사자들에게 호감을 이끌어 내는 것 같다.



영어논문 작성법: 전산학 교수 문수복

Click


45 ways to avoid using the word 'very'

Click




논문작성 내생각.


Native speaker와 경쟁 하는 방법


영어를 모국어로 하는 사람들은 논문 초안을 Deadline 2주전에는 완성하고, 심지어 1달 전에도 완성 한다. 그리고 남은 2주에서 1달간의 기간을 오로지 논문 퀄리티를 높이기 위한 작업에 매진한다. 즉, 문장의 표현, 구조, 배치를 조율 한다는 것이다. 사소한 그림의 스케일링에도 엄청난 시간을 투자한다. 필자가 국내 학회에서 우수논문을 받기 위해서 3장의 논문에 투자한 시간을 생각하면, 이해가 되는 부분이다. 아는 만큼 보인다고, 그들에게는 시간을 투자하면 확실히 가능성을 끌어 올릴 수 있는 작업이므로, 무한한 시간을 그곳에 투자하게된다.


이러한 상황속에서, 영어의 질로 승부하는것은 자살 행위이다. 광고천재로 유명한 이제석 씨가 영어가 모국어가 아닌데도, 미국 광고 시장에서 살아남을 수 있는것은 그가 영어 Copy 멘트에 집중하지 않아서이다. 영어로 광고 copy를 작성하는것은 모국어가 영어가 아닌 사람에게는 거의 불가능한 일이다. 따라서 그는 자신만의 참신성을 인정 받기 위해서 세계 만국의 공용어인 이미지를 이용하게 된다. 그것은 적중했고 미국에서 살아 남았다.


우리가 본받아야할 점은 바로 이점이다. 미국인과 영어로 승부하는것은 자살행위이다. 학술 논문에서도 마찬가지이다. 우리는 영어를 쓸때 멋을 부리지 않아야 하며, 최대한 본래의 의미가 잘 절달 되는가에만 신경을 써야한다. 오로지 내용 전달, 간단명료 이것에만 초점을 맞추고 작문하며, 한판 승부는 연구 내용과 구조로 해야한다. 비록 영어는 투박하고 전체적으로 담백한 느낌을 주지만, 연구 결과만큼은 함부로 무시 할 수 없어야 하는것이다. 그래야 국외 탑 저널이나 학회에 논문이 억셉트 될 수 있는것 같다. 


영어의 표현 보다는 정확한 의미전달에 집중해라.

세련된 구조보다는 다소 투박하고 지루하지만 논리적인 구조에 집중해라.

멋뜨러진 동기와 연구의 중요성 보다는 감동을 주는 결과를 만들어나. 노가다는 반드시 인정 받기 마련이다.



'논문 작성 > 영어논문 작성법' 카테고리의 다른 글

영어 작문 규칙  (0) 2015.07.11
영어 이메일 기본 표현  (0) 2015.02.20
복문(Complex sentence) vs 중문 (compound sentence)  (0) 2015.02.06
Rate, Ratio, Fraction  (1) 2014.03.24

on the basis of vs based on


비슷하지만, 차이가 있는 두 표현에 대해서 알아보겠다.


1.

a) Employers may not discriminate on the basis of race or sex.

b) Employers may not discriminate based on race or sex.

 

Only a) is correct.

 

2.

a) Discrimination based on race or sex is forbidden by law.

b) Discrimination on the basis of race or sex is forbidden by law.

 

Both are correct, but by convention, b) is used most often.

 

3.

a) The movie was based on Einstein's life.

b) The movie was on the basis of Einstein's life.

 

Only a) is correct.


결론

based on은 무엇에 기초를둔 설명을 의미한다.

on the basis of는 무엇에 근거한 주장이나 행동에 좀더 적합하다.



'영어 > 영문법' 카테고리의 다른 글

관계대명사: 계속적용법, 제한적 용법  (0) 2015.02.19
관계형용사 vs 의문형용사  (0) 2015.02.18
would의 용법 4가지  (0) 2015.01.25
문법 약어 및 영어 표현  (1) 2015.01.24
assure, ensure, insure  (0) 2015.01.24

+ Recent posts