IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士通株式会社の特許一覧

特開2023-167646抽出プログラム、抽出方法および情報処理装置
<>
  • 特開-抽出プログラム、抽出方法および情報処理装置 図1
  • 特開-抽出プログラム、抽出方法および情報処理装置 図2
  • 特開-抽出プログラム、抽出方法および情報処理装置 図3
  • 特開-抽出プログラム、抽出方法および情報処理装置 図4
  • 特開-抽出プログラム、抽出方法および情報処理装置 図5
  • 特開-抽出プログラム、抽出方法および情報処理装置 図6
  • 特開-抽出プログラム、抽出方法および情報処理装置 図7
  • 特開-抽出プログラム、抽出方法および情報処理装置 図8
  • 特開-抽出プログラム、抽出方法および情報処理装置 図9
  • 特開-抽出プログラム、抽出方法および情報処理装置 図10
  • 特開-抽出プログラム、抽出方法および情報処理装置 図11
  • 特開-抽出プログラム、抽出方法および情報処理装置 図12
  • 特開-抽出プログラム、抽出方法および情報処理装置 図13
  • 特開-抽出プログラム、抽出方法および情報処理装置 図14
  • 特開-抽出プログラム、抽出方法および情報処理装置 図15
  • 特開-抽出プログラム、抽出方法および情報処理装置 図16
  • 特開-抽出プログラム、抽出方法および情報処理装置 図17
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023167646
(43)【公開日】2023-11-24
(54)【発明の名称】抽出プログラム、抽出方法および情報処理装置
(51)【国際特許分類】
   G06Q 30/0203 20230101AFI20231116BHJP
