Tag: 機械学習

Analytics
Pythonで操るSASの画像処理技術入門編

5月23日に開催されたSAS Forum Japan 2017の「SAS Viyaディープダイブ」セッションでは、SASのAIに搭載されている画像処理機能が入門レベルとして紹介されました。 従来からSASを活用されている方々にとっては、「SAS」と「画像処理」って、なかなか結びつかないのではないでしょうか? 「画像処理技術」に関して、SASではどのようなアプローチをとってきているのか...を、過去、現在、そして未来に分けて紹介しています。 詳細(スライド内容)に関しては、以下をご覧ください。(SlideShareに公開済み) Pythonで操るSAS Viyaの画像処理技術入門編 from SAS Institute Japan   詳細(講演ビデオ)に関しては、以下をご覧ください。(YouTubeに公開済み)

Machine Learning
Python, Rで使うSAS Viya!

みなさま、SAS Viyaはご存知でしょうか? SAS ViyaはSASが2016年末に出した新データ分析プラットフォームでして、データの探索、整形から機械学習まで、幅広くデータ分析することができる万能品です。 こんな感じのロゴです。 SAS Viyaの特徴にインメモリエンジンによる分散処理とオープンというものがあります。 SAS Viyaでのデータ分析はすべてCASというエンジンで実行されるのですが、このCASはサーバのメモリ上にデータをロードし、分析処理が展開されます。しかも複数サーバ構成でも良い感じにスケールして並列分散処理するので、1台のサーバにデータが乗らないとか、1台だけだと遅いとかいうことはありません。   SAS Viyaの特徴 さらにSAS Viyaはオープンな特徴があります。 どうオープンなのかというと、実は裏表なく嘘のつけない性格・・・というわけではありません。 SAS ViyaはSAS言語のみならずPythonやR、Java、LuaそしてREST APIといったさまざまな言語で操作することができるオープン性を持っています。 従来のSAS製品だとSAS言語を覚えないと使うことができなかったのですが、SAS Viyaでは多くのデータサイエンティストさんが使っているPythonやRでデータ分析ができます。しかも同じプラットフォームでデータ分析するので、言語間で違う結果が出るということはありません。同じ設定で分析すれば、どの言語を使っても同じ結果が返ってきます。 さらにいえばPythonやRでデータ分析するときも、多くの場合は1台のサーバやパソコンで処理すると思います。そのさい、サーバやパソコンはCPUやメモリのすべてをデータ分析に割くということはありません。マルチコアCPUを使っていても、大体はシングルコアで処理されます。 しかしSAS Viyaではリソースを使い切ります。4コアであれば4コア、サーバ3台構成であれば3台を余さず使って、より速く効率的に分析します。 全体像でいうとこんな感じです。 どうやって使うの? PythonやRでSAS Viyaを使いはじめるときは、まずはSWATというOSSを導入する必要があります。 SWATはSpecial Weapon and Tacticsの略・・・ではありません。 SAS Scripting Wrapper for Analytics Transferという、SAS Viyaを操作するためのラッパーです。SASが作って、GitHubで公開しています。 Python SWAT https://sassoftware.github.io/python-swat/index.html R SWAT https://github.com/sassoftware/R-swat これらをpip installやinstall.packagesで入手して使いはじめることができます。 SWATはWindows、Linux、MacOSいずれもサポートしていますので、お好きなプラットフォームに導入できます。 Pythonでのプログラミング例はこんな感じです。たったこれだけで、SAS Viyaを使って決定木モデルを作ることができます。とても簡単です。 #

Programming Tips
小林 泉 0
グラフ理論②:PythonとSAS Viyaでグラフ分析

