SkyFoxで気軽に機械学習

機械学習自動化ツール「SkyFox」の紹介ブログ

FAQ【2021/12/08更新版】

目次

 

モデル作成について

モデル作成やデータ変換を実行する準備として、すべきことはありますか?

 アップロードするデータのクレンジング(空白データの処理や、データの型の認識から、分析精度を上げるための変換処理など)は、SkyFox側で最大限行っておりますので、特にご準備は不要です。今後も対応範囲を順次拡大してまいりますが、もし想定外のデータがアップロードされた場合には、エラーメッセージが表示されます。その際は、個別に対応いたしますので、担当者までお問い合わせください。
※個別に発生したエラーについては、本FAQに記載してまいります。

教師なし学習によるモデル作成はどの様に活用すればよろしいでしょうか?

 教師なし学習は、「データ変換」で利用可能なアルゴリズムを用いたモデル作成となります。「データ変換」ではアップロードしたデータに対して、都度アルゴリズムを適用して結果を返しますが、教師なし学習では、アップロードしたデータからモデルを作成するため、「データ変換」と同等の結果を求めるためには、一度作成したモデルを元の学習データへ適用させる必要があります。
 一度モデルを作成した後は、別のデータに対して、モデル適用を繰り返していくことで、最初の学習データの傾向を元にした、データ変換アルゴリズムの適用を行えるとご理解ください。


例1:クラスタリング
 学習データを4つのクラスタに分解するモデルを作成すると、新規の適用データが、その分解した4つのクラスタのいずれに属するかを、モデル適用によって得ることができます。
例2:形態素解析
 学習データに含まれる単語の出現数を取得するモデルを作成すると、新規の適用データに、元の学習データに含まれていた単語がいくつ登場するかを、モデル適用によって得ることができます。つまり、新規の適用データに新しく出現した単語は無視します。

 

 

全体で10,000件、正解データがそのうち100件程度含まれているデータで、分類モデルを作ろうとしていますが、正解データが不足しているのではと懸念しています。

 データの内容や分類したい対象によるため、一概には言えませんが、全体のデータ数が1万件以上、正解データが100件以上が最小限のデータ件数の基準と見ていただいて問題ないと思います。ただ、正解データが少ないことや、データ項目の数、選択するアルゴリズムが影響して、過学習と呼ばれる現象が起こる可能性があります。過学習が起きると、一見精度の高いモデルでも実際に使用すると当てはまりが悪くなります。
 また、データ件数が少ない場合、モデルの精度が安定しないことが多く、対応が必要な場合があります。

 

データの数が少なく、モデル作成する度に精度が大きく変化し安定していないようですが、どの様な対応をすればよいでしょうか?

 SkyFoxでは、アップロードした全データのうち、75%を「モデル作成」用のデータとし、残りの25%を「モデルの性能を検証する」データとし、この検証用データによって、AUCなどのモデルの性能評価指標を計算します。データは特に指定のない限り、ランダムに選択されるため、どのデータが作成用として選ばれ、どのデータで評価するかによって、モデルの精度が変わります。
 一般に、このような場合、安定的な性能を出すモデルを作成するのに十分なデータがない可能性が高く、データを増やすことが優先されます。しかし、データが増やせない場合などにおいては、交差検定(クロスバリデーション)という手法を用いて評価を行うことがあります。


<4モデルで交差検定する場合>

  1. まず、手元のデータを4分割します(正解データが少ない場合には、分割後のデータの正解が0件とならないように注意)
  2. 4分割したうちの3つを1まとまりにして、SkyFoxにアップロードし、モデルを作成します
  3. 残りの1つ使ってモデルに適用し、結果を取得します
  4. 1~3をデータを変えながら4回繰り返します
  5. 4つの適用結果を用いてモデルの性能を確認します

 これにより、選択データによる不安定性を解消することができます。また、実際に利用する場合は、4つのモデルすべてに適用し、すべての平均値や中央値などを取る手法が知られており、一般的に単一のモデルより良い性能となります。

