SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

近未来の技術トレンドを先取り! 「Tech-Sketch」出張所

写真共有SNSのユーザーの性別を機械学習で推定するWebアプリケーションをPythonで作ってみよう

近未来の技術トレンドを先取り! 「Tech-Sketch」出張所 第21回

  • このエントリーをはてなブックマークに追加

 本連載ではTIS株式会社が提供している技術ブログ「Tech-Sketch」から「コレは!」というテーマをピックアップし、加筆修正して皆さまにお届けしています。今回はTISのインターンシップで行った「機械学習を活用したWebアプリケーション開発」を取り上げます。

  • このエントリーをはてなブックマークに追加

機械学習(ほぼ)初心者が、Webアプリケーションを作ったキッカケ

 本記事では、機械学習の(ほぼ)初心者である筆者が、TIS株式会社の5daysインターンシップ「機械学習を用いたWebアプリケーション開発」に参加した際に開発したWebアプリケーションについて紹介します。筆者は、学部で情報工学の基礎を学び、現在は都内国立大学大学院に通う大学院生です。これまでにWebアプリケーションの開発経験はなく、機械学習も「なんとなくイメージはできる」程度の理解でした。今回は、開発にPythonを用いました。Pythonの使用経験は2年弱でしたが、機械学習を実装するのは初めてでした。

 開発したアプリケーションのソースコードは、GitHubで公開していますので適宜参照してください。

5daysインターンシップとテーマ設定

 今回のインターンシップでは、機械学習技術を活用したWebアプリケーションを開発するということ以外の制約はなく、開発に用いる言語やテーマは自由でした。そこで、テーマを考える際にSNSからデータ取得することを考えました。私はもともと写真に興味があったので写真共有SNSの"Instagram"に投稿された写真を眺め、

  • 人物が写っている写真を投稿するユーザーは、女性が多いのでは?
  • 男性は食べ物が写っている写真が多いのでは?

という仮説を思いついたので、写真共有SNSの投稿画像からユーザーの性別を推定するWebアプリケーションを開発するテーマに設定しました。もし、ユーザーの性別が分かれば、ユーザーに応じてより適切な広告を表示したりサービスを提供したりすることが可能になります。

 このWebアプリケーションでは、ユーザーがInstagramに何を被写体とした写真を多く投稿しているか、ユーザーが投稿した写真の傾向をもとに性別を推定することを試みます。具体的には、Instagramでユーザーの直近20枚の画像を取得し、画像認識API(AlchemyAPI)を使ってそれらの写真に写っている物体ごとにスコア化して、そのスコアに応じて性別を推定します。

図 今回開発した性別推定アプリケーションのイメージ図
図 今回開発した性別推定アプリケーションのイメージ図

今回用いたプログラミング言語/ライブラリの紹介

使用言語
Python 汎用プログラミング言語。今回は、最新(当時)バージョン3.4.3を使用
Pythonライブラリ(詳細は、後述のGitHubを確認してください)
IPython Pythonを対話的に実行するシェル
IPython Notebook IPythonをWebブラウザ上で実行することができる
scikit-learn 機械学習ライブラリ
Flask Webアプリケーションフレームワーク
API
Instagram API 写真投稿SNSのInstagramをプログラミング言語から呼び出すAPI
AlchemyAPI 画像解析API。画像をこのAPIに入力すると、該当するタグをスコアが出力される。スコアは0から1の範囲で、1に近ければ近いほどそのタグの適合度が高い

開発の流れ

 今回開発するのはInstagramのユーザーIDを入力すると、そのユーザーの性別を推定してくれるWebアプリケーションです。

 まずユーザーが投稿した写真から性別を推定する識別器(モデル)が必要になります。その識別器は、すでに性別が分かっているユーザーの性別と写真の組み合わせを学習データとしてscikit-learnで機械学習を行うことで作成します。その識別器を呼び出すWebアプリケーションを開発します。

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
ユーザー性別推定を行う識別器をつくろう

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
近未来の技術トレンドを先取り! 「Tech-Sketch」出張所連載記事一覧

もっと読む

この記事の著者

yiori(yiori)

2015年現在、大学院修士2年生です。大学院では教育工学を専門として学んでいますが、学部時代は情報系学部に所属し、データ分析やソフトウェアに興味があります。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/8953 2015/09/29 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング