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

でたぁっ 感動と失敗の備忘録

データ解析を担当することになったサラリーマンの備忘録

ShinyServerで引数をURLから与える

R

 ShinyServerはクライアントにR環境がなくてもRプログラムをWEBアプリ化することができる。分析などに条件が必要な場合は一般的にui.Rに記述するが、URLに引数として与えることも出来るので他のWEBアプリとの連携も可能みたいだ。このようにGETパラメータ的な実行が可能。

http://xxx.xxx.xxx.xxx:3838/appname/?args1=aaa&args2=bbb&args3=ccc

チュートリアルではこちらに記載されている。

ポイント

 出力部になるserver.Rに記述するshinyServer関数にsessionという引数を追加する。session$clientData$url_searchで受け取り、parseQueryString関数でパースすることが出来る。あとは、その引数に応じたプログラムを実行し結果を出力すれば良い。

shinyServer(function(input, output, session) {
  # Parse the GET query string
  output$queryText <- renderText({
    query <- parseQueryString(session$clientData$url_search)

    # Return a string with key-value pairs
    paste(names(query), query, sep = "=", collapse=", ")
  })
})

 parseQueryString関数はshinyパッケージに存在する。ShinyServerがなくても確認可能。

> library(shiny)
> query <- parseQueryString('?args1=aaa&args2=bbb&args3=ccc')
> str(query)
List of 3
 $ args1: chr "aaa"
 $ args2: chr "bbb"
 $ args3: chr "ccc"
> query
$args1
[1] "aaa"

$args2
[1] "bbb"

$args3
[1] "ccc"

> 

k-meansの分類数などを引数にして可視化してみた

 irisデータを使用。引数はcenters、iter.max、nstartのk-meansのパラメータ3つ。実行はこんな感じになる。

http://xxx.xxx.xxx.xxx:3838/appname/?k=3&im=100&ns=1000

準備するRコードはこの通り。※テキストとグラフの2つを出力

ui.R

shinyUI(bootstrapPage(

  h3("Parsed query string"),
  verbatimTextOutput("queryText"),

  h3("Plot"),
  plotOutput("Plot")

))


server.R

shinyServer(function(input, output, session) {

  output$queryText <- renderText({
    query <- parseQueryString(session$clientData$url_search)
    paste(names(query), query, sep = "=", collapse=", ")
  })

  output$Plot <- renderPlot({
    query <- parseQueryString(session$clientData$url_search)
    cl <- kmeans(iris[,1:4], centers=as.numeric(query$k), iter.max=as.numeric(query$im), nstart=as.numeric(query$ns))
    plot(iris[,1:4], col=cl$cluster)
  })

})

f:id:deta:20140416074806p:plain

複数verのRuby環境構築のメモ

Ruby

 UNIX系の場合はRVM(Ruby Version Manager)を使うと複数のRuby環境を構築することが出来るが私のPCはWin7。Win環境の場合はpikで簡単に構築することが出来る。

pikのインストール

gem install pik
pik_install "C:\ruby\pik"

インストールしたpikのバージョン確認

C:\ruby\pik\pik -v
pik 0.2.8

インストールした後はパスを通しておくと良い。

追加するRubyをインストールする

 追加したいバージョンのRubyをインストールする。

pikに追加する

pik add C:\Ruby200-x64\bin

pikに存在する環境を確認する

pik list
* 187: ruby 1.8.7 (2010-12-23 patchlevel 330) [i386-mswin32]
  193: ruby 1.9.3p545 (2014-02-24) [i386-mingw32]
  200: ruby 2.0.0p451 (2014-02-24) [x64-mingw32]

環境を変更する

pik sw 193
pik list
  187: ruby 1.8.7 (2010-12-23 patchlevel 330) [i386-mswin32]
* 193: ruby 1.9.3p545 (2014-02-24) [i386-mingw32]
  200: ruby 2.0.0p451 (2014-02-24) [x64-mingw32]

変更した環境は、ターミナル終了時に戻ってしまうので注意。

環境を削除する

