ML in Action.. Ch. 1

올해 6월에 쓰고는 처음 포스팅이네요. 그간 직장을 옮기고, 자바 / 클로져 공부하고, 빅데이터 좀 파보고.. 300 줄 이내의 안드로이드 앱 하나 만드니 반년이 갔네요..

12월부터는 머신 러닝 살짝 파보려고 합니다.

매닝의 인 액션 시리즈..  참 좋은 것 같네요..

Part 1   Classification

이 책의 첫 두 파트는 supervised learning.  관리된 러닝은 목표 변수를 규정하고 데이터로부터 배우도록 지시한다.
목표 값의 두 경우.  노미널 : 참/거짓, 물고기, 포유류, 식물 …
실수 : 이 경우 ‘회기’ 라고 불림.  이것은 파트 2 에서 공부한다.
첫번째 파트는 분류 .. 에 촛점을 맞춘다.

7장의 분류 불균형으로 마무리. 다른 클래스들보다 한 클래스의 데이터가 더 많을 경우… 실세계의 문제.

Ch. 1 … Machine learning basics

머신 러닝의 여러 사례. 스팸 필터, 제품 추천, 얼굴 인식..

파이썬 : 머신러닝에 적합.  NumPy : 매트릭스 연산 등 제공.

1.1   What is ML ?

스팸 메일을 제목의 한 단어만 갖고 판단하기는 힘들다. 하지만, 여러 단어의 조합을 보고, 메일 전체의 길이 등 여러 요소를 같이 보면 더 잘 판단할 수 있다. 머신 러닝은 데이터를 정보로 바꾼다.

머신러닝은 컴퓨터 공학, 엔지니어링, 통계, 기타 다른 분야 등의 교차점에 놓여있다. 정치학, 지질학에 적용되기도 한다.

머신러닝은 통계학을 사용한다. 통계학은 회사가 소비자를 속이기 위해 악용되기도 한다.
인간의 동기는 모델링하기 어렵다.  사회 과학에서 60% 가 맞으면 성공적으로 간주된다. 사람 행동의 60%만 예측하면 잘 한 것이다.
항상 맞을 수는 없나?

완전한 모델링이 불가능한 예. 인간은 행복을 최대화 하기 위해 행동하지 않는가? 이것에 근거해 행동을 예측할 수 있는가?  아마도,  하지만 모든 사람의 행복은 다르기 때문에 어렵다.  그러므로, 사람의 행복을 극대화하는 것에 대한 가정이 옳을 지라도 행복의 정의는 너무 복잡하다.
인간 행동을 결정론적으로 모델링하기 어려운 다른 예들이 많다. 이런 문제에 대해서 통계의 몇몇 도구를 사용할 필요가 있다.

1.1.1 Sensors and the data deluge

웹에는 인간으로 부터의 데이터가 있는데, 요즘은 그 외의 데이터가 더 쌓이고 있다. 센서의 기술은 새롭지 않지만, 그것을 웹에 연결하는 것은 새롭다.

지진의 예.  센서.. 핸드폰..  의 3축 magnetometers.  지진 예측에 사용 가능.. 최소 비용.

1.1.2 ML will be more important in the future

향후 10년간 가장 매력적인 직업은 ‘통계학자’ 일 것이다.

1.2   Key terminology

새 분류 시스템. 엑스퍼트 시스템.    분류..

알고리즘을 만들고는.. 훈련시켜야..  또는 배우는 것을 허락해야..  이를 위해 training set 이라는 데이터를 먹여야 한다.
분류에서 타겟 변수는 노미널 값을 받고 회기 작업에서 값은 연속적일 수 있다.
트레이닝 셋트에서 타겟은 알려져 있다. 기계는 특징과 타겟 변수사이의 관계를 찾음으로 학습한다.
타겟 변수는 ‘종’ 이고 노미널 값을 취함으로 이것을 줄일 수 있다.
분류에서 타겟 값은 classes 로 불리고 유한한 개수의 클래스가 있다고 가정한다.

보통은 트레이닝 셋트와 별개의 테스트 세트가 있다. 초기엔 트레이닝 예제가 먹여진다. 이것이 기계학습이 일어날 때이다.
다음에 테스트 셋을 적용한다.  알고리즘이 얼마나 정확한지 추정.

