全般

Analytics | Machine Learning
小林 泉 0
アナリティクスの産業革命-機械学習による自動化

15年前 2000年、当時すでに(今では機械学習に分類されるいくつかのアルゴリズムを搭載した)予測モデリングツールSAS® Enterprise Minerはこの世に存在していました。また、予測モデリングにおけるSASの方法論であるSEMMAプロセスも同時に存在していました。SEMMAプロセスとはSASがそれまでに培ったベストプラクティスであり、Sample(当時は1%サンプリングで十分だと立証する論文がいくつもありました)、Explore(探索、分布の確認)、Modify(補完、置き換え、変換、連続量のカテゴリカル化など、予測モデルの精度を上げるための工夫。昨今Deep Learningでは逆にこれらをせずにありのままがいいという考え方もあります)、Model(決定木などのモデル手法の適用)、Assess(複数の予測モデルから予測パフォーマンスの良いものを選択)であり、これらを順に実施することで誰でもそれなりに精度の高い予測モデルが作れました。この方法論と方法論にのっとったEnterprise Minerのおかげで、初めての分析プロジェクトにおいて何の迷いもなく顧客の解約を予測する予測モデルを作成でき、一瞬のうちに自分が「できる分析者」になったかのように感じたのを覚えています。 学生時代、実験結果の分析にSASをプログラミングで使用していた筆者にとっては、アイコンを並べて線を繋ぐだけでよいこのツールが魔法のように感じていました。しかし同時に「アイコンの並べ方、設定、当てはまりのいい手法にはパターンがあるなあ」と感じていましたし、加えて「マウスのドラッグ&ドロップという操作がちょっと面倒」だとも感じていました。 その頃、あるお客様は、サンプリングではなく全件分析で得られる価値に重きを置き、数日にわたる予測モデリング処理を実行していました。当時の世界で最大級のUNIXを使用したチャレンジは、もちろん技術的な制約により処理を完結することそのもが一つの課題でもありました。まさに「ビッグデータ」を筆者が最初に体験した場でした。 2015年 15年前、少ないコンピューターリソースしか持たない我々は、いかに顧客をあまり多くない、説明しやすいグループに分けるかを考えていました。『顧客の顔の見える化』と当時の多くのプロジェクトでは呼んでいました。しかし、今日では消費者の嗜好が多様化し、サービスや商品も多様化かつ大量化し、サービスや商品の寿命が短くなり、販売チャネルも多様化しました。予測モデルを使用して、単に顧客を理解するだけではなく、収益を最大化するためには、そのような多様性を失わない大量のセグメントごとに予測モデルを作る必要がでてきたのです。 このような分析対象の数の増加や粒度の増加、さらには分析対象データ量の増大は、近年、組織の分析チームの責任者にとっては、「予測モデル作成業務の生産性の向上」というミッションとして、大きな課題になってきたのです。   従来、予測モデルの作成は、分析サービスを提供する企業などだけが実施する、一部の人の道具でした。しかし時代は変わりビッグデータブームにも後押しされ、アナリティクスを活用する/したい組織・企業は増加の一途をたどっています。しかし、高度な数学的考え方に基づく予測モデリング手法を高等教育で学んで社会に出る人材はそれほど増加していません。そこに、「アナリティクス人材」の不足問題が生じています。 2015年、ガートナー社は「市民データサイエンティスト」という言葉を新たに定義しました。これまで高度な分析に縁遠かった、統計学や数学の専門知識を持たない業務部門の担当者が必要に迫られて予測モデリングをするようになってきたという状況をうまく表現していると思います。   さらに、この15年で、情報技術の進化と共に、より計算が複雑な手法、すなわち、昨今では機械学習と呼ばれるような高度なアルゴリズム、複数のモデルを組み合わせるアンサンブル手法、など、以前は、コンピューターの処理能力の制約で利用できなかった洗練された大きな計算能力を要する手法が登場してきました。それぞれの手法には特徴や向き不向きがあり、データの性質や予測したい事象の性質に適した手法を使用することで、より良い意思決定が可能となります。SASもこの間、Base SASエンジンから、In-Databaseへ、そしてSAS In-Memory Analyticsへとアルゴリズムの実行環境をシフトしてきています。   この15年間で予測モデル作成プロセスそのものの考え方は変わっていませんが、それを取り巻く環境や期待が大きく変化したことにより、予測分析に対する要件も変化してきています。近年、アナリティクスを武器とする企業が求めている大きな3つのポイントは以下の通りです: 扱いやすさ: 高度な分析・ITスキルを持たないビジネスユーザーでも扱えること スピード: 大量データ、多数のセグメントに対してスケーラブルであること 正確性: 収益を左右するモデルのパフォーマンスが良いこと(精度が高いこと)  SAS® Factory Minerリリース SASはこのような要望に応える形で、このたびSAS® Factory Minerという新製品をリリースしました。 ボタンクリック一つで自動的に、 最新の機械学習アルゴリズムを使用して、 これまでに培ったベストプラクティスに基づいた、 最良の予測モデルを作成することが可能となります。   従来、GUIとはいえ、人手でひとつひとつ時間をかけて実施していた予測モデル作成業務の時代から、全自動の-すなわち、モデリングプロセスにおける試行錯誤と手動プロセスを不要とし、データの特性に応じた最適なデータ変換手法と最適な機械学習アルゴリズムを自動で選択肢し、一つの操作でセグメントごとの予測モデルを作成できる-時代がやってきました。 まさに、予測モデリングの世界における産業革命です。      SAS® Factory Minerの紹介ビデオ   60秒で語るSAS Factory Miner  

