2. 파이톤이 접미사된 다변수 해석 4-2.인자 분석 [인자수의 추정]
대략 몇 가지 인자 분석을 추산하여 이 결과를 해석해 보니 가장 타당한 인자수가 결정되었다.예를 들어 6개 요소를 가정하면 4~6~8개의 인자로 5개 사례를 진행하는데 그 중에서 분석축으로 가장 사용하기 편리한 인자수를 사용한다.
또한 인자를 해석할 때 다음과 같은 몇 가지를 주의해야 한다.
● 인자의 해석은 유일하다
● 각 요소는 독립적이어야 한다
● 인자군은 전체적으로 망라적이다.
그렇다면 주성분 분석에 따라 요구되는 고유치가 기준일 것으로 추정된다.
선진적으로 주성분 분석의 모델 생성을 한 다음에 추정 인자수의 3가지 방법을 본다.
1. 주성분 분석으로 고유치 구하기
(1) 라이브러리 읽기
# 数値計算ライブラリ
import numpy as np
import pandas as pd
# 可視化ライブラリ
import matplotlib.pyplot as plt
%matplotlib inline
# 機械学習ライブラリ
import sklearn
# matplotlibを日本語表記に対応
!pip install japanize-matplotlib
import japanize_matplotlib
(2) 데이터 읽기
# URLを指定してcsvファイルを読み込む
url = 'https://raw.githubusercontent.com/yumi-ito/sample_data/master/subject_scores.csv'
df = pd.read_csv(url)
# 冒頭の5行分を表示
df.head()
인자 분석용 가상 데이터(12과 시험 점수 1천명)를 읽고 내용을 확인한다.(데이터 표준화)
# sklearnの標準化メソッドをインポート
from sklearn.preprocessing import StandardScaler
# 標準化の実行
sc = StandardScaler() # インスタンスを生成・定義
sc.fit(df) # データ変換の計算式を生成
z = sc.transform(df) # 実際にデータを変換
print("標準化得点:\n", z)
print(" ")
print("行列の形状:", z.shape)
평균값을 0으로 변환하고 분산값을 1로 변환합니다.이렇게 하면 과목 간의 득점을 간단하게 비교할 수 있다.주성분 분석을 하다
# sklearnのPCA(主成分分析)クラスをインポート
from sklearn.decomposition import PCA
# 主成分分析のモデルを生成
pca = PCA() # インスタンスを生成・定義
pca.fit(z) # 標準化得点データにもとづいてモデルを生成
이상은 주성분 분석의 모델입니다. 저는 인자수를 추정하는 방법을 보고 싶습니다.2-1. 인자수의 추정-고유치를 기초로 한 상황
고유치란 주성분의 분산으로 주성분의 정보량의 크기를 나타낸다.우선 고유치 1.0 이상의 수를 인자수로 하는 방법이 있다.
# 固有値を取得
ev = pca.explained_variance_
# 行名・列名を付与してデータフレームに変換
pd.DataFrame(ev,
index=["PC{}".format(x + 1) for x in range(len(df.columns))],
columns=["固有値"])
2-2. 인자수의 추정-권축을 기초로 한 상황
두루마리는 최대치에서 최소치까지 내림차순으로 그려진 도표로 절벽과 같은 모양을 묘사한다.
스쿠리(scree)는 산 위의'황혼'과 암석이 굴러다니는 가파른 비탈을 가리킨다.고유치는 어느 단계부터 갑자기 작아지고, 이후 안정된 단계는 인자수로 하며, 이하는 오차인자로 여겨진다.
# 基準線(固有値1)をひくためのダミーデータ
ev_1 = np.ones(12)
# 変数を指定
plt.plot(ev, 's-') # 主成分分析による固有値
plt.plot(ev_1, 's-') # ダミーデータ
# 軸名を指定
plt.xlabel("因子の数")
plt.ylabel("固有値")
plt.grid()
plt.show()
2-3. 인자수의 추정 - 누적 공헌률에 근거한 상황
# 寄与率の取得
evr = pca.explained_variance_ratio_
# 行名・列名を付与してデータフレームに変換
pd.DataFrame(evr,
index=["PC{}".format(x + 1) for x in range(len(df.columns))],
columns=["寄与率"])
기여율은 데이터 전체의 정보량(분산)에서 주성분이 분산되는 비율을 말한다.분산이 가장 큰 주성분을 차례로 추출하기 때문에 제1주성분(PC1)이 가장 크면 점점 작아진다.# 起点0と寄与率の累積値をプロット
plt.plot([0] + list(np.cumsum(evr)), "-o")
plt.xlabel("主成分の数")
plt.ylabel("累積寄与率")
plt.grid()
plt.show()
함수.원소를 순서대로 조합하는 그룹을 되돌려줍니다.0을 기점으로 공헌도 누적 과정을 그립니다.1개, 2개, 3개의 주요 성분을 넣으면 원 데이터 전체의 정보량이 얼마나 커버되는지 알 수 있다.
3. 인자수의 추정은 왜 주요 성분 분석입니까?
인자 분석과 주성분 분석의 목적은 완전히 다르다.
인자 분석은 데이터에 잠재되어 있는 공통인자를 발견하고 데이터 배후의 구조를 이해하고자 한다.상대적으로 주성분 분석은 데이터의 정보를 압축하고 차원수를 줄여 데이터를 처리하기 쉽다.
그러나 이런 방법은 비슷하다.
인자 분석은 오차가 가능한 한 적은 인자 부하량을 발견할 수 있다.인자 부하량은 공통인자가 변수에 미치는 영향도를 가리키며, 오차는 공통인자를 제외한 각 변수만의 인자를 가리킨다.
인자 분석은 공통 인자로 데이터를 설명하는 것이다.
따라서 홀로 인자를 오차로 삼으면 그에 상응하는 정보만 잃게 된다.너는 이 정보의 손실이 가능한 한 적은 인자 부하량을 발견할 수 있을 것이다.
이어 주성분 분석을 나타내는 경로도.
주성분 부하량은 변수가 주성분에 미치는 영향도이다.주성분 분석에서 정보량으로 = 분산되어 정보의 유지가 가능한 한 커지는 주성분 부하량을 발견한다.
한 마디로 하면 인자 분석과 주성분 분석은 같은 일을 한다.
목적이 다르면 데이터의 포지셔닝(원인에 놓일지 결과에 놓일지)도 다르지만 하는 일은 공통적이고 실제 결과도 비슷하다.
그리고 주요 성분은 데이터에서 자연스럽게 요구된다.따라서 인자수를 추정할 때 주성분 분석의 고유치를 목표로 이용된다.
Reference
이 문제에 관하여(2. 파이톤이 접미사된 다변수 해석 4-2.인자 분석 [인자수의 추정]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/y_itoh/items/ff57e7b02090fe900886텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)