빅데이터분석기사 필기: 2과목 빅데이터 탐색 강좌의 맛보기 강의입니다.
이번에는 차원 축소 개념에 대해서 학습해 보도록 하겠습니다 여기에서는 차원이라는 말을 사용하고 있는데요 사실 이 차원이라는 것이 앞에 설명드렸던 변수들의 개수를 의미한다고 생각하시면 됩니다 그러니까 어떤 데이터셋에 10개의 변수가 들어 있다면 이것은 10차원이 되는 것이죠 그럼 앞에 변수 선택과 차원 축소의 개념은 조금 차이가 있다고 볼 수가 있는데요 이 변수 선택이라는 것은 변수들이 들어있는 상태에서 특정한 변수를 고르는 그런 방법이라고 볼 수가 있겠구요 차원 축소라는 것은 차원 축소의 개념을 보시면 대량의 데이터에서 중요한 정보를 추출하기 위해서 사용된다. 이것을 통해서 복잡성을 줄이고 계산 효율성을 향상시킨다는 점은 앞에서 설명드렸던 변수 선택과 동일한 특성이라고 볼 수 있습니다 여기에서는 로버스트 차원 축소다 라는 그런 말을 사용하게 되는데요 이 로버스트라는 말은 강건한 이라는 그런 의미를 가지고 있습니다 강건한 이라는 것은 무엇이냐면 대부분 이 고차원의 데이터 안에는 물론 중요한 정보들도 많이 포함하고 있지만 동시에 이상치나 어떤 노이즈 값도 많이 포함을 하고 있어서 이것이 모델을 만드는데 어떤 성능을 저하시키는 요인이 되기도 합니다 그런데 여기에서 로버스트 차원 축소라는 것은 이상치나 노이즈에 영향을 좀 적게 받는 강건한 모델을 만드는 것을 의미합니다 그리고 이와 관련된 말로 차원의 저주라는 말이 있습니다. 차원의 저주라는 것은 주로 고차원의 데이터, 변수가 굉장히 많을 때 발생하는 문제인데요. 차원이 증가할수록 데이터 분석이 어려워지는 현상입니다. 데이터의 공간이 희소해지고 데이터 간 거리가 멀어져서 분석의 정확도가 떨어진다라고 얘기를 했는데요 이거는 예를 들어서 우리가 1차원 같은 경우에 이렇게 선으로 표시가 되는데요 이 안에서 자료가 이렇게 4개가 있다면 이렇게 좀 조밀하게 데이터가 붙어 있는데요 이것이 2차원이 되면 이것들 사이에 어떤 간격이 조금 넓어지겠죠 그리고 3차원이 되면 이 안에 더 넓은 공간에 데이터가 퍼져 있게 되는 것입니다 그래서 데이터의 공간이 희소해지고 데이터와 데이터 간의 거리가 멀어지다 보면 어떤 분석의 정확도가 떨어지는 결과를 초래하게 되는데요 데이터가 희소하게 되면 앞에 설명드렸던 것처럼 과대적합이 일어나게 됩니다 데이터가 좀 적어지게 되기 때문에 이 데이터의 차원이 너무 높아서 발생하는 문제라고 볼 수 있습니다 자 그러면 이와 관련된 용어로 다중공선성 이라는 용어가 있는데요 이건 차원 축소 뿐만 아니라 변수 선택과도 관계가 있는 용어입니다 다중공선성 이라는 것은 회귀 모델에서 회귀 모델을 우리가 만들 때 독립 변수들 간에 강한 선형관계가 있을 때 발생하는 현상이 되겠습니다. 독립변수들 간에 서로 공통되는 특성들이 굉장히 많다는 거죠. 강한 선형상관관계가 있다는 것은 어떤 독립변수 X1과 X2의 특성이 상당 부분 겹쳐진다고 생각할 수가 있습니다. 그래서 이렇게 모든 독립변수들을 넣어서 복잡한 회귀 모델을 만들면 실제로는 그렇게 예측력이 좋은 것이 아님에도 불구하고 어떤 예측력이 높은 것처럼 나타나는 경우가 있다는 것입니다. 그래서 이 경우에는 회귀계수 추정에 영향을 주고 결과적으로 모델의 예측력이 저하가 되는데요. 그래서 다중공선성이라는 용어를 기억하실 필요가 있겠습니다. 독립변수들 간에 서로 강한 선형상관관계가 있을 때 다중공선성이 있다고 얘기를 하는데요. 그럼 우리는 이 다중공선성이 존재한다는 것을 어떻게 알 수가 있을까요? 이것을 판단할 수 있는 지표가 몇 가지가 있는데요. 가장 대표적인 것은 바로 분산팽창계수라는 것입니다. VIF라고 얘기를 하는데요. VIF값이 1보다 큰 경우 다중공선성의 존재가 의심된다. 10 이상이면 다중공선성이 있다고 판단된다. 그래서 분산팽창계수 VIF와 10 이라는 숫자도 기억을 해두시면 좋을 것 같습니다 그래서 이렇게 다중공선성이 존재한다는 것을 알게 됐을 때는 우선 앞에 설명했던 것처럼 변수 선택을 하는 방법을 사용할 수가 있습니다 그리고 두번째는 변수들을 좀 변환하는 그런 방법을 쓸 수도 있구요 그 다음 다중공선성에 강인한 로버스트한 모델을 사용할 수 있는데요 이게 앞에 설명드렸던 릿지나 라소 같은 규제 모델이라고도 하고 또 페널티 라고도 얘기를 하고 벌점화 라고도 하고 이름이 굉장히 여러가지 인데요 너무 복잡하거나 회귀계수들이 모델에 큰 영향을 주지 않을 때 이것을 축소하거나 아니면 아예 그냥 선택을 해버리는 그런 영향을 줄 수 있는 방식이 릿지나 라소가 되겠죠 이렇게 해서 회귀계수를 추정함으로써 다중공선성을 해결할 수 있습니다. 변수를 조합하는 방법인데요. 이게 우리가 설명할 차원 축소와 관련이 있다고 볼 수 있고요. 변수들을 조합해서 아예 새로운 변수를 생성하거나 주성분 분석이라는 것은 새로운 주성분들을 만드는 것인데요. 이런 방법을 쓸 수가 있고요. 그리고 앞서 설명을 드렸지만 차원이 높아짐에 따라서 데이터는 좀 희소해지는 그런 차원의 저주 때문에 발생할 수도 있기 때문에 데이터를 추가적으로 수집을 해서 변수들 간의 상관관계를 더욱 정확하게 추정하는 방법을 쓰는 경우도 있습니다 그래서 다중공선성이라는 것은 무엇인지 이 다중공선성을 어떤 지표를 사용하는지를 기억을 하실 필요가 있겠습니다. 다음은 이제 차원 축소 기법들이 되겠는데요. 개요적으로 어떤 것들이 있는지를 좀 알아보고 이제 뒤에 하나씩 설명을 드리도록 하겠습니다. 차원을 축소하는 방법은 굉장히 다양한 방법들이 있는데요. 여기에 대표적인 것들, 일단 빨간색으로 표시한 부분들은 시험 문제 출제가 된 부분입니다. 그래서 조금 자세하게 알 필요가 있겠고요. 주성분 분석 방법이 있고, 요인분석, 다차원 척도법, 특이값 분해, 선형판별 분석, 독립성분 분석 같은 방식이 있습니다. 주성분 분석이 가장 대표적이고 중요한 기법이라고 볼 수 있고요. 약어를 같이 기억을 해주시면 좋겠죠. PCA라고 얘기를 하는데요. 데이터의 분산을 최대화하는 축을 찾아서 고차원 데이터를 저차원으로 변환하게 됩니다. 데이터의 분산을 최대화하는 축을 찾는다 라고 했구요. 요인분석은 Factor Analysis, 관찰된 여러 변수들 사이에 상관관계를 고려해서 그 뒤에 잠재적인 요인을 추출하는 기법입니다. 그리고 뒤에 다차원 척도법도 설명 드릴 건데요. MDS라고 하는데 다차원 공간의 점들 사이에 거리를 보전하면서 고차원 데이터를 저차원으로 변환한다. 어떤 거리의 개념을 사용한다 라고 되어 있습니다. 보통 다차원 척도법은 거리의 개념을 표현하기 때문에 시각화의 기법으로 사용할 수가 있습니다. 우리가 차원 축소를 했을 때 또 좋은 것 중에 하나는 우리가 시각화를 하려면 보통 2차원이나 3차원 정도까지는 시각화가 가능하지만 그 이상의 차원이 되면 시각화가 굉장히 어렵죠. 시각화를 하기 위해서 일부러 차원 축소를 하는 그런 경우들도 있습니다. 다차원 척도법은 시각화를 할 때도 많이 활용이 됩니다. 그 다음 특이값 분해 SVD라고 있는데요. 이것은 행렬을 사용하는 기법이 되겠고요. 3개의 다른 행렬의 곱으로 분해해서 원본 행렬의 정보를 최대한 보존하면서 차원을 축소하는 방식입니다. 그 다음 선형판별 분석 LDA라고 하는데요. 이것은 클래스 사이의 분산을 최대화한다, 어떤 클래스와 다른 클래스의 분산을 서로 최대화합니다. 그리고 클래스 내에서는 분산을 최소화한다. 이건 무슨 얘기냐면 분산을 최대화하게 되면 이 두 가지는 서로 굉장히 많이 다르다는 것입니다. 그런데 분산을 최소화한다는 건 사실 비슷비슷한 데이터라는 것이죠. 그래서 클래스 내에서는 분산이 작고 클래스와 클래스 사이에서는 분산을 최대화 시킨 다음에 이것을 보통 분류를 할 때 사용을 합니다. 서로 다른 클래스를 분류하는 것이죠. 이 방법을 이용해서 차원 축소를 하는 것이 선형판별 분석이 되겠습니다. 독립성분 분석 ICA도 있는데요. 다변량의 신호를 통계적으로 독립적인 하위 성분으로 분해하는 방식입니다. t-SNE 방식이 있는데요. 고차원 데이터의 구조를 최대한 보존하는 2차원 또는 3차원 데이터로 변환을 하는데요. 이것도 역시 데이터 시각화에 사용되는 그런 기법이 되겠습니다. 이 방법들이 굉장히 많기 때문에 이걸 다 기억하기는 정말 어려울 것 같고요. 각 축소 기법 중에 키워드가 되는 내용 기억을 좀 해주시면 좋겠고요. 위쪽에 있는 이 네 가지는 출제가 됐기 때문에 다른 것보다 조금 더 신경써서 알아두시는 게 좋을 것 같습니다. 그럼 여기까지 차원 축소 개념에 대한 학습 마치도록 하겠습니다.
