gocha124の日記

ごちゃごちゃ書きます

TensorFlow

TensorFlowをさわってみたメモ。うちのMacBookAirなので性能よくないけどひと通りはさわってみれることを期待して、セットアップから実施してみる。

うちのMacにはAnacondaがインストールしてあるので、そこに追加でセットアップ。

Installing TensorFlow on Mac OS X  |  TensorFlow

 

手順通りにセットアップできた。Pythonは3.6なので3.6のをインストール。

conda create - tensorflow

source activate tensorflow

pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-1.2.0-py3-none-any.whl

 

 

gocha124noMacBook-Air:~ cha124$ conda create -n tensorflow

Fetching package metadata ...........

Solving package specifications: 

Package plan for installation in environment /Users/cha124/anaconda/envs/tensorflow:

 

Proceed ([y]/n)? y

 

#

# To activate this environment, use:

# > source activate tensorflow

#

# To deactivate this environment, use:

# > source deactivate tensorflow

#

 

gocha124noMacBook-Air:~ cha124$ source activate tensorflow

(tensorflow) gocha124noMacBook-Air:~ cha124$ pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-1.2.0-py3-none-any.whl

Collecting tensorflow==1.2.0 from https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-1.2.0-py3-none-any.whl

  Downloading https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-1.2.0-py3-none-any.whl (33.6MB)

    100% |████████████████████████████████| 33.6MB 17kB/s 

Collecting markdown==2.2.0 (from tensorflow==1.2.0)

  Downloading Markdown-2.2.0.tar.gz (236kB)

    100% |████████████████████████████████| 245kB 926kB/s 

Collecting six>=1.10.0 (from tensorflow==1.2.0)

  Downloading six-1.10.0-py2.py3-none-any.whl

Collecting protobuf>=3.2.0 (from tensorflow==1.2.0)

  Downloading protobuf-3.3.0.tar.gz (271kB)

    100% |████████████████████████████████| 276kB 845kB/s 

Collecting bleach==1.5.0 (from tensorflow==1.2.0)

  Downloading bleach-1.5.0-py2.py3-none-any.whl

Collecting werkzeug>=0.11.10 (from tensorflow==1.2.0)

  Downloading Werkzeug-0.12.2-py2.py3-none-any.whl (312kB)

    100% |████████████████████████████████| 317kB 969kB/s 

Collecting wheel>=0.26 (from tensorflow==1.2.0)

  Downloading wheel-0.29.0-py2.py3-none-any.whl (66kB)

    100% |████████████████████████████████| 71kB 1.4MB/s 

Collecting html5lib==0.9999999 (from tensorflow==1.2.0)

  Downloading html5lib-0.9999999.tar.gz (889kB)

    100% |████████████████████████████████| 890kB 538kB/s 

Collecting backports.weakref==1.0rc1 (from tensorflow==1.2.0)

  Downloading backports.weakref-1.0rc1-py3-none-any.whl

Collecting numpy>=1.11.0 (from tensorflow==1.2.0)

  Downloading numpy-1.13.0-cp36-cp36m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl (4.5MB)

    100% |████████████████████████████████| 4.5MB 120kB/s 

Collecting setuptools (from protobuf>=3.2.0->tensorflow==1.2.0)

  Downloading setuptools-36.0.1-py2.py3-none-any.whl (476kB)

    100% |████████████████████████████████| 481kB 835kB/s 

Building wheels for collected packages: markdown, protobuf, html5lib

  Running setup.py bdist_wheel for markdown ... done

  Stored in directory: /Users/cha124/Library/Caches/pip/wheels/b9/4f/6c/f4c1c5207c1d0eeaaf7005f7f736620c6ded6617c9d9b94096

  Running setup.py bdist_wheel for protobuf ... done

  Stored in directory: /Users/cha124/Library/Caches/pip/wheels/1b/42/a0/4c7343df5b629ec9c75655468dce7652b28026896b0209ba55

  Running setup.py bdist_wheel for html5lib ... done

  Stored in directory: /Users/cha124/Library/Caches/pip/wheels/6f/85/6c/56b8e1292c6214c4eb73b9dda50f53e8e977bf65989373c962

Successfully built markdown protobuf html5lib

Installing collected packages: markdown, six, setuptools, protobuf, html5lib, bleach, werkzeug, wheel, backports.weakref, numpy, tensorflow

