2020年8月アーカイブ

2022年卒大学生の皆さん!

コロナウイルスが流行していることで就活にどういう影響があるのか、とても不安ですよね。

今回は業界ごとに採用人数を予測し、「どの業界が狙い目なのか」機械学習を使った分析手順を紹介します!

目次

  1. 概要
  2. 手順
  3. 今後の課題


1.概要

データセットの内容

スクリーンショット 2020-08-25 9.47.11.png


分析対象の7業界・各4企業

  1. 化粧品
  2. 電子機器
  3. 商社
  4. 不動産
  5. 金融
  6. サービス
  7. IT・情報


説明変数と目的変数

特徴量
年初の株価、決算報告書提出翌日の株価、一株あたりの純資産額、従業員数、業界番号
決算報告書翌日の株価が出ていないところは提出後直近の株価を使用する。また、純資産額に関しては決算報告書が7/1の時点で未提出の場合に限り、昨年の値を使用する。


目的変数
採用人数
新卒採用人数は、リクナビorマイナビorキャリタスのデータを使用する。  

2.手順

今回は方法の紹介を行う。


欠損値の補完

従業員数
過去2年分の従業員数の変化率を使う。
例えば、2018年と2019年の従業員数の変化率を使って2020年の従業員を補完する。


株価
①複数企業での、同じ年代の1月株価と通期決算報告翌日の株価の変化率の平均を使う。
 例えば、リクルートの2018年の1月株価と決算翌日の株価の変化率をA、東京海上日動の2018年の変化率をBとする。ミクシィの2018年の決算翌日の株価を求めたい時(1月株価は既知)、AとBの変化率の平均値を1月株価に掛けて補完する。
②1月株価の値と決算翌日の株価の値、どちらも未知の場合は行を削除する。


純資産
直近の純資産で補完する。


モデル

回帰分析
回帰分析して、業界ごとの採用人数の平均値をとる。
説明変数:従業員数、株価(決算報告翌日)、業界、純資産
目的変数:採用人数


クラスタリング
①従業員数、純資産を複数の範囲に分けて数字or文字に置き換える。
 例えば、従業員数3000以下は「1」、3001〜5000を「2」で置く。
②①で数字に置き換えた二つのカラムを使い、純資産÷従業員数で得た結果を新しいカラム[value]に入れ込む。
③株価と採用人数も①同様に複数の範囲に分けて数字or文字に置き換える。
④数字で複数個の範囲に分けた採用人数を「down」「stay」「up」の3つのグループにまとめる。
説明変数:「value」「株価(決算報告書提出翌日)」
目的変数:採用人数


今後の課題

今回は5つの特徴量のみで行ないましたが、もっと良い特徴量があるかもしれません。 また、データ数が少なく欠損値が多かったため、期待する制度に満たない可能性があります。

精度を向上のためには、特徴量・企業のデータ数を増やすこと、欠損値の補完方法を変えるなど、様々な方法があります。今後はモデルの実装も含め行います。

目次

  • 機械翻訳とは
  • 機械翻訳の手法
  • 現在の機械翻訳の欠点
  • 欠点が改善されると
  • 今後の展望


機械翻訳とは

機械翻訳という言葉を理解するために2つ言葉を定義する。

系列 : 記号の列のことで自然言語処理の世界だと文を構成する単語の列になる。
系列変換モデル : 系列を受け取り、それを別の系列に変換する際の確率をモデル化したもの。系列変換モデルはseq2-seqモデルとも呼ばれている。

この2つの言葉から機械翻訳は、ある言語の文章(系列)を別の言語の文章(系列)に変換する方法論の総称のことをいう。例えば、日本語の文章という系列を英語の文章という別の系列に変えることである。特に、系列変換モデルの考えを使った機械翻訳をニューラル機械翻訳と呼ぶことがある。


機械翻訳の手法

歴史的には、以下のような翻訳方法がある。


ルールベース翻訳

登録済みのルールを適応することで原文を分析し、訳文を出力する機械翻訳の方法。ここでいう「ルール」は、各言語の「文法」に置き換えられる。定めたルールに則っていなければ翻訳ができないが、則ってさえいればしっかりと翻訳可能である。現在は、旧時代的な機械翻訳方法として認識されている。 ルールに基づく機械翻訳の基本になるのはルールである。ルールによる構文解析の仕組みを、ツリーによる機械翻訳の例を挙げる。

