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

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

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

特開2024-62241出力プログラム、出力方法、および情報処理装置
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024062241
(43)【公開日】2024-05-09
(54)【発明の名称】出力プログラム、出力方法、および情報処理装置
(51)【国際特許分類】
   G06F 8/74 20180101AFI20240430BHJP
   G06N 20/00 20190101ALI20240430BHJP
【FI】
G06F8/74
G06N20/00
【審査請求】未請求
【請求項の数】8
【出願形態】OL
(21)【出願番号】P 2022170107
(22)【出願日】2022-10-24
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002918
【氏名又は名称】弁理士法人扶桑国際特許事務所
(72)【発明者】
【氏名】加瀬 茉莉子
【テーマコード(参考)】
5B376
【Fターム(参考)】
5B376BC69
(57)【要約】
【課題】動的スライシングに利用するデータ量を削減する。
【解決手段】情報処理装置は、機械学習プログラムから、機械学習プログラムへの入力データに対するデータ操作に関する操作記述を抽出する。次に情報処理装置は、抽出した操作記述に基づいて、データ操作において操作対象となる対象データの抽出条件を決定する。さらに情報処理装置は、入力データから、決定した抽出条件を満たす対象データを抽出する。そして情報処理装置は、抽出した対象データを含むサンプリングデータを出力する。
【選択図】図13
【特許請求の範囲】
【請求項1】
機械学習プログラムから、前記機械学習プログラムへの入力データに対するデータ操作に関する操作記述を抽出し、
抽出した前記操作記述に基づいて、前記データ操作において操作対象となる対象データの抽出条件を決定し、
前記入力データから、決定した前記抽出条件を満たす前記対象データを抽出し、
抽出した前記対象データを含むサンプリングデータを出力する、
処理をコンピュータに実行させる出力プログラム。
【請求項2】
前記抽出条件を特定する処理では、テーブル形式の前記入力データ内の前記対象データが格納された列のカラム名を、抽出した前記操作記述から特定し、特定した前記カラム名のカラムに格納されているという条件を前記抽出条件に含める、
請求項1記載の出力プログラム。
【請求項3】
前記抽出条件を特定する処理では、抽出した前記操作記述において指定されているインデックスに対応する行の特定した前記カラム名のカラムに格納されているという条件を、前記抽出条件に含める、
請求項2記載の出力プログラム。
【請求項4】
前記対象データを抽出する処理では、前記入力データから、前記抽出条件を満たさない非対象データを削除する、
請求項1記載の出力プログラム。
【請求項5】
前記対象データを抽出する処理では、前記入力データから、決定した前記抽出条件を満たす前記対象データと、前記機械学習プログラムを用いた機械学習における予測対象のラベルデータとを抽出し、
サンプリングデータを出力する処理では、抽出した前記対象データと前記ラベルデータとを含むサンプリングデータを出力する、
請求項1記載の出力プログラム。
【請求項6】
前記操作記述を特定する処理では、複数の前記機械学習プログラムそれぞれから、複数の前記機械学習プログラムに共通の前記入力データに対する前記操作記述を抽出し、
前記抽出条件を決定する処理では、複数の前記機械学習プログラムそれぞれについての前記抽出条件を決定し、
前記対象データを抽出する処理では、複数の前記機械学習プログラムに対応する複数の前記抽出条件のいずれかを満たす前記対象データを、前記入力データから抽出する、
請求項1から5までのいずれかに記載の出力プログラム。
【請求項7】
機械学習プログラムから、前記機械学習プログラムへの入力データに対するデータ操作に関する操作記述を抽出し、
抽出した前記操作記述に基づいて、前記データ操作において操作対象となる対象データの抽出条件を決定し、
前記入力データから、決定した前記抽出条件を満たす前記対象データを抽出し、
抽出した前記対象データを含むサンプリングデータを出力する、
処理をコンピュータが実行する出力方法。
【請求項8】
機械学習プログラムから、前記機械学習プログラムへの入力データに対するデータ操作に関する操作記述を抽出し、抽出した前記操作記述に基づいて、前記データ操作において操作対象となる対象データの抽出条件を決定し、前記入力データから、決定した前記抽出条件を満たす前記対象データを抽出し、抽出した前記対象データを含むサンプリングデータを出力する処理部、
を有する情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、出力プログラム、出力方法、および情報処理装置に関する。
【背景技術】
【0002】
データ・タスクを入力として適切な機械学習プログラムを自動的に生成する、AutoML(Automated Machine Learning)の開発が現在盛んに行われている。AutoMLを実現するためには、大量の既存の機械学習プログラム内の有用な部品(コードスニペット)を蓄積することが重要となる。そこで、既存の複数の機械学習プログラムの中からコードスニペットを抽出する処理が行われる。
【0003】
機械学習プログラムからコードスニペットを抽出する際には、コードを動的に実行させて命令間の依存関係を抽出する動的スライシングが行われる。動的スライシングでは、例えば複数の命令を含む機械学習プログラムから、所定の変数に関係する命令群が抽出される。抽出された命令群が、コードスニペットとして出力される。
【0004】
機械学習プログラムなどのプログラムの解析に有用な技術としては、例えばプログラム間の呼び出し関係を正確に抽出する抽出方法が提案されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2021-165902号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
動的スライシングでは実際に機械学習プログラムを実行させるため、機械学習に利用するデータ量が多いほど処理に時間がかかってしまう。例えば機械学習プログラムを用いたモデル生成に利用する訓練データが大量にある場合、その訓練データを用いて機械学習プログラムの動的スライシングを行うと、処理に長い時間を要する。
【0007】
そこで動的スライシングを実行する前に、入力する訓練データのデータ量を削減することが考えられる。すなわち、機械学習に利用する訓練データのデータ量を削減することで機械学習の処理に要する時間を削減し、結果として、動的スライシングの実行時間も短縮できると考えられる。
【0008】
しかし、確実に既存の機械学習プログラムを実行させる必要がある動的スライシングにおいては、例えば、訓練データをランダムに削除するような手法では、訓練データの削減によって動的スライシングの実行が妨げられるおそれがある。
【0009】
1つの側面では、本件は、動的スライシングに利用するデータ量を削減することを目的とする。
【課題を解決するための手段】
【0010】
1つの案では、以下の処理をコンピュータに実行させる出力プログラムが提供される。
コンピュータは、機械学習プログラムから、機械学習プログラムへの入力データに対するデータ操作に関する操作記述を抽出する。コンピュータは、抽出した操作記述に基づいて、データ操作において操作対象となる対象データの抽出条件を決定する。コンピュータは、入力データから、決定した抽出条件を満たす対象データを抽出する。そしてコンピュータは、抽出した対象データを含むサンプリングデータを出力する。
【発明の効果】
【0011】
1態様によれば、動的スライシングに利用するデータ量を削減することができる。
【図面の簡単な説明】
【0012】
図1】第1の実施の形態に係るサンプリングデータの出力方法の一例を示す図である。
図2】第2の実施の形態のシステム構成の一例を示す図である。
図3】本実施の形態に用いる機械学習支援装置のハードウェアの一例を示す図である。
図4】機械学習支援装置の機能を示すブロック図である。
図5】テーブルデータの一例を示す図である。
図6】機械学習プログラムの一例を示す図である。
図7】データ抽出処理の手順の一例を示す図である。
図8】パス抽出処理の一例を示す図である。
図9】パス抽出処理の手順の一例を示すフローチャートである。
図10】データサンプリング条件探索の一例を示す図である。
図11】データサンプリング条件の一例を示す図である。
図12】データサンプリング条件探索処理の手順の一例を示すフローチャートである。
図13】データサンプリングの一例を示す図である。
図14】データサンプリング処理の手順の一例を示すフローチャートである。
図15】第3の実施の形態における機械学習支援装置の機能の一例を示すブロック図である。
図16】第3の実施の形態におけるデータ抽出処理の手順の一例を示すフローチャートである。
図17】第3の実施の形態におけるデータサンプリング処理の手順の一例を示すフローチャートである。
図18】機械学習プログラムの一例を示す図である。
図19】複数の機械学習プログラムそれぞれのデータフレーム名の一例を示す図である。
図20】複数の機械学習プログラムそれぞれのデータサンプリング条件探索の一例を示す図である。
図21】複数の機械学習プログラムそれぞれのデータサンプリング条件とそれらのOR条件との一例を示す図である。
図22】データサンプリングの一例を示す図である。
図23】複数のテーブルデータを入力データとする機械学習プログラムの一例を示す図である。
【発明を実施するための形態】
【0013】
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第1の実施の形態〕
第1の実施の形態は、動的スライシングに使用するサンプリングデータのデータ量を削減することができる、サンプリングデータの出力方法である。
【0014】
図1は、第1の実施の形態に係るサンプリングデータの出力方法の一例を示す図である。図1には、サンプリングデータの出力方法を実施するための情報処理装置10が示されている。情報処理装置10は、例えば所定の出力プログラムを実行することにより、サンプリングデータの出力方法を実施することができる。
【0015】
情報処理装置10は、記憶部11と処理部12とを有する。記憶部11は、例えば情報処理装置10が有するメモリまたはストレージ装置である。処理部12は、例えば情報処理装置10が有するプロセッサまたは演算回路である。
【0016】
記憶部11は、動的スライシングの対象となる機械学習プログラム1、その機械学習プログラム1への入力データ2、および機械学習プログラム1を用いた機械学習における教師データにおけるラベルデータを指定するラベルデータ情報3を記憶する。
【0017】
処理部12は、機械学習プログラム1から、入力データ2に対するデータ操作に関する操作記述を抽出する。例えば処理部12は、機械学習プログラム1を解析して、DataFrame名「df_all」を特定する。そして処理部12は、機械学習プログラム1から、DataFrameのデータ操作に関する関数を抽出する。図1の例では、「df_all[’name’].fillna(’none’)...」、「df_all[’brand_name’][:2500]...」などが抽出される。
【0018】
次に処理部12は、抽出した操作記述に基づいて、データ操作において操作対象となる対象データの抽出条件4を決定する。例えば処理部12は、テーブル形式の入力データ2内の対象データが格納された列のカラム名を、抽出した操作記述から特定し、特定したカラム名のカラムに格納されているという条件を抽出条件4に含める。また処理部12は、抽出した操作記述において指定されているインデックスに対応する行の特定したカラム名のカラムに格納されているという条件を、抽出条件4に含める。図1の例では、抽出条件4には、インデックスが2500未満の行の、カラム名「name」、「brand_name」のカラムのデータであることが、抽出条件4として示されている。
【0019】
処理部12は、入力データ2から、決定した抽出条件4を満たす対象データを抽出する。この際、処理部12は、例えば入力データ2から、決定した抽出条件4を満たす対象データと、機械学習プログラム1を用いた機械学習における予測対象のデータであるラベルデータとを抽出してもよい。入力データ2のうちのどのデータがラベルデータとなるのかは、ラベルデータ情報3に示されている。図1の例では、カラム名「price」のデータがラベルデータである。
【0020】
処理部12は、抽出した対象データを含むサンプリングデータ5を出力する。例えば処理部12は、入力データ2から、抽出条件4を満たさない非対象データを削除する。なおラベルデータも抽出する場合、処理部12は、入力データから、抽出条件4を満たさず、ラベルデータでもないデータを削除する。
【0021】
そして処理部12は、抽出した対象データを含むサンプリングデータ5を出力する。図1の例では、インデックスが0~2499の2500行における、「name」、「brand_name」、「price」のカラムのデータを有するサンプリングデータ5が抽出されている。
【0022】
動的スライシングにおいては、機械学習プログラムのコードが実行され、実行結果に基づいて、命令間の依存関係を抽出する処理が行われる。このとき、機械学習プログラムで操作対象となるデータが入力データ中に存在しないと、機械学習プログラムは実行不能となる。機械学習プログラムが正しく実行できないことにより、命令間の依存関係の抽出も正しく行うことができなくなってしまう。つまり、データの削減によって機械学習プログラムで操作対象となるデータが削除されてしまうと、動的スライシングを正しく実行することができなくなってしまう。
【0023】
ここで、上述の説明において処理部12が出力するサンプリングデータ5は、機械学習プログラム1における操作対象のデータを含んでいる。そのため、サンプリングデータ5を入力データとして機械学習プログラム1を実行して動的スライシングを行えば、機械学習プログラム1により実行される処理がコードにしたがって正しく実行され、適切な動的スライシングが可能となる。しかもサンプリングデータ5は、入力データ2よりもデータ量が少ないため、動的スライシングを、データ削減を行わない入力データを用いる場合よりもより効率的に(より短い実行時間で)実施することができる。
【0024】
例えば、サンプリングデータ5には機械学習プログラム1において操作対象となるカラムのデータが含まれているため、機械学習プログラム1を実行した際に、特定のカラムのデータの操作が、データ不足でスキップされることなく、正しく実行される。その結果、正確な動的スライシングを行うことができる。
【0025】
また操作記述において操作対象のデータのインデックスが指定されている場合、処理部12は、そのインデックスのデータのみを、入力データから抽出する。これにより、余分なデータの抽出が行われず、最小限のデータのみが抽出される。その結果、サンプリングデータ5のデータ量が削減される。例えば処理部12は、入力データ2から、抽出条件4を満たさない非対象データを削除することで、余分なデータを削除したサンプリングデータ5を生成することができる。
【0026】
なお、いずれの操作記述においても操作対象のインデックスが指定されていない場合、例えば処理部12は、N行(Nは自然数)のデータを入力データ2から抽出する。Nは、機械学習プログラムが正しく実行できる範囲で、できるだけ少ない値が設定される。
【0027】
また、複数の操作記述において操作対象のインデックスが指定されている場合、例えば処理部12は、指定されたインデックスの論理和に該当するインデックスの行から、データを抽出する。これによりサンプリングデータ5を用いて、インデックスを指定したすべての操作記述に応じた処理を正しく実行することができる。
【0028】
また機械学習プログラム1が教師あり学習のためのプログラムである場合、操作対象のデータ以外に、ラベルデータも利用される。入力データ2からラベルデータも抽出し、サンプリングデータ5に含めることで、サンプリングデータ5に基づいて教師あり学習を正しく実行することができる。
【0029】
なお、共通の入力データ2を使用する機械学習プログラム1が複数あり、それらの機械学習プログラム1それぞれの動的スライシングが行われる場合がある。その場合、例えば処理部12は、複数の機械学習プログラム1それぞれについて、サンプリングデータ5を出力することができる。また処理部12は、複数の機械学習プログラム1に対して1つのサンプリングデータ5を生成することも可能である。
【0030】
例えば処理部12は、複数の機械学習プログラム1それぞれから、複数の機械学習プログラム1に共通の入力データ2に対する操作記述を抽出する。さらに処理部12は、複数の機械学習プログラム1それぞれについての抽出条件4を決定する。そして処理部12は、複数の機械学習プログラム1に対応する複数の抽出条件4のいずれかを満たす対象データ(複数の抽出条件4の論理和の条件を満たすデータ)を、入力データ2から抽出する。これにより、複数の機械学習プログラム1に共通で使用するサンプリングデータ5を生成することができる。
【0031】
その結果、複数の機械学習プログラム1に対して動的スライシングを実行するためのサンプリングデータ5のデータ量を削減することができる。
〔第2の実施の形態〕
第2の実施の形態は、AutoMLによる機械学習プログラムの自動生成を効率的に実行出来るようにする機械学習支援装置である。
【0032】
図2は、第2の実施の形態のシステム構成の一例を示す図である。機械学習支援装置100は、ネットワーク20を介してサーバ200に接続されている。サーバ200は、訓練データとして利用可能なデータを保持するコンピュータである。機械学習支援装置100は、サーバ200に記憶されているデータを訓練データとして用いて機械学習を行うための機械学習プログラムを生成するコンピュータである。
【0033】
図3は、本実施の形態に用いる機械学習支援装置のハードウェアの一例を示す図である。機械学習支援装置100は、プロセッサ101によって装置全体が制御されている。プロセッサ101には、バス109を介してメモリ102と複数の周辺機器が接続されている。プロセッサ101は、マルチプロセッサであってもよい。プロセッサ101は、例えばCPU(Central Processing Unit)、MPU(Micro Processing Unit)、またはDSP(Digital Signal Processor)である。プロセッサ101がプログラムを実行することで実現する機能の少なくとも一部を、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)などの電子回路で実現してもよい。
【0034】
メモリ102は、機械学習支援装置100の主記憶装置として使用される。メモリ102には、プロセッサ101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ102には、プロセッサ101による処理に利用する各種データが格納される。メモリ102としては、例えばRAM(Random Access Memory)などの揮発性の半導体記憶装置が使用される。
【0035】
バス109に接続されている周辺機器としては、ストレージ装置103、GPU(Graphics Processing Unit)104、入力インタフェース105、光学ドライブ装置106、機器接続インタフェース107およびネットワークインタフェース108がある。
【0036】
ストレージ装置103は、内蔵した記録媒体に対して、電気的または磁気的にデータの書き込みおよび読み出しを行う。ストレージ装置103は、機械学習支援装置100の補助記憶装置として使用される。ストレージ装置103には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。なお、ストレージ装置103としては、例えばHDD(Hard Disk Drive)やSSD(Solid State Drive)を使用することができる。
【0037】
GPU104は画像処理を行う演算装置であり、グラフィックコントローラとも呼ばれる。GPU104には、モニタ21が接続されている。GPU104は、プロセッサ101からの命令に従って、画像をモニタ21の画面に表示させる。モニタ21としては、有機EL(Electro Luminescence)を用いた表示装置や液晶表示装置などがある。
【0038】
入力インタフェース105には、キーボード22とマウス23とが接続されている。入力インタフェース105は、キーボード22やマウス23から送られてくる信号をプロセッサ101に送信する。なお、マウス23は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【0039】
光学ドライブ装置106は、レーザ光などを利用して、光ディスク24に記録されたデータの読み取り、または光ディスク24へのデータの書き込みを行う。光ディスク24は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク24には、DVD(Digital Versatile Disc)、DVD-RAM、CD-ROM(Compact Disc Read Only Memory)、CD-R(Recordable)/RW(ReWritable)などがある。
【0040】
機器接続インタフェース107は、機械学習支援装置100に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース107には、メモリ装置25やメモリリーダライタ26を接続することができる。メモリ装置25は、機器接続インタフェース107との通信機能を搭載した記録媒体である。メモリリーダライタ26は、メモリカード27へのデータの書き込み、またはメモリカード27からのデータの読み出しを行う装置である。メモリカード27は、カード型の記録媒体である。
【0041】
ネットワークインタフェース108は、ネットワーク20に接続されている。ネットワークインタフェース108は、ネットワーク20を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。ネットワークインタフェース108は、例えばスイッチやルータなどの有線通信装置にケーブルで接続される有線通信インタフェースである。またネットワークインタフェース108は、基地局やアクセスポイントなどの無線通信装置に電波によって通信接続される無線通信インタフェースであってもよい。
【0042】
機械学習支援装置100は、以上のようなハードウェアによって、第2の実施の形態の処理機能を実現することができる。なお、第1の実施の形態に示した情報処理装置10も、図3に示した機械学習支援装置100と同様のハードウェアにより実現することができる。
【0043】
機械学習支援装置100は、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第2の実施の形態の処理機能を実現する。機械学習支援装置100に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、機械学習支援装置100に実行させるプログラムをストレージ装置103に格納しておくことができる。プロセッサ101は、ストレージ装置103内のプログラムの少なくとも一部をメモリ102にロードし、プログラムを実行する。また機械学習支援装置100に実行させるプログラムを、光ディスク24、メモリ装置25、メモリカード27などの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ101からの制御により、ストレージ装置103にインストールされた後、実行可能となる。またプロセッサ101が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
【0044】
機械学習支援装置100は、動的スライシングによって生成されたコードスニペットを用いてAutoMLによる機械学習プログラムの自動生成を行う。機械学習支援装置100は、動的スライシングを効率的に実行するために、動的スライシングの前に、動的スライシングの対象となる機械学習プログラムの実行時に入力するデータ量の削減処理を行う。入力するデータ量を削減することで、動的スライシングを効率的に実行することができる。
【0045】
図4は、機械学習支援装置の機能を示すブロック図である。機械学習支援装置100は、データ取得部110、記憶部120、データ抽出部130、動的スライシング部140、およびAutoML部150を有する。
【0046】
データ取得部110は、サーバ200から、機械学習の教師データとして利用可能なデータを取得する。例えばデータ取得部110は、テーブルデータ121をサーバ200から取得し、取得したテーブルデータ121を記憶部120に格納する。
【0047】
記憶部120は、機械学習プログラムの自動生成に用いるデータを記憶する。例えば記憶部120は、テーブルデータ121、複数の機械学習プログラム122a,122b,・・・、ターゲットカラム名123、および複数のサンプリングテーブルデータ124a,124b,・・・を記憶する。テーブルデータ121は、機械学習の訓練データとして利用されるテーブル形式のデータである。機械学習プログラム122a,122b,・・・は、動的スライシングの対象とする機械学習用のプログラムである。ターゲットカラム名は、テーブルデータ121のカラムのうちの、生成する機械学習プログラムにおいてラベルデータとして使用するデータが登録されたカラムの名称である。サンプリングテーブルデータ124a,124b,・・・は、機械学習プログラム122a,122b,・・・それぞれに応じて、動的スライシング実行のための最小限のデータをテーブルデータ121から抽出することで生成されたテーブルデータである。
【0048】
データ抽出部130は、機械学習プログラム122a,122b,・・・ごとに、動的スライシング実行のための最小限のデータをテーブルデータ121から抽出し、サンプリングテーブルデータ124a,124b,・・・を生成する。データ抽出部130は、パス抽出部131、データサンプリング条件探索部132、データサンプリング条件蓄積部133、およびデータサンプリング部134を有する。
【0049】
パス抽出部131は、機械学習プログラム122a,122b,・・・それぞれから、「pandas.DataFrame()」に関連するデータ処理の依存関係を示すパスを抽出する。例えばパス抽出部131は、テーブルデータを読み込む際に使われる「pandas.DataFrame」関数を起点としたパス抽出を行う。パス抽出法として、例えばルールベース、抽象構文木(AST:Abstract Syntax Tree)などによるプログラム抽出方法を用いることができる。
【0050】
データサンプリング条件探索部132は、機械学習プログラム122a,122b,・・・それぞれについて、パス抽出部131が抽出したパスに基づいて、動的スライシングの実行に必要最小限のデータの条件を探索する。データサンプリング条件探索部132は、機械学習プログラム122a,122b,・・・ごとのデータサンプリング条件133a,133b,・・・をデータサンプリング条件蓄積部133に格納する。
【0051】
データサンプリング条件蓄積部133は、データサンプリング条件133a,133b,・・・を記憶する。データサンプリング条件蓄積部133は、例えばデータ抽出部130が管理するメモリ102内の記憶領域に設けられる。
【0052】
データサンプリング部134は、データサンプリング条件133a,133b,・・・に基づいて、テーブルデータ121からデータを抽出する。この際、データサンプリング部134は、ターゲットカラム名123に示されるカラムのデータを、抽出するデータに加える。データサンプリング部134は、抽出したデータによりサンプリングテーブルデータ124a,124b,・・・を生成し、記憶部120に格納する。
【0053】
動的スライシング部140は、機械学習プログラム122a,122b,・・・ごとに、対応するサンプリングテーブルデータを用いて動的スライシングを実行する。例えば動的スライシング部140は、特定の機械学習プログラムに対応するサンプリングテーブルデータを入力として、その機械学習プログラムを実行する。そして動的スライシング部140は、所定の変数に関係する命令群を、コードスニペットとして抽出する。動的スライシング部140は、抽出したコードスニペットをAutoML部150に送信する。
【0054】
AutoML部150は、動的スライシング部140から取得したコードスニペットを用いて指定されたタスクに応じた機械学習プログラムを自動生成する。
なお、図4に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。また、図4に示した各要素の機能は、例えば、その要素に対応するプログラムモジュールをコンピュータに実行させることで実現することができる。
【0055】
図5は、テーブルデータの一例を示す図である。図5に示すテーブルデータ121は、例えばファイル名「data.tsv」のTSV(Tab Separated Values)形式のファイルに格納されている。テーブルデータ121にはプロジェクトID「001」が設定されている。テーブルデータ121の行数は「1,482,536」である。
【0056】
またテーブルデータ121のカラム数は「8」である。各カラムのカラム名は、それぞれ「train_id,name,item_condition_id,category_name,brand_name,price,shipping,item_description」である。
【0057】
各行のカラム名「train_id」のデータは、その行の行名(インデックス)である。各行には、0から昇順の番号が、インデックスとして付与されている。
図6は、機械学習プログラムの一例を示す図である。機械学習プログラム122aには、ファイル名「data.tsv」のテーブルデータ121を入力として、機械学習を実行するプログラムが記述されている。
【0058】
機械学習支援装置100では、データ取得部110がサーバ200からテーブルデータ121を取得すると、データ抽出部130により、テーブルデータ121から機械学習プログラム122a,122b,・・・それぞれに応じたデータ抽出処理が行われる。
【0059】
図7は、データ抽出処理の手順の一例を示す図である。以下、図7に示す処理をステップ番号に沿って説明する。
[ステップS101]データ抽出部130は、機械学習プログラムごとに、ステップS102~S106の処理を実行する。例えばデータ抽出部130は、機械学習プログラム数がk(kは自然数)の場合、1番目の機械学習プログラムから処理を開始し、k番目の機械学習プログラムに対する処理が終了するまで処理を繰り返す。
【0060】
[ステップS102]データ抽出部130は、記憶部120から、データ抽出処理を未実行の機械学習プログラムの1つを、記憶部120から読み込む。
[ステップS103]データ抽出部130のパス抽出部131は、読み込んだ機械学習プログラムにおけるデータ処理の依存関係のパス抽出処理を行う。パス抽出処理の詳細は後述する(図9参照)。
【0061】
[ステップS104]データサンプリング条件探索部132は、データサンプリング条件探索処理を行う。データサンプリング条件探索処理によって、処理対象の機械学習プログラムに対応するデータサンプリングのためのデータサンプリング条件が生成される。例えばデータサンプリング条件探索部132は、パス抽出部131が抽出したパスに基づいて操作対象のpandas.DataFrameのインスタンスを特定する。そしてデータサンプリング条件探索部132は、DataFrameのインスタンスに基づいてデータサンプリング条件を決定する。データサンプリング条件探索処理の詳細は後述する(図12参照)。
【0062】
[ステップS105]データサンプリング部134は、生成されたデータサンプリング条件に基づいて、テーブルデータ121からのデータサンプリング処理を行う。データサンプリング処理の詳細は後述する(図14参照)。
【0063】
[ステップS106]データサンプリング部134は、データサンプリング処理によって生成されたサンプリングテーブルデータを出力する。例えばデータサンプリング部134は、サンプリングテーブルデータを記憶部120に格納する。
【0064】
[ステップS107]データ抽出部130は、すべての機械学習プログラム122a,122b,・・・に対してステップS102~S106の処理が完了した場合、データ抽出処理を終了する。
【0065】
次に、パス抽出処理について詳細に説明する。
図8は、パス抽出処理の一例を示す図である。図8には、機械学習プログラム122aからのpandas.DataFrameのインスタンスを探索する例が示されている。パス抽出部131は、パス抽出を行うために、例えば機械学習プログラム122aの処理間の依存関係を示す依存ツリー31を生成する。依存ツリー31には、各処理に対応するノード31a~31jが含まれており、処理間の依存関係がノード31a~31j間を接続する矢印で示されている。矢印は、矢印の先のノードの処理が、矢印の元のノードの処理に依存することを示す。以下、矢印の元のノードを、矢印の先のノードの上位側とする。
【0066】
パス抽出部131は、model.fit()関数に対応するノード31jを起点(シード)として、依存ツリー31におけるデータの依存関係を上位に向かって辿る。図8の例では、機械学習プログラム122aにはmodel.fit()関数「model.fit(x_train,y_train)」が含まれる。このmodel.fit()関数から、機械学習に使用するデータが「x_train,y_train」であることが分かる。そこでパス抽出部131は、依存ツリー31において、「x_train,y_train」の依存関係を上位に向かって辿る。
【0067】
図8の依存ツリー31では、データ「x_train,y_train」を起点とする依存関係が太線の矢印で示されている。データ「x_train,y_train」から依存関係を辿ることができるノード間の接続関係が、pandas.DataFrame()に関連したパスである。
【0068】
パスに示されるデータの依存関係を上位に辿ることで到達することで、pandas.DataFrameのインスタンスを特定することができる。図8の例では、依存関係を辿ることで「df_all=pd.read_table(“data.tsv”)」に到達している。この場合、pandas.DataFrameのインスタンスとして、「DataFrame名:df_all」が特定される。
【0069】
以下、パス抽出処理の手順を詳細に説明する。
図9は、パス抽出処理の手順の一例を示すフローチャートである。以下、図9に示す処理をステップ番号に沿って説明する。
【0070】
[ステップS111]パス抽出部131は、依存ツリー31を作成する。
[ステップS112]パス抽出部131は、依存ツリー31の下位の階層から順に、各階層のノードを処理対象として、ステップS113~S117の処理を実行する。例えばパス抽出部131は、依存ツリー31の階層数がlの場合、上位からl番目の階層(最下位の階層)のノードから処理を開始し、階層を1段ずつ上位に移動させる。パス抽出部131は、1番目の階層のノードに対する処理が終了するまで処理を繰り返す。
【0071】
[ステップS113]パス抽出部131は、依存ツリー31の処理対象の階層のノード(対象のノード)に示される処理が、model.fit()関数の呼び出しを行っているか否かを判断する。パス抽出部131は、model.fit()関数を呼び出している場合、処理をステップS114に進める。またパス抽出部131は、model.fit()関数を呼び出していなければ、処理をステップS115に進める。
【0072】
[ステップS114]パス抽出部131は、対象のノードをシードに指定する。シードは、抽出するパスの起点となるノードである。シードを指定した時点では、シードのノードが、パスの最新のノードとなる。その後、パス抽出部131は、処理をステップS118に進める。
【0073】
[ステップS115]パス抽出部131は、シードが指定済みか否かを判断する。パス抽出部131は、シードが指定済みであれば処理をステップS116に進める。またパス抽出部131は、シードが指定済みでなければ、処理をステップS118に進める。
【0074】
[ステップS116]パス抽出部131は、対象のノードが、依存ツリー31においてパスの最新のノードに繋がっているか否かを判断する。パス抽出部131は、パスの最新のノードに繋がっていれば、処理をステップS117に進める。またパス抽出部131は、パスの最新のノードに繋がっていなければ処理をステップS118に進める。
【0075】
[ステップS117]パス抽出部131は、対象のノードを、パスの最新のノードとして追加する。
[ステップS118]パス抽出部131は、すべての階層のノードについて、階層ごとの処理が終了した場合、パス抽出処理を終了する。
【0076】
パス抽出処理によってpandas.DataFrame()に関連したパスが抽出されると、データサンプリング条件探索部132により、データサンプリング条件の探索処理が行われる。
【0077】
図10は、データサンプリング条件探索の一例を示す図である。データサンプリング条件探索部132は、パス抽出部131が抽出したパスから特定されるpandas.DataFrameのインスタンスのデータに対する操作を、機械学習プログラム122aから抽出する。例えばデータサンプリング条件探索部132は、pandas.DataFrameのインスタンスのDataFrame名を取得する。機械学習プログラム122aの場合、pandas.DataFrameのインスタンス「df_all=pd.read_table(“data.tsv”)」に示される「df_all」がDataFrame名である。
【0078】
データサンプリング条件探索部132は、機械学習プログラム122aからDataFrame名[‘カラム名’]が含まれる行を探索する。図10の例では、カラム名「name」を操作する行と、カラム名「brand_name」を操作する行とが抽出される。図10では、機械学習プログラム122aから抽出される操作に下線が引かれている。
【0079】
データサンプリング条件探索部132は、抽出した操作それぞれについて、操作対象の行のインデックスに制限があるかどうかを判断する。操作対象の行のインデックスに制限がある場合、その操作による操作対象は、操作記述で指定されたインデックスの行のデータに制限される。また操作対象の行のインデックスに制限がある場合、動的スライシングを行うためには、指定されたすべてのインデックスの行のデータをサンプリングテーブルデータに含めることが求められる。
【0080】
例えばデータサンプリング条件探索部132は、操作内容が以下の正規表現のいずれかに一致する場合に「制限あり」と判断する。
・¥[¥d*?¥:*?¥d*?¥:*?¥d*?¥]
・¥.loc¥[¥d*?¥:*?¥d*?¥:*?¥d*?¥]
・¥.iloc¥[¥d*?¥:*?¥d*?¥:*?¥d*?¥]
¥はバックスラッシュを表している。「d」は任意の数字を示す。「*」は直前の文字の0回以上の繰り返しを示す。「?」は直前の文字が0個または1個あることを示す。例えば正規表現「[¥d*?¥:*?¥d*?¥:*?¥d*?¥]」は、「:」で区切られた最大で3つの数値が括弧記号([])で囲まれている場合に一致する。「Loc」は、行名(インデックス)もしくは列名(カラム名)を指定して特定の値を抽出することを示す。「Iloc」は、行番号または列番号を指定して特定の値を抽出することを示す。
【0081】
正規表現に一致する3つの数値は、操作対象の行のインデックスを示している。「制限あり」の場合、正規表現に一致する3つの数値に基づいて、操作対象の行が判定される。
最初の数値は、操作対象の先頭の行のインデックス(train_idの値)を示す。操作対象の先頭の行のインデックスが「0」の場合、最初の数値を省略することができる。2つ目の数値は、操作対象の最後の行の次の行のインデックスを示す。3つ目の数値は、操作対象の先頭の行から最後の行との間の一定間隔の行を操作する場合における行の間隔を示す。例えば「df[0:10:5]」の場合、0行目から10行目の前の行までの範囲の行(インデックス「0~9」)のうち、5行に1つの行(インデックス「0,5」の行)が操作対象となる。
【0082】
例えば「df_all[’brand_name’][:2500]」であれば、インデックスが「0」以上であり、「2500」未満の行が操作対象となる。また「df_all[’brand_name’][100:2500]」であれば、インデックスが「100」以上であり、「2500」未満の行が操作対象となる。「df_all[’brand_name’][0:2500:10]」であれば、インデックスが「0」以上であり、「2500」未満の行のうち、インデックス「0」の行から10行間隔の行(0,10,20,・・・)の行が操作対象となる。
【0083】
機械学習プログラム122aのうち、例えば「df_all[’name’].fillna()」の操作は、操作内容が上記の正規表現のいずれにも一致しないため、制限なしと判定される。また「df_all[’brand_name’][:2500]」の操作は、操作内容が上記の正規表現の1つ目に一致するため、制限ありと判定される。この場合の操作対象の行は、行番号が「0」以上「2500」未満の行である。
【0084】
データサンプリング条件探索部132は、操作対象の行に制限がある場合、制限内容を示すデータサンプリング条件を生成する。データサンプリング条件探索部132は、生成したデータサンプリング条件をデータサンプリング条件蓄積部133に格納する。
【0085】
図11は、データサンプリング条件の一例を示す図である。データサンプリング条件探索部132は、複数の機械学習プログラム122a,122b,・・・それぞれに対応するデータサンプリング条件133a,133b,・・・を生成し、データサンプリング条件蓄積部133に格納する。
【0086】
例えば機械学習プログラム122aに対応するデータサンプリング条件133aには、操作対象のデータが格納されたカラムのカラム名が「name」と「brand_name」であることが示されている。またデータサンプリング条件133aには、カラム名「name」については操作対象の行のインデックスの制限はないことが示されている。さらにデータサンプリング条件133aには、カラム名「brand_name」については、操作対象の行が、2500未満のインデックスの行であるという制限があることが示されている。すなわち機械学習プログラム122aを実行する場合に、インデックスが「0~2499」の2500行を、操作対象として入力することが求められる。
【0087】
図12は、データサンプリング条件探索処理の手順の一例を示すフローチャートである。以下、図12に示す処理をステップ番号に沿って説明する。
[ステップS121]データサンプリング条件探索部132は、パス抽出部131が抽出したパスの上位から順に、パスのノードに対応する操作ごとに、ステップS122~S127の処理を行う。例えばパスの行数がL行(Lは自然数)であれば、1行目から順にL行までステップS122~S127の処理が行われる。
【0088】
[ステップS122]データサンプリング条件探索部132は、変数dfに値が保存されているか否かを判断する。データサンプリング条件探索部132は、値が保存されていれば処理をステップS124に進める。またデータサンプリング条件探索部132は、値が保存されていなければ処理をステップS123に進める。
【0089】
[ステップS123]データサンプリング条件探索部132は、「DataFrame」の変数名を変数dfに格納する。例えば図8に示す依存ツリー31から抽出したパスであれば、変数dfに「df_all」が格納される。
【0090】
[ステップS124]データサンプリング条件探索部132は、処理対象の操作が、変数dfに示されるDataFrameのカラムに関する操作か否かを判断する。データサンプリング条件探索部132は、該当DataFrameのカラムに関する操作であれば、処理をステップS125に進める。またデータサンプリング条件探索部132は、該当DataFrameのカラムに関する操作でなければ、処理をステップS128に進める。
【0091】
[ステップS125]データサンプリング条件探索部132は、処理対象の操作からカラム名を取得する。例えばデータサンプリング条件探索部132は、処理対象の操作が「df_all[’name’]=df_all[’name’].fillna(’none’).astype(’category’)」であれば、カラム名「name」を取得する。データサンプリング条件探索部132は、取得したカラム名を、データサンプリング条件のカラム名として設定する。
【0092】
[ステップS126]データサンプリング条件探索部132は、変数dfに示されるDataFrameの処理対象の行のインデックスに制限があるか否かを判断する。例えばデータサンプリング条件探索部132は、操作内容を示す記述が、所定の正規表現に一致する場合、「制限あり」と判断する。データサンプリング条件探索部132は、制限がある場合、処理をステップS127に進める。またデータサンプリング条件探索部132は、制限がない場合、処理をステップS128に進める。
【0093】
[ステップS127]データサンプリング条件探索部132は、処理対象の操作に示される処理対象の行のインデックスの制限を取得する。例えばデータサンプリング条件探索部132は、操作「pop_brands=df_all[’brand_name’][:2500].value_counts()」であれば、処理対象の行のインデックスが「<2500」の行のデータをサンプリングテーブルデータに含むという制限を取得する。データサンプリング条件探索部132は、取得した制限を、操作対象のカラム名に対応付けて、データサンプリング条件に設定する。
【0094】
[ステップS128]データサンプリング条件探索部132は、抽出したパスのすべてのノードに対応する操作に対する処理が終了した場合、データサンプリング条件探索処理を終了する。
【0095】
このようにしてデータサンプリング条件が生成される。データサンプリング条件が生成されると、データサンプリング部134は、機械学習プログラム122a,122b,・・・ごとのデータサンプリング条件133a,133b,・・・に基づいて、テーブルデータ121からデータサンプリングを行う。
【0096】
図13は、データサンプリングの一例を示す図である。例えばデータサンプリング部134は、データサンプリング条件133aに基づいて、テーブルデータ121内の一部のデータを抽出し、サンプリングテーブルデータ124aを生成する。図13に示すデータサンプリング条件133aには、操作対象のカラム名として「name」と「brand_name」が設定されている。またデータサンプリング条件133aには、操作対象の行のインデックスの制限として、カラム名「brand_name」について、インデックスが「<2500」のデータをサンプリングテーブルデータ124aに含めるという制限がある。
【0097】
データサンプリング部134は、テーブルデータ121の「train_id」、「name」、「brand_name」、および「price」のカラムのデータを抽出対象とする。「train_id」は、インデックスが示されたカラムである。「price」は、ターゲットカラム名で指定されているカラムである。「name」と「brand_name」は、データサンプリング条件133aにおいて操作対象として指定されているカラムである。
【0098】
またデータサンプリング部134は、抽出対象のカラムのデータのうち、操作対象の行のインデックスの制限において指定されているインデックスの行のデータを抽出対象とする。そしてデータサンプリング部134は、抽出対象のデータをテーブルデータ121から抽出し、抽出したデータを含むサンプリングテーブルデータ124aを生成する。
【0099】
サンプリングテーブルデータ124aには、「train_id」、「name」、「brand_name」、「price」のカラムが設けられている。そしてサンプリングテーブルデータ124aには、各カラムに、インデックス「0~2499」の2500行のデータが登録されている。
【0100】
図14は、データサンプリング処理の手順の一例を示すフローチャートである。以下、図14に示す処理をステップ番号に沿って説明する。
[ステップS131]データサンプリング部134は、処理対象の機械学習プログラムに対応するデータサンプリング条件を読み込む。
【0101】
[ステップS132]データサンプリング部134は、テーブルデータ121を読み込む。
[ステップS133]データサンプリング部134は、テーブルデータ121から、サンプリング条件を満たさないデータを削除する。データサンプリング部134は、削除後のテーブルデータを、処理対象の機械学習プログラムに対応するサンプリングテーブルデータとして出力する。
【0102】
このようにして、テーブルデータ121からデータ量を削減した、機械学習プログラム122a,122b,・・・それぞれに対応するサンプリングテーブルデータ124a,124b,・・・を生成することができる。サンプリングテーブルデータ124a,124b,・・・は、対応する機械学習プログラム122a,122b,・・・に対する動的スライシングを実行するための最小限のデータを含んでいる。そのため動的スライシング部140は、サンプリングテーブルデータ124a,124b,・・・を用いることで、機械学習プログラム122a,122b,・・・の動的スライシングを効率的に実行することができる。その結果、動的スライシングの処理時間が短縮される。
【0103】
図13に示す例の場合、元のテーブルデータ121の容量の5%程度までデータ量が削減されている。その結果、動的スライシングの実行時間を30%程度削減することが可能である。
【0104】
しかも第2の実施の形態では、機械学習プログラム122a,122b,・・・それぞれについて最適化したサンプリングテーブルデータ124a,124b,・・・を生成している。そのため、機械学習プログラム122a,122b,・・・に対する動的スライシングを、最小限のデータにみを含むサンプリングテーブルデータ124a,124b,・・・を用いて行うことができる。
【0105】
〔第3の実施の形態〕
第3の実施の形態は、複数の機械学習プログラム122a,122b,・・・に対して1つのサンプリングテーブルデータを生成するものである。サンプリングテーブルデータを1つに纏めることで、複数の機械学習プログラム122a,122b,・・・に対して一括して動的スライシングを実行する際に、サンプリングテーブルデータのデータ総量を削減することができる。以下、第3の実施の形態における第2の実施の形態との相違点について説明する。
【0106】
図15は、第3の実施の形態における機械学習支援装置の機能の一例を示すブロック図である。図15の機械学習支援装置100aの機能を示す要素のうち、第2の実施の形態と同様の要素には第2の実施の形態と同じ符号を付して説明を省略する。
【0107】
第3の実施の形態における機械学習支援装置100aの記憶部120aには、複数の機械学習プログラム122a,122b,・・・に対して1つだけ生成されたサンプリングテーブルデータ125を記憶する。データ抽出部130aにおけるデータサンプリング部134aは、機械学習プログラム122a,122b,・・・それぞれに対応するデータサンプリング条件133a,133b,・・・の論理和を採ったデータサンプリング条件を生成する。そしてデータサンプリング部134aは、生成したデータサンプリング条件に基づいてテーブルデータ121からデータを抽出し、サンプリングテーブルデータ125を生成する。
【0108】
図16は、第3の実施の形態におけるデータ抽出処理の手順の一例を示すフローチャートである。以下、図16に示す処理をステップ番号に沿って説明する。
[ステップS201]データ抽出部130aは、機械学習プログラムごとに、ステップS202~S204の処理を実行する。
【0109】
[ステップS202]データ抽出部130aは、記憶部120aから、データ抽出処理を未実行の機械学習プログラムの1つを、記憶部120aから読み込む。
[ステップS203]データ抽出部130aのパス抽出部131は、読み込んだ機械学習プログラムにおけるデータ処理の依存関係を示すパスを抽出するパス抽出処理を行う。パス抽出処理の詳細は図9に示した通りである。
【0110】
[ステップS204]データサンプリング条件探索部132は、パス抽出部131が抽出したパスに基づいて、データサンプリング条件探索処理を行う。データサンプリング条件探索処理の詳細は図12に示した通りである。データサンプリング条件探索処理によって、処理対象の機械学習プログラムに対応するデータサンプリングのためのデータサンプリング条件が生成される。
【0111】
[ステップS205]データ抽出部130aは、すべての機械学習プログラム122a,122b,・・・に対してステップS202~S204の処理が完了した場合、処理をステップS206に進める。
【0112】
[ステップS206]データサンプリング部134aは、機械学習プログラム122a,122b,・・・それぞれに対して生成されたデータサンプリング条件133a,133b,・・・に基づいて、テーブルデータ121からのデータサンプリング処理を行う。データサンプリング処理の詳細は後述する(図17参照)。
【0113】
[ステップS207]データサンプリング部134aは、データサンプリング処理によって生成されたサンプリングテーブルデータ125を出力する。例えばデータサンプリング部134aは、サンプリングテーブルデータ125を記憶部120aに格納する。
【0114】
図17は、第3の実施の形態におけるデータサンプリング処理の手順の一例を示すフローチャートである。以下、図17に示す処理をステップ番号に沿って説明する。
[ステップS211]データサンプリング部134aは、複数の機械学習プログラム122a,122b,・・・に対応するデータサンプリング条件133a,133b,・・・を読み込む。
【0115】
[ステップS212]データサンプリング部134aは、データサンプリング条件133a,133b,・・・のOR条件を計算する。そしてデータサンプリング部134aは、データサンプリング条件133a,133b,・・・のOR条件を示すデータサンプリング条件を生成する。例えばデータサンプリング部134aは、データサンプリング条件133a,133b,・・・の少なくとも1つにおいて抽出対象とされるデータを抽出対象とするデータサンプリング条件を生成する。
【0116】
[ステップS213]データサンプリング部134aは、テーブルデータ121を読み込む。
[ステップS214]データサンプリング部134aは、データサンプリング条件133a,133b,・・・のOR条件を示すデータサンプリング条件を満たさないデータを、テーブルデータ121から削除する。データサンプリング部134aは、削除後のテーブルデータを、複数の機械学習プログラム122a,122b,・・・に共通のサンプリングテーブルデータ125として出力する。
【0117】
このようにして、複数の機械学習プログラム122a,122b,・・・の動的スライシングに利用可能な1つのサンプリングテーブルデータ125が生成される。以下、2つの機械学習プログラム122a,122bに対応するサンプリングテーブルデータ125を生成する場合を想定し、図18図22を参照して、サンプリングテーブルデータ125の生成例について説明する。
【0118】
図18は、機械学習プログラムの一例を示す図である。例えば図18に示すような2つの機械学習プログラム122a,122bがあるものとする。これらの機械学習プログラム122a,122bは、いずれもテーブルデータ121を入力として機械学習を行うプログラムである。データ抽出部130aは、記憶部120aからこれらの機械学習プログラム122a,122bを読み込む。そしてパス抽出部131が、機械学習プログラム122a,122bそれぞれに対してパス抽出処理を行う。これにより、データ処理の依存関係を示すパスが抽出される。抽出されたパスに基づいてpandas.DataFrameのインスタンスが探索され、機械学習プログラム122a,122bそれぞれに対応するデータフレーム名が特定される。
【0119】
図19は、複数の機械学習プログラムそれぞれのデータフレーム名の一例を示す図である。例えば機械学習プログラム122aでは、「df_all=pd.read_table(“data.tsv”)」に基づいて、操作対象のデータフレーム名が「df_all」であることが分かる。また機械学習プログラム122bでは、「df=pd.read_csv(‘data.tsv’,delimiter=’¥t’,low_memory=True,header=0)」に基づいて、操作対象のデータフレーム名が「df」であることが分かる。
【0120】
次にデータサンプリング条件探索部132が、機械学習プログラム122a,122bそれぞれについて、データサンプリング条件の探索を行う。
図20は、複数の機械学習プログラムそれぞれのデータサンプリング条件探索の一例を示す図である。機械学習プログラム122aについては、第2の実施の形態と同様に、操作対処のカラムが「name」と「brand_name」であり、操作対象の行のインデックスが2500未満(<2500)であるというデータサンプリング条件133aが生成される。
【0121】
機械学習プログラム122bについては、データフレームのカラムに関する操作(図20において下線で示す)に基づいて、データサンプリング条件133bが生成される。例えばDataFrame名[‘カラム名’]が含まれる行の探索により、操作対象のカラムが「category_name」と「brand_name」であると特定される。
【0122】
カラムのデータに対する操作内容が所定の正規表現と一致するか否かが判断され、一致する場合には、操作対象とする行のインデックスの制限があると判定される。図20の例では、「category_name」と「brand_name」のいずれのカラムについても、操作内容が所定の正規表現と一致せず、制限なしと判断される。
【0123】
データサンプリング条件探索部132は、データサンプリング条件探索の結果に基づいて、複数の機械学習プログラム122a,122bそれぞれのデータサンプリング条件を生成する。データサンプリング条件探索部132は、生成したデータサンプリング条件をデータサンプリング条件蓄積部133に格納する。そしてデータサンプリング部134aによって、機械学習プログラム122a,122bごとに生成されたデータサンプリング条件133a,133bのOR条件を満たすデータサンプリング条件が生成される。
【0124】
図21は、複数の機械学習プログラムそれぞれのデータサンプリング条件とそれらのOR条件との一例を示す図である。データサンプリング条件蓄積部133には、機械学習プログラム122aに対応するデータサンプリング条件133aと機械学習プログラム122bに対応するデータサンプリング条件133bとが格納されている。データサンプリング部134aは、2つのデータサンプリング条件133a,133bのOR条件を求め、統合したデータサンプリング条件133-1を生成する。
【0125】
データサンプリング条件133-1には、プロジェクトidと操作対象のカラムのカラム名とが設定されている。各カラム名には、対応するカラムに対する操作対象の行のインデックスの制限内容が設定されている。図21の例では、「name」と「category_name」のカラムに関する操作対象の行のインデックスの制限はない。「brand_name」のカラムについては、インデックスが2500未満(<2500)の行のデータを含むという制限がある。
【0126】
データサンプリング部134aは、データサンプリング条件133-1に基づいて、テーブルデータ121からデータを抽出し、サンプリングテーブルデータ125を生成する。
【0127】
図22は、データサンプリングの一例を示す図である。例えばデータサンプリング部134aは、データサンプリング条件133-1に基づいて、テーブルデータ121内の一部のデータを抽出し、サンプリングテーブルデータ125を生成する。図22に示すデータサンプリング条件133-1には、操作対象のカラム名として「name」と「brand_name」と「category_name」が設定されている。またデータサンプリング条件133-1には、操作対象の行のインデックスの制限として、カラム名「brand_name」について、インデックスが「<2500」のデータを含むという制限がある。
【0128】
データサンプリング部134aは、テーブルデータ121の「train_id」、「name」、「category_name」、「brand_name」、および「price」のカラムのデータを抽出対象とする。「train_id」は、インデックスが示されたカラムである。「price」は、ターゲットカラム名で指定されているカラムである。「name」、「category_name」、および「brand_name」は、データサンプリング条件133-1において操作対象として指定されているカラムである。
【0129】
またデータサンプリング部134aは、抽出対象のカラムのデータのうち、操作対象の行のインデックスの制限において指定されているインデックスの行のデータを抽出対象とする。そしてデータサンプリング部134aは、抽出対象のデータをテーブルデータ121から抽出し、抽出したデータを含むサンプリングテーブルデータ125を生成する。
【0130】
サンプリングテーブルデータ125には、「train_id」、「name」、「category_name」、「brand_name」、「price」のカラムが設けられている。そしてサンプリングテーブルデータ125には、各カラムに、インデックス「0~2499」の2500行のデータが登録されている。
【0131】
このようなサンプリングテーブルデータ125を用いて2つの機械学習プログラム122a,122bそれぞれの動的スライシングを実行することができる。サンプリングテーブルデータ125は、テーブルデータ121からデータ量が削減されており、動的スライシングに要する時間が短縮される。しかも複数の機械学習プログラム122a,122bに対して1つのサンプリングテーブルデータ125が生成されており、機械学習プログラム122a,122bごとにサンプリングデータを生成する場合に比べ、全体のデータ量が削減される。
【0132】
またサンプリングテーブルデータ125が1つで済むことで、機械学習プログラム122a,122bの動的スライシングを連続で実施する場合に、サンプリングテーブルデータ125のメモリ102への読み込みが1回で済む。その結果、機械学習プログラム122a,122bの動的スライシングが効率的となる。
【0133】
また第3の実施の形態では、テーブルデータ121からのデータ抽出処理時間が短縮される。すなわち第2の実施の形態では、機械学習プログラムの数だけサンプリングテーブルデータを用意する。そのため、機械学習プログラムの数に比例してデータサンプリング処理の工数が増加する。それに対して、第3の実施の形態では、機械学習プログラムの数に関係なく、データサンプリング処理は1回だけで済む。そのためデータ抽出処理時間が短くてすむ。
【0134】
なお第3の実施の形態のサンプリングテーブルデータ125は、第2の実施の形態のように機械学習プログラムごとに最適化した個々のサンプリングテーブルデータ124a,124b,・・・と比較するとデータ量は大きくなる可能性がある。ただし、一般的に同じテーブルデータを入力とするタスクにおけるデータ操作の多様性は大きくない。そのため、個別最適化したサンプリングテーブルデータ124a,124b,・・・と比較し、サンプリングテーブルデータ125のデータ量が大幅に大きくなる可能性は低い。
【0135】
〔その他の実施の形態〕
機械学習プログラムでは、学習用のデータとテスト用のデータとを入力データとする場合がある。その場合、例えば機械学習プログラムにおいて、複数のテーブルデータを纏めたDataFrameが定義される。
【0136】
図23は、複数のテーブルデータを入力データとする機械学習プログラムの一例を示す図である。機械学習プログラム122cは、学習用のテーブルデータ「train.tsv」とテスト用のテーブルデータ「test.tsv」とを入力データとしている。2つのテーブルデータは、concat関数によって結合され、1つのDataFrame「df_all」に纏められている。機械学習プログラム122cにおけるDataFrame「df_all」内のデータに対する処理は、第2の実施の形態に示した機械学習プログラム122aと同様である。
【0137】
この場合、機械学習プログラム122cに基づいて生成される依存ツリー32は、機械学習プログラム122aの依存ツリー31のノード31b~31jそれぞれに対応するノード32d~32lに加え、3つのノード32a~32cを有している。ノード32a,32bは、2つの入力データそれぞれのDataFrameの定義である。ノード32cは、2つの入力データを結合したデータのDataFrameの定義である。
【0138】
依存ツリー32に基づいてpandas.DataFrameのインスタンスを探索する場合、データサンプリング条件探索部132は、学習に使っているデータ(x_train,y_train)を示すノード32lから、依存関係を上位に向かって辿る(太線の矢印)。
【0139】
入力がtrainとtestに分かれていて、それを結合(concat)している場合は、結合するノード32cに到達した時点で探索が終了となる。例えば、データサンプリング条件探索部132は、以下の2つの条件が共に満たされた場合に、探索を終了する。
・結合しているノードの上位に2つ以上のノードが接続されている。
・結合しているノードの上位のノードがそれ以上辿れない。
【0140】
図23の例では、結合しているノード32cの上位に2つのノード32a,32bがあり、ノード32a,32bは、いずれもそれ以上に上位に辿れない。このような場合、ノード32cでpandas.DataFrameの探索が終了し、ノード32cに示されるpandas.DataFrame名「df_all」が操作対象として特定される。
【0141】
入力データが学習用のテーブルデータと評価用のテーブルデータの場合、データサンプリング部134は、学習用のテーブルデータからサンプリングデータの抽出を行う。その場合、データサンプリング部134は、例えば2つの入力データのデータサイズに基づいて、学習用のテーブルデータを判断することができる。すなわちデータサンプリング部134は、入力データのうちサイズの大きいほうが学習用のテーブルデータであると判断する。
【0142】
またデータサンプリング部134は、ファイル名から学習用のテーブルデータを判断することもできる。例えばデータサンプリング部134は、名称に「train」が含まれるテーブルデータを、学習用のテーブルデータであると判断する。
【0143】
もしくは、データサンプリング部134は、名称に「test」もしくは「validation」が含まれるテーブルデータの場合、評価用のテーブルデータであると判断する。学習用もしくは評価用のテーブルデータであることが名称から明確に判断できなくても、いずれかのテーブルデータが明確となれば、データサンプリング部134は、もう一方のテーブルデータが学習用か評価用かを判断することができる。
【0144】
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の2以上の構成(特徴)を組み合わせたものであってもよい。
【符号の説明】
【0145】
1 機械学習プログラム
2 入力データ
3 ラベルデータ情報
4 抽出条件
5 サンプリングデータ
10 情報処理装置
11 記憶部
12 処理部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23