glistering96 / BigDataAnalysis-HYU-IE

0 stars 0 forks source link

데이터 전처리 및 EDA #2

Closed glistering96 closed 1 year ago

glistering96 commented 1 year ago

첫번째 마일스톤, 전처리 및 범주형 데이터 분류 어떻게 할 것인지에 대해서 이야기 해보도록 합시다.

glistering96 commented 1 year ago
employment_type | required_experience | required_education | industry | function | fraudulent -- | -- | -- | -- | -- | -- 1.0000 | 0.0904 | 0.0661 | 0.2592 | 0.1024 | 0.0028 0.0904 | 1.0000 | 0.0914 | 0.1153 | 0.1036 | 0.0046 0.0661 | 0.0914 | 1.0000 | 0.0865 | 0.0555 | 0.0189 0.2592 | 0.1153 | 0.0865 | 1.0000 | 0.1101 | 0.1002 0.1024 | 0.1036 | 0.0555 | 0.1101 | 1.0000 | 0.0291 0.0028 | 0.0046 | 0.0189 | 0.1002 | 0.0291 | 0.9962

Cramers Correlation 구한 결과인데, fraudulent (label)이랑 연관이 크게 없어 보이는 항목만 존재한다.

Cramer correlation이 선형임 아니면 비선형임?

@pwc701

glistering96 commented 1 year ago

데이터 분석 어떻게 할지 정해야 할 필요가 있음.

범주형 데이터는 우찬이가 이미 했기 때문에 크게 두가지 1) anomaly와 normal의 차이점 위주로 분석 2) text 칼럼 데이터 그 자체를 분석

또 다른 분석 방법이 있으면 알려주면 좋을 것 같음

추가로 텍스트 분석은 우찬이가 이 issues 아래에 코멘트로 자료를 공유해주거나 내가 Preprocessing-&-EDA 브렌치에 docs 폴더를 만들테니까 해당 폴더 아래에 저번에 보여준 자료를 commit하고 push 해주면 좋을 것 같음. @pwc701

ie-jun commented 1 year ago

To Do List (05.09) 1.missing ratio plot 다시 그리기 2.commpany profile text를 missing(None) 제외하고 plot해보기 3.comany profile missing value (Fake의 비율이 높은 3개 컬럼이 의미가 있는지 확인) 4.industry function (안찍어본 컬럼) count 찍어보고 적은 혹은 의미없는 카테고리들 병합 - Required educational 컬럼도 동일하게 적용.

  1. 4번에서 병합하고나서 category들 어떻게 encoding할지. ex) label encoding
  2. plot 찍을 때 label 이름 (legend) 통일된 기준으로 정리하기
  3. count말고 비율or분포도 찍어보기 ( 모든 컬럼에 대해)
  4. 문장 길이별 True/False 찍어보기
  5. text데이터 word plot/ character plot을 찍을 때 null값을 빼고 찍어보기(툭 튀어나온거 보기 싫음)
  6. 단어수가 긴 데이터를 직접 들여다보자.
  7. 데이터 re 패키지 적용(cleansing)하고 나서 위의 전처리과정 다시 진행해보기
  8. cleansing하기 전에 n-gram해보기. (그 후 불용어 제거)
  9. Fraud데이터 양도 적으니까 직접 보면서 어떤 특징을 가지고 있는지 확인해보기.
glistering96 commented 1 year ago

작업 assignment.

번호는 상기 이슈 코멘트에 정리한 작업 번호들입니다.

모든 작업은 Preprocessing-&-EDA 브랜치 아래에 커밋된 0509_EDA jupyter notebook 파일을 사용하되,

노트북 파일 같은 경우에는 굳이 합칠 필요가 없다고 판단되기 때문에 각자의 이름으로 (i.e., EDA_김원준.notebook) 원본 notebook을 복사한 후

해당 파일에서 작업을 해주시기 바랍니다.

작업 중간에 의논을 해야하는 사항이 생기면 (i.e., column의 데이터 병합할 때 데이터를 보고 어떤 병합 하는 것이 좋을지)

현재 issue에 comment를 올려주기 바랍니다. comment를 올릴 때, 부여된 task의 번호를 같이 적어주기 바랍니다 (i.e., Task 5)

공통 13

@pwc701 1, 2, 3, 6

@glistering96 (4, 5), 7, 8, 12

@ie-jun 9, 10, 11

작업 중에 fraudulent == 0인 항목이 real job posting, fraudulent == 1인 항목이 fake job posting임을 고려해서 plot의 legend를 찍어 주시기 바랍니다

참고)

https://www.kaggle.com/datasets/shivamb/real-or-fake-fake-jobposting-prediction

glistering96 commented 1 year ago

Task 4.

industry None 4903 Information Technology and Services 1734 Computer Software 1376 Internet 1062 Marketing and Advertising 828 ... Shipbuilding 1 Sporting Goods 1 Museums and Institutions 1 Wine and Spirits 1 Ranching 1

이게 지금 industry에 들어있는 값과 count를 찍어본 것인데, Information Technology and Services와 Computer software는 매우 유사한 industry임에도 불구하고 따로 떨어져 있음. 전체 고유값이 132개로 나오는데 전부 다 보고서 grouping 작업을 하기에는 어려울거 같은데 이에 대해서 좋은 방법이 있을지?

Text clustering 방법이 무엇이 있는지 아이디어가 필요할 것 같군요

glistering96 commented 1 year ago

Task 4.

Text clustering에 대한 벤치마크 페이퍼가

