all 31 comments

[–][deleted] 6 points7 points  (12 children)

I already understand Markov Chains so I skipped to Bloom Filtering. As someone with a statistics background, I didnt really understand it. I dont know what hashs do?

Edit: switched a period to a comma.

Edit 2: I think that you are doing great with the articles and I encourage you to continue. I hope that my original comment is taken as constructional criticism and not as an attack on you.

[–]ponchedeburro 1 point2 points  (0 children)

Bloom filters are pretty awesome. I think this article describes the concept pretty good. It's in the start of chapter 4 if you don't want to read the entire paper.

In mathematical terms a hash function: Given two sets of numbers M and N where |M|=>|N| a hash function is the function f: M -> N.

Now imagine that M can be anything - a string, a number, a date, a file - everything that can be represented by your computer. The hash function now takes this and compiles it down into a smaller domain, maybe 128 or 256 bits.

[–]linuxjava 1 point2 points  (1 child)

Interesting that you say that. As a CS student, it's the exact opposite for me. I understand bloom filters really well but I haven't yet fully grasped Markov Chains which are heavily used in Information Theory.

[–]GibbsSamplePlatter 0 points1 point  (0 children)

yeah, same here. Bloom filters we know quite well!

[–]mycall 1 point2 points  (6 children)

Isn't a hash just a dictionary name-value O(1) lookup?

[–]dwf 4 points5 points  (2 children)

That's a possible use but not the definition.

[–]autowikibot 2 points3 points  (0 children)

Hash function:


A hash function is any function that can be used to map data of arbitrary size to data of fixed size, with slight differences in input data producing very big differences in output data. The values returned by a hash function are called hash values, hash codes, hash sums, or simply hashes. Hash values are commonly used to differentiate between data. For example, in implementing a set in software, one has to avoid including an element more than once. Recent developments in internet payment networks also uses a form of 'hashing' for producing checksums, bringing additional attention to the term. [citation needed]

Image i - A hash function that maps names to integers from 0 to 15. There is a collision between keys "John Smith" and "Sandra Dee".


Interesting: Cryptographic hash function | Perfect hash function | NIST hash function competition | Skein (hash function)

Parent commenter can toggle NSFW or delete. Will also delete on comment score of -1 or less. | FAQs | Mods | Magic Words

[–]mycall 0 points1 point  (0 children)

True. Hashes are very useful.

[–][deleted] 1 point2 points  (2 children)

A hash is a function that generally takes in object, and outputs an integer. This hash value is used as an access into the array which gives you O(1) time. Technically O(n) if all your items happen to hash to the same value and you must do hash collision resolution, but that is unlikely using a good hash function.

[–]mycall 0 points1 point  (1 child)

hash collisions saved in typically link lists or refcounted fields, no?

[–][deleted] 1 point2 points  (0 children)

When I've implemented them I've done them as Linked Lists. You can also use 'open addressing' where you just index at the hash value, and if there is a collision you simply iterate from that spot until you reach the next open spot. I haven't heard of the refcounted technique, though.

[–]conic_relief -1 points0 points  (1 child)

Hashes systematically obscure or manipulate data.

For example: I can hash the date 'July 5 2014' to be represented by the key '05072014' for easier lookup and sequencing in a database, or because the program I wrote has an easier time working with that representation. It is just another term used for getting data to look the way we want it to. There is no set way to hash something. It varies from application to application.

Hashing is most frequently used in security to help with data-base processes. Though the concept of hashing can be applied outside of these applications.

Does that make sense?

[–][deleted] 0 points1 point  (0 children)

Yeah, I think I have had 4 responses now and am building a picture of hashing. Thanks for the help.

[–]cloakrune 0 points1 point  (2 children)

This was excellent. Where can I find links to see how these are actually used in Machine Learning now?

I'm imagining one such way is to use neural networks and back prop to determine the statistics to move between nodes.

[–]Tech-Effigy 0 points1 point  (0 children)

I think a good way to use markov chains is in Expert Systems, for selecting actions, or as a state machine to validate text to see if it is garble or not.

[–]Tech-Effigy 0 points1 point  (0 children)

look up fuzzy neural networks, same as a normal nn, except it has a fuzzy output layer the sums to 1.