pik uninstall ruby -v 200
pik 0.2.8
Are you sure you'd like to uninstall '200: ruby 2.0.0p451 (2014-02-24) [x64-mingw32]'?  |yes|
yes
** Deleting C:\Ruby200-x64

200: ruby 2.0.0p451 (2014-02-24) [x64-mingw32] has been uninstalled.

プロキシ環境でRを使うときのメモ

R

 職場でRを使っているとパッケージのインストールなどプロキシ環境に悩まされることがある。
企業に多そうなWin7 32bit/64bit環境の話。Macは持っていないので分かりません。

パッケージのインストール

 一般的にはコンソールで下記コマンドを実行する。

Sys.setenv("http_proxy"="http://xxx.xxx.xxx.xxx:8080")
options(repos=local({ r <- getOption("repos"); r["CRAN"] <- "http://cran.ism.ac.jp"; r }))
install.packages("パッケージ名")

下記のようなプロキシの認証画面が出たらユーザーIDとパスワードを入力する。
f:id:deta:20140401221857p:plain
2行目のミラーサイトリポジトリ統計数理研究所、これは各自の任意。リポジトリはあらかじめファイルに記述しておけば起動時に読み込まれるので省略可。私の場合は、etc/Rprofile.site を修正した。
次のコマンドでプロキシとリポジトリは確認できる。

Sys.getenv("http_proxy")
getOption("repos")

Windows環境変数に設定してます

 プロキシ環境でしか使わないのであれば環境変数に設定するってのもありです。
[コントロールパネル]-[システム]-[システムの詳細設定]-[環境変数] ユーザー環境変数に、

変数名:http_proxy
変数値:http://xxx.xxx.xxx.xxx:8080

みたいに設定している。
また、Rでは関係なさそうだがプロキシのユーザーIDとパスワードも設定している。

変数名:http_proxy_user
変数値:ユーザーID

変数名:http_proxy_pass
変数値:パスワード

設定しておくとRubyでgem installをプロキシ環境で行うときに有効?よく理解していないが設定している。

install_github を使ってインストールする場合

 rChartsなどCRANになく、install_githubでンストール場合は下記のように行う。

library(devtools)
library(httr)
set_config(use_proxy(url="http://xxx.xxx.xxx.xxx", port=8080, username="ユーザーID", password="パスワード"))
install_github('rCharts', 'ramnathv')

{devtools}、{httr}ともにhadley氏の素晴らしいパッケージ。
また、{httr}にあるGET関数でWEBページを取得する場合はこのようにする。

library(httr)
GET("http://xxxx", c(use_proxy(url="http://xxx.xxx.xxx.xxx", port=8080, username="ユーザーID", password="パスワード")))

または、

library(httr)
set_config(use_proxy(url="http://xxx.xxx.xxx.xxx", port=8080, username="ユーザーID", password="パスワード"))
GET("http://xxxx")

Tableauハンズオンセミナーに参加してきた

BI Tableau R

 Tableau.Japan社主催のハンズオンセミナーに参加してきた。参加したのは入門編R連携速習コースの2つ。会場はTableau.Japan社がある帝国ホテル東京の15階。両セミナーとも実質2時間ないので、さわれるレベルになる内容。なので紹介できる内容もたいしたことない。

Tableauとは

 Tableau(タブロー)は有料のBIツール。Tableau社はスタンフォード大学の研究室からスピンアウトするかたちで2003年に創設された。米国防総省から資金援助を受けるかたちで1997年に研究が始まり、2003年にChris Stolte氏、Pat Hanrahan氏、Christian Chabot氏の3名で起業。コンピューターグラフィックスの博士号を持つPat Hanrahan氏は、モンスターズインクなどを製作したPixar Animation Studiosの設立メンバーでもあり、過去にはアカデミー賞を2度受賞。Tableau社のトップページにある「さらに詳しく」をクリックすると動画(YouTube)で操作イメージなどを見ることが出来る。