乱数シードの値はどういう時に変更すればよいでしょうか?

 乱数シードの値は、モデル作成時、使用する学習データの選定などランダムに動作する際に作用するパラメータです。通常は、変更する必要はありませんが、上記のクロスバリデーションを簡易に行いたい場合などは、乱数シードの値を1~4などと変えながら4つのモデルを作成することで、それぞれモデル作成用のデータをランダムな4パターンで選定することができます。

アップロード用データを作成したのですが、数値データがカテゴリ情報として認識されてしまいます。

 エクセルなどのソフトウェアを使用して、CSVファイルを作成する場合、%や¥などの文字列が入っていると、作成したCSVファイル上も、そのまま%や¥などの文字が残ってしまう場合があります。その場合、SkyFoxでは、対象の項目を文字列として認識する仕様となっているため、数値データとして扱われないという状況が発生します。モデル作成結果や、データサマリをご確認いただき、想定しているデータのタイプと異なる認識をしている際は、テキストエディタなどで、CSVファイルを開いていただき、どの様な形でデータが保存されているかをご確認ください。

時系列分析の自己回帰アルゴリズムにはどの様なデータをアップロードすればよいでしょうか?

 自己回帰アルゴリズムでは、年月日を入力するカラムと、売上などの数値データを入力するカラムの2つを用意したCSVデータを準備してください。カラム名に制限はございません。サンプルデータは以下のリンクから取得できますので、データ準備の参考にしてください。
※サンプルデータに記載している日本語コメントは削除してお使いください
http://public.skyfox.sxi.co.jp/documents/autoregressive_sample_data.csv

 

モデル作成の前処理としてどんな処理を行っているのでしょうか?

※こちらの記事をご参照ください。 

blog.skyfox.ai

 

 

2値分類予測時の目的変数がうまく認識されません

 2値分類予測(0/1かの予測)を行う際は、目的変数を0か1としてください。〇/×や、1/2などの値だと、多値分類と認識してモデル作成を実行する仕様となっておりま
す。

 

学習データのサマリについて

学習データのサマリではどの様な情報を確認できるのでしょうか?

 学習データのサマリでは、各項目ごとに存在する値とその値ごとにどれだけ予測対象の発生率(予測対象が購入する/しないなどフラグの場合)、または予測対象の平均値(予測対象が購入金額など数値の場合)などをグラフ化した「データの分布」、各項目ごとのデータ件数や、最大値、平均値、分散などの基礎的な統計値一覧である「データの一覧」、そして各データ項目単独で、予測対象との関係度合いや予測力を確認できる「データの評価」の3つを確認することができます。
 どの情報もモデル作成時に使用する項目の取捨選択に活用します。「データの分布」を見て、予測対象の発生率が他と比べて高い項目に注目したり、「データの評価」を見てAUC(予測対象が購入する/しないなどフラグの場合)や相関(予測対象が購入金額など数値の場合)の値が低い項目をあらかじめ確認しておくことで、モデルの性能評価とチューニングに活用します。

 

項目の評価で確認できる単一変数評価はどの様に活用すればよいでしょうか?

 全て各データ項目が、予測対象の項目に対してどれだけの影響力を持っているかを示しています。分類モデルの場合は主にAUCを、回帰モデルの場合は主に相関を見ていただければ良いです。
 AUCは0.51~0.9が、相関はその絶対値が0.3~0.9であれば正常な範囲と言えます。下限より小さな値の場合、そのデータ項目はほとんど意味をもちません。また、上限を超えるデータ項目は、非常に影響度が強い項目です。一般に、結果を反映した項目である可能性が高く、除外を考慮すべきデータ項目となります。

 

基礎統計にある「備考」には何が書かれますか?

 データの異常性などを補足的に説明するコメントなどが表示されます。

 

モデルの性能評価・更新について

モデルの性能評価はどの様におこなっていますか?

 データ件数が十分な場合、アップロードしたデータの75%を用いてモデルを作成し、残りの25%のデータを予測した結果に対して評価します。件数が少ない場合は、全データでモデルを作成し、同じく全データで評価します。また、この時に採用されるデータは、「乱数シード値」によって決定されます。

 

※詳しくはこちらの記事で紹介しております。

