Orange를 활용한 코딩 없는 AI 데이터 분석 - Lv.2 데이터 전처리와 시각화 강좌의 맛보기 강의입니다.
이번 영상에서는 피처 엔지니어링 프로세스에 대해 함께 살펴보도록 하겠습니다. 보고 계시는 것은 데이터 분석 프로세스인데요. 우리가 어떤 도구에서 어떤 주제를 가지고 어떤 데이터로 분석을 하든 지금 보시는 것 같은 기본적인 프로세스를 따라가게 됩니다. 현실 세계에서 우리가 풀고 싶은 문제를 적절하게 설명해줄 수 있는 데이터를 수집하고 이 데이터를 정리, 정돈해서 깔끔한 데이터를 만든 다음 어떤 특징을 가지고 있는지 살펴보고 모델을 만들고 이 모델을 이용해서 분석도 하고 예측도 한 다음 이러한 분석의 결과로 서로 커뮤니케이션을 하고 어떠한 액션을 실행함으로써 우리에게 이득이 되는 의사결정을 해나가는 과정이죠. 그런데 이 과정을 보시면 이 과정 전체에서 모든 과정은 다 중요하고 필요한 과정이지만 어떤 특정한 과정이 굉장히 많은 시간을 소요하게 됩니다 거기가 바로 이 부분이죠 우리가 통상적으로 데이터 전처리라고 하는 이 단계, 그리고 탐색적 데이터 분석이라고 하는 단계가 우리가 실제로 데이터를 분석하는 어떠한 작업, 프로젝트에서는 굉장히 많은 시간이 소요되는 중요한 작업이다, 그러한 단계다 라고 말씀드릴 수가 있습니다. 그런데 이 단계를 소홀히 하면 데이터 품질이 아무래도 떨어지게 되고 그러면 덩달아서 분석의 정확도도 떨어지고 이러한 데이터를 토대로 만들어진 모델의 성능도 같이 낮아지는 그런 위험이 있게 되는 거죠. 괜히 중요한 작업이다 라고 말씀드릴 수 있겠어요. 근데 이 작업을 잘 보시면 다른 작업과 달리 조금 특이한 어떤 화살표가 있다 라고 하는 걸 보실 수가 있을 것 같아요. 문제를 설정한 다음에 데이터를 수집한다는 것은 반드시 그렇게 진행이 되는 일방향의 화살표를 가지고 있죠. 데이터를 수집하고 그 다음에 이것을 정리해야 한다 라고 하는 것도 화살표가 한 개예요 하지만 지금 보시는 것처럼 어떠한 데이터의 정리 정돈 작업이 있고 이렇게 해서 깨끗한 데이터셋을 얻으면 기본적으로 탐색적 데이터 분석을 하긴 하는데 간혹가다 데이터가 굉장히 단순할 경우에는 그냥 바로 모델로 넘어갈 수도 있겠죠 이것은 데이터가 얼마나 단순하냐의 문제니까 우리가 조금 데이터 분석이 끝났다면 다음 단계로 진행해야 할 것 같은데 우리가 데이터를 탐색하고 나면 여러 특징에 의해서 다시 전처리 단계로 돌아갈 수도 있습니다 즉 이 과정 지금 우리가 보고 있는 데이터를 정리하고 깨끗한 품질이 높은 데이터를 얻고 그리고 이것을 토대로 어떤 특징이 있는가 어떤 경향성이 있는가 이런 것들을 파악하는 과정은 딱 한 번 일어나는 과정이 아니라 여러 번 반복 수행함으로써 분석에 용이한 또 분석을 위해서 굉장히 정확하고 품질이 높은 그런 데이터를 만드는 과정을 반복하겠구나 라고 우리가 생각할 수가 있는 거죠 실제로 Forbes에서 여러 데이터 분석가에게 설문한 조사 데이터 사이언티스트들에게 어떤 작업에 가장 많은 시간이 듭니까? 라고 설문했던 기록이 있습니다 그런 조사 결과가 있는데 아주 흥미로운 결과죠 보시면 가장 많은 시간이 든 것이 데이터를 깨끗하게 정리하고 그리고 구조화하는 작업 우리가 흔히 말하는 데이터 전처리라고 하는 작업이죠 그리고 데이터셋을 잘 모으고 어떤 패턴이 있는지 찾아보고 하는 이런 작업 이런 것들은 EDA라고 말할 수 있죠 여러가지 어떤 작업들 전반적으로 실제 모델을 구축해서 이 모델을 평가하고 예측을 해내는 과정보다 그 앞 단계가 굉장히 많은 시간이 소요되는구나 라고 하는 것을 알 수가 있어요 우리가 통상적으로 실질적인 데이터 분석 모델을 가동하기 전까지 단계를 크게 보면 데이터 전처리와 탐색적 데이터 분석이라고 부르는데요. 이 데이터 전처리의 상당 부분을 차지하는 것이 피처 엔지니어링이라고 생각하시면 될 것 같습니다. 피처 엔지니어링이라고 하는 것은 피처는 우리가 데이터를 분석할 때 기본적으로 X를 가지고 Y를 뭔가 추정을 하거나 하겠다 아니면 X들을 어떤 Y에 매칭을 할지 적당히 분류하겠다 이런 목적을 가지고 데이터를 분석하게 되는데 이때 X의 역할을 하는 것을 우리가 바로 피처라고 부르게 되죠. 이것을 바로 피처라고 합니다. 피처 엔지니어링은 크게 보면 이 피처들, 그래서 X의 역할을 하게 된 그런 데이터들을 잘 정리해주는 작업인데요. 이러한 정리해주는 작업은 크게 보면 의미 있는 어떤 피처를 만들어내는 생성 작업이 기본적으로 아마 있을 거예요. 예를 들어 우리가 가지고 있는 데이터가 날짜 데이터라고 하면 이 날짜 데이터를 어떻게 잘 정리해서 그룹핑을 해 줘서 월 단위로 만들 것이냐, 연도 단위로 만들 것이냐 이런 것도 있을 수가 있고요. 우리가 갖고 있는 데이터가 때로는 카테고리컬 데이터일 수도 있거든요. 범주형 데이터, 문자 데이터로 되어 있을 때 이걸 여러 가지 알고리즘에서 계산할 수 있도록 숫자 데이터로 변환해 준다거나 하는 그러한 코딩 작업도 있을 수가 있습니다. 이런 식으로 어떤 필요한 새로운 피처를 생성해내는 작업이 하나 있을 수가 있고 또 하나는 피처를 우리가 전혀 유효하지 않은 뭔가 빠져 있다거나 이런 것들 있잖아요. 결측이 되어 있다거나 아니면 이 피처는 좀 많이 이상한데? 라고 하는 그러한 것들 굉장히 이상치라던가 결측값이라던가 이런 것들에 대해서 적절하게 변환을 해주고 대체해주는 그런 작업도 있을 수가 있습니다. 크게 보면 변환과 피처 엔지니어링은 의미 있는 피처를 생성해 내는 것도 엔지니어링의 하나의 큰 주제이고 또 하나는 이 분석에서 유효하지 않은 데이터들을 어떻게 정리해 줄 것이냐 변환과 대치 이런 부분이 있습니다 또 이런 경우도 있어요. 어떤 데이터가 있으면 그 데이터가 너무 많은 피처를 가지고 있는 지나치게 고차원 데이터일 경우에는 사실 분석이 좀 어렵거든요. 이럴 경우에는 중요한 피처들만 뽑아내는 겁니다. 전체를 가지고 우리가 몇 백만 건의 피처를 가지고 타겟을 예측한다라고 하면 그 분석은 사실 굉장히 비효율적인 게 되거든요. 그래서 적절하게 필요한 피처를 추출해내는 그러한 작업도 있을 수가 있습니다. 이런 걸 통해서 조금 이렇게 축소되는 그런 것도 있죠. 어떤 피처가 있으면 그 피처에서 전체를 다 사용하지 않고 일부 하위집합을 만들어서 하위집합만 쓰게 되는 그런 개념도 있어요 우리가 이것을 피처를 선택한다 라고 표현합니다 피처 엔지니어링이라고 하면 우리가 어떻게 이해해주면 좋냐면 어떤 데이터든 데이터를 실제로 분석하고 활용하려면 이 데이터의 정리, 정돈 작업은 분명히 필요합니다. 이런 정리, 정돈 작업을 우리가 크게 보면 데이터 전처리라고 통상적으로 이야기를 하죠. 그런데 이 전처리에서 굉장히 많은 부분을 차지하는 것을 우리가 피처 엔지니어링이라고 하는 거죠. 왜냐하면 생각해보면 우리는 메타 같은 데이터는 사실상 분석에 사용되지 않고 타겟이라는 것은 우리가 맞춰내고 싶은 어떤 결과물, 정답인 거지 이 분석에서 실제 분석의 대상이 된다고 보기는 좀 어렵거든요. 물론 분석 과정에 참여는 하긴 하지만 그 분석으로 우리가 알고자 하는 정답이죠 그것은 그냥 정답일 뿐 분석의 어떤 요인으로 사용될 수는 없단 말이에요 그럼 실제로 우리가 분석의 대상으로 삼게 되는 요인은 곧 피처 데이터인 거고 이러한 피처들을 가지고 어떻게 하면 좀 더 품질이 좋은 분석 정확도도 굉장히 높일 수 있고 모델의 성능도 좀 최적화 시킬 수 있는 그런 고품질의 피처 데이터들을 얻을 것이냐 라고 하는 작업을 하는 게 피처 엔지니어링이다 그 안에는 대략적으로 새로운 피처를 만들거나 변환하고 유효하지 않은 것을 대체하거나 아니면 여기서 좀 너무 복잡하니까 조금 더 가볍게 만들기 위해서 추출을 하거나 또 하위집합을 선택하거나 하는 이러한 작업들이 있게 되는 거죠. 데이터 전처리로부터 EDA로 이어지는, 반복되는, 순환되는 과정을 그림으로 정리해보면 이 정도로 정리할 수 있습니다. 다만 여러분께서 오해하시면 안 되는 게 반드시 이 순서대로 가야 된다고 생각하시는 건 조금 오해인 것 같아요. 대략적으로 이런 정도의 순서로 따라가면 크게 무리가 없고 어느 정도 합리적인 순서라고 생각하시고 이 순서 위배됐다고 해서 큰 문제가 난다거나 그런 건 아니니까 걱정하지 않으셔도 될 것 같습니다 일단 크게 보면 우리가 어떤 과정을 세 단계로 이러한 데이터의 준비 작업 준비 단계를 크게 세 단계로 볼 수가 있는데 맨 처음에는 정말 엉망진창인 것을 어떻게든 대략적으로 좀 만들어 낸다 조금 정리를 한다 1차 정리를 하는 거죠 그리고 EDA를 실행을 하고 EDA를 실행해서 정리된 것을 조금 더 효과적인 어떤 데이터로 만들어 낸다 라고 하는 크게 세 단계를 거쳐서 이 준비 작업이 이루어진다 라고 생각하실 수 있을 것 같아요 물론 이렇게 하고도 그렇게 하고도 어떤 작업들이 있는지 크게 한번 보실께요 일단 우리가 데이터 세트를 수집을 하게 되면 이 수집된 데이터 세트는 굉장히 엉망이거든요 엉망진창이기 때문에 여기서 진짜 필요없는 것 아무리 봐도 정말 이건 필요없다 라고 하는 것들은 일단 제거를 해요 이것은 정말 엉망진창인 어떤 대상을 먼지 털듯이 정말 자세하게 중복 데이터 하나하나 제거 이런 느낌보다는 크게 보니까 사실 이런 데이터 이런 열은 좀 필요 없는데 라고 하는 것들을 굵직하게 정리하는 거다 라고 생각하시면 될 것 같아요. 이렇게 불필요한 데이터를 한번 정리한 다음 털어낸 다음에 데이터의 구조적인 오류를 잡아줍니다. 분석에 유리한 형태가 있고 유리하지 않은 형태가 있거든요. 구조적으로 문제가 있다면 그 구조를 잡아주는 과정을 거치게 됩니다. 대다수의 데이터 분석 알고리즘들은 수치를 기반으로 하는 경우가 많아요. 숫자 계산을 통해서 수학적인 모형들이다 보니까 범주형 데이터도 수치화하면 조금 더 많은 알고리즘들을 사용할 수가 있거든요. 그래서 어떤 범주형 데이터들, 카테고리컬 데이터들을 우리가 목적하는 바에 맞게 우리가 결국 사용하게 될 그러한 분석 모델에 맞게 어떻게 인코딩을 해줘야 될 필요가 있다면 그런 작업들을 좀 하게 됩니다 그리고 나서 데이터들이 있을 때 각각의 데이터들은 대체적으로 단위가 다르기 때문에 크기가 정말 달라요 단위가 다른 데이터들을 수치적으로 비교하면 여러가지 논리적 오류가 벌어질 수 있습니다. 그래서 이 데이터들을 적당하게 적정 사이즈로 같은 척도를 들이대거나 특정 범위에 있게 하는 방식으로 이 데이터들의 크기를 맞춰주는 작업을 하게 됩니다. 단위가 다를 수 있기 때문에 그런 데이터들, 숫자 데이터들의 편리한 비교를 위해서 크기를 맞춰주는 작업, 스케일링이라고 하는 것을 한다 라고 생각하시면 되겠습니다. 스케일링 작업, 결측, 비어있는, 측정되지 않은 것들이 있으면 결측도 처리를 하고요 그리고 데이터가 너무 특이한 데이터 예를 들어서 사람의 키 100명의 사람의 키를 평균을 낼 건데 누군가가 키가 3m다 이러면 이 사람이 너무 평균 데이터를 왜곡하기 때문에 전체 데이터의 특징을 알아볼 수가 없잖아요. 이상치가 있다. 데이터의 분석의 정확도를 떨어뜨리게 되는 이상한 데이터가 있다면 그 데이터를 처리해주는 작업을 하게 됩니다. 그리고 데이터를 전체적으로 구간화시켜서 완만하게 표현을 해주고요. 이런 일련의 과정을 거쳐서 얻게 된 내 데이터가 충분히 살펴볼 만한가? 라고 하는 확인 작업을 일단 해줍니다. 여기서는 타당도를 검사하거나 이런 것들을 하게 돼요. 이렇게 데이터 품질이 어느정도 기본 확인이 됐구나, 기본적인 준비가 되었구나 라고 판단이 되면 그 다음 단계에서는 이제는 단순히 정리 작업은 끝내고 앞 단계는 약간 기계적인 정리인 거예요. 기계적인 정리를 끝낸 다음에 이제 그렇다면 이 데이터는 어떤 특징을 가지고 있는가 라고 하는 것을 한번 살펴보는 작업을 거치게 되죠 이게 바로 이제 탐색적 데이터 분석 작업입니다 여기서는 우리가 이 데이터에 대한 이해도를 높이기도 하고 또 이 데이터가 가지고 있는 어떤 특성을 발견하기도 하지만 또 동시에 아 이 데이터를 가지고 어떠한 유용한 데이터 분석을 하려면 이 데이터가 조금 더 이렇게 정리될 필요가 있구나 라고 하는 것을 파악하는 단계이기도 한 거죠 그래서 탐색적 데이터 분석을 거쳐서 우리가 어떤 피처가 중요하고 어떤 피처는 어떤 모습이 돼야 되고 하는 것들을 가늠한 다음에는 거기서 이제 우리가 원하는 조금 더 이 데이터의 어떤 분석에 크기, 용량, 컴퓨팅 등을 줄이기 위해 가볍게 만들기 위해 피처를 선택하고 의미 있는 피처들을 추출하는 과정을 거치게 됩니다. 그러고 나서 필요하다면 이산화를 하는 거죠. 이산화는 연속된 데이터를 카테고리컬 데이터로 변환해주는 작업이라고 생각하시면 될 것 같아요. 피처들을 우리가 기본적으로 수치적으로 보고 나서 이것을 필요하다면 카테고리를 정리함으로써 조금 더 잘 이해할 수도 있거든요. 그래서 그러한 이산화 작업을 거쳐서 데이터 분석의 준비 작업이 완료된다고 볼 수가 있습니다. 대략적으로 여러분께서 이 단계에서 숙지하시면 좋은 것은 데이터 전처리, 우리가 일반적으로 데이터 전처리라고 부르는 작업의 대부분이 사실은 피처 엔지니어링이라고 할 수 있다 완전히 정말 불필요한 데이터를 제거한다 이런 부분들 아니면 구조적 오류를 처리한다 이런 것들 몇 가지를 제외하고는 사실은 피처 엔지니어링과 데이터 전처리가 우리가 일상적으로는 크게 다른 의미를 갖고 있지 않고 그게 그거다. 비슷하게 약간 대체해서 혼용해서 쓸 수 있는 그런 단어다 라고 생각하셔도 괜찮을 것 같고요. 또한 이 과정이 일회성 작업이 아니고 여러 차례 분석의 목적에 맞게 우리가 좋은 데이터 고품질의 데이터를 얻을 때까지 반복 수행되는 과정이다 라고 하는 것을 이해하시는 것이 중요할 것 같습니다.
