データ分析

学習に便利なIBM Data Scientist Workbench

マインドテックの冨です。

先月、今月とWatson Summitやdatapalooza Tokyoに出てきて、IBM社のデータ処理系のツールなどを見てきましたが、BluemixからWatsonが手軽に利用できるようになったりと、同社のいう”Cognitive”な環境とともに、分析系のツールが展示されておりました。もっとも同社は著名な統計分析ツール”SPSS”やBIツール”Cognos”を買収したという経緯もあり、幅広い製品ポートフォリオを有しています。

そんな中で面白いと思ったのがタイトルにもつけた”Data Scientist Workbench”

https://datascientistworkbench.com/

データ分析に利用できるオープンソース系のツールを、統合的に利用できるようにしたサービスです。つらつらと触ってみていましたが、どうしてこれがナカナカ便利。特に学習用途には向いているなと思った次第です。

データ投入、データ整形、分析に必要なツールが揃っています。それぞれのツールの利用方法の詳細は、それぞれググってくださいませ。

Data Scientist Workbench

Data Scientist Workbench

 

 

 

 

 

 

 

データ投入:”MyData”

データファイルのアップローダーです。ディレクトリで階層管理する事もでき、アップロードしたデータファイルは各種分析ツールから利用することができます。また有名なiris.csvなどのデモ用データなども用意されていました。

データ整形:”Open Refine”

もともとはGoogleで開発されたGoogle Refineがベースで、2012年にオープンソース化されたデータクレンジングやデータ抽出、フォーマット変換を行うためのツールです。

Text, CSV, TSV, XML, RDF, JSONなどのデータフォーマットに対応し、データの前処理を行えます。

データ分析:R studio

分析用言語”R”を使い易くするためのIDE・統合開発環境です。コードのエディタの他、コンソールやグラフ表示なども併せて行う事が出来ます。またBig RやSparkなどとも連携しており、即時に利用可能です。

データ分析: Jupyter Notebook

“Notebook”というツールはあまり馴染みが無いかもしれませんが、いわゆる普通の作業記録のためのノートのデジタル版と言ってもいいでしょう。分析用の”Notebook”は登録したコマンドとその応答結果を記録し、再現性のある分析と文書化を行えるようにしたものです。

Jupyter Notebookは、もともとはpython用に開発されたIPythonをベースに2015にリリース。作業に関するコメントの他に、R, Python, Scalaのコードを書いて実行する事が出来ます。またグラフの描画も可能です。

また作成したノートは他の人と共有することができるため、作業記録の共有や分析方法のハンズオンなどに利用することもできそうです。

データ分析: Zeppelin Notebook

こちらもJupyter同様に、作業を記録するためのツールであり、2014年にASFインキュベーションプロダクトになりました。

Webブラウザからの操作で、Python, SQL, Scala, shellコマンドなどが利用できます。

これらのツールを利用するためには、まずは環境の準備を自前でやろうとすると、それだけで結構めんどうなのですが、サインアップすればすぐに利用できる環境というのは魅力的です。

そんなに使い込んでいないため、業務でバリバリ使えるのかは分かりませんが、少なくともお手軽にRやSpark、Pythonを利用した分析を学習するための環境としては非常に優れていると感じました。

残念なビッグデータの例

マインドテックの冨です。

ビッグデータブームも落ち着きをみせ、最近はIoTだ、FinTechだと、別のキーワードにトレンドが移っているようです。そんなこともあって、以前ほどは「データ分析、いぇい!」なシーンも減ってきているかと思いますが、特にIoTではリアルタイム計測~リアルタイム処理と分析の難易度が上がってきています。Apache Sparkだ!MQTTだ!とか、いろいろと聞こえてきます。そんな中でもデータ処理関連のご相談を時々受けるのですが、少しヒアリング&サンプルを見せて頂くと、「これはシンドイなあ・・・」と思う案件がいくつかございます。(知人では「データ分析案件で出てくるデータの9割以上はゴミだ!」と言い切る人もいます。)

そんな中で「こんなデータは嫌だ!」というケースをいくつかご紹介して、他山の石と頂ければと思います。(もちろんフィクションです。かなりを脚色していますが、似たような事が起こっています・・・)