blog.skyfox.ai

 

 

特に何も変更していないのに、「学習データの割合」が100%となってしまいました。原因として何が考えられるでしょうか?

 選択したアルゴリズム(自動選択で選ばれた場合も同様)によって、学習データの件数が少ないと、自動的に全てのデータを用いてモデルを作成する仕組みになっております。この場合、乱数シードの値をどの様に設定していても、全てのデータをモデル作成用に使用するため、性能検証の値なども一定となります。
 また、学習データの割合が100%の時は、性能評価にも同じデータを用いていますので、過学習が起きている可能性がありますので、ご注意ください。

 

モデルの詳細画面で表示されている、変数の影響度とは、どの様に理解すればよいでしょうか?

 各データ項目が予測対象に与える影響度を数値化したものですが、モデル作成の際にデータ型や値の特徴を鑑みた変換処理を行いますので、必ずしもこの値が単純に2倍であれば、影響度が2倍になるという値ではありません。相対的なデータ項目の影響度が高い/低いを表すものとしてご理解ください。

 

モデル更新の際、性能評価の値などが変わらない様にするためにはどうすればいいですか?

 学習用データと性能評価用データは、前述の通り「乱数シード値」によって決定されるため、モデル更新画面にて、乱数シード値を特定の値に固定することで、名称変更などモデルの性能に影響を与えない更新での性能評価の値は一定となります。
※現在デフォルト値として、1が設定されています。

モデル更新時に追加する学習データについて、気を付けておくべきことはありますか?

以下の2点に気を付けて、アップロードするデータをご準備ください。

  • 元の学習データと同一のデータ項目にしてください
  • idなどのキー項目に、元の学習データと重複するデータを含まない様にしてください(含む場合は追加でアップロードしたファイルのデータで上書きされます

 

過学習」が起きている可能性があるのですが、どの様な対応をすればよいでしょうか?

 過学習は、データの件数が少ない場合や、データの項目数が多すぎる場合などに発生することが多く、見た目の精度に対して、実際の当てはまりが悪くなってしまいます。

 

<データ件数が少ない場合>
 ランダムフォレストや勾配ブースティング決定木などを用いたモデルであれば、データ件数は1万件以上必要なことが多いです。また、データ件数に対して設定された「木の数」が多すぎたり、「分岐の下限サンプル数」が小さすぎると発生しやすくなりますので、パラメータの調整をしてみてください。

<データ項目数が多い場合>
 学習データのサマリなどから不要そうなデータ項目を省くのも良い方法です。ロジスティック回帰やエラスティックネットなど、「正則化」ができるアルゴリズムの場合は、正則化のパラメータを調整し、過度に学習しないように制御することもできます。

 

基本設定・課金情報について

ユーザは何人まで作れますか。また、ユーザ数を増やすことによる影響はなにかありますか?

 管理者ユーザ1名と一般ユーザは無制限で作れます。なお、ユーザ数が増えたとしても、動作が遅くなるなどの影響はありません。

 

他のユーザは、どこまでの情報を閲覧できますか?

 契約主体が同一であれば、作成したモデルや、データ変換の結果など全ての情報は共有することになります。


ユーザを変更(削除)した場合、元のユーザが作成したモデルはどうなりますか?

 上記の通り、作成したモデルや、データ変換結果は作成・実行したユーザによらず、同一の契約主体に紐づくすべてのユーザで共有しているため、特定のユーザIDが変更・削除されても、その他のデータは、そのまま引き続きご利用いただけます。

 

エラーへの対応について

モデル作成やデータ変換時にエラーメッセージが表示されましたが、準備するデータで気を付ける点はありますか?

以下の点をご確認いただき、アップロードデータの修正をお願いします。

  • タイトル行に改行コードが含まれていますか
  • SkyFoxではテキストデータをUTF-8にて処理しています。UTF-8に存在しない単語が含まれていませんか

 

 

その他

APIキーを使ってVBAなどから、各種機能を使用できますか?

 使用可能です。ご利用をご希望の場合は、必要な情報をお送りしますので、担当者にご連絡ください。