August 2018 – nibuiroフラグメント β

Archive August 2018

【MSSQL】ログ破損、バックアップから復元

【MSSQL】ログ破損、バックアップから復元

タスク ― 復元 ー データベース

  • 「既存のデータベースを上書きする」にチェックを入れる(なくてもいいかも)
  • 「復元の前にログの末尾のバックアップを実行する」のチェックを外す

 経緯はRAMディスクに.ldf、.mdfをコピー、.ldfパスの書き換えを忘れる。そしてWindows Update、オリジナルのldf破損、といった流れですね…

このsqlだとデータべースファイル本体のみしかパスが書き換わらないのでSSMSからデタッチ&アタッチの方がいいですねー。

いやーWindows UpdateにRAMディスクお掃除されるのはこれで何度目でしょう?(笑)。

【C#】openCVによる二値化

環境

 NuGetパッケージ、OpenCvSharp3-AnyCPU ver3.4.1.20180319 を使用。

比較

 雑感です。

適応的閾値処理

Sauvolaの手法

大津の二値化

Tensorflow 1.0をかじる

プリセットを利用する


tf.estimator

 抽象度の高いAPI。 高位の機械学習APIともいう。 データの入力には下記のfeature-columnsを用いる。
 このクラスは以下を内包している。

  • BaselineClassifier: A classifier that can establish a simple baseline.
  • BaselineRegressor: A regressor that can establish a simple baseline.
  • BestExporter: This class exports the serving graph and checkpoints of the best models.
  • BoostedTreesClassifier: A Classifier for Tensorflow Boosted Trees models.
  • BoostedTreesRegressor: A Regressor for Tensorflow Boosted Trees models.
  • DNNClassifier: A classifier for TensorFlow DNN models.
  • DNNLinearCombinedClassifier: An estimator for TensorFlow Linear and DNN joined classification models
  • DNNLinearCombinedRegressor: An estimator for TensorFlow Linear and DNN joined models for regression.
  • DNNRegressor: A regressor for TensorFlow DNN models.
  • Estimator: Estimator class to train and evaluate TensorFlow models.
  • EstimatorSpec: Ops and objects returned from a model_fn and passed to an Estimator.
  • EvalSpec: Configuration for the “eval” part for the train_and_evaluate call.
  • Exporter: A class representing a type of model export.
  • FinalExporter: This class exports the serving graph and checkpoints in the end.
  • LatestExporter: This class regularly exports the serving graph and checkpoints.
  • LinearClassifier: Linear classifier model.
  • LinearRegressor: An estimator for TensorFlow Linear regression problems.
  • ModeKeys: Standard names for model modes.
  • RunConfig: This class specifies the configurations for an Estimator run.
  • TrainSpec: Configuration for the “train” part for the train_and_evaluate call.
  • VocabInfo: Vocabulary information for warm-starting.
  • WarmStartSettings: Settings for warm-starting in Estimators.

tf.feature-columns

 estimatorへ入力する特徴列(データ)の定義。特徴列の型、サイズ、構造を定義し、生成する。

オリジナルモデルを構築する


tf.Variable

 重みやバイアスといった学習対象の変数を格納する。

  • Weight (W)
  • Bias (B)

tf.placeholder

 学習に必要なデータを供給する。テストデータの入力の際はnumpy行列をそのまま渡す。

  • train_x
  • train_Y

 
参考:
・https://towardsdatascience.com/deploy-tensorflow-models-9813b5a705d5
・https://www.kaggle.com/liampetti/deep-neural-network-using-tensorflow
・https://www.kaggle.com/fuzzyfroghunter/getting-started-with-tensorflow
・https://stackoverflow.com/questions/41116782/tensorflow-how-to-get-prediction
・https://stackoverflow.com/questions/36693740/whats-the-difference-between-tf-placeholder-and-tf-variable

集団学習(ensemble learning)

集団学習(ensemble learning)

 ここでは主に異なるアルゴリズムのアンサンブルを行うスタッキング(stacked ensembling)とその一種と考えられるブレンディング(Blending)を紹介します。と言っておいてなんですが辻褄合わせの結果をご覧ください、といったところ。
 bagging、boostingなどはここでは扱いません。
 

アンサンブル

 複数の予測値のランク平均、平均、幾何平均などをとる

スタッキング

 メタアンサンブリングとも呼ばれる。それぞれ学習器から得られた予測値を「n次元メタ特徴」とし、それらを用いて分類/回帰を任意の回数だけしていく。3次は見たことがないので効果が得られないのだろう。

