SAS Japan
活用事例からデータ分析のテクニックまで、SAS Japanが解き明かすアナリティクスの全て
はじめに 因果効果の推定手法の1つである傾向スコアマッチング、およびSASでの実装方法について紹介します。傾向スコアマッチングのSASでの実装にあたっては、本記事ではSAS/STAT 14.2(SAS 9.4)で追加されましたPSMATCHプロシジャを使用します。因果推論の基本的な枠組みや傾向スコア・傾向スコアマッチングの統計的理論については、詳しく解説を行いませんので、そちらに関心がある方は書籍等を参考にしていただければ幸いです。 理想的なランダム化比較試験においては、ランダム化により治療群と対照群間で測定・未測定の交絡因子(confounders)の分布が期待的に等しくなるため、単純な群間比較によって治療(介入、曝露)の興味のあるアウトカムに対する効果を評価することが可能です。しかし、ランダム化が行われなかった実験研究や観察研究のデータから因果関係を見出そうとする場合には、一般に交絡(confounding)と呼ばれるという問題が生じます。これは簡単に述べると、治療群と対照群で集団の特性が異なることで2つの集団が比較可能ではない状況、治療群と対照群でのアウトカムの違いが治療だけではなく集団の特性の違いにも依存する状況を意味しています。つまり、ランダム化が行われなかった実験研究や観察研究のデータから因果効果を推定する際には、交絡を十分に制御した上で群間比較を行う必要があり、世間一般で因果効果の推定手法と呼ばれるものは、交絡を調整方法する方法だと認識していただいてよいかと思います。因果効果の推定手法は回帰や層別化、標準化など様々なものがありますが、本記事ではマッチング法に注目します。マッチング法は、治療群と対照群から類似した特徴を持つ被験者をペアとし(マッチングさせ)、マッチした対象集団において治療を受けた群と受けなかった群を比較するという方法です。 ただ、一言にマッチング法と言っても複数の交絡因子(共変量)の情報をそのまま用いる「共変量マッチング」と、共変量の情報を傾向スコアという一次元の情報に落とし込んだ上でマッチングを行う「傾向スコアマッチング」という2つの方法に大きく分かれます。初学者にとっては前者の方がより直感的な方法かと思いますが、共変量が高次元である場合や変数のカテゴリ数が多い場合にはその実施が困難になります。そのような場合にしばしば用いられるのが後者の傾向スコアマッチングです。マッチングには、治療群と対照群の構成比率やマッチング方法など様々なオプションがありますが、傾向スコアの分布が同じ(治療群と対照群が交換可能)であるmatched populationを作成するというのが共通の考え方です。また、傾向スコアマッチングの実施手順は連続である単一の共変量を用いた共変量マッチングと同様であり、大きくは以下のような手順となります。 【傾向スコアマッチング法のステップ】 共変量の特定、測定 傾向スコアのモデル指定、傾向スコアの推定 マッチングアルゴリズムの決定、マッチングの実施 マッチングした対象者で構成された集団(matched population)における治療群と対照群での交絡因子の分布評価 4.で評価した共変量が不均衡である場合には2.に戻る 群間比較の実施 推定結果の解釈 記法と仮定 記法 以下の記法の下で傾向スコアマッチングに関する議論を行います。アルファベットの大文字は確率変数を、小文字はその実数値を意味するものとします。なお、以降でボ-ルド体としている場合は単一の変数ではなくベクトルであることを意味しているものとします。 A:二値の治療変数 Y:観察されるアウトカム Ya:潜在アウトカム X:共変量(一般にはベクトル) 仮定 本記事では以下の識別可能条件を仮定します。理想的なランダム化比較試験においては研究デザインによってその成立が認められますが、観察研究ではあくまで”仮定”となります。つまり、その成立を認めることが妥当であるかどうかの議論が別途必要となることにご注意ください。また、各条件の詳細や意図する内容については本記事では取り扱いませんので、他の記事や書籍等をご参照ください。 【識別可能条件 (Identifiability assumptions) 】 一致性 (consistency) If Ai = a, then YiA = Yia = Yi 特にAが二値であるとき、 Yi = AYia=1 + (1-A) Yia=0 条件付き交換可能性 (conditional
本記事では、ZEAL - Analysis and Projections of the Japanese Economyについて、チームメンバーに直接お話を聞き、背後にある思いやチャレンジなどについて解き明かします。 SAS Hackathon 2023 参加の背景 SIerであるZEALには、データアナリスト・データサイエンティストといったロールで働く社員は現状まだ多くはない。しかし今後はそういった人材を増やし、データ活用の世界に進出していくという目標を掲げている。 SAS Hackathon開催の知らせを受け取ったとき進むべき道が定まった。部内でプレゼンを行い、SASの取り扱い経験を問わず、興味を持った社員でチームZEALを結成した。 それがハッカソン開催の約1年前でした。そして半年前頃からテーマを何にするかチーム内で議論してきました。 SDGsをキーワードに、カーボンフットプリントを可視化することでCO2排出量を減らす事に貢献する、であったり、今後人類が必ず直面する喫緊の課題で身近な問題でもあり必ず解決する必要がある問題でもある食料問題に取り組む、など様々な案が出た。 最終的に定まったテーマは、「不確実性を消し去ることで、新型コロナのようなアウトブレイクに対して飲食業界が効果的な対策を立案できるよう支援すること」になった。当初は有価証券報告書による企業業績の変動をコロナ前とコロナ後で比べていく方針だったが、データ数が少なかったため断念せざるを得なかった。そこで、ある程度データ数が確保できる家計の支出データを使うことにした。 やはり当初から食料問題に取り組むという案が出ていたことと、コロナのようなパンデミックの影響が強く出た分野であったため、飲食業界を選択しました。家計の外食支出の変動から、間接的に飲食業界の隆盛を予測する、というものです。 コロナによる影響の強弱について念のため全産業分野を網羅的に確認した。ここでSAS Viyaの機能が役に立った。コロナの影響が特に大きかった産業分野は、飲食、交通(航空)、教育・娯楽だった。中でも交通(航空)は飲食業以上に影響が大きかった。しかし交通(航空)はテーマには選ばなかった。食糧問題に取り組むという基本方針があったからだ。 SAS Viyaは統計的知識がそこまで無くても十分に扱え、確実に結果を出すことができました。これはZEALが得意とする、「可視化によるインサイトの引き出し」というアプローチにもとてもフィットしていました。操作性も他のBIツールと比べて特段難しいというわけではなかったので問題はありませんでした。 ハッカソンに取り組む上で直面したチャレンジ 当初使用を想定していた有価証券報告書データのデータ数が時系列予測をするうえで足りないということが途中で判明したため、そこから別のデータを探し出す作業に急遽取り組む必要があった。3,4日で新しいデータが見つかった。 この部分はテーマ選定の際にも問題になりましたが、テーマはいろいろ考えられたとしても、それに必要なデータソースを集められなければ実際には分析を進めることができません。使えるデータの種類によって、取り組めるテーマが決まる、という側面がありました。 幸いZEALのサービスに、CO-ODEという日本の政府・自治体が出しているオープンデータを集積したデータベースがあり、そこに分野別家計支出データがあったので使うことにした。 具体的な取り組み内容 2つの時系列予測モデル 時系列予測モデルを2つ用意し、2つのモデルの予測値の差分をパンデミックの影響度合いとして可視化した。 つまりは、2019年12月末までをパンデミック前期間、2020年1月以降をパンデミック後期間とし、パンデミック前期間のデータで訓練したモデルをパンデミック前モデル、パンデミック後期間のデータで訓練したモデルをパンデミック後モデルとし、両者同じ将来期間のデータに対して予測をさせたうえで、その予測値の差分を取りました。 パンデミック前モデルとパンデミック後モデルの作成はいずれもSAS Viya Visual Forecastで複数のモデルを作成し、その中から精度が最も良いもの(=チャンピオンモデル)を選ぶという方法を採用した。いずれもチャンピオンモデルは、季節性モデルが選ばれた。 この辺り大変な作業のように聞こえますが、全てSAS Viya Visual Forecastによって自動処理されるのでとても簡単でした。 データの加工・整形で一工夫 必要なデータは全てCO-ODEから得ることができたが、データの加工・整形に多少の工数が必要だった。 CO-ODEの最大の売りは網羅性で、様々なソースからデータを手当たり次第かき集めてきています。使い方は使う人によって千差万別、逆に言うと使い方によってはひと手間かける必要があります。今回特に問題になったのは、時間粒度の違いでした。 データソースによって四半期粒度のもの、日次粒度のもの、と様々だったが、最終的に、月次粒度で統一した。四半期粒度のものは内挿によって月次粒度に変換した。 そこは少し試行錯誤が必要でした。一方データのETLに関しては、CO-ODEからはCSVがそのまま取り出せるので、それをそのままViyaにアップロードするだけで済みました。 成果 パンデミックによる影響を、予測値の差として可視化することに成功した。これは将来また別のパンデミックが起きたときにも参考値として利用できるものだ。 また、直接的な成果というわけではないのですが、ハッカソンを通して普段関わりのない社員同士が初めて関わりを持つようになり、社内のコミュニケーションが活性化しました。これは思わぬ収穫でした。 展望
遅ればせながら、最近STEMがSTEAMになっていることに気づきました。ここ数年でAI/アナリティクスブームの中、アナリティクスを活用し始めようとする企業が増え、どのような人材を配置すべきかという悩みをお聞きする機会が増えていますが、この、STEM⇒STEAMの進化についても、なるほどなと思うので簡単に整理してみます。 私は数学、科学、自然の間の相互接続性に常に興味を持っていました。私は空間の曲線、特に円弧や螺旋を探索するのが好きです。私はアーチの形而上学的な側面にも惹かれます。野原の真ん中にアーチを設置すれば、人々はわざわざそこを通り抜けようとするでしょう。アーチの下を通過することは変革的であり、あるものから別のものへの象徴的な変化です。それに抵抗することはできません。 (彫刻家のミカジャ・ビアンヴェヌ氏) 以前からあるSTEM教育とは STEMとは、多くの方がご存じの通り、Science, Technology, EngineeringそしてMathematicsの頭文字をとったもので、第四次産業革命のこの世の中をけん引する人材教育に必要な要素を並べています。アナリティクスの世界に長年身を置いてきた筆者の立場から、各要素に日本語訳を付与すると以下のようになります。教育の専門家からすると正確性に欠けるかもしれませんがご容赦ください。 Science-科学的な論証や根拠づけ推論をする科学的な思考(方法論) Techonology-創造物の構成要素および構成要素を作り出すための道具(道具) Engineering -創造物を作り出す実用的な実践(実践力) Mathematics-創造物の特徴の論理的な表現方法(測り方) 新しい工学製品やITシステムを想像するためには、これらを総合的に学ぶことが重要だという考え方です。大学ではもともとそれぞれの専門領域を突き詰めて研究するという考えで、サイロ化された学部・学科・研究室が作られてきました。もちろんそういった方向での探求はそれはそれで必要です。一方で、何か新しいものを創造するという目的を志向した場合には、「総合力」が必要になるということです。20年以上前ですが、筆者が大学生のころに、「総合学部」が世の中に登場し始めたのもこういう背景なのだと思います。 最近進化したSTEAM教育とは 近年、STEM教育にAを足した方が良いという流れになってきています。AはArtだけではなく、Liberal Artsも含むと言われますが、Liberal Artsをここに入れてしまうと全体の構造が分かりづらくなってしまうので、ここでは、Artすなわち、芸術家的思考が追加されたとします。 なぜ追加されたのでしょうか? 芸術家的思考とはそもそも何でしょうか?もちろん私たちが良く知る芸術は、斬新な視点や考え方で何か新しい表現をされたものに芸術性を見出すことが多いと思いますが、本質的には芸術家は、「自己の探求」です。それを象徴性をもって表現しているのだと思います。 つまり筆者が考えるに、新しい創造物、つまり既存の知と知を掛け合わせたイノベーションは、当然ながらSTEM教育を受けたところで機械的にできるものではなく、創造者の思いと象徴性が大事だということではないでしょうか。 AI/アナリティクスを活用したビジネス成長には、芸術家的思考が大事 ビジネスの世界でAI/アナリティクスを活用し持続的な成長をするためには、AI/アナリティクスをどのような目的で活用するかによって、その成果は種類が異なります。 ストラテジック - 将来の成長のため、収益最大化のための方向付けをする。(全社規模の収益最大化) タクティカル - ストラテジックな取り組みを実践する計画を立てる(事業部単位の計画) オペレーショナル - タクティカルな計画の通りに機会損失なくビジネスを遂行する(計画通りの遂行) より詳細は、こちらの筆者のブログ「そのデータ活用は攻め?守り?」を参照してください。 この3つのうち、単なる過去の実績の延長ではなく、非連続な将来の成長や収益最大化を担うのは、「ストラテジック」の領域です。不確実性の高まる世の中において、将来の予測的シミュレーションによって透明性の高いよりよい意思決定を行おうとしたり、あるいはイノベーションや、トランスフォーメーションによって過去の単純な延長としての予測ではなく、新たな市場・商品やサービス・ビジネスプロセスを生み出し、競争優位な未来を作り出す活動です。 この活動において大事なのは、他社の見よう見真似であったり、単に現在の市場ニーズだけに基づくのではなく、自社のコアコンピテンシーをとことん見つめ、自社独自の将来持続可能な戦略を打ち出すことです。これはまさに芸術家的思考にほかなりません。過去の経験を活かしつつも、過去や現在に構築された既存の枠組みにとらわれない視点・思考によって、自社あるいは社外にある既存の知と知との関係を見つめることで初めてあらたなイノベーションへとつながります。さらに、持続的という点に焦点を与えるとやはりここでも芸術の要素「象徴性」が大事になってきます。 「問題や仮説」に対して客観性や透明性をもって取り組むためには、科学的思考・数学的思考などは不可欠です。一方で、その「問題や仮説」を定義することは、道具や手段、方法論からは発生せず、芸術家的思考が必要になってきます。SASが大切にしているもの、「アナリティクス・ライフサイクル(*1)」の出発点が「問い」であること、そして、すべては「好奇心(*2)」からスタートするという考え方もまさに似たような話です。 次回は、この芸術家的思考がデータ分析基盤システムの構築にとても重要であることの話をしたいと思います。 *2) プレスリリース:SAS最新グローバル調査:「好奇心」というスキルの重要性が高まる大退職時代
本記事では、Critical Thinking Crew - Health Monitoring to Prevent Solitary Deathについて、チームメンバーに直接お話を聞き、背後にある思いやチャレンジなどについて解き明かします。 SAS Hackathon 2023 参加の背景 チームCTCのリーダー福永氏にとって今回のSAS Hackathon参加には特別な思いがあった。福永氏の個人的な活動として取り組んでいるプロボノを通して、孤独死にまつわる社会的課題があることを認識していたからだ。 日本では孤独死する人が年間25000人を超えていて、遺体が発見されるまでに平均2週間以上かかり、発見時に腐敗が進んでいることも多いそうです。これは高齢者の課題と捉えられがちですが、現役世代の孤独死も4割近くあるという報告があります。この社会的課題に取り組むという構想を2022年末頃から抱き始め、ソリューションの中身を漠然と考えていました。 それとは別にスマホカメラで脈拍を計測する手法があることを知った時、彼の頭の中で課題とソリューションが繋がり、構想が具体化し始めた。そこにタイミングよくSAS Hackathon開催の知らせが届いたためエントリーすることにした。 所属する部署においても企業のESG分析などに携わることもあり、ソーシャル・グッドのための活動としてハッカソン参加は会社も後押ししてくれました。 エントリー部門はヘルスケア&ライフサイエンス部門になった。福永氏にとって今回が3回目のSAS Hackathonの参加となった。1回目では数値データを、2回目ではテキストデータを扱ってきたが、3回目の今回では画像データを扱うことになった。 ハッカソンに取り組む上で直面した様々なチャレンジ 繁忙期と重なってしまった メンバー全員が非常に繁忙なタイミングと重なってしまったため、登録したあとにしばらく活動ができず、着手できたのは締め切りまで1か月を切ってからになってしまった。 結果的に最後の2週間でなんとか作り切ったという感じです。メンターさんが何度か相談会を設けてくれたこともあり、色々と困りごとを相談できましたし、良いペースメーカーになりました。 画像認識技術の習得と専用環境の準備 画像認識専門のエンジニアがメンバーにいなかったものの、画像認識に関するSASのブログとオープンソースの専用のライブラリを駆使して何とか乗り切った。まずは画像認識に関する知識を習得することろから始めた。 物体検知モデルのチュートリアルで骨格推定のやり方を学びました。遠回りのようで実はそれが一番手っ取り速かったと思います。 顔色から脈拍を推計する手法に関しては公開コードを探して利用することにした。姿勢推定のためのモデル訓練が短時間で収束するような工夫もした。また通常は必要になる環境構築のための工数を、Google Colaboratory(WEBブラウザ上で機械学習を実行できるサービス)を利用することで大幅に削減した。 また当初物体検知モデルをファインチューニングするうえで、与えられた環境とは別の環境を構築する必要がありました。そこはGoogle Colaboratoryを導入することで難なくクリア出来たのですが、GPUで事後訓練した後の物体検知モデルをCPU版に変更する部分でエラーが多発して大変でした。 その他、今回使用することにした物体検知モデルをSASとインテグレーションする部分の経験が無かったため新たな経験を得ることとなった。 具体的な取り組み内容 スマホで撮影した動画を利用 スマホで自身を撮影することで姿勢やバイタルを推定し、危険な状況になったら友人・家族に通知する自衛ツールを開発した。 一般的な見守りサービスですと、器材の設置や、知らない人に監視されている感じに抵抗感がある人が多く、特に比較的若い層にこの傾向があるとプロボノの活動を通して聞いたことがあります。そこでスマホを利用することにしたんです。 次に姿勢推定のための物体検知モデルをSAS Viya上に搭載した。スマホで撮影した動画から姿勢の状態を推定できるものだ。加えて、顔色の微妙な変化を波形から捉え、心拍数を推定した。最後に、姿勢と心拍数から、「倒れている」かつ「心拍数が極端に低い」等の閾値に該当する場合にアラートを発出する仕組みを構築した。 物体検知モデルの訓練とバイタル判定ルールの作成 使ったデータは2種類ある。まず物体検知モデルの事後訓練に必要な画像データについては、CTC社内にあった画像データを利用した。最終的に厳選した1500枚でモデルの事後訓練をした。 事後訓練には画像のアノテーションが必要だった。アノテーション作業の内容は、映っている人物を四角い枠線で囲い、囲われた人物がどのような姿勢でいるのか注釈を付ける、というものだ。姿勢の種類は全部で4種類、立っている、寄りかかっている、座っている、倒れている、の中からアノテーション作業者が手動で選択することになる。 そこは子会社のCTCひなり株式会社の障がい者スタッフさんの助けを借りることができ、大幅な工数削減を実現できました。1500枚のアノテーション作業を1週間で完了してもらえました。 脈拍の低下の推定に必要な心拍データについては、オープンデータを利用した。このデータは寝ている状態から運動して休息するという一連の流れを時系列で保持する波形データだ。 「こういう状況でこういう数値であれば生存を疑うレベルに該当すると言って良い」というルールを作るためにこのデータを用いました。心拍データのクレンジング作業には、Viyaのデータ準備機能を使いました。こちらはGUI上で簡単に実行できました。 成果 孤独死抑止ユースケースとして開発したが、事務作業員や建築現場の作業員のヘルスチェック、大規模災害時のトリアージ支援等、多くの応用例が考えられる。結果として技術部門賞を受賞することができた。 非常に名誉なことで会社のみんなや家族・友人もとても喜んでくれました。また、安定したViya環境を好きなだけ触れたことも大きな収穫でした。普段の業務では中々使うことのない機能を使うことができ、勉強になりました。 展望