テキストマイニング

仕事でテキストマイニング実装することになりそう。

久しぶりにMeCabと戦う。が、
今使ってる自宅PCになぜかMeCabがはいらない。

> install.packages ("RMeCab", repos = "http://rmecab.jp/R")
Warning in install.packages("RMeCab", repos = "http://rmecab.jp/R") :
'lib = "C:/Program Files/R/R-3.2.0/library"' は書き込み可能ではありません
URL 'http://rmecab.jp/R/bin/windows/contrib/3.2/RMeCab_0.9999.zip' を試しています
Content type 'application/zip' length 1648705 bytes (1.6 MB)
downloaded 1.6 MB

パッケージ ‘RMeCab’ は無事に展開され、MD5 サムもチェックされました

ダウンロードされたパッケージは、以下にあります
C:\User\AppData\Local\Temp\RtmpeGv1R3\downloaded_packages

警告が出てしまっていて、
インストールがうまくできていない...。
ぐぐったら、どうも「AppData」ってとこに入っちゃったのがNGっぽい。

R、パッケージのインストールについて -Rのパッケージをインストールで- その他(プログラミング・Web制作) | 教えて!goo

管理者権限ならいけるかも、とのことだったので、
試しにやってみたらできた!

なるほどねー。

勉強になりました。

最適化問題

先日、データ解析コンペティションのOR部会で発表してきました。
準備足らなさすぎて、資料も体もぼろぼろでしたが、
どうにか当日は迎えられました。
内容はひどかったけど…。

弊社の通常業務を、
通常通りにやりながら研究を進める事が、
どれだけ難しいかをとりあえず体感しつつ。
やはり研究は楽しいなと実感。
次回リベンジを心に決めました。ね。



今回トライしたのは、
POSデータを使った品揃え最適化のためのモデル構築。

2つの方向で試みて、
結果どちらもうまいこと出ずに終わってしまった…。

試み1)項目反応理論
試み2)最適化問題

私は2の最適化問題からアプローチ。
モデルの方向性としてはよかった、
というか絶対うまくいくはずのモデルなんだけど、
Rでうまくそれが実装できずに終わってしまった。

どうしたらあれをそのままRで実装できたんだろう…。
というよりもRのパッケージを使うんじゃなくて、
自分で0から組んだ方が早かったのだろうか…。

考え方は下記の通り。

  • 使用するデータ

 ・同一チェーン6店舗のPOSデータ

  • 使用する変数(店舗Aにおける売り上げ最大化の場合)

 ・店舗Aにおけるブランド別売り上げ本数
 ・全店におけるブランド別売り上げ本数シェア
  →全店におけるシェア=ブランド別の売り上げポテンシャルと捉える
 ・ブランドの平均販売価格(1本あたり)

  • 目的関数(最大化)

 店舗Aにおける売り上げ=ブランド別販売本数(x)× ブランド別平均販売価格 × 全店におけるブランド別売り上げ本数シェア

  • 制約条件

 ・店舗Aにおける陳列ブランド数は現在のブランド数と同じもしくは少ない
 ・ブランド別販売本数(x)は0以上の整数値

  • x初期値

 ・店舗Aの現在の販売本数

うまく実装できなかったことも原因だと思うけど、
そもそもこの式のままではxが初期値からほぼ動かずに収束してしまう。
全店におけるブランド別売り上げ本数シェアを、
各ブランドの売れるポテンシャルと捉えて変数を使用しているけど、
そこの影響度が低いのだろうか。

まだまだ試行錯誤が必要?
というよりもそもそも最適化問題の知識をしっかり押さえてないのが問題?

引き続き、勉強します。

項目反応理論

今日の勉強。


項目応答理論(こうもくおうとうりろん)または項目反応理論(こうもくはんのうりろん)、略称IRT (Item Response Theory; Item Latent Theory) は、評価項目群への応答に基づいて、被験者の特性(認識能力、物理的能力、技術、知識、態度、人格特徴等)や、評価項目の難易度・識別力を測定するための試験理論である。
項目応答理論 - Wikipedia


TOEICITパスポート試験などに使われている分析手法。
みんなが解けない問題を解けたほうがすごい。的なこと。

ただし、問題の難易度と配点の高低の相関関係の考え方(仮説)は二つあるらしい。

  • 問題の難易度が高い程、配点が高くなる関係がある
  • 問題の難易度が低い場合は配点が低くなり、逆に問題の難易度が高い(正答率が偶然に正答する確率と同一)場合も配点が低くなる関係がある


IRTではテストの一元性が保障されている必要があるので、事前に確認する必要がある。
※一元性とは、すべての変数が一つの主成分で説明できる状態のこと。


今日はここまで。

復活したい

そろそろ復活させたい
勉強用ノート。

今年はついに
データ解析コンペティションにもでるし。

ちゃんと勉強再開しよう。


今日は今からこの二冊をまとめる。
※社内PJ用だけども。
読み込んだ本だから、多分すぐに終わる...はず。

