SAS Japan

活用事例からデータ分析のテクニックまで、SAS Japanが解き明かすアナリティクスの全て
Analytics
R言語でSAS ViyaのAI機能活用 第二回「アクションセットと最初のデータ読み込み」

概要 第一回の「CASサーバーとSWATパッケージ」に続き、第二回としてCASのアクションセットの活用やCASサーバーへのデータ読み込みなどの基本操作の方法について紹介します。 アクションセットについて CASサーバー上での分析作業を開始する前に、“アクションセット”という重要な概念に関して紹介します。 アクションセットは、関連する機能を実行するアクションの論理的なグループです。 SAS Viyaでは、関数のことを「アクション」、関連する関数のグループを「アクションセット」と呼んでいます。アクションでは、サーバーのセットアップに関する情報を返したり、データをロードしたり、高度な分析を実行するなど、さまざまな処理を実行できます。 アクションセットを使ってみましょう それでは、サンプルコードを使いながら、SAS Viyaのアクションセットでデータの読み込みからプロットまでの一連の操作を説明します。 ・データの読み込み CASサーバーにデータを読み込むには二つの方法があります。一つはread.csv()でcsvファイルをRデータフレームの形で読み込んだ上で、as.casTable()を使用する方法です。この関数はデータをRのデータフレームからCASテーブルにアップロードすることができます。今回の例では金融関連のサンプルデータhmeqを使って紹介します。 library("swat") conn <- CAS(server, port, username, password, protocol = "http")   hmeq_data <- read.csv(“hmeq.csv”) hmeq_cas <- as.casTable(conn, hmeq) もう一つはcas.read.csv()を使って、ローカルからファイルを読み込んで、そのままCASサーバーにアップロードする方法です。仕組みとしては、一つ目の方法と大きくは変わりません。 hmeq_cas <- cas.read.csv(conn, hmeq) as.casTable()或いはcas.read.csv()からの出力はCASTableオブジェクトです。その中に、接続情報、作成されたテーブルの名前、テーブルが作成されたcaslib(CASライブラリ)、およびその他の情報が含まれます。 Rのattributes()関数を使えば中身を確認できます。 attributes(hmeq_cas) $conn CAS(hostname=server, port=8777, username=user, session=ca2ed63c-0945-204b-b4f3-8f6e82b133c0, protocol=http) $tname [1] "IRIS" $caslib [1] "CASUSER(user)"

Data for Good | SAS Events | Students & Educators
0
第四回Data for Good勉強会 活動レポート

SAS Japanでは昨年末より”Data for Good”を目指す学生コミュニティ「SAS Japan Student Data for Good Community」を運営しています。このコミュニティは、Data for Goodを題材にデータサイエンスの一連の流れを体験する場として設立されました。今回紹介する勉強会も、その活動の一環です。詳しくは「Data for Goodを通じて"本物の"データサイエンティストになろう!」の記事をご覧ください。 四回目の勉強会ではFood Bankをテーマに、データを活用した課題解決の手法を学びました。 Food Bank   Food Bankとは、品質に問題がないにもかかわらず市場で流通出来なくなった食品を、福祉施設などに提供する活動のことです。この取り組みは食に困っている人の支援だけでなく、食品ロスの削減の一翼も担っています。しかしながら、Food Bankの高頻度の利用は自立を妨げることにも繋がりかねず、利用者への適切なサポートが多くのFood Bankで課題となっています。 イギリスのHuddersfieldを拠点とするFood BankのThe Welcome Centre(TWC)もその一つです。利用者のある一部は、日を追うごとにパントリーの訪問回数が増え、依存度を増していくことがTWC内で問題となっていました。とは言うものの、沢山の利用者がいるの中で「誰がFood Bankに依存しているのか」を調査するのは非常に労力のかかる作業です。そこでTWCはDatakind社と共同のプロジェクトを開始し、Analyticsを用いて効率的に依存性の高い人を発見し、優先的なサポートを施すことに挑戦しました。このプロジェクトでは、実際に Food Bankへの依存性を推定する機械学習モデルの構築 依存性の高い人にフラグを立て、優先して支援すべき利用者を可視化する ことに取り組んでいます。詳しい内容はDataKind社の事例紹介(英語)をご覧ください。 解くべき課題を設定する これらの事例を踏まえ、私たちのコミュニティが「日本のFood Bankの課題」に取り組む場合、解くべき課題は何か・解決するために誰のどのような意思決定が必要か・どのようなデータが必要か、ディスカッションを行いました。 議論を進めていく中で、さまざまな意見が飛び交いました。その中には、「寄付を受けた食料品を完璧に消費するために、新規パントリーを出店する際の食料品の需要予測が必要ではないか」や「限られたボランティアの中で食品配送ルートの改善が大きなインパクトをもたらすのではないか」といった意見が出ました。ディスカッションをすることで、自分では思いつかない新鮮な発想に触れることができたり、テーマに広がりを持たせられることを感じました。アナリティクスの結果を活用するアクションを考えるための「課題設定」を実際に体験できた勉強会になりました。 コミュニティメンバー募集中! SAS Japan Student Data for Good communityでは引き続き学生の参加者を募集しております。社会貢献を目指す活動を通してデータサイエンティストの役割である「課題の設定」から「データを用いた解決法の提示」までの一連の流れを経験できます。 興味をお持ちでしたら下記の事項をご記入の上JPNStudentD4G@sas.comまでご連絡ください。 大学名 / 高校名 名前 メールアドレス

