「バイオインフォマティクス特論」(秋学期)の資料をまとめたもので、『Rによるバイオインフォマティクスデータ解析』を参考にしています。†Rのインストールについては、次のページを見てください。MacでRを使うWindowsでRを使うここでは、標準で使用できるirisデータセットを使います。よって分類する問題です。virginicaのいずれかをとる離散値です。virginicaという3種類のアヤメについて、それぞれ50個ずつ、合計150個のデータが含まれています。ランダムに10個のデータを選択して、見てみましょう。求めること」を機械学習といいます。すると、がく片の長さ、幅、花びらの長さ、幅からアヤメの種類を判別する教師付き学習と考えることができます。clustering'')です。ありますが、ここでは階層クラスタリングを紹介します。1つのデータだけを含むクラスターをデータと同じ数だけ作ります。それから、最も近い(似ている)クラスター同士を結合してより大きい新しいクラスターを作ります。これを全てのクラスターが一つに結合されるまで繰り返します。Rで階層クラスタリングを用いるには、hclust関数を用います。hclust関数の引数には距離行列を与えます。距離行列は、dist関数で求めることができます。Petal.Widthの値から、距離行列を計算します。dist(iris[,1:4])この距離行列を用いて、階層クラスタリングを行います。呼ばれる図が描かれます。xlab="Iris")デンドログラムを見ると、どのクラスターが結合したのかがわかります。距離尺度とクラスターを結合する方法にはいくつかの方法があります。C_2[/math]間の距離として、最も近い(似ている)クラスターを結合します。いう方法もあります)。説明したい値を目的変数といい、目的変数を説明するために使う変数を説明変数と言います。regression)を行います。モデルが次のような式で表される直線をデータから求めます。ここで、[math]\hat{y}[/math]がモデルによる予測値、[math]x_1[/math]が説明変数、[math]\beta_0[/math]が定数項、[math]\beta_1[/math]が([math]x_1[/math]の)係数です。差を残差といい、次の式で表されます。\]線形回帰では、残差の二乗の和を最小化するような係数と定数項を最小二乗法を使って求めます。(求め方の説明は省きます。\]例として、がくの長さ(Petal.Length)を横軸、花びらの長さ(Sepal.Length)を縦軸にとって、150個のデータをプロットしてみます。iris$Petal.Length)どうやら、花びらの長さとがくの長さの間には正の相関(一方が大きいと他方も大きいという関係)がありそうですね。[math]y[/math](目的変数)として、単回帰を行いましょう。説明変数」というように表します。iris$Sepal.Length線形回帰は、標準で用意されているlm関数にモデル式を入力して行います。x1)学習された結果を表示してみると、次のようになります。Coefficientsは係数を表し、Interceptは定数項の値(切片)を表します。すると、学習された式は次のように書けます。\]学習された単回帰モデルを図示します。y)abline(iris.sgl)学習されたモデルをsummary関数に渡すと、モデルに関する情報のサマリーが出力されます。Error)を表します。p値が0.05を超えている場合は、その説明変数は有意水準5%で統計的に有意ではなく、使えないと判断します。単回帰では説明変数を1つしか使いませんが、説明変数を複数使うことができ、説明変数を増やすと決定係数を1に近づけることができてしまいます。R-squaredは、自由度調整済み決定係数で、説明変数の数(自由度)によって調整した決定係数を表します。説明変数の数が異なるモデルを比較するときには、自由度調整済み決定係数を使います。p値が0.05を超えている場合は、このモデルは有意水準5%で統計的に有意ではなく、使えないと判断します。次に、予測誤差を視覚化するため、それぞれのデータについて、横軸に実際のがくの長さ(Petal.Length)、縦軸にその予測値をとってグラフを表示します。予測値はpredict関数で求めることができます。predict(iris.sgl))abline(a=0,b=1)この予測がどのくらい良いのかを表すために、平均二乗誤差(実際の値と予測値の差の二乗の平均)を求めます。regression)といいます。重回帰のモデルは次のような式で表されます。x_p[/math]を要素とするベクトルです。\beta_p[/math]を求めます。して重回帰を行いましょう。iris$Petal.Width説明変数が複数あるときは、モデルを表すときにそれぞれの変数を記号+で連結して表します。x1+x2+x3」となります。単回帰と同じように、lm関数を用いてモデルを学習します。1.4467934単回帰と同じように、学習された式は次のように書けます。\]単回帰と同じように、学習されたモデルをsummary関数に渡すと、モデルに関する情報のサマリーが出力されます。2.2e-16重回帰分析の場合はモデルが視覚化しにくいので、予測誤差だけ視覚化します。predict(iris.mult))abline(a=0,b=1)単回帰と同様に、平均二乗誤差を求めます。0.09901965単回帰の場合よりも誤差がかなり小さくなっていることがわかります。install.packagesコマンドを入力すると,パッケージをダウンロードするサーバーを聞かれますので,リストからJapanを選択します.install.packages("tree")library(tree)決定木学習は、説明変数に対する条件を用いて事例集合を分割することによってラベル(カテゴリー)を予測するための決定木を学習するものです。実物を見た方が理解しやすいので早速決定木を学習します。treeコマンドを用いて決定木を学習します。.」はモデル式、第2引数の「iris」は訓練データを表しています。説明変数」という形で表現し、説明変数が「.」(ドット)のときは、目的変数以外の全ての変数を表します。Petal.Width)を説明変数としています。次に、学習された決定木を表示します。*テキストでは分かりにくいので、図にします。plot(iris.tree)text(iris.tree)一番上が根(root)と呼ばれます。根から枝(branch)が下へと伸び、節(node)で分岐します。節は条件に対応します。枝の先端が葉(leaf)で、葉はカテゴリー(ラベル)に対応します。最初に、根の条件「Petal.Lengthの値が2.45より小さいか」によって事例を分けます。Petal.Lengthの値が2.45よりも小さい事例は左に、そうでない事例は右に振り分けられます。右に振り分けられた事例は、次に、2番目の条件「Petal.Widthの値が1.75より小さいか」によって振り分けられます。Petal.Widthの値が1.75よりも小さい事例は左に、そうでない事例は右に振り分けられます。ここで右に振り分けられた事例は、「Petal.Lengthの値が2.45より大きい」かつ「Petal.Widthの値が1.74より大きい」事例です。このように、決定木は、論理積(かつ)で結合した条件を表しています。先に表示したテキストで見てみましょう。最初のrootのところは条件を表しますが、ここでは条件がないのでrootと書かれています。150はこの集合に含まれる事例の数、239.600はこの集合に含まれる事例のバラツキの度合いです。setosaはこの集合に振り分けられた事例に対する予測ラベルです。virginicaの出現確率を表しています。