【機械学習】「仕事ではじめる機械学習」を読んでのメモ
1章 機械学習プロジェクトのはじめ方
1.2 機械学習プロジェクトの流れ
1. 問題を定式化する * ○○のために××が必要。そのために機械学習を利用する。機械学習が○○に貢献しているかどうかの判断として、□□をKPIとする 2. 機械学習をしなくて良い方法を考える * ルールベースで期待する精度が出るのに機械学習を適用しようとしていないか * 100%の精度が得られるといった実現不可能な期待はないか *(画像処理で十分なのにCNNを適用しようとしていないか) 3. システム設計を考える * 予測結果はどういう形で利用するのか * 予測誤りをどこでどうやって吸収するのか 4. アルゴリズムの選定 * 過去に類似の問題がどのように解かれているか(Kaggle等を調べる?) * PCAやt-SNEでデータの特性を可視化してあたりをつけられないか * (問題設定が複数考えられる場合は顧客に前もって確認しておく。例えば顧客はクラス分類問題を求めているようで、実は対象の大きさも知りたいと思っており、セグメンテーション問題として扱わなければならないかもしれない。逆に顧客はセグメンテーション問題を求めているようで、実は対象の大きさは必須ではなく、ラベリング負荷が減るのであればクラス分類問題として扱っても良いかもしれない) 5. 特徴量、教師データとログの設計をする * ビジネスドメインに詳しい人に予測に必要な情報を確認する 6. 前処理をする 7. 学習・パラメータチューニング * ロジスティック回帰等シンプルなアルゴリズムをまず適用する * (学習データで精度が出ない? ⇒ モデルを大きくする、学習期間を長くする、別のモデルを試す) * (バリデーションデータで精度が出ない? ⇒ データを増やす、正則化を適用する、別のモデルを試す) 8. システムに組み込む * 予測性能とKPIをモニタリングし、継続してビジネスに貢献しているのか確認/改善を続ける * 改善を続けることが出来る組織づくりもしておく
1.4 機械学習を含めたシステムを成功させるには
機械学習を含めたプロダクトをビジネスとして成功させる上で重要になるのは以下の4者がいること
機械学習プロダクトを作っていくうえで参考になる資料
www.slideshare.netwww.slideshare.net
5章 学習のためのリソースを収集しよう
1. 公開されたデータセットやモデルを活用する * モデルやデータセットは商用利用可能なライセンスか * 学習済みモデルやデータセットを自分のドメインに適用できるか
2. 開発者自身が教師データを作る * 決めたカテゴリはそのままで良いのか、分類の定義を更新した方が良いのか考えて分類する * 他に重要そうな特徴量が判明したら、それを含めると改善する可能性がある * 分類基準は実例を残して他人に説明できるようにしておく
3. 同僚や友人などにデータ入力してもらう * 複数名で作業するとき、同一のデータに対して正解を付与してもらうことも重要。人間同士でも分類が一致しないようなタスクは機械学習では解けない問題の可能性が高い
4. クラウドソーシングを活用する メリット * 専門の作業者を雇うより作業が速く、金額も専門家への依頼より安い * 作業が速く終わるため試行錯誤しやすい * 作業コストが低いことから、複数人に同一タスクを依頼するなど冗長性を持ったデータ作成が可能
注意点 * 作業者が短時間で解けるようにする必要があり、タスクの設計が難しい * 高い専門性が求められる作業は、手順の分割、詳細化などが必要 * 作業結果の質を担保するために、結果をチェック/利用する際の工夫が必要
5. サービスに組み込み、ユーザーに入力してもらう
- 作者: 有賀康顕,中山心太,西林孝
- 出版社/メーカー: オライリージャパン
- 発売日: 2018/01/16
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (4件) を見る
【Python】 ファイルの行数を数える
データがいくつ入っているのか数えたかったのですが、以下で簡単に行数を取得できました。
num_lines = sum(1 for line in open('myfile.txt'))
【WPF】 PNG ⇔ BitmapSourceの変換
ここ(方法: PNG イメージをエンコードおよびデコードする)で調べました。
PNG ⇒ BitmapSource
using System.IO; using System.Windows.Media.Imaging; public BitmapSource ReadPng(string pngPath) { var stream = new FileStream(pngPath, FileMode.Open, FileAccess.Read, FileShare.Read); var decoder = new PngBitmapDecoder(stream, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default); return decoder.Frames[0]; // 誤ってstreamをDisposeするとBitmapSourceも捨てられます }
BitmapSource ⇒ PNG
using System.IO; using System.Windows.Media.Imaging; public void SaveAsPng(string pngPath, BitmapSource bitmapSource) { using (var stream = new FileStream(pngPath, FileMode.Create)) { var encoder = new PngBitmapEncoder(); encoder.Interlace = PngInterlaceOption.On; encoder.Frames.Add(BitmapFrame.Create(bitmapSource)); encoder.Save(stream); } }
【アイトラッキング】 アイトラッカーメーカー一覧
アイトラッカーを販売しているメーカーのメモです。以下に記事に加えて日本のメーカーを付け加えています。 imotions.com
Tobii
まず思い付くのがTobiiです。まぁ高いのですが、視線を解析しないのであればTobii Eye 4CをAmazonから購入すると安くすみます(Tobii Eye 4Cはライセンス上視線の解析が認められていません)。 www.tobii.com
SMI
Appleに買収されたなんて記事があります。物は良いけどべらぼうに高い印象があります。
EyeLink
サンプリングレートが異常に高い製品を販売しているので特殊な用途向けでしょうか。問い合わせたことが無いので価格は分かりません。 www.eyelinkinfo.com
ISCAN(http://www.iscaninc.com/)
ホームページに情報が無さ過ぎて問い合わせ必須です。ホームページからのどかな場所にオフィスがあるんだということは分かります。
LC Technologies
ホームページに行くとモニタ一体型のリモートタイプアイトラッカーのみが表示されるので、ヘッドマウント型は販売していないのかもしれません(要確認)。問い合わせたことが無いので価格は分かりません。 www.eyegaze.com
EyeTech
リモートタイプ、モニター一体型リモートタイプを販売しているようです(+OEM)。問い合わせたことが無いので価格は分かりません。 www.eyetechds.com
Eye Tribe
この会社の登場でアイトラッカーに低価格化の波が来ることを期待していたのですが、Oculusに買収されてしまいました。
Ergoneer(http://www.ergoneers.com/en/)
ヘッドマウント型を販売しているようです。
Smart Eye(http://smarteye.se/)
リモートタイプを販売しているようです。ホームページを見ると車載向けソリューションに特化している感じです。
Mirametrix
ホームページが見辛い。。。 www.mirametrix.com
Pupil Labs
ヘッドマウント型を販売しているようです。 pupil-labs.com
Gazepoint
低価格アイトラッカーを販売しているので魅力的なのですが、いかんせんヘッドボックスが狭いのが難点です。 www.gazept.com
ナックイメージテクノロジー(http://www.eyemark.jp/)
モニタ一体型リモートタイプ、ヘッドマウント型を販売しているようです。モニタ一体型は精度は落ちるもののキャリブレーションフリーも可能なようです。
ディテクト(http://www.ditect.co.jp/products/gauging/index.html)
リモートタイプ、ヘッドマウント型両方取り扱いがあるようです。リモートタイプのラインナップの中に測定距離120cm~250cmというものがあり、リモートタイプで長距離測定可能というのは他では見当たらないかもしれません。
Intel
アイトラッキング用ではありませんが、IntelのRGBDカメラF200で視線追跡が出来るようです。 www.buildinsider.net
精度はどうなんでしょうか。ここでは精度は良いと回答されていますが、試してみたいところです。
【WPF】 StackPanelにアイテムを追加した時に自動でスクロールさせる
ScrollViewer内のStackPanelに画像を次々追加した時、何もしないとスクロールは一番上にありますが、これを
こんな感じに自動でスクロールを一番下に持っていって欲しいという状況でした。
これを実現する方法は簡単で、画像を動的に追加した時にScrollViewerのScrollToBottomメソッドを呼び出せば良いだけでした。疑似コードは以下のようになります。
StackPanel1.Children.Add(Image); ScrollViewer1.ScrollToBottom();