---
# System prepended metadata

title: yahoo ES
tags: [ES, yahoo]

---

# yahoo ES
###### tags: `ES` `yahoo`
### 基本方針
以下のことを意識して書いてみた．
* 志望動機
    * はじめにやりたいことを言う
       → そのやりたいことのためにはこの会社じゃなきゃダメな理由を言う
       →自分はそのやりたいことに関してどのように貢献できるかを言う
       (自分を採用するメリットがあるよということをにおわせる)
       → (以上より，自分はこの会社を志望する)
* 研究や技術とかの説明: 志望動機に対して自分ができることをアピールするようにする．
(Ex. 自分の場合，機械学習ができる．じゃあ，具体的に何ができるの？というのを説明する．)
   * このとき
   課題の事例を説明 
   → その課題を解決するために何をやったか説明
   (=自分の場合，課題に関する最近の論文を読んで，課題を解決するための技術を知り，それを実装した)
   → 課題を解決する前と後の違いを数字を使って説明して，課題解決できたよということを分かりやすくする．
   (=課題解決する前は17%だったが解決後は30%みたいな)
   → (書ける余裕があるならば)(その結果，得られたものは何ですか？を説明)
   という流れで行った．
  
* 志望する会社で大切にされている価値観になぞらえたエピソードを書く 
(バイト，インターン以外の開発経験のところの
【担当役割】【アピールポイント】がそれに相当)
以下，ヤフーの場合
  * 口先だけ課題とかやりたいことをいうのではなく，それを解決する，実現するために本当に何かを実行する力
  * 自分が人を巻き込んで何かやる，人助けを行うなどの交流経験
  * 新しいことや変化が好きであること 
 