1.そもそもデジタル化されていない

「うちには大量にデータがあるから」と出かけていくと、大量の段ボール箱に入った記録シートなどがお目見えするシーンです。思わず涙がこぼれそうです。これらを実際に分析の俎上にのせるには、データの手打ちでの移し替えが常です。最近はOCRの精度も良くなってきているので、昔と比較したら格段に作業効率は良くなっているのですが、センサーの設置地点ごとに記録表の表組が変わっていたりすると目まいがします。

当然、手打ち写経で打ち間違いなどの作業ミスも発生しますし、なかなか困難を極める現場となりますね。

2. フォーマットがバラバラ

取得した時期、拠点などで、フォーマットが異なっていたりすると、単純にデータストアにロードできず、整形など何らかのプレ処理が必要になります。こちらも最近はETLなどのローダーが普及してきていますし、インポート処理も親切な作りになっているツールも多いので、何らかのデータストアに格納されているものであれば、変換は容易になりました。単純に数字だけといったものは意外とやりやすいのですが、手入力したコメントのような文章が入ってくる平文のテキストファイルだとツライ事が多いです。’  や ” 、,  :; スペース、タブ文字など、どんな文字でも入りうると、正規表現を駆使してもデータの区切りを定義する難易度が跳ね上がります。レコード数が多いと「おお!やっと入った!」と一時的に安心しても、途中から列がずれているのを見つけて落胆すること数限りありません。

3. データの連結を考慮していない。

最近のアドテク関連は、いかにしてデモグラ情報と行動ログを関連づけるかとか、同一人物が違うデバイスを使った時の記録をどのように突合させるかなど、データ連携をさせるための工夫の歴史といっても過言ではないと思います。そんな中、結合に必要なキー情報(会員番号とか、機器の識別コードとか)が無い状態で、「年齢別とか男女別の売上比を出してみて」と言われましても、どうしようもないんですね。あとから追加できる情報ではないため、お手上げ状態になります。

似たような例としては、名寄せを全く考慮していないケースもあります。例えば「NTT東」「NTT東日本」「東日本電信電話株式会社」は一般的に同一会社とみなされます。これを何も前処理をしないで単純に集計すると、異なる3つの会社があると見なされるんですね。そうすると結果を見誤る事になります。こちらもデータ名寄せを支援するためのツールやサービスも出てきていますが、もともとはデータ取得時に考慮されているとベストです。

4. 必要なデータが取れていない

データマイニングといった探索的な処理の場合には、あまり表だった問題にならないわけですが、知りたい集計結果、KPIを出すために必要なデータが、なぜか取れていないというケースが、ちらほら見かけます。分かりやすい例えでいうと、コンビニの売り上げ分析で「年齢別」「男女別」の集計をしたいというニーズがある場合、レジに登録する際に「**歳台」「男性」といった情報も併せて登録する必要があります。または「”**ポイントカード”はお持ちですか?」といった具合に、カードの登録情報と上記のような名寄せを行って得られる場合もありますが、いずれにせよ、何らかの手段でデータ化しないと分析に使えないわけです。

この逆もしかりで、欲しい分析結果に関連性が薄いデータを大量に渡されることもあります。「とりあえず何かの役に立つかもしれないから」と言われましてもねえ。

5. 欠測が多い、精度が怪しい

データ前処理の段階で、クレンジング等を行う際に、ひとまず仮にデータを可視化して傾向を見るといった作業をすることが多いです。その際に極端に大きい/小さい値を異常値として取り除く事があります。すると、明らかに異常値だらけというデータを見つける時があります。センサーの管理が無茶苦茶だったりするわけですね。同様に欠測期間がやたらに長いものが見つかることもあります。メンテナンス期間とか停電など、ある程度の期間に固まっているとかであれば、比較的対応しやすいのですし、一時的な欠損であれば前後の値の平均を暫定的に使うなどで処理できます。ついでに言うと、データソースが複数にわたっている場合、それぞれの時計が同期しているかも重要です。

 