マーケティングリサーチの論理と技法 第4版

マーケティングリサーチの論理と技法 第4版

購買心理を読み解く統計学―実例で見る心理・調査データ解析28

購買心理を読み解く統計学―実例で見る心理・調査データ解析28


あとこれも読んでみた。
流行もん。

最後の数ページだけよかった。

SEMの不適解


不適解が出てしまった時の対処。

不適解とは、
 ・推定値の絶対値が1以上
 ・誤差分散が撹乱項の分散が0やマイナス
など。

これらは一般に論文には出せない。

ただし「サンプル変動による不適解」と判断できれば、
論文に載せることも不可能ではない。



参考。
http://ssjda.iss.u-tokyo.ac.jp/seminar2002_2a.pdf
http://homepage2.nifty.com/nandemoarchive/sem/futekikai.htm

共分散構造分析2

昨日に引き続き、共分散構造分析の勉強。

Rでsemパッケージがうまくいかないので、今日はlavaanパッケージと格闘。



2.lavaanパッケージ

使い方は、semパッケージとあんまり変わらない。
ただ、モデルの記述方法が違う。

モデルの記述方法

=~ 潜在変数の定義
~ 回帰(右辺:説明変数/左辺:目的変数)
~~ 残差共分散(相関)

スクリプト

# 入力用データ
dat <- read.csv("入力ファイル.csv", header=TRUE, row.names=1)

# 入力データの標準化 
dat2 <- data.frame(scale(dat))


# モデルの定義
model1 <-
'
# 潜在変数の定義
adv =~ webadv + magadv + tvcm
kpr =~ tvnews + newspaper + magazine + webnews + sns
# 回帰式
ikou ~ adv + kpr
jittai ~ ikou
# 残差(共分散)
webadv ~~ webnews + sns
magazine ~~ magadv
tvcm ~~ tvnews
'

# 実行
fit <- sem(model1, data=dat2, mimic="EQS")

# 出力
summary(fit, fit.measures=TRUE, standardize = TRUE)


※lavaanパッケージの注意
①変数名は英数字のみ
②誤差変数は書く必要なし(例:x1~~x1みたいなやつ)


あと、引数について。

std.lv=TRUE : パラメータを標準化
mimic="EQS" : よくわからんないけど、これをやるとsemやAMOSの出力と一緒になる
fit.measures=TRUE : カイ2乗統計量以外も出力する
standardize=TRUE  : 標準化したパラメータも出力する


あ、あと他のWEBページに「qgraph」パッケージを使うと
グラフが出力できるってかいてあったんだけど、
どうも今qgraph内で使うReadImagesっていうパッケージがCRANにないらしく、
パッケージを読み込むことができない。

だからgraphvizってやつを使いけどまだ、勉強中。
Rgraphvizっていうパッケージでうごくっぽい。



参考
Rで共分散構造分析 {lavaan}パッケージ編 #rstatsj - 極めて個人的なメモ
scratch-R: factor analysis
http://www.ec.kansai-u.ac.jp/user/arakit/documents/lavaanPackageVer0.5-12.pdf
Rgraphvizのインストール | myscratchpad
Graphviz - Graph Visualization Software
http://www.okada.jp.org/RWiki/?R%A4%C7%B6%A6%CA%AC%BB%B6%B9%BD%C2%A4%CA%AC%C0%CF%A1%A6%B9%BD%C2%A4%CA%FD%C4%F8%BC%B0%A5%E2%A5%C7%A5%EB

共分散構造分析

共分散構造分析をやってみた。

ツールはRAMOS

  • AMOS

student版(AMOS5.0)が無料でダウンロードできるため使用。
使い方は以下を参照。
心理データ解析第10回(2)

だけど、student版はパスが54本までしか解析できない。
あと観測変数が8変数までしか使えない。

よって今回はAMOS断念。

  • R

1.semパッケージ

使い方は以下を参照。
R言語で構造方程式モデリング その1 - yokkunsの日記
http://www.kagitaku.com/diary/2011/01/31/sem-by-r.html
RでSEM(共分散構造分析/構造方程式モデリング)3 - 極めて個人的なメモ
http://www.okada.jp.org/RWiki/?R%A4%C7%B6%A6%CA%AC%BB%B6%B9%BD%C2%A4%CA%AC%C0%CF%A1%A6%B9%BD%C2%A4%CA%FD%C4%F8%BC%B0%A5%E2%A5%C7%A5%EB
http://wwwhum.meijo-u.ac.jp/labs/hh002/r/content/sem.html

ただ、モデルの書き方がどうもダメらしく
下記のようなエラーが出た。

> TEST.sem <- sem( model5, cor.d, smp.nm)
以下にエラー solve.default(C[ind, ind]) :
Lapack routine dgesv: 線形方程式系は正確に特異です

参考にしたURL
sem研究(3)線形方程式系は正確に特異です : 足軽日記

たぶん、どこかの因子を固定し忘れているんだと思うんだけど…
いろいろいじっても、エラーが消えない。
なぜ。