Analytics
小林 泉 0
すべてのSASユーザーのためのSAS® Studio

SAS Studioとは SAS Studioは、SASをWebブラウザから(HTML5)利用できるアプリケーションです。従来のようにクライアントPC上にSASをインストールする必要もなくなり、Webブラウザさえあれば、どこからでもSASエンジンを利用することが可能です。そのためもちろん、クラウド環境での利用にも適しています。統計やSASの学習目的であれば無償で利用可能なSAS University Edition / SAS OnDemand for Academicsのインターフェースに採用されているのでそれをご利用の方はすでに慣れ親しんでいらっしゃると思いますが、実はそれに限らず、ほぼ全てのSASユーザーの方がご自身のSAS環境で利用可能な次世代のインターフェースです。 SAS Studioを使用して、データ、SASライブラリ、SASプログラムを利用することができ、新規にプログラミングすることも可能です。 最新バージョンでは、多くのSAS Enterprise Guideユーザーに支持されている、マウスによるポイント&クリックでクエリを作成できる「クエリビルダ」も追加されました。 それだけはありません。SAS Enterprise Guideと同様、ポイント&クリック操作だけで背後でSASコードを自動生成させる様々な処理が用意されている「タスク」も用意されています。また、既存のタスクをベースに、あるいはテンプレートをベースに新規にユーザー定義タスクを作成できるようになっており、XMLを編集するだけで簡単に作成できます。 さらには、SAS Enterprise Guideのように、そのタスクとコードを組み合わせて、処理フローを作成するビジュアル・プログラミング機能も提供されています。   使い方 まずは、どのような操作感なのかを以下の動画でご確認ください!(日本語字幕付きなので音声出さなくても内容理解できます)   SAS Studioの日本語の利用ガイドもありますので、是非ご活用ください。下記日本語ドキュメントは最新リリース3.4の一つ前のバージョンのものになります。最新バージョンであるSAS Studio 3.4用の日本語ドキュメントも間もなく公開できる予定で、こちらのSAS Studioのドキュメントページにアップされる予定です。 プログラミング入門ガイド SAS® Studio 3.3 SAS Studioを使用してSASプログラミングを行うための基本的な使い方を紹介しています。 SAS® Studio 3.3 ユーザーガイド SAS Studioの全ての機能の操作方法を日本語で説明しています。 動作アーキテクチャ タスクやプログラムコードを実行すると、SAS StudioはSASサーバーに接続しSASコードを実行します。SASサーバーは、クラウド環境上に配置することも可能ですし(SAS OnDemand for Academicsや、SAS University

Analytics
小林 泉 1
SAS® Enterprise Guide 使い方Tips&新機能-SAS Global Forum 発表より

今年もユーザー総会が8/6・8/7で行われました。会場にて、あるユーザーの方に「SAS Enterprise Guideのよりよい使い方などに関する情報があればもっと教えてほしい」と相談を受けましたので、今回はそれを取り上げたいと思います。 SAS Enterprise Guideとは、SAS Business Intelligenceの主要アプリケーションのひとつです。定型レポートの作成や定型レポートで発見した課題をより深く掘り下げて詳細な課題箇所を特定するアドホックレポーティングに使用する、グラフィカルユーザーインターフェースを備えたツールです。SAS Global Forumではそのようなツールの使い方Tips等実際のユーザーの方々の便利な利用方法が紹介されたりしています。今回は、SAS Global Forum 2015および2014から、SAS Enterprise Guideの使い方に関わるものをピックアップしてみました。 最新バージョンで追加された新機能については、こちらの What's New in SAS(R) 9.4 にまとまっており、最新バージョンの7.1および7.11においても継続的に機能が追加されていますので、是非ご参照ください。 二つほど最近追加された機能をご紹介します。 Enterprise Guideには昨今約90に上るタスク機能が搭載されています。初心者の方であれば自分の使いたいタスクを見つけるのが大変なので検索機能が欲しいでしょうし、使い慣れた方であれば、マウス操作とはいえ、使いたいタスクまでマウスを移動させる時間も惜しいでしょう。さらには、いつも使うタスクは決まっている人は、「最近使ったタスク」が欲しいことと思います。最近これらの悩みを解決する「タスクブラウザ」という機能が新たに追加されました。 さらに、私の身近にもEnterprise Guideをマウスで目にもとまらぬスピードで操っている人がいます。そのような人が長年待ち望んでいた機能も実現しています。プロセスフローダイアグラム上で結合したい複数のデータを選択し、クエリビルダを選択することで、複数の入力テーブルを一度の操作で設定することが可能となりました。 是非ご活用ください。 このようなことが、下記に紹介するドキュメントには掲載されています。   2015 Creating Keyboard Macros in SAS® Enterprise Guide® キーボードマクロを作成する方法が紹介されています Easing into Analytics Using SAS® Enterprise Guide® 6.1 基本的な使用方法が紹介されています Joining Tables Using SAS® Enterprise

Analytics
小林 泉 0
グラフ理論入門:ソーシャル・ネットワークの分析例

SASではグラフ理論(グラフ分析と言ったりもします)や、そのビジュアライゼーションを容易に実践することができます。本ブログでは、何回かにわたりこのトピックを扱っていきたいと思います。グラフ(ネットワーク)は世の中のあらゆるところに存在します。リレーショナルデータベースのER図として抽象化されている世界(企業の業務など)とは異なり、現実の世界では全てのモノが相互に関連しています。昨今注目されているIoTにおいても単に生成されるデータを個別に分析するだけでなく、それによってつくられたネットワークそのものを分析対象にすることで新たな洞察が生まれる期待も大きいと考えられます。今回はまずソーシャルネットワークを例にその様子を紹介していきます。 はじめに IoTに代表される昨今のように全てが相互に接続された世界では、ある一つのモノそのものを詳細に分析するだけでなく、異なるモノとモノ同士がお互いにどのように関連しているかも理解することの重要性が増しています。ソーシャルネットワークは、モノやサービスについて消費者がどのように考えているか、あるコミュニティが自社に関係のある別のコミュニティとどのようにリンクしているのか、インフルエンサー(情報発信力あるいは影響力をもつ人々)はどこにいるのかなどについて驚くべき事実を提供してくれることが多いのです。このようなネットワークについて理解することで、自社のビジネスにとって役立つ洞察を与えてくれたり、次のマーケティングキャンペーンにおいて誰をターゲットとすべきかについての意思決定に役立つでしょう。 ネットワーク(グラフ) ネットワークとはモノ(ノード)と、それらモノとモノとを接続するリンクの集合によって構成されます。リンクによって様々な関係性を表現できます。この定義は非常に一般的ですが、我々はありとあらゆるところで、このネットワークを見出すことができます。 数学的には、ネットワークはグラフと呼ばれています(データビジュアライゼーションで使われるグラフとは異なる意味なので注意してください)。相互に接続されたモノは数学的には頂点といい、頂点と頂点を結ぶリンクは、エッジ(辺)といいます。グラフの性質は数学、工学さらには社会科学といった領域でグラフ理論という研究対象となっています。 一方で、ネットワーク・ビジュアライゼーションはこのグラフをビジュアルに表示するためのものです。もっとも一般的な形は、リンクノードダイアグラムで、頂点を表す点または円があり、それらが辺を表す直線や曲線でつながっているものです。頂点の属性は、大きさや色、形にマップされ、辺の属性はリンクの幅や色にマップすることができます。 辺の属性として重要なのが「方向」です。ほとんどの関係性(リンク)は方向性がない、対称なものです。例えば、Facebookにおける友人などがそれにあたります。しかし「方向」があり非対称なネットワークもあります。Twitterにおける"フォロー"がそうです。このような場合には、ビジュアライゼーションは矢印などのような線で関係性の方向を表現することができます。 ソーシャルネットワーク 複雑系の一つの特徴的な側面であり、またそれが全体を予測することを困難にしている理由の一つでもあるものに、それを構成する構造と各構成要素の振る舞いとの間の相互作用があげられます。 その相互作用は、ソーシャルネットワークにおいて特に顕著にみられます。あなたを知っている人があなたの行動に影響を与えたり、またその逆であったりするでしょう。この後紹介するように、ネットワークは「アクター」(人間のことが多いですが、時には自動化されたコンピュータ・エージェントであったり、組織であったりします)によって構成され、それぞれの間の関係性や行動(フォロー、いいね!やリツイート)によって関連付けられます。「アクター」の行動による影響は、関連付けられている別のアクターに対して広範囲に作用します。つまり、全体の中で重要な位置にいるアクターは、グループ全体に対して大きな影響を与えることができるのです。 では、我々はどのようにソーシャルネットワークを理解すればよいのでしょうか?基本的な問いから始めてみます。 ネットワークの基本的な構造はどうなっているか?ひとつの団結したグループなのか?それとも緩くつながった強固なコミュニティなのか? インフルエンサー(影響力のある人)は誰なのか? これらの問いを総合するとネットワークの影響がお互いにどのように作用しているのかをマクロな視点とミクロな視点で明らかにすることができます。 データ準備 今回は、ソーシャルネットワークの分析を紹介するためにツイッターデータを使用します。SAS Visual Analyticsでは、ツイッターデータを取り込むことが可能ですが、非常に大きなデータをインポートするとデータが非常に膨大になります。そのような場合にネットワークをよりよく理解するために、ネットワーク分析のためのツールであるSASのOPTGRAPHプロシジャを使用します。将来のバージョンでは同様のことをSAS Visual Analytics上だけでテキスト解析やフォーキャスティングと共に利用できることになる予定です。 この例では、#SASUSERS, #SASSGF14といったハッシュタグで抽出したツイッターデータを使用します。このデータは以下のような構造をしています。   前述したように、このネットワークは、これらのツイートをしているユーザーたちと(テキストそのものは今回は関係ありません)、それぞれのユーザー間の関係性(AがBをフォロー)によって表現されます。その情報に基づいて、二つの列、FROM_IDとTO_ID(このIDはツイッターのユーザーIDです)を使用したデータ構造を作成します。RELATIONSHIP列は、このリンクの意味を表現しています。 このテーブルをSAS Visual Analyticsにロードしてみるだけでも、以下のような興味深いネットワーク構造を見ることができます。 フォローワーの数などを人の属性に設定することにより、このネットワークに含まれている人あるいは組織についての最初の洞察を得ることができます。 もちろん、このように考える方もいるでしょう。フォローワーの数が多いからといっても必ずしもその人物がネットワーク上の重要な人物とは限らないだろう、と。では、より深く理解するためにコミュニティとキーとなるアクターを特定する方法を見てみましょう。 コミュニティの検出 コミュニティの検出、あるいはクラスタリングとは、つながりの強いノード同士をグループ化してネットワークをいくつかのサブ・ネットワークに分解していくプロセスです。 SASではこのようなグラフ分析のためのツールOPTGRAPHプロシジャを提供します。OPTGRAPHが提供する様々な機能はまたの機会にご紹介します。今回は、このコミュニティ検出に使用したいと思います。以下の例では、指定した分解解像度に基づいて、一度に二種類のコミュニティグループの計算をしています。解像度を大きくするとより多くのコミュニティを生成することができます。 proc optgraph loglevel = moderate data_links = data.tweet_edges out_nodes = work.tweet_groups graph_internal_format = thin; data_links_var from =

1 5 6 7