R. Bharat Rao

54 papers A* 18A 6C 4Misc 5Journal 8Unranked 11
YearRankTypeTitle / Venue / Authors
2011 J jnl
J. Mach. Learn. Res.
Shipeng Yu, Balaji Krishnapuram, Rómer Rosales, R. Bharat Rao
2010 J jnl
Data Min. Knowl. Discov.
Rómer Rosales, R. Bharat Rao
2009 A conf
AISTATS
Shipeng Yu, Balaji Krishnapuram, Rómer Rosales, R. Bharat Rao
2009 J jnl
J. Mach. Learn. Res.
Volkan Vural, Glenn Fung, Balaji Krishnapuram, Jennifer G. Dy, R. Bharat Rao
2008 conf
ECML/PKDD (1)
Jinbo Bi, Tao Xiong, Shipeng Yu, Murat Dundar, R. Bharat Rao
2008 A* conf
ICML
Vikas C. Raykar, Balaji Krishnapuram, Jinbo Bi, Murat Dundar, R. Bharat Rao
2008 J jnl
SIGKDD Explor.
R. Bharat Rao, Oksana Yakhnenko, Balaji Krishnapuram
2008 A* conf
AAAI
Glenn Fung, Sriram Krishnan, R. Bharat Rao, Hui Chen
2008 J jnl
IEEE Trans. Biomed. Eng.
Murat Dundar, Glenn Fung, Balaji Krishnapuram, R. Bharat Rao
2008 conf
Digital Mammography / IWDM
Balaji Krishnapuram, Jonathan Stoeckel, Vikas C. Raykar, R. Bharat Rao, Philippe Bamberger, Eli Ratner, Nicolas Merlet, Inna Stainvas, Menahem Abramov, Alexandra Manevitch
2008 A conf
SDM
R. Bharat Rao, Glenn Fung
2008 A* conf
KDD
Shipeng Yu, Glenn Fung, Rómer Rosales, Sriram Krishnan, R. Bharat Rao, Cary Dehing-Oberije, Philippe Lambin
2008 ch.
Rule Extraction from Support Vector Machines
Glenn Fung, Sathyakama Sandilya, R. Bharat Rao
2007 A* conf
IJCAI
Radu Stefan Niculescu, Tom M. Mitchell, R. Bharat Rao
2007 A* conf
IJCAI
Maleeha Qazi, Glenn Fung, Sriram Krishnan, Rómer Rosales, Harald Steck, R. Bharat Rao, Don Poldermans, Dhanalakshmi Chandrasekaran
2007 C conf
ICMLA
Jian-Wu Xu, Shipeng Yu, Jinbo Bi, Lucian Vlad Lita, Radu Stefan Niculescu, R. Bharat Rao
2007 conf
NIPS
Shipeng Yu, Balaji Krishnapuram, Rómer Rosales, Harald Steck, R. Bharat Rao
2007 A* conf
IJCAI
Glenn Fung, Rómer Rosales, R. Bharat Rao
2007 A* conf
IJCAI
Murat Dundar, Balaji Krishnapuram, Jinbo Bi, R. Bharat Rao
2007 A* conf
KDD
R. Bharat Rao, Jinbo Bi, Glenn Fung, Marcos Salganicoff, Nancy Obuchowski, David P. Naidich
2007 Misc conf
AMIA
Radu Stefan Niculescu, Tom M. Mitchell, R. Bharat Rao
2007 A conf
SDM
Tao Xiong, Jinbo Bi, R. Bharat Rao, Vladimir Cherkassky
2007 C conf
ICMLA
Glenn Fung, Renaud Seigneuric, Sriram Krishnan, R. Bharat Rao, Brad G. Wouters, Philippe Lambin
2007 C conf
ICMLA
Rómer Rosales, Praveen Krishnamurthy, R. Bharat Rao
2007 conf
Computer-Aided Diagnosis
Murat Dundar, Balaji Krishnapuram, Matthias Wolf, Sarang Lakare, Luca Bogoni, Jinbo Bi, R. Bharat Rao
2006 conf
Digital Mammography / IWDM
Glenn Fung, Balaji Krishnapuram, Nicolas Merlet, Eli Ratner, Philippe Bamberger, Jonathan Stoeckel, R. Bharat Rao
2006 conf
ECML
Volkan Vural, Glenn Fung, Balaji Krishnapuram, Jennifer G. Dy, R. Bharat Rao
2006 J jnl
J. Mach. Learn. Res.
Radu Stefan Niculescu, Tom M. Mitchell, R. Bharat Rao
2006 A* conf
KDD
Jinbo Bi, Senthil Periaswamy, Kazunori Okada, Toshiro Kubota, Glenn Fung, Marcos Salganicoff, R. Bharat Rao
2006 J jnl
SIGKDD Explor.
R. Bharat Rao, Sriram Krishnan, Radu Stefan Niculescu
2006 conf
NIPS
Glenn Fung, Murat Dundar, Balaji Krishnapuram, R. Bharat Rao
2006 J jnl
SIGKDD Explor.
Terran Lane, R. Bharat Rao, Jinbo Bi, Jianming Liang, Marcos Salganicoff
2005 A conf
SDM
Radu Stefan Niculescu, Tom M. Mitchell, R. Bharat Rao
2005 A* conf
KDD
Glenn Fung, Sathyakama Sandilya, R. Bharat Rao
2005 A* conf
ICDM
Jinbo Bi, Glenn Fung, Murat Dundar, R. Bharat Rao
2005 A conf
SDM
Murat Dundar, Glenn Fung, Jinbo Bi, Sathyakama Sandilya, R. Bharat Rao
2005 C conf
ICMLA
Glenn Fung, Maleeha Qazi, Sriram Krishnan, Jinbo Bi, R. Bharat Rao, A. Katz
2004 A* conf
ICML
Glenn Fung, Murat Dundar, Jinbo Bi, R. Bharat Rao
2004 conf
CARS
Murat Dundar, Glenn Fung, Luca Bogoni, Michael Macari, A. Megibow, R. Bharat Rao
2004 conf
CARS
Pascal Cathier, Senthil Periaswamy, Anna K. Jerebko, Murat Dundar, Jianming Liang, Glenn Fung, Jonathan Stoeckel, T. Venkata, R. Amara, Arun Krishnan, R. Bharat Rao, Alok Gupta, E. Vega, Shaked Laks, A. Megibow, Michael Macari, Luca Bogoni
2004 A conf
SDM
Sathyakama Sandilya, R. Bharat Rao
2004 conf
MICCAI (2)
Bogdan Georgescu, Xiang Sean Zhou, Dorin Comaniciu, R. Bharat Rao
2003 A* conf
KDD
R. Bharat Rao, Sathyakama Sandilya, Radu Stefan Niculescu, Colin Germond, Harsha Rao
2003 Misc conf
AMIA
Rich Caruana, Radu Stefan Niculescu, R. Bharat Rao, Cynthia Simms
2003 Misc conf
AMIA
William Landi, R. Bharat Rao
2002 Misc conf
AMIA
Rich Caruana, Radu Stefan Niculescu, R. Bharat Rao, Cynthia Simms
2002 Misc conf
AMIA
R. Bharat Rao, Sathyakama Sandilya, Radu Stefan Niculescu, Colin Germond, Arun Goel
1998 A* conf
KDD
R. Bharat Rao, Scott Rickard, Frans Coetzee
1995 A* conf
ICML
R. Bharat Rao, Diana F. Gordon, William M. Spears
1993 A* conf
AAAI
R. Bharat Rao, Stephen C. Y. Lu
1993 A* conf
ICML
R. Bharat Rao, Thomas B. Voigt, Thomas W. Fermanian
1993
R. Bharat Rao
1992 A* conf
AAAI
R. Bharat Rao, Stephen C. Y. Lu
1991 conf
ML
R. Bharat Rao, Stephen C. Y. Lu, Robert E. Stepp
redb/extractors/decompiler/bninja/similarity/minhasher.py
← Index redb/extractors/decompiler/bninja/similarity/minhasher.py python
import logging
import random
from enum import Enum

