読者です 読者をやめる 読者になる 読者になる

ランダムフォレストのOOB errorのプロットに凡例をつける

今回は、ランダムフォレストにおけるOOB errorを視覚化する際に、凡例をつける方法を紹介します。以下は、irisデータに対して、ランダムフォレストを実行した例です。 # ランダムフォレスト library(randomForest) set.seed(1) rf.model <- randomForest(Spe…

MARSによる分類

RでMARS (Multivariate Adaptive Regression Splines) を実行するには、earthパッケージのearth関数を使います。なお、今回は、kernlabパッケージのspamを用いて、スパムメールの分類実験を行います。 # 分析データの読み込み library(kernlab) data(spam) #…

単語を重み付けする

今回は、TF-IDF (term frequency–inverse document frequency) という方法で単語の重み付けを行う方法を紹介します。TFは単語の観測頻度、IDFは全文書数をその単語が出現した文書で割って対数をとった値となります。*1 分析データは、金明哲先生が公開してお…

L1正則化による変数選択

今回は、glmnetパッケージを使って、L1正則化 (LASSO) による変数選択を行ってみます。分析データは、kernlabパッケージのspamデータセットとします。 まずは、L1正則化によるspam/nonspamの2値判別を行います。*1 # パッケージの読み込み library(glmnet) l…

文字列の類似度を測る

今回は、文字列距離 (string distance)*1 を求める方法を紹介します。以下の例では、stringdistパッケージを用います。*2 このパッケージのstringdist関数を使うと、様々な文字列距離を求めることができます。 # パッケージの読み込み library(stringdist) #…

共起ネットワークを作る

今回は、単語の頻度を用いた共起ネットワークを描きます。分析データは、RMeCabを使う (1) という記事で使ったAbe.txtとします。以下の例では、テクストに現れる名詞のみを対象とし、共起頻度が2以上のパターンのみを描画しています。*1 # パッケージの読み…

名詞率とMVRに基づくテクスト分類

今回は、樺島・寿岳 (1965) によって提案された、名詞率とMVRによるテクスト分類法を紹介します。*1 分析データは、RMeCabを使う (1) という記事で使用した「PM」データセットとします。 # パッケージの読み込み library(RMeCab) # 品詞頻度行列の作成 setwd…

RMeCabを使う (4)

前回に引き続き、RMeCabパッケージの使い方を紹介します。前回は単語の頻度を用いた文書分類を行いましたが、今回はn-gramの頻度を用いた文書分類を行います。 複数ファイルにおけるn-gramの頻度を集計するには、docNgram関数を使います。文書分類には、前回…

RMeCabを使う (3)

前回に引き続き、RMeCabパッケージの使い方を紹介します。これまでは単一のファイルのみを解析してきましたが、今回は複数ファイルの解析を扱います。 まずは、カイ2乗値を用いて、テクスト間の頻度差が大きい語を特定してみましょう。 # パッケージの読み込…

RMeCabを使う (2)

前回に引き続き、RMeCabパッケージの使い方を紹介します。Ngram関数を使うと、以下のように、文字n-gram、単語n-gram、品詞n-gramを簡単に集計することができます。*1 # パッケージの読み込み library(RMeCab) # 文字3-gram Ngram.1.result <- Ngram("C:/PM/…

RMeCabを使う (1)

今回は、RMeCabパッケージを使った日本語テキストの分析を扱います。分析データは、石田・小林 (2013) のサポートサイトで公開されているデータの一部を使います。こちらのページの一番下にあるzipファイルのいずれか*1をダウンロードし、「PM」というフォル…

クラスター分析におけるp値を計算する

今回は、Rのpvclustパッケージを用いて、クラスター分析におけるp値を計算してみます。分析データは、caパッケージのauthorとします。*1 以下の例では、相関係数と群平均法を用いたクラスター分析を行い、ブートストラップのリサンプリング数を1000回として…

ワードクラウドを作る

今回は、wordcloudパッケージを使って、ワードクラウドを描いてみましょう。 まずは、英語のワードクラウドを作る方法を説明します。ここでの分析データは、バラク・オバマ大統領の演説 (Obama.txt) とします。 # パッケージの読み込み library(wordcloud) #…

Latent Dirichlet allocationを行う

今回は、Latent Dirichlet allocation (LDA) を使ったテクスト解析に挑戦してみたいと思います。以下では、ldaパッケージを使っています。*1 今回の分析データは、X-MEN、X-MEN2、X-Men: The Last StandについてのWikipedia記事です。各記事のPlotのセクショ…

日本語を対象とした語彙比較

以前、語彙の豊富さや文章の難しさを測る (3) という記事で、languageRパッケージを使った語彙分析を行いました。今回は、上記の記事で紹介したcompare.richness.fnc関数を使って、日本語の分析をする方法について書きたいと思います。 分析データは、東京大…

n-gramを集計する