まず以下のルール

NP → ART N (名詞句 は 冠詞 名詞 で構成される)
VP → V NP (動詞句 は 動詞 名詞句 で構成される)
S → NP VP (文 は 名詞句 動詞句 で構成される)


を使って以下の英文を解析してみる。

A client sent the form


ルールベース機械翻訳では、辞書もルールとして扱う。理論を考える場合だけでなく、実用的な機械翻訳システムを設計する場合にも辞書をルールとして扱うほうが良いとされている。ここでは、辞書として以下のルールも用意する。

ART → a (冠詞 は a で構成される)
ART → the (冠詞 は the で構成される)
N → client (名詞 は client で構成される)
N → form (名詞 は form で構成される)
V → sent (動詞 は sent で構成される)


まず、原文にある単語それぞれの品詞を判定する。

ART - a
N - client
V - sent
ART - the
N - form


次に、当てはまるルールを探して順次適用する。左端のARTとNに

NP → ART N (名詞句 は 冠詞 名詞 で構成される)


が当てはまるため、左端のARTとNからNPを作れる。

MT_01.png


同様に、右端のARTとNからもNPを作れる。

MT_02.png


次に、

VP → V NP (動詞句 は 動詞 名詞句 で構成される)


を当てはめることができ、VとNPからVPを作れる。

MT_03.png


最後に以下のルール

S → NP VP (文 は 名詞句 動詞句 で構成される)


が当てはまるため、NPとVPからSを作れる。

MT_04-1.png


これ以上適用できるルールはなく、最終的な目標としていた文 (S) を検出できたので、これで解析成功である。最終的に、原文の構造を表すツリーを作ることができる。


用例ベース翻訳

入力文の各部分に対して類似した用例を選択し、それを組み合わせて翻訳を行う。
この方法はほかの方法よりも自然な翻訳文の生成が可能であると考えられている。理由としては、人間も翻訳する際に様々な用例から翻訳をしているからである。また、用例の追加により容易にシ ステムを改善可能である。

しかし、用例ベース翻訳は入力文や用例を解析するのに高精度なものを必要としているが、十分な精度をもつものが存在しなく、用例ベース翻訳は実現されていなかった。現在は木構造により用例ベース翻訳は研究されている。

原文を解析して木構造を作り、その木を置き換えながら翻訳する。
下図のように木構造を作る。

原文: OK button sends the form to the remote server.
訳文: [OK] ボタンはフォームをリモート サーバに送信する。

MT_05.png


このようにして、様々な用例パターンを抽出している。この方法は、日本発祥である。

必ずしも文法に従って原文を解析する必要はないが、ツリー構造を使うと柔軟な翻訳が可能である。
この方法の長所は先ほどのルールベース翻訳のように膨大な量のルールを機械に覚えさせる必要がない点である。


統計翻訳

コンピュータに学習用のコーパスを与え、統計モデ ルを学習させることで訳文を出力させる方法。ルールベース機械翻訳の弱点をカバーするとして、注目された方法である。

具体的には、対訳コーパスという、例えば日本語でよくある言い回し

0001
日: Xではないかとつくづく疑問に思う
英: I often wonder if it might be X.
中: 难道不会是X吗,我实在是感到怀疑。
1000
日: 私はXを視野にしっかり入れています
英: I put more focus on X.
中: 我非常重视X。
2000
日: 彼がレストランで昼食をとる
英: He eats lunch at a restaurant.
中: 他在餐馆吃午饭。


を英語や中国語に翻訳した大量のコーパスから学習をし、評価対象の文を翻訳する方法である。 統計翻訳において統計的モデルを学習するアルゴリズムは、言語に依存しないため、大量の対訳データがあれば多言語化が容易であり、開発コストを抑えることが可能である。


現在の機械翻訳の欠点

系列変換モデルに基づくニューラル翻訳システムの弱点の1つに、語彙数の問題がある。扱う語彙数を多くすると計算量が大きくなりすぎて現実的な速度での学習や評価ができなくなる。
また、語彙数が多くなるということは、語彙選択問題がより難しくなるため、不用意に語彙を増やしても翻訳精度が低下するだけということも起こる。

