Feature engineering ( 글 리뷰 및 내 생각 )

2019. 5. 6. 18:43관심있는 주제/분석 고려 사항

728x90

좋은 글인 것 같아서 구글 번역 및 저의 생각을 적을 수 있으면 적을까 합니다. (영문 글을 보시는 게 더 나을지도 몰라요ㅎㅎ)

 

Feature Engineering이란 머신러닝 문제에 대해서 타겟에 대해서 최고로 잘 표현할 수 있게 가공되지 않은 데이터를 가공하는 것을 의미한다.

 

나는 데이터 분석에 앞에서 가장 중요한 작업이라고 생각한다.

일반적인 생각해 볼 수 있는것은 필요 없는 것을 빼거나 scale을 잘 조정을 한다던지, 결측치 제거, 미싱처리 같은 것이 있다고 한다. 적다 보니 preprocessing하고 비슷한 것 같기도 하고....

 

모델 성능을 높이기 위해서 데이터 과학자들이 할 수 있는 방법 중의 하나라고 한다.

1. You can isolate and highlight key information, which helps your algorithms “focus” on what’s important.

> 중요하다고 생각하는 변수를 강조시킬 수 있다.

2. You can bring in your own domain of expertise.

> 자신만의 도메인을 도입할 수 있다.

3. Most importantly, once you understand the “vocabulary” of feature engineering, you can bring in other people’s domain expertise!

가장 중요한 것은 피쳐 엔지니어링의 "어휘"를 이해하면 다른 사람의 도메인 전문 지식을 활용할 수 있다는 것입니다.

 

연습을 많이 하면 이러한 능력은 키울 수 있다고 한다.

역시 이 분야는 경험이 답인가....

 

Garbage in Garbage out이라는 말을 많이 들어 봤을 것이다.

이러한 것은 관계, 다이어트 일하는 데와 같이 어디서든 적용할 수 있다.  최고의 결과를 내기 위해선 연습만이 답이다.

 

The process of transforming raw, unprocessed data into a set of targeted features (or variables) that accurately represent your machine learning problem is called feature engineering.

 

핵심 질문들이 다음과 같다.

1. What are the essential properties of the problem we’re trying to solve?

우리가 해결하려고 하는 문제의 필수 속성은 무엇입니까?

2. How do those properties interact with each other?

이 속성들은 어떻게 상호 작용합니까?

3. How will those properties interact with the inherent strengths and limitations of our model?

이러한 속성은 우리 모델의 고유한 강점과 한계에 어떻게 상호 작용할 것입니까?

4. How can we augment our dataset so as to enhance the predictive performance of the AI?

인공 지능의 예측 성능을 향상하기 위해 데이터 세트를 어떻게 보완할 수 있습니까?

 

here are 5 of the best practices to ensure you’re doing all you can to optimize your data management process.

 

1. Utilize Domain Expertise and Individual Creativity to Determine Variables.

도메인 전문 기술과 개인 창의력을 활용하여 변수를 결정하십시오.

좋은 Design Thinking의 기초는 좋은 feature engineering이 기초입니다. 

지금 현재 문제에서 중요하다는 생각하는 변수를 인지하기 위해서 개인의 창의성과 도메인 지식을 이용하세요.

feature engineering은 과학만큼이나 예술입니다.

 

> 모델링을 생각하기 전에 반드시 기술자와 도메인 전무 가는 모든 변수에 대해서 평가하고, 어떠한 변수가 가치가 있고 어떠한 변수가 overfitting이나 noise를 주는지 결정해야 합니다.

 

 

2. Use Indicator Variables to Isolate Important Information

category 변수에서 독립적인 것으로 표현하기 위해 보통 indicator variable을 만듭니다. 

나라의 category나 , 성별 등등... 

Indicator variables are set to numerical values so that algebraic algorithms can optimally process these features.

Indicator variables는 수치로 설정되어 대수 알고리즘이 이러한 기능을 최적으로 처리할 수 ​​있습니다.

 