現場のトラブルは挙げていくとキリがないわけですが、他には保存メディアに関するトラブルは比較的多いですね。保存したCD-ROM, DVD-ROMが読めなくなったなどが典型例ですね。(「”MOドライブ”, “zipドライブ”, “DATテープ”に入っているんだよ」みたいな希少メディア関連は、最近はほとんど無くなりました 🙂 )

こんなわけで、ただただ「大量にあるデータを使って、何かうまい事を言ってみせろ。ビッグデータだろ」的なケースにおかれましては、しばしばご期待にお応えしかねるケースも出てくるわけですが、逆に言えば、これからのデータ分析プロジェクトにおいて、欲しい成果が決まっているのであれば、それに合わせる形で分析手法、取得データの設計をされるのが望ましい限りです。

怒涛の攻めを見せるMicrosoft社のデータ分析ツール

マインドテックの冨です。

3月末のカンファレンス”Build 2016″で、Ubuntu Linuxの環境をWindowsネイティブで稼働させたり、従来のPowerShellに加えてLinuxの事実上の標準のシェルbashを利用できるようにするなどの発表を行いました。今年の夏の予定とのことですが、これはすごい事ですね。まあMac使いの人には今までできているけど何か?とか言われそうですけど。

それにしても昨年から今年にかけてのMicrosoftの攻勢は圧巻だなあと思う次第なのです。OS+Office屋さんから、改めてクラウドやデータ分析などのビジネスのメインストリームに食い込んできています。クラウドでは先行するAmazonに一日の長がありますが、それでもAzureの充実ぶりを見るとよくぞここまでという感があります。

以前、Excelを持っているMicrosoftが本気でデータ分析の領域に突っ込んで来たら、分析領域のツール開発ベンチャーが軒並み吹き飛ばされるんじゃないかと思っていましたが、なんとなくそんな雰囲気も改めて感じています。まあ、TableauやQlikViewなどが持っているシェアをひっくり返すには相当時間がかかると思いますけど。

そんなわけで、Microsoft社が提供しているデータ分析関連の主なツールをまとめてみました。(「アレが入ってない」とか見落としがあるかと思いますがご容赦を)

(1) Excel

Wordとならび、ほぼすべてのPCにインストールされているのではというくらいに普及している表計算ソフト。単純な集計の他にもソルバー機能やピボットテーブルも使える。予測もできる万能ツール。UI面でちょっとしんどい事を除けば、機能的にはたいていのことは対応できる。少なくとも中小企業のレベルではデータ分析の専用ツールを買う前に、Excelの機能をしゃぶりつくす位でちょうどよいくらい。(アルゴリズム的にいろいろある話も聞きますが、そういう業務の方は専用ツールを買うべき)

(2) Power Pivotアドイン for Excel

https://support.office.com/ja-jp/article/PowerPivot-%E3%82%A2%E3%83%89%E3%82%A4%E3%83%B3-a9c2c6e2-cc49-4976-a7d7-40896795d045
Excel2010から利用できるようになったピボットのプラグイン。ノーマルのExcelを越えて大量データの集計処理が可能になる。これもあまり使っている人をみかけないが勿体ない。(ついでにPowerViewも)一般的なビジネスデータの分析であれば、ここまでで大抵は何とかなる。

(3) PowerBI

https://powerbi.microsoft.com/ja-jp/
ビジュアライゼーションやレポートのためのダッシュボードのサービスであるが、驚くことに無料!これもあまり利用されていませんが、もっと知られて良いサービスだと思いますよ。

(4) Microsoft R Server

https://www.microsoft.com/en-us/server-cloud/products/r-server/
2015年4月に買収したRevolution Analyticsが提供していたディストリビューション。R言語はデータ分析界隈では有名ですが、MS社が買収した時は驚きをもって迎えられました。今後、いろいろな製品・サービスと連携していくと思われますので非常に楽しみです。

(5) Microsoft Azure HDInsight

https://azure.microsoft.com/ja-jp/services/hdinsight/
HadoopファミリーのSaaSサービス(素のHadoopの他にも、Pig/Hive, HBase, Storm, Sparkなど)

(6) Microsoft Azure Machine Learning

