This is really a Yahoo issue. You'll need to explore your SPAM filter settings on your Yahoo account to determine why this is happening. On the ones that end up in Bulk mail, are they being sent to a list of people, where you are one of those people? Sometimes I've seen Yahoo flag an e-mail as spam simply because who ever sent the e-mail sent it to multiple people.
This is really a Yahoo issue. You'll need to explore your SPAM filter settings on your Yahoo account to determine why this is happening. On the ones that end up in Bulk mail, are they being sent to a list of people, where you are one of those people? Sometimes I've seen Yahoo flag an e-mail as spam simply because who ever sent the e-mail sent it to multiple people.
The following all applies to POP accounts. It assume it can apply to IMAP, too, but I have no direct experience with Yahoo IMAP accounts.
So: In order to ensure that mail from a given address NEVER gets treated as spam, click the "add to address book" link next to the "From:" line of the message. (You need to do this from Yahoo's webmail interface, not from inside Mail.app or iPhone mail.)
There's no guaranteed way to make sure that mail from a given address will ALWAYS get treated as spam. You can label it as spam (again, in the webmail interface: click the "spam" button), but in my experience that doesn't necessarily mean anything.
You can also choose whether or not to download mail that is in your bulk folder. As above, this is a setting on the Yahoo side, NOT on the client side, so you have to use your web browser. Once in your mailbox, click on the "Mail options" link, and one of the options should control whether you download spam or not.
If you turn on the option to not download spam, the spam will reside in your bulk folder for 30 days, but you will never see it in a client program such as Mail.app. It's therefore a good idea to check the bulk folder through a web browser every now and then, to make sure there isn't any mail you wanted in there.