2015年12月5日土曜日

Rコマンダー(R commander)のインストール

RにRコマンダー(R commander)追加してみる話。

参考:http://plaza.umin.ac.jp/~takeshou/R/Rcmdrinst.htmlhttp://cse.niaes.affrc.go.jp/miwa/ja/R/setupReasy/

Rを起動し、「パッケージ」メニューから「パッケージのインストール」選択。


CRAN表示で一番下の(HTTP mirrors)選択。その後Japan(Tokyo)選択。



Rcmd選択。

 

Would you like to use a personal library instead? 表示で「はい」を選択。

 

Would you like to create a personal library 'C:\.....' to install package into? 表示で「はい」を選択。(デフォルトでログインユーザの中のDocuments/R……が選択されている。)
 




library(Rcmdr)コマンド実行。

 > library(Rcmdr)
 要求されたパッケージ splines をロード中です
 要求されたパッケージ RcmdrMisc をロード中です
 要求されたパッケージ car をロード中です
Error in loadNamespace(j <- i[[1L]], c(lib.loc, .libPaths()), versionCheck = vI[[j]]) :
   ‘minqa’ という名前のパッケージはありません
 エラー:  パッケージ ‘car’ をロードできま



のエラーが出て起動しない。
 

(管理者として実行してもNGだった。)



minqaパッケージを、Rcmdパッケージをインストールしたときと同様に、追加インストールする。

 






 再度library(Rcmdr)コマンドを実行する。不足するライブラリをインストールしろダイアログが出るので「はい」選択。再度CRANかローカルか問われるのでCRAN(デフォルト)で「はい」選択。




 終了後、勝手になんか起動した。
 http://plaza.umin.ac.jp/~takeshou/R/Rcmdrfirst.html によると、Rの起動用リンクを『"c:/<省略>/Rgui.exe" R_DEFAULT_PACKAGES="Rcmdr"』に変更すると、自動的にRコマンダーが起動するようになるらしい。(未確認)


2015年11月28日土曜日

kisnetサイトを使ってクラスター分析用のRスクリプトを準備する

手っ取り早くR言語を使いたい場合、Rの設定、インストールせずにWebブラウザ経由でRを使えるサイトがいくつかある。
R言語を直接書くスキルがすでにあったり、本やWebサイトの情報をもとにさっくり入力して試したいなら、
http://pbil.univ-lyon1.fr/Rweb/index.html
が便利。
ブラウザのテキストエリアに入力してSubmit押すだけですぐに試すことができるし、グラフとか描けたりも。

 