새 분류작업을 한 후 기계가 뭘 학습했는지 알 수 있나?  이것이 knowledge representation 이다.
답은 ‘경우에 따라 다름’ 이다. 어떤 알고리즘은 사람이 읽기 더 좋은 KR 을 갖는다. 이것은 몇개의 법칙으로 표현될 수 있다.
어떤 것은 가능성의 분포 또는 트레이닝 세트로부터의 예 일 수도 있다.
어떤 경우 우리는 엑스퍼트 시스템을 만드는 것 보다 오직 ‘인지 표현’ 에만 관심이 있을 수도 있다.

1.3   Key tasks of ML

이전 예제는 ‘분류’ 에 관한 것.  인스턴스가 어떤 클래스에 들어갈 것이냐.  기계학습의 다른 분야는 ‘회기’ 임.
이것은 수치 예측이다.  이 두가지는 감독된 학습의 예임. 뭘 예측할 지 주어지기 때문에 ‘감독’ 된 것임.
이 반대는 ‘비감독 학습’.  여기선 데이터에 주어진 라벨이나 목표 값이 없다.
비슷한 아이템을 그루핑하는 작업은 ‘클러스터링’ 이라 한다.  비감독 학습에서 데이터를 설명하는 통계학적 값을 찾길 원할 수 있다.
이것은 density estimation 으로 알려져 있다.
다른 예는 많은 특성에서 데이터를 단순화시켜 2, 3차원 형태로 시각화하는 것이다.

1.4  How to choose the right algorithm

노미널, 목표값?. missing value 가 있나? outliers ?  needle in a haystack. ..

1.5  Steps in developing a ML application

> Collect data.
> Prepare the input data.
> Analyze the input data
> Human involvement
> Train and algorithm.  ML
> Test the algorithm
> Use it.

1.6   Why Python?

clear syntax. easy text manipulation

1.6.1 Executable pseudo-code

풍부한 기본 자료형, 객체 지향, procedual, 함수형 형태로 가능.  정규식 없이 텍스트 다루기.  …

1.6.2 Python is popular

NumPy, SciPy, Matplotlib ==>  Pylab

1.6.3 What Python has that other languages don’t have

Matlab, Mathmatica .. expensive.  Java, C … too many ceremony.

1.6.4 Drawbacks

Not as fast as Java or C.
Boost C++ library,  Python, PyPy.

1.7  Getting started with the NumPy library

Clojure in Action Ch. 1

by Amit Rathore

Preface

복잡성의 두가지
Essential complexity : 원래 복잡한 것.
Accidental complexity : 문제 외의 영역에서 초래된 복잡성.

Chapter 1. Introduction to Clojure

1.1 What is Clojure

1.1.1 Clojure – the reincarnation of Lisp

리스프의 환생.

1.1.2 How we got here

LISt Processing : LISP. 1958년에 설계된 언어.
“code as data” 의 개념.  70~80년대에 인공지능에 많은 투자가 이뤄졌지만, 대부분 실패. 그 오명을 리스프가 지게 됨.
JVM 위의 리슾 개념 : JScheme, Kawa, ABCL  등등.  하지만, 실용적으로 유용한 건 없었슴.
Rich Hickey : 창조자. 는 굉장한 일을 하였다.
클로져는 마침내 살아남은 리슾이 되었다.  –> 리슾의 미래이자 동적 프로그램 언어의 미래.

1.1.3 How this book teaches Clojure

이 책의 철학은 두 기둥에 놓여있다.
> 클로져의 첫번째 원칙을 강조하는 것.
> 그리고, 이러한 원리를 이해하기 위한 실용적인 접근.
많은 코드를 통해 이를 제공할 것이다.
클로져는 새로운 사고를 요구한다.

1.2 Understanding Clojure syntax

신택스는 호불호가 갈린다.
A Clojure expression is either < a symbol > or < a sequence >.
클로져는 배우기 지극히 간단한 언어다. (지랄. 아님) 신택스의 관점에서.. (맞아) 거의 아무것도 없다. (오케이)