3. Create Interaction Features to Highlight Variable Relationships

다음 단계는 여러 개 변수들 사이에서 관계된 상호작용들을 강조하는 방법이 있습니다.

머 변수들의 합을 구하던지, 뺴던지 곱하던지 등등을 할 수 있다. 

예를 들어, 여행 빈도와 여행 방법에 대해서 상호작용 통해서 만들 수 있을 것입니다. 

 This step requires experimentation and an openness to new relationships and correlations. 

이 단계는 실험과 새로운 관계와 상관관계에 대한 개방성을 필요로 합니다.

>> 최근에 배운 correlation의 일반화 버전인 mutual information 같은 방법도 이용해서 상관관계를 구하고, 좀 더 영향력 있는 변수를 만들면 어떻게 되려나?

실험이 필요한 이유는 분석가의 선입관에 기초해서 관계를 제한할 수 있기 때문에 그런 것을 배재하기 위해 실험이 필요합니다.

머신러닝을 사용하여 데이터를 분석하는 재미의 일부는 새로운 기회를 발견하는 것입니다.

> 이러한 작업은 보통 고통스러운 일이라고 말하지만, 역시 피할 수 없다면 즐겨라가 답인 것을 다시 깨닫는다

 

4. Combine or Remove Sparse Classes to Avoid Modeling Errors

보통 데이터에서 일부밖에 없는 희귀한 데이터들이 있을 것입니다.

이러한 것은 overfit을 초래할 수 있어서 해롭습니다.

만약에 당신이 이런 sparse 변수와 다른 변수들을 결합하거나, 그들을 완전히 제거한다면 데이터를 정돈하는 효과가 있어서 예측 성능을 향상할 수 있을 것입니다.

This ensures that your AI is not skewing your results based on a few data points that are not relevant to new data.

이렇게 하면 새 데이터와 관련이 없는 몇 가지 데이터 포인트를 기반으로 AI가 결과를 왜곡하지 않도록 할 수 있습니다.

>> 머신러닝은 일반화를 역시 잘하는 도구이므로 이러한 말이 나온 것 같다. 

 

 

5. Remove Irrelevant/Redundant Features

feature engineering is all about pre-processing data so your model will spend the minimum possible effort wading through the noise.

Removing irrelevant or redundant data points will help unclog the gears of your AI’s engine.

 

>> 이상 Feature Engineering에 관한 정리 글을 간략하게 의역, 번역한 것입니다.

하지만 드는 생각은 만약 그렇게 유의미한 변수를 알고 있다면, 이러한 경우가 가능할 것이고 그 변수 하나만으로 

모델의 성능이 뛰어나게 할 변수는 많이 없을 것이고 서로 복잡하게 얽히고설킨 구조에서 답이 나올 것이라고 생각합니다.

그래서 이러한 어려움 때문에 NN이 뜨는 것 같습니다.

 

딥러닝 구조를 사용해서 feature engineering도 맡기면서 관심 있는 문제도 푸는 것입니다.

방법은 Layer를 통과하면서 데이터를 잘 represent 해주는 것을 통해 feature engineering을 잘해서 문제를 풀겠다는 식으로 가는 것 같습니다.

 

물론 garbage in , garbage out이라고 해서 최소한의 필수적인 전처리와 변수 생성은 해줘야겠죠?

그렇지만 NN 방법은 위에 방법에서 변수들의 인사이트를 얻기 어렵기 때문에 회사/사용자 입장에서 

어떻게 다음 대책을 세워야 하는지에 대해서 난감할 것 같습니다.

그래서 Explainable AI 분야가 많이 연구가 진행되고 있는 것 같으니, 저 같은 사람은 기다렸다가 잘 사용하는 걸로...

 

이상입니다.

글은 한 번 읽어보시면 도움이 될 것 같습니다.

 

https://towardsdatascience.com/feature-engineering-8ad1e532be07

 

Feature engineering

Feature engineering is the process of transforming raw, unprocessed data into a set of targeted features that best represent your…

towardsdatascience.com

 

728x90