ブレンディング

 ブレンディングというのはNetfixコンペの優勝者によって提唱された言葉。ブレンディングはスタッキングの一種と考えられる。これはスタッキングに極めて近いが僅かに異なり、情報欠如のリスクが少ない。いくらかの研究者は スタッキングと ブレンディングを互換的に用いる。
 スタッキングよりもブレンディングのほうがテスト性能が良いこともあれば逆もまた然りということ?
 以下にアルゴリズムを示す。

  1. 単純にトレーニングセットを分ける。
  2. 多くのモデルで学習を行いバリデーションをそれぞれ行う。そしてこれらの予測値を用いて、重み付平均、線形回帰、などの任意のアルゴリズムで性能が最大になるものを見つけ出す。
    (ここで汎化性能を目指してもいいかもしれないが単純な手法なので単純に精度を高めればいいはず。)
  3. テストデータに適用する。

“Blending and Stacking”

“Blending and Stacking”というワードをちらほら見た方もいると思いますが、これは「ブレンドして積み重ねていこー」a.k.a.スタッキングかと。

“Stacked Generalization”

そして、アイキャッチ画像で行っていることはアンサンブルで減次、減次、ブレンディングで汎化、といったところだろう。


参考:
・http://forums.fast.ai/t/difference-between-stacking-vs-blending/1727
・https://www.quora.com/What-are-examples-of-blending-and-stacking-in-Machine-Learning
・https://github.com/MLWave/Kaggle-Ensemble-Guide
・https://en.wikipedia.org/wiki/Ensemble_learning

GCPでWordPress

GCPでWordPress

Why GCP ?

AWS EC2と異なり、microインスタンスならば1年以上利用しても無料!

What can …

  • Webサーバ
  • メールサーバ
  • VPNサーバ
    etc…

What’s need ?

  • クレジットカード、もしくはデビットカード
  • Google Cloud SDK
    使うかどうかは分からないがインスタンスへの接続に便利なのでインストールして認証。
    認証後に出てくるURLは閉じてしまいがちだけれども有用。
    Windows派でSSHなんて知らんねん、な人類は嬉しい。

How to …

Googleにサインアップ/ログインし、GCPに登録する

Compute Engine ― イメージ ー イメージの作成

kusanagi-for-gcp/kusanagi-for-gcp.tar.gz

ソースを「Cloud Storage ファイル」として上記を検索してイメージを作成する。KUSANAGIというのは超音速WordPress仮想マシン。

Compute Engine ― VMインスタンス
「インスタンスを作成」をクリック。「vCPU x 1」から「micro」にしたいところですがメモリ不足でRPMデータベースが壊れるので「small」に変更。
ディスクは30GBまで無料。
nic0と書いてある場所をクリックしIP転送を「オン」。「HTTP トラフィックを許可する」、「HTTPS トラフィックを許可する」のチェックボックスを有効化、「作成」。

「Google Cloud SDK Shell」を起動、接続しアップデートを実行。

KUSANAGIを初期化、言語、キーボードレイアウト、その他を注意して設定、途中で訊かれる追加インストールに関しては無くても問題のでいらない。
シャットダウン後、「small」を利用する必要はないのでブラウザを用いて「micro」に変更して再び起動する。

WordPressをプロファイル生成。例なので適宜変更して使用して下さい。実際に実行したコマンドは記録しておくことをオススメします。
https://nibuiro.netの状態で準備するので今は証明書に関してスルーします。

ここで、後に変更可能なことを示しておく。

  • サイトのドメイン名を変更

  • Let’s Encrypt のSSL証明書を自動的に取得するように変更

https://nibuiro.netにアクセスするためには作業を行っているコンピュータが自身でドメイン名を解決しなければなりません。
なので、「<GCPインスタンスの外部IP> nibuiro.net」と書き加えます。

  • Linuxの場合
     /etc/hosts
  • Windowsの場合
     C:\Windows\System32\drivers\etc\hosts

こうして、http://nibuiro.net/にアクセスすると、「さぁ、始めましょう!」なものが出てくる。
プロファイル生成時に指定した名前などをそのままコピペする、適当に埋める、と進めていくとダッシュボードにたどりつく。

おつかれさん…と言いたいところですがMariaDBのデフォルトの設定だとリブートしたあとが立ち上がらなくなる。

この時

と打つとソケットに接続できないと出てくるのですが、これはメモリが不足し、途中で処理が止まってしまうが故のもの。

で、適宜以下のように書き換える。

query_cache_size = 8M # before: 128M
max_heap_table_size = 32M # before: 384M

ログの場所、設定ファイルの場所はバージョンによって違うことがある。
はい、おつかれさん。
セキュリティの強化は読者への課題とする(笑)。

追記:
 PHP7のほうが落ちる頻度が少ない傾向がありました。kusanagi php7で変更できます。
 ドメイン設定: https://www.compiere-distribution-lab.net/idempiere-lab/install-advance/google-cloud-dns/