サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
2024年ランキング
nykergoto.hatenablog.jp
はじめに 以下は Websocket 初心者の筆者が、認証 (Authorization) 付き Websocket 通信を行なうためにどうやったら良いのか、を調べたメモ書きです。 日本語や英語で調べても、どんなやり方があって実際どうやればいいのか、まとめて書いているページが見当たらなかったので調べて見つかったそれっぽいものを書いています。 実運用などしているわけではなく完全な初心者です。間違っている内容もある可能性が高いことを前提のうえで読んでください。 そもそもの話 認証とは リクエストしているユーザが何者なのかを判定する操作のこと。今回考えるのはウェブのAPIである。この場合APIへリクエストを送ってきているユーザが誰かを判定することが相当する。 通常のエンドポイント (http / https) であればリクエストのセッションを使ったり、あるいは JWT (Json Web Tok
先日、特徴量選択についてツイートしたところ Kaggle Master のアライさんに「HSIC Lassoはまさにぴったしなんではないでしょうか?」と教えていただきました。 お、となるとHSICLassoはまさにぴったしなんではないでしょうか?https://t.co/Ezigm9OriK— Hidehisa Arai (@kaggle_araisan) 2021年3月28日 HSIC Lasso は直前にあった統計学勉強会#2でのアライさんの発表資料でも取り上げられていたものです。 統計学勉強会は twitter から眺める程度で見ていたのですがとても盛り上がっていて楽しそうした。次回は是非参加したいと思っています🔥 connpass.com 統計学勉強会#2 from Hidehisa Arai www.slideshare.net 自分がこの分野に疎いのでただ使うだけじゃなくて中
実行時間を測定するには? KaggleMasterのアライさん著・Kaggleコード遺産でおなじみ timer を使うのが便利です! いつもお世話になってます😊 Kaggleコード遺産 - Qiita from contextlib import contextmanager from time import time # https://qiita.com/kaggle_master-arai-san/items/d59b2fb7142ec7e270a5#timer をちょっといじったやつ @contextmanager def timer(logger=None, format_str='{:.3f}[s]', prefix=None, suffix=None): if prefix: format_str = str(prefix) + format_str if suffix:
みなさん機械学習系の環境構築はどうやってますか? 僕は最近は Docker を使った管理を行っています。 特に師匠も居なかったので、ぐぐったり人のイメージを見たり手探りで docker をつかいつかいしている中で、最初からやっとけばよかったなーということがいくつかあるのでメモとして残しておきます。 大きく2つです。 キャッシュは消す テストを書く キャッシュは消す ライブラリをいろいろと install すると大抵の場合ダウンロードしたファイルを保存されている場合が多いです。何かのタイミングで再びそのライブラリをインストールする際にはダウンロードしたファイルを使って、素早くインストールすることができます (この仕組みがキャッシュです)。 キャッシュがあると容量が重くなるという欠点があります。重たいイメージは pull に単に時間がかかりますから、システムとしてデプロイする時にトラフィックが
不確実性を考慮した予測が可能と噂の NGBoost の論文を読んでみたので、全体のながれをまとめて見ました。加えて自分でも NGBoost を実装して、その結果を載せています。 元の論文 NGBoost: Natural Gradient Boosting for Probabilistic Prediction はこちら https://arxiv.org/abs/1910.03225。 Introduction 一般的な教師あり学習を考えます。このとき予測モデルは入力データ $X$ に対して予測値 $y$ を出力するように学習していきますが、たいていのモデルではひとつのデータに対しては予測値はひとつしか得ることができません。 例えばウェブ上の行動履歴から、ユーザーの年齢を予測してください、という問題があったとすると、ユーザーの期待される年齢そのものを返すようなモデルがそれに当たります。
この記事はオンサイトデータコンペ atmaCup のシステムぐるぐる https://www.guruguru.ml/ のフロントエンドの話です。 atmaCupとは? オンサイトデータコンペatmaCupとは実際に会場に集まり、準備されたデータをテーマに沿って分析・予測を行い、その精度を競うイベントです。 データコンペで有名なのはKaggleですが、みんなで実際に集まり、かつ時間もその日のうち8時間など短いのが特徴で、 参加者のスキルがオンラインのデータコンペより強く結果に表れます。 直近 atmaCup#4 はリテールAI研究会様 との共同開催でした。期間が 3/1 ~ 8 の1周間、すべての分析はAzure上で行うというものでした。 今までのatmaCupでは1日でかつ環境は自由というものだったので、期間・環境ともにはじめての試みでした。 環境構築が大変だったかたや途中トラブルなども
この記事は atma Advent Calendar 2019 - Qiita 2019/12/21 の記事です。 今年自社のサービスとして オンサイトのデータコンペティション atmaCup をはじめました。 オンサイトデータコンペとは実際に会場に集まり、準備されたデータをテーマに沿って分析・予測を行い、その精度を競うイベントです。 データコンペで有名なのはKaggleですが、みんなで実際に集まり、かつ時間もその日の8時間と短いのが特徴で、 参加者のスキルがオンラインのデータコンペより強く結果に表れます。 このatmaCupですが当然やろうと思うとコンペ用のシステムも必要です。というわけで裏側のシステム 「ぐるぐる」 を僕が作っています。 この時記事ではそのバックエンド部分を担っている DjangoRestFramework についてその便利さとどういう機能を使ってぐるぐるを作っているか
この記事を書く前に twitter でお話をしている流れで、まますさんに的確な証明を頂くことができました! 証明にはこちら RMSE.pdf - Google ドライブ からアクセスできます。(まますさんありがとうございましたmm) そもそも この記事のお題は RMSE を Fold ごとに取ると全体の値より小さくなる証明をやります ということです。 これをやろうと思ったきっかけは #かぐるーど での kaggle本の本読みです。 前回は第5章だったのですが、その5.2.2で次のような記述があります。 クロスバリデーションでモデルの汎化性能を評価する際は、通常は各foldにおけるスコアを平均して行いますが、それぞれのfoldの目的変数と予測値を集めてデータ全体で計算する方法もあります。なお、評価指標によっては各foldのスコアの平均と、データ全体で目的変数と予測値から計算したスコアが一致し
この度光栄なことに著者の @Maxwell さんから「Kaggleで勝つデータ分析の技術」 を献本いただきました。 私事ですがこのような形で献本頂いたのは初めての経験だったのでとてもうれしくまた恐縮している次第です。 光栄なことに @Maxwell_110 さんからKaggleで勝つデータ分析の技術を頂きました〜 目次の充実が話題になってましたがサラッと見ただけでも濃い内容満載で読むのワクワクです😆 https://t.co/VTKmsR5Z6s pic.twitter.com/yuRS72YyTs— ニューヨーカーGOTO (@nyker_goto) October 2, 2019 「せっかく本を頂いたので書評をかこう!!」と思ってここ数日読み進めていたのですが、この本が自分がここ一年ぐらいで読んだ機械学習に関連する本の中でもずば抜けて内容が濃くまた情報量の多い本であったため「これは僕
全文検索エンジンで cosine 類似度検索できるらしいというのを bert × elasticsearch の記事で見かけてとてもたのしそうだったので、自分でも環境作るところからやってみました。 hironsan.hatenablog.com やっているのは以下の内容です docker/docker-compose で elasticsearch x kibana x jupyter の立ち上げ jupyter の python から実際に特徴量ベクトルの登録 + 検索の実行 kibana での可視化 (ちょっとだけ) 紹介するコードはすべて以下のリポジトリから参照できます。 github.com Requirements docker docker-compose Setup docker-compose build docker-compose up -d 以上実行するとサーバーが3
表題の通り噂の最適化手法 RAdam の論文 On the Variance of the Adaptive Learning Rate and Beyond を読んだので, そのまとめです!! 概要 一言でいうと「今までヒューリスティックに行っていた Adam 学習開始時の LR 調整を自動化できるような枠組みをつくったよ」ということになると思います. 考える問題 この論文で, 考えていくのは機械学習のように多数のデータから成る目的関数を最小化するような問題です. 特にニューラルネットワークの学習では勾配法, 特に SGD (確率的勾配降下法) と呼ばれる方法を用いることが一般的です. SGD には様々な adaptive バリエーションがあります.この adaptive とは問題の特性を生かして, SGD を早くするような工夫を指しています. 一般的な形式 一般的な adaptive
機械学習プロジェクトでは python を始めとした言語 + それに付随したライブラリを使います。 僕も python 触りたての頃はローカルマシン上にひとつ python 環境を作り、必要なライブラリをインストールして使っていました。環境の分離ということはあまり意識しておらず、やったとしてもプロジェクトごとに anaconda や pyenv, venv などで個別環境を作って切り分けるレベルでした。 しかし上記の方法だと困ったことが起ることがあります。例えば… global な環境が壊れてしまってすべて壊れる。 これは各環境が global な環境に依存しているために起こります。 python 以外の変更で環境は突如として壊れます。例えば brew install hoge したら Mecab が使えなくなっちゃったとかはあるあるだと思います >_< linux / Mac / Win
はじめに この記事は nyker_goto 的な視点で kagge meetup の内容について思ったことなどをまとめた記事です。 内容の詳細に関してはえじさんが https://amalog.hateblo.jp/entry/kaggle-tokyo-meetup-6 にて素敵な記事(網羅性がすごすぎる)にとてもきれいにまとめていただいているので、細かい内容について参照したい方はそちらを参考にしていただければと思います。 amalog.hateblo.jp 正直おもしろことだらけだったのですが、個人的に特に面白かった事柄は以下のようなことです。 やることはきっちりやりましょう adam 一強 CNNによる stacking ordered boosting チームの多様性大事 それぞれ順に書いていきます。 やることはきっちりやりましょう 今回発表を聞いていて一番思ったことです。発表いただ
今回は音声データやセンサーといった波形データの解析によく使われるFFTを、時系列のデータにつかって傾向の分析をやってみます、という話です。 FFTとは FFT(高速フーリエ変換) はフーリエ変換 FT の高速版です。そのままですが。 めっちゃカジュアルに言えば、フーリエ変換(FT)は波形データからどの周期でどのぐらいの振れ幅を持っているかを抽出します。 工学の振動系とかだと、ノイズが混じった観測データから物体固有の振動を取り出したりとかに使ったり、まあ色々使われます。 この記事は FFT を使ってサンプルの波形の解析をやって、最後に日経平均の特性をちょっと見てみましょう、というのが主旨になっています。 FFT Module python でフーリエ変換のモジュールというと有名なのは numpy.fft で基本的には fftn: 波形空間からフーリエ変換した強度空間への射影を行う関数 iff
みなさん optimizer は何を使っていますか? (僕は SGD + Momentum + Nesterov が好きです) adagrad/adadelta/adam などなど NN で用いられる optimizer は数多くありますが, 最近提案された optimizer に adabound というものがあります。 adabound はざっくりいうと SGD と adam のいいとこ取りを狙った手法で、論文では序盤では adam の早い収束性を, 終盤では SGD の高い汎化性を再現しています。 序盤終盤すきのない adabound 先生 pytorch での実装GitHub - Luolc/AdaBound: An optimizer that trains as fast as Adam and as good as SGD. 自分のスライドで恐縮ですが Adabound やそ
自然言語処理である単語の意味情報を数値化したいという場合に単語を特定のベクトルに埋め込む(分散表現)手法として word 2 vec があります。 この word2vec と同じような発想で文章自体をベクトル化するという発想があり Doc2Vec やそのたもろもろも方法が存在しています。 今回はその中の一つである SCDV (Sparse Composite Document Vector) を実装したのでその記録です。 著者のページ: https://dheeraj7596.github.io/SDV/ そもそも何者か 文章を表現するベクトルを取得する手法です。 どうやってやるか SCDV はいくつかのフェーズに分かれています。以下では5つのフェーズに分けて説明します。 若干論文の notation と違う所があるのでそこだけ注意していただければと思います。 1. 単語の分散表現を取得す
Understanding Measures of Uncertainty for Adversarial Example Detection https://arxiv.org/pdf/1803.08533.pdf 概要 (200文字程度) 敵対的サンプルを判別する基準として相互情報量 (Mutual Information) が優れていることを主張する論文. MI の推定に Dropout を用いた MC を採用している. Mnist と隠れ層2次元 Variational Autoencoder を用いて不確実性の分布を可視化し既存の基準である softmax entropy と MI の違いをわかりやすく説明している. この論文の新規性 予測の不確実性を意味によって2つに分離し、モデルの知識不足部分の不確実性を取り出せれば敵対的サンプルを判別できるという主張を情報量の観点から議論し
LightGBM や XGBoost などで使われている勾配ブースティングのパラメータについて、チューニングノウハウというよりもそのパラメータがどういう意味を持っているのか、に焦点をあててまとめて見ました。 各ライブラリのパラメータすべては以下から確認できます。 lightGBM Parameter XGBoost Parameter NOTE: 以下では lightGBM のパラメータの名前で説明しています。微妙に名前が違うものがあるので適宜読み替えてください。 勾配ブースティングについてざっくりと 一般的な決定木では木はひとつだけで、その木に対してたくさんの分割ルールを適用していきます。 勾配ブースティング木では、木をたくさん作ります。たくさん作る代わりに、一つ一つの木の分割をざっくりとしたものにします。 そして作った木すべての予測の合計を使うことで、ひとつの木では表せないような複雑な
Gpy と Scikit-learn Python でガウス過程を行うモジュールには大きく分けて2つが存在します。 一つは Gpy (Gaussian Process の専門ライブラリ) で、もう一つは Scikit-learn 内部の Gaussian Process です。 GPy: GitHub - SheffieldML/GPy: Gaussian processes framework in python Scikit-Learn 1.7. Gaussian Processes — scikit-learn 0.24.1 documentation この2つのモジュールでどのような違いがあるのかを以下の項目で比較していきます。 カーネルの種類, 可視化 どんな種類のカーネルがあるのか 可視化は容易か 予測モデルの作成 モデルの作成はどのように行うのか モデルの訓練方法, 結果の可
最近 keras をつかって色々とやることにはまってます。 tensorflow や chainer と比較して keras だとネットワーク記述から fit までが完結に記述できてとても気に入っています。 そのときにドキュメントや実装を読んだりもしますが、ネットで自分がやりたいタスクで検索をかけて似たようなことをやっている人のコードを参考にしています。 その時、keras レイヤーの重みの初期化の引数に he_normal というのを指定しているのを見かけました。 ドキュメントを参照すればこの関数の定義式自体はわかりましたが、この関数が何をやってるのか、なぜこの関数にするとうれしいのか、平均0分散1のガウス分布ではだめなのか、ということがわからず困ってしまいました。 ニューラルネットワークにおける変数の初期化の方法について全く知らなかったので、ちょうどいい機会とおもい各種論文を読んでみた
最近理論よりなことばかりやっていたので今回は実際のデータを使った解析をやってみます。 今回使うデータは、読書メーターからクロールさせてもらって作成した、ユーザーに紐付いた読書履歴のデータです。ユーザーごとに [だれの, どんな] 本を読んだかがわかるようなデータになっています。一例は以下のような感じです。 アガサ・クリスティー おづ まりこ トマス・H・クック ムア・ラファティ 川口俊和 ジョナサン・オージエ 村田 沙耶香 岡崎 琢磨 米澤 穂信 ピエール・ルメートル 金内 朋子 この人はミステリーが好きなのかもしれませんね。 先の例は作者でしたが、これと同じように本のタイトルも取得しています。 取得した本の数(累積)は 100万冊, ユーザー数は 2500 と気づいたら案外大きいデータセットになっていました。 このうち今回は本のタイトルのデータを使って、本のクラスタリングをやってみたいと
ニューラルネットワークの過学習防止としてDropout という機構が用いられているのはご案内のとおりです。 この Dropout 、見方を変えるとディープラーニングにおける重みのベイズ推定に相当しているのではないか、という内容が Uncertainty in Deep Learning にて述べられていて、この記事ではその内容について解説していきたいと思います。 また末尾では実際にベイズ推定を実装して、予測がちゃんと不確実性を盛り込んだものになっているかどうか、を確認します。 基本的に記事の内容は元の論文(YARIN GAL さんの博士論文です)と同著者の解説ページを元にしています。それぞれ以下からアクセスできますので、解説じゃなくて自分で読みたい!という方はそちらを参考にしてください。個人的には解説も論文もとても読みやい (なんと数式もとても丁寧に記述されています!!) ので、英語が苦手
機械学習で色々やっていると、いろいろなモデルを複合したアンサンブルモデルなど、自分で新しい予測モデルを作りたい場合があります。 その場合自分でいちから作り上げても良いのですが、そうやって作ったモデルは、たとえば scikit-learn のパラメータ最適化モジュールである GridSearch や RandomSearch を利用することができなくて、少々不便です。 この際に scikit-learn の定義にしたがってモデルを定義すればうまく連携がとれて効率的です。以下では scikit-learn 準拠の予測モデルをどうやって作ればよいか、その際の注意点や推奨事項を取り上げます。 参考 Creating your own estimator in scikit-learn http://danielhnyk.cz/creating-your-own-estimator-scikit-l
DCGANとは DCGANはランダムなベクトルから画像を生成するGeneratorと、画像が与えられた時にその画像がGeneratorによって作られたものなのか、本当の画像なのかを判定する関数Discriminatorでなりたっています。 DCGANのアイディア この2つの関数を相互に競わせるように更新することで、画像を生成するGeneratorをもっともらしいものへと更新します。 Generatorは、できるだけDiscriminatorに偽物だと判定されないように、重みを更新します。 反対に、Discriminatorは、できるだけGeneratorの画像を本物だと判定しないように、重みを更新します。 しくみとしてはこれだけで構成されていて、DCGANではGeneratorに逆Convolution(Deconvolution)を、DiscriminatorにConvolutionを用
統計の計算とかをやろうとすると、サンプリングという方法をとって計算をさせるという場面がよく起こります。 どういうときに使うのかというと、例えば確率密度関数に従う確率変数zを引数に取るある関数の期待値が計算したい場合などです。この場合計算するべきは の計算になるわけですが、実際に計算するとなると、この関数がきれいな形をしていないと解析的に解くことが難しくなります。要するに不定積分をして数値を代入するだけでは解けなくなります。 もしどうしてもこれを計算したかったら、近似的にこの積分に一致するように計算を行っていく必要が出てきます。 一番シンプルに考えた時に思いつくのは「積分の区間を均一に区切ってやって、その時の関数の値で近似を行う」という方法です。 しかしこの方法にも問題があります。それは確率変数がすごく大きな次元を取っていたときに、計算に必要な区切りの数が爆発してしまうという問題です。(次元
このページを最初にブックマークしてみませんか?
『nykergoto’s blog』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く