1.2.1 XML and parentheses

1.2.2 Lists, vectors, and hashes

클로져는 리슾보다 더 많은 문법이 있지만, 이것이 가독성을 높여준다.
[ 벡터 ]  :  함수의 인수 리스트에 사용.  정수 인덱스 체계.
{ 해시 맵 / 사전 } : { :키 ,  값 }

1.3 The sources of Clojure’s power

1.3.1 Clojure and Lisp

1.3.2 Clojure and functional programming

> immutability, higher-order functions, laziness, concurrency semantics.

1.3.3 Clojure and the JVM

1.3.4 Clojure as a Lisp

AST (abstract syntax tree)
클로져의 런타임은 다른 언어와 다르게 작동한다. JIT 컴파일러 채용.. thanks to the JVM. 코드를 겁나 빠르게 컴파일 / 실행한다.
As alluded to, 암시…  contrive 억지스런, 고안해내다.
The Reader
리더는 소스코드를 AST 구현으로 크로져의 고유 데이터 구조를 이용하여 컨버트한다.
The Macro System
매크로는 클로져 함수. s-expression 을 인수로 받는다. s-expre.. 이 데이터 구조이므로 변형되고 반환가능하고 리턴된 값은 원래 형태로 사용된다.
이러한 코드-변형 매크로는 클로져 ‘위에’  미니 언어를 만들 수 있음.  DSLs (domain specific languages)
Metaprogramming with Macros
코드를 생산하는 코드
모든 클로져 코드는 같은 구조.  크로져 코드를 만들려면 심볼과 다른 데이터 구조를 갖는 클로져 데이터 구조를 만들면 됨.
이러한 신택스 없음과 매크로 시스템은 DSL 에 적합하게 한다.  ==> programmable programming language.
frivolous  천박한
매크로는 메타 프로그래밍의 ‘궁극’의 모습이다.

1.3.5 More advantages of Clojure

Dynamic Language
The REPL

1.3.6 Clojure as a functional language

클로져는 맵 리듀스 같은 higher-order functions 을 장려한다.
Higher-Order Functions

Machine Learning in Action Ch. 1, 2, 3

Part 1 CLASSIFICATION

1. Machine learning basics

Numpy, matrix, array etc

2. Classifying with k-Nearest Neighbors

숫자 인식.. 스킵.

3. Splitting datasets one feature at a time : decision trees

스무고개 ?  예/아니오 만 가능.
가장 보편적인 등급화 기법.  조사 결과 가장 많이 사용되는 ‘기법’.
이메일 분류.. 직원, 하키(친구) 기타는 스팸으로 분류.
콘택 렌즈 분류..

3.1 Tree construction

D. trees
Pro : 싸다, 결과를 사람이 인지하기 쉽다. 값이 빠져도 OK, 상관없는 특성들을 다룰 수 있다.
Cons : Prone to overfitting
숫자 값, niminal values 에 사용.

Information theory ..

데이터를 나눌 첫번째 결정을 설정해야..

createBranch .. 재귀적..
어떻게 데이터셋을 나눌 것인가.  [10/27]

General approach to decision trees
1. Collect : Any method.
2. Prepare :  ~~~

 

 

 

TCP IP Illustrated .. ch 13. TCP Connection Mnagement

13.1 Introduction

TCP : unicast connection – oriented 프로토콜. 데이터를 보내기 전 연결이 확보되야 함.  TCP 의 서비스 모델은 바이트 스트림이다.
TCP 가 패킷 유실, 중복, IP 레이어의 에러 등을 모두 발견, 수정한다.
이런 연결 상태 때문에 UDP 보다 복잡.
연결 확보 중에, 여러 옵션 교환. 헤더는 40바이트의 옵션 공간을 갖음.

13.2 TCP Connection Establishment and Termination

3단계
> 셋업, 데이터 전송(established), teardown (closing)
클라.. 3 웨이 핸드 쉐이킹 시작. 초기 시퀀스 넘버를 교환하기 위해. (SYN segments for the c/s )

3 Segments for connection establishment (three-way handshake)
1 C > S 2 <
3 >
~~~ data transfer ~~~
closing >
<
<
>

