Rによるデータ分析

Rによるベクトル量子化平均法

ベクトル量子化平均法 のRによる実施例です。

学習用データの分析のみ

2値の分類

ベクトル量子化 で説明変数を1次元の質的変数に圧縮してから、 それを基にして集計します。 その後で、目的変数と結合します。

ここでは、以下のデータを使っています。
VectorQu

library(mclust)
setwd("C:/Rtest")
# 作業用ディレクトリを変更
Data <- read.csv("Data.csv", header=T)
# データを読み込み
Y <- Data$Y
Data10 <- Data
Data10$Y <- NULL
# Yの列を削除
Data11 <- Data10
# 出力先の行列を作る
for (i in 1:ncol(Data10)) {
Data11[,i] <- (Data10[,i] - min(Data10[,i]))/(max(Data10[,i]) - min(Data10[,i]))
# 正規化
}
mc <- Mclust(Data11,10)
# 混合分布で分類。これは10個のグループ分けの場合
cluster <- mc$classification
cluster <- as.character(cluster)
# 文字列に変換
cluster <- as.data.frame(cluster)
# データフレームに変換
Data4 <-cbind(Y,cluster)
# データセットの作成
Data6 <-aggregate(Y~cluster,data=Data4,FUN=mean)
# クラスター毎に平均値を計算
colnames(Data6)[2]<-paste0("predicted_Y")
library(dplyr)
Data4 <-left_join(Data4,Data6,by="cluster")
colnames(Data4)[3]<-paste0("predicted_Y")
library(ggplot2)
Data4$Y <-NULL
Data2s2 <- cbind(Data,Data4)# データを読み込み
ggplot(Data2s2, aes(x=X01, y=X02)) + geom_point(aes(colour=predicted_Y)) + scale_color_viridis_c(option = "D")

VectorQu
完璧に予測できていることがわかります。

下記で、クラスターがどのように作られたのかが、わかります。
ggplot(Data2s2, aes(x=X01, y=X02)) + geom_point(aes(colour=cluster))

VectorQu

回帰分析

目的変数が量的変数の場合も、上記のコードで同じです。

Yが未知のデータの予測

学習用データは上記と同じです。テスト用データは下記の3つのサンプルになっていて、Data2.csvに入っています。
VectorQu

setwd("C:/Rtest") # 作業用ディレクトリを変更
Data <- read.csv("Data.csv", header=T)
# データを読み込み
Y <- Data$Y
Data10 <- Data
Data10$Y <- NULL
# Yの列を削除
Data11 <- Data10
# 出力先の行列を作る
for (i in 1:ncol(Data10)) {
Data11[,i] <- (Data10[,i] - min(Data10[,i]))/(max(Data10[,i]) - min(Data10[,i]))
# 正規化
}
library(mclust)
mc <- Mclust(Data11,10)
# 混合分布で分類。これは10個のグループ分けの場合
cluster <- mc$classification
cluster <- as.character(cluster)
# 文字列に変換
cluster <- as.data.frame(cluster)
# データフレームに変換
Data4 <-cbind(Y,cluster)
# データセットの作成
Data6 <-aggregate(Y~cluster,data=Data4,FUN=mean)
# クラスター毎に平均値を計算
colnames(Data6)[2]<-paste0("predicted_Y")
Data2 <- read.csv("Data2.csv", header=T)
Data21 <- Data2
for (i in 1:ncol(Data2)) {
Data21[,i] <- (Data2[,i] - min(Data10[,i]))/(max(Data10[,i]) - min(Data10[,i]))
}
output2 <- predict(mc, Data21)$classification

VectorQu
output2が、クラスターの予測値です。 Data2.csvというファイルのデータの順になっています。 Data6が、クラスター毎のYの予測値です。

例えば、2個目のサンプルは、クラスター4と予測されたので、Yの予測値は0だということがわかります。



参考文献

CRAN
https://cran.r-project.org/web/packages/MASS/MASS.pdf
MASSのマニュアルです。


CRAN
https://cran.r-project.org/web/packages/nnet/nnet.pdf
nnetのマニュアルです。


機械学習のための特徴量エンジニアリング」 Alice Zheng・Amanda Casari 著 オライリー・ジャパン 2019
名前はついていないのですが、ベクトル量子化回帰分析と同じ内容の方法が、ベクトル量子化の解説の後に、紹介されています。



Tweet データサイエンス教室