https://azure.microsoft.com/ja-jp/services/machine-learning/
cortana Intelligence suiteとして提供されている機械学習のプラットフォーム

こうしてみるとデスクトップからクラウドまで、そつなく網をかけにきています。しかも独自サービスのみならず、RやHadoopファミリーなどの業界標準までもカバーしてきており、ユーザー/開発者側への歩み寄りも見て取れます。

AI/人工知能の領域ではWatsonを有するIBM社の存在感も大きいですが、AWS, GCPとならんでのクラウド業者としての位置づけや、Officeツール領域では依然として大きなシェアを持っていることから、2016年の動向も興味深いです。

“Hawk”が気になって、Pivotalジャパンさんの「Big Data Suite」紹介セミナーに行ってきました。

コンサルのクライアントさんにデータ処理基盤導入の案件を担当させて頂いているのですが、ちょっと凝ったデータ構造になりそうながらも規模が巨大。かつ、それなりの低レイテンシーでの応答が必要となりまして、対応できそうな製品を探しておりました。

データ量がそこそこ抑えられるならmongoDBを並べて対応できるかなあとも考えつつ、クラウドが利用できるならGoogle BigQueryやAWS Redshiftなどの利用も想定範囲内。オンプレならHPのVerticaや、今どき感あふれる”SQL on Hadoop”な製品も非常に魅力的で、Cloudera ImpalaやPresto、ベータながらもApache drillなども興味深い所。

そんな中、PivotalジャパンさんがHAWKの解説をするとの事で、これは行かねばと聞いてまいりました。

そもそも”HAWK”って何ぞやというと、Hadoopの商用ディストリビューション”Pivotal HD”で稼働する標準SQL対応の”SQL on Hadoop”データベース。
Javaではなくネイティブのバイナリーで提供されるのと、処理の間にMapReduceを使わず、中間演算結果もメモリ上にストアしておくため、HIVEと異なって演算時のオーバーヘッドを回避する事によって高速化を図っているとの事。

もともとはGreenplum DBのエンジンで、データソースをHDFSに対応させたという経緯があるため、最速を求めるなら、HDFSのオーバヘッドの分GAWKの方が不利になるので、HDFSから(ローカルファイルシステムでデータを管理する)GreenplumDBにロードした方が良いらしい。

事例紹介ではMicroADさんの広告効果分析で採用されたとの事。MicroADさんはバックエンドにIBMさんのPureData(旧Netezza)に、フロントはSPSS Modelerと、大変お金持ちな構成が非常に羨ましかったのですが、ModelerからHadoopのデータに直接アクセス出来るようにしたかったからとの事だそうで。

HIVE/Pigも便利とはいえMapReduceを介するオーバーヘッドは大きいし、”SQL on Hadoop”もこれから良い製品がどんどん出てくるんじゃないかと期待するなか、HAWKも非常に高いポテンシャルを持った製品と思いました。価格がそれなりにするので、コミュニティー版のようなカジュアルに利用できる設定が無いのが非常に残念なんですけどね。

UGG偽ブランドECサイトでの買い物に注意!

たまたま友人からFacebookで偽ECサイトの調査を無茶振りされたので、せっかくなので共有しようかと。この手のサイトは、ちょっと前はレイバンのサングラスやスーツケースが多かったのですが、最近はUGGのブーツをよく見かけます。昔は見るからにサイトが偽物っぽくて、直ぐに見分けがついたのでしたが、近ごろはサイトを作る側もレベルが上がっていて、EC初心者は騙されるくらいのレベル感になっています。

さて、今回のターゲットはこちら。

http://uggstore.jpn.com/

UGGの偽サイト

UGGの偽サイト

ドメインが”jpn.com”という時点で怪しいのですが、以前はwhoisというサービスでドメインの所有者情報を調べる事が出来たのですが、最近は情報保護のため、ほとんど公開されなくなりました。(実際に調べてみましたが、やはりこれといった情報は無し)

トップページをつらつら見ていると、プライバシーポリシーがおかしい事に気づきます。

偽UGGのプライバシーポリシー

偽UGGのプライバシーポリシー