from ..analysis.medium_level_normalization import MediumLevelNormalization

try:
    from .minhashcustom import MinHashCustom
    from ..analysis.low_level_normalization import LowLevelNormalization
except ImportError:
    # Fallback to absolute imports (for multiprocessing spawned processes)
    from redb.extractors.decompiler.bninja.similarity.minhashcustom import MinHashCustom
    from redb.extractors.decompiler.bninja.analysis.low_level_normalization import LowLevelNormalization

## Values for this configuration were extracted from https://github.com/danielplohmann/mcrit/blob/main/mcrit/config/MinHashConfig.py#L10
# Length in number of Shingles of which a minhash consists
# this value represents the length of sha256sum hash truncated
MINHASH_SIGNATURE_LENGTH: int = 64
# Number of bits per signature element (1-32 bits)
MINHASH_SIGNATURE_BITS: int = 8


class TokenKind(Enum):
    LLIL = "llil"
    TYPED_LLIL = "typed_llil"
    MLIL = "mlil"
    TYPED_MLIL = "typed_mlil"


class MinHasher:
    # stick to the default method
    MINHASH_STRATEGY_HASH_ALL = 1

    def __init__(self, seed, il_function, kind: TokenKind = TokenKind.LLIL):
        self._minhash_seeds = []
        self.il_func = il_function
        self.kind = kind
        self._minhash_permutation = []
        self._signature_segments = []
        self._initMinhashing(seed)

    def _initMinhashing(self, MINHASH_SEED=None):
        random.seed(MINHASH_SEED)
        # init sequence of seeds
        self._minhash_seeds = [
            random.randint(0, MinHashCustom.getHashMax()) for _ in range(MINHASH_SIGNATURE_LENGTH)
        ]

    def make_ngrams(self, tokens, n=3):
        """Take the ngrams of the IL we try to pass into the functions"""
        return [tuple(tokens[i:i+n]) for i in range(len(tokens) - n + 1)]

    def _extract_tokens(self):
        """Extract the IL tokens from the IL function, picking the right
        normalizer (LLIL/MLIL) and the right normalization mode
        (skeleton/typed) based on self.kind."""
        if self.kind in (TokenKind.LLIL, TokenKind.TYPED_LLIL):
            normalizer = LowLevelNormalization()
        elif self.kind in (TokenKind.MLIL, TokenKind.TYPED_MLIL):
            normalizer = MediumLevelNormalization()
        else:
            raise ValueError(f"Unsupported token kind: {self.kind}")

        # typed variants include operand type info, skeleton variants don't
        if self.kind in (TokenKind.TYPED_LLIL, TokenKind.TYPED_MLIL):
            normalize = normalizer.normalize_instr_with_operands
        else:
            normalize = normalizer.normalize_instruction_all_levels

        instructions = []
        for basic_block in self.il_func.basic_blocks:
            for il in basic_block:
                instructions.append(normalize(il))

        return instructions

    def calculateMinHash(self):
        """Calculate hash function every time, then take minimum shingle per shingler"""
        minhash_result = MinHashCustom(minhash_bits=MINHASH_SIGNATURE_BITS)
        minhash_signature = []

        tokens = self._extract_tokens()
        shingles = self.make_ngrams(tokens, n=3)

        # Functions with fewer than 3 IL instructions can't produce n-grams
        # Return empty minhash for such small functions (thunks, stubs, etc.)
        # Triggered by 39d8ad95b0323c37bd3134ab93ac4af44c66a1a8443a41c1ac02cec19bb2816a
        if not shingles:
            return []

        # Generate the MinHash
        for seed in self._minhash_seeds:
            hashed_shingles = [
                self.shingle_hash(shingle, seed) for shingle in shingles
            ]
            min_value = min(hashed_shingles)

            if MINHASH_SIGNATURE_BITS < 32:
                min_value %= (2 ** MINHASH_SIGNATURE_BITS)

            minhash_signature.append(min_value)

        minhash_result.setMinHash(minhash_signature)
        return minhash_result.getMinHashInt()

    def shingle_hash(self, shingle, hash_seed=0):
        """Produce a single 32bit UINT hash for a given shingle"""
        return MinHashCustom.hashData(shingle, hash_seed)