さらに、イベント名など時間とともに新語が出現するので、本質的に未知語を完全になくすことは不可能である。機械翻訳タスクでは未知語をどのように扱うかは永遠のテーマとなっている。
統計翻訳時代の考え方から、未知語と判定されたものを後処理で何かの語に置き換えるという方法が用いられている。いくつかの論文の実験セクションでは「RnkRep」のような用語を使ってその結果を示して いる。

一方、ニューラル翻訳に移行してからは、新しい考え方も使われるようになった。
1つは、入出力の単位を「単語」ではなく「文字」にしてしまう方法である。「文字」であれば使われる文字集合は事前に網羅できかつ、新語に比べて新文字の出現は限りなく低いことから、増えることはないという仮定ができる。一方、個々の文字選択問題が簡単になっても、系列長は単語の時と比べて圧倒的に長くなるので、そちらで予測誤りが多くなる問題が発生する。

次に、文字単位はあまりにも細かすぎるという考え方から、文字単位と単語単位の丁度中間に相当する方法論として、バイト対符号化という方法も提案されている。この方法はニューラル翻訳を行う前処理とし て、与えられたデータを使い出現頻度が最も大きい文字ペアを1つの文字としてまとめるという処理を事前に決めた語彙数まで繰り返し処理する。これで得られた文字の結合ルールは、未知の文に対しても、得られた順番で適用していけば、必ず一意に同じ符号化された文を獲得するこ とができる。

文字単位、単語単位、バイト対符号化の 3 種類のうち、どれが総合的に優れているかは決着がついていないが、最近はバイト対符号化が良いのではないかということが言われている。


欠点が改善されると...

未知語に関しての欠点が改善されると、扱う語彙数をうまくコントロールした翻訳が可能になる。

扱い語彙数が多くなると計算量が多くなるため、現実的な速度で計算が不可能であったが、語彙数をうまくコントロールし翻訳をすれば、計算速度が速く、語彙選択問題も簡単になることから高精度に翻訳が可能であると考えられる。
さらに、翻訳をするために高性能なコンピューターを必要としていたが、計算量を減らすことで、安価なコンピューターを用いても高性能な翻訳が可能になるだろう。


今後の展望

機械翻訳タスクは、現在の自然言語処理分野の深層学習/ニューラルネットワーク研究の中心的な位置を占めていると考えられている。

多くの研究成果が報告されており、どの技術が最終的に生き残るか現状見極めるのが難しい。しかし、2015年、2016年で、系列変換モデルによるニューラル翻訳の基礎的な理論が出来上がり、統計翻訳よりも有意に良いと認められるに至っている。研究の余地は非常に多く残されている研究領域であり、独自技術を開発する必要があると考えられている。
機械翻訳がさらに発展すると以下のことが実現するだろう。

コストを抑えてスピーディーな翻訳が可能
機械翻訳の最大のメリットとして、よりスピーディーに、コストを抑えた翻訳が可能になったという点が挙げられる。翻訳速度が速い翻訳家に依頼しても、英文の日本語訳の場合、1日1500〜2000語が目安といわれている。しかし、人間が8時間かけて翻訳する作業を、Google翻訳は数十秒足らずで処理してしまう。さらに、翻訳家に翻訳サービスを依頼すると、一文字5円の場合、2000文字の英文の翻訳に10,000円かかるのに対し、Google翻訳なら、100を超える言語を無料で翻訳が可能である。


翻訳結果を文書として残せる
ビジネスの世界では、文書の配布や、保管、管理を行うために記録として残す必要があり、正確さも求められる。こうした場合、文書から別の言語の文書に翻訳できる機械翻訳が適している。ポストエディットという言葉があるが、これは機械翻訳を利用した後に行われる人間の翻訳者による修正作業のことである。機械翻訳が発展したらポストエディットの作業も徐々に減っていくと考えられ、人間が行う作業を効率的に減らすことが可能である。


参考文献