ここで出てくる「インポートブランドロータス」って何でしょう?下の注を見ると「UGG JAPAN」が運用母体らしいのですがミスマッチです。(「インポートブランドロータス」は別途に検索すると、北海道のインポートブランドショップという事が分かります)

さて「会社の概要」を確認しますと、

結局「UGG JAPAN」は不明なるも、「株式会社アグ(UGG)ブーツ」なる会社を名乗っています。ただ、住所が名古屋なのに電話番号が 03-xxx-xxxx とはどういう事でしょうか?

 

適当にアイテムを購入するつもりでカートに入れて決済の手順に進んでみますが、上のアドレス欄に注意してください。SSLでの暗号化がされていません。個人情報を入力させる画面でSSL対応していないサイトで買い物するのはアウトです。(さらに言えば、消費税の処理をしてないですね・・・)

その他、商品説明などで不自然な日本語が混ざる事があります。最近は少なくなりましたが、それでもいくつかは残っているようです。また、中国語の簡体字(日本語では目にしないような漢字)が混ざる事もあります。(昔はソースを見るとフォント指定が簡体字のものだったりしましたが、こちらも最近は対策されているようです。)サイトのいろいろなページを見ていると、商品紹介文はどこかのサイトからスクレイピング(別のECサイトからコピー)していると思われますので、それなりに整った日本語になっていますが、それ以外のページで怪しげな日本語が散見されます。

サイト自体はこんな感じで怪しげな所が見られるので、こんなサイトでは買い物をしない事を強くお勧めします。

せっかくなので、もう少し調べてみます。サイトのURLが”http://uggstore.jpn.com/”という事で、これ以外のサブドメインってどうなっているのか調べてみたい。以前はDNS(Domain Name Server)に問い合わせると一覧表示される場合もありましたが、こちらも最近は情報公開を避けるようになっています。このため、適当に文字列を指定してアクセスしてみるのですが、例えば http://ugg.jpn.com や http://uggboots.jpn.com でサイトが反応します。後者ではまるっきり同じコンテンツで運営されていますね。サイトのホスト名からIPアドレスをnslookup/digで検索すると同じであることが分かります。

さて、ドメイン自体はどうなっているのでしょうか。http://www.jpn.com にアクセスすると、こんなページが表示されます。

普通の会社はドメイントップのページを、こんな風にはしていないですよね・・・

ページのソースを見てみますと、以下のようなGoogle Analytics の計測タグが見て取れます。

<script type="text/javascript">// <![CDATA[
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
// ]]></script>
<script type="text/javascript">// <![CDATA[
try {
var pageTracker = _gat._getTracker("UA-3398405-34");
pageTracker._trackPageview();
} catch(err) {}
// ]]></script>

 

ここの “UA-3398405-34″という部分が、サイトを識別するためのコードになります。これはUA-3398405というコードを持つサイト管理者の34番目のサイトという事です。

では、このコードで検索をしてみます。いくつか検索サイトはありますが、SameID.net で調べてみます。

少なくとも56ドメインを運用している事が分かります。jpn.com 以外にも cn.com , kr.com , uk.com, br.com など、国を表すようなドメインを所有しているようです。日本以外の国でも同じように偽サイトを運用しているのでしょうか・・・

さて、同じようにショップ側のソースを見ていると、以下のようなコードが混ざっている事に気づきます。

<script language="javascript" type="text/javascript" src="http://js.users.51.la/17566674.js"></script>

このJavaScriptを読んでみると、アクセス解析ツールで調べるような情報を “www.51.la”というサイトに送っている事が分かります。さて http://www.51.la にアクセスしてみると・・・

でました!中国語の無料アクセス解析ツール!!

昔のこの手の偽ブランドサイトは、とにかく個人情報を入力させ指定の口座に入金させるかを狙ったものが多かったのですが、最近はクレジットカードの処理まで出来るようになっているようです。入力したらアウトで、あとで気づいても事後の取消処理は非常に困難なので、信用できないサイトにクレジットカード情報を入力するのは、どんなに商品が安くで魅力的でもNGです。ダメ・絶対。

