【文献】
前田 博、外3名,階層結合された分解型ファジィモデルによる台風の進路予測モデル,知能と情報,日本,日本知能情報ファジィ学会,2003年08月15日,第15巻,第4号,p.429−439
【文献】
秋月 俊寛、外4名,トラヒック予測のための外的要因に関する一考察,電子情報通信学会技術研究報告,日本,社団法人電子情報通信学会,2011年02月28日,第110巻,第455号,p.19−24
【文献】
高田 義広、外3名,ニューラルネットを用いたソフトウェア信頼性予測モデル,電子情報通信学会論文誌,第J77−D−I巻,第6号,日本,社団法人電子情報通信学会,1994年06月25日,p.454−461
【文献】
石橋 直人、外3名,需要予測における誤差要因を考慮した信頼区間推定手法,電気学会論文誌C,日本,一般社団法人電気学会,2016年06月01日,第136巻,第6号,p.775−783
(58)【調査した分野】(Int.Cl.,DB名)
予測の対象となる対象項目及び前記対象項目に関連する関連項目群、に対する過去の実績値を含む過去データ群の一部である学習データ群と、前記関連項目群のうち予測に用いる項目の候補である素性項目群が定義された素性定義情報とに基づいて、前記過去データ群の一部であり検証の対象となる各検証データの対象項目に対する各予測値を予測する予測部と、
前記各検証データそれぞれについて、前記予測部が予測した各予測値と、前記対象項目に対する実績値との誤差を算出する誤差算出部と、
前記素性定義情報に含まれる素性項目群から選択された複数の素性項目と、当該複数の素性項目に対する値からなる複数の素性組合せそれぞれについて、前記素性組合せに該当する複数の検証データに関する複数の前記誤差の代表値を算出する素性組合せ誤差算出部と、
前記複数の素性組合せの中から、各素性組合せに対応する前記誤差の代表値に基づいて特定された、特定素性組合せにより定義される新素性項目を生成し、前記素性定義情報に追加する新素性項目追加部と、
を備えることを特徴とする情報処理装置。
前記新素性項目追加部は、前記新素性項目を特定した後、前記新素性項目が仮追加された仮素性定義情報に基づいて算出された前記検証データ群に関する誤差の平均値が、前記新素性項目が仮追加される前の前記素性定義情報に基づいて算出された前記検証データ群に関する誤差の平均値よりも小さい場合に、前記新素性項目を前記素性定義情報に追加する、
ことを特徴とする請求項1に記載の情報処理装置。
【発明を実施するための形態】
【0021】
以下、本発明の実施形態について説明する。
【0022】
<第1実施形態>
図1には、本実施形態に係る情報処理装置10の構成概略図が示されている。情報処理装置10としては、一般のコンピュータ、例えばサーバやパーソナルコンピュータであってよい。
図1に示すように、情報処理装置10は、記憶部12及び制御部14を含んで構成される。また、
図1には示されていないが、情報処理装置10は、例えばネットワークアダプタなどから構成され、インターネットなどの通信回線を介して他の装置と通信を行うための通信部、例えば液晶パネルなどから構成され、情報処理装置10の処理内容(例えば後述の予測値など)を表示するための表示部、例えばマウス、キーボード、あるいはタッチパネルなどから構成され、利用者(ユーザ)からの指示を入力するための入力部などを含んでいてもよい。
【0023】
情報処理装置10は、過去の実績データに基づいて、未来を予測する処理を行う装置である。本明細書においては、情報処理装置10がある店舗(予測対象店舗)の予測対象日における売上を予測する処理を例にして説明を行うが、情報処理装置10が予測するものはこれに限られない。
【0024】
記憶部12は、例えばハードディスク、ROM(Read Only Memory)あるいはRAM(Random Access Memory)などから構成される。記憶部12には、情報処理装置10の各部を動作させるための情報処理プログラムが記憶される。あるいは、記憶部12には、各種制御データあるいは各種処理データなどが記憶される。さらに、
図1に示すように、記憶部12には過去データDB20が定義され、また、素性定義情報22が記憶される。
【0025】
過去データDB20には、予測対象である対象項目に対する過去の実績値、及び、対象項目に関連する関連項目群に対する過去の実績値が蓄積されている。本実施形態では、対象項目は予測対象店舗の売上であり、過去データDB20には、予測対象店舗の過去の売上の実績値が格納される。また、本実施形態では、関連項目群は売上に関連する各種項目(詳細後述)であり、過去データDB20には、関連項目群に対する各実績値が格納される。過去データDB20には、これらのデータがユーザによって格納されてもよいし、自動的に収集されて格納されるようになっていてもよい。
【0026】
図2に、過去データDB20の内容例が示されている。
図2においては、過去データDB20がテーブル形式で示されているが、過去データDB20のデータ形式としてはこれに限られない。本実施形態では、日毎に過去データDB20にデータ(レコード)が蓄積されるようになっている。
図2に示されるように、過去データDB20には、予測対象店舗の売上の実績値が格納されており、また、売上に関連する関連項目として、年、月、日、天気、最高気温、最低気温などに対する実績値が格納されている。もちろん、関連項目としては、売上に対する影響の大小に関わらず、様々な項目を有していてもよい。例えば、曜日、休日か平日か、湿度、風速、店前交通量、平均株価、為替レートなど、種々の項目を有し得る。
【0027】
本実施形態においては、過去データDB20における1つのレコードが、ある1日の売上の実績値と、関連項目群に対するその日の実績値が関連付けられたデータとなっている。本明細書では、過去データDB20における1つのレコードを「過去データ」と記載する。つまり、過去データDB20には、過去データが逐次蓄積されることで、過去データ群が格納されることになる。本実施形態では、過去データDB20には、予測対象店舗に関する2014年から2016年までの3年間分の過去データが蓄積されているものとする。
【0028】
なお、本実施形態における過去データDB20においては、各過去データに対して、当該過去データを一意に識別可能な過去データIDが付されている。
【0029】
詳細は後述するが、情報処理装置10においては、過去データDB20に格納された過去データ群に基づいて、予測対象店舗の予測対象日における予測売上値を予測する。具体的には、各過去データの各関連項目に対する実績値と売上の実績値との関係を学習することで、各関連項目の値から売上値を予測するための予測モデルが構築され、当該予測モデルと、予測対象日の各関連項目に対する値とに基づいて、予測売上値が予測される。
【0030】
素性定義情報22は、予測モデルの構築に用いる項目の候補である複数の素性項目からなる素性項目群を定義する情報である。素性項目は、過去データに含まれる関連項目群に基づく項目である。上述のように、過去データに含まれる関連項目群には、対象項目である売上に対して関連性の高い項目もあれば、関連性の低い項目も含まれ得る。一般に、対象項目と関連性の低い関連項目の値までをも考慮して予測モデルを構築した場合、当該予測モデルの予測精度はあまり良くならない。逆に、適切な関連項目の値に基づいて予測モデルを構築すれば、当該予測モデルの予測精度が向上され得る。つまり、素性定義情報22において適切な素性項目群が定義されることによって、関連項目群の中から適切な項目を用いて予測モデルを構築することができるから、予測モデルの予測精度を向上させることができる。このように、素性定義情報22において定義される素性項目群は、予測モデルの予測精度、ひいては情報処理装置10における予測処理の予測精度に大きく関わる要素となる。なお、場合によっては、過去データに含まれる関連項目の全てが素性項目として定義されてもよい。
【0031】
詳しくは後述するが、本実施形態では、情報処理装置10の処理によって、素性定義情報22に新たな素性項目(新素性項目)が自動的に追加される。本明細書では、素性定義情報22のうち、情報処理装置10によって新素性項目が全く追加されていないものを「初期素性定義情報22a」と、情報処理装置10の処理によって新素性項目の追加処理後のものを「更新素性定義情報22b」と区別して記載する。
【0032】
図3に、本実施形態における初期素性定義情報22aの内容例が示されている。初期素性定義情報22aは、ユーザによって生成される。
図3に示されるように、初期素性定義情報22aには、素性項目として、年、月、日、週、曜日、休日か平日かが含まれている。これらの各素性項目は、過去データ群が有する関連項目群から選択された項目である。また、初期素性定義情報22aには、各素性項目に対して取り得る値が定義されている。上記の素性項目については、元々過去データにおいて取り得る値がそれほど多くないため、過去データにおいて取り得る値が、そのまま素性項目が取り得る値として定義されている。
【0033】
さらに、初期素性定義情報22aには、最高気温は15度以上か、最低気温は10度未満か、あるいは雨が降ったか否か、といった素性項目も含まれる。過去データ群においては、最高気温及び最低気温に対する実績値は連続的な(すなわち様々な)値を取り得るし、天気に対する実績値も晴、雨、曇り、晴のち雨などといった様々な値を取り得る。予測モデルの構築の際に、このような様々な値を取り得る生データを直接用いるのは適切ではない。すなわち、処理量が膨大になり得る反面、予測精度向上の効果があまり期待できない。そのため、初期素性定義情報22aにおいては、例えば、過去データが有する最高気温という関連項目に基づいて、最高気温が15度以上かという素性項目が定義され、当該素性項目が取り得る値としては1(15度以上)及び0(15度未満)という2つの値が定義されている。最高気温の閾値(この例では15度)はユーザによって決定されてよい。このように、様々な値を取り得る関連項目については、素性項目を適宜工夫することで、各素性項目が取り得る値の数を低減することができる。これにより、予測モデル構築の処理が簡略化される。
【0034】
なお、素性定義情報22において定義された各素性項目には、素性項目を一意に識別するための素性項目IDが付されている。
【0035】
制御部14は、例えばCPU(Central Processing Unit)あるいはマイクロコントローラなどから構成される。制御部14は、記憶部12に記憶された情報処理プログラムに基づいて、情報処理装置10の各部を制御するものである。また、
図1に示されるように、制御部14は、過去データ分類部24、素性生成部26、予測部28、誤差算出部30、素性組合せ定義部32、素性組合せ誤差算出部34、及び新素性項目追加部36としても機能する。制御部14がこれらの機能を発揮することにより、素性定義情報22に、予測モデルの予測精度を向上させ得る新素性項目が追加される。以下、これらの各機能の詳細について説明する。
【0036】
過去データ分類部24は、過去データDB20に格納されている過去データ群を学習データ群と検証データ群とに分類する。学習データ群は、予測モデルの構築に用いるものであり、過去データ群の一部である複数の過去データからなるものである。一方、検証データ群は、構築された予測モデルの予測精度を検証するために用いるものであり、過去データ群の一部である複数の過去データからなるものである。上述の通り、本実施形態では、過去データDB20には、2014年から2016年までの3年分の過去データ群が格納されているため、2014年と2015年の2年分の複数の過去データを学習データ群とし、2016年分の複数の過去データを検証データ群とする。もちろん、学習データ群と検証データ群の分類方法は、これには限られない。
【0037】
素性生成部26は、過去データDB20に格納された過去データと、素性定義情報22に基づいて、複数の素性項目と、各素性項目に対する複数の値からなる素性を生成する。素性生成部26は、過去データ群に含まれる各過去データに対応する複数の素性を生成する。これにより素性群が生成される。なお、素性に含まれる素性項目は、素性定義情報22に含まれる素性項目の全てである必要はなく、素性定義情報22において定義された複数の素性項目の一部の素性項目であってもよい。
【0038】
図4に、素性生成部26により生成された素性群の例が示されている。
図4には、
図2に示された各過去データと、
図3に示される素性定義情報22とに基づいて生成された素性群の例が示されている。
【0039】
例えば、
図4に示された素性I1は、過去データID「20140401」が示す過去データ(
図2参照)に対応するものである。当該過去データが有する関連項目に対する各値に基づいて、各素性項目に対する値が決定されている。素性I1においては、素性項目「年」に対して値「2014」が決定され、以後同様に他の各素性項目に対する値が決定されている。なお、素性項目「曜日」に対して値「3」が決定されているが、これは、当該過去データの関連項目「曜日」に対して「火曜日」の値を有しているためである。また、当該過去データの関連項目「最高気温」に対する値が「17.4度」であるから、素性項目「最高気温が15度以上か」に対する値には、15度以上を示す「1」が決定されている。
【0040】
このようにして、素性生成部26は、学習データ群及び検証データ群を含む全ての過去データ群について素性を生成する。なお、各素性には、素性と過去データとの関連を示すように過去データIDが付されている。生成された素性は、予測部28及び素性組合せ誤差算出部34に渡される。
【0041】
予測部28は、まず、素性生成部26が学習データ群に基づいて生成した各素性と、各学習データに含まれる対象項目の実績値(本実施形態では売上実績値)とに基づいて、予測モデルを構築する。
【0042】
予測モデルの構築には、種々の方法を用いることができる。例えば、各素性と実績値に基づいて生成される複数の弱識別器を組み合わせて予測モデルを構築するアンサンブル学習法であって、1つの弱識別器の学習結果を参考にして次の弱識別器を学習しつつ、予測値と実績値の誤差を定義した損失関数の勾配を考慮して予測モデルを構築する勾配ブースティング法を用いることができる。あるいは、学習データ群からサンプリングされた学習データに基づいて、非終端ノードにおいて識別(分類)に用いる素性項目をランダムに選択することで、相関の低い複数の決定木を作成し、当該複数の決定木を用いて予測モデルを構築するランダムフォレスト法を用いることができる。
【0043】
次に、予測部28は、構築した予測モデルと、素性生成部26が検証データ群に基づいて生成した各素性とに基づいて、各検証データの対象項目の予測値(本実施形態では売上予測値)を予測する。ここで、各検証データは、売上実績値を既に有しているのであるが、予測部28は、素性定義情報22に新素性項目を追加するために、予測部28は、既知である各検証データの売上予測値の予測を行う。
【0044】
予測部28により予測処理が行われると、各検証データに対応する複数の売上予測値が得られる。
図5に、各検証データが有する売上実績値に対応する売上予測値の例が示されている。予測部28により予測された当該複数の売上予測値は、対応する過去データを示す過去IDと、当該過去データの売上実績値と関連付けられて誤差算出部30に渡される。
【0045】
誤差算出部30は、検証データが有する対象項目の実績値(本実施形態では売上実績値)と、当該検証データについて予測部28が予測した対象項目の予測値(本実施形態では売上予測値)との誤差を算出する。誤差算出部30は、各検証データそれぞれについて誤差を算出する。これにより、各検証データに対応する複数の誤差が算出される。例えば、
図5の例では、誤差算出部は、過去データID「20160401」が示す検証データに対して誤差「2」を算出し、過去データID「20160402」が示す検証データに対して誤差「4」を算出し、以下同様に各検証データについての誤差を算出する。
【0046】
誤差算出部30は、各検証データについての複数の誤差を算出すると、全検証データについての誤差の平均値(以下「全平均誤差」と記載する)を算出する。言うまでもないが、全平均誤差は、各誤差の合計値を検証データ数で割ることで算出される。後述のように、全平均誤差は、新素性項目を追加する処理を終えるときなどの判断材料となる。
【0047】
誤差算出部30により算出された各検証データについての複数の誤差は、各検証データの過去データIDと関連付けられて素性組合せ誤差算出部34に渡される。
【0048】
素性組合せ定義部32は、素性定義情報22に基づいて、複数の素性組合せを定義する。素性組合せとは、素性定義情報22において定義されている複数の素性項目と、当該複数の素性項目に対する複数の値からなるものである。
図6に、素性組合せの具体例が示されている。
図6に示された素性組合せは、
図3に示された素性定義情報22に基づいて定義されたものである。
【0049】
例えば、
図6に示された素性組合せP1は、素性項目「月」に対する値「12」と、素性項目「週」に対する値「3」との組み合わせとなっている。
図6に示された素性組合せは一例であり、本実施形態においては、素性組合せ定義部32は、素性定義情報22が有する素性項目と取り得る値との間で実現可能な組み合わせの全てを定義する。ただし、同じ素性項目同士の組み合わせは定義しないものとする。例えば、素性項目「月」に対する値「1」と、同じ素性項目「月」に対する値「2」との組み合わせは定義しないものとする。なお、
図6に示されるように、各素性組合せに対しては、素性組合せを一意に識別する組合せIDが付されている。素性組合せ定義部32により定義された複数の素性組合せは素性組合せ誤差算出部34に渡される。
【0050】
素性組合せ誤差算出部34は、素性組合せ定義部32が定義した複数の素性組合せそれぞれについて、検証データ群のうち、当該素性組合せに該当する複数の検証データに関する複数の誤差の代表値を算出する。
【0051】
素性組合せに該当する検証データとは、当該素性組合せに含まれる素性項目に対する値を有する検証データである。例えば、素性組合せが、素性項目「月」に対する値「12」と、素性項目「週」に対する値「3」との組み合わせである場合、当該素性組合せに該当する検証データとは、関連項目「月」に対する値が「12月」であり、且つ、関連項目「週」に対する値が「3」の検証データである。すなわち、本実施形態では、2016年12月の第3週に対応する7つの検証データが当該素性組合せに該当する複数の検証データということになる。このようにして、素性組合せ毎に、該当する複数の検証データが特定される。なお、素性組合せに該当する検証データの特定は、素性生成部26が検証データ群に基づいて生成した各素性に基づいて行う。
【0052】
素性組合せ誤差算出部34は、各素性組合せに該当する複数の検証データを特定すると、素性組合せ毎に、該当する複数の検証データに関する誤差の代表値を演算する。本実施形態では、代表値として平均値が算出されるが、代表値としては例えば中央値などであってもよい。具体的には、素性組合せ誤差算出部34は、ある素性組合せを選択し、素性生成部26から渡された各素性に基づいて、当該素性組合せに該当する複数の検証データの複数の過去データIDを特定する。次いで、誤差算出部30から渡された複数の誤差のうち、特定した複数の過去データIDに関連付けられた複数の誤差を抽出する。そして、抽出した複数の誤差の平均値を演算する。個の平均値が、当該素性組合せの誤差の平均値(以下「平均誤差」と記載する)となる。このようにして、素性組合せ誤差算出部34は、素性組合せ定義部32が定義した全ての素性組合せの平均誤差を算出する。
【0053】
新素性項目追加部36は、素性組合せ誤差算出部34により算出された、各素性組合せの誤差の代表値(本実施形態では平均誤差)に基づいて、素性組合せ定義部32が定義した複数の素性組合せの中から特定素性組合せを特定する。特定素性組合せの特定方法は後述するが、基本的には平均誤差が大きい素性組合せが特定素性組合せとされる。
【0054】
本実施形態においては、新素性項目追加部36は、各素性組合せの平均誤差が降順となるように複数の素性組合せに対して順位付けを行い、そのうち1位の素性組合せを特定素性組合せとする。すなわち、複数の素性組合せのうち、最も平均誤差が大きかった1つの素性組合せを特定素性組合せとする。なお、新素性項目追加部36は、上記以外の特定方法により特定素性組合せを特定するようにしてもよい。例えば、各素性組合せの平均誤差が降順となるように複数の素性組合せに対して順位付けを行った上で、当該順位付けにおいて上位にいる複数の素性組合せ(例えば1〜3位など)を特定素性組合せとしてもよい。あるいは、予め誤差閾値を設けておき、当該誤差閾値以上の平均誤差が算出された全ての素性組合せを特定素性組合せとして特定するようにしてもよい。このような特定方法を採用した場合は、複数の素性組合せが特定素性組合せとして特定され得る。
【0055】
次いで、新素性項目追加部36は、特定素性組合せに基づいて新素性項目を生成する。本実施形態では、特定素性組合せに該当するか否かという新素性項目が生成される。例えば、素性項目「月」に対する値「12」と、素性項目「週」に対する値「4」との組み合わせからなる特定素性組合せが特定された場合、新素性項目追加部36は、「12月の第4週か」という新素性項目を生成する。そして、当該新素性項目に対する取り得る値として、「1(はい)」及び「0(いいえ)」を生成する。
【0056】
そして、新素性項目追加部36は、生成した新素性項目を素性定義情報22に追加する。これにより、更新素性定義情報22bが生成される。なお、複数の特定素性組合せが特定された場合は、新素性項目追加部36は、複数の特定素性組合せにそれぞれ対応する複数の新素性項目及びそれらに対する複数の取り得る値を生成し、素性定義情報22に追加する。
【0057】
図7に、新素性項目が追加された更新素性定義情報22bの例が示されている。
図7に示された更新素性定義情報22bは、
図3に示す初期素性定義情報22aに対して、上述の例の1つの新素性項目が追加されたものである。
【0058】
このように、新素性項目追加部36により、初期素性定義情報22aにおいて定義されていた複数の素性項目とそれらに対する値の組合せである素性組合せから定義される新素性項目が素性定義情報22に追加される。更新素性定義情報22bに基づいて、予測部28により新予測モデルが構築された場合、当該新予測モデルは、初期素性定義情報22aに基づいて構築された旧予測モデルに対して予測精度の向上が期待されるものとなる。
【0059】
特に、多数定義され得る素性組合せの中から、平均誤差が大きい特定素性組合せに基づく新素性項目が追加されるから、新予測モデルの予測精度が旧予測モデルの予測精度を上回ることがより期待できる。例えば、初期素性定義情報22aに素性項目「月」及び「週」が含まれている場合、初期素性定義情報22aに基づく予測モデルは、月別の売上の変動と、週別の売上の変動とが別個に考慮されて構築され、特定の月と特定の週の組合せまで考慮されて構築されない。この場合、例えば、毎年恒例の特定のイベントによる特定の月の特定の週における突発的な売上の変動が、当該予測モデルにおいて好適に反映されないことになる。本実施形態によれば、例えば、素性項目「月」に対する値「12」及び素性項目「週」に対する値「4」の素性組合せに基づく新素性項目が追加されることで、予測部28は、12月の第4週にのみ発生する突発的な売り上げの変動を考慮した予測モデルを構築することができる。
【0060】
また、本実施形態における素性組合せの特定方法によれば、1回の新素性項目追加処理において1つの特定素性組合せが特定され、それにより1つの新素性項目が追加される。これにより、1回の新素性項目追加処理における素性定義情報22の変化が最小限に抑えられ、すなわち1回の新素性項目追加処理における予測モデルの変動量が最小限に抑えられる。これは、新素性項目追加処理を繰り返し行って予測モデルを繰り返し変動させていくことを前提とすると、1回の新素性項目の追加処理によって予測モデルの予測精度が向上しない場合があることに鑑みると、予測モデルの変動量を最小に抑えて徐々に変化させていくことは、予測モデルの予測精度をかえってより早期に向上させることに繋がる。
【0061】
なお、新素性項目追加処理を繰り返し行う場合、2回目以降の処理においては、1回目の処理で追加された新素性項目を含む素性組わせを定義することが可能である。例えば、1回目の処理で
図7に示すような更新素性定義情報22bが生成された場合、2回目の処理において、素性組合せ定義部32は、例えば、素性組合せ「12月の第4週か」に対する値「1」と、素性項目「最高気温は15度以上か」に対する値「1」との素性組合せを定義することが可能である。
【0062】
上述のように、更新素性定義情報22bに基づいて構築された予測モデルの予測精度は、必ずしも、初期素性定義情報22aに基づいて構築された予測モデルの予測精度より向上するとは限らない。したがって、新素性項目追加部36は、特定素性組合せに基づいて定義された新素性項目が初期素性定義情報22aに追加されることによって、予測モデルの予測精度が向上したことを確認した上で、当該新素性項目を初期素性定義情報22aに追加するようにしてもよい。具体的な処理の流れは以下の通りである。
【0063】
まず、新素性項目追加部36は、上述と同様の処理によって、素性組合せ定義部32が定義した複数の素性組合せの中から平均誤差が最大となる特定素性組合せを特定し、当該特定素性組合せに基づいて新素性項目を生成する。そして、新素性項目追加部36は、生成した新素性項目を素性定義情報22に仮追加する。これにより、新素性項目が仮追加された仮素性定義情報が生成される。
【0064】
その後、素性生成部26以下の各部は、当該仮素性定義情報を用いて上述と同様の処理を行う。具体的には、素性生成部26は、当該仮素性定義情報と過去データ群に基づいて仮素性を生成し、予測部28は、学習データ群の仮素性と売上実績値に基づいて仮予測モデルを構築し、仮予測モデルと検証データ群の仮素性に基づいて各検証データに対する予測値を算出する。誤差算出部30は、各検証データの売上実績値と、仮予測モデルを用いて予測された各売上予測値との複数の誤差を算出する。そして、誤差算出部30は、全検証データに対応する複数の誤差の平均値(以下「仮全平均誤差」と記載する)を算出する。
【0065】
ここで、新素性項目追加部36は、新素性項目を生成する処理において算出された、各検証データの売上実績値と、初期素性定義情報22aに基づいて構築された予測モデルを用いて予測された各売上予測値との複数の誤差の平均値(以下「処理前全平均誤差」と記載する)と、仮全平均誤差とを比較する。仮全平均誤差が処理前全平均誤差よりも小さい場合は、新素性項目の追加により予測モデルの予測精度が向上したということだから、仮追加した当該新素性項目を正式に素性定義情報22に追加する。一方、仮全平均誤差が処理前全平均誤差以上となった場合は、新素性項目の追加により予測モデルの予測精度が低下したということだから、新素性項目追加部36は仮追加した新素性項目を削除する。つまり、当該新素性項目を素性定義情報22に追加しない。
【0066】
以下、
図8に示すフローチャートに従って、本実施形態に係る情報処理装置10の処理の流れを説明する。
【0067】
ステップS10において、ユーザは、過去データDB20に過去データ群を格納すると共に、初期素性定義情報22aを記憶部12に記憶させる。
【0068】
ステップS12において、過去データ分類部24は、過去データDB20に格納された過去データ群を学習データ群と検証データ群とに分類する。
【0069】
ステップS14において、素性生成部26は、初期素性定義情報22aに基づいて、ステップS10で過去データDB20に格納された各過去データについて、複数の素性項目と各素性項目に対する複数の値からなる素性を生成する。
【0070】
ステップS16において、予測部28は、ステップS14で学習データ群に基づいて生成された各素性と、各学習データに含まれる売上実績値とに基づいて、予測モデルを構築する。
【0071】
ステップS18において、予測部28は、ステップS16で構築した予測モデルと、ステップS14で検証データ群に基づいて生成された各素性とに基づいて、各検証データに対する売上予測値を予測する。
【0072】
ステップS20において、誤差算出部30は、各検証データについて、売上実績値と、ステップS18で算出された売上予測値との誤差を算出する。
【0073】
ステップS22において、誤差算出部30は、今回のステップS20で算出された全検証データについての複数の誤差の平均値(以下「今回全平均誤差」と記載する)が、前回のステップS20で算出された全検証データについての複数の誤差の平均値(以下「前回全平均誤差」と記載する)よりも小さく、且つ、今回全平均誤差と前回全平均誤差との差分が閾値以下であるか否かを判断する。当該条件を満たす場合は処理を終了し、満たさない場合はステップS24に進む。今回は、初回処理のため、前回平均誤差の値が存在しないことから、ステップS24へ進む。ステップS22の詳細については後述する。
【0074】
ステップS24において、素性組合せ定義部32は、初期素性定義情報22aに基づいて、複数の素性項目と、当該複数の素性項目に対する複数の値からなる複数の素性組合せを定義する。
【0075】
ステップS26において、素性組合せ誤差算出部34は、ステップS24で定義された素性組合せについて、ステップS20で算出された各検証データに対応する複数の誤差のうち、当該素性組合せに該当する複数の検証データについての複数の誤差を抽出し、抽出した複数の誤差の平均値(平均誤差)を算出する。これをステップS24で定義された各素性組合せについて行い、各素性組合せに対応する平均誤差が算出される。
【0076】
ステップS28において、新素性項目追加部36は、ステップS24において定義された複数の素性組合せのうち、ステップS26で算出された平均誤差が最大である素性組合わせを特定する。そして、特定された素性組合わせに基づいて、新素性項目及び当該新素性項目に対する取り得る値を生成する。
【0077】
ステップS30において、新素性項目追加部36は、ステップS28で生成された新素性項目及び当該新素性項目に対する取り得る値を素性定義情報22に追加する。これにより、更新素性定義情報22bが生成される。
【0078】
ステップS30の処理後、再度ステップS14へ戻り、再度のステップS14において、素性生成部26は、ステップS30で生成された更新素性定義情報22bに基づいて、各過去データについて新たな素性を生成する。以後、再度ステップS16からステップS22まで、新たな素性に基づいて、同様の処理が行われる。
【0079】
このように、本実施形態では、ステップS14からステップS30の処理が繰り返され、素性定義情報22に順次新素性項目が追加されていく。これにより、予測部28が構築する予測モデルの予測精度が順次向上していくことが期待される。
【0080】
ステップS22に示されている条件が、当該繰り返し処理の終了条件となっている。上述の通り、ステップS22の条件は、今回全平均誤差が前回全平均誤差よりも小さく、且つ、今回全平均誤差と前回全平均誤差との差分が閾値以下であるか否かという条件である。換言すれば、今回全平均誤差は前回全平均誤差よりも小さくなったが、全平均誤差が前回に対してあまり変わらなくなった場合に、繰り返し処理を終了する。
【0081】
これは、新素性項目追加処理の繰り返し回数と全平均誤差との関係は、一般に
図9に示す関係を有していることに基づくものである。
図9に示すように、新素性項目追加処理の繰り返し回数が比較的少ないときは、1回の新素性項目追加処理によって全平均誤差が比較的大きく減少するが、新素性項目追加処理の繰り返し回数が比較的多くなってくると、1回の新素性項目追加処理によって全平均誤差があまり変わらなくなってくる。したがって、今回全平均誤差と前回全平均誤差との差分が閾値以下となったときは、全平均誤差がそれ以上劇的に減少しないと判断できることから、新素性項目追加処理の繰り返し処理を終了する。
【0082】
なお、新素性項目追加処理の繰り返し処理の終了条件としては、上記以外の条件を採用することもできる。例えば、素性定義情報22に含まれる素性項目の数が所定数に達したことを条件としてもよいし、新素性項目追加処理の繰り返し処理の回数が所定回数に達したことを条件としてもよい。
【0083】
<第2実施形態>
第2実施形態は、第1実施形態を基本としながらも、第1実施形態に比して素性組合せ定義部32の処理内容が異なるものである。第1実施形態においては、素性組合せ定義部32は、素性定義情報22が有する素性項目と取り得る値との間で実現可能な組み合わせの全てを定義していた。これによれば、全ての素性組合せを漏れなく特定素性組合せの候補とすることができる一方、定義される素性組合せの数が膨大になる場合があり、素性組合せ定義部32、素性組合せ誤差算出部34、あるいは新素性項目追加部36の処理量が多くなってしまう場合がある。
【0084】
このことに鑑み、第2実施形態においては、素性組合せ定義部32が、平均誤差が大きくなる可能性が低い素性組合せを定義しないことで、定義される素性組合せの数が低減される。これにより、新素性項目追加処理における処理量が低減される。以下、第2実施形態における素性組合せ定義部32の処理について説明する。
【0085】
まず、第2実施形態においては、素性定義情報22において、複数の素性項目間において階層関係を定義しておく。当該階層関係の定義は、予めユーザなどによって行われてよい。
【0086】
図10に、本実施形態における階層関係の例が示されている。
図10の例では、第1層として素性項目「年」、第2層として素性項目「月」、第3層として素性項目「週」、第4層として素性項目(曜日)が定義されている。このように、複数の素性項目間における階層関係は、各素性項目の実際の概念に即した階層となっている。もちろん、
図10に示した階層関係は一例であり、複数の素性項目間における階層関係は様々な態様で定義することができる。
【0087】
素性組合せ定義部32は、素性定義情報22において定義された階層関係に基づいて、素性組合せを定義する。具体的には、まず、素性組合せ定義部32は、素性組合せに含まれる一方の素性項目を選択する。次いで、階層関係において、当該一方の素性項目が属する層に隣接する層に属する素性項目を他方の素性項目として選択する。そして、当該一方の素性項目(及び当該素性項目に対する値)と、当該他方の素性項目(及び当該素性項目に対する値)とを組み合わせて素性組合せを定義する。換言すれば、第2実施形態においては、素性組合せ定義部32は、一方の素性項目と、当該一方の素性項目が属する層に隣接しない層に属する素性項目との素性組合せは定義しない。
【0088】
図10の例を用いて説明する。素性組合せ定義部32は、例えば、第1層に属する素性項目「年」と、第2層に属する素性項目「月」との素性組合せは定義するが、第1層に属する素性項目「年」と、第3層に属する素性項目「週」との素性組合せは定義しない。具体的には、素性項目「年」に対する値「2015」と、素性項目「月」に対する値「3」との素性組合せは定義するが、素性項目「年」に対する値「2015」と、素性項目「週」に対する値「4」との組み合わせは定義しない。
【0089】
例えば、過去データにおいて、階層が離れた項目である関連項目「年」と「週」との組み合わせが売上に特に影響を与えること(例えば2015年の毎月第4週のみ突発的に売上が変動すること)は比較的少ないと言える。したがって、互いに階層が離れた素性項目を含む素性組合せの平均誤差が大きくなる可能性は低いと言える。したがって、素性組合せ定義部32が、階層が離れた互いに階層が離れた素性項目を含む素性組合せを定義しないことによって、平均誤差が大きくなる可能性の高い素性組合せを残しつつ、定義される素性組合せの数を低減させることができる。
【0090】
第2実施形態において、新素性項目が素性定義情報22に追加された場合、追加された新素性項目の階層は、当該新素性組合せに含まれる2つの素性項目のうち深い方の層とされる。例えば、第1層にある素性項目「年」に対する値「2015」と、第2層にある素性項目「月」に対する値「3」との素性組合せに基づく新素性項目「2015年の3月か」が定義された場合、当該新素性項目の階層は、第1層と第2層のうちより深い方の層である第2層となる。
【0091】
これにより、さらなる新素性項目の追加処理により、第2層にある素性項目「2015年の3月か」と、第3層にある素性項目「週」との素性組合せが可能になる。このようにして、階層関係に沿って、3つ以上の素性項目を含む素性組合せを定義することも可能である。
【0092】
<第3実施形態>
第3実施形態は、第1実施形態を基本としながらも、第1実施形態及び第2実施形態に比して素性組合せ定義部32の処理内容が異なるものである。第1実施形態及び第2実施形態においては、素性組合せに含まれる複数の値は、同一の過去データ(注目過去データ)に関する値として定義されていた。例えば、
図6に示した素性組合せP1は、ある1つの注目過去データの素性項目「月」に対する値が「12」であり、且つ、素性項目「週」に対する値が「3」である、ということを意味するものである。
【0093】
過去データ群が時系列に並ぶ複数の過去データから構成される場合、複数の過去データの関連項目に対する値を考慮して予測値を予測した方が、予測精度が向上する場合がある。本実施形態のように、過去データ群が日々蓄積される複数の過去データから構成される場合、例えば、予測対象日の前日が休日か平日か、あるいは、予測対象日の後日が休日か平日かなどが、予測対象日の売上予測に影響する場合がある。このような場合は、例えば予測対象日の前日あるいは後日が休日が否かということを含めて考慮して予測モデルを構築することで、当該予測モデルの予測精度をより向上させることができる。
【0094】
このことに鑑み、第3実施形態においては、素性組合せ定義部32は、素性定義情報22において定義された素性項目群から選択された素性項目に対する、注目過去データに関する値と、同じく素性項目群から選択された素性項目に対する、当該注目過去データとは異なる過去データに関する値とを含む素性組合せを定義する。
【0095】
例えば、第3実施形態において、素性組合せ定義部32は、素性項目「休日か平日か」に対する注目過去データ(当日)の値「0(平日)」、素性項目「休日か平日か」に対する前日の値「1(平日)」という素性組合せを定義する。また、素性組合せに含まれる2つの素性項目が同一である必要はなく、例えば、素性項目「休日か平日か」に対する当日の値「0(平日)」、素性項目「曜日」に対する前日の値「1(日曜)」という素性組合せを定義するようにしてもよい。また、素性組合せに含まれる複数の値は、時系列において連続する過去データの値に関するものである必要はなく、当日の値と、例えば2日前、1週間前などの値であってもよい。
【0096】
このような素性組合せが定義され、素性組合せ誤差算出部34により当該素性組合せに対する平均誤差が最大となれば、当該素性組合せに基づく新素性項目「当日が平日で前日が休日か」などが素性定義情報22に追加される。これにより、予測部28は、「当日が平日で前日が休日か」など、複数の過去データにおける関連項目に対する値を考慮した、より予測精度が向上した予測モデルを構築することができる。
【0097】
<第4実施形態>
第4実施形態は、第1実施形態を基本としながらも、素性定義情報22で定義された各素性項目についての、対象項目(本実施形態では売上)の予測値に対して与える影響の大きさを示す寄与度に基づく処理が行われる点において第1実施形態と異なるものである。
【0098】
各素性項目に対する寄与度は、予測部28により算出される。寄与度算出の基本的な方法は以下の通りである。まず、予測部28は、上述の通り、素性生成部26が生成した学習データ群に関する素性群と、学習データ群に含まれる売上実績値に基づいて予測モデルを構築し、当該予測モデルと、検証データに関する素性に基づいて、当該検証データに対する売上予測値を算出する。次いで、当該検証データに関する素性において、注目素性項目に対する値をランダムに変更して変更素性を生成する。そして、予測部28は、予測モデルと変更素性に基づいて、当該検証データに対する売上予測値を算出する。ここで算出された、変更素性に基づく売上予測値と、事前に算出された売上予測値との差が大きい程、注目素性項目の寄与度が高い、ということになる。したがって、予測部28は、変更素性に基づく売上予測値と、事前に算出された売上予測値との差が大きい程、当該注目素性項目の寄与度を高く算出する。
【0099】
このような処理によって、素性定義情報22に各素性項目の寄与度を示す情報が付され、寄与度付素性定義情報22−2が生成される。
図11に、寄与度付素性定義情報22−2の例が示されている。
【0100】
素性組合せ定義部32は、各素性項目の寄与度に基づいて素性組合せを生成する。具体的には、予め寄与度閾値を定めておき、素性組合せを定義するにあたり、寄与度が当該寄与度閾値以下である素性項目を選択しないようにする。寄与度が低い素性項目を含む素性組合せについて、素性組合せ誤差算出部34が平均誤差を算出した場合、当該平均誤差が大きくなる可能性は低いといえる。したがって、寄与度閾値以下の素性項目を含む素性組合せを定義しないことによって、平均誤差が大きくなる可能性の高い素性組合せを残しつつ、定義される素性組合せの数を低減させることができる。
【0101】
また、第1実施形態では、新素性項目追加部36は、各素性組合せについて算出された平均誤差に基づいて、特定素性組合せを特定していたが、第4実施形態では、さらに、各素性組合せに含まれる素性項目の寄与度に基づいて、特定素性組合せを特定する。例えば、ある素性組合せの平均誤差と、当該素性組合せに含まれる複数の素性項目についての複数の寄与度の平均値又は合算値との積を、当該素性組合せの指標値として算出する。そして、各素性組合せについて算出された指標値に基づいて特定素性組合せを特定する。指標値に基づく特定素性組合せ方法としては、例えば、複数の素性組合せのうち、指標値が最大の素性組合せを特定素性組合せとしてもよいし、各素性組合せの指標値が降順となるように複数の素性組合せに対して順位付けを行った上で、当該順位付けにおける上位にある複数の素性組合せ(例えば1〜3位など)を特定素性組合せとしてもよいし、予め指標閾値を設けておき、当該指標閾値以上の指標値が算出された全ての素性組合せを特定素性組合せとしてもよい。
【0102】
寄与度を考慮して特定素性組合せを特定することで、寄与度が高い素性項目を含む素性組合せに基づいて生成された新素性項目が素性定義情報22に追加され易くなる。これにより、予測部28により構築される予測モデルの予測精度がより向上され得る。
【0103】
以上、本発明に係る実施形態を説明したが、本発明は上記実施形態に限られるものではなく、本発明の趣旨を逸脱しない限りにおいて種々の変更が可能である。