はじめに 以前このブログ「グラフ理論入門:ソーシャル・ネットワークの分析例」でもご紹介しましたが。SASは従来からネットワーク分析(グラフ分析)をサポートしています。ネットワーク分析の基本的なことはまず上記のブログをご参照ください。 今回は、プログラミングスキルがあるアプリケーション開発者やデータサイエンティスト向けです。Pythonからネイティブに利用できるSAS Viyaを使用して、ネットワーク分析をする簡単な利用例をご紹介します。 2016夏にリリースされたSAS Viyaは、アナリティクスに必要な全てのアルゴリズムを提供しつつ、かつオープンさを兼ね備えた全く新しいプラットフォームです。これにより、SAS Viyaをアプリケーションにシームレスに組み込むことや、どのようなプログラミング言語からでもアナリティクス・モデルの開発が可能になりました。今回は、SASのパワフルなアナリティクス機能にアクセスするために、そのオープンさがどのように役立つののかにフォーカスします。 前提条件 SAS Viyaは、REST APIにも対応しているため、それを使用しても良いのですが、一般的には、使い慣れたプログラミング言語を使用する方が効率が良いと考えられるため、今回は、データサイエンティストや大学での利用者が多い、Pythonを使用したいと思います。 デモ環境としては、Pythonコードを実行できるだけでなく書式付テキストも付記できる、Webベースのオープンな対話型環境であるJupyter Notebookを使用します。Jupyterをインストールした後に、SAS Scripting Wrapper for Analytics Transfer(SWAT)をインストールする必要があります。このパッケージは、SAS Cloud Analytic Services(CAS)に接続するためのPythonクライアントです。これにより、Pythonから全てのCASアクションを実行することが可能となります。SWATパッケージの情報やJupyter Notebookのサンプルはこちらをごらんください。https://github.com/sassoftware SAS Cloud Analytic Services(CAS)にアクセスする SAS Viyaのコアにあるのは、SAS Cloud Analytic Services(CAS: キャス)というアナリティクスの実行エンジンです。"CASアクション"という個々の機能を実行したり、データにアクセスしたりするためには、CASに接続するためのセッションが必要となります。セッションからCASへの接続には、バイナリ接続(非常に大きなデータ転送の場合にはこちらが推奨です)あるいは、HTTP/HTTPS経由のREST API接続のどちらかを使用することができます。今回は、デモンストレーション目的で非常に小さなデータを扱うので、RESTプロトコルを使用します。SAS ViyaとCASのより詳細な情報はこちらのオンラインドキュメントをごらんください。 多くのプログラミングと同様、まずは使用するライブラリの定義からです。Pythonでは、importステートメントを使用します。非常に良く使われるmatplotlibライブラリに加えて、ネットワークをビジュアライズするためのnetworkxも使用します。 from swat import * import numpy as np import pandas as pd import matplotlib.pyplot as

Artificial Intelligence | Machine Learning
小林 泉 0
ディープ・ラーニングとAI

