어제에 이어 틈날 때 싸줌.


----


ML 세부작동 원리


이거는 최상위 레벨에선 딱 세개만 알면 됨 - 훈련(train), 테스트, 예측적용(predict).

물론, 그 전에 데이터를 수집하고, 데이터를 훈련하기 좋은 형태로 젖절하게 바꾸고 그런 개노가다가 필요하지만, 핵심은 저 세가지.


그중에서 훈련이 머신러닝 알고리듬이 필요한 부분이고, 나머지는 걍 잔머리로 정도의 노력으로 해결되는 부분.



공돌이들이 좋아하는 수학적으로 썰 풀어주면,

         f(x1, x2, x3, ..., xn) = ax1 + bx2 + cx3 + ... zxn = y

에서 x1부터 xn까지, 그리고 y는 니가 가지고 있는 데이터 일때, 그 식을 최대한 광범위하게 만족해주는 a부터 z까지를 찾아내는 거지. 위의 경우는 선형(리니어)인 경우인데, 비선형(논리니어)인 경우는 피쳐끼리 곱하기가 추가되기 시작함.

저렇게 a부터 z까지 찾아내야 될 상수들을 파라미터라고 부르고, 이런 류의 모델을 공돌이 용어로 "파라미터라이즈드 모델" 이렇게 부른다.


일단, 머신러닝 알고리듬이 파라미터를 다 찾아내면, 테스트를 거쳐서 그 모델이 얼마나 정확한지 검증하고 만족할 수준의 정확도를 보이면 그제서 그걸 적용해서 답을 내기 시작하는 거야.




머신러닝 알고리듬은 비용함수라는 것과 최적화 함수(주로 하강함수 라는 종류가 쓰임)가 핵심이야.

비용함수와 데이터를 최적화 함수한테 넘겨주면 최적화 함수가 최소값이 되는 파라미터를 찾아내는 구조지.


좀 빠릿한 조팝들은 눈치깟겟지만, 비용함수와 최적화 함수는 문제 성격에 따라 종류가 꽤 되고 라이브러리에 있는 걸 쓸때는 보통 세트로 움직이기 때문에 니가 내부적으로 뭘 쓰는지 알 필요가 없고, 안다해도 바꿀 수 없음.

럼 여기서 머신러닝에서 다루는 문제에 대해 아라보자.


뭐 개소리 다 집어치우고, 이 분야에서 큰 종류는 딱 두가지야 (다른것도 많다만, 자세한 내용은 생략한다)

- 회귀 - 데이터가 들어왔을 때, 값을 계산해 주는 문제.

- 분류 - 데이터가 들어왔을 때 그 데이터가 어떤 부류에 속하는지 분류해 주는 문제.


회귀는 이런거지. 니가 주식예측을 한다고 해봐. 피쳐가 1000가지이고 데이터 갯수 10만으로 훈련시켜서 얻은 모델이라면, 오늘짜 삼성전자에 피쳐 1000가지에 대해 새로운 정보 값을 니가 팍 줬을 때, 6개월 뒤 주식값을 확 내뱉는 그런 거.


분류는 위와 유사하지만, 주식값을 내뱉는 대신에 "사자", "팔자", "보유" 이런걸 내뱉어 주는 거.



풀어야 될 문제 종류인 회귀나 분류를 풀어내는 방법은 선형(모르면 걍 쉽게 간단한 직선이 답이라고 생각하자) 혹은 비선형(곡선 추가)으로 풀어내는 방법이 존재함.


선형은 특징이 대부분 계산이 빠르고 데이터가 많지 않아도 젖절한 해법이 있으면 그걸 찾아냄(못찾으면 이걸 쓰면 안됨). 결과도 조낸 간단함. 비선형은 계산이 느리고 결과도 조낸 복잡함.


대부분의 공돌이들은 간단한 걸 좋아하기 때문에 보통 선형으로 해보고 답이 안나오면 어쩔 수 없이 비선형을 적용하기 시작함.



이게 다야. 어때 존나 간단하지? 근데 니들이 여기까지 읽어도 할 수 있는 일은 아무것도 없다. 그렇다고 내가 요약해준 것에 만족 못하고 아래로 더 파보고 싶다... 이러면 하급 헬게이트 오픈(물론, 니가 언젠가 조팝을 면하려면 한번은 파봐야 된다). 니가 만일 더 아래 단인 수학이론을 파보고 싶다... 이러면 상급 헬게이트 오픈.


이런 니들을 불쌍히 여겨서 형이 니들이 그래도 좀 알고 써먹을 수 있는 윗단에 대해 시간날때 좀 더 싸줌.