(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023087998
(43)【公開日】2023-06-26
(54)【発明の名称】機械学習システムおよび機械学習方法
(51)【国際特許分類】
G06N 20/00 20190101AFI20230619BHJP
【FI】
G06N20/00 130
【審査請求】有
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2021202595
(22)【出願日】2021-12-14
(71)【出願人】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110002365
【氏名又は名称】弁理士法人サンネクスト国際特許事務所
(72)【発明者】
【氏名】山根 一樹
(72)【発明者】
【氏名】鵜飼 敏之
(72)【発明者】
【氏名】山本 光之助
(57)【要約】
【課題】外れ値の原因推定をより向上させることができ、十分な予測精度を担保することができる機械学習システムの提供。
【解決手段】機械学習システム1は、外れ値検出部10と学習部20とを備える。外れ値検出部10は、全レコードに関して、目的変数(例えば、売上高)を検出対象とする第1の外れ値検出処理を行い、説明変数に基づいて全レコードを複数のグループに分け、グループ毎に、目的変数を検出対象とする第2の外れ値検出処理を行い、それら2つの外れ値検出処理の結果に基づいて外れ値の原因を推定する。学習部20は、外れ値の原因の推定結果に基づいて機械学習を実施して、目的変数を予測する学習モデルを作成する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
学習データの全レコードに関して、機械学習の予測対象である目的変数を検出対象とする第1の外れ値検出処理を行う第1の外れ値検出部と、
前記レコードに含まれる説明変数に基づいて、前記全レコードを複数のグループに分けるグループ処理部と、
前記グループ毎に、前記目的変数を検出対象とする第2の外れ値検出処理を行う第2の外れ値検出部と、
前記第1の外れ値検出部および前記第2の外れ値検出部の検出結果に基づいて外れ値の原因を推定する原因推定部と、
前記原因推定部の推定結果に基づいて機械学習を実施して、前記目的変数を予測する学習モデルを作成するモデル作成部と、を備える機械学習システム。
【請求項2】
請求項1に記載の機械学習システムにおいて、
前記目的変数は、前記学習データのレコードに含まれる第1の変数と第2の変数との比として表され、
前記第1の外れ値検出部は、前記学習データの全レコードに関して、前記目的変数、前記第1の変数および前記第2の変数のいずれか一つを検出対象とする前記第1の外れ値検出処理を前記検出対象毎にそれぞれ行い、
前記第2の外れ値検出部は、前記グループ毎に、前記目的変数、前記第1の変数および前記第2の変数のいずれか一つを検出対象とする第2の外れ値検出処理を前記検出対象毎にそれぞれ行い、
前記モデル作成部は、前記原因推定部の推定結果に基づいて機械学習を実施して、前記第1の変数と前記第2の変数との比を予測する学習モデルを作成する、機械学習システム。
【請求項3】
請求項1に記載の機械学習システムにおいて、
前記原因推定部は、前記第1の外れ値検出部により検出された前記検出対象を外れ値と推定し、前記第2の外れ値検出部により検出された前記検出対象を誤記と推定する、機械学習システム。
【請求項4】
請求項3に記載の機械学習システムにおいて、
前記原因推定部は、大きさの異なる複数の桁補正係数に前記誤記と推定された検出対象をそれぞれ乗算して、乗算後の値が、同一グループ内の前記レコードの外れ値と判定されていない同一検出対象の頻出範囲内である場合に、桁間違いによる誤記と推定する、機械学習システム。
【請求項5】
請求項4に記載の機械学習システムにおいて、
前記桁間違いによる誤記と推定された検出対象に、乗算結果が前記頻出範囲内となる前記桁補正係数を乗算して該検出対象を補正する補正部をさらに備え、
前記モデル作成部は、前記桁間違いによる誤記と推定された検出対象に代えて前記補正部で補正された検出対象を用いて機械学習を実施する、機械学習システム。
【請求項6】
請求項3に記載の機械学習システムにおいて、
前記モデル作成部は、前記原因推定部により外れ値と推定された検出対象がある場合には、ロバスト回帰による機械学習を実施して学習モデルを作成する、機械学習システム。
【請求項7】
請求項2に記載の機械学習システムにおいて、
前記モデル作成部は、前記第1の変数を予測する第1の予測モデルと、前記第2の変数を予測する第2の予測モデルと、前記目的変数を予測する第3の予測モデルとを作成し、
評価データを用いて前記第1の予測モデル、前記第2の予測モデルおよび前記第3の予測モデルの予測値をそれぞれ求め、前記第1の予測モデルの予測値と前記第2の予測モデルの予測値との比の精度と、前記第3の予測モデルの予測値の精度とを比較して、より精度が高い方の予測モデルを前記学習モデルに採用する、モデル評価部をさらに備える、機械学習システム。
【請求項8】
学習データの全レコードに関して、機械学習の予測対象である目的変数を検出対象とする第1の外れ値検出処理を行い、
前記レコードに含まれる説明変数に基づいて、前記全レコードを複数のグループに分け、
前記グループ毎に、前記目的変数を検出対象とする第2の外れ値検出処理を行い、
前記第1の外れ値検出部および前記第2の外れ値検出部の検出結果に基づいて外れ値の原因を推定し、
推定された前記外れ値の原因に基づいて機械学習を実施して、前記目的変数を予測する学習モデルを作成する、機械学習方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、機械学習システムおよび機械学習方法に関する。
【背景技術】
【0002】
従来、精度よく外れ値を検出することができる外れ値検出方法(例えば、特許文献1参照)や、外れ値の要因を容易に推測することができる外れ値要因推定方法(例えば、特許文献2参照)が知られている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2015-082190号公報
【特許文献2】特許第6719612号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
ところで、機械学習システムにおいては、目的変数に外れ値が含まれると、平均二乗誤差などをロス関数とした通常の機械学習では十分な予測精度が担保しづらくなる。また、数学的には外れ値に見える場合であっても、実際は測定や記入時のミスの可能性もあるので、その原因を推定しないと適切な対処ができないという課題があった。特に、目的変数が、「費用対効果」や「通話時間あたりの売上高」のように2つの数値の比で示される場合、目的変数が外れ値となる原因が分子・分母のいずれかを見極めないと対処ができない。
【課題を解決するための手段】
【0005】
本発明の態様による機械学習システムは、学習データの全レコードに関して、機械学習の予測対象である目的変数を検出対象とする第1の外れ値検出処理を行う第1の外れ値検出部と、前記レコードに含まれる説明変数に基づいて、前記全レコードを複数のグループに分けるグループ処理部と、前記グループ毎に、前記目的変数を検出対象とする第2の外れ値検出処理を行う第2の外れ値検出部と、前記第1の外れ値検出部および前記第2の外れ値検出部の検出結果に基づいて外れ値の原因を推定する原因推定部と、前記原因推定部の推定結果に基づいて機械学習を実施して、前記目的変数を予測する学習モデルを作成するモデル作成部と、を備える。
【発明の効果】
【0006】
本発明によれば、外れ値の原因推定をより向上させることができ、機械学習において十分な予測精度を担保することができる。
【図面の簡単な説明】
【0007】
【
図1】
図1は、機械学習システムの構成例を示すブロック図である。
【
図3】
図3は、機械学習システムにおける機械学習方法の全体処理を示すフローチャートである。
【
図4】
図4は、
図3のステップS10おいて実行される外れ検出処理の詳細を示すフローチャートである。
【
図5】
図5は、
図4のステップS170におけるグループ単位での外れ値検出処理の詳細を示すフローチャートである。
【
図6】
図6は、
図5のステップS1800における外れ値原因分類の詳細処理を示すフローチャートである。
【
図7】
図7は、学習データのグループ分けを説明する図である。
【
図8】
図8は、外れ値原因推定結果の画面表示の一例を示す図である。
【
図9】
図9は、
図3のステップS20おいて実行される学習モデル作成処理の詳細を示すフローチャートである。
【
図10】
図10は、
図9のステップS220における機械学習処理の詳細を示すフローチャートである。
【
図11】
図11は、
図3のステップS30における学習モデル評価処理の詳細を示すフローチャートである。
【
図12】
図12は、機械学習システムを実現するコンピュータのハードウェア図である。
【発明を実施するための形態】
【0008】
以下、図面を参照して本発明の実施の形態を説明する。以下の記載および図面は、本発明を説明するための例示であって、説明の明確化のため、適宜、省略および簡略化がなされている。また、以下の説明では、同一または類似の要素および処理には同一の符号を付し、重複説明を省略する場合がある。なお、以下に記載する内容はあくまでも本発明の実施の形態の一例を示すものであって、本発明は下記の実施の形態に限定されるものではなく、他の種々の形態でも実施する事が可能である。
【0009】
本実施の形態の機械学習システムは、機械学習を用いて予測する対象である目的変数に、「費用対効果」や「通話時間あたりの売上高」のような2種の数値の比で表されるものが含まれる場合に、好適な機械学習システムである。
図1は、本実施の形態の機械学習システム1の構成例を示すブロック図である。機械学習に関係するデータベースとして、学習データや評価用データなどが保存される学習データデータベースDB1(以下、学習データDB1と称す)、設定情報が保存される設定情報データベースDB2(以下、設定情報DB2と称す)、外れ値情報が保存される外れ値情報データベースDB3(以下、外れ値情報DB3と称する)、および、学習モデルに関する情報が保存されるモデル情報データベースDB4(以下、モデル情報DB4と称す)を備えている。そして、それらのデータベースのデータに基づいて機械学習処理を行う、外れ値検出部10、学習部20、モデル評価部30を備えている。
【0010】
図2は、学習データDB1に格納されている学習データの一例を示したものであり、学習データに関するテーブルを示す。テーブルは、複数の列と行から構成されている。テーブルの列および行は、それぞれカラムおよびレコードと呼ばれる。カラムC1~C5には、それぞれ顧客名、年齢、職業、通話時間、売上高のデータが格納される。本実施の形態では、顧客名、年齢、職業、通話時間および売上高を変数と呼ぶことにする。各レコードR1~R3は、各変数(顧客名、年齢、職業、通話時間および売上高)のデータで構成されている。例えば、学習データR1では、顧客名はA、年齢は48歳、職業は主婦、通話時間は600秒、売上高は100,000円である。なお、
図2では3つのレコードR1~R3しか示していないが、学習データには多数のレコードが含まれている。
【0011】
図1に戻って、設定情報DB2には、目的変数の確率分布の情報、桁補正係数に関する情報、ロス関数に関する情報、欠損値補完に関する情報などが保存されている。また、外れ値情報DB3には、目的変数の定義域や測定トラブルのあった期間に関する情報が予め保存されている。また、後述するように、外れ値検出処理による一連の結果(例えば、外れ値原因推定結果など)も外れ値情報DB3に保存される。モデル情報DB4には、後述するように、一連の学習で得られるモデルや、そのモデルに関する情報(例えば、使用したロス関数、行った補正など)等が保存される。
【0012】
外れ値検出部10、学習部20およびモデル評価部30は、学習モデル作成に関する演算処理を行うものであり、それぞれ、
図3のフローチャートに示す処理を行う。
図3は、システムにおける機械学習方法の全体処理を示すフローチャートである。本実施の形態では、
図2に示す学習データが学習データDB1に格納され、機械学習を用いて予測する対象である目的変数が、比=(売上高)/(通話時間)である場合について説明する。目的変数が比で表される場合、比の分母か分子にあたる数値の少なくとも一方に測定や記入時のミスによる誤った値が含まれていると、目的変数の予測精度が担保しづらくなる。特に、桁の誤記入によるものは、しばしば数学的な外れ値を取ることがある。加えて、分子、分母のそれぞれを目的変数として機械学習を行う場合は、それらに数学的な外れ値が存在する場合、外れ値を考慮したロス関数を設定する必要がある。ここで、外れ値が実際は誤記によるものであれば、ロス関数の設定でなく誤記の修正が必要となる。したがって、比で表される数値を直接目的変数にした場合と、分子、分母をそれぞれ個別に目的変数にした場合の双方において適切な設定の下で機械学習を行うには、分子、分母それぞれに含まれる外れ値を抽出するとともに、その生成原因が誤記であるか否かを推定する必要が生じる。
【0013】
そこで、本実施の形態では、予測対象である目的変数(=比)だけではなく、比で示される目的変数の分母および目的変数の分子に対しても、統計学的な外れ値を検出する処理を実行する。さらに、目的変数に対する説明変数である「年齢」や「職業」に関して属性が近いレコード同士をグルーピングし、各々のグループ内で統計学的な外れ値検出処理を再度行い。そして、これら2段階の処理結果に基づいて外れ値の原因推定を行い、原因推定結果に基づいて学習モデル生成に際しての前処理やロス関数の設定を行う。
【0014】
図3のステップS10では、外れ値検出部10による処理が実行され、上述した2段階の外れ値検出処理が行われ、どのような内容の外れ値であるか(例えば、真の外れ値や誤記による外れ値など)を推定する外れ値原因推定を行う。
【0015】
ステップS20では、学習部20による処理が実行され、ステップS10で得られた原因推定結果に基づいて、学習モデル作成に際しての前処理やロス関数の設定を行う。そして、それらの設定に基づいて、目的変数の分子および分母のそれぞれに関する予測と、目的変数(=比)に関する予測の両方を行う。例えば、誤記の修正を施した機械学習や、外れ値に強いロス関数を使った機械学習(ロバスト回帰)を適用し、それぞれの精度最良のモデルを採用する。
【0016】
ステップS30では、モデル評価部30による評価処理が実行される。例えば、テストデータを使用して、ステップS20で求めた分子・分母個別の予測モデル(以下では、モデル1と呼ぶ)からその比を求める。加えて、両者の比に関する予測モデル(以下では、モデル1と呼ぶ)の値も同じテストデータで算出する。そして、モデル1とモデル2の内で、予測の精度がより高い方のモデルを採用。なお、外れ値検出部10、学習部20、モデル評価部30で行われる処理の詳細は後述する。
【0017】
<外れ値検出部10における外れ値検出処理の詳細説明>
図4は、
図3のステップS10において実行される外れ検出処理の詳細を示すフローチャートである。なお、本実施の形態では、目的変数である比だけでなく、比の分母(=通話時間)および分子(=売上高)も外れ値検出の検出対象としているので、それらを全て目的変数と呼ぶことにする。以下では、比、分母、分子を、それぞれ目的変数(比)、目的変数(分母)、目的変数(分子)のように称する。
【0018】
図4のフローチャートにおいて、ステップS100からステップS180までの処理は、目的変数単位毎にそれぞれ行われる。すなわち、最初に目的変数(分母)に関して、ステップS100からステップS180までの処理を行い、次いで、目的変数(分子)に関して、ステップS100からステップS180までの処理を行い、最後に目的変数(比)に関して、ステップS100からステップS180までの処理を行う。
【0019】
ステップS100では、目的変数単位の外れ値検出処理ループを開始する。ステップS110では、学習データから目的変数のカラムのデータを取得する。なお、目的変数(分母)または目的変数(分子)が対象である場合には、
図2のテーブルの通話時間または売上高のカラムのデータを取得すれば良い。一方、目的変数(比)が対象である場合には、テーブルから通話時間および売上高を読み込んで、それらから算出される(売上高)/(通話時間)の値を目的変数(比)とする。
【0020】
ステップS120では、対象とする目的変数に関しての確率分布情報が、例えば、売上高が正規分布で近似できるというような情報が、設定情報DB2に登録されているか確認する。ステップS130では、確率分布情報があるか否かを判定し、ある場合(yes)にはステップS140へ進み、無い場合(no)にはステップS150へ進む。ステップS140では、登録されている確率分布を前提とした外れ値検出処理1Aを実施する。例えば、目的変数に対して正規分布が確率分布情報として登録されている場合には、スミルノフ・グラブス検定を利用した外れ値検出処理を実施する。一方、ステップS150では、特定の確率分布を前提としない外れ値検出処理、例えば、四分位範囲を利用した外れ値検出処理などの、従う分布が不明でも適用可能な外れ値検出処理1Bを実施する。
【0021】
ステップS160では、目的変数のどの値が外れ値だったかを外れ値情報DB3に保存する。ステップS170は、グループ単位での外れ値検出処理に関するルーティンであり、処理の詳細は
図5のフローチャートを用いて後述する。ステップS180では、目的変数単位の外れ値検出処理ループを完了する。そして、目的変数(分母)、目的変数(分子)および目的変数(比)のそれぞれに対してステップS100からステップS180までの一連の処理が完了したならば、
図4の外れ値検出処理を終了する。
【0022】
(グループ単位の外れ値検出処理)
図5は、
図4のステップS170におけるグループ単位での外れ値検出処理の詳細を示すフローチャートである。ステップS1700では、クラスタリングなどを用い、説明変数単位で全データをいくつかのグループに仕分けする。
図2に示す学習データの場合、レコードには説明変数として顧客名、年齢、職業があるが、例えば、職業や年齢でグループ分けすることができる。例えば、職業でグループ分けする場合、
図2に示すデータにおいて職業が3種類(主婦、会社員、アルバイト)であったと仮定すると、
図7(a)~(c)に示すように複数のレコードは3種類のグループに分けられる。
図7(a)~(c)に示す例では、カラムC5の右側に、外れ値検出処理1(1A,1B)および後述する外れ値検出処理2における判定結果も記載している。ただし、
図7(a),(b)では目的変数(分母)=通話時間に関する外れ値検出結果を示しており、
図7(c)では目的変数(分子)=売上高に関する外れ値検出結果を示している。ここでは、一つのカテゴリカルな説明変数に関してグループ分けを行ったが、連続値の説明変数であっても、その値を分割して作った複数の区間を用いてグループ分けを行ってもよい。加えて、二つ以上の説明変数についても、クラスタリングなどの手法を用いてグループ分けを行ってもよい。
【0023】
なお、
図7(a)~(c)では記載を簡略化しているが、グループ単位で外れ値検出を行う場合も、目的変数(分子)、目的変数(分母)、目的変数(比)のそれぞれに関して外れ値検出が行われるので、外れ値検出処理1,2の判定結果(あり、無し)は、目的変数(分子)、目的変数(分母)および目的変数(比)のそれぞれに対して得られる。
【0024】
ステップS1710では、外れ値情報DB3に、通話時間および売上高のデータに関する備考、例えば、定義域(例えば、通話時間の上限)や測定トラブルの期間等の情報があるか検索し、ある場合にはそれらを外れ値情報DB3から取得する。ステップS1720では、グループ単位での外れ値検出処理ループ(ステップS1720からステップS1810までの処理)を開始する。
図7(a)~(c)に示したグループ分けの例では、3種類のグループ(主婦、会社員、アルバイト)に分けられており、ステップS1720からステップS1810までの処理ループが、主婦のグループ、会社員のグループおよびアルバイトのグループのそれぞれについて実行される。
【0025】
ステップS1730では、目的変数に関する外れ値検出処理2を行う。なお、上述した学習データの全レコードを用いた外れ値検出処理1(1A,1B)と区別するために、グループ単位の外れ値検出処理を外れ値検出処理2と称することにする。ここでは、外れ値検出処理2の具体的処理については説明を省略するが、グループ内のレコードに限定される点を除けば、
図4のステップS110~S160の処理と同様の処理が行われる。ただし、ステップS1730の外れ値検出処理2では、特定の確率分布を前提としない外れ値検出を実施する。
【0026】
なお、
図4において、目的変数に関して外れ値検出処理ループが実行されている場合、その際のグループ単位の外れ値検出処理(ステップS170)では、同じ目的変数について外れ値検出処理が実行されることになる。例えば、
図4における外れ値検出処理ループが目的変数(分子)=通話時間であった場合には、ステップS1730における外れ値検出処理2の目的変数も目的変数(分子)=通話時間となる。すなわち、グループ分けされた学習データからカラムC4の値を取得して外れ値検出処理を実施する。
【0027】
ステップS1740では、外れ値検出処理1(1A,1B)で外れ値検出されたレコードがあるか否かを判定し、ある場合(yes)にはステップS1750へ進み、無い場合(no)にはステップS1760へ進む。ステップS1750では、外れ値検出されたレコードの外れ値検出結果を「外れ値」に更新し、その後ステップS1760へ進む。例えば、
図7(a)~(c)に示す例では、顧客名A1~A3,B1,C1,C2の各レコードは外れ値検出処理1(1A,1B)で外れ値検出とされているので、ステップS1740からステップS1750へ進み、各レコードの外れ値検出結果を「外れ値」に更新する。
【0028】
なお、更新のタイミングをより詳しく説明すると、顧客名A1~A3の各レコードは、目的変数が通話時間(=目的変数(分母))の場合の処理ループであって、かつ、主婦グループ単位の処理ループにおけるステップS1740およびS1750の処理により、通話時間に関する外れ値検出結果が「外れ値」に更新される。顧客名B1のレコードは、目的変数が通話時間(=目的変数(分母))の場合の処理ループであって、かつ、会社員グループ単位の処理ループにおけるステップS1740およびS1750の処理により、通話時間に関する外れ値検出結果が「外れ値」に更新される。顧客名C1,C2の各レコードは、目的変数が売上高(=目的変数(分子))の場合の処理ループであって、かつ、アルバイトグループ単位の処理ループにおけるステップS1740およびS1750の処理により、売上高に関する外れ値検出結果が「外れ値」に更新される。
【0029】
ステップS1760では、外れ値検出処理2で外れ値検出されたレコードがあるか否かを判定し、ある場合(yes)にはステップS1770へ進み、無い場合(no)にはステップS1780へ進む。ステップS1770では、外れ値検出されたレコードの外れ値検出結果を「一般的な誤記」に更新し、その後ステップS1780へ進む。例えば、
図7(a)~(c)に示す例では、顧客名B1,C3の各レコードは外れ値検出処理2で外れ値検出とされているので、ステップS1760からステップS1770へ進み、各レコードの外れ値検出結果を「一般的な誤記」に更新する。なお、顧客名B1のレコードに関する外れ値検出結果は、ステップS1750において「外れ値」とされているが、ステップS1770において「一般的な誤記」へと再度更新されることになる。
【0030】
ステップS1780では、各レコードのデータ(通話時間、売上高)に定義域外のデータや測定機器にトラブルがあった期間に計測されたデータがあるか否かを判定し、ある場合(yes)にはステップS1790へ進み、無い場合(no)にはステップS1800へ進む。ステップS1790では、該当するレコードの外れ値検出結果を「測定ミスによる誤記」に更新し、その後ステップS1800へ進む。例えば、通話時間に関する定義域として3600秒が指定されている場合には、4800秒というデータは「測定ミスによる誤記」と判定される。また、測定機器のトラブルがあった期間に取られたという備考情報があった場合には、無条件に「測定ミスによる誤記」と判定する。
【0031】
なお、
図7(a)~(c)に示す例の場合、主婦のグループに関するステップS1730からステップS1790までの処理が行われると、顧客名A1~A3の各レコードの外れ値検出結果は、通話時間に関するデータが「外れ値」とされる。また、会社員のグループに関するステップS1730からステップS1790までの処理が行われると、顧客名B1のレコードの外れ値検出結果は、通話時間に関するデータが「一般的な誤記」とされる。さらにまた、アルバイトのグループに関するステップS1730からステップS1790までの処理が行われると、顧客名C1,C2のレコードの外れ値検出結果は、売上高に関するデータが「外れ値」とされ、顧客名C3のレコードの外れ値検出結果は、売上高に関するデータが「一般的な誤記」とされる。ステップS1800は、外れ値原因分類に関するルーティンであり、処理の詳細を
図6に示す。
【0032】
(外れ値原因分類処理の詳細説明)
図6のステップS1802では、桁補正係数を設定情報DB2から取得する。桁補正係数とは、誤記と判定されたデータに乗算してデータ値の桁すなわち小数点の位置を補正するもので、例えば、10
-5、10
-4、・・・、10
4、10
5のように10倍刻みの数値が、桁補正係数として設定情報DB2に予め格納されている。ステップS1804では、桁補正係数を「一般的な誤記」と判定されたデータ値に乗算する乗算処理を、取得した複数の桁補正係数のそれぞれに関して行う。
【0033】
ステップS1806では、乗算後の複数の値のいずれかが、同一グループ内の誤記および外れ値でないデータの値の頻出範囲内にあるか否かを判定する。ここでの頻出範囲の例としては、例えば、「4分位点」から「4分の3分位点」の範囲がある。ステップS1806でyesと判定された場合にはステップS1808に進み、noと判定された場合にはステップS1808をスキップする。ステップS1808では、外れ値検出結果を「一般的な誤記」から「桁間違いによる誤記」へ更新する。
【0034】
図5に戻って、ステップS1810では、グループ単位の外れ値検出処理ループを完了する。そして、全てのグループに関してグループ単位の外れ値検出ループが完了したならば、ステップS1820に進む。ステップS1820では、一連の外れ値検出結果を外れ値情報DB3に保存する。なお、外れ値検出結果が「桁間違いによる誤記」の場合には、その時の桁補正係数を外れ値検出結果と共に外れ値情報DB3に保存する。
【0035】
図5の処理が終了したならば、
図4に戻ってステップS180に進む。ステップS180では、目的変数単位の外れ値検出処理ループを完了する。そして、全ての目的変数すなわち目的変数(分母)、目的変数(分子)、目的変数(比)に関して外れ値検出処理ループが完了したならば、
図4の一連の処理を終了する。
【0036】
なお、後述する出力装置5700に設けられたモニタに、外れ値原因推定結果を画面表示するようにしても良い。
図8は、外れ値原因推定結果の画面表示の一例を示したものである。破線矩形枠を施したフィールドが、外れ値および誤記とされた目的変数である。
【0037】
<学習部20における学習モデル作成処理の詳細説明>
次に、
図3のステップS20おいて実行される学習モデル作成処理の詳細について、
図9のフローチャートを用いて説明する。
図9のフローチャートにおいて、ステップS200からステップS240までの処理は、目的変数(分母)、目的変数(分子)および目的変数(比)の目的変数単位毎にそれぞれ行われる。学習モデル作成処理では、ステップS10の外れ値検出処理により目的変数に外れ値や誤記が検出された場合には、得られた原因推定結果に基づいて、学習モデル生成に際しての前処理やロス関数の設定を行う。一方、外れ値検出処理で目的変数に外れ値も誤記も検出されなかった場合は、通常通りの学習を実施する。それぞれの学習では、通常のAutoMLと同じく、学習アルゴリズムは複数試みて良いし、試行するアルゴリズムごとの学習においてハイパーパラメタの最適化を行っても良い。
【0038】
ステップS200では、目的変数単位のモデル作成処理ループを開始する。ステップS210では、外れ値情報DB3に、目的変数の誤記あるいは外れ値の情報が登録されているか確認する。ステップS220は、誤記や外れ値の内容に応じた機械学習処理に関するルーティンであり、処理の詳細を
図10に示す。なお、ステップS220における誤記や外れ値の内容に応じた機械学習処理において、外れ値情報DB3に目的変数の誤記あるいは外れ値の情報が登録されていない場合には、通常通りの学習が実施される。
【0039】
(誤記や外れ値の内容に応じた機械学習処理の詳細説明)
図10は、誤記や外れ値の内容に応じた機械学習処理の詳細を示すフローチャートである。ステップS2200では、外れ値情報DB3から、各目的変数に関する外れ値、誤記および桁補正係数の情報を取得する。ステップS2210では、「桁間違いによる誤記」の目的変数に対して対応する桁補正係数を乗算し、目的変数の値を補正する。例えば、
図8の顧客名C3のレコードでは、売上高の「30円」という値が桁間違いによる誤記であると判定され、桁補正係数として「10
2」が外れ値情報DB3に登録されている。そのため、ステップS2210において、「30円」という値が、「10
2」を乗算して得られる「3,000円」という値に補正される。
【0040】
ステップS2210では、目的変数の中に「外れ値」と判定されたレコードがあるか否かを判定し、ありの場合(yes)にはステップS2230へ進み、無い場合(no)にはステップS2240へ進む。誤記でない外れ値がある場合は、ロバスト回帰を実施する。ロバスト回帰が必要となるのは、以下のような理由からである。
・線形回帰、樹木モデル、およびニューラルネットに基づく学習アルゴリズムには、最適化対象となるロス関数を差し替えて実行できるものがある。
・ロス関数の一例には平均二乗誤差があるが、これを最適化するように学習すると、外れ値の予実測誤差を優先的に小さくするような学習がなされてしまう。そのため、外れ値でない値の予実測誤差が十分小さくならず、外れ値以外の予測が不十分なモデルが生成されてしまう。
・そのため、外れ値の存在によって値が大きくなりづらいロス関数を代わりに使うなどして、外れ値ではない値を正確に予測するモデルを生成しやすくする手段があり、その総称をロバスト回帰と呼ぶ。
【0041】
ロバスト回帰に用いるロス関数の具体例としては、「Huber-loss」、「pseudo-Huber-loss」、「τ-分位損失」などがある。ステップS2230では、モデル作成処理において実施するロバスト回帰のロス関数の種類を設定情報DB2から取得し、その後ステップS2240へ進む。
【0042】
ステップS2240では、目的変数の中に「桁間違いによる誤記」以外の誤記と判定されたレコードがあるか否かを判定し、ありの場合(yes)にはステップS2250へ進み、無い場合(no)にはステップS2260へ進む。ステップS2250では、モデル作成処理において実施する欠損値補完の種類を設定情報DB2から取得し、その後ステップS2260へ進む。
【0043】
「桁間違いによる誤記」以外の誤記である「一般的な誤記」および「測定ミスによる誤記」を含む場合には、該当する目的変数を欠損値とみなし、その対策となる欠損値補完方法を1つ以上試み、学習モデルを作成する。欠損値補完方法としては、例えば、学習対象のデータから除外する方法、別の値で補完する方法、半教師あり学習を適用する方法などがある。別の値で補完する方法としては、例えば、中央値や平均値、あるいは別途指定された値で補完する方法があり、この場合、補完する値にさらにランダムノイズを加えてもよい。また、行列分解を利用した補完方法、missForestなど回帰に使えるアルゴリズムを応用した補完方法などがある。
【0044】
ステップS2260では、設定情報DB2を参照し、ロバスト回帰を行わない場合に用いるロス関数を設定情報DB2から取得する。ステップS2270では、上述のように取得した一連のロス関数の種類および欠損値補完の種類に関して、それらの組み合わせに応じた機械学習を実施する。例えば、取得されたロス関数および欠損値補完の種類がそれぞれ3種類であった場合、ロス関数と欠損値補完の組み合わせは9(=3×3)通りとなる。そして、ステップS2270では、それぞれの組み合わせ設定で機械学習を実施する。なお、「外れ値」の無い場合の通常の学習も、ロス関数(=通常の二乗誤差)×欠損値補間(=補間をしない)という組み合わせとして含まれている。ステップS2280では、一連の学習で得たモデルを、モデル情報DB4に保存する。
図9からも分かるように、ステップS2270の機械学習は3つの目的変数(分子)、目的変数(分母)、目的変数(比)のそれぞれに関して行われる。
【0045】
図9に戻って、ステップS230では、各学習で得られたモデルを共通のテストデータで評価し、精度最良のモデルをモデル情報DB4に保存する。ステップS240において、各目的変数に関して目的変数単位の学習処理のループが完了すると、
図9に示したモデル作成に関する一連の処理が終了する。
【0046】
<学習モデル評価処理の詳細説明>
図3のステップS30における学習モデル評価処理の詳細について、
図11のフローチャートにより説明する。ステップS300では、学習データDB1から評価用データを取得する。ステップS310では、ステップS230においてモデル情報DB4に保存された目的変数(分子)、目的変数(分母)および目的変数(比)のそれぞれに関する最良精度のモデルを、モデル情報DB4からそれぞれ取得する。ここでは、取得した各モデルを、分子予測モデル、分母予測モデルおよび比予測モデルと呼ぶことにする。
【0047】
ステップS320では、ステップS300で取得した評価用データを用いて、分子予測モデル、分母予測モデルおよび比予測モデルから、分子、分母および比の値をそれぞれ推定する。ステップS330では、(分子/分母)の精度(=精度1)と比の精度(=精度2)とを比較し、「精度1>精度2」であるか否かを判定する。ステップS330で「精度1>精度2」と判定されるとステップS340へ進み、分子予測モデルおよび分母予測モデルを最良モデルに採用し、その決定結果をモデル情報DB4に保存する。一方、ステップS330において「精度1>精度2」でないと判定されるとステップS350へ進み、比予測モデルを最良モデルに採用し、その決定結果をモデル情報DB4に保存する。
【0048】
なお、上述した実施の形態では、目的変数が比で表される場合について説明したが、目的変数が比でない場合、例えば、
図5に示す売上高を目的変数とした場合であっても、
図4~6に示した2段階の外れ値検出処理を適用することができる。
図5のフローチャートのステップS100からステップS180までの処理における目的変数は売上高のみとなり、目的変数=売上高に関して、
図4~6に示す2段階の外れ値検出処理が行われる。そして、外れ値検出処理に続く
図9,10の学習モデル作成処理および
図11の学習モデル評価処理に関しても、目的変数が売上高であるとして処理が行われる。すなわち、本実施の形態における2段階の外れ値検出処理、学習モデル作成処理および学習モデル評価処理は、目的変数が比である場合にも比でない場合にも適用することができ、それにより、より精度の高い学習モデルを構築することができる。
【0049】
<機械学習システム1を実現するコンピュータ>
図12は、機械学習システム1を実現するコンピュータ5000のハードウェア図である。機械学習システム1を実現するコンピュータ5000ではCPU(Central Processing Unit)に代表されるプロセッサ5300、RAM(Random Access Memory)等のメモリ5400、入力装置5600(例えば、キーボード、マウス、タッチパネル等)、および出力装置5700(例えば、外部ディスプレイモニタに接続されたビデオグラフィックカード)が、メモリコントローラ5500を介して相互接続される。
【0050】
コンピュータ5000において、機械学習システムを実現するためのプログラムがI/O(Input/Output)コントローラ5200を介してSSDやHDD等の外部記憶装置5800から読みだされて、プロセッサ5300およびメモリ5400の協働により実行される。これにより、機械学習システム1が実現される。あるいは、機械学習システム1を実現するためのプログラムは、ネットワークインターフェース5100を介した通信により外部のコンピュータから取得されたり、媒体読み取り装置によって記録媒体から読み出されて取得されたりしてもよい。
【0051】
以上説明した本発明の実施の形態によれば、以下の作用効果を奏する。
【0052】
(C1)
図1~8に示すように、機械学習システム1は、外れ値検出部10と学習部20とを備える。外れ値検出部10は、学習データの全レコードに関して、機械学習の予測対象である目的変数を検出対象とする第1の外れ値検出処理を行う。例えば、目的変数が売上高であれば、売上高を検出対象とする第1の外れ値検出処理が行われる。また、外れ値検出部10は、例えば、レコードR1~R3に含まれる職業という説明変数に基づいて、全レコードR1,R2,R3,・・・を主婦のグループ、会社員のグループ、アルバイトのグループに分けるグループ処理を行う。さらにまた、外れ値検出部10は、複数のグループのグループ毎に、売上高を検出対象とする第2の外れ値検出処理を行う。さらにまた、外れ値検出部10は、第1および第2の外れ値検出処理の検出結果に基づいて外れ値の原因を推定する。そして、学習部20は、外れ値の原因の推定結果に基づいて機械学習を実施して、売上高を予測する学習モデルを作成する。
【0053】
上述のように、学習データの全レコードに売上高を検出対象として第1の外れ値検出処理を行い、かつ、グループ分けしたレコード群毎に売上高を検出対象として第2の外れ値検出処理を行い、それら2段階の外れ値検出処理に基づいて外れ値の原因を推定している。その結果、外れ値の原因推定が向上し、外れ値の原因に応じた適切な機械学習を行うことが可能となる。
【0054】
(C2)
図1~8に示すように、目的変数が、学習データのレコードR1~R3に含まれる第1の変数(売上高)と第2の変数(通話時間)との比として表される場合には、外れ値検出部10は、学習データの全レコードに関して、目的変数(比)、売上高および通話時間のいずれか一つを検出対象とする第1の外れ値検出処理を、検出対象毎にそれぞれ行う。さらに、外れ値検出部10は、複数のグループのグループ毎に、目的変数(比)、売上高および通話時間のいずれか一つを検出対象とする第2の外れ値検出処理を検出対象毎にそれぞれ行う。そして、学習部20は、外れ値の原因の推定結果に基づいて機械学習を実施して、売上高と通話時間との比を予測する学習モデルを作成する。
【0055】
上述のように、学習データの全レコードに対して比、比の分子および比の分母を目的変数として第1の外れ値検出処理を行い、かつ、グループ分けしたレコード群毎に比、比の分子および比の分母を目的変数として第2の外れ値検出処理を行い、それら2段階の外れ値検出処理に基づいて外れ値の原因を推定している。その結果、比、比の分子および比の分母のそれぞれに関して外れ値の原因がわかり、外れ値の原因に応じた適切な機械学習を行うことが可能となる。
【0056】
(C3)
図5に示すように、外れ値の原因の推定において、外れ値検出部10は、第1の外れ値検出処理により検出された検出対象を外れ値と推定し、第2の外れ値検出処理により検出された検出対象を誤記と推定する。このような外れ値の原因推定を行うことで、数学的には外れ値に見えるものを含む場合であっても、真の外れ値と誤記とを判別することができ、それぞれに応じた適切な機械学習を行うことが可能となる。
【0057】
(C4)
図6,8に示すように、外れ値の原因の推定において、外れ値検出部10は、大きさの異なる複数の桁補正係数に誤記と推定された検出対象をそれぞれ乗算して、乗算後の値が、同一グループ内の前記レコードの外れ値と判定されていない同一検出対象の頻出範囲内である場合に、桁間違いによる誤記と推定する。
【0058】
例えば、
図8の顧客名がC3であるレコードにおいては、売上高の30円は外れ値と判定され、その値に10
-5、10
-4、・・・、10
4、10
5のように10倍刻みの複数の桁補正係数をそれぞれ乗算すると、10
2を乗算した場合の3,000円は、外れ値と判定されていない売上高の数値範囲内となる。すなわち、30円は桁違いによる誤記であることが推定され、単なる誤記という判定ではなく原因が桁違いによる誤記であることまで判定できる。
【0059】
(C5)
図8,10に示すように、外れ値検出部10は、桁間違いによる誤記と推定された検出対象(例えば、
図8の売上高30円)に、乗算結果が頻出範囲内となる桁補正係数(=10
2)を乗算して30円を3,000円に補正する(ステップS2210)。そして、学習部20は、桁間違いによる誤記と推定された検出対象である売上高30円に代えて補正後の売上高3,000円を用いて機械学習を実施する。その結果、桁間違いによる誤記を補正しない場合に比べて、精度向上を図ることができる。
【0060】
(C6)
図10に示すように、学習部20は、外れ値と推定された検出対象がある場合には、ロバスト回帰による機械学習を実施して学習モデルを作成する。外れ値がある場合には、平均二乗誤差などをロス関数とした通常の機械学習では十分な予測精度が担保できなくなるが、上述のようにロバスト回帰による機械学習を実施することで予測精度の向上を図ることができる。
【0061】
(C7)
図10,11に示すように、学習部20は、売上高である目的変数(分子)を予測する分子予測モデルと、通話時間である目的変数(分母)を予測する分母予測モデルと、目的変数(比)を予測する比予測モデルとを作成する。そして、機械学習システム1は、評価データを用いて分子予測モデル、分母予測モデルおよび比予測モデルの予測値をそれぞれ求め、分子予測モデルの予測値と分母予測モデルの予測値との比の精度と、比予測モデルの予測値の精度とを比較して、より精度が高い方の予測モデルを学習モデルに採用する、モデル評価部30をさらに備える。
【0062】
このように、比予測モデルに加えて分子予測モデルおよび分母予測モデルも考慮し、比予測モデルの予測値の精度と、分子予測モデルの予測値と分母予測モデルの予測値との比の精度との比較から学習モデルを決定しているので、より高精度な学習モデルが得られる。
【0063】
(C8)
図1~8に示すように、本発明の機械学習方法は、学習データの全レコードに関して、機械学習の予測対象である目的変数を検出対象とする第1の外れ値検出処理を行い、レコードR1~R3に含まれる職業という説明変数に基づいて、全レコードR1,R2,R3,・・・、を主婦のグループ、会社員のグループ、アルバイトのグループに分け、複数のグループのグループ毎に、目的変数を検出対象とする第2の外れ値検出処理を行い、第1の外れ値検出処理および第2の外れ値検出処理の検出結果に基づいて外れ値の原因を推定し、推定された外れ値の原因に基づいて機械学習を実施して、目的変数を予測する学習モデルを作成する。
【0064】
以上説明した各実施の形態はあくまで一例であり、発明の特徴が損なわれない限り、本発明はこれらの内容に限定されるものではない。本発明の技術的思想の範囲内で考えられるその他の態様も本発明の範囲内に含まれる。また、上記実施の形態および変形例は、本発明の趣旨を逸脱せず、互いに整合する範囲内で、一部または全部を組合せることができる。
【符号の説明】
【0065】
1…機械学習システム、10…外れ値検出部、20…学習部、30…モデル評価部、5000…コンピュータ、5700…出力装置、DB1…学習データデータベース、DB2…設定情報データベース、DB3…外れ値情報データベース、DB4…モデル情報データベース