この写真に写っているのは何でしょうか?きっと皆さん考えることもなく瞬時に家だと分かるでしょう。なぜなら、何百、何千という種類の家を見てきた経験から、家を構成する特徴(屋根、ドア、窓、玄関前の階段など)を脳が認識できるようになっているからです。そのため、たとえ家の一部分しか写っていない写真でも、自分が何を見ているかが瞬時に分かります。家を認識する方法を学習済みなのです。 多くの皆さんは、この話題ですぐに、「あぁ、ディープ・ラーニングの話だな」とピンとくることでしょう。今回は、昨今メディアを賑わせ、誤解も多くある、ディープ・ラーニングとAI(人工知能)の理解について、簡単に頭を整理してみましょう。 ディープ・ラーニングとは、家の画像の認識、分類、説明など人間が行うようなタスクを実行できるようにコンピューターに学習させることに特化した、人工知能(研究)の一領域です。しかし、ビジネスにおけるディープ・ラーニングの手法と応用はどのような状況にあり、アナリティクスの将来にディープ・ラーニングはどのようなメリットをもたらしてくれるのでしょうか? ディープ・ラーニングとその仕組みについて、SASのアナリティック・サーバー研究開発担当副社長であるオリバー・シャーベンバーガー(Oliver Schabenberger)に話を聞きました。 ディープ・ラーニングをどのように定義していますか? 【オリバー・シャーベンバーガー】ディープ・ラーニング手法は機械学習の一種であり、いわゆる「弱いAI(人工知能)」の一形態と考えられます。「弱いAI」とはAI分野の専門表現で、人間の脳と同じように動作する思考マシンの作成を前提としていないことを意味します。その代わり、「ディープ・ラーニング手法は人間が行うような特定のタスクをインテリジェントな方法で実行することができる」という前提に立っています。そして私たちは今、こうしたインテリジェンス強化システムが人間よりも優れた正確性、安定性、反復性をもってタスクを実行できるケースが多々あることを明らかにしつつあります。 ディープ・ラーニングは機械学習とビッグデータが重なり合っている領域だという人もいますが、それだけではありません。「ディープ」および「ラーニング」という側面の意味を詳しく考えてみましょう。 ディープ・ラーニングの1つの側面(=ディープ)は、ニューラル・ネットワーク・モデルを「より深く」適用することによってアナリティクスの精度が高まる、ということを指しています。学習(ラーニング)システムは、そのモデルあるいは環境を階層構造として表現します。それぞれの層(レイヤー)は、例えば画像における規則性の形態(形状、パターン、境界線など)のように、課題に関する異なるタイプの情報を表していると考えることができます。こうした階層構造とニューロン間の情報フローという2つの特長から、ニューラル・ネットワークは学習システムを構築するための標準ツールとなっています。コンピューティングとアルゴリズムの高度化により、現在では、ほんの数年前と比べても、より多くの層からなるニューラルネットを構築できます。ディープ・ニューラル・ネットワークは多くの学習手法の土台となる概念です。 第2の側面(=ラーニング)は、より多くのデータを利用する際のパフォーマンス(スピード、精度、一般化可能性)の改善という意味においても、システムが「学習」を行うことを指しています。この側面は、パターンの認識、テキストの読解、音声の理解、事象や物体の分類など、「これまで人間が学習してきたタスクを機械が実行する」という応用用途も指し示しています。システムは課題を解決するのではなく、課題に関してトレーニングを受けるのです。 ディープ・ラーニングはどのような点でAI(人工知能)なのでしょうか? 【シャーベンバーガー】多くの人々は「人工知能」という言葉を聞いたとたん、機械が人間に取って代わるのではないかと不安になりますが、ディープ・ラーニングの場合、そうはなりません。コンピューターは依然として「石頭」 です。あくまで、パターン認識、音声認識、質問への回答など、人間が行うようなタスクを機械独自の方法で疑似的に実行しているにすぎません。また、学習した能力を別のタスクに一般化することもできません。例えば、最近、数回の対局で世界最強の囲碁棋士に勝利したAlphaGo(アルファ碁)は、Googleの子会社であるDeepMindが開発した驚異的なディープ・ラーニング・アルゴリズムですが、画像を分類したり、洗浄機の中身を食器棚に片づけたりといった用途には役立ちません。それでも、囲碁に関しては驚異的なプレイヤーなのです。 しかしながら、人間の大脳新皮質が担っている機能に関する最新の理解とディープ・ニューラル・ネットワーク手法との間には、興味深い類似点があります。新皮質は多くの認知能力を担っていますが、そこでは階層構造を通じて入力信号が伝播されており、それらの層がモノの表現を生み出す規則性を発見していることが分かってきたのです。 [Tweet "コンピューターは依然として「石頭」 です。あくまで、パターン認識など、人間が行うようなタスクを機械独自の方法で疑似的に実行しているにすぎません。"] 同様に、ニューラル・ネットワーク・アルゴリズムもレイヤーとニューロンで編成されます。しかし、「ニューラルネットがコグニティブ・コンピューティングの世界で有用性が証明されてきたのは、それが人間の脳を模倣しているから」というよりは、「過去のアプローチとは異なる方法、すなわち、我々人間の大脳新皮質とは異なる方法でデータを処理するからこそ、ニューラルネットは成功を収めてきている」と言うべきではないかと私は思います。 ディープ・ラーニングの理解しやすい例を示していただけますか? 【シャーベンバーガー】ディープ・ラーニングと標準的なアナリティクス手法の違いが分かる優れた例として、 Atari社のBreakoutというゲーム(筆者と同年代以上の方であればご存知のはずの「ブロックくずし」のオリジナル作品らしいです)をプレイするタスクを考えてみましょう。最初に、考えられる選択肢について議論し、それから実際の動作をYouTubeのビデオでご覧いただきます。 1つの選択肢は、ブレイクアウトの遊び方を知っているゲームボットを書くことです。パドル(プレイヤーが水平に移動させるバー)とその動き方、ボール、ボールがパドルや壁やブロックにぶつかったときの跳ね返り方のルールなどの要素をプログラミングします。つまり、ゲームのロジックと戦略を、ソフトウェア自体に組み込むのです。ソフトウェアをコンパイルしたら、導入して実行し、ゲームボットがどのようにプレイするかを観察します。ゲームプレイ能力の改良が必要な場合は、コード改変、コンパイル、導入、実行、テストというサイクルを繰り返していきます。 もう1つの選択肢は、「深層強化学習」と呼ばれるディープ・ラーニング手法を用いて課題を解決する方法です。ディープ・ニューラル・ネットワークでゲーム環境を表現し、この環境内で動く方法、アクションの取り方、そのアクションを取ることで得られる報酬をプログラムに指示します。つまり、報酬はゲーム画面の上部に表示されるスコアであり、アクションはパドルを動かすことであるとコンピューターに伝えます。コンピューターが知る必要があるのは、これが全てです。実行が始まるとコンピューターは、パドルを動かし、スコアがどうなるかを読み取ります。この選択肢の場合、ゲームをプレイするというタスクは、「ゲームの現在の状態と、取るべきアクション(パドルの動かし方)の2つを変数として、将来の報酬を最大化せよ」という最適化課題へと変わります。 それでは、Google DeepMind社が実装したAtariブレイクアウトの深層強化学習をビデオでご覧ください。 このソフトウェアは、壁やブロック、さらにはボールの存在さえも知りません。知っているのは、自分で動かせるパドルがあることと、少しでも高いスコアを獲得するという目的だけです。それでも、学習開始から2時間後には、熟練者並みにプレイしています。誰もコンパイル、導入、実行を繰り返す必要はありませんでした。4時間後には、ゲームをクリアできるようになっています。特定の領域に関する知識は一切投入されていません。 ディープ・ラーニングについて詳しく学ぶにはどうすればよいでしょうか? 【シャーベンバーガー】私はつい最近、SASのサイトにディープ・ラーニングとは? という新しい記事を寄稿しました。ディープ・ラーニングが重要な理由と動作の仕組みについて、幅広い情報を盛り込んであります。また、ディープ・ラーニングに関するWebセミナーや、ディープ・ラーニングの現状についてデータ・サイエンティストが対談しているビデオへのリンクも用意しました。ディープ・ラーニングについて同僚に説明する際もお役に立つと思います。 いかがでしたでしょうか。ディープ・ラーニングとAIの位置づけが少しクリアになったのではないでしょうか。 ゲームと言えば、任天堂の「スーパーマリオ」というゲームを人工知能でクリアしてしまおうという取り組みもあります。インターネット上で検索すると色々情報が見つかるので調べてみてください。学習過程の動画を見ていて、筆者が始めてこのゲームをやったときの、最初の頃まだうまく操作できてないときの動かし方(右に無謀に突き進んでは行き過ぎてやられる)にそっくりだなと感じました。 データマイニング、機械学習、ディープ・ラーニングについて、弊社日本語サイトを更新したので是非ご活用ください。これらのテクノロジーの実用についてのより詳細な情報をご提供しています。