銀行の偽サイト(フィッシング詐欺)も増えているようなので、お金が絡むサイトでは、サイト運営会社の情報を見るのと、SSL証明書に登録されている会社情報をチェックすることは必須ですね。

データマイニングツール”Orange”

日本ではデータマイニング用のツールといえば、商用ではSAS、IBM ModelerやExcelなど。オープンソース系ではRが主流ですが、ちょっと変わったツールのご紹介です。

Orange – Data Mining Fruitful & Fun
Orange (http://orange.biolab.si)は汎用の機械学習やデータマイニング用のツールで、スロベニアのLjubljana大学のコンピューター情報サイエンス学部の Janez DemšarさんとBlaž Zupanさんらによって開発が始まり、現在ではオープンソースとしてコミュニティベースで開発が続けられています。
Orangeはあまり経験のないデータマイニングの初心者から、スクリプトを書いてデータ処理のアルゴリズムを実装するプログラマーまで、多様なインターフェースを持つユニークなツールとなっています。また、多岐にわたるプラットフォームをサポートしており、Windows, Mac OS X, Linuxで動かすことが出来ます。
周りを見ていると、この手の作業を行う人はRのユーザーが多く、Rでの文法を覚えて処理コードを書いている人が多いような印象を持っています。またはオンライン広告関係の方がNeteezaのような強力なデータ分析用のエンジンとともに、フロントをIBM Modelerを使っているようなお金持ちな構成(うらやましい!)で作業をされている場合もあるようです。
Orangeは機能面で言えば、ちょうどその隙間を埋めるといいますか、データマイニングの初心者でも、気軽にいろいろなアルゴリズムを使ってデータ処理をしてみるツールとしては良いツールだと思います。(いかんせん、現時点では日本語版が無いというのがハードルが高いのですが、この手の業務をするレベルの人は比較的、簡単な英語は読みこなせるのではと期待。)
Orangeのツールとしての特徴を挙げていきます。
 

ビジュアルなプログラミング環境

ウィジェットを組み合わせることで、データソースの指定から、処理するロジックの指定、出力の指定などのスキームを作ることが出来ます。この辺りのUIはIBM Modeler(旧SPSS Clementine)に似ています。

多様な可視化の機能

データ分析の作業にあたっては、結果を表現するためのビジュアライゼーションの機能が重要になってきます。Orangeでは普通の棒、折れ線グラフなどの他に、ツリー図、産婦図、ネットワーク図からヒートマップまで、多様な出力様式に対応できます。

ウィジェット

ビジュアルプログラミングを行う際に利用できるウィジェットは100を超え、さらに開発が続けられています。これらは標準的なデータ分析のタスクの他に、集計処理や機械学習のアルゴリズムの実装であったり、さらにはバイオインフォマティックス向けのBioorangeのような専用のアドオンも開発されています。

スクリプト用のインターフェース

Orangeの拡張は基本的にPythonで行いますs。Pythonのスクリプト用のインターフェースが用意されており、新しいアルゴリズムの実装や、データ処理フローの制御などを行う事が出来ます。また、Orangeのコンポーネントの再利用が可能であり、Pythonで実装されるデータ処理スクリプトにOrangeのライブラリを利用する事も出来ます。

ダウンロード

今の所、日本語版は用意されておりませんので、主に英語版での利用となるかと思います。
http://orange.biolab.si/download/
Windows版:
基本的にはPythonの実行環境も同梱されている”Full package”を選択します。
インストール用のexeファイルをダウンロードして実行し、指示に従ってください。
すでにインストール済みでバージョンアップを行う際には、”Pure Orange”版を選択し、既存の環境を上書きます。
Mac OS X版:
“Bundle”版でdmgファイルをダウンロードするか、Pypiパッケージを利用してインストールします。
パワーユーザーは、安定版または開発版のソースコードをダウンロードして、独自にビルドすることも可能です。

起動!

アイコンをダブルクリックして起動します。
 Orange Icon
ワークフローを記述するキャンバス画面が表示されます。初回起動の場合にはチュートリアル(Tutorial)を起動して、操作方法をチェックしてください。
日本語での資料が少ないので、徐々に翻訳を行ってみております。何かの機会にでも公開したいと思います。