TensorFlow
TensorFlowをさわってみたメモ。うちのMacBookはAirなので性能よくないけどひと通りはさわってみれることを期待して、セットアップから実施してみる。
うちの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でハローワールドを実行してみる。
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!'
できた。
集合知(その3)
10、予測モデルをつくる
一般的な3つの分類アルゴリズム
回帰アルゴリズム
決定木
決定木で作成されたモデルは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の学習
- 隠れ層での教師なし学習。通常ガウスクラスタの学習にはk平均法アルゴリズム
- 出力層での教師あり学習。出力層での学習は誤差逆伝搬法か逆行列演算のどちらか。
- ガウスクラスタから出力ノードへの結合重みは、線形回帰を用いて学習
学習速度が断然早い
WEKA
weka.classifiers.functions.LinearRegression
weka.classifiers.functions.MultilayerPerceptron
weka.classifiers.functions.RBFNetwork
集合知
集合知の本を読んでいってメモ
- 作者: Satnam Alag,堀内孝彦,真鍋加奈子,真鍋和久
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2009/03/27
- メディア: 大型本
- 購入: 13人 クリック: 295回
- この商品を含むブログ (64件) を見る
ソース
SBクリエイティブ:【ダウンロード】『集合知イン・アクション』
2、ユーザインタラクションの学習
集合知の収集
ユーザーとアイテム
コンテンツベース分析と協調フィルタリング
知の表現
類似度
3、タグづけ
スタッフによるもの |
ユーザによるもの |
自動生成によるもの |
タグづけの指針
- 可能であればタグ辞書を構築する。
- スタッフによるタグのみを扱うシステムでは、タグの重み付けはそのアイテムにつけられたタグの個数と、タグのIDFによって決まる。
- 3種のタグ生成源を混在させて用いることができる。
- タグづけのときに類義語辞書を作成すること。
ユーザによるタグづけから知識を抽出する例。
- 関連するアイテムはどれとどれ?
- あるユーザが関心を持つであろうアイテムはどれ?
- 新しいアイテムがあらわれたときに、それに関心を持つユーザは誰?
類似したタグを探す
- 潜在的意味インデクシング(LSI:Latent Semantic Indexing)による次元削減。
- LSIは類義語、多義語の問題を解決するために使われてきた手法。
4、コンテンツから知識を取り出す
コンテンツの分類
記事 |
商品 |
分類語 |
ブログ |
Wiki |
グループ機能、掲示板 |
写真と動画 |
投票 |
検索キーワード |
プロファイルページ |
ツールと帳票 |
チャットログ |
レビュー |
3行広告 |
リスト |
知識を抽出する
トークン化 | ターム取り出し。 |
正規化 | タームやフレーズを小文字にする。 |
ストップワードの除去 | 頻出するタームを除去。 |
ステミング | 複数形に対処するために、タームを語幹に変換する。 |
集合知の導出
属性の分類
連続(数量) | 実数をとる | 連続 | サイトを見ていた時間 |
順序 | 属性値と属性値のあいだには順序が存在する | 離散または連続 | 長、中、短 |
名義 | 属性ちと属性値のあいだには順序が存在しない | 離散 | 男、女 |
推薦
おすすめ
ブックマークから
(未検索時に表示)
あなたの好みに似ている人
ブックマークから
✖️✖️を見た人はこれも見ています
閲覧ログから
他人のブックマークが見れるとよい
入門ソーシャルデータ
Graphvis
Protovis
https://github.com/ptwobrussell/Mining-the-Social-Web
集合知インアクション
集合知プログラミング