はじめに
文系の皆さんがAI人材になるためのノウハウを投稿していきます。今回はAIの作り方を学んでいきます。「そもそもAIはどんなものか」について知りたい方は「AI作成の流れ」を把握、「AI企画」をスムーズに進行させるためにをご参照ください。
予測系AIはどのように作られるのか
予測系AIは次のようなステップで作ることになります。それぞれ順に見ていきます。
企画
- AIプランニング
- 目的変数/説明変数の定義
データ作成
- 学習データ準備
- データ前処理
学習
- AIモデル構築
- AIモデル精度検証
予測
- AIモデル実行
- 運用·再学習
#2ではデータ作成について解説していきます。
「データ作成」の方法を理解する
学習データ準備「作れなくても、正しく専門家に依頼できるように」
企画段階が終わったら次は「データ作成」に移ります。データ作成では、まず先ほどまで説明していた「目的変数/説明変数の定義」に基づいて「学習データ準備」を行ないます。なお、学習データが複雑なもので取得や加工が難しい場合があります。その際は、 データサイエンティストもしくはエンジニアに学習データの準備を依頼することにになります。
ここでは、すべての作業を文系AI人材が行なえるようする解説ではなく、少なくとも正しく依頼ができるようになるための解説を行ないます。具体的な学習データの例を見ていきましょう。ここではECサイトのデータからユーザーの未来の購買を予測するAI用の学習データを例示します。このデータにおけるKEY、説明変数、目的変数は次の通りです。
- KEY:「会員ID」
- 説明変数 : 「年間購入回数」「会員ランク」「サイト滞在秒数 (14日)」「サイト訪間数 (14日)」「商品ページ閲覧数 (14日)」「カートイン数(14日)」
- 目的変数 : 「30日以内の購入」
この予測系AIでは、どの「会員ID」の人が「30日以内に購入するかどうか」を予測します。30日以内の購入を予測するための値として
- 「年間購入回数」
- 「会員ランク」
- 「直近14日間のサイト滞在秒数」
- 「直近14日間のサイト訪問数」
- 「直近14日間の商品ベージ関覧数」
- 「直近14日間のカートイン数」
を利用しています。少し言い換えると、過去1年間の購人回数とどの会員ランクかの情報、そして直近日間のECサイト内の行動データによって、 30日以内に構人するかどうかをAIで予測するということになります。この場合の学習データは以下の表のようになります。
この学習データはECサイトが保有する過去の贈買データ、会員データ、ウェブの行動データから出力し、Excel (CSV)のデータとして保存したものになります。一番左の列に並ぶのが会員IDで、その会員IDにひもづく説明変数が並び、最終列に予測対象となる目的変数が並びます。各データの対象期間ですが、次のような期間指定をして過去のデータから学習データを作ります。
- 年間薄入回数
2018/11/01~2019/10/31 - 会員ランク
2019/10/31時点 - サイト滞在秒数(14日)
2019/10/18~2019/10/31 - サイト訪問数(14日)
2019/10/18~2019/10/31 - 商品ページ閲覧数 (14日)
2019/10/18~2019/10/31 - カートイン数(14日)
2019/10/13-2019!10/31 - 30日以内の購入
2019/11/1~2019/11/30
時間軸を図で示すと以下のようになります。
このように、過去の結果データから期間指定を行ない、データを区切り、予測系AI用の学習データを作ります。この期間の区切り方で学習させた予測系AIは、過去1年の購入回数と、直近の会員ランク、そして直近科日間のウェブサイト内の行動データによって、その時点から30日間の未来の予測を行なうことができるようになります。
データ前処理1「欠損値。外れ値を見つけて対応する」
必要な値を集めて学習データを準備ができたら、次はデータの前処理に移ります。Alモデルを構築する際に、集めてきたデータに不備があると学習の際にエラーが起こることがあります。データの不備にはいくつかパターンがあります。
たとえば、あるべきデータが欠けているデータ欠損や、数値形式で渡すべきところ、全角の文字になっていたといったよな、値の形式が対応していない状態などが代表的です。
今回は文系AI人材のための解説になるのでいわゆるデータサイエンスの領域となるような深い解説は行ないません。ただし、データ前処理でどのようなことが行なわれるのかを、簡単な例で理解できるようにはしておきましょう。実は、先ほどの表に欠損があることに気づきましたでしょうか。
- ID10006の30日以内の購入の値が空
- ID10010の30日以内の購入の値が空
なんらかの理由によりり、データが欠損することがあります。たとえば通信時のエラーや人為的ミスなどが理由です。値が空のデータではAIの学習中エラーが起こりますので、欠損償のある会員ID10006と10010の行を削除する処理を行ないます。これで値が欠損したデータがなくなりました。なお、欠損データが多い場合、欠損している行を消すと学習データの量が大幅に減ってしまうことがあります。説明変数の値が大量に欠損している場合は、欠けている値にその項目の全体平均値を入れ、行数が減るのを防ぐこともあります。
なお、データによっては明らかに数値が飛び抜けて大きいもしくは小さいといった「外れ値」が入っている場合もあります。AIが学習する際にノイズになってしまうことかありますので、外れ値がある場合も該当する行を削除することがあります。
データ前処理2「特徴をつかみやすいように加工」
欠損値や外れ値の対応は学習時のエラーゃノイズを防ぐための処理でしたが、データ前処理はもうひとつの種類の処理があります。存在するデータからAIができるだけ特徴をつかめるようにデータを加工してあげる処理です。
たとえば、これまで例であげていた学習データの中の「サイト滞在秒数(14日)」だけが、他の説明変数の項目に比べて、桁が明らかに大きい値を扱っていることに気づいたでしょうか?場合にもよりますが、この桁の大きい項目を扱っていることによって、学習が偏ってしまったり、精度を上げるのを邪魔したりすることがあります。
学習の精度をより上げる工夫として、たとえば「サイト滞在秒数(14日)」を「サイト滞在ランク(14日)」として置き換え、布数の多い砂数の値を、何秒~何秒までをランク1、次の何秒~何秒までをランク2・・・とするといったランクとしての値に置き換 えてあげるような処理を行なうことがります 。 こうすることによって、AIがより特徴をとらえやすくするためです。
また、存在するデータの値をそのまま使うだけでなく、項目間の差や変化率などに変換して扱うことで、学習の精度を上げることもあります。データ欠損の対応をして、簡単なデータ処理を行なった結果の学習データが以下の表になります。
これで学習データが完成しました。
まとめ
企画では以下を行うことを解説しました。
- 学習データの準備
- データの前処理
この作業を終えて次のステップの「AIのモデル構築」に進んでいきます。「予測系AI」「識別系AI」「会話系AI」「実行系AI」については、以下の記事でより詳しく解説していきます。