製品群

  • Desktop 2種類ある。様々なDB接続が行えるProfessionalとLocalマシンのみで使うPersonal。 
  • Server Webブラウザでの編集や、他デバイスと連携が出来る。
  • Online クラウドで使う場合のServerのホスト型バージョン。
  • Reader Desktopで作成された結果を共有・表示することができる。無料。
  • Public 分析結果を公開したり見ることができる。また公開されている分析内容のTableauファイル(拡張子twbxファイル)はダウンロードすることも出来る。

バージョン8.1の追加機能

 11月末にバージョンが8.1にアップデートされRとの連携が可能になった。他にも様々な機能が追加されている。追加機能はこちら

評価版をインストールする

 評価版は2週間無料で使用出来る。Desktop、Server、Onlineの3種類について用意されている。今回はDesktop版を試す。筆者のOSはWindows7、仮想環境でも動作するらしい。
 Tableauのホームページに入り、画面右上にある評価版ダウンロードをクリックする。画面下のほうにあるDesktopの「ダウンロード」をクリックすると、画面が遷移し32ビット版がダウンロードされる。64ビット版は、遷移後のページ上部に「64-bitバージョンのダウンロード」を再度クリックする。ダウンロードしたインストールファイルを実行するとインストールが始まる。インストールしたら、アイコンからTablear8.1を起動すると使用を開始するかの確認画面が出る。
f:id:deta:20131212052956p:plain
 開始する場合は、「今すぐ試用を開始する」をクリックする。次に必要事項を入力し登録を行う。

さっそく試す

 インストールすると、「マイ Tableau リポジトリ」というフォルダが作成され、そこにサンプルファイルが入っている。私のWin7の場合はドキュメントフォルダーに作成されていた。そのフォルダーの中に、エクセルとアクセスのサンプルファイルが保存されている。セミナーでは日本人向けに準備してくれたデータがあり今回はそのデータを使い機能概要を紹介させて頂く。(日本人向けとは、項目やデータが日本語化されている。地図表示した際に日本地図が対象になるように都道府県や市町村が日本の地域になっている点など)

 Tableauを起動するとメイン画面は表示される。まずは「データに接続」を行う。
f:id:deta:20131212053219p:plain
 接続するデータソースを選択する画面になる。上部の赤で囲んだソース群はエクセルやアクセスなど、下部の青で囲んだソース群は各種データベース接続やサービス(Google Analyticsなど)。今回はエクセルになるので上部の赤で囲んだ部分からMicrosoft Excelをクリックし、該当するファイルを選択する。
f:id:deta:20131212053736p:plain
 エクセルを選択するとデータとして取込むワークシートを選択し、OKをクリックする。
f:id:deta:20131212054116p:plain
 データの接続形式は3種類ある。今回は「ライブで接続する」を選択(クリック)する。データのボリュームや用途に応じて考えればよいとのこと。
f:id:deta:20131212054401p:plain
 データが読み込まれるとそれぞれのデータ型を判別し、データの属性に該当するディメンジョン項目と、値に該当するメジャー項目に選別される。自動選別された結果は後から変更することも可能。データを表示するにはディメンジョンやメジャーを画面中央にドロップすればよい。行と列とページに表示する内容をそれぞれドロップしていくと自動的に集計が行われグラフが表示される。グラフの種類は表示形式で変更することが出来る。マークというツールにある色や形などに属性や値をドロップするとその内容がグラフに反映される。エクセルのピボットテーブルをものすごく便利にした感じ。動画(YouTube)を見れば操作イメージをつかめるかもしれない。また、表示された結果(グラフ)を見ながら項目を括る、削除する、並びを変える、レンジに背景色をつける。など様々な機能が存在する。
f:id:deta:20131212084018p:plain
f:id:deta:20131212084933p:plain
 ディメンションに県や市町村がある場合には地図として表示することも出来る。項目を右クリックして地理的役割から該当する役割を選択すれば県名項目を緯度経度として扱うことが出来きる。県の場合は州を選択するとのこと。左上のページ部分に日時タイプのディメンションをドロップすると、継時変化をアニメーションとして見ることも出来るので、地図上で変化するさまを確認できたりする。セミナー参加者には台風の経路の変化を作っている人もいた。
f:id:deta:20131212090747p:plain
 いくつか確認した結果は1つの画面に集約することが出来る。ダッシュボード機能。①ダッシュボードシートを新規に開き、②集約したい結果をダッシュボード画面にドロップすれば良い。右上のボタンはプレゼンテーション機能。複数の結果はともに連動しているので、ダッシュボード上でデータを深く確認することも出来る。
f:id:deta:20131212093400p:plain

Rとの連携その1(R側の準備)

 TableauでR連携を行うには、Rserveとplyrパッケージのインストールが必要。インストール後はRで次のコマンドを実行する

> Sys.setenv(LANGUAGE="en") # 日本語のエラーメッセージの文字化けを防ぐ ※英語化する
> library(Rserve)
> Rserve() #Rserveの起動
Starting Rserve...

Starting Rserve...と表示されたらOK。Rは最小化しておけばよい。

Rとの連携その2(Tableau側の準備)

 Tableauを起動する。ヘルプ→言語とパフォーマンス→R接続の管理をクリックする。サーバーとポートを入力・確認し、テスト接続をクリックする。問題なければRserveサービスに正常に接続されました。といったメッセージが表示される。正常ならOKをクリックする。
f:id:deta:20131213050857p:plain

R連携 サンプルファイルを試す

 Tableau社のページにR連携の紹介やirisデータを使ったk-meansのサンプルファイルのダウンロードがあるので、そのファイル(r_kmeans.twbx)をダウンロードする。ダウンロードしたファイルを起動すればサンプルが起動する。スクリプトを実行するかといったメッセージは「はい」をクリックする。
f:id:deta:20131212092622p:plain
これがR連携のサンプルを起動した画面。
f:id:deta:20131212092631p:plain
実際にはClustersというメジャーがR+kmeansで3つに分類した結果が格納されるように定義されているとのこと。Clustersを右クリックし編集を選択するとコードを確認することが出来る。
f:id:deta:20131212094036p:plain
Tableauでのコードはこんな書き方

SCRIPT_INT(
'
set.seed(42);
result <- kmeans(data.frame(.arg1,.arg2,.arg3,.arg4), 3);
result$cluster;
', 
SUM([Petal length]), SUM([Petal width]),SUM([Sepal length]),SUM([Sepal width])
)

4つの変数をdara.frameで渡している。その引数にはそれぞれSUM([xxx xxx])が対応する。この場合SUMに集計をするという意味はなくこのように記述しなければいけないので...ということ。メジャーに対しR連携コードを書くことになるので、例えば主成分分析などの2軸をとってくる場合には、軸1、軸2のそれぞれでRコードが動くことになるとのこと。また、デバッグも良い方法がなさそうな感じ。R接続に関するオンラインマニュアルはこちら

チュートリアルなど

 TableauのWEBページにはトレーニングとチュートリアルがある。On Demandでトレーニングすることが出来る。Introのほか、Advanced、Ahart Types、Server が準備されている。動画はMP4形式のファイルをダウンロード可能。他に、クイックスタートガイドオンラインヘルプナレッジベースなども準備されている。講師からのおすすめは、「team geiger」をgoogleで検索してとのこと。多くのサンプルがありダウンロードも出来る。リバースエンジニアに最適とのこと。

個人的な評価

 最近のBIツールは進化してますね。インメモリでカラムナ型のDBをSQLで集計しているようだ。サンプルデータではレスポンスも良好。サクサク動いた。私はSQLで集計することが多く、くくり項目があったり並べ替えを考慮しなくてはいけないことが多いので思わずほしくなってしまった。

このような方におすすめ
  • RDBなどに構造データがあり、Excelでピボットテーブルやフィルターで集計しグラフを作成するような業務担当者。
  • データが定期的に更新され、その結果を共有したりするようなダッシュボード的機能が必要な部署や人。
  • 分析を行いたいがプログラミング開発者が内部にいない(不足している)部署。
  • BIツールその操作方法の習得を困難だと感じない人やそのような雰囲気のある部署。など
Rとの連携に関して

 現段階のR連携はR使いの方には必要性をあまり感じませんでした。便利なパッケージ群(ggplot2やshinyなど)を使い必要な機能を作っちゃうと思います。使う場合でもそれぞれの特徴を生かした使い分けになるのではないかと...連携は今後に期待。

