원하는 비율에 도달하려면 몇 개의 주성분이 필요한지는 `.n_components_`에 저장된다!
원본 데이터의 50%를 설명하는 `fruits_pca`로 로지스틱 회귀모델 훈련한 예시:
🤔 Hmmmm...
320p. ‘주성분’이라는 게 데이터의 분산을 가장 잘 표현하는 방향을 찾는다고 하시니, 선형회귀의 회귀선으로 찾아도 되는 게 아닌가 하는 생각이 들었습니다. 회귀선을 사용하지 않고 굳이 ‘벡터’로 찾는 특별한 이유가 있는지 궁금합니다. 👨🏻🏫 주성분의 정의에 해당됩니다. 회귀가 분산이 큰 방향을 찾는 것은 아닙니다. ⏯️ 아 그치 회귀는 물론 '최소제곱법' 베이스인 건 아는데... 주성분이 어떻게 벡터를 활용해 정의될 수 있는지 보려면 많이 복잡하게 들어가야 하려나ㅠ >> 통계적데이터마이닝 교안 참고하자!
324p. inverse_transform 으로 복원할 때 원본데이터와 동일하게 10000개로 복원하셨는데, 실제로는 아예 똑같은 개수의 데이터로 복원하는 건 의미가 없지 않나요? 그냥 복원 과정 설명을 위한 예시라고 이해하면 되는거죠? 👨🏻🏫 원본 차원으로 복원하는 것이 필요한 작업이 있을 수 있지 않을까요? 🆗
324p. 그렇다면 inverse_transform을 사용할 때 원본과 다른 개수로 복원도 가능한지 궁금합니다. 이를테면 50개의 주성분을 바탕으로 5000개 정도만 샘플을 만들어보고 싶다거나 할 때 PCA를 사용할 수 있는 건가요? 👨🏻🏫 원본 차원보다 적은 차원으로 복원하는 것도 가능합니다. 🆗
325p. ⚠️`for start in [0, 100, 200]` 보고, 순간 range의 start, stop, step 인 줄 알았는데 아니었다..! 애초에 이렇게 리스트로 전달하면, 그 안에 있는 거 하나씩 start로 넣는 거였지.. 기억났다... 🆗
😵💫 비슷해서 헷갈리는 녀석들 해두자! `n_components` : PCA 모델 만들 때 설정하는 매개변수로, '개수' or '비율' 중 원하는 걸 입력하면 됨 `.n_components_` : '비율'로 입력했을 때, 몇 개의 주성분이 필요한지가 저장되어 있는 속성. `.components_` : (뭘로 하든 걍 결과적으로) 뽑아낸 주성분이 저장되어 있는 속성. 🆗
🤓 To wrap up...
벡터 개념을 제대로 몰라서 그런지 처음에 갈피를 잘 못 잡았다.. 주성분 분석 자체가 문제를 직접적으로 해결하는 (앞에서 배운) 알고리즘들과는 결이 다르다는 것을 인지하고 나니까 한결 이해가 편했다! (마지막 질문 참고) 선형대수학이 필요하겠다는 위기감이 스멀스멀... 벡터랑 행렬이라도 좀 봐놔야할 것 같다ㅠ
사진의 용량을 줄이기 위해PCA 알고리즘도입 → 특성 10,000개를 잘 설명하는주성분 50개를 찾아냄 → 찾아낸 주성분 50개에 투영시켜, 원본데이터의 차원을축소시킬 수 있음 (=특성 개수를 줄이니 용량이 절감됨)
→ 반대로 축소된 데이터를 원본 데이터로복원할 수도 있었음 → 뽑아낸 주성분들이 원본 데이터를얼마나 설명하는지도 구해볼 수 있음 →다른 알고리즘과 연계하여 많이 활용되고,시각화가 용이하다는 장점까지!