今回は、n-gramの集計を行ってみたいと思います。分析データは、James JoyceのA Portrait of the Artist as a Young Manとします。 まず、Project Guterbergで公開されているデータを直接読み込みます。*1 # 分析データの読み込み # 読み込む際に、全ての文…

共起語を集計する

今回は、共起語(コロケーション)の集計をしてみたいと思います。*1 共起語の集計は、ワードリストの作成やKWIC形式の用例表示と並んで、コーパス言語学における基本的な技術とされています。 今回の分析データは、Jonathan SwiftのA Modest Proposalとしま…

KWIC形式で用例を表示する

言語研究においては、単語の頻度を数えるだけでなく、それらの単語がどのような文脈で用いられているかを精査することが重要です。そのような場合、コーパス言語学では、KWIC (KeyWord In Context) という形式で用例の一覧を表示することがあります。*1 今回…

Rではじめるビジネス統計分析

r

このたび、『Rではじめるビジネス統計分析』という共著書を翔泳社より刊行することになりました(2014年7月17日刊行予定*1)。Rではじめるビジネス統計分析作者: 末吉正成,里洋平,酒巻隆治,小林雄一郎,大城信晃出版社/メーカー: 翔泳社発売日: 2014/07/18メ…

語彙成長率を調べる

今回は、前回の記事で登場した語彙成長率 (GrowthRate) について、もう少し紹介したいと思います。今回の分析データは、Herman MelvilleのMoby-Dickとします。 # パッケージの読み込み library(languageR) library(zipfR) # 分析データの読み込み data(moby)…

語彙の豊富さや文章の難しさを測る (3)

前々回の記事と前回の記事ではkoRpusパッケージを使いましたが、languageRパッケージにも語彙の豊富さを測る関数があります。今回の分析データは、Lewis CarrollのAlice's Adventures in WonderlandとL. Frank BaumのThe Wonderful Wizard of Ozとします。 #…

語彙の豊富さや文章の難しさを測る (2)

前回の記事に引き続き、koRpusパッケージの紹介をします。このパッケージには、語彙の豊富さや文章の難しさを測るための関数が非常に多く実装されています。そして、複数の指標をまとめて計算する関数も用意されています。 今回の分析データは、WikipediaのC…

語彙の豊富さや文章の難しさを測る (1)

RのkoRpusパッケージを使うと、語彙の豊富さや文章の難しさを測ることができます。このパッケージには非常に多くの機能が実装されていますが、今回はその一部を紹介したいと思います。*1 分析データとしては、Project Gutenbergで公開されているCharles Dick…

分類精度を確認する

判別分析や決定木のような分類モデルを評価する場合、そのモデルの分類精度を確認するのが一般的です。*1 以下の例は、irisデータの判別分析です。 # 分析データ # 訓練データと実験データの作成 tr.index <- seq(1, nrow(iris), 2) iris.train <-iris[tr.in…

系統樹を描く (2)

前回の記事にもあるように、系統樹を描く場合、どの距離や結合法を用いるかによって、最終的に得られる結果が異なることがあります。勿論、個々の分析において、どの距離や結合法を用いるかは、データの性質や研究目的、あるいは分析者の仮説によっても変わ…

系統樹を描く (1)

今回は、系統樹によるクラスタリングを行います。系統樹とは、同系統のグループ内の親子関係を推定し、その結果を樹木の枝分かれに見立てて表現する手法のことです。樹根(樹木の根の部分)がある系統樹を有根系統樹と呼び、樹根がない系統樹を無根系統樹と…

ワードリストを作る

今回は、Rを使ったワードリストの作成方法について書きます。以下の例では、languageRパッケージのalice(『不思議の国のアリス』)を使っています。 # 分析データ library(languageR) data(alice) # 全ての文字を小文字に変換 alice.lower <- tolower(alice…

コーパス間で頻度差の大きい単語を特定する

複数のコーパスにおける単語の出現頻度を比較する場合、比較対象となる語は、分析者によってあらかじめ決められていることが多いでしょう。そのような比較は、分析者の仮説を統計的に検証するアプローチと言えます。しかし、実際の分析では、どの単語に注目…

検索語の生起位置の視覚化

ある検索語に関して、その頻度を知るだけでなく、生起位置を知りたいことがあるでしょう。例えば、アカデミック・ライティングの研究で、introductionでよく使う表現、discussionでよく使う表現、conclusionでよく使う表現などのリストを作るかも知れません…

複数のクラスタリング手法を組み合わせる

主成分分析であれ、対応分析であれ、クラスター分析であれ、クラスタリングには、それぞれ長所や短所があります。そこで、複数のクラスタリング手法を組み合わせることで、データの性質をより深く理解しようというアプローチがあります。今回は、その一例と…

ランダムフォレストによる分類に寄与した変数の分析

Rでランダムフォレストを実行するには、randomForestパッケージのrandomForest関数を使います。なお、今回は、kernlabパッケージのspamを用いて、スパムメールの分類実験を行います。 # 実験データの読み込み library(kernlab) data(spam) # 乱数の設定 set.…