Git Product home page Git Product logo

discrete_sieve's Introduction

#The Information Sieve

Recent work establishes results that allow the efficient construction of representations that are maximally informative about the data. A recent extension allows us to build maximally informative representations in an incremental way. The other advantage of this approach is that it keeps track of remainder information, so that we can enable lossy and lossless compression.

This is described here:
The Information Sieve
Greg Ver Steeg and Aram Galstyan, ICML 2016,
http://arxiv.org/abs/1507.02284

A much more practical version of the information sieve for continuous variables is introduced here:
Sifting Common Information from Many Variables
Greg Ver Steeg, Shuyang Gao, Kyle Reing, and Aram Galstyan
The code for this version is in this repository: https://github.com/gregversteeg/LinearSieve

Papers describing previous work:
Discovering Structure in High-Dimensional Data Through Correlation Explanation
Greg Ver Steeg and Aram Galstyan, NIPS 2014, http://arxiv.org/abs/1406.1222

Maximally Informative Hierarchical Representions of High-Dimensional Data
Greg Ver Steeg and Aram Galstyan, AISTATS 2015, http://arxiv.org/abs/1410.7404

###Dependencies

Sieve requires numpy and scipy. If you use OS X, I recommend installing the Scipy Superpack:
http://fonnesbeck.github.io/ScipySuperpack/

###Install

To install, download using the link on the right or clone the project by executing this command in your target directory:

git clone git://github.com/gregversteeg/discrete_sieve.git

Use git pull to get updates. The code is under heavy development. Please feel free to raise issues or request features using the github interface.

Basic Usage

Example

import corex as ce

X = np.array([[0,0,0,0,0], # A matrix with rows as samples and columns as variables.
              [0,0,0,1,1],
              [1,1,1,0,0],
              [1,1,1,1,1]], dtype=int)

s = sieve.Sieve(max_layers=2)  # Initialize. Can limit number of layers (default is automatic) and pass kwargs to CorEx
s.fit(X)

s.labels  # Each variable/column is associated with one Y_j
s.tcs  # TC(X; Y) for each latent factor
s.layers[0].corex  # Access the CorEx object 

More examples are in the paper and in the tests and paper_figures folder.

CorEx outputs

See https://github.com/gregversteeg/CorEx for more info about the CorEx module (the one included here is a simplified version.)

discrete_sieve's People

Contributors

gregversteeg avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.