タグ

ブックマーク / blog.amedama.jp (7)

  • Python: Adversarial Validation について - CUBE SUGAR CONTAINER

    最近、Kaggle などのデータ分析コンペで使われることの多い Adversarial Validation という手法について調べたり考えていたので書いてみる。 もくじ もくじ 背景 Adversarial Validation 試してみる 下準備 二つのデータが同じ分布に由来するとき 二つのデータが異なる分布に由来するとき 異なる分布でそのまま分類してみる 検証用データに似ているものを取り出す 取り出したデータを使って学習してみる ラベルごとに似ているデータを取り出す どれだけ取り出して学習させれば良いのか Adversarial Validation の応用例 背景 Adversarial Validation という手法は、データ分析コンペに存在する、ある課題を解決するために考案された。 その課題とは、提供される複数のデータセットの分布が異なる場合に、いかにして正しく予測するかとい

    Python: Adversarial Validation について - CUBE SUGAR CONTAINER
  • Python: 特徴量の重要度を Permutation Importance で計測する - CUBE SUGAR CONTAINER

    学習させた機械学習モデルにおいて、どの特徴量がどれくらい性能に寄与しているのかを知りたい場合がある。 すごく効く特徴があれば、それについてもっと深掘りしたいし、あるいは全く効かないものがあるなら取り除くことも考えられる。 使うフレームワークやモデルによっては特徴量の重要度を確認するための API が用意されていることもあるけど、そんなに多くはない。 そこで、今回はモデルやフレームワークに依存しない特徴量の重要度を計測する手法として Permutation Importance という手法を試してみる。 略称として PIMP と呼ばれたりすることもあるようだ。 この手法を知ったのは、以下の Kaggle のノートブックを目にしたのがきっかけだった。 Permutation Importance | Kaggle あんまりちゃんと読めてないけど、論文としては Altmann et al. (2

    Python: 特徴量の重要度を Permutation Importance で計測する - CUBE SUGAR CONTAINER
  • Apache Hive で圧縮形式のデータを扱う - CUBE SUGAR CONTAINER

    Apache Hive のテーブルを構成するデータは、デフォルトでは無圧縮になっている。 しかし、設定を変更することで圧縮形式のデータも扱うことができる。 そこで、今回は Apache Hive で圧縮形式のデータを扱ってみることにする。 データを圧縮することには、主に二つのメリットがある。 まず一つ目は HDFS 上のサイズが小さくなるのでディスク容量の節約になること。 そして二つ目こそ命だけどサイズが小さくなるので読み出しにかかるディスク I/O の負荷も下げることができる。 Hadoop においてディスク I/O は最もボトルネックになりやすいところなので、これは重要となる。 使った環境は次の通り。 $ cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core) $ uname -r 3.10.0-693.11.1.el

    Apache Hive で圧縮形式のデータを扱う - CUBE SUGAR CONTAINER
    showyou
    showyou 2018/10/10
  • Apache Hive の Partition 機能を使ってみる - CUBE SUGAR CONTAINER

    今回は Apache Hive の Partition 機能を使ってみる。 Partition 機能を用いない場合、クエリを発行するとテーブルを構成するファイル群にフルスキャンがかかる。 それに対し、Partition 機能を用いるとクエリによってはスキャンするファイルの範囲を制限できる。 結果としてパフォーマンスの向上が見込める場合がある。 使った環境は次の通り。 Apache Hive や Hadoop のインストール部分については省略する。 $ cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core) $ uname -r 3.10.0-693.5.2.el7.x86_64 $ hadoop version Hadoop 2.8.3 Subversion https://git-wip-us.apache.org/rep

    Apache Hive の Partition 機能を使ってみる - CUBE SUGAR CONTAINER
    showyou
    showyou 2018/10/10
  • Python: KMeans 法を実装してみる - CUBE SUGAR CONTAINER

    KMeans 法は、機械学習における教師なし学習のクラスタリングという問題を解くためのアルゴリズム。 教師なし学習というのは、事前に教師データというヒントが与えられないことを指している。 その上で、クラスタリングというのは未知のデータに対していくつかのまとまりを作る問題をいう。 今回取り扱う KMeans 法は、比較的単純なアルゴリズムにも関わらず広く使われているものらしい。 実際に書いてみても、基的な実装であればたしかにとてもシンプルだった。 ただし、データの初期化をするところで一点考慮すべき内容があることにも気づいたので、それについても書く。 KMeans 法の具体的なアルゴリズムについてはサンプルコードと共に後述する。 今回使った環境は次の通り。 $ sw_vers ProductName: Mac OS X ProductVersion: 10.12.3 BuildVersion

    Python: KMeans 法を実装してみる - CUBE SUGAR CONTAINER
    showyou
    showyou 2018/03/08
    あとで試す
  • Python: データセットの標準化について - CUBE SUGAR CONTAINER

    今回は機械学習とか統計で扱うデータセットの標準化について。 まずは、標準化されていない生のデータセットについて考えてみよう。 それらの多くは、次元によって数値の単位がバラバラだったり、あるいは大きさが極端に異なったりする。 これをそのまま扱ってしまうと、各次元を見比べたときにそれぞれの関係が分かりにくい。 また、機械学習においては特定の次元の影響が強く (または反対に弱く) 出てしまったりすることもあるらしい。 そこで、それぞれの次元のスケールを同じに揃えてやりたい。 これを標準化というようだ。 今回は「Zスコア」という標準化のやり方を扱う。 これは、一言で言ってしまえばデータセットの各要素から平均を引いて、標準偏差で割ったもの。 これをすると、データセットは平均が 0 で標準偏差・分散が 1 になる。 使った環境は次の通り。 $ python --version Python 3.5.1

    Python: データセットの標準化について - CUBE SUGAR CONTAINER
  • Python: Apache Parquet フォーマットを扱ってみる - CUBE SUGAR CONTAINER

    今回は、最近知った Apache Parquet フォーマットというものを Python で扱ってみる。 これは、データエンジニアリングなどの領域でデータを永続化するのに使うフォーマットになっている。 具体的には、データセットの配布や異なるコンポーネント間でのデータ交換がユースケースとして考えられる。 これまで、同様のユースケースには CSVPython の Pickle フォーマットが用いられていた。 ただ、CSV は行志向のフォーマットなので不要なカラムであっても必ず読まなければいけないという問題点がある。 また Pickle の場合は、それに加えて扱えるのが Python のコンポーネントに限られてしまう。 そこで登場するのが今回紹介する Apache Parquet フォーマットということらしい。 Apache Parquet フォーマットは Apache Hadoop エコ

    Python: Apache Parquet フォーマットを扱ってみる - CUBE SUGAR CONTAINER
    showyou
    showyou 2018/02/02
  • 1