深層学習による自然言語処理 坪井祐太/海野裕也/鈴木 潤・著
ニューラル機械翻訳以前を支えた「ルールベース機械翻訳(RMT)」と「統計的機械翻訳(SMT)」
ルールベース機械翻訳の概要 (4)
用例ベース機械翻訳の概要 (1)
機械翻訳と自動翻訳に違いはある?使い分けはどうすればよい?

こんにちは。

皆さんはFXでお金を稼ぎたいと思ったことはあるでしょうか?もしFXでこれまでの生活を一変させるような額のお金を稼ぐことができたら夢のようですよね?

今回はそんな夢を目指して、為替の値動きを機械学習で予測してみたというお話をしたいと思います。


目次

  1. 概要
  2. 手順
  3. 結果
  4. 今後の課題


1 概要

  • 使用したデータセット:OANDA APIを用いて取得
    https://www.oanda.jp/fxproduct/api
    (デモ口座を開設することにより、無料でAPIを利用することができます)

  • 使用したモデル:LSTM

データセット
米ドル円の2016年9月22日から2020年7月20日までの1000個の日足データを取得し利用します。

スクリーンショット 2020-07-21 14.27.04.png
今回は、open(始値)、close(終値)、high(高値)、low(安値)、volume(取引量)という基本的な特徴量を用います。

LSTMとは?

 LSTMは時系列予測をするためのライブラリです。
LSTM(Long short-term memory)は、RNN(Recurrent Neural Network)の拡張として1995年に登場した、時系列データに対するモデル、または構造の1種です。その名前は、Long term memory(長期記憶)とShort term memory(短期記憶)という神経科学における用語から取られています。 ニューラルネットワークは過去の出来事を考慮することができず、RNNは長い記憶に対応できないという欠点があります。そこで長い過去の記憶を考慮できるように、LSTMが開発されました。 今回は5日分のデータを1セットとしてLSTMで予測をしました。
つまり、5日間の為替レートのデータを1セットとして、それを何セットも学習することで、新しい5日間のデータからその次の為替レートを予測していきます。


2 手順

 今回為替予測をするにあたって行った手順について簡単に説明します。  

  1. データセットの準備
       OANDA APIを用いて取得する

  2. データの加工
      ・データセットの「time」の部分が特殊な形(「ISO 8601」)を日本時間に直す
      ・データを学習データと訓練データに分割する
      ・LSTM用にデータを変換する
       絶対的な為替価格ではなく、どのように為替価格が変化し、どの程度価格が変動するかを見る変化率に直す
      ・PandasのデータフレームからNumpy配列へ変換する

  3. LSTMのモデル構築と学習・予測
      ・機械学習ライブラリのKerasを利用してモデル構築を行う
    (Kerasについてはこちらをご覧くださいhttps://keras.io/ja/
      ・モデルの訓練を行う
      ・作成したモデルを用いて、予測をする


3 結果

 2のところで紹介した手順で為替の予測を行ってみました。結果をチャートにしたものがこちらです。

スクリーンショット 2020-07-31 8.54.42.png
青のラインが実際の為替の値動き、赤が今回予測した為替の値動きです。

どうでしょうか。それっぽいものができていると思いますが、チャートをみてみると最初の方で大きく外しているほか、気になるのが、実際の値動きの後に遅れて予測したものが動いている点です。実際にレートが動いてから予測結果が出るため、エントリーのタイミングを逃してしまう可能性があり、各個人での判断が必要となってしまいます。


4 今後の課題

 今回は一日の為替価格のみのデータで分析をしました。為替の値動きは、様々な経済指標やトランプ大統領の発言、1日の中の時間帯によっても変わっていくので、そのようなニュースの情報やTwitterなどの情報も取り入れたらさらに精度の高いものが出来上がるのではないかと思います。
 FXトレーダーは、自分なりにチャートを分析し、何らかの基準を持ってトレードをしています。彼らのノウハウや経験をうまく機械学習に落とし込めれば、同等、またはそれ以上の精度で予測できるのではないかと個人的には思います。
 引き続き機械学習を用いた為替予測を頑張っていきたいです!

このアーカイブについて

このページには、2020年8月に書かれた記事が新しい順に公開されています。

前のアーカイブは2020年7月です。

次のアーカイブは2020年9月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。