Active open == Client  <–> Server == Passive open .. SYN 받는 쪽..
Cleared == Close == Terminate  종료 는 양쪽 어디서든 가능..  클라이언트가 요청하는 게 일반적.  웹 서버 같은 것은 서버가 요청 후 바로 닫음.
> 1 < Active closer 가 FIN 날림.
> 2 < Passive closer 가 Acking 으로 대답. 이때 어플은 상대방이 종료를 실행한 것을 인지. 보통 어플이 종료작업을 시작.
이때, 패시브가 다른 액티브가 되어 자신의 종료를 시작..
> 3 < 종료를 완수하기 위해 최종 세그먼트는 최종 FIN 에 대한 애크를 담고 있다. 이 ‘핀’ 이 안 오면 올때까지 재전송 된다.

Half-open state .. 전송이 한 방향으로만 되는 상태.. 드물다.
Half close .. 를 두번하면 다 끊는 것..

13.2.1 TCP Half-Close

흔한 일은 아님.   ” 난 다 보내서 FIN 날렸구, 받는 건 계속 할거야 ”  버클리 소켓은 지원.

13.2.2 Simultaneous Open and Close

짜고 하지 않는 한 드물지만.. 동시 접속은 가능하다.  Simul… Open,   …. Close ..

13.2.3 Initial Sequence Number (ISN)

예상하기 어려운 ISN 를 만들어 해킹? 방지.  semi random 방식으로 만든다.

13.2.4 Example

흔한 일은 아님.   ” 난 다 보내서 FIN 날렸구, 받는 건 계속 할거야 ”  버클리 소켓은 지원.

TCP IP Illustrated .. ch 3. Link Layer

3.1 Introduction  (physical layer + data link layer)

TCP/IP 가 사용하는 링크 레이어에 대해서만..

링크레이어 PDU.. 에 대해 말할 때 frame 을 쓴다.. 패킷 / 세그먼트와 구별하기 위해.

MTU maximum transmission unit :: 레인지의 상위 한계.  앞으로 자주 볼 링크 레이어의 성격.
모뎀, 시리얼 라인은 최대 프레임 사이즈가 없고.. 사용자에 의해 규정됨.

3.2 Ethernet and the IEEE 802 LAN/MAN Standards

1980, 1982 ; 초기 이더넷 “10 Mb/s Ethernet”  “shared Ethernet” 으로 불림.
그 후 IEEE 표준.
Station 이 있는 구성 ?..
100 Mb/s … 10 Gb/s … 100 Gb/s ..
90년대 꼬인 선 와이어링 .으로 교체.. 100 Mb/s ..

현재는 스위치가 사용되어 각각이 최대 속도 보장..
IEEE 802 Standards .   MAN standards .. 802.16..

3.2.1 The IEEE 802 LAN/MAN Standards

802.3z / 802.3ab :: 1000 Mb/s Ethernet. (Gigabit Ethernet)
802.3ae :: 10 Gb/s (Ten Gigabit Ethernet)

3.2.2 The Ethernet Frame Format

All Ethernet (802.3) 은 하나의 포맷에 기초한다.
Figure 3-3 :: IEEE “Packet” ..  Frame … MAC Client Data ..
이더넷 프레임은 Preamble.. 로 시작.  이더넷은 비동기 랜..  인코드 비트간 공간이 다름..

3.2.3 802.1 p/q: Virtual LANs and QoS Tagging

스위칭 이더넷이 많아지면서 동일 랜 상에서 모든 컴퓨터가 통신하는 것이 가능해짐.  이것의 장점은 어느 호스트 든 다른 호스트와 통신할 수 있다. (IP와 다른 네트워크-레이어 프로토콜을 갖고.. 관리자 컨피겨 불필요).. 부가적으로 브로드캐스트, 멀티캐스트 트래픽이 별다른 세팅없이 가능.
버츄얼 랜.. VLANs .. 802.1q..

3.2.4 802.AX: Link Aggregation (Formerly 802.3ad)

..

3.3 Full Duplex, Power Save, Autonegotiation, and 802.1X Flow Control

win 7 : control panel .. setting.

3.3.1 Duplex Mismatch

 

this is sample
int i = 0;