図1は、一実施形態に係る予測モデル構築装置の機能ブロック図である。予測モデル構築装置10は、文書化部1、クラスタリング部2、リンク追加部3、モデル保持部4及び予測部5を備える。ここで、詳細は後述するが、クラスタリング部2及びリンク追加部3は図示するように繰り返し処理部20として機能することができ、矢印線L1,L2で示すように互いの処理結果を参照しながら各自の処理を交互に繰り返すことができる。図1の各部の処理は以下の通りである。
文書化部1では、予測モデル構築装置10によるモデル構築のための入力データとしての全医療データを読み込み、当該全データを構成する各対象者Xの各年代n(年齢n)における文書化された医療データD(X, n)を生成してクラスタリング部2へと出力する。
当該医療データD(X, n)への文書化とは、周知のバグオブワード(bag of words)の形式、すなわち所定の各単語の頻度(出現回数)を要素とする文書ベクトルの形式へ変換することであり、データD(X, n)は対象者Xのn歳時点での健康状態を反映したベクトルとなっている。後段側のクラスタリング部2でのクラスタリングを可能とするための前処理として、当該文書化がなされる。具体的には以下の通りである。
まず、入力される全医療データは、一連の対象者の一連の時期における健康状態を評価したものであり、具体的には例えば健康組合等のもとで実施される健康診断結果や、医師による問診の結果、あるいはレセプト(診療報酬明細書)等やこれらの組み合わせを用いることができる。
あらかじめ、当該医療データに記載されている、あるいは、記載されうることが既知の健康状態を表す所定の複数m個の単語i1, i2, …, imを用意しておき、文書化部1において対象者Xのn歳における医療データのテキストを解析することで、単語i1, i2, …, imの頻度ベクトルとして健康状態を表すベクトルD(X, n)を生成することができる。
例えば、問診データ等における特定の疾病の名称に相当する単語ibが対象者Xのn歳の医療データに存在すれば、ベクトルD(X, n)の当該ibの要素の値を「1」とし、存在しなければ同要素の値を「0」とすることができる。レセプトデータ等における処方された薬剤名などの単語ibについても同様に当該単語が存在するか否かで「1」または「0」とすることができる。また、これら単語ibが対象者Xのn歳の医療データにおいて1回以上現れていれば、当該ibの要素の値を当該現れた回数(すなわち頻度)としてもよい。
また、健康診断データにおける体重や血液検査の結果等、数値で評価される項目については当該項目に応じた所定の単語を用意しておき、評価数値に応じた所定規則(所定関数等)により当該単語の頻度を算出してベクトルD(X,n)の要素の値とすることができる。このような評価数値から単語頻度への変換に関しては、本出願人による特開2015−32013号公報(発明の名称:数値データ解析装置及びプログラム)、特願2013−163207号(数値データ解析装置及びプログラム)、特願2013−217817号(数値データ解析装置及びプログラム)を利用してもよい。
なお、上記のような数値(量的データ)の場合の他、質的データ(例えば、問診票等に記載された喫煙習慣の有無など)の場合も、同様に所定規則により対応する単語の頻度へと変換し、ベクトルD(X,n)の要素の値とすることができる。
以上のように、単語i1, i2, …, imの各々は、入力される医療データにおける健康状態の評価項目(直接的に評価するもののみではなく、レセプトデータにおける薬剤名のように健康状態を間接的に反映する項目も含む)の各々に対応する単語であり、対象者Xのn歳における当該評価結果に対して所定規則(単語i1, i2, …, imの各々に個別規則を用意しておくことができる)を適用することで、文書化部1では文書ベクトルD(X, n)を生成する。
図2に、文書化部1に入力される全医療データの模式的な例を示す。当該例に示すように、入力としての全医療データには欠損があることが想定されており、従来技術の課題において説明したように、当該全医療データにTTM等をそのまま適用しても満足な結果が得られないことが想定されている。すなわち、健康予想モデル構築を精度よく実施するには、各対象者につき数十年等の長期間に渡るデータが存在していることが望まれるが、実際には図2の例のように、数年の短期間に渡るデータしか利用できないということが多い。
なお、図2の例では、例えばAさんに関しては40歳〜43歳のデータが存在しているので、文書化部1においてAさんの医療データよりD(A,40),D(A,41),D(A,42),D(D43)という4個のデータが出力されることとなる。Gさん、Dさんといったその他の対象者についても同様に医療データが存在する年代分のデータが出力されることとなる。
クラスタリング部2では、まず、上記の文書化部1より出力された一連の対象者Xにおける一連の年代nのデータD(X,n)の全てを対象としてクラスタリングを行う。当該クラスタリングには、潜在トピックモデルに基づくLDAをリンク構造を考慮するように拡張したモデルに基づく、RTM(Relational Topic Model; 関係トピックモデル)を利用することができる。なお、RTMについては例えば以下の非特許文献3に開示されている。
[非特許文献3] Chang, Jonathan, and David M. Blei. "Relational topic models for document networks." International Conference on Artificial Intelligence and Statistics. 2009.
ここで特に、共通の対象者Xであっても年代がn歳、m歳(m≠n)と異なるデータD(X,n),D(X,m)は、別データとしてクラスタリングが行われる。例えば、図2の例におけるAさんの4つの異なる年代におけるデータD(A,40),D(A,41),D(A,42),D(D43)は、4つの異なるデータとしてクラスタリング対象となる。なお、対象者がX及びYと異なるデータD(X, n),D(Y, m)(ここで年齢nと年齢mは同じでも異なっていてもよい)は当然、別データとしてクラスタリング対象となる。
また、クラスタリングとしてRTMを適用するためには、バグオブワード形式の各データD(X,n)間のリンク構造を入力として与えておく必要がある。そこで、クラスタリング部2ではリンク構造を以下のようにして与えたうえで、RTMによるクラスタリングを実施して、クラスタリング結果を得る。
すなわち、RTMの入力のリンク構造を、同じ対象者で年代が異なるデータ間に年代が進行する方向の片方向のリンクがあるものとして定めることができる。つまり、同一対象者Xで異なる年代n,n+1のデータD(X,n),D(X,n+1)が存在する場合に、年代が進む方向の片方向のリンク構造「D(X,n)→D(X,n+1)」を設定することができる。
例えば、上記の図2の例におけるAさんの4つの異なる年代におけるデータD(A,40),D(A,41),D(A,42),D(D43)であれば、3つのリンク構造として「D(A,40)→D(A,41)」、「D(A,41)→D(A,42)」及び「D(A,42)→D(A,43)」を定めるようにすることができる。
ここで、同一対象者Xの隣接年代n,n+1間のみ、すなわち1年違いの年代間のみにリンク構造「D(X,n)→D(X,n+1)」を設定するようにしてもよいし、隣接していないが同一対象者で2年以上離れたデータD(X,n),D(X,n+k)(k≧2)があれば、当該2年以上離れた箇所にもリンク構造「D(X,n)→D(X,n+k)」を設定するようにしてもよい。この場合、離れた年数kが最小のデータ間にリンク構造を設けるようにすればよい。
例えば、上記の例D(A,40),D(A,41),D(A,42),D(D43)において仮にD(A,42)が欠損していた(当該データD(A,42)が存在せずAさんに関して4個ではなく3個のデータしかなかった)とする場合に、隣接年代間に限定して1つのみのリンク構造「D(A,40)→D(A,41)」を設定するようにしてもよいし、当該限定を設けずにこれに「D(A,41)→D(A,43)」を加えた2つのリンク構造を設定するようにしてもよい。
クラスタリング部2はさらに、上記のRTMによるクラスタリング結果における一連のクラスタ間の遷移確率を計算し、図1に分岐したデータ線L1として示すように、当該クラスタリング結果及びそのクラスタ間の遷移確率をリンク追加部3及びモデル保持部4へと出力する。
ここで説明のため、クラスタリング結果の各クラスタをCi(i=1, 2, …)と書くことにすると、クラスタCi,Cj間の遷移確率P(Ci→Cj)は、以下の第一方針及び第二方針で定まる一連のカウントを集計し、クラスタ毎に確率として規格化することにより、クラスタリング部2において算出すればよい。
すなわち、第一方針として、隣接する年代n歳及びn+1歳についての同じ対象者XのデータD(X,n),D(X,n+1)が異なるクラスタCi,Cj(i≠j)に分類されている場合、すなわち、D(X,n)∈CiかつD(X,n+1)∈Cjである場合、クラスタCiよりクラスタCjへと至る遷移が1回あったものとしてカウントすることにする。(ここで、遷移の方向Ci→Cjは、対象者Xのn歳時点での所属クラスタCiからn+1歳時点での所属クラスタCjへと向かう方向、すなわち年代の進む方向である。)
また、第二方針として、隣接する年代n歳及びn+1歳についての同じ対象者XのデータD(X,n),D(X,n+1)が同じクラスタCiに分類されている場合、すなわち、D(X,n)∈CiかつD(X,n+1)∈Ciである場合、クラスタCiよりクラスタCi自身へと至る遷移(クラスタCiの自己遷移)が1回あったものとしてカウントすることにする。(なお、第一方針でi=jとした場合が第二方針である。)
以上、第一、第二方針より、以下の式(1)のようにクラスタCi,Cj間の遷移確率P(Ci→Cj)をクラスタCiからCjへの遷移数N(Ci→Cj)に比例するように計算することができる。第一方針(i≠jの場合)、第二方針(i=jの場合)にてカウントする遷移数N(Ci→Cj)は式(2)に示されている。また、式(1)における遷移確率P(Ci→Cj)の具体的な値は、遷移元クラスタCiの各々において、全ての遷移先クラスタCjを表すインデクスj(j=iの場合も含む)につき総和した式(3)の規格化条件を満たすように計算すればよい。式(2)にて右辺の全体を覆っている"||"は数学記号として周知のように集合の元の数を表す記号であって、例えば、|A|で集合Aに属する元の数を表す記号である。また式(2)にて、数学表記として周知のように、{x|xが満たす条件}で当該条件を満たすxの集合を表す。
図3に、クラスタリング部2におけるクラスタリング結果及び対応する遷移確率の算出の例を[1]〜[5]と分けて示す。[1]は、当該例におけるクラスタリング対象となった全データの例であり、Aさんに関して40歳〜43歳の4個のデータD(A,40)〜D(A,43)と、Hさんに関して43歳〜46歳の4個のデータD(H,43)〜D(H,46)と、の全8個のデータがクラスタリング対象であるものとする。(なお、予測モデルを構築するために一般にはもっと多数のデータを用いるが、ここでは算出例の説明のため、全データを8個としている。)
[2]は、[1]の全データのクラスタリング結果であり、2つのクラスタC1,C2に分けられ、所属データがC1={D(A,40), D(A,41), D(A,42), D(H,45), D(H,46)}及びC2={D(A,43), D(H,43), D(H,44)}となっている。なお、[2]でデータ間に描いている矢印は、同一対象者データであって隣接年代n,n+1となっているデータ間に、年齢の進む方向に描いたものであり、次の[3]における遷移数のカウントの対象となる箇所に該当する。
[3]では、[2]のクラスタリング結果のクラスタC1,C2において一連の遷移数N(Ci→Cj)をカウントした結果が示されている。[4]は当該[3]のカウント結果を、遷移元クラスタを行要素とし、遷移先クラスタを列要素として行列形式に並べたものである。[5]には、当該[4]の結果を上記の式(3)を満たすように規格化した結果として、[2]のクラスタリング結果に対応する遷移行列(クラスタ間遷移確率を要素とする行列)が示されている。
[5]ではすなわち、遷移元がクラスタC1である一連の遷移のカウントN(C1→C1)=3及びN(C1→C2)=1を規格化することで遷移確率P(C1→C1)=0.75及びP(C1→C2)=0.25を求め、同様に、遷移元がクラスタC2である一連の遷移のカウントN(C2→C1)=1及びN(C2→C2)=1を規格化することで遷移確率P(C2→C1)=0.5及びP(C2→C2)=0.5を求めている。
リンク追加部3では、クラスタリング部2が出力したクラスタリング結果に対して、擬似的な構造としてのリンク構造を追加したうえで、図1に線L2として示すように、クラスタリング部2へと出力する。
こうして、図1に線L1,L2として示すように、クラスタリング部2及びリンク追加部3では互いの結果を受け取りながら、繰り返し処理部20として機能することで、繰り返し処理を行うことができる。すなわち、繰り返し処理のI回目(I=1,2, …, N)(Nは繰り返し回数を表す所定数)におけるクラスタリング部2の入力及び出力をそれぞれINPUT(I)及びOUTPUT(I)とすると、以下の関係がある。
すなわち、1回目の入力INPUT(1)は上記のように文書化部1が出力した各対象者Xの各年代nの一連のデータD(X,n)であり、これにクラスタリング部2がリンク構造を設定したうえでRTMを実施し、クラスタリング結果としてOUTPUT(1)を得る。当該結果OUTPUT(1)がリンク追加部3の1回目の処理の入力であり、リンク追加の結果がINPUT(2)としてクラスタリング部2に再び渡されることとなる。
I=2回目の以降も同様に、I-1回目のリンク追加部3の出力をI回目処理の入力INPUT(I)として線L2に示すようにクラスタリング部2が受け取り、RTMによるクラスタリングを実施し且つ結果のクラスタ間の遷移確率を求めることで、OUTPUT(I)を線L1として示すようにリンク追加部3及びモデル保持部4へと出力する。リンク追加部3は当該結果OUPUT(I)を入力として擬似リンク構造を追加したものとしてINPUT(I+1)を得て線L2に示すように出力し、I+1回目の処理をクラスタリング部2が同様に実施する。
こうして、クラスタリング部2及びリンク追加部3の各I回目の処理は共通であるが、以下のように一連の入力及び出力が形成されることとなる。
1回目のクラスタリング部2にてINPUT(1)よりOUTPUT(1)を得る。
1回目のリンク追加部3にてOUTPUT(1)よりINPUT(2)を得る。
………
I回目のクラスタリング部2にてINPUT(I)よりOUTPUT(I)を得る。
I回目のリンク追加部3にてOUTPUT(I)よりINPUT(I+1)を得る。
………
N-1回目のクラスタリング部2にてINPUT(N-1)よりOUTPUT(N-1)を得る。
N-1回目のリンク追加部3にてOUTPUT(N-1)よりINPUT(N)を得る。
N回目のクラスタリング部2にてINPUT(N)よりOUTPUT(N)を得る。
上記のように、クラスタリング部2がN回の繰り返し処理を行う場合、リンク追加部3はN-1回の繰り返し処理を行うこととなり、N回分の一連のクラスタリング結果OUTPUT(1), OUTPUT(2), …, OUTPUT(N)がモデル保持部4へとそれぞれ出力されることとなる。
ここで、各I回の処理を経るごとに、I=1回目の初回の時点にクラスタリング部2が自身で設定したリンク構造に加え、リンク追加部3で追加されたリンク構造が蓄積して追加されていくこととなる。すなわち、I回目のINPUT(I)におけるリンク集合をLINK(I)と表記することにすると、以下のようにリンクが増えていくという関係がある。
LINK(1)⊂LINK(2)⊂…⊂LINK(I-1)⊂LINK(I)⊂…⊂LINK(N-1)⊂LINK(N)
上記にて、LINK(1)はクラスタリング部2自身が設定するものであり、1回目の処理を行うリンク追加部3がLINK(1)にさらにリンク構造を追加したものとしてLINK(2)を得る。以降同様に、I回目(2≦I≦N-1)の処理を行うリンク追加部3がLINK(I)にさらにリンク構造を追加したものとしてLINK(I+1)を得る。
本発明においては、遷移情報と特徴量データとを用いてクラスタリングを行うRTMを特に次のように活用することで、長期予測にも利用可能な予測モデルを構築可能とする。ここで、文書化部1に入力される当初のデータは、そのデータ自身に欠損があることから長期予測には不向きであるのを、RTMで利用する遷移情報により補完することを目指す。しかしこの際、図2で説明したように当初のデータは保存年数が少ない(一般に2〜4年程度)ため、RTMを利用しようとしても遷移情報が短く、長期間の遷移情報が存在していないので、そのままでは長期予測の精度向上の効果は限定的である。そこで、リンク追加部3において長期的な遷移情報を「描く」ように特徴量が似通った対象者同士で擬似的なリンク構造を張ることにより、長期間の遷移情報を疑似的に構築し、クラスタリング部2において長期予測可能な予測モデルを構築できるようにする。
すなわち、各I回目のクラスタリング結果OUTPUT(I)はそれぞれが健康予測のための遷移モデルとなっており、モデル保持部4にてそれぞれ保持されると共に、後述するように予測部5において当該遷移モデルにより未来の健康状態その他を予測することが可能である。各I回目の処理により全体として複数のN個の遷移モデルが作成可能となるが、擬似的なリンクが追加されていくことにより結果としてのクラスタ数が処理回数Iの増加に伴って減少していくことが期待され、より抽象度の高いクラスタリング結果が得られるようになる可能性が高い。このため、長期的な健康推移を観察するのに適したクラスタリング結果が得られることとなる。
なお、繰り返し処理部20における繰り返し回数Nについては、図1に矢印線L3として示すように、予測モデル構築装置10のユーザ(データ分析担当者など)がマニュアルで指定すればよい。N=1と指定してクラスタリング部2が1回のみ処理を行い、リンク追加部3はリンク追加を行わないようにすることも可能である。
リンク追加部3では以上のような各I回目の共通処理として、入力データOUTPUT(I)(クラスタリング部2のI回目の出力)に対して擬似的なリンク構造の追加を行い、出力としてINPUT(I+1)(クラスタリング部2のI+1回目の入力)を得る。当該擬似的なリンク構造の追加は具体的には、次のようにすることができる。
ここでまず前提となる説明として、I回目のクラスタリング部2の出力OUTPUT(I)は、潜在トピック分析の1種であるRTMによるクラスタリング結果として、図4に示すような行列分解結果が得られていることを説明する。(リンク追加部3では当該分解結果を参照して、擬似的なリンクを設定する箇所を決定する。)
ここで、図4に示すように、RTM等の潜在トピック分析では分類対象の全データDは単語iの頻度ベクトルとして与えられている各文書u(本発明では文書化部1の出力する各データD(X,n)に相当)からなり、当該全データD間にリンク構造LINK(I)があるものとしたうえでクラスタリングを行った結果(クラスタリング部2での出力OUTPUT(I))が、文書uとトピックkとの関係を表すθ行列とトピックkと単語iとの関係を表すΦ行列との行列としての積「D=θ×Φ」として得られることとなる。なお、当該行列分解結果としての出力OUTPUT(I)において、リンク構造はLINK(I)のまま保持されている。(すなわち、RTMによるクラスタリングでは入力としてリンク構造を用いるが、RTM自体によって新たなリンク構造が出力されるものではない。新たなリンク構造はリンク追加部3が設定する。)
当該行列分解結果において、各トピックkが各クラスタに対応するものとすると、文書uのトピック比率を表すθ行列の各行は、各文書uのクラスタ所属確率と解釈できる。当該クラスタ所属確率は、各文書uにおける各トピックkのトピック比率であり、対応する元のデータD(X,n)の健康要因を表現したベクトルとなっている。従って例えば、各文書u(=各データD(X,n))は、その最大のトピック比率の値のトピックに対応するクラスタに所属しているものとして、クラスタリング結果を解釈することができる。
そこで、リンク追加部3では上記行列分解結果としてのOUTPUT(I)における各文書u(=各データD(X,n))のトピック比率(θ行列における文書u=データD(X,n)の該当行ベクトル)を参照して、似通ったトピック比率(すなわち健康要因)にあると判定されるデータ同士の間に、リンクを追加するようにすることができる。
ここで、似通ったものを判定するためには、トピック比率間の距離を求めればよい。すなわち、データD(X,n)の分解結果OUTPUT(I)におけるトピック比率(のベクトル)をTP(X,n,I)と書くことにすると、両者の間にリンク構造がまだ設定されていないデータD(X,n)と他のデータD(Y,m)(ここで、Y=Xの場合又はm=nの場合も含む)との間で、対応するトピック比率TP(X,n,I)及びTP(Y,m,I)の間の距離d(TP(X,n,I), TP(Y,m,I))を求め、閾値判定で当該距離が近いと判断される場合に、リンク追加部3によって新たなリンク構造を追加するようにすることができる。
ここで、トピック比率のベクトルTP(X,n,I)及びTP(Y,m,I)の間の距離d(TP(X,n,I), TP(Y,m,I))に関しては、例えば以下に列挙するような周知の手法のいずれかで算出するようにすればよい。
・ユークリッド距離
・アダマール積(内積)
・カルバック・ライブラー情報量(Kullback-Leibler divergence)
・重み付きユークリッド距離
・重み付きアダマール積
なお、上記の重み(重み付きユークリッド距離又は重み付きアダマール積として距離を計算する際の重み)については、トピック比率の各要素についてその値が定義される重みであり、RTMで標準的に用いられている重みを用いるようにしてもよいし、以下の[手順1]及び[手順2]のようにして求めた重みを用いてもよい。
[手順1] まず、当該[手順1]にて対象とするデータについて述べる。I回目の分解結果OUTPUT(I)に対しては、クラスタリング部2が当該分解結果をクラスタリング結果と解釈して前述の式(1)〜(3)によりクラスタ同士の遷移確率を求めている。従って、当該分解結果OUTPUT(I)は、クラスタ及びクラスタ間の遷移確率として構成されたネットワーク構造とみなすことができる。
そこで、[手順1]として、リンク追加部3において周知のSpinglass等のネットワーク構造を考慮したネットワーククラスタリングを当該OUTPUT(I)におけるネットワーク構造のデータに対して実施し、そのクラスタリング結果OUTPUTnetwrok(I)を得る。
なお、ネットワーククラスタリングの手法としては、Spinglass(スピングラスアルゴリズム)の他にもマルコフクラスタリング(Markov clustering)、混合メンバシップブロックモデル(Mixed membership stochastic blockmodel; MMSB)等の周知の手法を利用することができる。
[手順2] 当該ネットワーク構造を考慮したクラスタリング結果OUTPUTnetwork(I)における各クラスタを対象として、前述の式(1)〜(3)と全く同様にして各クラスタにおける自己遷移確率を求め、当該自己遷移確率の値を、各クラスタに対応するトピック比率に対して付与する重みとして採用する。
ここで、ネットワーク構造を考慮したクラスタリング結果OUTPUTnetwork(I)においては当該クラスタリングする前のクラスタリング結果OUTPUT(I)のうち互いに定常的に遷移すると判定されるものが統合されることとなる。図5にその模式的な例を示すように、[1]に示すOUTPUT(I)ではクラスタC1,C2,C3に分かれていたのに対して、[2]に示すネットワーク構造を考慮したクラスタリング結果OUTPUTnetwork(I)ではCM1={C1,C2}及びCM2={C3}の2つのクラスタ(コミュニティ)となる。(なお、図5でクラスタ間の線はある程度の大きさの遷移確率がクラスタ間にあることを表すものとする。)
また、上記の[手順2]で求まった重みを用いて重み付きユークリッド距離や重み付きアダマール積を計算するに際しては、当該統合されたクラスタ同士(コミュニティ)におけるトピック比率同士の値を足し合わせて得られる新たなトピック比率を用いて、自己遷移確率を重みとして利用することで計算を行えばよい。
例えば図5の例で、あるデータD(X,n)の統合前のクラスタリング結果OUTPUT(I)のトピック比率TP(X,n,I)がC1,C2,C3の各要素につき(r1, r2, r3)であったとすると、統合後のクラスタリング結果OUTPUTnetwork(I)におけるCM1,CM2の要素におけるトピック比率として(r1+r2, r3)を用いるようにすればよい。そして、CM1,CM2のそれぞれにおける自己遷移確率を重みとして用いて各種距離を計算すればよい。
なお、以上の[手順1],[手順2]の手法では自己遷移確率を重みとしたが、これは次のような考察に基づいたものである。すなわち、自己遷移確率が高いクラスタ(OUTPUTnetwork(I)におけるコミュニティ)を時間的な定常性が高いクラスタとみなして、重みを大きくする。時間的に動かないクラスタの方が健康要因としての説明力は高いことになるからである。
なおまた、上記のOUTPUTnetwork(I)はリンク追加部3がリンクを追加するための距離計算の重みの計算のためのみに(いわば中間データとして)用いられるものであり、予測モデルとして出力されるのはOUTPUT(I)であることに注意されたい。
また、以上説明したリンク追加部3では各I回目の処理において閾値判定により距離が近いと判断されるデータ同士であって、且つそれまでの処理においてリンク構造が設定されていないデータ同士の間に全てリンク構造を追加するものとした。ここで、閾値判定する値については各I回毎に変化するものとして、あるいは各I回の全てに渡って固定値として、線L3で示すようにユーザ側から予め与えておいてもよい。また、当該閾値判断によりリンク構造を追加する際に、さらに別の条件を課したうえで追加する判断を下すことも可能であるが、これについては後述する。
モデル保持部4では、クラスタリング部2が出力した各I回のクラスタリング結果OUTPUT(I)を保持し、線L4に示すように当該データを(確認等をするために)ユーザの参照に供すると共に、予測部5で健康予測等を実施するためのモデルとして提供する。ユーザの参照に供する際は種々の周知の表示手法を利用することができ、例えば図5の[1]に示したような形で、クラスタリング結果OUTPUT(I)における各クラスタ及びクラスタ間の遷移確率を可視化するようにしてもよい。
予測部5では、ユーザ指示に従い、モデル保持部4で保持されている予測モデル(複数のOUTPUT(I)のうちユーザ指示で指定されたもの)を用いて各種の予測を行い、予測結果をユーザへと出力する。一実施形態では、健康状態の経年遷移の予測を行うことができ、別の一実施形態では、医療費の予測を行うことができる。以下、当該各実施形態をそれぞれ説明する。
(健康状態の経年遷移の予測について)
ユーザ指示としては、次の第一指示〜第三指示を与える。
まず、第一指示として、予測したい対象者(実際の対象者でも架空のものでもよい)の特定年代における健康データを入力として与える。当該入力は、文書化部1の出力と同様の単語頻度ベクトルの形式で与える。また、第二指示として、クラスタリング部2で得られた複数のクラスタリング結果OUTPUT(I)(I=1,2, …, N)のうちのいずれを予測モデルとして用いるかを指示する。さらに、第三指示として、当該予測対象者に当該予測モデルを適用することで、その何年先の健康状態を予測するか、という指示を与える。以上の指示を与えることで、予測部5では当該予測対象者に当該予測モデルを適用することで推定される、当該指定した年数だけ将来における健康状態を出力することができる。
図6は、当該予測モデル及びその適用結果の例を2つ示す図である。図6にて[1]がクラスタリング結果としてのOUTPUT(2)(C1,C2,C3の3クラスタに分類された場合を例とする)によって3年後の予測を実施する場合の例を示す。図6にて[2]がクラスタリング結果としてのOUTPUT(3)(C10,C20の2クラスタに分類された場合を例とする)によって3年後の予測の実施をする場合の例を示す。
図6の[1]では予測対象者のデータがn歳の場合に、3年後のn+3歳を予測する例が示されており、当該示すように、予測はクラスタリング結果C1,C2,C3のいずれかに各年齢の健康状態があるものとして、年齢を経るごとに所属クラスタがどのように変化するか、という形によってなされる。
例えば[1]に太線で示すように、n歳の時点ではクラスタC1の健康状態であり、n+1歳の時点ではクラスタC2の健康状態であり、n+2歳の時点ではクラスタC2の健康状態であり、n+3歳の時点ではクラスタC3の健康状態である、という形で、クラスタリング結果OUTPUT(2)をモデルとして用いた際の対象者の健康状態の推移が予測される。同様に[2]で太線で示すように、n歳の時点ではクラスタC10の健康状態であり、n+1歳の時点ではクラスタC20の健康状態であり、n+2歳の時点ではクラスタC20の健康状態であり、n+3歳の時点ではクラスタC10の健康状態である、という形で、クラスタリング結果OUTPUT(3)をモデルとして用いた際の対象者の健康状態の推移が予測される。
従って、上記の第一指示〜第三指示を入力として受け取った予測部5では、対象者データ(n歳時点でのデータとする)が当該n歳時点でいずれのクラスタに属するかと、n歳以降どのように所属クラスタを遷移するか、ということを計算する。当該計算は、前者(n歳での所属クラスタの決定)及び後者(n歳以降の所属クラスタの遷移)に関してそれぞれ以下のように実施することができる。
前者(n歳での所属クラスタの決定)に関しては、クラスタリング部2がRTM等の潜在トピック分析でクラスタリング結果を得ている場合であれば、前述の図4に示すような行列分解結果が得られているので、当該分解結果に従って対象者のデータがいずれのクラスタに属するかを決定すればよい。
すなわち、予測部5では、n歳時点での予測対象データ(バグオブワード形式)を当該分解結果「θ×Φ」におけるθ行列の各行と同様のトピック比率の形式へと変換し、最大トピック比率を与えているクラスタに所属しているものとして、所属クラスタを決定することができる。当該変換結果は、n歳時点での予測対象データを文書化部1(又はバグオブワード形式へ変換済みであればクラスタリング部2)へ入力される全データ内に含めておくことで、分解結果「θ×Φ」のθ行列該当箇所を参照することにより取得可能である。あるいは、バグオブワード形式の予測対象データ(分解結果「D=θ×Φ」の行列「D」の行ベクトルに相当)に、分解結果「θ×Φ」における「Φ」行列の逆行列(ムーアペンローズの一般逆行列)を乗ずることにより、対応するトピック比率を求めてもよい。
また、後者(n歳以降の所属クラスタの遷移)に関しては、前者で得られたn歳時点での所属クラスタを経路の始点に設定したうえで、図6の[1]に示すような状態遷移系列に対して、周知のビタビアルゴリズムを適用し、最大確率を与える経路として、クラスタ間遷移を計算することができる。ここで、状態間の遷移確率には、クラスタリング部2で求めたクラスタ間の遷移確率をそのまま利用すればよい。
(医療費の予測について)
予測部5へ与えるユーザ指示としては、上記の健康状態遷移の場合と同様の第一〜第三指示を与えることができ、当該指示のもと健康状態の遷移ではなく、医療費の予測を実施することも可能である。
この場合、上記と同様に健康状態の遷移を計算したうえで、各健康状態(各クラスタ又は各コミュニティ)に所属している際の1年間の医療費を予めモデル値として与えておいた上で、指定された予測モデル上において計算された健康状態遷移系列(n歳の所属クラスタ、n+1歳の所属クラスタ、…、n+k歳の所属クラスタ)において当該モデル値の総和を取ることで、医療費(n歳からn+k歳の時点までの総医療費)を予測することができる。なお、医療費はn歳〜n+k歳の時点までの総医療費としてでなく、第三指示で指定した予測対象未来のn+k歳の時点のみでの医療費を予測させるようにしてもよい。n歳〜n+k歳の総医療費か、n+k歳の時点のみでの医療費か、いずれを予測させるかに関しては、ユーザが第四指示として指定すればよい。
医療費予測の別実施形態として、上記の第一〜第三指示及び第四指示をユーザより入力として受け取って、第一指示で指定された予測対象者のn歳時点でのデータを図4でθ行列として説明したようなトピック比率(各クラスタへの所属確率)の形式へと変換し、当該トピック比率を入力として、第四指示で定義された医療費を出力するようにしてもよい。
この場合、学習データにより予めサポートベクトル回帰その他といった機械学習等で学習されておいた関係を適用することで、予測値としての医療費が出力されるようにすればよい。
すなわち、学習データとして、サンプル対象者のn歳時点でのデータ(トピック比率)と当該サンプル対象者の将来のn+k歳時点での医療費とを与えたものを多数用意しておく。つまり、「サンプル対象者のトピック比率」、「サンプル対象者の現在年齢n歳」及び「予測対象未来を設定するk年」の3つの条件に関しての多数の組み合わせのもとでの医療費(n+k歳の未来における当該サンプル対象者の医療費)を学習データとして用意しておく。
当該学習データに対して機械学習を適用することによって「予測対象者のトピック比率」、「予測対象者の現時点での年齢n」及び「予測対象未来のk年後」の3つの情報を入力として、医療費(第四指示に従い、n歳〜n+k歳の総医療費又はn+k歳における医療費)を出力する関係式を求めることができる。当該機械学習された関係式により、医療費予想を実施することができる。
以上、健康状態の遷移と医療費の予測を説明したが、いずれの予測の場合であっても、短期での予測を行う場合には予測モデルOUTPUT(I)のうちIの番号が小さい方を、長期での予測を行う場合には予測モデルOUTPUT(I)のうちIの番号が大きい方を、予測モデルとして利用するように指定することが好ましい。予測部5では、繰り返し回数Iを紐付けた形でユーザに対して予測モデルを提示し、繰り返し回数Iがより少ない方の予測モデルが短期予測向けであり、且つ繰り返し回数Iがより多い方の予測モデルが長期予測向けである旨をユーザに通知するようにしてよい。ユーザが短期予測及び長期予測の両者を行おうとしている際は、当該通知に従うもの(回数Iが少ない方の予測モデルを短期向けとし回数Iが多い方の予測モデルを長期向けとする)のみをユーザに選択させるようにしてよい。(例えばI=2回の予測モデルをユーザが短期予測に用いた場合、長期予測はI≧3の予測モデルを利用するように、ユーザに選択させるようにしてよい。)短期、中期、長期といったような3以上の予測を行おうとしている場合も全く同様に、短期側ほど回数Iの少ない予測モデルを、長期側ほど回数Iの多い予測モデルを利用させるようにしてよい。
以下、本発明における(説明の流れの観点からの)補足的事項を(1)〜(8)と分けてそれぞれ説明する。
(1)リンク追加部3においてリンク構造を追加する際に、2つのデータ間の距離に対する閾値判定以外の条件(以下「ポリシー」とする)も設定することに関して
以下のような種々のポリシーの任意の組み合わせを設定することができる。
(ポリシー1)年齢の低い対象者から高い対象者へ向けてのみ、リンク構造を設定するようにする。
(ポリシー2)対象者の全体を医療費の似通った者同士のグループ(例えば、0〜1万点の低医療費グループと、1〜3万点の中医療費グループと、3万点以上の高医療費グループの3グループなど)に分け、グループが共通する対象者データ間のみにおいてリンク構造を設定するようにする。
(ポリシー3)上記ポリシー2を変更したポリシーとして、同じく対象者全体を医療費に基づくグループ分けを行い、リンク構造「D(X,n)→D(Y,m)」を設定する対象を、リンク元のD(X,n)が属するグループよりも医療費の高いグループにリンク先のD(Y,m)が属している場合のみに限定するようにする。ここで、リンク元のD(X,n)が既に医療費の最高となるグループに属している場合は、それ以上のリンク構造を設定しないようにしてもよいし、最高医療費の同グループに属する他のデータD(Y,m)へのリンク構造の設定を許可するようにしてもよい。
当該ポリシー3は、突発的に医療費が高くなる場合のモデル化を可能とするものである。
なお、ポリシー2、3を利用する場合は、文書化部1から出力される各データD(X,n)に関して予め、当該対象者Xのn歳時点での医療費のデータを取得しておき、閾値判定で医療費の高低に基づくグループ分け結果を予め得ておけばよい。
図7は、上記のポリシー1を適用してリンク構造を設定した例を示す図であり、[1]に示すI=1回目の処理でクラスタリング部2が自身で設定したLINK(1)に基づくクラスタリング結果OUTPUT(1)に対して、I=1回目の処理でリンク追加部3がリンクを追加したものがLINK(2)として[2]に示されている。
図7にてリンク構造はデータ間の矢印として示されており、[2]にて追加されたリンク構造は「D(A,41)→D(B,42)」及び「D(C,40)→D(B,41)」であって、ポリシー1を満たすものに限られている。
特に、リンク追加部3にてトピック比率間の距離を前述のカルバック・ライブラー情報量として計算するような場合は、方向性を考慮した距離が計算される。当該計算によって図7の例において例えば「D(B,41)→D(A,40)」の距離が近いと判定されたとしても、年齢が下がる方向のリンクとなってしまうため、ポリシー1によりリンク構造を設定することは行わないようにすることができる。
また、ユークリッド距離のように方向性のない距離で計算を行い閾値判定で近いものを判定した際に、ポリシー1によって実際に設定するリンク構造における方向を自動決定するようにしてもよい。ここで、年齢が同一の場合は、リンク構造を設定してもよいし設定しないようにしてもよい。
(ポリシー4)あるデータD(X,n)をリンク元とするリンクは1個のみを他者Yに向けて設定するようにする。(ただし、初回処理のLINK(1)においてクラスタリング部2が設定したリンク構造は当該ポリシー4の判定対象外とするようにしてもよい。)
(2)クラスタリング部2における各I回のクラスタリングにおけるクラスタ数の決定について
クラスタリング部2では繰り返し処理の各I回においてRTM等の潜在トピックモデルに基づくクラスタリングを行い、INPUT(I)よりクラスタリング結果OUTPUT(I)を得る。ここで、各I回目のクラスタリング結果OUTPUT(I)を構成しているクラスタ数CL(I)を指定する必要があるが、当該クラスタ数CL(I)はユーザより図1で線L3として示すようにマニュアル設定したものを用いてもよいし、以下のようにして最適と判定されるクラスタ数を自動決定するようにしてもよい。なお、マニュアル設定する際は、回数Iが増すにつれてクラスタ数CL(I)が減るように設定することが好ましい。
まず、ユーザ指定等により当該INPUT(I)をクラスタリングするクラスタ数につき、ユーザ側から一連の候補を与えておき、各候補のクラスタ数において実際にクラスタリング部2がクラスタリングを実施し、当該結果より図8のようなクロス集計表を作成し、クロス集計表の数値に基づいて当該結果のAIC値を算出する。(当該AIC値の算出法は後述する。)そして、各候補のクラスタ数のそれぞれのAIC値のうち、最小値となっているようなクラスタ数が最適な分類結果を与えているものとして、クラスタ数CL(I)を定め、当該クラスタ数CL(I)における結果をクラスタリング部2からの出力OUTPUT(I)として採用する。
図8には、指定したクラスタ数がmの場合のクロス集計表の例が示されている。当該クラスタ数m個にクラスタリングされた各クラスタCk(k=1,2,…,m)につきクラスタ内への遷移数n1kは、当該クラスタに同一人物Xであって隣接年代n,n+1の両データが存在する個数、すなわち前述の式(2)と同様の形式の自己遷移の個数として、以下の式(4)のようにカウントすることができる。
n1k=|{(X,n)|D(X,n)∈CkかつD(X,n+1)∈Ck }| …(4)
同様に、クラスタ外への遷移数n2kは、当該クラスタCkに人物Xのn歳時点のデータが存在したが、次のn+1歳の時点で当該人物Xのデータは別のクラスタCj(j≠k)に存在しているというケースのカウント数として求めることができる。すなわち、形式上はやはり前述の式(2)と同様で、以下の式(5)のようにカウントすることができる。
n2k=|{(X,n)|D(X,n)∈CkかつD(X,n+1)∈Cj (j≠k) }| …(5)
なお、予測部5において医療費予測を実施する場合は、当該医療費予測に適したクラスタリング結果OUTPUT(I)を得るために最適なクラスタ数CL(I)を決定するために、図8のクロス集計表に代えて図9に示すクロス集計表を用いて後述のAIC値を算出し、最小のAIC値を与えるようなクラスタ数CL(I)を決定し、その際の結果をOUTPUT(I)として採用するようにしてもよい。
図9ではすなわち、各クラスタCk(k=1,2,…,m)において、属するデータD(X,n)に対応する医療費が高いと判定される数をn1kとしてカウントし、対応する医療費が低いと判定される数をn2kとしてカウントすればよい。なおここで、各データD(X,n)に対しては、実際に費やした医療費を予め与えておく必要がある。また、医療費の高低は閾値以上か閾値を超えないかで判断すればよい。
(2')上記(2)ではクラスタリング部2における各I回のクラスタリングにおける適切なクラスタ数の決定のために、自己遷移や医療費の高低に基づくカウントで作成されるクロス集計表からAICを算出し、AIC値に従って最適なクラスタ数を決定する手法を説明した。当該手法は、医療データ関連のクラスタリング全般に関して同様に適用可能であり、リンク追加部3において重みを計算するための中間データとして、前述の[手順1],[手順2]によりネットワーククラスタリングを行う際の適切なクラスタ数(クラスタ同士を統合したコミュニティ数)を決定する際にも全く同様に利用可能である。この場合、図8や図9のようなクロス集計表をネットワーククラスタリングの結果の各コミュニティに関してカウントして作成するようにすればよい。
(3)文書化部1では、各対象者Xの各年代n(年齢n)における文書化された医療データD(X, n)を生成するものとし、当該年代nは1年毎に与えられているものとして以降の説明を行ったが、1年に限らず、任意の長さの所定期間(2年あるいは半年など)ごとの年代nで区切ってデータD(X,n)を生成してもよい。この場合、図6で説明したような健康推移モデルの推移のステップ幅も、当該任意の長さの所定期間となる。例えば、2年毎のデータD(X,n)を利用する場合、健康推移モデルは2年毎の状態を与えるものとなる。
(4)文書化部1では、入力される健診データその他の医療データを、各対象者Xの各年代nにおける健康状態に対応するバグオブワードとしてのデータD(X,n)に変換するものとして説明したが、入力されるデータが予め当該バグオブワードの形式に変換されている場合、文書化部1は省略されてもよい。
(5)クラスタリング部2の別の実施形態について
クラスタリング部2では繰り返し処理I=1,…,Nの各回においてRTMでクラスタリングを行うものとし、初回のI=1回目では自身でリンク構造を設定するものとして説明した。別の実施形態として、初回のI=1回目ではリンク構造の設定を行わず、RTMではなくLDAによってクラスタリングを行い、OUTPUT(1)を出力するようにしてもよい。以降の処理については、以上説明してきたのと全く同様に可能である。
すなわち、上記OUTPUT(1)に対してリンク追加部3がリンクを追加してINPUT(2)となし、I=2回目以降の各回においてはクラスタリング部2ではRTMでクラスタリングを実施すればよい。従って、当該初回のリンク設定を行わない実施形態では、LINK(1)が空集合となり、I=2回目以降の処理は以上と同様となる。
(6)リンク追加部3におけるリンク追加判断の各種実施形態について
一実施形態では、リンク追加部3におけるトピック比率間の距離の閾値判定に関して、一律の閾値を用いる代わりに、次のようにしてもよい。すなわち、リンク構造が設定されていない孤立したデータに関しては、閾値判定は行わないようにして、距離が最も近いデータに必ずリンク構造を設定するようにしてもよい。上記の(1)で説明したポリシーを満たすデータのうち、最も近いデータにリンク構造を設定するようにしてもよい。
一実施形態では、リンク追加部3におけるトピック比率間の距離の閾値判定に関して、I回目の判断で利用する閾値TH(I)を、Iが増加するにつれ減少するような所定設定のものを利用するようにしてもよい。当該閾値判定により、Iが小さい最初のうちは似通った上位のデータ同士の間のみでリンク構造が設定され、Iが大きくなるにつれ似通った度合いが下位のデータ同士の間でもリンク構造が設定されるようにすることができる。
(7)上記の(2)における最適なクラスタリング結果を与えるクラスタ数CL(I)を決定する際のAIC値の算出について
図10は、図8あるいは図9のクロス集計表を一般化した表である。すなわち、図10の集計数nijは図8、図9等と共通のものを一般の場合として示しており、何らかの基準に該当するか否かを縦軸(行要素)として、クラスタ等の分類結果を横軸(列要素)として、構成されている。
すなわち、図8の「クラスタ内へ遷移」及び「クラスタ外へ遷移」がそれぞれ、図10の「該当」及び「未該当」に対応する。また、図9の「医療費が高い」及び「医療費が低い」がそれぞれ、図10の「該当」及び「未該当」に対応する。
図10に示すように、当該クロス集計表における集計数nijにより、ただちに周辺度数ki(i=1,2,…,m)、h,N-h等を計算することができ、これらの値を用いて以下のようにAIC値を計算することがきる。
当該AIC値は、次のいずれかの手法の値として求める。第一手法では、当該クロス集計表に対して従属モデルを適用することにより、以下の[式1]のような従属モデルのAIC値AIC(DM)[ここでDMはDependent Modelの略である]として求める。第二手法では、さらに、当該クロス集計表に対して独立モデルを適用して、以下の[式2]のような独立モデルのAIC値AIC(IM)[ここでIMはIndependent Modelの略である]を求めたうえで、[式3]のように、従属モデルのAIC値から独立モデルのAIC値を引いた差の値として、求める。
なお、[式1]等においてMLL(DM)は、従属モデルにおける最大対数尤度であって、[式1-2]のような値として求めることができる。また、[式2]等において、MLL(IM)は、独立モデルにおける最大対数尤度であって、[式2-2]のような値として求めることができる。なお、上記の各式における文字は、図10のクロス集計表において説明した通りであり、以降説明する各式においても同様である。
以下、従属モデルにおける最大対数尤度MLL(DM)と、独立モデルにおける最大対数尤度MLL(IM)と、がそれぞれ、上記の[式1-2]及び[式2-2]のように算出されることと、当該算出されたそれぞれの最大対数尤度を用いて、従属モデルにおけるAIC値が[式1]のように算出され、また、独立モデルにおけるAIC値が[式2]のように算出されることを説明する。
図11は、[式1]及び[式1-2]として示した従属モデルにおける算出を説明するための、図10のクロス集計表に対応する従属モデルにおける確率の表である。当該表に示されている確率により、以下のように算出がなされる。
まず、従属モデルの確率変数は以下の通りである。
一方、図11に示された2m個の全てが自由に動かせるわけではなく、以下の制約がある。
従って、従属モデルの自由度は2m-1であり、AICの定義(AIC=-2×MLL+2×自由度)より、[式1]の2*(2m-1)の項が得られる。さらに、上記確率変数より対数尤度LLを計算すると、以下のようになる。
上記対数尤度LLを最大にするときの条件は以下である。
上記最大とする条件より、以下が得られる。
上記と同様にして、さらに
等が得られる。そこで、
とすると、
等となるので、それぞれを足すと、
となるから、以下の場合が最尤推定となる。
従って、上記の値をLLに代入することで、その最大値として前述の[式1-2]が得られる。
図12は、[式2]及び[式2-2]として示した独立モデルにおける算出を説明するための、図10のクロス集計表に対応する従属モデルにおける確率の表である。当該表に示されている確率により、以下のように算出がなされる。
まず、図10の周辺度数kmと、対応する図12の周辺確率qmと、において、以下のような制約がある。
従って、自由に動かせるのはq1〜qm-1とpとであるから、パラメータの自由度は(m-1)+1=mであって、AIC算出の定義より、[式2]の2×mの項が得られる。また、独立モデルの確率変数は以下の通りとなる。
従って、その対数尤度LLは以下の通りとなる。
対数尤度の最大値を与える条件を求めるべく、これをp、q1・・・で偏微分してゼロに等しいとすることにより、以下等の一連の計算ができる。
従って、
となり、また、
とすると、
等となるので、それぞれ足して、
となり、
となるから、最大尤度は
等において得られることとなる。従って、上記の値をLLに代入することで、最大値としての[式2-2]が得られる。
(8)本発明は、コンピュータを予測モデル構築装置10の各部1〜5の全て又はその任意の一部分として機能させるプログラムとしても提供可能である。当該コンピュータには、CPU(中央演算装置)、メモリ及び各種I/Fといった周知のハードウェア構成のものを採用することができ、CPUが予測モデル構築装置10の各部の機能に対応する命令を実行することとなる。