https://paperswithcode.com/paper/mteb-massive-text-embedding-benchmark

그리고 그 중에서 쓸만해 보이는 모델

https://huggingface.co/sentence-transformers/all-MiniLM-L6-v2

을 참고하도록 하기 바랍니다

glistering96 commented 1 year ago

@ie-jun @pwc701 Task 7이 뭐였는지 기억하는 사람?

glistering96 commented 1 year ago

난 내꺼 다 하고 푸시함. 읽어보셈.

Google bard로 클러스터링까지 전부 완료해 두었음

glistering96 commented 1 year ago

분석 요점

Task 4 (industry, function)

Industry:

db3f5f4c-6b07-46b0-ab2e-e947540c8a7f

--- Fake job인 항목만 추렸을 때, 빈도수가 가장 높게 나오는 상위 10개의 industry에 대하여 Real/Fake job의 비율

  1. 한눈에 보기에는 Real 대비 Fake의 비율이 매우 높은 industry가 존재함 - Oil & Energy, marketing, health-care, accounting, telecommunications

  2. 인코딩을 fake의 비율에 따라서 ordinal 하게 하는 방법?

Function:

01df2296-9d07-4a2c-aff8-1d4e1bdc07ac

--- Fake job인 항목만 추렸을 때, 빈도수가 가장 높게 나오는 상위 10개의 function에 대하여 Real/Fake job의 비율

Engineering, CS, administrative 같은 function에서 비율이 높게 나타남

8aaf99db-fb31-4c90-a9db-fda9ffb91aab

--- 조금 더 많은 칼럼을 기준으로 plot을 해보았는데 왜 None이 상위 N개의 필터에 잡히지 않았는지는 잘 모르겠음.

Task 5

Required education 등이 ordinal하게 표현이 될 수도 있지만, 애초에 그 가짓수가 그렇게 많지는 않기 때문에 그냥 categorical encoding 해도 괜찮을 수도? 특히, 구글 Bard가 분류한 항목을 보면 알겠지만

Eduation

애초에 대분류로 가져가면 그렇게 많지 않음

이외에도 여러가지 대분류로 처리해본 결과 노트북에 적어 두었고 적당히 갯수가 추려질 수 있을 듯. 적당히 보고서 약간 수정을 가하여 사용하면 좋을 듯

Task 7 - Fake랑 Real 데이터를 기준으로 각 칼럼 별로 plot을 찍어보자 하여 해당 작업을 수행함

7d898799-59bb-4443-98bb-3ae54a8d7540

몇몇 칼럼에서는 Fake와 Real의 분포가 다르게 나타나는 것을 확인할 수 있음 (company_logo, has_questions, etc)

다만,

Task 8 - answ

title_length | company_profile_length | description_length | requirements_length | benefits_length -- | -- | -- | -- | -- 1.001255 | 1.005888 | 1.006306 | 1.005098 | 1.004241 1.001594 | 1.002285 | 1.008094 | 1.006423 | 1.004356

딱히 유의미한 차이가 보여지는 것 같지는 않음.

Task 12 - 텍스트 cleansing 전 n_gram 분석

3803ae40-0b92-4c2a-9bb8-20c7c55dd984

c574bf43-1f6d-44b1-b1da-f5778ed11f70

2b8c0441-557d-4486-9068-b69f65bd53fd

b30df03e-6429-4397-bf19-521fb8e2b418

05483c1c-0a8e-4bba-ab9c-fb7a30016df7

ccb2afb6-8671-41e7-96bb-92630f9b2791

아까 industry 분석할 때 보았던 oil/gas 관련한 이야기가 fake job의 경우에 상단에 위치하는 것을 볼 수 있고

당연한 이야기겠지만 industry 같은 내용에 따라서 description들도 같이 가는 경향이 보임.

pwc701 commented 1 year ago

분석 요점

다른 task 확인하고 comment 추가하였습니다.

1. 결측치 중에서 real/fake 비율 구함 해당 비율이 data unbalance 때문에 직접 비교하기 힘들다고 판단하여 전체 real/fake 비율로 scaling 진행 결측치 아닌 데이터에 대해서도 같은 방법으로 진행 image ㄴ> scaling 한 missing ratio image ㄴ> scaling 하지 않은 missing ratio

2. task 9와 동일

3. 결측치 없거나 너무 많은(department, salary_range)를 제외한 column에 대해 결측 여부가 유의미 한지 분석 missing = 1, not missing = 0으로 대체 카이제곱 독립성 검정에서는 company_profile, requirement, employment_type, required_experience, required_education, industry가 유의미 로지스틱 회귀분석에서는 benefits, employment_type, required_education, required_experience, industry, function이 유의미

5. ordinal 안해도 될 것 같다는 의견에 동의 나중에 할 수 있으면 추가해서 해봐도 좋을듯

6. 기존 0509_EDA 파일 사용하지 않아서 legend 수정 없음

7. real/fake에서 범주형 분포 유사한지 카이제곱으로 검정하면 될듯

8. 문장 개수는 적고 길이가 길어서 그런가 결과대로 의미가 있어보이지는 않음

9. 결측치 많았던 company_profile은 좀 차이가 생기긴 했는데 나머지는 크게 차이는 없어보임 분포 비교할 수 있는 방법이 있는지 알아봐야 할듯

11. task 9랑 마찬가지로 분포 비교할 수 있는 방법 알아봐야 할듯

12. 4-grams 까지는 불용어 처리 하기 전에는 큰 의미 없어보임