【FI】
G06Q30/02 312
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2022078977
(22)【出願日】2022-05-12
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】山田 芙夕楓
(72)【発明者】
【氏名】笠置 明彦
【テーマコード(参考)】
5L049
【Fターム(参考)】
5L049BB02
(57)【要約】
【課題】所望の組合せの抽出にかかる処理時間を短縮することを課題とする。
【解決手段】情報処理装置は、それぞれが複数の項目を有する複数のデータから、要求される項目の数を組み合わせた複数の組合せそれぞれについて、組合せ内の項目ごとに計数された該当する項目を有するデータの数のうち最小値が閾値以上である第1の組合せ、または、組合せ内の項目ごとに計数された該当しない項目を有するデータの合計数をデータの総数から減算した減算値が閾値以上である第2の組合せ、を抽出する。情報処理装置は、抽出された第1の組合せまたは第2の組合せを出力する。
【選択図】図1
【特許請求の範囲】
【請求項1】
コンピュータに、
それぞれが複数の項目を有する複数のデータから、要求される項目の数を組み合わせた複数の組合せそれぞれについて、組合せ内の項目ごとに計数された該当する項目を有するデータの数のうち最小値が閾値以上である第1の組合せ、または、組合せ内の項目ごとに計数された該当しない項目を有するデータの合計数をデータの総数から減算した減算値が前記閾値以上である第2の組合せ、を抽出し、
抽出された前記第1の組合せまたは前記第2の組合せを出力する、
処理を実行させることを特徴とする抽出プログラム。
【請求項2】
前記抽出する処理は、
前記複数の組合せから前記第1の組合せを抽出した場合、抽出された各第1の組合せについて組合せ内の全項目に該当するデータの数を計数し、
抽出された前記各第1の組合せのうち、計数された前記データの数が前記閾値以上である組合せを、出力対象として抽出する、
ことを特徴とする請求項1に記載の抽出プログラム。
【請求項3】
前記抽出する処理は、
前記データを複数のグループに分類し、
前記複数のグループそれぞれについて、前記複数の組合せ内の商品ごとに該当するデータの数を計数し、
各グループにおける前記最小値を合計した第1の合計値が前記閾値以上の組合せ、または、各グループにおける前記減算値を合計した第2の合計値が前記閾値以上の組合せ、を抽出する、
ことを特徴とする請求項1に記載の抽出プログラム。
【請求項4】
前記抽出する処理は、
前記第1の合計値および前記第2の合計値を算出し、
前記第2の合計値が前記閾値以上である組合せを抽出し、
前記第2の合計値が前記閾値以上かつ前記第1の合計値が前記閾値以上である組合せのうち、当該組合せ内の全項目に該当するデータの数が前記閾値以上である組合せを抽出する、ことを特徴とする請求項3に記載の抽出プログラム。
【請求項5】
前記複数の項目は、商品に関する情報であり、
前記複数のデータは、各ユーザの前記商品の購入履歴を示すデータであり、
前記抽出する処理は、
複数の商品の組合せそれぞれについて、組合せ内の商品ごとに計数された該当する項目を有するユーザの数のうち最小値が前記閾値以上である第1の組合せ、または、組合せ内の商品ごとに計数された該当しない項目を有するユーザの合計数をユーザの総数から減算した減算値が前記閾値以上である第2の組合せ、を抽出し、
前記出力する処理は、
抽出された商品の各組合せを出力する、
ことを特徴とする請求項1に記載の抽出プログラム。
【請求項6】
前記複数の項目と前記複数のデータとから構成され、該当するか否かを示す2値の要素から構成される行列データに対して、前記行列データの各要素が集約するように、行と列を並び替えた並び替え後の行列データを生成する処理を前記コンピュータに実行させ、
前記抽出する処理は、前記並び替え後の行列データから、前記第1の組合せ、または、前記第2の組合せを抽出し、
前記出力する処理は、抽出された前記第1の組合せまたは前記第2の組合せを出力する、
ことを特徴とする請求項1に記載の抽出プログラム。
【請求項7】
コンピュータが、
それぞれが複数の項目を有する複数のデータから、要求される項目の数を組み合わせた複数の組合せそれぞれについて、組合せ内の項目ごとに計数された該当する項目を有するデータの数のうち最小値が閾値以上である第1の組合せ、または、組合せ内の項目ごとに計数された該当しない項目を有するデータの合計数をデータの総数から減算した減算値が前記閾値以上である第2の組合せ、を抽出し、
抽出された各組合せを出力する、
処理を実行することを特徴とする抽出方法。
【請求項8】
それぞれが複数の項目を有する複数のデータから、要求される項目の数を組み合わせた複数の組合せそれぞれについて、組合せ内の項目ごとに計数された該当する項目を有するデータの数のうち最小値が閾値以上である第1の組合せ、または、組合せ内の項目ごとに計数された該当しない項目を有するデータの合計数をデータの総数から減算した減算値が前記閾値以上である第2の組合せ、を抽出し、
抽出された前記第1の組合せまたは前記第2の組合せを出力する、
制御部を有することを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、抽出プログラム、抽出方法および情報処理装置に関する。
【背景技術】
【0002】
マーケティング分野では購買予測や広告、政治では選挙投票率の予測、医療では病気の原因発見を行うために、条件を満たすサンプルがN個以上ある条件も組合せを求めることが要求されることがある。例えば、マーケティング分野では、商品の組合せで、組合せ内のすべての商品を購入した人数が100人以上いる組合せを求めること、商品1と商品3を両方購入した人数が100人以上であるか否かを調査することなどがある。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2004-029902号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、商品数(d_x)かつ顧客数(n)のデータ(d_x×nの行列)から、条件に一致する組合せを抽出するには、計算量が非常に多く、処理時間が長い。例えば、100個のデータから3つの組合せを抽出する数は、161700通りであり、100個のデータから5つの組合せを抽出する数は、75287520通りであり、これらの中から一致する条件を抽出するには、非常に多くの計算量が要求される。
【0005】
一つの側面では、所望の組合せの抽出にかかる処理時間を短縮することができる抽出プログラム、抽出方法および情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【0006】
第1の案では、抽出プログラムはコンピュータに、それぞれが複数の項目を有する複数のデータから、要求される項目の数を組み合わせた複数の組合せそれぞれについて、組合せ内の項目ごとに計数された該当する項目を有するデータの数のうち最小値が閾値以上である第1の組合せ、または、組合せ内の項目ごとに計数された該当しない項目を有するデータの合計数をデータの総数から減算した減算値が前記閾値以上である第2の組合せ、を抽出し、抽出された前記第1の組合せまたは前記第2の組合せを出力する、処理を実行させることを特徴とする。
【発明の効果】
【0007】
一実施形態によれば、所望の組合せの抽出にかかる処理時間を短縮することができる。
【図面の簡単な説明】
【0008】
図1図1は、実施例1にかかる情報処理装置を説明する図である。
図2図2は、実施例1にかかる情報処理装置の機能構成を示す機能ブロック図である。
図3図3は、商品購入履歴データを示す図である。
図4図4は、抽出対象の判定手法を説明する図である。
図5図5は、実施例1にかかる抽出処理を説明する図である。
図6図6は、実施例1にかかる上限値による抽出可否の判定を説明する図である。
図7図7は、実施例1にかかる下限値による抽出可否の判定を説明する図である。
図8図8は、実施例1にかかる抽出処理の流れを示すフローチャートである。
図9図9は、実施例2にかかる抽出処理を説明する図である。
図10図10は、実施例2にかかる上限値による抽出可否の判定を説明する図である。
図11図11は、実施例2にかかる下限値による抽出可否の判定を説明する図である。
図12図12は、実施例2にかかる抽出処理の流れを示すフローチャートである。
図13図13は、実施例2の具体例を説明する図である。
図14図14は、実施例2の具体例を説明する図である。
図15図15は、商品購入履歴データのソートを説明する図である。
図16図16は、商品購入履歴データのソートの有効性を説明する図である。
図17図17は、ハードウェア構成例を説明する図である。
【発明を実施するための形態】
【0009】
以下に、本願の開示する抽出プログラム、抽出方法および情報処理装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。また、各実施例は、矛盾のない範囲内で適宜組み合わせることができる。
【実施例0010】
(情報処理装置の説明)
図1は、実施例1にかかる情報処理装置10を説明する図である。図1に示すように、情報処理装置10は、複数のサンプルデータごとに、各商品の購入の有無を対応付けたデータから、条件に一致する組合せを抽出するコンピュータの一例である。図1の例では、情報処理装置10は、商品数(d_x)かつ顧客数(n)のデータ((d_x)×nの行列データX)から、所望の条件と一致する組合せの抽出を実行する。
【0011】
例えば、マーケティング分野などでは、条件を満たすサンプルが下限閾値「s_min」個以上ある条件の組合せとして、複数の商品を購入した人数が100人以上である商品の組合せを求めたい場合がある。また、例えば3つの商品を購入した人数を求めたい場合もある。これらの場合、各列の値の論理和(AND演算)を行ごとに計算して、複数の商品の組合せの抽出が実行される。図1の例では、行ごとに、ビット値のAND演算を実行し、計算値が「1」となった行が抽出される。しかし、この手法は、計算量が多い。特に、商品の購入履歴など膨大なデータを対象とする場合には膨大な計算量が要求される結果、所望の組合せの抽出にかかる処理時間が長時間化する。
【0012】
そこで、実施例1にかかる情報処理装置10は、それぞれが複数の項目を有する複数のサンプルデータから、要求される商品の数を組み合わせた複数の組合せそれぞれについて、組合せ内の商品ごとに計数された該当する商品を有するサンプルデータの数のうち最小値(e_max)が閾値(s_min)以上である第1の組合せを抽出する。または、情報処理装置10は、組合せ内の商品ごとに計数された該当しない商品を有するサンプルデータの合計数をサンプルデータの総数から減算した減算値(e_min)が閾値(s_min)以上である第2の組合せを抽出する。そして、情報処理装置10は、抽出された各組合せを出力する。
【0013】
具体的には、情報処理装置10は、任意のk個の商品の組合せを選択し、それらすべてを購入した人数が閾値「s_min」以上である商品の組合せを抽出する。つまり、情報処理装置10は、d_x個の商品からk個を選ぶ商品組合せのリストをLとした場合、Lの商品組合せに対して、商品すべてを購入した人数が「s_min」人以上かどうか確認したいとき、1人ずつ購入したかのチェックを行う前に、全体の簡易チェックを行う。この結果、情報処理装置10は、ANDの計算回数を削減することができるので、所望の組合せの抽出にかかる処理時間を短縮することができる。
【0014】
(情報処理装置の機能構成)
図2は、実施例1にかかる情報処理装置10の機能構成を示す機能ブロック図である。図2に示すように、情報処理装置10は、通信部11、記憶部12、制御部20を有する。
【0015】
通信部11は、他の装置との間の通信を制御する処理部であり、例えば通信インタフェースなどにより実現される。例えば、通信部11は、管理者の端末から各種情報を受信し、外部装置などからデータを受信し、管理者の端末に制御部20による抽出結果を送信する。
【0016】
記憶部12は、各種データや制御部20が実行するプログラムなどを記憶する処理部の一例であり、例えばメモリやハードディスクなどにより実現される。この記憶部12は、商品購入履歴データ13と結果リスト14とを記憶する。
【0017】
商品購入履歴データ13は、ユーザごとの商品購入履歴を記憶するデータベースである。図3は、商品購入履歴データ13を示す図である。図3に示すように、商品購入履歴データ13は、サンプルIDごとに、商品1から商品x(xは任意の自然数)の購入履歴を記憶する。すなわち、商品購入履歴データ13は、商品数(d_x)かつ顧客数(n)である「d_x×nの行列データX」である。
【0018】
なお、サンプルIDは、ユーザを識別する情報である。各商品は、商品を識別する情報であり、購入している場合は「1」、未購入の場合は「0」が設定される。図3の例では、サンプルID=0のユーザが、商品1と商品4を購入したことが示されている。
【0019】
結果リスト14は、制御部20により抽出された商品の組合せのリストである。例えば、結果リスト14に登録される各商品の組合せは、1人ずつ購入したかのチェックを行う前の簡易チェックで抽出された組合せである。結果リスト14に記憶される各商品の組合せについて、所望の組合せに該当するか否かの最終的な確認が実行される。
【0020】
制御部20は、情報処理装置10全体を司る処理部であり、例えばプロセッサなどにより実現される。この制御部20は、第1抽出部21、第2抽出部22、出力制御部23を有する。なお、第1抽出部21、第2抽出部22、出力制御部23は、例えばプロセッサが有する電子回路やプロセッサが実行するプロセスの一例である。
【0021】
一例として、本実施例では、商品購入履歴データ13から、3つの商品を購入した人数を求める例で説明する。すなわち、後述する閾値は、所望の商品数である「3」とする。図4は、抽出対象の判定手法を説明する図である。図4に示すように、制御部20は、商品1から商品x(xは任意の自然数)から、「商品1、商品2、商品3」、「商品1、商品3、商品4」、「商品2、商品3、商品4」のように重複しない組合せを生成し、各組合せについて結果リスト14に登録するか否かの判定を実行する。
【0022】
例えば、制御部20は、k個の商品の組合せAについて、組合せAを購入した人数の下限値または上限値を見積もる。図5は、実施例1にかかる抽出処理を説明する図である。図5に示すように、制御部20は、商品の組合せAを購入した人数sが「s_min」以上かどうかを調べる際に、まず商品の組合せA内の各商品(商品A_0、商品A_1・・・商品A_k)を購入した各人数(s_0からs_k)を求める。次に、制御部20は、ユーザ全体で購入人数sの下限値「e_min」と上限値「e_max」を計算することで、その値によって、組合せAが求めている組合せ(s_min≦s)かどうかを早期に判定する。
【0023】
第1抽出部21は、それぞれが複数の商品を有する複数のサンプルIDから、要求される商品の数を組み合わせた複数の組合せそれぞれについて組合せ内の商品ごとに計数された該当する商品を有するサンプルIDの数のうち最小値「e_max」が閾値「s_min」以上である第1の組合せ、を抽出する処理部である。
【0024】
ここで、「e_max」は、商品の組合せAを購入した人数sが多くとも「e_max」未満であることを判定するための値であり、組合せAを購入した人数の上限値である。例えば、組合せA内の各商品「商品A_0、商品A_1・・・商品A_k」を購入した各人数「s_0からs_k」である場合、第1抽出部21は、最小値「min(s_0、s_1、・・・、s_」)を、購入人数が一番少ない商品の購入人数を示す「e_max」として算出する。そして、第1抽出部21は、「e_max」が閾値以上である場合、商品の組合せAを結果リスト14に登録する。なお、「e_max<s_min」のとき、組合せAを購入した人数sは必ず「s_min」未満となり、求めたい組合せではないことがわかるので、ユーザごとの詳細な購入調査は行われない。
【0025】
図6は、実施例1にかかる上限値による抽出可否の判定を説明する図である。図6では、「商品1、商品2、商品3」の組合せに対する4人のサンプルデータの購入履歴を例にして説明する。なお、サンプルID=1は、「商品1、商品2、商品3」のいずれも購入していないユーザのデータである。サンプルID=2は、「商品1、商品2、商品3」のすべてを購入したユーザのデータである。サンプルID=3は、「商品1、商品2、商品3」のすべてを購入したユーザのデータである。サンプルID=4は、「商品1」のみを購入したユーザのデータである。
【0026】
図6の場合、第1抽出部21は、商品1の購入者を「3」、商品2の購入者を「2」、商品3の購入者を「2」と算出し、「min(商品1を購入=3、商品2を購入=2、商品3を購入=2)」により、「e_max」を「2」と算出する。すなわち、第1抽出部21は、図6に示す商品数3の商品の組合せにおいて、3個の商品のすべてを購入した人数は多くとも2人以下と判定する。そして、第1抽出部21は、「e_max=2」が閾値「s_min=3」未満であることから、図6の商品の組合せを抽出対象外として、結果リスト14には登録しない。
【0027】
なお、第1抽出部21は、「e_max」が閾値「s_min」以上である場合、判定中である商品の組合せについて、全商品を購入した人数sを計数する。そして、第1抽出部21は、計数した人数sが閾値「s_min」以上である場合、図6の商品の組合せを抽出対象として、結果リスト14には登録する。一方、第1抽出部21は、計数した人数sが閾値「s_min」未満である場合、図6の商品の組合せを抽出対象外として、結果リスト14には登録しない。
【0028】
第2抽出部22は、それぞれが複数の商品を有する複数のサンプルIDから、要求される商品の数を組み合わせた複数の組合せそれぞれについて組合せ内の項目ごとに計数された該当しない項目を有するサンプルデータの合計数をサンプルデータの総数から減算した減算値(e_min)が閾値(s_max)以上である第2の組合せ、を抽出する処理部である。
【0029】
ここで、「e_min」は、商品の組合せAを購入した人数sが少なくとも「e_min」以上であることを判定するための値であり、組合せAを購入した人数の下限値である。具体的には、第2抽出部22は、ユーザ(サンプル)数nから各商品を購入しなかった人数の合計値「s_false」を減算した値を示す「e_min」が閾値(s_min)以上か否かを判定する。「n-(s_false)」が0より大きい場合、1人以上は組合せA内のすべての商品を購入していることとなる。
【0030】
例えば、組合せA内の各商品「商品A_0、商品A_1・・・商品A_k」を購入した人数「s_0からs_k」である場合、第1抽出部21は、最大値「max(0,n-((n-s_0)+(n-s_1)+・・・+(n-s_d_k)))」を、「e_min」として算出する。そして、第2抽出部22は、「e_min」≧閾値「s_min」のとき、組合せAを購入した人数sが必ず「s_min」以上であり、求めたい組合せであることがわかるので、組合せAを結果リスト14に追加する。
【0031】
図7は、実施例1にかかる下限値による抽出可否の判定を説明する図である。図7では、「商品1、商品2、商品3」の組合せに対する4人のサンプルデータの購入履歴を例にして説明する。なお、サンプルID=1は、「商品2、商品3」を購入したユーザのデータである。サンプルID=2は、「商品1、商品3」を購入したユーザのデータである。サンプルID=3は、「商品1、商品3」を購入したユーザのデータである。サンプルID=4は、「商品1、商品2、商品3」のすべての商品を購入したユーザのデータである。
【0032】
図7の場合、第2抽出部22は、商品1について、購入者が3人であることから、全ユーザ数「4」から購入者「3」を減算した値「1」を算出する。第2抽出部22は、商品2について、全ユーザ数「4」から購入者「2」を減算した値「2」を算出し、商品3について全ユーザ数「4」から購入者「4」を減算した値「0」を算出する。そして、第2抽出部22は、全ユーザ数「4」から、減算結果「1」、「2」、「0」を加算した合計値「3」を減算した「4-3=1」を「e_min」として算出する。すなわち、第2抽出部22は、3個の商品すべてを購入した人数は少なくとも1人以上であることを抽出する。そして、第2抽出部22は、「e_min=1」が閾値「s_min=3」未満であることから、図7の商品の組合せを抽出対象外とし、結果リスト14に登録しない。
【0033】
なお、第2抽出部22は、全ユーザ数から減算結果の合計値を減算した値が負の値となる場合は、「0」を「e_min」として算出する。
【0034】
出力制御部23は、第1抽出部21および第2抽出部22により抽出された各組合せを出力する処理部である。具体的には、出力制御部23は、組合せが記録された結果リスト14を、ディスプレイなどに出力し、管理者の端末に送信する。
【0035】
(処理の流れ)
図8は、実施例1にかかる抽出処理の流れを示すフローチャートである。なお、図8では、商品数を「d_x」、顧客数(ユーザ数)を「n」、任意に設定可能な閾値を「s_min」、任意に設定可能な組み合わせる商品の数を「k」として説明するが、あくまで例示であり、これに限定されるものではない。また、矛盾のない範囲で、各処理を入れ替えることもできる。
【0036】
図8に示すように、情報処理装置10の制御部20は、d_x個の商品からk個を選んだ商品の組合せのリストLを生成する(S101)。続いて、制御部20は、d_x個の各商品を購入した人数を計算する(S102)。
【0037】
その後、制御部20は、リストLのすべての商品組合せに対して、S103からS110までのループ処理を実行する。
【0038】
具体的には、制御部20は、商品の組合せに対して、「e_max」と「e_min」を算出する(S104)。ここで、制御部20は、「e_min」が閾値「s_min」以上である場合(S105:Yes)、商品の組合せを結果リストに追加し(S106)、次の組合せについて処理を実行する。
【0039】
一方、制御部20は、「e_min」が閾値「s_min」未満である場合(S105:No)、「e_max」が閾値「s_min」未満であるか否かを判定する(S107)。ここで、制御部20は、「e_max」が閾値「s_min」以上である場合(S107:No)、組合せ内の全商品を購入した人数sを計算する(S108)。
【0040】
そして、制御部20は、組合せ内の全商品を購入した人数sが閾値「s_min」以上である場合(S109:Yes)、商品の組合せを結果リストに追加し(S106)、次の組合せについて処理を実行する(S110)。
【0041】
一方、組合せ内の全商品を購入した人数sが閾値「s_min」未満である場合(S109:No)、または、S107で「e_max」が閾値「s_min」未満である場合(S107:Yes)、制御部20は、商品の組合せを結果リストに追加することなく、次の組合せについて処理を実行する(S110)。
【0042】
その後、制御部20は、抽出された商品の組合せが登録される結果リスト14を出力する(S111)。
【0043】
(効果)
上述したように、情報処理装置10は、一人ずつの購入チェックを行う前に、ユーザ全体で人数の下限値と上限値を見積もることで、一人ずつの購入チェックを行う場合に比べて、AND演算を削減することができる。この結果、情報処理装置10は、所望の組合せの抽出にかかる処理時間を短縮することができる。
【0044】
また、情報処理装置10は、「e_max」か「e_min」のいずれかの判定のみを実行することで、一般的な手法よりも短時間で、所望の組合せをある程度まで絞り込むことができるので、一般的な手法と比べても十分な処理時間を短縮することができる。特に、処理時間やスペックに余裕がある場合に有効である。
【0045】
また、情報処理装置10は、S105と、S107からS109とを入れ替えることができる。すなわち、情報処理装置10は、「e_max」の判定の後に、「e_min」の判定を行うことができる。この結果、情報処理装置10は、「e_min」の判定対象を削減することができるので、処理時間の短縮かつ高速な組合せ抽出を実現することができる。
【実施例0046】
ところで、実施例1で説明した情報処理装置10は、実施例1の簡易チェックをグループごろに行うことで、効率的に簡易チェックを行うこともできる。そこで、実施例2では、情報処理装置10がグループごとに簡易チェックを行う例を説明する。
【0047】
(実施例2の説明)
図9は、実施例2にかかる抽出処理を説明する図である。図9に示すように、情報処理装置10は、商品の組合せAを購入した人数sが閾値「s_min」以上であるか否かを調べる場合に、n人のユーザをG個(グループG1、グループG2・・・)に分割する。情報処理装置10は、グループごとに、組合せA内の各商品(ID:0からk)を購入した人数(s_0からs_k)を算出する。情報処理装置10は、グループごとに、上限値(e_max)と下限値(e_min)を算出し、全グループの合計値(e_max_s)と(e_min_s)を算出する。情報処理装置10は、全グループの合計値(e_max_s)と(e_min_s)とのそれぞれと閾値(s_min)を比較することで、組合せAが求めている組合せかどうかを早期に判断できる。
【0048】
次に、上限値(e_max)と下限値(e_min)の各算出および各値を用いた抽出処理について説明する。ここでは、商品の組合せを「商品1、商品2、商品3」、全ユーザ数が8人、1グループが4人の2つのグループ(グループID=0、1)を例にして説明する。この例では、情報処理装置10は、3個の商品すべてを購入した人数を調べたいとき、サンプルを任意のグループに分割し、実施例1で説明した人数の下限値と上限値見積もりをグループごとに行う。こうすることで、情報処理装置10は、ユーザ全体に対する見積もりと比較して、より正確な見積もり値を算出できる。
【0049】
図10は、実施例2にかかる上限値による抽出可否の判定を説明する図である。図10では、情報処理装置10は、3つの商品の購入者ができるだけ重複すると考えた場合の重複人数を計算することで、一番よい状態を見積もる処理を実行する。なお、図10の処理は、例えば、情報処理装置10の第1抽出部21が実行する。
【0050】
図10の例では、情報処理装置10は、商品の組合せAを購入した人数sが多くとも「e_max」未満である値を示す、購入した人数sの上限値「e_max_s」を算出する。例えば、情報処理装置10は、「sum(min(s1_0,・・・,s1_k),・・・,min(sg_0,・・・,sg_k))」により上限値「e_max_s」を算出する。そして、情報処理装置10は、上限値「e_max_s」が閾値「s_min」以上である場合に、商品の組合せAを結果リスト14に登録する。なお、情報処理装置10は、上限値「e_max_s」が閾値「s_min」未満である場合、組合せAを購入した人数sは必ず「s_min」未満となり、求めたい組合せではないことがわかるので、ユーザごとの詳細な購入調査を行わない。
【0051】
具体的には、図10に示すように、情報処理装置10は、グループ1について、商品1を購入した人数「4」、商品2を購入した人数「4」、商品3を購入した人数「4」を計数する。この結果、情報処理装置10は、グループ1において各商品を購入した人数の最小値である「e_max」を「4」と算出する。すなわち、情報処理装置10は、グループ1に対して、商品1、商品2、商品3のすべてを購入したユーザが少なくとも4人はいることを検出する。
【0052】
同様に、情報処理装置10は、グループ2について、商品1を購入した人数「2」、商品2を購入した人数「1」、商品3を購入した人数「1」を計数する。この結果、情報処理装置10は、グループ2において各商品を購入した人数の最小値である「e_max」を「1」と算出する。すなわち、情報処理装置10は、グループ2に対して、商品1、商品2、商品3のすべてを購入したユーザが少なくとも1人はいることを検出する。
【0053】
そして、情報処理装置10は、各最小値「e_max」の合計値を「sum=min(s1_0,・・・,s1_k)+min(s2_0,・・・,s2_k)」により、「e_mas_s」を「5」と算出する。その後、情報処理装置10は、「(e_max_s)=5」と閾値「s_min」との比較により、商品1から商品3の組合せを結果リスト14に登録するか否かを判定する。
【0054】
図11は、実施例2にかかる下限値による抽出可否の判定を説明する図である。図11では、情報処理装置10は、3つの商品の購入者ができるだけ重複しないと考えた場合の重複人数を計算することで、一番悪い状態を見積もる処理実行する。なお、図11の処理は、例えば、情報処理装置10の第2抽出部22が実行する。
【0055】
図11の例では、情報処理装置10は、商品の組合せAを購入した人数sが少なくとも「e_min」以上である値を示す、購入した人数sの下限値「e_min_s」を算出する。例えば、情報処理装置10は、「sum(max(0,n-((n-s1_0)+・・・+(n-s1_k))),・・・,max(0,n-((n-sq_0)+・・・+(n-sq_k))))」により下限値「e_min_s」を算出する。そして、情報処理装置10は、下限値「e_min_s」が閾値「s_min」以上である場合に、商品の組合せAを結果リスト14に登録する。なお、情報処理装置10は、下限値「e_min_s」が閾値「s_min」未満である場合、組合せAを購入した人数sは必ず「s_min」未満となり、求めたい組合せではないことがわかるので、ユーザごとの詳細な購入調査を行わない。
【0056】
具体的には、図11に示すように、グループ1の商品1について、情報処理装置10は、商品1を購入した人数「4」であることから、ユーザ数「4」から購入者「4」を減算した値「0」を算出する。同様に、商品2について、情報処理装置10は、商品2を購入した人数「4」であることから、ユーザ数「4」から購入者「4」を減算した値「0」を算出し、商品3について、情報処理装置10は、商品3を購入した人数「4」であることから、ユーザ数「4」から購入者「4」を減算した値「0」を算出する。この結果、情報処理装置10は、グループ1について、全ユーザ数「4」から、減算結果「0」、「0」、「0」を加算した合計値「0」を減算した「4-0=4」を「e_min」として算出する。すなわち、情報処理装置10は、グループ1に対して、3つの商品を購入したユーザが4人重複していることを検出する。
【0057】
同様に、グループ2について、情報処理装置10は、商品1に関し、ユーザ数「4」から購入者「2」を減算した値「2」を算出し、商品2を関し、ユーザ数「4」から購入者「1」を減算した値「3」を算出し、商品3に関し、ユーザ数「4」から購入者「1」を減算した値「3」を算出する。この結果、情報処理装置10は、グループ2について、全ユーザ数「4」から、減算結果「2」、「3」、「3」を加算した合計値「0」を減算した「4-8=-4」を算出し、値が負の値であることから「e_min」を「0」とする。すなわち、情報処理装置10は、グループ2に対して、3つの商品を購入したユーザが1人も重複していないことを検出する。
【0058】
そして、情報処理装置10は、各最大値「e_min」の合計値「e_min_s」を「4」と算出する。その後、情報処理装置10は、「(e_min_s)=4」と閾値「s_min」との比較により、商品1から商品3の組合せを結果リスト14に登録するか否かを判定する。
【0059】
(処理の流れ)
図12は、実施例2にかかる抽出処理の流れを示すフローチャートである。なお、図12では、商品数を「d_x」、顧客数(ユーザ数)を「n」、任意に設定可能な閾値を「s_min」、任意に設定可能な組み合わせる商品の数を「k」、顧客を分割するグループ数を「g」として説明するが、あくまで例示であり、これに限定されるものではない。また、矛盾のない範囲で、各処理を入れ替えることもできる。
【0060】
図12に示すように、情報処理装置10は、「(d_x)×n」の行列データxのソートを実行する(S201)。続いて、情報処理装置10は、d_x個の商品からk個を選んだ商品組合せのリストLを生成する(S202)。続いて、情報処理装置10は、顧客を任意のg個のグループに分割し(S203)、グループごとに各商品を購入した人数を計算する(S204)。
【0061】
その後、情報処理装置10は、リストLのすべての商品組合せに対して、S205からS213までのループ処理を実行する。
【0062】
具体的には、情報処理装置10は、グループごとに、商品の組合せに対して、「e_max」と「e_min」を算出する(S206)。また、情報処理装置10は、各グループの「e_min」を合計した「e_min_s」と、「e_max」を合計した「e_max_s」とを算出する(S207)。
【0063】
ここで、情報処理装置10は、「e_min_s」が閾値「s_min」以上である場合(S208:Yes)、商品の組合せを結果リストに追加し(S209)、次の組合せについて処理を実行する(S213)。
【0064】
一方、情報処理装置10は、「e_min_s」が閾値「s_min」未満である場合(S208:No)、「e_max_s」が閾値「s_min」未満であるか否かを判定する(S210)。ここで、情報処理装置10は、「e_max_s」が閾値「s_min」以上である場合(S210:No)、組合せ内の全商品を購入した人数sを計算する(S211)。
【0065】
そして、情報処理装置10は、組合せ内の全商品を購入した人数sが閾値「s_min」以上である場合(S212:Yes)、商品の組合せを結果リストに追加し(S209)、次の組合せについて処理を実行する。
【0066】
一方、組合せ内の全商品を購入した人数sが閾値「s_min」未満である場合(S212:No)、または、S210で「e_max_s」が閾値「s_min」未満である場合(S210:Yes)、情報処理装置10は、商品の組合せを結果リストに追加することなく、次の組合せについて処理を実行する(S213)。
【0067】
その後、情報処理装置10は、抽出された商品の組合せが登録される結果リスト14を出力する(S214)。
【0068】
(具体例)
次に、図13から図16を用いて、実施例2の具体例を説明する。図13図14は、実施例2の具体例を説明する図である。ここでは、すべてのユーザが購入した商品の組合せを抽出する例を説明する。なお、グループに属するユーザ数「4」を閾値「s_min」とする。
【0069】
図13に示すように、ここでは、サンプルIDが「0」から「8」の8人のユーザの商品1から商品5の購入履歴を用いて説明する。すなわち、8行5列の商品購入履歴データを例にして説明する。なお、詳細は後述するが、商品購入履歴データは、左の列に「1」(商品購入あり)が整列されるようにソート済みとする。
【0070】
このような状態において、情報処理装置10は、図13に示すように、データ数が半分になるように、サンプルIDが「6、1、5、4」のグループ1と、サンプルIDが「7、2、8、3」のグループ2とに分類する。そして、情報処理装置1は、グループ1について、商品1、商品2、商品3、商品4、商品5のそれぞれを購入した人数を「4、4、2、4、2」と計数する。同様に、情報処理装置1は、グループ1について、商品1、商品2、商品3、商品4、商品5のそれぞれを購入した人数を「2、1、1、2、1」と計数する。
【0071】
続いて、図14に示すように、情報処理装置10は、「商品1、商品4、商品3」の組合せ(a)について、抽出判定を実行する。具体的には、情報処理装置10は、グループ1について、各商品の購入人数の最小値「2」を「e_max」と算出し、全ユーザ数(4)から各商品を購入していないユーザの合計数(2)を減算した値「2」を「e_min」と算出する。同様に、情報処理装置10は、グループ2について、各商品の購入人数の最小値「1」を「e_max」と算出し、全ユーザ数(4)から各商品を購入していないユーザの合計数(8)を減算した値が「-4」であることから「0」を「e_min」と算出する。
【0072】
そして、情報処理装置10は、グループ1とグループ2の各「e_man」の合計である「e_max_s=3」、各「e_min」の合計である「e_min_s=2」を算出する。この結果、情報処理装置10は、「e_max_s=3」も「e_min_s=2」も閾値「s_min=4」未満であることから、「商品1、商品4、商品3」を抽出対象外と判定する。
【0073】
一方、図14に示すように、情報処理装置10は、「商品2、商品1、商品4」の組合せ(b)について、抽出判定を実行する。具体的には、情報処理装置10は、グループ1について、各商品の購入人数の最小値「4」を「e_max」と算出し、全ユーザ数(4)から各商品を購入していないユーザの合計数(0)を減算した値「4」を「e_min」と算出する。同様に、情報処理装置10は、グループ2について、各商品の購入人数の最小値「1」を「e_max」と算出し、全ユーザ数(4)から各商品を購入していないユーザの合計数(8)を減算した値が「-4」であることから「0」を「e_min」と算出する。
【0074】
そして、情報処理装置10は、グループ1とグループ2の各「e_man」の合計である「e_max_s=5」、各「e_min」の合計である「e_min_s=4」を算出する。この結果、情報処理装置10は、「e_max_s=5」が閾値「s_min=4」以上であることから、「商品2、商品1、商品4」を抽出対象と判定する。
【0075】
このように、情報処理装置10は、各商品の組合せについて、「e_man_s」および「e_min_s」の算出を実行し、抽出対象を選定する。すなわち、情報処理装置10は、「e_min_s」が閾値(s_min)以上の場合、購入人数は閾値以上なので、結果リスト14に登録し、「e_max_s」が閾値未満の場合、購入人数は閾値未満なので、結果リスト14には登録しない。なお、情報処理装置10は、「e_min_s<閾値≦e_max_s」の場合、購入人数は閾値以上か未満か判断不能なので、一人ずつの購入チェックを行う。
【0076】
ここで、実施例2による抽出判定をより効率的に実行するためのソート処理について説明する。行列の並び順によって、下限値の見積もり「e_min_s」と上限値の見積もり「e_max_s」の値が異なることから、対象外(枝刈り)と判定される場合とされない場合がある。つまり、行列の並び順は計算効率に影響するので、行列を何らかの手法で予めソートしておくと、計算効率を上げることができる。
【0077】
図15は、商品購入履歴データのソートを説明する図である。図15に示すように、情報処理装置10は、左上に1が集まるように、すなわち行列の小さい番号に1が集約されるように、各商品(列)の1の数を計算し、1が多い順に並び替える。この結果、情報処理装置10は、行列データXを列でソートした行列データX´を生成する。
【0078】
続いて、情報処理装置10は、行列データX´のうち、1が多い順で並び替える。このとき、情報処理装置10は、最初(左端)の商品ほど1を集約させるように、サンプルを並び替える。例えば、情報処理装置10は、商品2を購入したユーザ(サンプル)を上詰めにし、さらに商品1を購入したユーザを上詰めにし、さらに商品4を購入したユーザを上詰めにすることで、1が左上詰めになるように行の並び替えを実行し、行と列でソートした行列データX´´を生成する。
【0079】
この結果、情報処理装置10は、グループ別に見積もりを行うときの処理を効率化することができる。図16は、商品購入履歴データのソートの有効性を説明する図である。図16の(a)に示すように、ソートされていない場合、閾値「s_min=3」のとき、「e_max≧s_min」となるので、対象外との判定が実行されず、ユーザ一人ずつのチェックへ進むことになる。
【0080】
一方、図16の(b)に示すように、1が集約されるようにソートしておくことで、なるべく同じグループに同じ値が集まるようにソートされる。このため、閾値「s_min=3」のとき、「e_max<s_min」となるので、対象外との判定が実行される。この結果、情報処理装置10は、ユーザ一人ずつのチェックへ進むことを抑制でき、計算量を削減することができる。
【0081】
なお、実施例2では、左上に1を集約する例で説明したが、これに限定されるものではない。例えば、情報処理装置10は、右下(行列の後半)に1が集まるように集約してもよい。つまり、情報処理装置10は、なるべく同じグループに同じ要素値が集まるようにソートすればよい。
【0082】
(効果)
上述したように、情報処理装置10は、計算量を削減することができる。例えば、顧客数n=1000、商品数d_x=100、組み合わせる商品の数k=3の場合、削減できるAND演算の回数は、1つの組合せの対象外判定につき、「n×(k-1)=2000回」となる。なお、削減回数の計算式は、「(組合せ数:d_x)×(1組で必要なAND演算の回数:(k-1))×(枝刈り率)×(顧客数:n)」である。
【0083】
例えば、抽出対象外である確率を示す枝刈り率が「2%」の場合、2%のAND演算を削減することができるので、「削減回数=(100×(3-1)×0.02×1000)=646回」を削減することができる。また、枝刈り率が「10%」の場合、10%のAND演算を削減することができるので、「削減回数=(100×(3-1)×0.1×1000)=3234回」を削減することができる。
【実施例0084】
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。
【0085】
(数値等)
上記実施例で用いたデータセット例、閾値、ユーザ数、データ数等は、あくまで一例であり、任意に変更することができる。また、各フローチャートで説明した処理の流れも矛盾のない範囲内で適宜変更することができる。なお、閾値(s_min)には、商品の組み合わせ数(k)とは関係なく、また、グループに属する人数とも関係なく、入力データのサンプル数(人数)以下かつ1以上の任意の値を設定することができる。
【0086】
また、上記実施例では、商品購入履歴を例にして説明したが、これに限定されるものではない。行をユーザの年齢と性別かつ列(項目)を入店時間とする入店履歴、行を病気の種別かつ列を検査項目とする病気の原因発見DBなど様々なデータベースに適用することができる。
【0087】
(システム)
上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【0088】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散や統合の具体的形態は図示のものに限られない。つまり、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、第1抽出部21と第2抽出部22とを統合することもできる。
【0089】
さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【0090】
(ハードウェア)
図17は、ハードウェア構成例を説明する図である。図17に示すように、情報処理装置10は、通信装置10a、HDD(Hard Disk Drive)10b、メモリ10c、プロセッサ10dを有する。また、図17に示した各部は、バス等で相互に接続される。
【0091】
通信装置10aは、ネットワークインタフェースカードなどであり、他の装置との通信を行う。HDD10bは、図2に示した機能を動作させるプログラムやDBを記憶する。
【0092】
プロセッサ10dは、図2に示した各処理部と同様の処理を実行するプログラムをHDD10b等から読み出してメモリ10cに展開することで、図2等で説明した各機能を実行するプロセスを動作させる。例えば、このプロセスは、情報処理装置10が有する各処理部と同様の機能を実行する。具体的には、プロセッサ10dは、第1抽出部21、第2抽出部22、出力制御部23等と同様の機能を有するプログラムをHDD10b等から読み出す。そして、プロセッサ10dは、第1抽出部21、第2抽出部22、出力制御部23等と同様の処理を実行するプロセスを実行する。
【0093】
このように、情報処理装置10は、プログラムを読み出して実行することで情報処理方法を実行する情報処理装置として動作する。また、情報処理装置10は、媒体読取装置によって記録媒体から上記プログラムを読み出し、読み出された上記プログラムを実行することで上記した実施例と同様の機能を実現することもできる。なお、この他の実施例でいうプログラムは、情報処理装置10によって実行されることに限定されるものではない。例えば、他のコンピュータまたはサーバがプログラムを実行する場合や、これらが協働してプログラムを実行するような場合にも、上記実施例が同様に適用されてもよい。
【0094】
このプログラムは、インターネットなどのネットワークを介して配布されてもよい。また、このプログラムは、ハードディスク、フレキシブルディスク(FD)、CD-ROM、MO(Magneto-Optical disk)、DVD(Digital Versatile Disc)などのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行されてもよい。
【符号の説明】
【0095】
10 情報処理装置
11 通信部
12 記憶部
13 商品購入履歴データ
14 結果リスト
20 制御部
21 第1抽出部
22 第2抽出部
23 出力制御部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17