나의 작은 valley
[AI] 머신러닝 본문
-Feature Engineering
주워진 데이터(input Vectors)를 가공 데이터(feature Vector)로 만들어주는 작업을 Feature Engineering이라고 한다. 또한 이때 정의되는 공간을 Feature space라고 한다. 어떻게 Feature Engineering을 수행될까. domain 지식과 analythic 방법을 활용하여 수행된다.
domain 지식은 중요하다. 가령 두 음식 사이의 유사도를 비교할 때 탄수화물이 나트륨보다 더 우선순위에 있다는 사실은 알고 있지 않으면 사용할 수 없다. 그러니 필요한 domain 지식은 필요할 떄마다 배워야한다. 글에서는 그러나 analythic method들에 대해서만 언급을 할 계획이다.
-Embeding
4000개의 data들을 mapping 하여 P/F(1,0)으로 판단하려 하는 상황을 가정하자. 그리고 이 문제는 n개의 feature를 찾으면 완벽하게 데이터셋을 구분지을 수 있다고 상상하자.
이떄 n의 값이 커질수록 점들 사이의 간격이 벌어진다. 즉 n의 값이 커질수록 표현력은 올라가나 mapping의 난이도 역시 비례하여 증가한다.
-WorkFlow
머신러닝 모델을 만드는 과정은 다음과 같은 일련의 흐름을 거친다.
문제 정의 -> 데이터 정제 -> EDA -> Feature Eng.. -> 모델 개발 및 적용
또한 성능이 좋으면 장떙이다. (Agile, 일단 하라 !)
e.g.)Ai Adventues 7 steps of ML 유튜브
-문제 정의
i) 예측이 필요한가.
NO->라면 EDA만 진행하면 된다.
ii) 필요한 데이터를 얻을 수 있는가?
가령 어떤 현상에 대한 데이터가 있더라도 그 결과 값을 모르면 사용할 수 없다. 또한 데이터의 양이 적으면 분석을 진행할 수 없다.
iii) 문제해결 방식이 정형화되어있는가?
YES-> RuleBased(알고리즘)한 문제이기 떄문에 예측할 필요가 없다.
NO -> Probability한 문제이기 떄문에 model을 만들어 예측하는 것이 의미가 있다
-문제 정의 예시
강의 플랫폼 a에서 고객 맞춤 강의를 매인에 띄우고 싶어하는 상황을 가정해보자. user가 들어올 때마다 무엇을 클릭할지는 정해져 있지 않다. 필요한 데이터들(가령 유저의 행동들)은 모을 수 있다. 그러면 이제 어떻게 추천 시스템을 만들 수 있을까? 우선 가용가능한 데이터들에는 다음과 같은 것들이 있다. 수강이력, 검색, 유저정보 .. etc 이를 활용해보자.
-Session Based Recommandation
session:은 user가 들어와서 나갈 때 까지의 행동을 의미한다. 즉 유저의 행동 데이터들을 모아서 다음 행동을 예측하는 방식이다.
- Collabrative Filtering
: 비슷한 수강 이력을 가진 다른 사람이 들은 강의를 추천해주는 방식이다.
- Contents-based
: user 개인이 수강 이력을 기반으로한 추천 방식이다.
-머신러닝 정의(Def)
머신러닝은 특정한 experience (이하 E)를 통해 Task (이하 T)의 performance measure (이하 P)가 향상되는 것을 의미한다.
-Task T
i) Supervised Learning: target value 데이터가 존재함.
ex) 고양이랑 개 구별하는 문제
ii) Unsupervised Learning: targer value 데이터가 존재하지 않음.
ex) 주워진 데이터 분류하기
iii) Reinforcement Learning: agent가 최대 reward를 방식으로 학습.
즉 환경을 만들고 agent가 랜덤한 행동을 하면 reaction이 돌아오는 방식
ex) 자율주행, 게임
-Data split
모델을 만드는 이유는 실제 상황에서 잘 예측하고 싶기 떄문이다. 그러면 실제 상황에 도입하기 전에 충분히 이 모델이 얼마나 정확하게 예측하는지를 알아내야한다. 그렇게 하기 위해서는 수집한 모든 데이터를 학습에 사용하면 안되고 데이터를 분리하여야 한다.
가장 크게는 Training data 와 Test data로 분류한다. 훈련이 끝난 모델에 Test 데이터를 놓고 출력한 결과와 정답을 비교하며 얼마나 정확하게 정답을 맞췄는지를 계산한다.
Training data의 일부분은 validation 데이터로 나뉘는데 Training data 훈련 과정이 얼마나 잘되고 있는지를 확인하기 위한 데이터이다. Test 데이터와 비슷하지만 validation 데이터는 훈련 중간중간 모델에 넣어서 출력한 결과와 정답을 비교하는 과정을 수행하는데 이를 통해 훈련이 잘되고 있는지를 파악한다.
수식은 모델의 성능이 training 데이터셋과 vaildation 데이터셋을 넣어줬을때 모두 증가하는 경우를 의미한다. 다음과 같은 상황일 경우 학습이 잘되고 있다는 판단을 내릴 수 있다.
-Over Fitting
만약 trainging 데이터셋의 P는 증가하지만 Vaildation 데이터셋의 P는 증가하지 않는다면 model이 문제를 외운 상황을 의심해볼 수 있다. 실제 문제를 푸는 방법을 학습한 것이 아닌 문제를 외워버려서 답을 내는 경우를 over fitting이라고 부른다.
over fitting이 되면 모델은 폐기처분을 하고 새로운 모델을 다시 학습시키는데 이떄 hyper_parameter 값을 바꿔준다. hyper_parameter 값들에 무엇이 있는지는 후술하겠다.
간혹 Vaildation 데이터가 적어서 Vaildation 데이터들을 외워버리는 경우도 존재한다. 그렇기에 데이터의 양이 많은 것이 중요하다. 만약 데이터 양이 적다면 k fold cross validation 을 사용하여 데이터셋의 크기를 키울 수 있다.
'Computer Science > [인공지능]' 카테고리의 다른 글
[AI] 분류 (0) | 2024.02.08 |
---|---|
[AI] 회귀 (0) | 2024.02.06 |
[ML] 벡터 (2) | 2024.02.06 |
[AI] 4주차 과제 (0) | 2023.02.14 |
[AI] 3주차 과제 (0) | 2023.02.07 |