SEが最近起こったことを書くブログ

ITエンジニアが試したこと、気になったことを書いていきます。

Amazon QuickSight のML インサイトについて調べてみた

Amazon QuickSight のML インサイトについて簡単に調べてみたので、メモをしておく

MLインサイトでできること

  • ML を使用した異常検出
    • ランダムカットフォレストにて、異常検知する
  • ML を使用した予測

    - 異常なデータポイントを除外し、予測する

  • 自動説明文
    • 説明文が埋め込まれた豊富なダッシュボードを作成して、データのストーリーをわかりやすい言葉で伝えることができる

ランダムカットフォレストとは

  • ランダムフォレスト (RF) アルゴリズムの特殊タイプ
  • クラスター分析を使用して時系列データのスパイク、周期性または季節性の中断、データポイントの例外を検出するために使う
  • 処理の流れ
    1. . データをサンプリングする
    2. . 超平面を作成する次元を選択する
      • ランダムだが分散が大きい次元が選択されやすい
    3. . 超平面の中でランダムにカットの位置を決める
    4. . カットした場所でツリーを分けてサブツリーを作成する
    5. . 2~4を繰り返し、各ツリーが1サンプルになるまで繰り返す
    6. . 5が完了したら、1つのツリー完成。1~5を繰り返しハイパーパラメータの数のツリーを作成する
  • 各ツリーの深さの平均値を各データポイントのスコアとし、深さが浅いデータポイントを異常値とする
    • 異常値の場合は、ツリーの浅い部分に現れる可能性高いことを利用

感想

いまいち、ランダムカットフォレストで予測する際にどのように動くかが理解できていない。 (最も異常値から遠いデータポイントを予測値としている??) さらなる勉強が必要です。。。

参考資料

docs.aws.amazon.com

docs.aws.amazon.com

AWS Data Pipeline について調べてみた

AWS Data Pipelineがよくわからなかったので、調べてみたことを以下に記述する。 完全にメモですので、ご了承ください。

AWS Data Pipelineとは

  • データの移動と変換をスケジュールベースで自動化するサービス
  • 1日に一回程度発生するデータの回収やバックアップなどが想定されるユースケース

パイプラインのコンポーネント

  • データノード
    • タスクの入力データの場所または出力データが保存される場所
      • DynamoDBDataNode
      • SqlDataNode
      • RedshiftDataNod
      • S3DataNode
  • アクティビティ
    • コンピューティングリソースと通常、入出力データノードを使用して、スケジュールに従って実行する作業の定義
      • CopyActivity
      • EmrActivity
      • HiveActivity
      • HiveCopyActivity
      • PigActivity
      • RedshiftCopyActivity
      • ShellCommandActivity
      • SqlActivity
  • 前提条件
    • アクションを実行する前に true である必要がある条件ステートメント
      • DynamoDBDataExists
      • DynamoDBTableExists
      • S3KeyExists
      • S3PrefixNotEmpty
      • Exists
      • ShellCommandPrecondition
  • スケジューリング
    • アクティビティの実行など、予定されているイベントのタイミング
    • 指定できる最も短い間隔は15分
      • Cron形式
      • 指定した間隔の最後
  • リソース
    • パイプラインで定義する作業を実行するコンピューティングリソース
      • Ec2Resource
      • EmrCluster
  • アクション
    • アクティビティの失敗など、指定された条件が満たされた場合にトリガーされるアクション
      • SnsAlarm
      • Terminate

参考資料

www.slideshare.net

docs.aws.amazon.com

PowerShellについてメモ

PowerShellについて以前調べたことをメモしておく

メール送信について

outlookを使用する方法

$OL = New-Object -ComObject Outlook.Application
$Mail = $OL.CreateItem(0)
$Mail.Recipients.Add("メール送信先")
$Mail.Subject = "件名"
$Mail.Body = "本文"
$Mail.Send()

OUTLOOKを利用しない方法

  • SMTP送信する際に認証が必要な場合の例
$username = "ユーザ名"
$password = "パスワード"
$mailhost = "メールサーバホスト名"
$port = 送信先ポート番号

$from = "送信元メールアドレス"
$recipients = "送信先メールアドレス"
$subject = "件名"
$body = "本文"