Data for Good | SAS Events | Students & Educators
0
第三回Data for Good勉強会 活動レポート

SAS Japanでは昨年末より”Data for Good”を目指す学生コミュニティ「SAS Japan Student Data for Good community」を運営しています。このコミュニティは、Data For Goodを題材にデータサイエンスの一連の流れを体験する場として設立されました。今回紹介する勉強会も、その活動の一環です。詳しくは「Data for Goodを通じて"本物の"データサイエンティストになろう!」の記事をご覧ください。 三回目の勉強会ではヒートアイランド現象をテーマに、課題設定の部分を学びました。   ヒートアイランド対策、”どこ”から? ヒートアイランド現象とは、都市部の気温が周りに比べて高くなる現象です。その要因には、都市化による土地利用の変化や人間活動で排出される熱などがあります。対策事例として人口排熱削減のために次世代自動車の普及をしたり、保水性舗装の普及や屋上緑化を推進して地表面被服の改善を目指したりというものが行われています。 勉強会で取り上げたヒートアイランド対策事例の一つに、リッチモンドのヒートマッピングがあります。ヒートアイランド現象は都市部と郊外を比較して都市部の方が暑いという考え方が一般的です。しかし、植生域より人口被覆域の方が地表面からの大気加熱を大きくすることや、明るい色の舗装より暗い色の舗装の方が熱を吸収して暑くなることから、都市部の中でも暑さに対する強度は場所によって異なります。そこで、リッチモンドでは「都市の中でも特に暑さの影響を受けやすい場所を見分ける」ことで、対策を優先して行うべき場所の判断をサポートするためのプロジェクトを開始しました。そのアプローチとして、 リッチモンドをブロックで分けた各地点の気温・場所・時間のデータを収集する 観測データ+土地利用マップ+住民の収入データ→各地点のヒートアイランドに対する脆弱性レベルを定量化・可視化 に取り組んでいます。このプロジェクトは2017年にリッチモンドで開始し、今では様々な都市に活動の輪を広げています。詳しい内容はこちらの記事(英語)をご覧ください。   解くべき課題を設定する これらの知識を踏まえて、次は「課題設定」を行いました。自分たちでヒートアイランド現象という問題に対して、解くべき課題は何か・解決するために誰のどのような意思決定が必要か・どのようなデータが必要か、についてディスカッションをしました。 議論を進めていく中で、さまざまな意見が飛び交いました。その中には、テーマとして設定していたヒートアイランド現象を解決するというよりも、ヒートアイランド現象が”障壁”となって起きるであろう「熱中症を未然に防ぐ」というものを課題に設定するという意見がありました。その解決策として、リッチモンドの事例を応用した「ある人がいる地点の体感気温+その人の体温のデータをリアルタイムで収集し、熱中症のおそれがある場合に通知するアプリケーションの作成」などの案が出てきました。 ディスカッションをすることで、自分では思いつかない新鮮な発想に触れることができたり、テーマに広がりを持たせることが出来たりすることを感じました。アナリティクスの結果を活用するアクションを考えるための「課題設定」を実際に体験できたディスカッションになりました。   コミュニティメンバー募集中! SAS Japan Student Data for Good communityでは引き続き学生の参加者を募集しております。社会貢献を目指す活動を通してデータサイエンティストの役割である「課題の設定」から「データを用いた解決法の提示」までの一連の流れを経験できます。 興味をお持ちでしたら下記の事項をご記入の上JPNStudentD4G@sas.comまでご連絡ください。 大学名 / 高校名 名前 メールアドレス  