Machine Learning | SAS Events
小林 泉 0
SGF2016: Machine Learning関連セッション・論文(ユーザー・パートナー編)

SAS Global Forum 2016のユーザープログラムでの発表論文を、”Machine Learning”というキーワードで検索し、機械学習関連の論文を集めてみました。 SAS Global Forum 2016 Proceedings - Machine Learning 関連のユーザーやパートナーによる講演・論文 Turning Machine Learning Into Actionable Insights 機械学習=意思決定プロセスの自動化     PROC IMSTAT Boosts Knowledge Discovery in Big Databases (KDBD) in a Pharmaceutical Company 日本の塩野義製薬様の機械学習への取り組み Diagnosing Obstructive Sleep Apnea: Using Predictive Analytics Based on Wavelet Analysis in SAS/IML®

Machine Learning | SAS Events
小林 泉 0
SGF2016: Machine Learning関連セッション・論文(SAS社員編)

SAS Global Forum 2016のユーザープログラムでの発表論文を、"Machine Learning"というキーワードで検索し、機械学習関連の論文を集めてみました。 SAS Global Forum 2016 Proceedings - Machine Learning 関連のSAS社員による講演・論文 Best Practices for Machine Learning Applications 機械学習の実践において一般的に遭遇する課題と解決のためのガイドラインを提供します。機械学習について初心者の方は、こちらもご活用ください⇒SASジャパン機械学習ページへ An Efficient Pattern Recognition Approach with Applications BASE SASおよびSAS Enterprise Minerを使用した、教師あり/なしタイプのパターン認識(画像認識)テクニックの紹介。パターン認識に関しては、この発表者の一人、Patrick Hallがウェビナーで他の例で解説しておりますので、そちらもあわせてご覧ください⇒「機械学習とディープ・ラーニング」ウェビナー Mass-Scale, Automated Machine Learning and Model Deployment Using SAS® Factory Miner and SAS® Decision Manager よりマイクロセグメント化するビジネス課題の解決のための自動化された機械学習製品の紹介 Streaming

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