Successfully installed backports.weakref-1.0rc1 bleach-1.5.0 html5lib-0.9999999 markdown-2.2.0 numpy-1.13.0 protobuf-3.3.0 setuptools-36.0.1 six-1.10.0 tensorflow-1.2.0 werkzeug-0.12.2 wheel-0.29.0

 

 

記述に従って、pythonでハローワールドを実行してみる。

python

import tensorflow as tf

hello = tf.constant('Hello, TensorFlow!')

sess = tf.Session()

print(sess.run(hello)) 

 

(tensorflow) gocha124noMacBook-Air:~ cha124$ python

Python 3.6.0 |Anaconda 4.3.1 (x86_64)| (default, Dec 23 2016, 13:19:00) 

[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)] on darwin

Type "help", "copyright", "credits" or "license" for more information.

>>> import tensorflow as tf

>>> hello = tf.costant('Hello, TensorFlow!')

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

AttributeError: module 'tensorflow' has no attribute 'costant'

>>> hello = tf.constant('Hello, TensorFlow!')

>>> sess = tf.Session()

2017-06-26 10:04:15.851049: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.2 instructions, but these are available on your machine and could speed up CPU computations.

2017-06-26 10:04:15.851146: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX instructions, but these are available on your machine and could speed up CPU computations.

2017-06-26 10:04:15.851270: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX2 instructions, but these are available on your machine and could speed up CPU computations.

2017-06-26 10:04:15.851324: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use FMA instructions, but these are available on your machine and could speed up CPU computations.

>>> print(sess.run(hello))

b'Hello, TensorFlow!'

 

 

できた。 

 

 

easyrec

機械学習のライブラリで、レコメンドを何かで試しておきたくて、easyrecをダウンロード。

 

eclipseをインストール。

gitを使ってeasyrecのリポジトリをダウンロード。

easyrec / Git / [e2f9e6]

eclipseのgitパースペクティブでeasyrecを取り込み。

easyrecのプロジェクトがコンパイルエラー。

前提ライブラリが無いためのため、mavenで設定。

中途半端だけど、ここまで。やりたいことはMahoutでやってみる。

 

MavenのプロジェクトをEclipseにインポートする - digital matter

集合知(その3)

10、予測モデルをつくる

一般的な3つの分類アルゴリズム

回帰アルゴリズム

  • 線形回帰
  • 多層パーセプトロンMLP:Multi-layer perceptron)
  • 動径基底関数(RBF:Radial basis function) 

決定木

決定木で作成されたモデルはif-thenルール。

情報エントロピー

  • 事例を全て正、または負に分類する属性は完全。エントロピー=(1,0)=0。
  • 事例を、等しく、2つに分ける属性は、エントピー=(1,1)=1。

情報利得

  • 1つ目の属性でデータを分割した時の情報エントロピーの減少=情報利得

ナイーブベイズ分類

確率論の基本的な概念。ある出来事が起こる確率は、0から1の間の数値。

数値が高いほど、その出来事が起こる確率も高い。

確率=Pr:probability

ベイズの定理

Pr{ A and B } = Pr{ A } Pr{ B | A } = Pr{ B } Pr{ A | B }

条件付き独立性を仮定して、事例ごとに予測をまとめたのがナイーブベイズ分類器?と理解。 

ビリーフネットワーク

ビリーフネットワークは、ナイーブベイズ分析をグラフを用いて表記したもの

形式的には非循環有向グラフ(DAG:directed acyclic graph)。ノードは確率変数、ノード間のリンクは親と子のあいだの条件付き依存関係をあらわす。非循環有向ネットワークとも呼ばれる。

各ノードは親ノードがもたらす影響を数値化した条件付き確率表(CPT:conditional probablity table)を持つ。

 

単結合型と複結合型

単結合ネットワーク向けの推論アルゴリズム

ベイズ法にもとづく確率の解釈

  • 確率は一般的には「ある出来事が起こる頻度をあらわす」だが、
  • ベイズ的解釈・主観的解釈は「ある出来事が起こるだろうと、ある人が信じる度合い」である

WEKA

分類器クラス

決定木、J48

weka.classifiers.trees.J48

ナイーブベイズ

weka.classifiers.bayes.NaiveBayesSimple

ベイズネット

weka.classifiers.bayes.BayesNet

 

回帰

線形回帰

多層パーセプトロンMLP

入力は第1層の各ノードに入る