Rの環境はすでに手元にある場合に手っ取り早くクラスタ分析したいがRに不慣れな場合、
http://www.kisnet.or.jp/nappa/software/star/mva/cluster.htm#
のサイトを使うと、Excelのデータをすぐにクラスタ分析にかけるためのRのスクリプトを作ることができる。
(Windows7 64bitにRインストールする方法については、http://techinfo4dog.blogspot.jp/2015/11/windows7r.html など参照。)










Excelで元データを準備する。
人名と数値データがいくつかあるような場合のデータだと、縦に人名が来て、行方向に数値が並ぶように作る。






ブラウザで「http://www.kisnet.or.jp/nappa/software/star/mva/cluster.htm#」を開く。
ここでは人名が3人、データが6つあるので、「参加者数」に3、「変数の個数に6、Excel内に人名があるので「成員名あり」は「はい」(デフォルトは「はい」)を選択する。






表の下にあるテキストボックスをクリックすると大きくなる。そこにExcelからコピーしてそのまま貼り付ける。




 


貼り付けた後、テキストボックスの右にある「代入」を押す。
すると自動的に上のテーブルに値が入る。
適当に設定(ここではデフォルト)し、「計算」ボタンを押すと、下のテキストボックスに結果やRコマンドが表示される。






後は手順に従って実施する。(事前にRインストールし、コンソールを起動しておく。)








コピー&ペーストを繰り返すと、クラスタ分析のデンドログラム登場。








 




 


 


もう一度行う場合には、Rの「編集」画面の「コンソール消去」を行う。



Windows7にRインストール




以下、Windows7(64bit)にRをインストールする方法のメモ。(2015年11月時点で。)

参考:http://cse.niaes.affrc.go.jp/miwa/ja/R/setupReasy/ (←2016/6/25時点でリンク切れ)

http://cran.r-project.org/ の「Download R for Windows」→「base」→「Download R 3.2.2 for Windows」をクリックする。





 



R-3.2.2-Win.exeのダウンロードが開始される。(62.3MB)

 

ダウンロードされるので、ダブルクリックしてインストール開始する。

インストール中に利用する言語を選択する。(ここではデフォルトのまま。)

 

 重要事項を読む。
 


インストール先を指定する。(デフォルトはC:\Program Files\R\R-3.2.2)

 

 コンポーネントを選択する。ここでは「64-bit利用者向けインストール」を選択する。(自動的に32-bitFilesのチェックが外れる。)

 

起動時オプションで、「はい(カスタマイズする)」を選択する。(デフォルトは「いいえ」)

 

表示モードで、「SDI(複数のウィンドウを使用して表示)」を選択する。(デフォルトは「MDI(Rをひとつの大きなウィンドウで表示)」。)
 


ヘルプの表示方法で「HTMLヘルプ」を選択する。(デフォルトはHTMLヘルプ。)

 

プログラムグループを指定する。(デフォルトはR。)

 

 追加タスクを選択する。ここではデフォルトのままで、デスクトップアイコン作成、バージョンをレジストリ保存、Rを拡張子.RDataに関連付ける、にチェック。クイック起動アイコンを作成、はチェック入れない。

 

インストール完了後、Windowsメニューにメニューができており、選択すると起動する。
 



 

2015年11月9日月曜日

セミナー「Neo4j 説明会(『グラフデータベース』著者 Jim Webber氏 緊急来日) 」


Neo4j説明会に参加した。Neo4jイベントはほぼ毎回参加している。


【Neo4jユーザグループからのお知らせ(案浦氏(あんのうら氏))】

現在Connpassに334人、meetupに133人。
2.3はMacでもインストーラ追加。
オープンソースカンファレンスにいくつか参加している。
GraphConnectEurope2016は2016/4/26@ロンドン。


【Jim Webber氏講演 グラフ型データベースの導入事例について】

Neo4j in Fraud Detection and Finance。つまんない業界にどうNeo4jが入っていくか、について。

○First-Party Fraud

犯罪者当人が自分の不正アカウントで不正をすること。クレジットカードを普通に使ってlimitを上げていき、大きな買い物をして姿を消す手口。最近シンジゲート化している。
実際に存在する電話番号、住所を使ってクレジットカードを作る。実在するので不正だと分かりにくい。
今までの不正検知は二次元。今までにない行為をすると不正と疑われる。その方法だとこのようなシンジゲートに対応できない。そこで、電話番号、住所を共用しているリングを探していく。
例えば、A氏の電話番号とB氏が同じで、B氏の住所をC氏が共有し、C氏の電話をD氏が……。データ自体には問題がないが関係に問題がある、を見つける。
5163人中40人の不正を見つけるのに2495ms。


○Whiplash(交通事故のむち打ち)

交通事故の被害者になるとお金になる、をビジネスにする。組織的に犯罪行為にするシンジゲートが多発している。複数の人間がチームになり、医者、弁護士ともグルになる。犯罪の金額も大きく、自動車保険の半分はこの犯罪に消えていく感じ。
 目撃者が複数の事件に関わっているものを洗い出す。その目撃者が絡んでいる人を洗い出す。

 
○Identity Management

IDマネージメント。Online Payments Fraud。IDとパスワードを使うシステムの脆弱性。Etsy(工芸品を扱うサイト)の事例。ID、パスワードだけではなく、IP、デバイス、場所、支払方法等が絡む。各ファクターに重みづけをする。ID、パスワードは100%として、IPには80%、デバイスはxx%、のように重みづけしてスコア化。たとえばある個人が場所を移動して違うデバイスで違うIPアドレスで、はOK。複数の人間が絡んだリングを見つける。二人が同じクレジットカードを使うのはおかしいので不正である可能性が高い。ただしIPアドレスを共有している場合は除外、等。(家族で同じクレジットカードを使っているかも。)
ガートナーが不正のレイヤーを定義している。Layer1は個人、Layer5はシンジゲート。


○Master Data

マスタデータ管理。企業の中で持っている様々なDB、アプリケーションを統合したい。Adidas、Pitney Bowes、ICE等に事例あり。
ICEはイギリスの会社。オンライントレーダ向けのソーシャルネットワークサービス。Tradic Closure(三角関係)。A氏とB氏が友達、A氏とC氏が友達なら、B氏、C氏も友人になりうる可能性が高いのと同じ考えで、トレーダのトライアングルを探すレコメンデーション。Tradic Closure Predict WW1。第一次世界大戦で、6か国が二つに分かれた理屈も合わせて参照。(http://yowconference.com.au/slides/yow2013/Webber-ALittleGraphTheoryforDevelopers.pdf P.35の図)


○Governance

ある企業に対して複数の人間が金を流しており、その金の元が特定のアカウント(HSBC)を介している不正を、とあるジャーナリストが見つけた事例。(税金逃れのパターン。)ジャーナリストはNeo4jを使って検知したと発表。Neo4jに対してHSBCから文句が出たが、逆に「これは銀行内で見つけるべきだろ」とコンサルに発展した。


【GraphConnect@San Francisco2015報告@鈴木いっぺい氏】

Emil Eifremから説明があった。
NeoTechnologyは15年前(2001年)から。NoSQL系では古く、ヨーロッパで設立されたのは珍しいパターン。
Forrester予測だと「2017年に25%のEnterprise企業がグラフDBを使うだろう」とされている。
Gartnerによると「グラフ分析は企業の競合力を高めるもっとも有効な技術、2018年終わりまでには70%の主要企業がグラフデータベースを利用したプロジェクトを採用していると予測」。
グラフデータベースはビックデータカテゴリで最も成長している技術と言われる(他のデータベースに比べ)。
Google、Linked in、PayPalなどはグラフ型をキー技術として採用しているし、Walmart、Cisco、UBSのようなレガシー企業も積極的に採用している。

○スタートアップ
年商三億以下、従業員20人以下の企業ではEnterprise版無料。

○3.0
2.x系は2.3で終了。その後は3.x系へ。ebayによるとMySQLソリューションの1000倍の性能、コード量は1/10-1/100へ。
2.2から2.3はホースの水から滝になったと言われるが、各Versionによって中でかなりの修正がかかっている。2.1がMMIOだったのを2.2ではPage Cacheへ、2.3ではさらに速度10倍。完全Off-Heapキャッシュ。
dockerをサポート対象にしたのも大きなインパクト。IBMのPower8とも共同開発し、大規模メモリサーバの性能を生かせるように。
  • 0.x Embedded Java API
  • 1.x AREST
  • 2.x Cypher採用
  • 3.x いくつか呼び方があり、表記方法が異なっていたのを、統一言語ドライバへ(主要言語に対して標準ドライバを提供、コンセプト統一、Javaストアドプロシージャ、高性能ワイヤプロトコルBalt、……)。openCypher(Cypherをオープンソース化してベンダ非依存へ。かつてSQL文が統一化されたような感じ。すでにSparkが採用を発表)。Oracleのグラフ型DB(スペーシャル?)もOpenCypherを採用することを表明。tableau等もサポート予定。

これまではデータの時代だったが、これからはコネクションの時代。IoTの世界。202年には500-750億個のデバイスが相互につながっていると言われる。データをどうモデル化するかだけではなく、関連性が重要に。関連性に付加価値を。500億~は人間の脳細胞と同じで、脳のシナプスのような感じにNeo4jが進むのでは。


【Cypherクエリ本@安田氏】


インプレス社からCypherクエリ本が発表された。2160円。Kindle版もあり。著者は李氏@クリエーションライン。
クリエーションライン社では導入コンサルや有償版販売を行っている。導入事例やNeo4j説明もサイトに掲載されているほか、その他技術情報も充実している。(http://www.creationline.com/lab/neo4j


【Neo4j本@長瀬氏】

リックテレコム社から1月ごろNeo4j本発売予定。原稿はもう上がっている。グラフ型DBの入門本。売れれば技術詳細本も出るかもw
グラフ構造をどう作るとどう便利か、あたりの話をユーザグループで発表したり勉強したり等したいと考え中。

2015年10月11日日曜日

「polyglot persistence」(ポリグロットパーシステンス、複数データベースの最適活用)とは

Learning Neo4j本(Packet Publishing社が出していて現在Neo4j公式サイトから無料DLできる)の第9章に、

「Very often, users will want to use the Neo4j Graph Database as part of a solution that uses a polyglot persistence strategy.」

との記述がある。
さて、Polyglot Persistenceとは何か。
各単語を単純に訳すと、

*polyglot:数か国語に通じている、数か国語を話す、数か国語で書かれた(http://ejje.weblio.jp/content/polyglot
*persistence:持続性(http://ejje.weblio.jp/content/persistence

となる。
下記のサイト群を参考にすると、

*リレーショナルデータベースですべてが解決していた時代は終わり、現在NoSQLが台頭してきている。問題に対して一つのモデル(データベース、データストレージ)だけで解決するのは難しく、複数のモデルをアプリの目指すところや取り扱うデータに合わせて使い分ける必要がある。
*様々な問題を解決するためには、各問題解決に適した言語が使われている(polyglot programming)。データベースも同様である。

つまりpolyglot persistence、訳すなら、「複数データベースの最適活用」という感じで良いのかな。

「Very often, users will want to use the Neo4j Graph Database as part of a solution that uses a polyglot persistence strategy.」→「大抵、複数データベースの最適活用戦略の一部としてグラフ型データベースNeo4jが使われます。」



**********以下、出典*************


www.slideshare.net

*polyglot:Adjective:Knowing or using several language(数か国語を知っているか使っている)
*persistence:Noun:The continued or prolonged existence of something(何かの存在を続けているか延長している)
    →Polyglot Persistence:The continued or prolonged existence of something using several languages(数か国語を使う何かを続けているか延長している)
        languages→databases。
    「Polyglot Persistence, like polyglot programming, is all about choosing the right persistence option for the task at hand」by Scott Leberknight, Octoer, 2008(http://www.nearinfinity.com/blogs/scott_leberknight/polyglot_persistence.html ←2015/10/11時点でリンク切れ)(ポリグロットパーシステンスとは、ポリグロットプログラミングのように、タスクのために正しい永続化オプションを将来的に選択することである)



www.slideshare.net

    リレーショナルデータベースの黄金期とNoSQLの台頭。CAP定理。ACID特性とBASE特性。NoSQLの種類。どれを選択するか(Data、Access Patterns、CAP。追加でMaturity(成熟度合)、Stability、Maintainability、Durability、Cost、Tools、Familiarity)、……について書かれている。
    P.46
*Enterprise application are complex and combine complex problems(エンタープライズアプリケーションは複雑で、複雑な問題を併せ持つ)
            -Assumption that we should use one data store is absurd(一つのデータストアを使うべき、という仮定は不合理)
            -You can't try to fit all in one model and expect no problem(一つのモデルにすべてを適用し、問題が出ないようにすることはできない)
*To leverage multiple data storages, based on the way data is used by the application.(アプリケーションからの使用方法に基づいて複数のデータストレージを活用する)
            -Associated with learning curve(学習曲線に関連付けられる)
            -Long term investment (More productive in the long-run)(長期でより生産的な長期投資)
 *Leverage the strength of multiple data stores(複数のデータストアの強みを活用)

www.jamesserra.com

    eコマースでどのようなデータがあり、各データに対してどのようなデータベースタイプが良いか(ファイナンシャルデータならRDBMS、ユーザのセッションならKey-Value、レコメンデーション(推奨)にはGraph、ショッピングカートや商品カタログならDocument……)表がある。