(57)【要約】【課題】ポイゾニング攻撃への耐性を少ない計算量で実現できる推薦装置、推薦方法及び推薦プログラムを提供すること。【解決手段】推薦装置１は、評価行列の列毎に各評価値を平均値からの差分で中心化する初期処理部１１と、評価値を複数の部分集合にランダムに分割した後、１番目の部分集合に対応する評価行列を特異値分解し、初期ユーザ因子行列及び主成分アイテム因子行列を算出する抽出処理部１２と、複数の部分集合それぞれに対応する各評価行列に主成分アイテム因子行列を掛け、各行の総和が大きい方から所定の割合を残して他の行の評価値をゼロに更新する削除処理部１３と、２番目以降の部分集合を順に用いて、交互最小二乗法によりアイテム因子行列及びユーザ因子行列を交互に算出する算出処理部１４と、算出されたユーザ因子行列及びアイテム因子行列の転置の積に対して、列毎に平均値を加算した補完行列を出力する出力部１５と、を備える。【選択図】図１
2019114053.tif 000002
【特許請求の範囲】
【請求項１】
複数ユーザの複数アイテムに対する評価値を要素とする評価行列を入力として、当該評価行列を分解したユーザ因子行列及びアイテム因子行列を掛け合わせることにより、評価値を補完した補完行列を出力する推薦装置であって、
前記評価行列の列毎に、観測された各評価値について平均値からの差分で当該評価値を更新する初期処理部と、
前記観測された各評価値を複数の部分集合にランダムに分割した後、前記評価行列の各要素のうち、１番目の部分集合に対応する要素以外をゼロとした行列を特異値分解し、所定数の左特異ベクトルからなる初期ユーザ因子行列、及び設定された主成分数の右特異ベクトルからなる主成分アイテム因子行列を算出する抽出処理部と、
前記評価行列の要素のうち、前記複数の部分集合それぞれに対応する要素以外をゼロとした各行列に、前記主成分アイテム因子行列を掛け、各行の総和が大きい方から前記部分集合の数に応じた所定の割合を残して、他の行に対応する当該部分集合の評価値をゼロに更新する削除処理部と、
前記初期ユーザ因子行列の各行のうち、前記削除処理部により前記１番目の部分集合の評価値を更新した行の値をゼロに更新した後、前記削除処理部により更新された２番目以降の部分集合を順に用いて、交互最小二乗法により、前記ユーザ因子行列及び前記アイテム因子行列の転置の積と当該部分集合との２次のフロベニウスノルムを最小化する前記アイテム因子行列及び前記ユーザ因子行列を交互に算出する算出処理部と、
前記算出処理部により算出された前記ユーザ因子行列及び前記アイテム因子行列の転置の積に対して、列毎に前記平均値を加算した前記補完行列を出力する出力部と、を備える推薦装置。
【請求項２】
前記削除処理部は、ポイゾニング攻撃に用いられる毒データの最小量に基づいて、前記所定の割合を決定する請求項１に記載の推薦装置。
【請求項３】
コンピュータが複数ユーザの複数アイテムに対する評価値を要素とする評価行列を入力として、当該評価行列を分解したユーザ因子行列及びアイテム因子行列を掛け合わせることにより、評価値を補完した補完行列を出力する推薦方法であって、
前記評価行列の列毎に、観測された各評価値について平均値からの差分で当該評価値を更新する初期処理ステップと、
前記観測された各評価値を複数の部分集合にランダムに分割した後、前記評価行列の各要素のうち、１番目の部分集合に対応する要素以外をゼロとした行列を特異値分解し、所定数の左特異ベクトルからなる初期ユーザ因子行列、及び設定された主成分数の右特異ベクトルからなる主成分アイテム因子行列を算出する抽出処理ステップと、
前記評価行列の要素のうち、前記複数の部分集合それぞれに対応する要素以外をゼロとした各行列に、前記主成分アイテム因子行列を掛け、各行の総和が大きい方から前記部分集合の数に応じた所定の割合を残して、他の行に対応する当該部分集合の評価値をゼロに更新する削除処理ステップと、
前記初期ユーザ因子行列の各行のうち、前記削除処理ステップにおいて前記１番目の部分集合の評価値を更新した行の値をゼロに更新した後、前記削除処理ステップにおいて更新された２番目以降の部分集合を順に用いて、交互最小二乗法により、前記ユーザ因子行列及び前記アイテム因子行列の転置の積と当該部分集合との２次のフロベニウスノルムを最小化する前記アイテム因子行列及び前記ユーザ因子行列を交互に算出する算出処理ステップと、
前記算出処理ステップにおいて算出された前記ユーザ因子行列及び前記アイテム因子行列の転置の積に対して、列毎に前記平均値を加算した前記補完行列を出力する出力ステップと、を実行する推薦方法。
【請求項４】
コンピュータに、複数ユーザの複数アイテムに対する評価値を要素とする評価行列を入力として、当該評価行列を分解したユーザ因子行列及びアイテム因子行列を掛け合わせることにより、評価値を補完した補完行列を出力させるための推薦プログラムであって、
前記評価行列の列毎に、観測された各評価値について平均値からの差分で当該評価値を更新する初期処理ステップと、
前記観測された各評価値を複数の部分集合にランダムに分割した後、前記評価行列の各要素のうち、１番目の部分集合に対応する要素以外をゼロとした行列を特異値分解し、所定数の左特異ベクトルからなる初期ユーザ因子行列、及び設定された主成分数の右特異ベクトルからなる主成分アイテム因子行列を算出する抽出処理ステップと、
前記評価行列の要素のうち、前記複数の部分集合それぞれに対応する要素以外をゼロとした各行列に、前記主成分アイテム因子行列を掛け、各行の総和が大きい方から前記部分集合の数に応じた所定の割合を残して、他の行に対応する当該部分集合の評価値をゼロに更新する削除処理ステップと、
前記初期ユーザ因子行列の各行のうち、前記削除処理ステップにおいて前記１番目の部分集合の評価値を更新した行の値をゼロに更新した後、前記削除処理ステップにおいて更新された２番目以降の部分集合を順に用いて、交互最小二乗法により、前記ユーザ因子行列及び前記アイテム因子行列の転置の積と当該部分集合との２次のフロベニウスノルムを最小化する前記アイテム因子行列及び前記ユーザ因子行列を交互に算出する算出処理ステップと、
前記算出処理ステップにおいて算出された前記ユーザ因子行列及び前記アイテム因子行列の転置の積に対して、列毎に前記平均値を加算した前記補完行列を出力する出力ステップと、を実行させるための推薦プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、協調フィルタリングに基づく推薦システムに関する。
【背景技術】
【０００２】
従来、行列分解を用いた協調フィルタリグに基づく推薦システムは、各ユーザの各アイテムに対する評価データを行列化した評価行列を、相互最小二乗法によりユーザ及びアイテムのそれぞれの因子行列に分解し、さらにこれらを掛け合わせて評価行列を再構築することで欠損値の補完を行う。そして、推薦システムは、補完された値をユーザによる未評価のアイテムに対する評価の予測値として利用し、ユーザにアイテムの推薦を行う（例えば、非特許文献１参照）。
【０００３】
協調フィルタリングに対する攻撃としては、攻撃者が正規のユーザとして不正にアイテムを評価し、評価データに毒データを混入することにより、予測性能の劣化、又は特定商品の人気向上若しくは低下を招くポイゾニング攻撃がある。また、近年では、ポイゾニングを用いて評価の予測値を意図的に操作することで、推薦されたアイテムからユーザの商品履歴を推定するプライバシ暴露の攻撃の可能性が報告されている。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Ｂ．  Ｌｉ，  Ｙ．  Ｗａｎｇ，  Ａ．  Ｓｉｎｇｈ，  ａｎｄ  Ｙ．  Ｖｏｒｏｂｅｙｃｈｉｋ，  Ｄａｔａ  Ｐｏｉｓｏｎｉｎｇ  Ａｔｔａｃｋｓ  ｏｎ  Ｆａｃｔｏｒｉｚａｔｉｏｎ−Ｂａｓｅｄ  Ｃｏｌｌａｂｏｒａｔｉｖｅ  Ｆｉｌｔｅｒｉｎｇ，  Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  ３ｒｄ  Ｎｅｕｒａｌ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｐｒｏｃｅｓｓｉｎｇ  Ｓｙｓｔｅｍｓ  （ＮＩＰＳ  ２０１６），  ｐｐ．  １−１３，  ２０１６．
【非特許文献２】Ｂｈａｓｋａｒ  Ｍｅｈｔａ，  Ｔｈｏｍａｓ  Ｈｏｆｍａｎｎ，  Ｐｅｔｅｒ  Ｆａｎｋｈａｕｓｅｒ，  Ｌｉｅｓ  ａｎｄ  ｐｒｏｐａｇａｎｄａ：  ｄｅｔｅｃｔｉｎｇ  ｓｐａｍ  ｕｓｅｒｓ  ｉｎ  ｃｏｌｌａｂｏｒａｔｉｖｅ  ｆｉｌｔｅｒｉｎｇ，  Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  １２ｔｈ  ｉｎｔｅｒｎａｔｉｏｎａｌ  ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｉｎｔｅｌｌｉｇｅｎｔ  ｕｓｅｒ  ｉｎｔｅｒｆａｃｅｓ  （ＩＵＩ  ２０１７），  ｐｐ．  １４−２１，  ２００７．
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、ポイゾニング攻撃における毒データは、作意のあるデータであるため、正常なデータよりも分散が小さくなるといった特性が知られている（例えば、非特許文献２参照）。
そこで、ポイゾニング攻撃への対策として、ユーザの評価データに主成分分析を適用し、分散の大きい、例えば第３主成分までの主成分に対して貢献度の高いユーザを正常なユーザと考え、それ以外のユーザを削除する方法がある。
【０００６】
しかしながら、この主成分分析を用いた方法は、行列分解により行列補完を行う処理とは別に実行する必要がある。主成分分析の計算量は行列の次数の３乗オーダであり、さらに、行列補完のための交互最小化アルゴリズムによる行列分解にも同等の計算量が必要なため、評価行列が大きくなるほど、計算量が膨大になっていた。
【０００７】
本発明は、ポイゾニング攻撃への耐性を少ない計算量で実現できる推薦装置、推薦方法及び推薦プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明に係る推薦装置は、複数ユーザの複数アイテムに対する評価値を要素とする評価行列を入力として、当該評価行列を分解したユーザ因子行列及びアイテム因子行列を掛け合わせることにより、評価値を補完した補完行列を出力する推薦装置であって、前記評価行列の列毎に、観測された各評価値について平均値からの差分で当該評価値を更新する初期処理部と、前記観測された各評価値を複数の部分集合にランダムに分割した後、前記評価行列の各要素のうち、１番目の部分集合に対応する要素以外をゼロとした行列を特異値分解し、所定数の左特異ベクトルからなる初期ユーザ因子行列、及び設定された主成分数の右特異ベクトルからなる主成分アイテム因子行列を算出する抽出処理部と、前記評価行列の要素のうち、前記複数の部分集合それぞれに対応する要素以外をゼロとした各行列に、前記主成分アイテム因子行列を掛け、各行の総和が大きい方から前記部分集合の数に応じた所定の割合を残して、他の行に対応する当該部分集合の評価値をゼロに更新する削除処理部と、前記初期ユーザ因子行列の各行のうち、前記削除処理部により前記１番目の部分集合の評価値を更新した行の値をゼロに更新した後、前記削除処理部により更新された２番目以降の部分集合を順に用いて、交互最小二乗法により、前記ユーザ因子行列及び前記アイテム因子行列の転置の積と当該部分集合との２次のフロベニウスノルムを最小化する前記アイテム因子行列及び前記ユーザ因子行列を交互に算出する算出処理部と、前記算出処理部により算出された前記ユーザ因子行列及び前記アイテム因子行列の転置の積に対して、列毎に前記平均値を加算した前記補完行列を出力する出力部と、を備える。
【０００９】
前記削除処理部は、ポイゾニング攻撃に用いられる毒データの最小量に基づいて、前記所定の割合を決定してもよい。
【００１０】
本発明に係る推薦方法は、コンピュータが複数ユーザの複数アイテムに対する評価値を要素とする評価行列を入力として、当該評価行列を分解したユーザ因子行列及びアイテム因子行列を掛け合わせることにより、評価値を補完した補完行列を出力する推薦方法であって、前記評価行列の列毎に、観測された各評価値について平均値からの差分で当該評価値を更新する初期処理ステップと、前記観測された各評価値を複数の部分集合にランダムに分割した後、前記評価行列の各要素のうち、１番目の部分集合に対応する要素以外をゼロとした行列を特異値分解し、所定数の左特異ベクトルからなる初期ユーザ因子行列、及び設定された主成分数の右特異ベクトルからなる主成分アイテム因子行列を算出する抽出処理ステップと、前記評価行列の要素のうち、前記複数の部分集合それぞれに対応する要素以外をゼロとした各行列に、前記主成分アイテム因子行列を掛け、各行の総和が大きい方から前記部分集合の数に応じた所定の割合を残して、他の行に対応する当該部分集合の評価値をゼロに更新する削除処理ステップと、前記初期ユーザ因子行列の各行のうち、前記削除処理ステップにおいて前記１番目の部分集合の評価値を更新した行の値をゼロに更新した後、前記削除処理ステップにおいて更新された２番目以降の部分集合を順に用いて、交互最小二乗法により、前記ユーザ因子行列及び前記アイテム因子行列の転置の積と当該部分集合との２次のフロベニウスノルムを最小化する前記アイテム因子行列及び前記ユーザ因子行列を交互に算出する算出処理ステップと、前記算出処理ステップにおいて算出された前記ユーザ因子行列及び前記アイテム因子行列の転置の積に対して、列毎に前記平均値を加算した前記補完行列を出力する出力ステップと、を実行する。
【００１１】
本発明に係る推薦プログラムは、コンピュータに、複数ユーザの複数アイテムに対する評価値を要素とする評価行列を入力として、当該評価行列を分解したユーザ因子行列及びアイテム因子行列を掛け合わせることにより、評価値を補完した補完行列を出力させるための推薦プログラムであって、前記評価行列の列毎に、観測された各評価値について平均値からの差分で当該評価値を更新する初期処理ステップと、前記観測された各評価値を複数の部分集合にランダムに分割した後、前記評価行列の各要素のうち、１番目の部分集合に対応する要素以外をゼロとした行列を特異値分解し、所定数の左特異ベクトルからなる初期ユーザ因子行列、及び設定された主成分数の右特異ベクトルからなる主成分アイテム因子行列を算出する抽出処理ステップと、前記評価行列の要素のうち、前記複数の部分集合それぞれに対応する要素以外をゼロとした各行列に、前記主成分アイテム因子行列を掛け、各行の総和が大きい方から前記部分集合の数に応じた所定の割合を残して、他の行に対応する当該部分集合の評価値をゼロに更新する削除処理ステップと、前記初期ユーザ因子行列の各行のうち、前記削除処理ステップにおいて前記１番目の部分集合の評価値を更新した行の値をゼロに更新した後、前記削除処理ステップにおいて更新された２番目以降の部分集合を順に用いて、交互最小二乗法により、前記ユーザ因子行列及び前記アイテム因子行列の転置の積と当該部分集合との２次のフロベニウスノルムを最小化する前記アイテム因子行列及び前記ユーザ因子行列を交互に算出する算出処理ステップと、前記算出処理ステップにおいて算出された前記ユーザ因子行列及び前記アイテム因子行列の転置の積に対して、列毎に前記平均値を加算した前記補完行列を出力する出力ステップと、を実行させるためのものである。
【発明の効果】
【００１２】
本発明によれば、ポイゾニング攻撃への耐性を少ない計算量で実現できる。
【図面の簡単な説明】
【００１３】
【図１】実施形態に係る推薦装置の機能構成を示す図である。
【図２】実施形態に係る推薦装置における補完行列の生成処理を示すフローチャートである。
【発明を実施するための形態】
【００１４】
以下、本発明の実施形態の一例について説明する。
図１は、本実施形態に係る推薦装置１の機能構成を示す図である。
推薦装置１は、サーバ装置又はパーソナルコンピュータ等の情報処理装置（コンピュータ）であり、制御部１０、記憶部２０、及び各種の入出力デバイスを備える。
【００１５】
制御部１０は、推薦装置１の全体を制御する部分であり、記憶部２０に記憶された各種プログラムを適宜読み出して実行することにより、本実施形態における機能を実現している。制御部１０は、ＣＰＵであってよい。
【００１６】
記憶部２０は、ハードウェア群を推薦装置１として機能させるための各種プログラム、及び各種データ等の記憶領域であり、ＲＯＭ、ＲＡＭ、フラッシュメモリ又はハードディスク（ＨＤＤ）等であってよい。具体的には、記憶部２０は、本実施形態の機能を制御部１０に実行させるための推薦プログラムの他、後述の入力データとしての評価行列、出力データとしての補完行列、処理途中に生成される因子行列等の各種データを記憶する。
【００１７】
また、制御部１０は、初期処理部１１と、抽出処理部１２と、削除処理部１３と、算出処理部１４と、出力部１５とを備える。
推薦装置１は、これらの機能部が協働することで、ユーザに対する協調フィルタリングによるアイテム推薦を実現する。すなわち、推薦装置１は、複数ユーザの複数アイテムに対する評価値を要素とする評価行列を入力として、この評価行列を分解したユーザ因子行列及びアイテム因子行列を掛け合わせることにより、評価値を補完した補完行列を出力する。
【００１８】
初期処理部１１は、入力された評価行列の列毎に、観測された各評価値について、これらの平均値からの差分で評価値を更新する。
【００１９】
抽出処理部１２は、観測された各評価値を複数の部分集合にランダムに分割した後、評価行列の各要素のうち、１番目の部分集合に対応する要素以外をゼロとした行列を特異値分解する。これにより、抽出処理部１２は、所定数（ｋ列）の左特異ベクトルからなる初期ユーザ因子行列、及び設定された主成分数（例えば、第３主成分まで）の右特異ベクトルからなる主成分アイテム因子行列を算出する。
【００２０】
削除処理部１３は、評価行列の要素のうち、複数の部分集合それぞれに対応する要素以外をゼロとした各行列に、主成分アイテム因子行列を掛け、各行の総和が大きい方から部分集合の数に応じた所定の割合を残して、他の行に対応する部分集合の評価値をゼロに更新する。
このとき、削除処理部１３は、想定されるポイゾニング攻撃に用いられる毒データの最小量に基づいて、所定の割合を決定する。
【００２１】
算出処理部１４は、まず、初期ユーザ因子行列の各行のうち、削除処理部１３により１番目の部分集合の評価値を更新した該当行の値をゼロに更新する。続いて、算出処理部１４は、削除処理部１３により更新された２番目以降の部分集合を順に用いて、交互最小二乗法により、ユーザ因子行列及びアイテム因子行列の転置の積と部分集合との２次のフロベニウスノルムを最小化するアイテム因子行列及びユーザ因子行列を交互に算出する。
【００２２】
出力部１５は、算出処理部１４により算出されたユーザ因子行列及びアイテム因子行列の転置の積に対して、列毎に初期処理部１１が用いた平均値を加算し、補完行列を算出して出力する。
【００２３】
次に、推薦装置１において補完行列を生成する手順を詳述する。
Ｍをｍ人のユーザのｎ個のアイテムに対する評価行列とする。Ｍｉ，ｊは、評価行列Ｍのｉ番目の行（ユーザ）のｊ番目の列（アイテム）の評価を示す。
Ωを評価行列Ｍにおいて評価が観測された要素のインデックス集合とする。ＲΩ（Ａ）は、行列Ａが与えられたときに、（ｉ，ｊ）∈ΩであればＡｉ，ｊを返し、そうでなければ０を返す関数とする。
【００２４】
評価行列Ｍが与えられたとき、推薦装置１は、ＲΩ（Ｍ−Ｘ）の２次のフロベニウスノルムを最小化するｋランクのｍ行ｎ列の補完行列Ｘを求める。補完行列Ｘでは、元の評価行列Ｍで評価が観測されなかった要素において何らかの値が補完されている。
推薦装置１は、これらの補完された値を評価の予測値として利用し、予測値が高いアイテムをユーザに推薦する。
【００２５】
推薦装置１は、評価行列Ｍの補完行列Ｘを、交互最小二乗法を応用した以下の手順で求める。
図２は、本実施形態に係る推薦装置１における補完行列の生成処理を示すフローチャートである。
【００２６】
ステップＳ１において、初期処理部１１は、評価行列Ｍの列毎に、０も含む観測された評価値の平均を求める。ｕｊをｊ列の平均値とし、全ての（ｉ，ｊ）∈Ωに対してＭｉ，ｊ−ｕｊを計算し、評価値を列毎に中心化する。
【００２７】
ステップＳ２において、抽出処理部１２は、評価行列Ｍのインデックス集合Ωを２Ｔ＋１個の部分集合Ω０、・・・、Ω２Ｔに分割する。ただし、Ωの要素は全てΩ０、・・・、Ω２Ｔのいずれかの部分集合に含まれ、重複はないとする。また、抽出処理部１２は、この分割の処理を、集合Ωからランダムに要素を選択して行う。
【００２８】
ステップＳ３において、抽出処理部１２は、ＲΩ０（Ｍ）を特異値分解し、ｍ行ｍ列の左特異ベクトルＵ０とｎ行ｎ列の右特異ベクトルＶ０とを求める。続いて、抽出処理部１２は、Ｕ０のｋ＋１列目以降の列を削除し、ｍ行ｋ列のユーザ因子行列Ｕ０ｋを得る。さらに、抽出処理部１２は、右特異ベクトルＶ０のうち、寄与率の高い例えば第３主成分までを採用するように設定された場合、Ｖ０の４列目以降を削除し、ｎ行３列のアイテム因子行列Ｖ０３を得る。
なお、Ｖ０３は、ＲΩ０（Ｍ）から導出されるため、未観測の評価値にも０が補完されており、ｎ行３列の全ての要素に値が設定される。
【００２９】
ステップＳ４において、削除処理部１３は、ＲΩ０（Ｍ）・Ｖ０３を計算し、さらに各行の総和を第３主成分までへの貢献度として計算する。そして、削除処理部１３は、総和の大きさが（１−ｒ）ｍ／（２Ｔ＋１）＋１番目以降に大きい行の評価値を全て０とみなし、ユーザ因子行列Ｕ０ｋの該当行の要素を０に更新してＵ０ｋ’とする。ただし、ｒは、想定されるポイゾニング攻撃の種類に応じて設定される削除したい毒データの割合であり、０＜ｒ＜１とする。
【００３０】
ステップＳ５において、算出処理部１４は、以下のステップＳ６〜Ｓ９をｔ＝０から始め、ｔ＝Ｔ−１まで繰り返す。
【００３１】
ステップＳ６において、算出処理部１４は、ＲΩｔ＋１（Ｍ）・Ｖ０３を計算し、さらに各行の総和を第３主成分までへの貢献度として計算する。算出処理部１４は、総和が（１−ｒ）ｍ／（２Ｔ＋１）＋１番目以降に大きい行に該当するインテックスをΩｔ＋１から削除し、この操作後に得られるインデックス集合をΩｔ＋１’とする。
【００３２】
ステップＳ７において、算出処理部１４は、インデックス集合Ωｔ＋１’の範囲で、観測された実際の評価値と補完行列の評価値との差分を最適化するために、ＲΩｔ＋１’（Ｕｔｋ’・ｔｒ（Ｖ）−Ｍ）の２次のフロベニウスノルムを最小化するｎ行ｋ列のアイテム因子行列Ｖを選択し、これをＶｔ＋１ｋとする。ただし、ｔｒ（Ａ）は、Ａの転置行列である。
【００３３】
ステップＳ８において、算出処理部１４は、ＲΩＴ＋ｔ＋１（Ｍ）・Ｖ０３を計算し、さらに各行の総和を第３主成分までへの貢献度として計算する。算出処理部１４は、総和が（１−ｒ）ｍ／（２Ｔ＋１）＋１番目以降に大きい行に該当するインテックスをΩＴ＋ｔ＋１から削除し、この操作後に得られるインデック集合をΩＴ＋ｔ＋１’とする。
【００３４】
ステップＳ９において、算出処理部１４は、インデックス集合ΩＴ＋ｔ＋１’の範囲で、観測された実際の評価値と補完行列の評価値との差分を最適化するために、ＲΩＴ＋ｔ＋１’（Ｕ・ｔｒ（Ｖｔ＋１ｋ）−Ｍ）の２次のフロベニウスノルムを最小化するｍ行ｋ列のユーザ因子行列Ｕを選択し、これをＵｔ＋１ｋ’とする。
【００３５】
ステップＳ１０において、出力部１５は、ＵＴｋ’及びＶＴｋから行列ＵＴｋ’・ｔｒ（ＶＴｋ）を算出し、さらにステップＳ１で用いた列毎の平均値を算出した行列の各要素に加算して補完行列Ｘを生成する。
【００３６】
このように、推薦装置１は、交互最小二乗法を用いてｍ人のユーザのｎ個のアイテムに対する評価行列を低ランクのユーザの因子行列とアイテムの因子行列とに分解する際、評価行列をそのままではなく、評価値から各列の平均を引き列毎に評価値を中心化してから特異値分解を行う。これにより得られる右特異ベクトル、すなわちアイテム因子行列の列ベクトルは分散が大きい順に並ぶ。
【００３７】
推薦装置１は、アイテム因子行列のうち、例えば第３主成分より右の４列目以降を削除し、評価行列に右から掛け合わせ、行毎に総和を計算し、総和の大きさが下位のものについては評価行列から該当する行を削除する。４列目以降を削除したアイテム因子行列を評価行列に右から掛け合わせて行の総和を取ることで、因子の重要度を考慮した各ユーザの第１因子から第３因子までの貢献度が得られる。
したがって、推薦装置１は、総和の大きさが下位の行を評価行列から削除することで、分散が小さい因子へ貢献しているユーザを削除できる。毒データは特定の目的をもって作られることから分散が小さいため、この方法により毒データが削除される。
さらに、推薦装置１は、このような毒データに共通な特性を用いているため、異なる種類のポイゾニング攻撃に包括して有効である。
【００３８】
また、推薦装置１は、交互最小二乗法による行列分解において、評価データの集合を複数の部分集合に分解した後、最初の部分集合に対応する評価行列に対して特異値分解を適用し、得られた左特異ベクトルをユーザ因子行列の初期値とする。推薦装置１は、次の部分集合に対してはユーザ因子行列を固定してアイテム因子行列の最適化を図り、その次の部分集合に対してはアイテム因子行列を固定してユーザ因子行列の最適化を図る。そして、推薦装置１は、評価データを分割した部分集合の数だけこの処理を繰り返し、最終的なユーザ因子行列とアイテム因子行列とを得る。
各部分集合には、それぞれ毒データが混入している可能性があるため、推薦装置１は、最初の特異値分解で得られた右特異ベクトルについて４列目以降を削除した状態で保管しておき、他の部分集合に対応する評価行列それぞれに、保管しておいた右特異ベクトルを右から掛け合わせ、行毎の総和を計算し、総和の大きさが下位の評価値を削除する。ここで、部分集合は評価行列からランダムに生成されるため、削除する割合はすべての部分集合で同じとする。これにより、部分集合毎に行列分解を行う必要がないため、計算量が交互最小二乗法における元のオーダと変わらない。
【００３９】
したがって、推薦装置１は、従来、交互最小二乗法による行列分解に加えて主成分分析による計算量を必要としていたところ、評価行列に含まれる毒データを排除する仕組みがなかった交互最小二乗法に対して、主成分分析による対策に相当するアルゴリズムを導入したことで、ポイゾニング攻撃への耐性を少ない計算量で実現できた。
【００４０】
また、推薦装置１は、評価値を削除する量を、既存のポイゾニング攻撃の中で、攻撃を達成するために必要な毒データ数が最も小さいものを基準とする。これにより、想定される既存のポイゾニング攻撃の全てに対応できる。さらに、推薦装置１は、毒データ量の見積もりに従い、必要以上にデータを削除しないため、予測性能が低下しない。
【００４１】
以上、本発明の実施形態について説明したが、本発明は前述した実施形態に限るものではない。また、前述した実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、実施形態に記載されたものに限定されるものではない。
【００４２】
推薦装置１による推薦方法は、ソフトウェアにより実現される。ソフトウェアによって実現される場合には、このソフトウェアを構成するプログラムが、情報処理装置（コンピュータ）にインストールされる。また、これらのプログラムは、ＣＤ−ＲＯＭのようなリムーバブルメディアに記録されてユーザに配布されてもよいし、ネットワークを介してユーザのコンピュータにダウンロードされることにより配布されてもよい。さらに、これらのプログラムは、ダウンロードされることなくネットワークを介したＷｅｂサービスとしてユーザのコンピュータに提供されてもよい。
【符号の説明】
【００４３】
１  推薦装置
１０  制御部
１１  初期処理部
１２  抽出処理部
１３  削除処理部
１４  算出処理部
１５  出力部
２０  記憶部
【図１】
2019114053.tif 000003
【図２】
2019114053.tif 000004