R言語の環境設定
今回はR言語の環境設定と実際のR を使ったクラスタリングについて述べる
まずRをダウンロードするため、公式サイトよりOSに合わせてパッケージをダウンロードする。Macの場合だと、「Doenload R for (Mac) OSX」「R-4.0.3.pkg (notarized and signed)」を順次クリックしてインストーラーをダウンロードし、インストーラーがダウンロード出来たらそれをクリッして、後は指示通り押していけば完了する。
インストールが完了すれば、ソフトを立ち上げると以下の画面が現れる。
後は、通常のコマンドラインツールと同様に「> 」の横にtextを入力していく。
まず作業するフォルダーを任意の場所に作成する。(例:R-workspaceという名のファイルを作成)次に、Rのコンソールで「setwd(“ファイルの絶対パス”) 」を入力して作業ディレクトリを変更する。変更出来たかどうかは「getwd() 」にて確認できる。
ここで実用上最も頻繁に課題として現れるクラスタリングを実際に行ってみる。クラスタリング(クラスター分析)とは、データの類似度をもとにデータをいくつかのクラスター(グループ)に分けるデータ分析手法で、正解データは与えられず、入力されたデータからパターンを見つけ出す教師なし学習と呼ばれる。
クラスタリングにおけるデータの類似度は、データ間の距離に基づき行われる。主な距離としては、ユークリッド距離(Euclidean)、ミンコフスキー距離(Minkowski)、マンハッタン距離(Manhattan)、マハラノビス距離(Mahalanobis)、チェビシェフ距離(Chebyshev)、キャンベラ距離(Canberra)等がある。
クラスタリングの手法としては、階層を持たずに分ける非階層クラスタリングであるk-means、何階層かに分けていく階層クラスタリングがある。階層クラスタリングはデータ間の距離をあるルールで判定して一つの塊としていき、さらに塊間の距離が近いものを集めてといった形で次第に大きな塊を見つけていくものとなる。クラスタ間の距離の判定方法には、最短距離法(単連結法)、最長距離法(完全連結法)、群平均法、重心法、メディアン法、McQuitty 法、ウォード法(最小分散法)等がある。
クラスタリングする為のデータは、CSV等で入力することができる。ファイルの読み込みは、先ほど作成したフォルダ(例だとR-workspace)の中にデータのフォルダを入れ、以下のような形で入力データを設定する。(エクセルで作成したデータもCSVに変換可能)
> data <- read.table(“demodata.csv”, sep=”,”, header=TRUE)
ここでdataは変数名、read.table()関数でデータを読み取り、“demodata.csv”は読み取るデータファイル名、sep=”,”はデータの区切り(ここではCSVなので「,」、header=TRUEはCSVのヘッダーを読み込むかどうかの指定となる。
今回は外部からではなく、Rの中に持っているデータをそのまま利用する。(使用するデータセットは irisデータ) irisデータは、3種類の花、各50サンプルずつで計150サンプル、がく片と花びらの幅と長さに関する4つの特徴量からなるデータとなる。コンソールに”iris”と打ち込むとデータの中身が見れる。先ほどのCSVと同様に変数を定義してデータを読み込む。
> data <- iris[,1:4]
> head(data)
Sepal.Length Sepal.Width Petal.Length Petal.Width
1 5.1 3.5 1.4 0.2
2 4.9 3.0 1.4 0.2
3 4.7 3.2 1.3 0.2
4 4.6 3.1 1.5 0.2
5 5.0 3.6 1.4 0.2
6 5.4 3.9 1.7 0.4
iris[,1:4]は、データの中の1~4列を入力することを示し、head(data)は変数dataの概要をみるコードとなる。次にirisのデータの構造を見る。
> str(iris)
'data.frame': 150 obs. of 5 variables:
$ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
$ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
$ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
$ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
$ Species : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...
さらにデータの行数 と 品種別のデータ数 を見ると、以下のようになる。
> nrow(iris)
[1] 150
> summary(iris$Species)
setosa versicolor virginica
50 50 50
品種としては、setosa、versicolor、virginicaにそれぞれ50サンプル、合計150サンプルあることがわかる。
ここで、クラスタリングを用いて、irisの Sepal.Length、Sepal.Width、Petal.Length、Petal.Widthをもとに3つのクラスタに分割し、品種別での分類を試みる。クラスタリング後に、結果とデータセットのSpeciesを照らし合わせ、どれくらい正確にirisを品種別に分類できたかを確認する。
次回は、このデータを使った階層クラスタリング(hclust)、非階層クラスタリング(kmeans)をについて述べる。
コメント
[…] 前回までで、Rのインストールからデータの導入、そして実用的な機械学習の応用として使われる頻度の高いクラスタリングについて、データの準備までを述べた。今回はその続きとして、階層クラスタリングでの学習と評価について述べる。 […]
[…] 今回はRの概略を紹介した。次回は実際のコードについて紹介したいと思う。 […]
[…] Rの環境の立ち上げまでは以前述べたものを参照して行う。次に作業スペースとして適当なフォルダを作成し、そこにダウンロードしたデータを格納する。ダウンロードしたデータは「,」ではなく「;」でデータが仕切られているので、text editor等を利用してして「;」から「,」への変換を行っておく。(参考editor sublimetext3) […]
[…] Rの環境設定 […]