Analytics
R言語でSAS ViyaのAI機能活用 第一回「CASサーバーとSWATパッケージ」

本シリーズの記事について オープンソースとの統合性はSAS Viyaの一つの重要な製品理念です。SAS言語やGUIだけではなく、R言語やPythonなどのオープンソース言語でも、SAS ViyaのAI&アナリティクス機能を活用することが可能になっています。このシリーズの記事は、R言語からSAS Viyaの機能を活用して、データ準備からモデルの実装までの一連のアナリティクス・ライフサイクル開発をサンプルコードの形で紹介していきます。 CASサーバーとSWATパッケージとは コードの内容を紹介する前に、まずCASサーバーとSWATパッケージに関して、簡単に紹介します。CASはSAS Cloud Analytic Serviceの略称です。SAS Viyaプラットフォームの分析エンジンで、様々な種類のデータソースからデータを読み込み、メモリーにロードし、マルチスレッドかつ分散並列でハイパフォーマンスな分析処理を実行します。現在のCASサーバーは3.4.0以降のバージョンのPythonと3.1.0以降のバージョンのRをサポートしています。 オープンソース言語のクライアントからCASサーバーのインタフェースを使用するために、SASからSWAT(SAS Scripting Wrapper for Analytics Transfer)というパッケージをGithubに公開し、提供しています。RとPythonにそれぞれ対応しているバージョンはありますが、本記事のサンプルコードではR用の SWATをメインで使用します。SWATパッケージを通してCASサーバーと通信し、インタフェースを直接利用することができます。データサイエンティストはSWATパッケージを使用し、RやPythonからSAS Viyaの豊富なAI&アナリティクス機能を活用し、様々なデータ分析処理を行ったり、機械学習や深層学習のモデルを作成したりすることができます。 環境の準備 R言語用SWATパッケージを利用するために必要なRの環境情報は以下の通りです。 ・64-bit版のLinux或いは64-bit版のWindows ・バージョン3.1.0以降の64-bit版のR ・Rパッケージ「dplyr」、「httr」と「jsonlite」がインストールされていること 筆者が使用している環境は64-bit版のWindows 10と64-bit版のR 3.5.3となり、IDEはRstudioです。 パッケージのインストール SWATをインストールするために、標準的なRインストール用関数install.package()を使用します。SWATはGithub上のリリースリストからダウンロードできます。 ダウンロードした後、下記のようなコマンドでSWATをインストールします。 R CMD INSTALL R-swat-X.X.X-platform.tar.gz X.X.Xはバージョン番号であり、platformは使用するプラットフォームと指しています。 或いはRの中から下記のコマンドのようにURLで直接インストールするのもできます。 install.packages('https://github.com/sassoftware/R-swat/releases/download/vX.X.X/R-swat-X.X.X-platform.tar.gz', repos=NULL, type='file') この部分の詳細はR-swatのGitHubのリンクを参考にしてください。 SAS Viyaと一回目の通信をやってみよう 全ての準備作業が完了したら、問題がないことを確認するために、Rから下記のコードを実行してみます。 library("swat") conn <- CAS(server, port, username, password,