## 選考に参加したい領域は何ですか？ 
(領域については https://about.yahoo.co.jp/hr/potential/engineer/ )
データサイエンス 
## 領域の希望理由と興味を持っていること150字以内 
(ヤフーのマイページでは148字)
私は、有害な情報の拡散を未然に防ぐサービスを作ることで、ユーザが不快な思いをせず利用できるWebプラットフォームを作りたいです。そのためには、貴社が持つプラットフォームによる広範で膨大なデータとそれを利活用できる環境が必要であり、私が持つ情報拡散や機械学習の知見で実現できると思うため志望しました。
## 研究内容の説明 500文字以内  

* ＜記入例＞
【キーワード】：データマイニング、ネットワーク分析
研究背景：○○○○
研究目的：○○○○
研究内容：○○○○
実装言語・使用ツール等：Python、CytoScape

(以下の文章はヤフーのマイページでは494字)
* 【キーワード】計算社会科学
   研究背景:フェイクニュースが社会問題となっており、マスメディアのファクトチェックや機械学習による真偽判定などの対策があります。しかし、事実を指摘しても受け入れず、逆に自分の信念を強める人が多いため、有効な対策とは限りません。 
   
   研究目的:フェイクニュースが伝わる過程を数学的にモデル化することで、フェイクニュースの拡散を防止するネットワークの仕組み、ユーザーの加入規約、社会制度の設計のための知見を得ることです。
   
   研究内容:ノードを個人、エッジを個人間の関係としたソーシャルグラフ上で、個人毎の意見、個人間の信頼度と不信度を用いて、フェイクニュースに対する意見が伝わる過程をモデル化しています。提案モデルでは、複数の他人の意見から自分の意見を決定し、他人に伝えるとともに、他人への信頼度と不信度を更新する処理を個々人が行います。実装評価により、先行モデルでは平均44%しか真実と同じ意見を持たなかった集団が平均70%同じ意見を持つようになり、さらに、真実と異なる意見を伝えた人物は信用されなくなることを明らかにしました。
   
   実装言語・使用ツール等: Python



## 過去の技術系アルバイト・インターンシップの経験の概要 最大3つまで
＜アルバイト・インターンシップ経験の概要　記入例＞　
【業務概要】○○○○（守秘義務に反しない範囲で記入してください。）
【開発人数】○○○○
【担当役割】○○○○
【開発言語・技術】○○○○


* 1つ目　タイ国立電子コンピュータ技術研究センターでのインターン
【業務概要】口コミマーケティングの効率化を目的とする影響力最大化問題に取り組みました。この問題は、ソーシャルグラフに対して、最も多くのユーザーに影響を与えることのできたインフルエンサーの集合を求める問題です。
業務としては、影響力最大化問題の基本論文を読み、口コミ方法に関するモデルとインフルエンサーの集合を求めるアルゴリズムの実装と評価実験を行い、基本論文のアルゴリズムの計算効率が悪いことを明らかにしました。その上で、インフルエンサーの計算効率を改良する論文を読み、そのアルゴリズムを取り入れることで、1週間経過しても計算が終了しなかったものを1時間で終了するように短縮させました。このアルゴリズムをTwitterとFacebookの実際のソーシャルグラフに適用し、最も多くのユーザーに影響を与えたインフルエンサーを求める処理を実装し、評価実験を行いました。
【開発人数】1人（研究所の研究員の指導の下、1人で開発しました。）
【担当役割】はじめに、指導員に課題と基本論文を与えていただいたうえで、基本論文を理解し、論文内容のプレゼンテーションを行いました。次に、論文のアルゴリズムを実装し、評価実験を行い、計算効率が悪いことを明らかにしました。そして、計算の効率化のための論文を自ら調査し、アルゴリズムを理解し、実装しました。このアルゴリズムをTwitterとFacebookの実際のソーシャルグラフに適用するためにNewtorkxというライブラリを利用して評価実験を行い、その結果をmatplotlibにより可視化しました。
【開発言語・技術】言語: Python 技術:ライブラリとしてNetworkx，numpy，matplotlibを利用

* 2つ目 シンクタンクでデータ分析のアルバイト
【業務概要】医療データに対してロジスティック回帰とランダムフォレストという機械学習モデルによる回帰分析を行うことで、虐待が行われる要因を分析し、その結果をステークホルダーに向けて文章化しました。
【開発人数】1人 (アルバイト先の上司の指導方針のもと開発を行いました．)
【担当役割】データ数が膨大であったため、データの読み込みを並列化するdaskというライブラリを使って効率化させました。次に、医療データの欠損値を削除しました。欠損値を削除したデータに対して、虐待が行われたかどうかを表す変数を目的変数として、ロジスティクス回帰とランダムフォレストで回帰分析を行いました。この結果から、親にどのような要因があることで虐待が起こりやすくなるのか、逆にどのような要因があれば虐待が起こりにくくなるのかを判明させ、その結果をステークホルダーに向けて文章として報告しました。
【開発言語・技術】言語: Python 技術: ライブラリとして pandas、dask、scikit-learnを利用

## ↑以外の開発経験を最大3つ 50文字以上1000字以内
* ＜制作物の概要　記入例＞
【概要】
【作業期間】
【関係者の人数】
【担当役割】
【開発言語・技術】
【参考URL】
【きっかけ】
【アピールポイント】

* (趣味，ハッカソン，研究みたいなバイトやインターン以外の開発経験だと思ったので以下の通りに記入)

* 1つ目 (ヤフーのマイページ上で989文字)
【概要】学部4年の時に、Wi-Fi の基地局のMAC アドレスから得られる移動履歴から訪日外国人の性別，年代を機械学習および深層学習により推定するプログラムを開発しました。
【作業期間】8か月
【関係者の人数】3人 (研究室の指導教員，研究室の先輩，私)
【担当役割】
機械学習では、16万人の外国人が日本全国を訪問した回数、滞在日数、訪問した月、入国と出国を行った場所を特徴量として、XGBoostやロジスティック回帰などの推定モデルにより性別と年代を推定しました。このとき、高齢者はデータ数が少なく，若者のデータ数が多いというデータの偏りが原因で若者の推定精度のみが高くなるという問題が生じました。この問題に対する解決策に対する論文の調査を行ったところ、BalancedBaggingという技術が最適であることが分かり、適用しました。深層学習では、ニューラルネットワークによる推定モデルを構築し、機械学習の時と同様の処理を行いました。
【開発言語・技術】言語: Python 技術 XGBoost、BalancedBagging ライブラリ: scikit-learn，numpy、pandas、matplotlib、 imbalaced-learn、skpot、Keras
【参考URL】https://github.com/Knt44kw/Attribute-Estimation-Foreigner
【きっかけ】
学部2年のころから本やKaggleで機械学習、深層学習を自主的に勉強していて、この経験を研究でも活かしたいという旨を研究室の指導教員に伝えたことがきっかけです。
【アピールポイント】
  1. BalancedBaggingにより推定精度を向上させたことがアピールポイントだと思います。具体的には、各性別の推定精度が平均54%だったものが平均65%，年齢が10 代から60 代の6 年代に対して，各年代の推定精度が平均17%だったものが平均28%に向上させることができました。深層学習では，性別の推定精度を平均65%，年齢については平均30%に向上させることができました。
  2. 課題解決のために、積極的に論文や技術を調べる行動力があること、そして、課題解決に最適な技術を選び取り、実際にその技術を扱うことのできる力があることがアピールポイントだと思います。

* 2つ目　マイページ上で 955字
【概要】大学院の講義で、ソーシャルグラフにより構成される友人関係をベクトル化するnode2vecという技術により， Facebook上のユーザーの性別と教育形態(学校教育を受けたのか、通信教育を受けたのか、個人学習を行ったのか)を機械学習で推定するプログラムを作成しました。
【作業期間】3か月
【関係者の人数】3人 (私と友人2人)
【担当役割】
アイディアの提案とそれを実現させるための解決策を考え、アイディアをメンバーが納得できるように説明を行って、具体的な実装方針を定めました。私は、その方針の中核である推定部分のプログラムを作成しました。具体的には、node2vecでベクトル化したデータに対してBalancedBaggingを適用しXGBoostとロジスティクス回帰により推定するプログラムを作成しました。
【開発言語・技術】開発言語: Python 技術 node2vec, XGBoost, BalancedBagging ライブラリ: scikit-learn、numpy、pandas、imbalaced-learn、 networkx 
【参考URL】https://github.com/Knt44kw/node2vec
【きっかけ】もともと興味のあった機械学習と大学院の研究で行うようになったネットワーク分析を融合した面白いアイディアがないかと考えたときに、ソーシャルグラフ上の友人関係をベクトル化できるnode2vecという技術を論文で知り、これを機械学習に適用できないかと思いついたことがきっかけです。
【アピールポイント】
  1. node2vecを使ったことで、SNS上の投稿文だけではなく、友人関係からも個人の属性を推定できることを示したことがアピールポイントだと思います。具体的には、性別の推定精度が平均62%、学校教育を受けたかどうかの推定精度が平均61%、通信教育を受けたかどうかの推定精度が平均62%，個人学習を行ったかどうかの推定精度が平均71%正しく推定することができました。
  2.  アイディアを企画し、他人に簡潔に伝えることのできる力があること、そして、アイディアを実現可能な水準に落とし込めるまで方針を考え、それを実行できる力がアピールポイントだと思います。

* 3つ目　マイページ上で995字
【概要】学部3年の時の講義で、遺伝的アルゴリズムによる生態系シミュレーションを実装しました。具体的には、檻の中にいる豚に食べ物を与えたときに、様々な大きさの豚のうちどの大きさの豚が生き残りやすいか検証するプログラムを作成しました。ここで、大きな豚は遅く動くが食べ物を見つけやすく、小さな豚は早く動くが食べ物を見つけにくいと仮定し、豚はある確率で生殖を行うことで新たな豚を生み出すものとしました。
【作業期間】2か月
【関係者の人数】3人(私と友人2人)
【担当役割】シミュレーションのアイディア提案とそれを実現させるための方針を考え、メンバーが納得できるように説明を行いました。そして、豚の大きさに対して遺伝的アルゴリズムを実装し、そのときの豚の動きの速さや食べ物の見つけやすさを可視化しました。また、生殖の処理も実装しました。
【開発言語・技術】開発言語:Processing 技術:遺伝的アルゴリズム
【参考URL】https://github.com/Knt44kw/Ecosystem_Simulation
【きっかけ】講義は、遺伝的アルゴリズムについて学び、それに関するプログラムを発表するという内容で、講義を通して環境に適した個体が生き残るようになるという意味の適者生存という言葉が印象に残りました。これをモデル化しようと思い、遺伝的アルゴリズムの結果を分かりやすく可視化したいと思いました。そこで，適者生存の身近な例として動物が食べ物を追い求める場合を想定すれば分かりやすく表現できると思ったことがきっかけです。
【アピールポイント】
  1. シミュレーションの結果から面白い考察ができたことがアピールポイントだと思っています。
結果としては、中間の大きさの豚が生き残るようになりました。この原因は大きい豚は動きが遅いために肉にたどり着く前に死ぬこと，小さい豚は，体の小ささから肉を見つけることができず死ぬという事実があるからです。また、豚の生殖の頻度を上げると、豚が過剰に生まれるため、肉の供給が追いつかず、いずれの大きさの豚でも死ぬことも明らかになりました。
  2. Q6-2の【アピールポイント】2と同様に、アイディアを企画し、他人に簡潔に伝える力があること、そして、アイディアを実現可能な水準に落とし込めるまで方針を考え、それを実行できる力がアピールポイントだと思います。


## GitHubの中で自信のあるプロジェクトやコードのURL
大学院1年の時に、タイ国立電子コンピュータ技術研究センターで1か月半インターンシップを行いました。インターンシップでは口コミマーケティングの効率化を目的する影響力最大化問題に取り組み、口コミ方法に関するモデルとインフルエンサーの集合を求めるアルゴリズムをPythonで実装しました。そのときのコードは以下のURLの通りです。
https://github.com/Knt44kw/SocialNetworkAnalysis/tree/master/influence-maximization

## GitHubの中で自信のあるプロジェクトやコードのアピールポイント (50文字以上 500字以内) 

(以下の文章はマイページ上で487文字)

計算効率の大幅な改善と効果的な口コミ方法をモデル化したことがアピールポイントだと思います。
はじめに口コミ方法の説明をすると、インフルエンサーの口コミの方法には線形閾値モデルと独立カスケードモデルというモデルがあります。線形閾値モデルでは複数のインフルエンサーが一人に口コミを行う様子を、独立カスケードモデルではインフルエンサーが片っ端から友人に口コミを行う様子をモデル化しています。そして、インフルエンサーを推定する方法として貪欲法があります。これらのモデルと方法をPythonで実装しました。しかし、1週間経過してもプログラムが終了しませんでした。課題解決のために線形閾値モデルにはLDAG、独立カスケードモデルには次数割引アルゴリズムを実装しました。その結果、計算が1時間以内に終わるようになりました。さらに、独立カスケードモデルではほぼすべてのユーザーが影響を受けたという結果から口コミマーケティングでは友人に片っ端から宣伝すると効果的であることを明らかにしました。実装ではLDAGと次数割引アルゴリズムをプログラムの形に落とし込めるまで理解することに苦労しました。

## 備考
* 必須項目は志望動機とプログラミング経験があるかないか，の2つだけ．技術に関するアピールは開発経験があれば，書いてねというノリ

その他，聞かれること
* どんなプログラミング言語が使えるのか，そしてそのレベルは？
* AtCoder，Codeforces，Topcoderといった競プロ関連のアカウントがあるか，そしてその最高レート
* 技術系イベントに登壇して，プレゼンをした経験
* Qiita，はてなブログ，本などで技術系の情報を発信しているか．していれば，そのURLや本の名前などの詳細を教えて
* GitHub上に転がっているOSSにプルリクエストを出して，それがマージされた経験
* ハッカソンなどの技術系の大会で表彰された経験
* 査読付きの学会でポスター発表，口頭発表，論文誌の投稿をしたことがあるか．
* 社員紹介(社員推薦に相当，これだけで内定できるほどの強い効力はない) 社員の名前，社員のメールアドレス，自分との関係を書く
* TOEICのスコア
* 大学の成績