이삼일 더 파니까 패턴이 보임. 뉴비들을 위해 간단 요약해줌.

1. 최상위 고급레벨 알고리듬 인터페이스
train과 predict 요렇게 두가지가 있다.
얘들은 응센세 강의에선 리니어리그레션, 로지스틱리그레션, 뉴우럴 네트워크, SVM 등등의 내부구현을 품고 있어서, 대략 5가지 셋트라고 생각해도 됨


2. train 내부구현 인터페이스
ML의 핵심은 train의 구현이다. 위에 다섯가지 셋트.
얘들은 모두 모델(혹은 파라미터라 부름)을 찾아내기 위해 최적값 구하는, 보통 하드코어 수학이론이 들어가는 알고리듬계 최고봉에 속하는, 최소값을 찾으러 \"하강\" 하는 알고리듬을 사용한다.
뉴럴네트워크나 svm처럼 train 자체 구현이 복잡한것도 하강 알고리듬에 비하면 간단한거임. 물론 얘들도 하강 알고리듬을 호출해야 됨.
하강 알고리듬은 존나 빠르게 전역 최소값으로 하강하면 좋은거임

3. 라이브러리 사용
급하강 함수가 지원되는 라이브러리를 가져다 써야지, 직접 개발하는건 현실적으로 불가능하다고 보면 됨.
근데 라이브러리를 구하다보면 하강함수는 train 함수가 지원되는 라이브러리에 포함되는 것이 보통임.
일단 내가 잠깐 손대본건 liblinear multicore 이거랑 libsvm. 조낸 응센세 강의 때 개발한거랑 인터페이스가 달라서 30분 정도 삽질함.
얘네 둘은 matlab, octave, java, c, c++ 지원임. 난 이미 응센세 ML 하면서 옥타브용 정답 코드가 다 있기 때문에 옥타브에서 두 라이브러리를 써보고 내꺼랑 비교해봄.
와 멀티코어 버젼이라 순식간에 cpu 점유율이 400 가까이 올라감. 답은 한 20초 걸리던게 3초 걸리네 ㅎㄷㄷ

4. 딥러닝
뭐 응센세는 이건 커버 안했지만, 내가 만든 뉴럴네트워크는 다수의 히든 레이어를 지원해서 심심풀이로 비교해봄.
응센세 문제 데이터 특성이 그런건진 몰라도 딥러닝으로 안치는 히든 레이어 한장 짜리랑 딥러닝으로 치는 두장 짜리랑 비교해봄.
결과는 근소한 차이로 한장짜리 승! 응센세가 보통 리니어리그레션, svm+리니어커널, svm+논리니어커널, 뉴럴네트워크 요런 순으로 자기는 젖절한 거를 찾는 다는데, 아마 대부분 첫번째에서 답나오는 듯

5. 기타
니가 ML 시스템을 구축하려면 train이랑 predict는 그냥 시작에 불과하고, 부수적으로 데이터 파이프라인, 검증, 기타 등등 잡일이 산더미같이 늘어남

6. 클라우드
와 찾아보니까 메이저급 클라우드 업체들은 벌써 ML 다 지원하더라구. 마소도 하고 ㅎㄷㄷ

ML도 특이점이 오긴 왔어