[연구 2] First Receipt 데이터 EDA 및 초기 학습 결과

첫 데이터 분석 및 Decision Tree 모델 학습

1. Report Info

본 글에서는 first_receipt 데이터의 입력값과 출력값에 대한 통계량을 분석하고, 학습 데이터를 구축한다.

2. Raw 데이터 : FirstReceipt

주어진 데이터는 다음과 같은 Table 형태로 주어진다. 랩넘버는 입력과 출력을 연결짓는 Primary Key이며, 코드는 원료, 함량은 원료가 포함된 양을 나타낸다. 이를 통해서, 출력의 목표값을 예측한다.

입력 출력

먼저, 데이터가 일치하는지 확인해본 결과, 다음과 같은 랩넘버의 통계값을 얻는다. 일치하지 않는 샘플이 존재하기에, 출력의 랩넘버 (979)개에 대해서 존재하는 입력 랩넘버로 데이터셋을 구축한다.

샘플의 feature 를 만들기 위해서 코드 (formula)에 대한 수를 세어보면 다음과 같다.

코드 길이

질문: Q: 코드 길이 혹은 코드 방식을 추가적인 Feature 로 사용해도 되는가? Ex) FFF가 들어있는 애들을 묶음.

2-1 코드 등장 횟수

학습 Feature 의 빈도 수를 살펴보면 다음과 같다.

# 많은 순서대로 MMM000 2571 RTY966 1288 FFF001 1187 BDD001 1101 # 적은 순서대로 FGH334 1 FGH336 1 JMI006 1 RTY964 1 RVP002 1

대부분의 코드가 sparse 하다. 이 경우, 일부 feature를 사용한 모델과 모든 feature를 사용한 모델을 구분하여 성능을 비교하는 것이 바람직하다.

2-2 랩에 존재하는 코드 개수

하나의 랩에 몇 개의 Feature 가 존재하는지 살펴보면 다음과 같다. 대부분은 20개 이상의 Feature를 포함하는 것을 확인할 수 있다.

# 많은 순서대로 CC2229-AF 64 CC2145-LA 61 CC1708-QE1 60 CCA08101-TAA 56 # 적은 순서대로 CC1413-TA 13 CC1706-NZ 12 CC7109-JE1 11 CC1808-PA 10 CC7191-WF 2

2-3 출력 목표값

출력의 목표값 (A ~ B) 형태에 대해서 데이터 전처리를 진행 후, 일치하지 않는 데이터는 다음과 같다.

# Invalid outputs MAX.350 MAX. 300 ['.', '300'] MAX. 100 ['.', '100'] MAX 500 total output:988 valid output:984 invalid output:4

값은 범위로 이루어져 있으며, 모든 샘플에 대해서 출력해보면 다음과 같다. 대부분은 범위의 길이가 비슷한 것을 확인할 수 있다. 이 경우, 타겟을 카테고리(e.g., Label1: 10000~20000)로 하는 것이 바람직해 보인다.

2-4 출력 랩 넘버 중복 여부

출력에는 동일한 랩넘버를 지니는 출력 샘플이 있다. 확인해본 결과 랩넘버가 같은 경우 출력값도 일치하는 것으로 확인되었다. 이에, 중복된 랩넘버는 1개만 사용하였다.

# 출력값 랩넘버 수 984개 중에서 중복 8개 종류 모두 제외 시 967 개 랩넘버 존재 # 중복된 랩넘버도 예측값이 동일하여 추가, 975개 최종. 랩넘버 개수 CC7802-JB 3 CC7533-MA 2 CCB06001-FAE 2 CC1928-VZBT 2 CC2163-WA 2 CC2193-FA 2 CC2156-KZHH 2 CC9085-CB 2 CC2206-MG 1 CC2206-AH 1

3. 최종 데이터셋

최종적으로 얻어지는 데이터셋 수는 다음과 같다. 총 코드 1979개를 모두 사용하고, 존재하지 않는 값에 대해서는 0으로 입력값을 줬다. (후에, 이중에서 일부 코드만 사용한 데이터셋 구축도 가능하다.)

# 총 랩넘버 975 개 # 총 코드 개수 1979 # 제외 코드는 Feature 에 위치에는 포함되지만, 값이 0으로 할당된다. [INFO] 🗂️ Dataset: FirstReceiptDatasetML X:(975, 1979) Y:(975,) Train: (676, 1979) (676,) Valid: (96, 1979) (96,) Test: (195, 1979) (195,)

4. 데이터 관련 질문

  1. 랩넘버가 일치하지 않는 데이터에 대한 이유
  2. Max 100 과 같은 형태의 데이터 처리 방안 (다른 데이터는 1만~8만 범위값)
  3. 40.000 마침표로 이루어진 데이터는 40,000 콤마와 같은지
  4. Output의 랩넘버가 중복된 데이터는 사용가능한지 (모두 예측값이 동일해서 포함하였음. )

5. 코드값과 점도의 선형관계

점도를 에측하는데 있어서, 가장 기본이 되는 것은 단 하나의 변수(코드)를 사용하여 예측하는 방법이다. 선형모델로 예측 모델을 만들었을 때, 상관관계가 있다면, 양 또는 음의 기울기를 가지게 된다. 1900 여 개의 코드에 대해서 점도값에 대한 선형 모델을 학습시키는 결과를 반영하여 모델링 하여, 각 코드가 지니는 상관관계를 파악한다.

📔 Codebook link

🔗 Codebook Page 1 (64개) google drive

🔗 Codebook Page 2 (64개) google drive

단 한 번 나타난 코드에 대해서 선형모델을 학습시킨 결과, 0에 분포되있는 값은, 코드 값이 할당되지 않은 코드=0 값을 나타낸다.