NodeXLを使ったお手軽ネットワーク分析メモ

ネットワーク分析 Excel

 NodeXL は Excel で行うことができるオープンソースのネットワーク分析テンプレート。Excel ワークシートにエッジリストを入力したりコピペすることで簡単にネットワーク図を描くことができる。また、ノードの形状には画像を選択することができ、画像ベースのネットワーク図を描くことも出来る。画像はファイルの場所を指定するだけでよい。URL を指定すれば WEB 上の画像も表示出来る。具体的な図はこんな感じ。※NodeXL Graph Gallery も参考になる。
f:id:deta:20131018211452p:plain
 このネットワーク図は7月に開催された第32回R勉強会@東京で発表したAmazonで販売されている酒類のレコメンド関係のネットワーク図に使用したデータを使い描いたものである。(その際の資料を紹介した記事はこちら
 商品画像は Ruby+Mechanize でクロールして jpg ファイルをダウンロードしたものを使用した。(WEB画像のダウンロードに関する記事はこちら

 NodeXL を使う前までは R+igraph でネットワーク分析を行い、Cytoscape を使って作図して画像ファイルとしてネットワーク図を出力、その後パワポに挿入してから別途ノードを意味する画像を貼り付けていた。実は分析よりもこの資料作りの方が時間を多く使ってしまっていることもある。分析したネットワーク図は Excel ファイルなので事業に携わる様々な部署の関係者と共有することが容易になると思う。

NodeXLのインストールと起動

 NodeXL は Excel2007 以降が必要、NodeXLダウンロードページ で zip ファイルをダウンロードして解凍する。Setup.exe があるので実行するとインストールすることが出来る。起動は、スタート -> NodeXL -> NodeXL Excel Template をクリックする。

f:id:deta:20131018215824p:plain

Excel が起動しリボン部分に NodeXL タブが追加されている。シートには Edges、Vertices、Groups などが用意されている。Excel を普通に起動した場合には、NodeXL は使用することができない。テンプレートから起動するか、テンプレートをもとに作成した Excel を開いた場合のみ NodeXL が有効になる。
f:id:deta:20131018220548p:plain

ネットワーク図の描画

 まずはエッジリストを描画してみる。Edges シートの列 Vertex 1、vertex 2 にエッジリストを入力またはコピペする。次に Refresh Graph をクリックするとネットワーク図が描画される。描いた後は、シートのエッジやノードを選択すると図が連動して選択部分の色が変わる。逆に図のエッジやノードを選択するとシートの該当データが選択されるので着目したいデータを確認しやすい。※この図のレイアウトは Circle を指定している。変更したい場合は Lyout のプルダウンで表示されるリストの中から選択すればよい。無向、有向は Type で指定する。
f:id:deta:20131018223526p:plain
1度図を描くとVerticesシートにノードリストが作成される。エッジ、ノードとも形状や色、大きさなどの指定は該当するセルに入力、コピペすれば設定することが出来る。セルを選択してリボン部分にある Visual Properties の Color、Vertex Shape、Edge Width などで選択してもよい。ノードを画像表示する場合は、Vertices シートの Shape 列を Image にして Image File 列に画像の参照先を指定する。Refresh Graph を再度クリックすれば画像ベースのネットワーク図が描ける。
f:id:deta:20131018225451p:plain
 ネットワーク図のウィンドウは Excel の外に移動することも出来る。ネットワーク図上部にある「ドキュメント アクション」と表示されたタイトル的部分をクリックしながら、Excelの外に移動すると独立させられる。戻す時は逆の手順。NodeXL に限った話ではないが、ネットワーク分析する時は大きなディスプレイ、可能なら複数画面必要ですね。

簡単な分析

 ネットワーク分析で私がよく使っているのが中心性指標とコミュニティ抽出。NodeXLで中心性指標を計算する場合は Analysis タブの Graph Metrics をクリックする。計算したい指標を選択し Calculate Metrics をクリックすると指標が計算され結果は該当するシートに反映される。計算された指標でのデータの並べ替えは Excel の機能で行うことが出来る。
 コミュニティ抽出は Analysis タブの Groups をクリックし Group by Cluster... をクリックする。3種類のアルゴリズムが表示されるので選択した OK をクリックする。抽出したコミュニティ結果は Groups、Group Vertices シートにその情報が反映されている。また、抽出したコミィニティーで区画を作り、ネットワーク図を描画する機能もある。Layout を選択するプルダウンから Layout Options...をクリックする。そして表示された画面の Layout Style を変更する。Intergroup edges は、区画間のエッジの表示方法を変えることが出来る。見やすいようにいろいろ試せば良い。
f:id:deta:20131018235706p:plain

エッジ・ノードの表示カスタマイズ

 ネットワーク図が表示されているウィンドウの Graph Options をクリックするとエッジの線をカーブさせたり、ノードラベルなどの表示に影をつけるなどの効果を与えることが出来る。
f:id:deta:20131019000812p:plainf:id:deta:20131019000928p:plain

ハマリポイント

 ノードに指定し表示されていた画像が、コミュニティ抽出後 RefreshGraph すると画像表示が解除されてしまう。これは、コミュニティ抽出後に反映される Groups シートの中の Vertex Shape が Disk になってしまう為のようだ。ノードの形状は、Groups の Vertex Shape が優先されるようである。Vertices シートで、個々のノードに形状を指定している時は、Groups シートの Vertex Shape は消去しておくか、Vertices シートと対応する Shape を指定する必要がある。

最後に

 他にも様々な機能があるがようだ。。。Import のプルダウンリストを見ると From Twitter User's Network... もあり、Twitter上のフォロー/フォロワー関係のネットワーク図も簡単に描ける。Twitter API でデータ連携しているようなので、フォローしている人数やフォロワーが多い場合は時間がかかる。(APIの制限)

 NodeXL、お手軽にネットワーク分析をする場合には便利なソフトだ。Excel VBA使ったり、R との 連携も出来るだろう。(連携する必要ないかもしれないけど) ということでもうちょっと使ってみる。本当は D3.js 使って作ってみようかと思ったんだけど。。。

Ruby + Mechanize でネット上の画像を保存する

Ruby

 業務でインターネット上にある画像ファイルを収集する必要があったので、Ruby + Mechanize を使い保存しまくった際のメモ。Mechanize はサーバにアクセスするための「Web ブラウザ」を表現するクラス。このクラスのオブジェクトを操作してウェブにアクセスできる。便利なライブラリの1つ。アマゾンで購入できる「データサイエンティスト養成読本」の画像を保存するRubyのコードは次の通り。※環境はWin7 32bit、Ruby1.9.3 p448、Mechanize2.7.2

# -*- encoding: Shift_JIS -*-
require 'rubygems'
require	'mechanize'

agent = Mechanize.new
agent.keep_alive = false
agent.max_history = 1
agent.open_timeout = 60
agent.read_timeout = 180

targetASIN = "4774158968" # ASINコード
targetURI = "http://amazon.jp/dp/" + targetASIN.chomp # URLの編集
puts targetURI

agent.get(targetURI) #webPageの取得

puts agent.page.search('title').inner_text # タイトル

src = agent.page.search('//*[@id="prodImage"]').at('img')['src'] # 商品画像
puts src
agent.get(src).save_as("./img/" + targetASIN.chomp + ".jpg") # 保存する

Mechanize をインストールしていない場合は

gem install mechanize


それぞれの部分の意味は次のとおり

agent = Mechanize.new
agent.keep_alive = false
agent.max_history = 1
agent.open_timeout = 60
agent.read_timeout = 180

Mechanizeインスタンスを作り、各種設定を行っておきます。
プロキシ環境の場合は次のコードを追加すれば良い

agent.set_proxy('アドレス',ポート,'ユーザーID','パスワード')


アマゾンの商品はASIN(Amazon Standard Identification Number)で管理されており商品ページは下記ルールで表示することができる。

http://www.amazon.jp/dp/4774158968/
http://www.amazon.jp/gp/product/4774158968/
http://www.amazon.jp/o/ASIN/4774158968/

http://amazon.jp/dp/4774158968/
http://amazon.jp/gp/product/4774158968/
http://amazon.jp/o/ASIN/4774158968/

したがってアクセスするURLは下記のようにした

targetASIN = "4774158968" # ASINコード
targetURI = "http://amazon.jp/dp/" + targetASIN.chomp # URLの編集
puts targetURI


指定したURLにアクセスする

agent.get(targetURI) #webPageの取得


保存する画像は、searchでxpathを指定し参照先のsrc(url)を取得する必要がある。最近のブラウザは要素確認できるからその機能を使えば簡単に把握できる。他にもさまざまな指定方法があり画像が複数ある場合には配列処理も可能。

src = agent.page.search('//*[@id="prodImage"]').at('img')['src'] # 商品画像
puts src


得たimgタグのsrc(url)を指定して保存を行う。この場合はカレントディレクトリにあるimgフォルダにASINコード.jpgで保存される。※すでに同一名のファイルがあった場合は勝手に連番が付加され保存される。

agent.get(src).save_as("./img/" + targetASIN.chomp + ".jpg") # 保存する


保存された画像はこちら
f:id:deta:20131009220237j:plain

あとは、例外(エラー)処理を追加したり工夫すればよい

最後に、API(Amazon Product Advertising API)でも ItemLookup などで画像参照先のURLを得ることができるが、実際にはURLを得ることができない商品が多いのでクロールして保存した方が良いと思う。

第32回R勉強会@東京で発表

R ネットワーク分析 Ruby

 7月20日(土)に開催された第32回R勉強会@東京で発表してきました。タイトルは「実践で学ぶネットワーク分析」、発表に使用した公開資料はこちら。記憶に残っているうちにメモ。

発表の経緯

 Rは2009年ぐらいから書籍などを参考に少しづつ使用。統計のバックグラウンドもないので本当OJTgoogle先生に聞くとヒットするR勉強会の資料に何度も助けられる。R勉強会@東京は主に土曜日に開催際されていたこともあり、なかなか参加できなかった。2013年に入り土曜日に時間がとれるようになったので4月の第30回の勉強会から参加。縁あって発表することになる。世界は本当にスモールワールドかも。

TLに流れたコメント 皆様どうもありがとうございました!

  • RとRubyの勉強会 RとRubyといえばもうすぐこんなセミナーがありますね JMRX勉強会【やさしく語る「RとRubyによるデータ解析入」】
  • Pythonでネットワーク分析 今話されているのはRのネットワーク分析ですがPythonでネットワーク分析という話もあります。目的に応じて使い分けると良い。
  • Hive Plot 毛玉(hair ball)は世界共有の悩みなのでこういう可視化もあります

本当にありがとうございました。コメント下さった方に感謝します!

所感

 ネットワーク分析を行ったことがある人、発表前に挙手してもらったけど結構少なかった。あまり使用・実践されてない感じ。また、いくつかの質問からネットワーク分析は何に使えるのか利用シーンがイメージできないのかもしれない。今回の発表で結構手軽に分析できそうだ!とか効果的な使い方のイメージを持ってもらえただろうか。。。(個人的にはコスパ良い分析という位置づけなんですけど)
 懇親会で意見交換では次のようなことを感じた。分析っていったらビッグデータ&機械学習!って思われているのかも。。。ビジネスへの貢献っていう意味ではネットワーク分析はありだと思う。とくにメーカーだと、事業戦略~商品開発~販促など様々な分野の多くの人と目線を合わせ協業していかなくてはいけなく、かかる時間も長い。ネットワーク分析(図)は目線合わせの為のキーチャートとしてもかなり使えると思う。(実際、幹部から担当まで同じ図を使ってもらってます)
 多くの人が言っていると思うが分析は結構どろくさく、キレ味の良い分析結果なんて年に何個も出てこない。結構当たり前の結果ばかり。場合によっては疲弊しちゃいそうになる。そんな時、可視化で糸口が見えてくることもありますよ。