1つのノードからの出力は2段階の演算で決定される

  • ノードの各入力値に重みを掛けた値を合計
  • この値を非線形活性化関数を使ってノードの出力値に変換

活性化関数

  • シグモイド(sigmoid)や双曲線正接関数(tan hyperbolic function)

各ノードには閾値があり、ノードが出力するには入力と重みの積の総和が閾値を超える必要がある

通常、ニューラルネットワークの学習

  • 誤差逆伝搬(back-propagation)アルゴリズムが使われる
  • このアルゴリズムは勾配探索法(gradient search)を用いて、学習データと予測値の二乗誤差の和が最小になるように、ネットワークの重みを探索。

通常、局所的な最適解に収束するため、大域的な最適解に収束する保証はない

データを過学習する危険があるので、交差検定(cross-validation)で確認する

動径基底関数(RBF)

RBFは2層で構成。

  • 入力空間から隠れユニット空間への変換は非線形
  • 隠れユニット空間から出力空間への変換は線形

隠れノード

出力層ノード

RBFの学習

学習速度が断然早い

WEKA

weka.classifiers.functions.LinearRegression

weka.classifiers.functions.MultilayerPerceptron

weka.classifiers.functions.RBFNetwork

 

集合知(その2)

7、データマイニングとは

学習アルゴリズム

学習の種類 アルゴリズム
予測モデル 決定木
ニューラルネットワーク
回帰
ベイジアンビリーフネットワーク
データ分析やパターン抽出の自動化 k-meansクラスタリング
階層的クラスタリング
密度ベースのクラスタリング

予測モデルの種類

予測される属性 予測モデル 問題
カテゴリ値 分類器(classification) 分類問題
連続値 リグレッサー(regresor) 回帰問題

集合知

集合知の本を読んでいってメモ 

集合知イン・アクション

集合知イン・アクション

 

ソース

SBクリエイティブ:【ダウンロード】『集合知イン・アクション』

2、ユーザインタラクションの学習

集合知の収集

ユーザーとアイテム

  • アイテムは記事、写真、動画など
  • アイテムはメタデータを持つ
  • メタデータはキーワード、タグ、評価、属性など
  • メタデータの情報源は属性ベース、コンテンツベース、ユーザアクションベース

コンテンツベース分析と協調フィルタリング 

知の表現

類似度

  • コサインベースの類似度計算は、ベクトルの内積
  • 相関ベースの類似度計算は、ピアソンの相関係数r。-1〜1。
  • 調整コサインベースの類似度計算。

 

3、タグづけ

スタッフによるもの
ユーザによるもの
自動生成によるもの

タグづけの指針

  • 可能であればタグ辞書を構築する。
  • スタッフによるタグのみを扱うシステムでは、タグの重み付けはそのアイテムにつけられたタグの個数と、タグのIDFによって決まる。
  • 3種のタグ生成源を混在させて用いることができる。
  • タグづけのときに類義語辞書を作成すること。

ユーザによるタグづけから知識を抽出する例。

  • 関連するアイテムはどれとどれ?
  • あるユーザが関心を持つであろうアイテムはどれ?
  • 新しいアイテムがあらわれたときに、それに関心を持つユーザは誰?

類似したタグを探す

4、コンテンツから知識を取り出す

コンテンツの分類

記事
商品
分類語
ブログ
Wiki
グループ機能、掲示板
写真と動画
投票
検索キーワード
プロファイルページ
ツールと帳票
チャットログ
レビュー
3行広告
リスト

 知識を抽出する

トークン化 ターム取り出し。
正規化 タームやフレーズを小文字にする。
ストップワードの除去 頻出するタームを除去。
ステミング 複数形に対処するために、タームを語幹に変換する。

集合知の導出

属性の分類

連続(数量) 実数をとる 連続 サイトを見ていた時間
順序 属性値と属性値のあいだには順序が存在する 離散または連続 長、中、短
名義 属性ちと属性値のあいだには順序が存在しない 離散 男、女

 

推薦

おすすめ

ブックマークから

(未検索時に表示)

 

あなたの好みに似ている人

ブックマークから

 

✖️✖️を見た人はこれも見ています

閲覧ログから

 

他人のブックマークが見れるとよい

 

入門ソーシャルデータ

Graphvis

Protovis

https://github.com/ptwobrussell/Mining-the-Social-Web

 

集合知インアクション

集合知プログラミング