Amazon Machine Learning その① そもそも機械学習とは。Amazon Machine Learningとは
最近の流行りのビッグデータとか機械学習とかIoTとかAIとか勉強したいなーって前々から思ってたので、今回は表題の通り、Amazon Machine Learningについて学習します。
まずはAmazon Machine Learningがどういうサービスかの調査
参考にしたページ:
AWS再入門 Amazon Machine Learning編 | Developers.IO
そもそも機械学習とは、その名の通り機械(≠ロボット)に学習をさせて、その学習結果を活用すること。
もうちょっと具体的に言うと機械に大量のデータを読み込ませることによって、そのデータ内に潜むパターンを発見(これを学習という)させることにより、その学習した結果を新たなデータにあてはめることで、パターンにしたがって将来を予測すること。
更に分かりやすくするために具体例を挙げるとディズニーの日毎の入場者数,曜日,天気,気温あたりを100日分くらい読み込ませておきます。
すると、祝休日は入場者数が多いとか、気温が寒すぎたり暑すぎたりする日は入場者数が少ないとかのパターンを機械が発見してくれて、それによって3日後とかの天気予報と曜日とを入力しておけば入場者数を予測してくれる、みたいな感じです。
今のディズニーの例で挙げたような入力データから数値の予測を行う場合には"回帰"と呼ばれる学習手法を使うことになりますが、Amazon Machine Learningではそれ以外にも"二項分類"と"多項分類"という学習手法を使用できるようです。
それぞれ簡単に説明すると以下のようなものです。
- 二項分類
- 結果がYesかNoの2択(○と×でもいいです)のどちらかで表すことができるもの。 例えば、花子さんって名前を入力したときに、その名前が女性らしい名前か男性らしい名前かを判断するような機能です。
- 多項分類
- 結果が複数パターンの中から選択されるもの。ただし、有限な範囲で。 例えば、(ネットショッピングの)Amazonでいう『この商品はこんな商品も買っています。』みたいな感じで関連性をみつける機能って感じですかね。 ・・・ちゃんと理解してないので違ってたらすみません。m( )m
- 回帰
- 先ほどのディズニーのように入場者数を予測したりと、数値を予測するもの。
単純に考えると
簡単 二項分類 > 多項分類 > 回帰 複雑
であって、つまり精度も 二項分類 > 多項分類 > 回帰 になりそうな気がするんだけどどうなんだろうなー
次回あたりからMachine Learningを使っていきたいと思います。
CentOS7にnkfをインストールする
普通にyum install nkfじゃインストールできなかったので記事化。
普通にやるとこうなりました。
[takuya@localhost kabu]$ sudo yum install nkf [sudo] password for takuya: 読み込んだプラグイン:fastestmirror Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast base | 3.6 kB 00:00 extras | 3.4 kB 00:00 updates | 3.4 kB 00:00 (1/2): extras/7/x86_64/primary_db | 166 kB 00:00 (2/2): updates/7/x86_64/primary_db | 9.1 MB 00:13 Determining fastest mirrors * base: ftp.iij.ad.jp * extras: ftp.iij.ad.jp * updates: ftp.iij.ad.jp パッケージ nkf は利用できません。 エラー: 何もしません [takuya@localhost kabu]$ cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core)
『利用できません。』だけじゃなくてなんで利用できないのかも教えて欲しいですね。
まあ答えを言ってしまうとCentOS7のデフォルトbaseリポジトリにはnkfが入っていないんだそうで。
どっかからソースコードを拾ってきてコンパイルしてもいいんですが、CentOS6用のパッケージが利用できるようなので利用できるものは使っていく方針で。
yum localinstall -y http://mirror.centos.org/centos/6/os/x86_64/Packages/nkf-2.0.8b-6.2.el6.x86_64.rpm でインストールできます。
[takuya@localhost kabu]$ sudo yum localinstall -y http://mirror.centos.org/centos/6 /os/x86_64/Packages/nkf-2.0.8b-6.2.el6.x86_64.rpm [sudo] password for takuya: 読み込んだプラグイン:fastestmirror nkf-2.0.8b-6.2.el6.x86_64.rpm | 110 kB 00:12 /var/tmp/yum-root-t93DBp/nkf-2.0.8b-6.2.el6.x86_64.rpm を調べています: 1:nkf-2.0.8b-6.2.el6.x86_64 /var/tmp/yum-root-t93DBp/nkf-2.0.8b-6.2.el6.x86_64.rpm をインストール済みとして 設定しています 依存性の解決をしています --> トランザクションの確認を実行しています。 ---> パッケージ nkf.x86_64 1:2.0.8b-6.2.el6 を インストール --> 依存性解決を終了しました。 依存性を解決しました ================================================================================ Package アーキテクチャー バージョン リポジトリー 容量 ================================================================================ インストール中: nkf x86_64 1:2.0.8b-6.2.el6 /nkf-2.0.8b-6.2.el6.x86_64 241 k トランザクションの要約 ================================================================================ インストール 1 パッケージ 合計容量: 241 k インストール容量: 241 k Downloading packages: Running transaction check Running transaction test Transaction test succeeded Running transaction インストール中 : 1:nkf-2.0.8b-6.2.el6.x86_64 1/1 検証中 : 1:nkf-2.0.8b-6.2.el6.x86_64 1/1 インストール: nkf.x86_64 1:2.0.8b-6.2.el6 完了しました! [takuya@localhost kabu]$
で、無事インストールができたのでコマンドとして利用できます。
[takuya@localhost kabu]$ nkf --guess 1301-T Shift_JIS (CR)
windows10にアップグレードしてからVirtual Boxが起動しなくなった
windows10へのアップグレード後、VirtualBoxが起動しなくなってました。
タスクマネージャで監視してると、VirtualBox.exeの実行後、プロセスが起動して1秒程度で死亡してる感じ。
ちなみにGUIは全く表示されません。
VirtualBox Host-Only Ethernet
原因を探しているとネットワーク接続にVirtualBox Host-Only Ethernetが無くなっていることを発見。
VirtualBoxのインストーラ使ったrepairしても修復されなかったので、アンインストール→インストールを行ったら無事に上記のネットワークが作成されました。
この状態でVirtualBox.exeを実行すると、VirtualBoxが起動され・・・あれ、起動されない。
うーん・・・
driverのインストール
次に、driverを改めてインストールしてみることに。
C:\Program Files\Oracle\VirtualBox\drivers のサブフォルダ配下にある拡張子がinfのファイルを片っ端から
右クリック→インストール
全部やってみたけど、やっぱりだめ・・・
VBoxHeadless.exeを実行
VBoxHeadless.exeを実行してみたところ、こんなメッセージが出力された。
"RTLdrOpenWithReader failed: unknown status -626"で検索してみるが、あまり有益な情報はみつからない
最新版のVirtualBoxをダウンロード
使おうとしてたVirtualBoxのインストーラは昔ダウンロードしたものだったので、念のために最新版をダウンロードして試してみる。
もちろん旧バージョンはアンインストールしてからね。
Downloads – Oracle VM VirtualBox
↑のURLからwindows用のインストーラをダウンロードしてポチポチボタン押してインストールを完了させると・・・
え、で、できてしまった。。。
色々と調べておいてとても格好の悪いことに"最新バージョンをインストーラを実行する"というとても初歩的な方法で解決しました。
もしかしたら今まで持ってたインストーラはWindows10に対応してないインストーラだったのかもね。はははー
エンジニアとして情けない結末ですがこれで問題は解決です。
対技巧 角落ち 下手
下手(めりけん向かい飛車) vs 上手(居飛車)
角落として貰ってこれだけ苦戦するって技巧つええよ
53手目は9四飛より7二飛でよかったのでは
開始日時:2016/11/13 16:27:10 手合割:角落ち 下手:あなた 上手:Gikou 20160606 △8四歩 ▲7六歩 △6二銀 ▲7八銀 △8五歩 ▲7七角 △4二玉 ▲6六歩 △3二玉 ▲6七銀 △2二玉 ▲7五歩 △1二香 ▲8八飛 △5一金右 ▲6五歩 △1一玉 ▲7六銀 △2二銀 ▲3八銀 △5四歩 ▲3六歩 △5三銀 ▲3七銀 △4二金右 ▲4六銀 △3一金 ▲5六歩 △3二金寄 ▲4八玉 △1四歩 ▲1六歩 △2四歩 ▲6六角 △2三銀 ▲3八玉 △2二金上 ▲7七桂 △4四銀 ▲8五銀 △3四銀 ▲3七桂 △2三銀 ▲2六歩 △3四歩 ▲7六銀 △7二飛 ▲8六歩 △7四歩 ▲同 歩 △同 飛 ▲7五歩 △9四飛 ▲2七玉 △3五歩 ▲同 歩 △6四歩 ▲8五歩 △6五歩 ▲同 銀 △7三桂 ▲7六銀 △3四歩 ▲同 歩 △同 銀 ▲3八金 △5五歩 ▲8四歩 △5六歩 ▲9六歩 △6五歩 ▲同 桂 △同 桂 ▲同 銀 △6四歩 ▲5四銀 △4二桂 ▲6三銀不成 △6五歩 ▲3九角 △2三銀 ▲3六歩 △3四桂 ▲3五銀 △7六歩 ▲9五歩 △7七歩成 ▲8五飛 △6七と ▲9四歩 △5七歩成 ▲5二飛 △3五銀 ▲同 歩 △4九銀 ▲3四歩 △3八銀不成 ▲同 玉 △3六金 ▲5九桂 △3四銀 ▲8六飛 △6六歩 ▲2七銀 △同 金 ▲同 玉 △4八銀 ▲2八角 △5九銀成 ▲同 金 △3五桂 ▲3六玉 △4七と ▲4八歩 △3八と ▲1七角 △3七と ▲同 玉 △4五銀 ▲3六歩 △1五歩 ▲2五歩 △8五歩 ▲同 飛 △3四歩 ▲3五歩 △1六歩 ▲3九角 △3五歩 ▲2四歩 △2五桂 ▲4七玉 △3六歩 ▲3八歩 △5六歩 ▲5八歩 △3七歩成 ▲同 歩 △5七歩成 ▲同 歩 △3七桂成 ▲同 玉 △3六歩 ▲4七玉 △5八歩 ▲4九金 △1七歩成 ▲3五金 △5九歩成 ▲同 金 △3七歩成 ▲同 玉 △9四歩 ▲4五金 △3三桂 ▲3四金 △2五桂 ▲4六玉 △4四歩 ▲5五玉 △2一金 ▲1三歩 △2二歩 ▲3三歩 △同 金 ▲同 金 △3二歩 ▲同 金 △同 金 ▲同飛成 △5六金 ▲同 歩 △1三香 ▲2一金 △1二玉 ▲1一金打 まで176手で下手の勝ち
AWSでファイルアップロードサーバを構築しよう。 index
AWSのサービスを使ってファイルアップロードサーバを構築しようという試みです。
AWSの色々なサービスを使って楽しく学ぶことが目的なので、ファイルアップロードサーバの機能的な完成度を高めることは目的ではありません。
また、ブログ記事を参考にシステムを構築して問題が発生しても責任は負いません。
セキュリティ面とか全然意識せずにやってるところ多いからね。
AWSでファイルアップロードサーバを構築しよう。① EC2基礎編
AWSでファイルアップロードサーバを構築しよう。② RDS基礎編
AWSでファイルアップロードサーバを構築しよう。③ S3基礎編
AWSでファイルアップロードサーバを構築しよう。④ IAMでS3利用可能なロールを作ろう
AWSでファイルアップロードサーバを構築しよう。⑤ EC2インスタンスでwebサーバ構築しよう。RDS,S3との連携もあるよ!
AWSでファイルアップロードサーバを構築しよう。⑥ lambdaを使ってサーバレスサービス化しよう
諸事情(私のモチベーション)により、④あたりまでは手抜き記事になると思われますがお許しください。
AWSでファイルアップロードサーバを構築しよう。③ S3基礎編
EC2基礎編でwebサーバとするEC2インスタンスの作成を行いました。
RDS基礎編でDBサーバをRDSで構築しました。
今回はS3でアップロードされたファイルの保存場所であるバケットを作成します。
S3でバケット作成
手順はかなり少なく簡単に作れます。
- AWSのコンソールにログインし、サービス一覧からS3を選択
- "バケットを作成"ボタンを押下
- バケット名を入力
- バケットをweb公開する際にバケット名がURLに使用される為、世界中で一意な名前である必要があります。
- リージョンを選択
- お好みで。私はTokyoを選択
- "作成"ボタンを押下
以上。とても簡単ですね。
設定次第ではwebに公開してバケットに保存されているファイルを誰でも見ることができるようにすることができたり、見るだけではなくてファイルのアップロードも可能にできます。
他にもユーザ毎に権限を付与したりと色々設定を行うこともできますが、本記事では割愛。
実際に使ってみてバケットのプロパティ項目を眺めてればなんとなくわかるよ!
使ってみないと分かりにくいよ!!
次回以降で、
- EC2インスタンスでwebサーバ実装
- webサーバからRDSで作成したDBサーバを利用する設定
- webサーバからS3のバケットをマウント
あたりをやっていきます
AWSでファイルアップロードサーバを構築しよう。② RDS基礎編
EC2基礎編でwebサーバとするEC2インスタンスの作成を行いました。
今回はアップロードされたファイルの関連情報(日時,ファイル名,コメント)を保存するDBサーバをRDSで作成します。
あんまり難しいところないのでサクッと終わる予定。
RDSでDBサーバ構築
今回も重要なポイントだけ箇条書きでお送りします。
- AWSのコンソールにログインし、サービス一覧からRDSを選択
- "DBインスタンスの起動"ボタンを押下
- DBインスタンスの各種設定を行う。私は以下のような設定で実施
ここまで実行すると、DBインスタンスの作成が開始され、サービス画面からインスタンスが確認できるようになります。
すると上図吹き出しの位置にエンドポイントアドレスが表示されるので、そこに対してEC2インスタンスから以下のようにmysqlコマンドを叩いてやったりすると、mysqlサーバにアクセスすることができます。
$ mysql -u ユーザ名 -p demo -h awsdemo.xxxxxxxxxx.ap-northeast-1.rds.amazonaws.com
なお、webアクセス禁止の設定にしているので、ご自分のPCから直接mysqlコマンド叩いてもアクセスできませんよ。
GUIからいくつか設定をするだけですぐに使用できる状態のDBサーバが作成されるRDS便利ですね。
今回はお財布の事情により使用していませんが、冗長化やバックアップの取得なども簡単に設定することができ、自力でDBサーバの保守を行うよりもかなりお手軽に保守できます。