$sc = New-Object Net.Mail.SmtpClient
$sc.Host = $mailhost
$sc.Port = $port
$sc.EnableSsl = $true

$sc.Credentials = New-Object Net.NetworkCredential
$sc.Credentials.UserName = $username
$sc.Credentials.password = $password

$sc.send($from, $recipients, $subject, $body)

ファイル操作について

Copy-Item C:\Src\* C:\Dest -Include *.dll
  • そのフォルダの下の階層のフォルダ、ファイル名を出力
Get-ChildItem -Recurse -Exclude .* | Export-Csv ./filelist.csv -encoding Default

その他メモ

nbtstat -a <IPアドレス>
  • 日付のフォーマット
Get-Date -Format "yyyyMMdd_HHmmss"
Start-WBBackup -Policy $wb_policy -Force -Async
  • ログイン失敗情報取得(詳細)
Get-Eventlog Security -Source Microsoft-Windows-Security-Auditing -newest 10000 | where {$_.InstanceID -like "4625"} | Format-list

Log Parserのメモ

Log Parserについて以前調べたことを以下にまとめておく

使うときの注意点

.NET Frameworkでよく調べること

.NET Frameworkでやり方が分からなくて困ることを以下にメモする

デバッグ関連

dll関連

  • Interop.*のdll

  • 32bitか64bitかの確認

    • dumpbin.exe /HEADERS ○○.dll | findstr machine
    • dumpbinは、C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\binなどにある

assemblyフォルダの表示

desktop.iniの中身は下記

; ==++==
; 
;   Copyright (c) Microsoft Corporation.  All rights reserved.
; 
; ==--==
[.ShellClassInfo]
CLSID={1D2680C9-0E2A-469d-B787-065558BC7D43}
ConfirmFileOp=1
InfoTip=Contains application stability information.
  • コマンドプロンプト(cmd.exe)を管理者として起動し、以下のコマンドを実行していく。
    • attrib +s +h +r C:\Windows\assembly\desktop.ini
    • attrib +s +r C:\Windows\assembly
  • attribコマンドで属性変更と変更後のチェック
    • attrib C:\Windows\assembly\desktop.ini (コマンド結果にSHRが表示されていればok)
    • attrib C:\Windows\assembly (コマンド結果にS Rが表示されていればok)

参考URL

Anacondaのメモ(主にProxy周り)

AnacondaのPorxy周りの設定方法について、良く忘れるのでメモしておく

  • プロキシの設定
    • インストールファイルに「.condarc」ファイルを作り下記を記入
proxy_servers:
    http: http://プロキシユーザ:プロキシパスワード@プロキシサーバ:プロキシポート
    https: https://プロキシユーザ:プロキシパスワード@プロキシサーバ:プロキシポート
conda install -c conda-forge ライブラリ名
  • pipの場合のProxyの設定、下記の環境変数を設定する
set HTTP_PROXY=http://プロキシユーザ:プロキシパスワード@プロキシサーバ:プロキシポート
set HTTPS_PROXY=http://プロキシユーザ:プロキシパスワード@プロキシサーバ:プロキシポート

Gitメモ

GItでたまにやりたくなる小技をメモとして記入

大文字小文字の変更

git mv -f APIParameterEnum.java ApiParameterEnum.java

更新履歴の出力

git --no-pager log --since=2018-03-01  --until=2019-03-31 \
--pretty=format:"\"%ad\",\"%h\",\"%an\",\"%s\"" \
--date=short --no-merges develop --date-order > commits.txt
git --no-pager log --since=2018-03-01 --until=2019-03-31 \
--pretty=format:"\"%ad\",\"%h\",\"%an\",\"%s\"" \
--date=short --merges develop --date-order > commits_merges.txt
  • マージログ以外のファイル名も出力
git --no-pager log --since=2019-04-01 --until=2019-04-30 \
--pretty=format:"\"%ad\",\"%h\",\"%an\",\"%s\"" \
--date=short --no-merges develop --date-order --name-status  > commits_latest.txt
  • 上記ファイル出力のファイルパスの文字化けを防ぐ方法
    • git.configの[core]に「 quotepath = false」を追加

参考URL